@raydium-io/raydium-sdk-v2 0.1.0-alpha → 0.1.2-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 +3 -3
- package/lib/raydium/account/account.js +1 -1
- package/lib/raydium/account/account.js.map +1 -1
- package/lib/raydium/account/account.mjs +1 -1
- package/lib/raydium/account/account.mjs.map +1 -1
- 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 +3 -3
- package/lib/raydium/clmm/index.d.ts +3 -3
- package/lib/raydium/clmm/instrument.d.ts +2 -2
- package/lib/raydium/clmm/layout.d.ts +6 -6
- 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 +3 -3
- package/lib/raydium/cpmm/index.d.ts +1 -1
- package/lib/raydium/cpmm/layout.d.ts +1 -1
- 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 +3 -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 +3 -3
- package/lib/raydium/ido/index.d.ts +3 -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/layout.d.ts +6 -6
- package/lib/raydium/liquidity/liquidity.d.ts +3 -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 +1 -1
- package/lib/raydium/liquidity/utils.d.ts +1 -1
- package/lib/raydium/marketV2/createMarket.d.ts +3 -3
- package/lib/raydium/marketV2/index.d.ts +3 -3
- package/lib/raydium/moduleBase.d.ts +3 -3
- package/lib/raydium/raydium.d.ts +3 -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/token/constant.d.ts +1 -1
- package/lib/raydium/token/index.d.ts +1 -1
- package/lib/raydium/token/token.d.ts +3 -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 +3 -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 +3 -3
- package/lib/raydium/utils1216/utils1216.d.ts +3 -3
- package/lib/{raydium-50d99e08.d.ts → raydium-e681ad95.d.ts} +3 -3
- package/lib/{type-80826393.d.ts → type-389634c9.d.ts} +1 -1
- package/lib/{type-8e0c46e7.d.ts → type-9fe71e3c.d.ts} +8 -8
- package/package.json +1 -1
- package/src/raydium/account/account.ts +1 -1
- package/src/raydium/liquidity/liquidity.ts +44 -47
package/lib/raydium/raydium.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var Oa=Object.defineProperty,Na=Object.defineProperties;var Ma=Object.getOwnPropertyDescriptors;var ir=Object.getOwnPropertySymbols;var fo=Object.prototype.hasOwnProperty,yo=Object.prototype.propertyIsEnumerable;var po=(i,e,t)=>e in i?Oa(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,R=(i,e)=>{for(var t in e||(e={}))fo.call(e,t)&&po(i,t,e[t]);if(ir)for(var t of ir(e))yo.call(e,t)&&po(i,t,e[t]);return i},W=(i,e)=>Na(i,Ma(e));var Ae=(i,e)=>{var t={};for(var n in i)fo.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&ir)for(var n of ir(i))e.indexOf(n)<0&&yo.call(i,n)&&(t[n]=i[n]);return t};import{merge as ym}from"lodash";import dc from"axios";import{get as bo,set as _a}from"lodash";import wo from"dayjs";import Ea from"dayjs/plugin/utc";wo.extend(Ea);var $r=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 wo().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}},go={},Va={};function oe(i){let e=bo(go,i);if(!e){let t=bo(Va,i);e=new $r({name:i,logLevel:t}),_a(go,i,e)}return e}import{PublicKey as Yu}from"@solana/web3.js";import Hu from"bn.js";import Gu from"big.js";import gr from"bn.js";import He from"bn.js";var tn=9e15,Nt=1e9,Jr="0123456789abcdef",sr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",ar="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",ei={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-tn,maxE:tn,crypto:!1},ko,Tt,$=!0,cr="[DecimalError] ",Ot=cr+"Invalid argument: ",To=cr+"Precision limit exceeded",Io=cr+"crypto unavailable",xo="[object Decimal]",_e=Math.floor,Be=Math.pow,Fa=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,va=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Da=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Bo=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ot=1e7,H=7,Wa=9007199254740991,qa=sr.length-1,ti=ar.length-1,C={toStringTag:xo};C.absoluteValue=C.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),X(i)};C.ceil=function(){return X(new this.constructor(this),this.e+1,2)};C.clampedTo=C.clamp=function(i,e){var t,n=this,r=n.constructor;if(i=new r(i),e=new r(e),!i.s||!e.s)return new r(NaN);if(i.gt(e))throw Error(Ot+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};C.comparedTo=C.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,u=o.s,c=i.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==i.e)return o.e>i.e^u<0?1:-1;for(n=s.length,r=a.length,e=0,t=n<r?n:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===r?0:n>r^u<0?1:-1};C.cosine=C.cos=function(){var i,e,t=this,n=t.constructor;return t.d?t.d[0]?(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+H,n.rounding=1,t=Ua(n,Lo(n,t)),n.precision=i,n.rounding=e,X(Tt==2||Tt==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};C.cubeRoot=C.cbrt=function(){var i,e,t,n,r,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for($=!1,o=l.s*Be(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Re(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Be(t,1/3),i=_e((i+1)/3)-(i%3==(i<0?-1:2)),o==1/0?t="5e"+i:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+i),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(i=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=pe(c.plus(l).times(a),c.plus(u),s+2,1),Re(a.d).slice(0,s)===(t=Re(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(X(a,i+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(X(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return $=!0,X(n,i,m.rounding,e)};C.decimalPlaces=C.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-_e(this.e/H))*H,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};C.dividedBy=C.div=function(i){return pe(this,new this.constructor(i))};C.dividedToIntegerBy=C.divToInt=function(i){var e=this,t=e.constructor;return X(pe(e,new t(i),0,1,1),t.precision,t.rounding)};C.equals=C.eq=function(i){return this.cmp(i)===0};C.floor=function(){return X(new this.constructor(this),this.e+1,3)};C.greaterThan=C.gt=function(i){return this.cmp(i)>0};C.greaterThanOrEqualTo=C.gte=function(i){var e=this.cmp(i);return e==1||e===0};C.hyperbolicCosine=C.cosh=function(){var i,e,t,n,r,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(i=Math.ceil(r/3),e=(1/mr(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=nn(s,1,o.times(e),new s(1),!0);for(var u,c=i,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return X(o,s.precision=t,s.rounding=n,!0)};C.hyperbolicSine=C.sinh=function(){var i,e,t,n,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,n=r.d.length,n<3)r=nn(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/mr(5,i)),r=nn(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,X(r,e,t,!0)};C.hyperbolicTangent=C.tanh=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+7,n.rounding=1,pe(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};C.inverseCosine=C.acos=function(){var i,e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?it(t,r,o):new t(0):new t(NaN):e.isZero()?it(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=it(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};C.inverseHyperbolicCosine=C.acosh=function(){var i,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(i=n.precision,e=n.rounding,n.precision=i+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,$=!1,t=t.times(t).minus(1).sqrt().plus(t),$=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};C.inverseHyperbolicSine=C.asinh=function(){var i,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,$=!1,t=t.times(t).plus(1).sqrt().plus(t),$=!0,n.precision=i,n.rounding=e,t.ln())};C.inverseHyperbolicTangent=C.atanh=function(){var i,e,t,n,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(i=o.precision,e=o.rounding,n=r.sd(),Math.max(n,i)<2*-r.e-1?X(new o(r),i,e,!0):(o.precision=t=n-r.e,r=pe(r.plus(1),new o(1).minus(r),t+i,1),o.precision=i+4,o.rounding=1,r=r.ln(),o.precision=i,o.rounding=e,r.times(.5))):new o(NaN)};C.inverseSine=C.asin=function(){var i,e,t,n,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(i=it(o,t+4,n).times(.5),i.s=r.s,i):new o(NaN):(o.precision=t+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,r.times(2)))};C.inverseTangent=C.atan=function(){var i,e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=ti)return s=it(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=ti)return s=it(l,m+4,d).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/H+2|0),i=t;i;--i)c=c.div(c.times(c).plus(1).sqrt().plus(1));for($=!1,e=Math.ceil(a/H),n=1,u=c.times(c),s=new l(c),r=c;i!==-1;)if(r=r.times(u),o=s.minus(r.div(n+=2)),r=r.times(u),s=o.plus(r.div(n+=2)),s.d[e]!==void 0)for(i=e;s.d[i]===o.d[i]&&i--;);return t&&(s=s.times(2<<t-1)),$=!0,X(s,l.precision=m,l.rounding=d,!0)};C.isFinite=function(){return!!this.d};C.isInteger=C.isInt=function(){return!!this.d&&_e(this.e/H)>this.d.length-2};C.isNaN=function(){return!this.s};C.isNegative=C.isNeg=function(){return this.s<0};C.isPositive=C.isPos=function(){return this.s>0};C.isZero=function(){return!!this.d&&this.d[0]===0};C.lessThan=C.lt=function(i){return this.cmp(i)<0};C.lessThanOrEqualTo=C.lte=function(i){return this.cmp(i)<1};C.logarithm=C.log=function(i){var e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(i==null)i=new l(10),e=!0;else{if(i=new l(i),t=i.d,i.s<0||!t||!t[0]||i.eq(1))return new l(NaN);e=i.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(r=t[0];r%10===0;)r/=10;o=r!==1}if($=!1,a=m+p,s=Lt(c,a),n=e?ur(l,a+10):Lt(i,a),u=pe(s,n,a,1),gn(u.d,r=m,d))do if(a+=10,s=Lt(c,a),n=e?ur(l,a+10):Lt(i,a),u=pe(s,n,a,1),!o){+Re(u.d).slice(r+1,r+15)+1==1e14&&(u=X(u,m+1,0));break}while(gn(u.d,r+=10,d));return $=!0,X(u,m,d)};C.minus=C.sub=function(i){var e,t,n,r,o,s,a,u,c,l,m,d,p=this,y=p.constructor;if(i=new y(i),!p.d||!i.d)return!p.s||!i.s?i=new y(NaN):p.d?i.s=-i.s:i=new y(i.d||p.s!==i.s?p:NaN),i;if(p.s!=i.s)return i.s=-i.s,p.plus(i);if(c=p.d,d=i.d,a=y.precision,u=y.rounding,!c[0]||!d[0]){if(d[0])i.s=-i.s;else if(c[0])i=new y(p);else return new y(u===3?-0:0);return $?X(i,a,u):i}if(t=_e(i.e/H),l=_e(p.e/H),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=d.length):(e=d,t=l,s=c.length),n=Math.max(Math.ceil(a/H),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(e=c,c=d,d=e,i.s=-i.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(r=n;r&&c[--r]===0;)c[r]=ot-1;--c[r],c[n]+=ot}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(i.d=c,i.e=lr(c,t),$?X(i,a,u):i):new y(u===3?-0:0)};C.modulo=C.mod=function(i){var e,t=this,n=t.constructor;return i=new n(i),!t.d||!i.s||i.d&&!i.d[0]?new n(NaN):!i.d||t.d&&!t.d[0]?X(new n(t),n.precision,n.rounding):($=!1,n.modulo==9?(e=pe(t,i.abs(),0,3,1),e.s*=i.s):e=pe(t,i,0,n.modulo,1),e=e.times(i),$=!0,t.minus(e))};C.naturalExponential=C.exp=function(){return ni(this)};C.naturalLogarithm=C.ln=function(){return Lt(this)};C.negated=C.neg=function(){var i=new this.constructor(this);return i.s=-i.s,X(i)};C.plus=C.add=function(i){var e,t,n,r,o,s,a,u,c,l,m=this,d=m.constructor;if(i=new d(i),!m.d||!i.d)return!m.s||!i.s?i=new d(NaN):m.d||(i=new d(i.d||m.s===i.s?m:NaN)),i;if(m.s!=i.s)return i.s=-i.s,m.minus(i);if(c=m.d,l=i.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(i=new d(m)),$?X(i,a,u):i;if(o=_e(m.e/H),n=_e(i.e/H),c=c.slice(),r=o-n,r){for(r<0?(t=c,r=-r,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/H),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=c.length,r=l.length,s-r<0&&(r=s,t=l,l=c,c=t),e=0;r;)e=(c[--r]=c[r]+l[r]+e)/ot|0,c[r]%=ot;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return i.d=c,i.e=lr(c,n),$?X(i,a,u):i};C.precision=C.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(Ot+i);return t.d?(e=So(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};C.round=function(){var i=this,e=i.constructor;return X(new e(i),i.e+1,e.rounding)};C.sine=C.sin=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+H,n.rounding=1,t=Xa(n,Lo(n,t)),n.precision=i,n.rounding=e,X(Tt>2?t.neg():t,i,e,!0)):new n(NaN)};C.squareRoot=C.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for($=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Re(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=_e((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(pe(s,o,t+2,1)).times(.5),Re(o.d).slice(0,t)===(e=Re(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(X(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(X(n,u+1,1),i=!n.times(n).eq(s));break}return $=!0,X(n,u,l.rounding,i)};C.tangent=C.tan=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+10,n.rounding=1,t=t.sin(),t.s=1,t=pe(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,X(Tt==2||Tt==4?t.neg():t,i,e,!0)):new n(NaN)};C.times=C.mul=function(i){var e,t,n,r,o,s,a,u,c,l=this,m=l.constructor,d=l.d,p=(i=new m(i)).d;if(i.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!i.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?i.s/0:i.s*0);for(t=_e(l.e/H)+_e(i.e/H),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,r=u+n;r>n;)a=o[r]+p[n]*d[r-n-1]+e,o[r--]=a%ot|0,e=a/ot|0;o[r]=(o[r]+e)%ot|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=lr(o,t),$?X(i,m.precision,m.rounding):i};C.toBinary=function(i,e){return ii(this,2,i,e)};C.toDecimalPlaces=C.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(Ye(i,0,Nt),e===void 0?e=n.rounding:Ye(e,0,8),X(t,i+t.e+1,e))};C.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=ft(n,!0):(Ye(i,0,Nt),e===void 0?e=r.rounding:Ye(e,0,8),n=X(new r(n),i+1,e),t=ft(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};C.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=ft(r):(Ye(i,0,Nt),e===void 0?e=o.rounding:Ye(e,0,8),n=X(new o(r),i+r.e+1,e),t=ft(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};C.toFraction=function(i){var e,t,n,r,o,s,a,u,c,l,m,d,p=this,y=p.d,f=p.constructor;if(!y)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=So(y)-p.e-1,s=o%H,e.d[0]=Be(10,s<0?H+s:s),i==null)i=o>0?e:c;else{if(a=new f(i),!a.isInt()||a.lt(c))throw Error(Ot+a);i=a.gt(e)?o>0?e:c:a}for($=!1,a=new f(Re(y)),l=f.precision,f.precision=o=y.length*H*2;m=pe(a,e,0,1,1),r=t.plus(m.times(n)),r.cmp(i)!=1;)t=n,n=r,r=c,c=u.plus(m.times(r)),u=r,r=e,e=a.minus(m.times(r)),a=r;return r=pe(i.minus(t),n,0,1,1),u=u.plus(r.times(c)),t=t.plus(r.times(n)),u.s=c.s=p.s,d=pe(c,n,o,1).minus(p).abs().cmp(pe(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,$=!0,d};C.toHexadecimal=C.toHex=function(i,e){return ii(this,16,i,e)};C.toNearest=function(i,e){var t=this,n=t.constructor;if(t=new n(t),i==null){if(!t.d)return t;i=new n(1),e=n.rounding}else{if(i=new n(i),e===void 0?e=n.rounding:Ye(e,0,8),!t.d)return i.s?t:i;if(!i.d)return i.s&&(i.s=t.s),i}return i.d[0]?($=!1,t=pe(t,i,0,e,1).times(i),$=!0,X(t)):(i.s=t.s,t=i),t};C.toNumber=function(){return+this};C.toOctal=function(i,e){return ii(this,8,i,e)};C.toPower=C.pow=function(i){var e,t,n,r,o,s,a=this,u=a.constructor,c=+(i=new u(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new u(Be(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,i.eq(1))return X(a,n,o);if(e=_e(i.e/H),e>=i.d.length-1&&(t=c<0?-c:c)<=Wa)return r=Ko(u,a,t,n),i.s<0?new u(1).div(r):X(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new u(NaN);if((i.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Be(+a,c),e=t==0||!isFinite(t)?_e(c*(Math.log("0."+Re(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):($=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),r=ni(i.times(Lt(a,n+t)),n),r.d&&(r=X(r,n+5,1),gn(r.d,n,o)&&(e=n+10,r=X(ni(i.times(Lt(a,e+t)),e),e+5,1),+Re(r.d).slice(n+1,n+15)+1==1e14&&(r=X(r,n+1,0)))),r.s=s,$=!0,u.rounding=o,X(r,n,o))};C.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=ft(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(Ye(i,1,Nt),e===void 0?e=r.rounding:Ye(e,0,8),n=X(new r(n),i,e),t=ft(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};C.toSignificantDigits=C.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(Ye(i,1,Nt),e===void 0?e=n.rounding:Ye(e,0,8)),X(new n(t),i,e)};C.toString=function(){var i=this,e=i.constructor,t=ft(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};C.truncated=C.trunc=function(){return X(new this.constructor(this),this.e+1,1)};C.valueOf=C.toJSON=function(){var i=this,e=i.constructor,t=ft(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function Re(i){var e,t,n,r=i.length-1,o="",s=i[0];if(r>0){for(o+=s,e=1;e<r;e++)n=i[e]+"",t=H-n.length,t&&(o+=Rt(t)),o+=n;s=i[e],n=s+"",t=H-n.length,t&&(o+=Rt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ye(i,e,t){if(i!==~~i||i<e||i>t)throw Error(Ot+i)}function gn(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=H,r=0):(r=Math.ceil((e+1)/H),e%=H),o=Be(10,H-e),a=i[r]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(i[r+1]/o/100|0)==Be(10,e-2)-1||(a==o/2||a==0)&&(i[r+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(i[r+1]/o/1e3|0)==Be(10,e-3)-1,s}function or(i,e,t){for(var n,r=[0],o,s=0,a=i.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=Jr.indexOf(i.charAt(s++)),n=0;n<r.length;n++)r[n]>t-1&&(r[n+1]===void 0&&(r[n+1]=0),r[n+1]+=r[n]/t|0,r[n]%=t)}return r.reverse()}function Ua(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/mr(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=nn(i,1,e.times(r),new i(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return i.precision-=t,e}var pe=function(){function i(n,r,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*r+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=r[a]){u=n[a]>r[a]?1:-1;break}return u}function t(n,r,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<r[o]?1:0,n[o]=a*s+n[o]-r[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,o,s,a,u){var c,l,m,d,p,y,f,b,g,h,A,k,P,x,B,I,S,N,V,Q,v=n.constructor,j=n.s==r.s?1:-1,ee=n.d,re=r.d;if(!ee||!ee[0]||!re||!re[0])return new v(!n.s||!r.s||(ee?re&&ee[0]==re[0]:!re)?NaN:ee&&ee[0]==0||!re?j*0:j/0);for(u?(p=1,l=n.e-r.e):(u=ot,p=H,l=_e(n.e/p)-_e(r.e/p)),V=re.length,S=ee.length,g=new v(j),h=g.d=[],m=0;re[m]==(ee[m]||0);m++);if(re[m]>(ee[m]||0)&&l--,o==null?(x=o=v.precision,s=v.rounding):a?x=o+(n.e-r.e)+1:x=o,x<0)h.push(1),y=!0;else{if(x=x/p+2|0,m=0,V==1){for(d=0,re=re[0],x++;(m<S||d)&&x--;m++)B=d*u+(ee[m]||0),h[m]=B/re|0,d=B%re|0;y=d||m<S}else{for(d=u/(re[0]+1)|0,d>1&&(re=i(re,d,u),ee=i(ee,d,u),V=re.length,S=ee.length),I=V,A=ee.slice(0,V),k=A.length;k<V;)A[k++]=0;Q=re.slice(),Q.unshift(0),N=re[0],re[1]>=u/2&&++N;do d=0,c=e(re,A,V,k),c<0?(P=A[0],V!=k&&(P=P*u+(A[1]||0)),d=P/N|0,d>1?(d>=u&&(d=u-1),f=i(re,d,u),b=f.length,k=A.length,c=e(f,A,b,k),c==1&&(d--,t(f,V<b?Q:re,b,u))):(d==0&&(c=d=1),f=re.slice()),b=f.length,b<k&&f.unshift(0),t(A,f,k,u),c==-1&&(k=A.length,c=e(re,A,V,k),c<1&&(d++,t(A,V<k?Q:re,k,u))),k=A.length):c===0&&(d++,A=[0]),h[m++]=d,c&&A[0]?A[k++]=ee[I]||0:(A=[ee[I]],k=1);while((I++<S||A[0]!==void 0)&&x--);y=A[0]!==void 0}h[0]||h.shift()}if(p==1)g.e=l,ko=y;else{for(m=1,d=h[0];d>=10;d/=10)m++;g.e=m+l*p-1,X(g,a?o+g.e+1:o,s,y)}return g}}();function X(i,e,t,n){var r,o,s,a,u,c,l,m,d,p=i.constructor;e:if(e!=null){if(m=i.d,!m)return i;for(r=1,a=m[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=H,s=e,l=m[d=0],u=l/Be(10,r-s-1)%10|0;else if(d=Math.ceil((o+1)/H),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,r=1,o%=H,s=o-H+1}else break e;else{for(l=a=m[d],r=1;a>=10;a/=10)r++;o%=H,s=o-H+r,u=s<0?0:l/Be(10,r-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%Be(10,r-s-1)),c=t<4?(u||n)&&(t==0||t==(i.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/Be(10,r-s):0:m[d-1])%10&1||t==(i.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=i.e+1,m[0]=Be(10,(H-e%H)%H),i.e=-e||0):m[0]=i.e=0,i;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=Be(10,H-o),m[d]=s>0?(l/Be(10,r-s)%Be(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,m[0]==ot&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=ot)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return $&&(i.e>p.maxE?(i.d=null,i.e=NaN):i.e<p.minE&&(i.e=0,i.d=[0])),i}function ft(i,e,t){if(!i.isFinite())return Ro(i);var n,r=i.e,o=Re(i.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Rt(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+Rt(-r-1)+o,t&&(n=t-s)>0&&(o+=Rt(n))):r>=s?(o+=Rt(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+Rt(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=Rt(n))),o}function lr(i,e){var t=i[0];for(e*=H;t>=10;t/=10)e++;return e}function ur(i,e,t){if(e>qa)throw $=!0,t&&(i.precision=t),Error(To);return X(new i(sr),e,1,!0)}function it(i,e,t){if(e>ti)throw Error(To);return X(new i(ar),e,t,!0)}function So(i){var e=i.length-1,t=e*H+1;if(e=i[e],e){for(;e%10==0;e/=10)t--;for(e=i[0];e>=10;e/=10)t++}return t}function Rt(i){for(var e="";i--;)e+="0";return e}function Ko(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/H+4);for($=!1;;){if(t%2&&(o=o.times(e),ho(o.d,s)&&(r=!0)),t=_e(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),ho(e.d,s)}return $=!0,o}function Ao(i){return i.d[i.d.length-1]&1}function Co(i,e,t){for(var n,r=new i(e[0]),o=0;++o<e.length;)if(n=new i(e[o]),n.s)r[t](n)&&(r=n);else{r=n;break}return r}function ni(i,e){var t,n,r,o,s,a,u,c=0,l=0,m=0,d=i.constructor,p=d.rounding,y=d.precision;if(!i.d||!i.d[0]||i.e>17)return new d(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?($=!1,u=y):u=e,a=new d(.03125);i.e>-2;)i=i.times(a),m+=5;for(n=Math.log(Be(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=X(o.times(i),u,1),t=t.times(++l),a=s.plus(pe(o,t,u,1)),Re(a.d).slice(0,u)===Re(s.d).slice(0,u)){for(r=m;r--;)s=X(s.times(s),u,1);if(e==null)if(c<3&&gn(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return X(s,d.precision=y,p,$=!0);else return d.precision=y,s}s=a}}function Lt(i,e){var t,n,r,o,s,a,u,c,l,m,d,p=1,y=10,f=i,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?($=!1,l=A):l=e,g.precision=l+=y,t=Re(b),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(i),t=Re(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new g("0."+t),o++):f=new g(n+"."+t.slice(1))}else return c=ur(g,l+2,A).times(o+""),f=Lt(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=A,e==null?X(f,A,h,$=!0):f;for(m=f,u=s=f=pe(f.minus(1),f.plus(1),l,1),d=X(f.times(f),l,1),r=3;;){if(s=X(s.times(d),l,1),c=u.plus(pe(s,new g(r),l,1)),Re(c.d).slice(0,l)===Re(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(ur(g,l+2,A).times(o+""))),u=pe(u,new g(p),l,1),e==null)if(gn(u.d,l-y,h,a))g.precision=l+=y,c=s=f=pe(m.minus(1),m.plus(1),l,1),d=X(f.times(f),l,1),r=a=1;else return X(u,g.precision=A,h,$=!0);else return g.precision=A,u;u=c,r+=2}}function Ro(i){return String(i.s*i.s/0)}function ri(i,e){var t,n,r;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(n,r),e){if(r-=n,i.e=t=t-n-1,i.d=[],n=(t+1)%H,t<0&&(n+=H),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=H;n<r;)i.d.push(+e.slice(n,n+=H));e=e.slice(n),n=H-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),$&&(i.e>i.constructor.maxE?(i.d=null,i.e=NaN):i.e<i.constructor.minE&&(i.e=0,i.d=[0]))}else i.e=0,i.d=[0];return i}function Ga(i,e){var t,n,r,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Bo.test(e))return ri(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(va.test(e))t=16,e=e.toLowerCase();else if(Fa.test(e))t=2;else if(Da.test(e))t=8;else throw Error(Ot+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=i.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=Ko(n,new n(t),o,o*2)),c=or(e,t,ot),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(i.s*0):(i.e=lr(c,l),i.d=c,$=!1,s&&(i=pe(i,r,a*4)),u&&(i=i.times(Math.abs(u)<54?Be(2,u):wn.pow(2,u))),$=!0,i)}function Xa(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:nn(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/mr(5,t)),e=nn(i,2,e,e);for(var r,o=new i(5),s=new i(16),a=new i(20);t--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function nn(i,e,t,n,r){var o,s,a,u,c=1,l=i.precision,m=Math.ceil(l/H);for($=!1,u=t.times(t),a=new i(n);;){if(s=pe(a.times(u),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=pe(s.times(u),new i(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return $=!0,s.d.length=m+1,s}function mr(i,e){for(var t=i;--e;)t*=i;return t}function Lo(i,e){var t,n=e.s<0,r=it(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return Tt=n?4:1,e;if(t=e.divToInt(r),t.isZero())Tt=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return Tt=Ao(t)?n?2:3:n?4:1,e;Tt=Ao(t)?n?1:4:n?3:2}return e.minus(r).abs()}function ii(i,e,t,n){var r,o,s,a,u,c,l,m,d,p=i.constructor,y=t!==void 0;if(y?(Ye(t,1,Nt),n===void 0?n=p.rounding:Ye(n,0,8)):(t=p.precision,n=p.rounding),!i.isFinite())l=Ro(i);else{for(l=ft(i),s=l.indexOf("."),y?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=or(ft(d),10,r),d.e=d.d.length),m=or(l,10,r),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(i=new p(i),i.d=m,i.e=o,i=pe(i,d,t,n,0,r),m=i.d,o=i.e,c=ko),s=m[t],a=r/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(i.s<0?8:7)),m.length=t,c)for(;++m[--t]>r-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=Jr.charAt(m[s]);if(y){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=or(l,r,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Jr.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return i.s<0?"-"+l:l}function ho(i,e){if(i.length>e)return i.length=e,!0}function za(i){return new this(i).abs()}function Ya(i){return new this(i).acos()}function Ha(i){return new this(i).acosh()}function ja(i,e){return new this(i).plus(e)}function Qa(i){return new this(i).asin()}function Za(i){return new this(i).asinh()}function $a(i){return new this(i).atan()}function Ja(i){return new this(i).atanh()}function eu(i,e){i=new this(i),e=new this(e);var t,n=this.precision,r=this.rounding,o=n+4;return!i.s||!e.s?t=new this(NaN):!i.d&&!e.d?(t=it(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?it(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=it(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(pe(i,e,o,1)),e=it(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(pe(i,e,o,1)),t}function tu(i){return new this(i).cbrt()}function nu(i){return X(i=new this(i),i.e+1,2)}function ru(i,e,t){return new this(i).clamp(e,t)}function iu(i){if(!i||typeof i!="object")throw Error(cr+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,Nt,"rounding",0,8,"toExpNeg",-tn,0,"toExpPos",0,tn,"maxE",0,tn,"minE",-tn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=ei[t]),(n=i[t])!==void 0)if(_e(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Ot+t+": "+n);if(t="crypto",r&&(this[t]=ei[t]),(n=i[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(Io);else this[t]=!1;else throw Error(Ot+t+": "+n);return this}function ou(i){return new this(i).cos()}function su(i){return new this(i).cosh()}function Oo(i){var e,t,n;function r(o){var s,a,u,c=this;if(!(c instanceof r))return new r(o);if(c.constructor=r,Po(o)){c.s=o.s,$?!o.d||o.e>r.maxE?(c.e=NaN,c.d=null):o.e<r.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;$?s>r.maxE?(c.e=NaN,c.d=null):s<r.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return ri(c,o.toString())}else if(u!=="string")throw Error(Ot+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Bo.test(o)?ri(c,o):Ga(c,o)}if(r.prototype=C,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=iu,r.clone=Oo,r.isDecimal=Po,r.abs=za,r.acos=Ya,r.acosh=Ha,r.add=ja,r.asin=Qa,r.asinh=Za,r.atan=$a,r.atanh=Ja,r.atan2=eu,r.cbrt=tu,r.ceil=nu,r.clamp=ru,r.cos=ou,r.cosh=su,r.div=au,r.exp=uu,r.floor=cu,r.hypot=lu,r.ln=mu,r.log=du,r.log10=fu,r.log2=pu,r.max=yu,r.min=bu,r.mod=gu,r.mul=wu,r.pow=Au,r.random=hu,r.round=Pu,r.sign=ku,r.sin=Tu,r.sinh=Iu,r.sqrt=xu,r.sub=Bu,r.sum=Su,r.tan=Ku,r.tanh=Cu,r.trunc=Ru,i===void 0&&(i={}),i&&i.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)i.hasOwnProperty(t=n[e++])||(i[t]=this[t]);return r.config(i),r}function au(i,e){return new this(i).div(e)}function uu(i){return new this(i).exp()}function cu(i){return X(i=new this(i),i.e+1,3)}function lu(){var i,e,t=new this(0);for($=!1,i=0;i<arguments.length;)if(e=new this(arguments[i++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return $=!0,new this(1/0);t=e}return $=!0,t.sqrt()}function Po(i){return i instanceof wn||i&&i.toStringTag===xo||!1}function mu(i){return new this(i).ln()}function du(i,e){return new this(i).log(e)}function pu(i){return new this(i).log(2)}function fu(i){return new this(i).log(10)}function yu(){return Co(this,arguments,"lt")}function bu(){return Co(this,arguments,"gt")}function gu(i,e){return new this(i).mod(e)}function wu(i,e){return new this(i).mul(e)}function Au(i,e){return new this(i).pow(e)}function hu(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:Ye(i,1,Nt),n=Math.ceil(i/H),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)r=e[o],r>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)r=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(r%1e7),o+=4);o=n/4}else throw Error(Io);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=H,n&&i&&(r=Be(10,H-i),a[o]=(n/r|0)*r);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=H)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<H&&(t-=H-n)}return s.e=t,s.d=a,s}function Pu(i){return X(i=new this(i),i.e+1,this.rounding)}function ku(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function Tu(i){return new this(i).sin()}function Iu(i){return new this(i).sinh()}function xu(i){return new this(i).sqrt()}function Bu(i,e){return new this(i).sub(e)}function Su(){var i=0,e=arguments,t=new this(e[i]);for($=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return $=!0,X(t,this.precision,this.rounding)}function Ku(i){return new this(i).tan()}function Cu(i){return new this(i).tanh()}function Ru(i){return X(i=new this(i),i.e+1,1)}C[Symbol.for("nodejs.util.inspect.custom")]=C.toString;C[Symbol.toStringTag]="Decimal";var wn=C.constructor=Oo(ei);sr=new wn(sr);ar=new wn(ar);var M=wn;import{PublicKey as ci}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Lu}from"@solana/spl-token";import{PublicKey as ge,SystemProgram as No,SYSVAR_RENT_PUBKEY as Ou}from"@solana/web3.js";function T({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var oi=[T({pubkey:Lu,isWritable:!1}),T({pubkey:No.programId,isWritable:!1}),T({pubkey:Ou,isWritable:!1})];function si({publicKey:i,transformSol:e}){let t=ai(i.toString());if(t instanceof ge)return e&&t.equals(Se)?te:t;if(e&&t.toString()===Se.toBase58())return te;if(typeof t=="string"){if(t===ge.default.toBase58())return ge.default;try{return new ge(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function ai(i){try{return new ge(i)}catch{return i}}var dr=new ge("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Mo=new ge("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),st=new ge("SysvarRent111111111111111111111111111111111"),_o=new ge("SysvarC1ock11111111111111111111111111111111"),rn=new ge("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Nu=new ge("Sysvar1nstructions1111111111111111111111111"),ui=No.programId,xm=new ge("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Bm=new ge("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Sm=new ge("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Km=new ge("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Cm=new ge("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Rm=new ge("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Lm=new ge("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Om=new ge("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Nm=new ge("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Mm=new ge("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),_m=new ge("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),te=new ge("So11111111111111111111111111111111111111112"),Se=ge.default;function on(i){return si({publicKey:i,transformSol:!0})}import{PublicKey as Mu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Eo}from"@solana/spl-token";var Mt={chainId:101,address:Mu.default.toBase58(),programId:Eo.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Le={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Eo.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};var li=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===Se.toBase58()||e instanceof ci&&Se.equals(e)){this.decimals=Le.decimals,this.symbol=Le.symbol,this.name=Le.name,this.mint=new ci(Le.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=r||e.toString().substring(0,6),this.mint=o?ci.default:si({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},he=li;he.WSOL=new li(W(R({},Le),{mint:Le.address}));import fr from"big.js";import Vu from"bn.js";import Fu from"decimal.js-light";import _u from"toformat";var Eu=_u,An=Eu;var pr=oe("module/fraction"),mi=An(fr),hn=An(Fu),vu={[0]:hn.ROUND_DOWN,[1]:hn.ROUND_HALF_UP,[2]:hn.ROUND_UP},Du={[0]:fr.roundDown,[1]:fr.roundHalfUp,[2]:fr.roundUp},me=class{constructor(e,t=new Vu(1)){this.numerator=Y(e),this.denominator=Y(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new me(this.denominator,this.numerator)}add(e){let t=e instanceof me?e:new me(Y(e));return this.denominator.eq(t.denominator)?new me(this.numerator.add(t.numerator),this.denominator):new me(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof me?e:new me(Y(e));return this.denominator.eq(t.denominator)?new me(this.numerator.sub(t.numerator),this.denominator):new me(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof me?e:new me(Y(e));return new me(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof me?e:new me(Y(e));return new me(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||pr.logWithError(`${e} is not an integer.`),e<=0&&pr.logWithError(`${e} is not positive.`),hn.set({precision:e+1,rounding:vu[n]});let r=new hn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||pr.logWithError(`${e} is not an integer.`),e<0&&pr.logWithError(`${e} is negative.`),mi.DP=e,mi.RM=Du[n]||1,new mi(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var qu=oe("Raydium_price"),Je=class extends me{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new me(di(n.decimals),di(r.decimals))}get raw(){return new me(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Je({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&qu.logWithError("mul token not equals");let n=super.mul(t);return new Je({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};var pi=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},yr=pi;yr.SOL=new pi(Mt);import Uu from"bn.js";var Vo=new me(new Uu(100)),Qe=class extends me{toSignificant(e=5,t,n){return this.mul(Vo).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Vo).toFixed(e,t,n)}};var qe=new He(0),vo=new He(1),Ld=new He(2),Od=new He(3),Nd=new He(5),fi=new He(10),Md=new He(100),_d=new He(1e3),Ed=new He(1e4),Fo=9007199254740991;function Y(i){let e=oe("Raydium_parseBigNumberish");if(i instanceof He)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new He(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=Fo||i<=-Fo)&&e.logWithError(`BigNumberish number overflow: ${i}`),new He(String(i))):typeof i=="bigint"?new He(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new He(0))}function di(i){return fi.pow(Y(i))}function br(i,e){let t=i.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var Xu=oe("Raydium_amount"),Wo=An(Gu);function zu(i,e){let t="0",n="0";if(i.includes(".")){let r=i.split(".");r.length===2?([t,n]=r,n=n.padEnd(e,"0")):Xu.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var ke=class extends me{constructor(t,n,r=!0,o){let s=new gr(0),a=fi.pow(new gr(t.decimals));if(r)s=Y(n);else{let u=new gr(0),c=new gr(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=zu(n.toString(),t.decimals);u=Y(l),c=Y(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=oe(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new ke(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new ke(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,r=0){return super.toSignificant(t,n,r)}toFixed(t=this.token.decimals,n,r=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,r)}toExact(t={groupSeparator:""}){return Wo.DP=this.token.decimals,new Wo(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function Do(i){return typeof i=="object"&&i!==null&&![he,ke,Yu,me,Hu,Je,Qe].some(e=>typeof e=="object"&&i instanceof e)}function Ue(i){return typeof i=="string"?ai(i):Array.isArray(i)?i.map(e=>Ue(e)):Do(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,Ue(t)])):i}import{PublicKey as Tn,sendAndConfirmTransaction as In,Transaction as xn,TransactionMessage as Bn,VersionedTransaction as Sn}from"@solana/web3.js";import ec from"axios";var 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 ju,ComputeBudgetProgram as qo,Transaction as Go,TransactionMessage as Qu,Keypair as Xo,VersionedTransaction as zo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Zu}from"@solana/spl-token";var Uo=oe("Raydium_txUtil"),Yo=1644;function wr(i){let e=[],t=[];return i.microLamports&&(e.push(qo.setComputeUnitPrice({microLamports:i.microLamports})),t.push(E.SetComputeUnitPrice)),i.units&&(e.push(qo.setComputeUnitLimit({units:i.units})),t.push(E.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function sn(i){var e,t;try{return((t=await((e=i.getLatestBlockhash)==null?void 0:e.call(i)))==null?void 0:t.blockhash)||(await i.getRecentBlockhash()).blockhash}catch{return(await i.getRecentBlockhash()).blockhash}}function yi(i,e){i.length<1&&Uo.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&Uo.logWithError(`no signers provided:, ${e.toString()}`);let t=new Go;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Yo}catch{return!1}}function ue(i,e){let[t,n]=ju.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function Pn({instructions:i,payer:e,signers:t}){return yi(i,[e,...t])}function kn({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Xo.generate().publicKey.toString()}){let o=new Qu({payerKey:e,recentBlockhash:n,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new zo(o).serialize()).toString("base64").length<Yo}catch{return!1}}var $u=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i);function Gt(i){let e=[];return i.forEach(t=>{t instanceof Go&&(t.recentBlockhash||(t.recentBlockhash=Zu.toBase58()),t.feePayer||(t.feePayer=Xo.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof zo&&(n=$u(n));let r=n.toString("base64");e.push(r)}),console.log("simulate tx string:",e),e}import{PublicKey as Ho,AddressLookupTableAccount as hr}from"@solana/web3.js";import{PublicKey as Ju}from"@solana/web3.js";import{getTransferFeeConfig as Tp,unpackMint as Ip}from"@solana/spl-token";var bi=oe("Raydium_accountInfo_util");async function yt(i,e,t){let{batchRequest:n,commitment:r="confirmed"}=R({batchRequest:!1},t),o=gi(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=i._buildArgs([l.map(d=>d.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=gi(a,10);s=(await(await Promise.all(u.map(async l=>await i._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&bi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:d,executable:p,lamports:y,owner:f,rentEpoch:b}=m;return d.length!==2&&d[1]!=="base64"&&bi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:y,owner:new Ju(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>i.getMultipleAccountsInfo(a,r)))}catch(a){a instanceof Error&&bi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Ar(i,e,t){let n=await yt(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>W(R({},r),{accountInfo:n[o]}))}async function wi({connection:i,address:e}){let t=await yt(i,[...new Set(e.map(r=>r.toString()))].map(r=>new Ho(r))),n={};for(let r=0;r<e.length;r++){let o=t[r],s=e[r];if(!o)continue;let a=new hr({key:s,state:hr.deserialize(o.data)});n[s.toString()]=a,Pr[s.toString()]=a}return n}var Pr={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new hr({key:new Ho("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:hr.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 kr=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await ec.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}=wr(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:r=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...r),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Tn.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 xn;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:r,skipPreflight:o=!0}=n||{},s=r!=null?r:await sn(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),Gt([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await In(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:o}),signedTx:u[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:r}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[r,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var f;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{},y=d!=null?d:await sn(this.connection);if((f=this.owner)!=null&&f.isKeyPair){if(l){let b=[];for(let g of s){let h=await In(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 In(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));Gt(b);let g=await this.signAllTransactions(b);if(l){let h=0,A=[],k=async()=>{if(!g[h])return;let P=await this.connection.sendRawTransaction(g[h].serialize(),{skipPreflight:p});A.push({txId:P,status:"sent",signedTx:g[h]}),m==null||m([...A]),h++,this.connection.onSignature(P,x=>{let B=A.findIndex(I=>I.txId===P);B>-1&&(A[B].status=x.err?"error":"success"),m==null||m([...A]),x.err||k()},"processed"),this.connection.getSignatureStatus(P)};return await k(),{txIds:A.map(P=>P.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 d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:r}=d,o=Ae(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=R(R({},this.cluster==="devnet"?{}:Pr),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)s[p]===void 0&&u.push(new Tn(p));let c=await wi({connection:this.connection,address:u});for(let[p,y]of Object.entries(c))s[p]=y;let l=new Bn({payerKey:this.feePayer,recentBlockhash:r?Tn.default.toBase58():await sn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new Sn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var b;let{recentBlockHash:y,skipPreflight:f=!0}=p||{};if(y&&(m.message.recentBlockhash=y),Gt([m]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let g=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:h,blockhash:A}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:h,signature:g},"confirmed"),{txId:g,signedTx:m}}if(this.signAllTransactions){let g=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(g[0],{skipPreflight:f}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:r}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[r,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return s.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var y;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{};if(d&&s.forEach(f=>f.message.recentBlockhash=d),Gt(s),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();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:P}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:P,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]}),m==null||m([...g]),b++,this.connection.onSignature(A,k=>{let P=g.findIndex(x=>x.txId===A);P>-1&&(g[P].status=k.err?"error":"success"),m==null||m([...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 c=e||{},{computeBudgetConfig:t}=c,n=Ae(c,["computeBudgetConfig"]),r=t?wr(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>W(R({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],d=t?[...r.instructions,...m]:m,y=[...new Set(m.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(f=>new Tn(f));if(u.length<12&&Pn({instructions:d,payer:this.feePayer,signers:y})||Pn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Pn({instructions:t?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new xn().add(...r.instructions,...u)):s.push(new xn().add(...u)),a.push(Array.from(new Set(u.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),u=[l]}}),u.length>0){let m=[...new Set(u.map(d=>d.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(d=>o[d]).filter(d=>d!==void 0);Pn({instructions:t?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new xn().add(...r.instructions,...u)):s.push(new xn().add(...u)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var b;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:y=!0}=l||{},f=p!=null?p:await sn(this.connection);if(s.forEach(async(g,h)=>{g.recentBlockhash=f,a[h].length&&g.sign(...a[h])}),Gt(s),(b=this.owner)!=null&&b.isKeyPair){if(m){let g=[];for(let h of s){let A=await In(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 In(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(m){let h=0,A=[],k=async()=>{if(!g[h])return;let P=await this.connection.sendRawTransaction(g[h].serialize(),{skipPreflight:y});A.push({txId:P,status:"sent",signedTx:g[h]}),d==null||d([...A]),h++,this.connection.onSignature(P,x=>{let B=A.findIndex(I=>I.txId===P);B>-1&&(A[B].status=x.err?"error":"success"),d==null||d([...A]),x.err||k()},"processed"),this.connection.getSignatureStatus(P)};return await k(),{txIds:A.map(P=>P.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:r=[]}=b,o=Ae(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=R(R({},this.cluster==="devnet"?{}:Pr),n),a=Array.from(new Set([...this.lookupTableAddress,...r])),u=[];for(let g of a)s[g]===void 0&&u.push(new Tn(g));let c=await wi({connection:this.connection,address:u});for(let[g,h]of Object.entries(c))s[g]=h;let l=t?wr(t):{instructions:[],instructionTypes:[]},m=await sn(this.connection),d=this.signers.reduce((g,h)=>W(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&&kn({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||kn({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 P of[...new Set(a)])s[P]!==void 0&&(k[P]=s[P]);if(t&&kn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let P=new Bn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Sn(P))}else{let P=new Bn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Sn(P))}y.push(Array.from(new Set(f.map(P=>P.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat())).map(P=>d[P]).filter(P=>P!==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=>d[A]).filter(A=>A!==void 0);if(t&&kn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Bn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Sn(A))}else{let A=new Bn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Sn(A))}y.push(h)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var x;let{sequentially:h,onTxUpdate:A,recentBlockHash:k,skipPreflight:P=!0}=g||{};if(p.map(async(B,I)=>{y[I].length&&B.sign(y[I]),k&&(B.message.recentBlockhash=k)}),Gt(p),(x=this.owner)!=null&&x.isKeyPair){let{lastValidBlockHeight:B,blockhash:I}=await this.connection.getLatestBlockhash();if(p.forEach((S,N)=>{y[N].find(V=>V.publicKey.equals(this.owner.publicKey))||S.sign([this.owner.signer])}),h){let S=[];for(let N of p){let V=await this.connection.sendTransaction(N,{skipPreflight:P}),{lastValidBlockHeight:Q,blockhash:v}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:v,lastValidBlockHeight:Q,signature:V},"confirmed"),S.push(V)}return{txIds:S,signedTxs:p}}return{txIds:await Promise.all(p.map(async S=>{let N=await this.connection.sendTransaction(S,{skipPreflight:P});return await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:B,signature:N},"confirmed"),N})),signedTxs:p}}if(this.signAllTransactions){let B=await this.signAllTransactions(p);if(h){let I=0,S=[],N=async()=>{if(!B[I])return;let V=await this.connection.sendTransaction(B[I],{skipPreflight:P});S.push({txId:V,status:"sent",signedTx:B[I]}),A==null||A([...S]),I++,this.connection.onSignature(V,Q=>{let v=S.findIndex(j=>j.txId===V);v>-1&&(S[v].status=Q.err?"error":"success"),A==null||A([...S]),Q.err||N()},"processed"),this.connection.getSignatureStatus(V)};return N(),{txIds:[],signedTxs:B}}else{let I=[];for(let S=0;S<B.length;S+=1){let N=await this.connection.sendTransaction(B[S],{skipPreflight:P});I.push(N)}return{txIds:I,signedTxs:B}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};var at=class{constructor(e){this._owner=e}get publicKey(){return at.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return at.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return at.isKeyPair(this._owner)}get isPublicKey(){return at.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!at.isKeyPair(e)}};function gi(i,e=1,t=[]){let n=[...i];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as ce}from"@solana/web3.js";var jo=new ce("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Qo=new ce("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Kn=new ce("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),zp=new ce("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Yp=new ce("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Hp=new ce("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Zo=new ce("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),jp=new ce("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Qp=new ce("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Zp=new ce("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),$p=new ce("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),tc=new ce("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),nc=new ce("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),rc=new ce("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),ic=new ce("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Jp=new ce("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),ef=new ce("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),tf=new ce("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),oc=new ce("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),sc=new ce("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),ac=new ce("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Cn={IDO_PROGRAM_ID_V1:tc,IDO_PROGRAM_ID_V2:nc,IDO_PROGRAM_ID_V3:rc,IDO_PROGRAM_ID_V4:ic};var nf={SERUM_MARKET:ce.default,OPENBOOK_MARKET:new ce("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:ce.default,FarmV3:new ce("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new ce("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new ce("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new ce("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new ce("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new ce("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new ce("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:oc,CREATE_CPMM_POOL_AUTH:sc,CREATE_CPMM_POOL_FEE_ACC:ac,FEE_DESTINATION_ID:new ce("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as uc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as cc}from"@solana/spl-token";function we(i,e,t){return ue([i.toBuffer(),(t!=null?t:cc).toBuffer(),e.toBuffer()],new uc("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import ut from"bn.js";var Rn=1e4;function ye(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=W(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}}),o=t.epoch<r.newerTransferFee.epoch?r.olderTransferFee:r.newerTransferFee,s=new ut(o.maximumFee.toString()),a=t.epoch<r.newerTransferFee.epoch?(Number(r.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===Rn){let u=new ut(o.maximumFee.toString());return{amount:i.add(u),fee:u,expirationTime:a}}else{let u=Ln(i.mul(new ut(Rn)),new ut(Rn-o.transferFeeBasisPoints)),c=new ut(o.maximumFee.toString()),l=u.sub(i).gt(c)?i.add(c):u,m=Ln(l.mul(new ut(o.transferFeeBasisPoints)),new ut(Rn)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=Ln(i.mul(new ut(o.transferFeeBasisPoints)),new ut(Rn)),c=u.gt(s)?s:u;return{amount:i,fee:c,expirationTime:a}}}function Xt(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function Ln(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new ut(0))?t.add(new ut(1)):t}var Oe={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"},Cf=R({},Oe);var $o="ray_tab_hash",Ai="ray_req_hash",lc=()=>{if(typeof window===void 0)return"";let i=sessionStorage.getItem($o);return i||(i=`ray-${Date.now()}`,sessionStorage.setItem($o,i)),i},Ir=async n=>{var r=n,{logCount:i=1e3,removeLastLog:e}=r,t=Ae(r,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(Ai)||"[]").slice(0,i-1);e&&o.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),o.unshift(W(R({},t),{time:Date.now(),session:lc()}));try{localStorage.setItem(Ai,JSON.stringify(o))}catch{if(e){let s=!1,a=JSON.stringify(t.data).substring(0,100);for(o[0].data=a+(a.length>100?"...":"");!s;){o.pop();let u=JSON.stringify(t.data).substring(0,100);o[0].data=u+(u.length>100?"...":"");try{localStorage.setItem(Ai,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return Ir(W(R({},t),{logCount:i,removeLastLog:!0}))}};var xr=oe("Raydium_Api"),hi=new Map;var Br=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:r,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=r||1e3,this.api=dc.create({baseURL:this.urlConfigs.BASE_HOST||Oe.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return xr.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(xr.error("Request failed"),Promise.reject(s))),this.api.interceptors.response.use(s=>{let{config:a,data:u,status:c}=s,{method:l,baseURL:m,url:d}=a;return n&&Ir({status:c,url:`${m}${d}`,params:a.params,data:u,logCount:this.logCount}),xr.debug(`${l==null?void 0:l.toUpperCase()} ${m}${d} ${c}`),u},s=>{let{config:a,response:u={}}=s,{status:c}=u,{method:l,baseURL:m,url:d}=a;return n&&Ir({status:c,url:`${m}${d}`,params:a.params,data:s.message,logCount:this.logCount}),xr.error(`${l.toUpperCase()} ${m}${d} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||Oe.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||Oe.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await this.api.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(r=>r.numSlots);return n.reduce((r,o)=>r+o,0)/n.length/60}async getChainTimeOffset(){return(await this.api.get(this.urlConfigs.CHAIN_TIME||Oe.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||Oe.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||Oe.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||Oe.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||Oe.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:r="desc",page:o=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||Oe.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${r}&page=${o}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||Oe.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],r=t.filter(s=>hi.has(s)?(n.push(hi.get(s)),!1):!0),o=[];return r.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||Oe.POOL_KEY_BY_ID)+`?ids=${r.join(",")}`)).data.filter(Boolean),o.forEach(a=>{hi.set(a.id,a)})),n.concat(o)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:r="all",sort:o="default",order:s="desc",page:a=1}=e,[u,c]=[t&&on(t).toBase58(),n&&n!=="undefined"?on(n).toBase58():""],[l,m]=c&&u>c?[c,u]:[u,c];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||Oe.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${r}&poolSortField=${o}&sortType=${s}&pageSize=100&page=${a}`)).data}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||Oe.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||Oe.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||Oe.CHECK_AVAILABILITY)).data}};var Sr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",Jo="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as Li,TOKEN_PROGRAM_ID as Vt,AccountLayout as cn,TOKEN_2022_PROGRAM_ID as Wc}from"@solana/spl-token";import{PublicKey as _r,SystemProgram as qc}from"@solana/web3.js";var Pi=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Pe=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=oe(t)}createTxBuilder(e){return this.scope.checkOwner(),new kr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(Pi(e))}logInfo(...e){this.logger.info(Pi(e))}logAndCreateError(...e){let t=Pi(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as _c,createCloseAccountInstruction as Ec,createTransferInstruction as Vc,TOKEN_PROGRAM_ID as un}from"@solana/spl-token";import{PublicKey as Fc,SystemProgram as vc}from"@solana/web3.js";import Dc from"bn.js";import{PublicKey as ps,Keypair as Lc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Oc}from"@solana/spl-token";import Nc from"bn.js";import{PublicKey as Ic}from"@solana/web3.js";import is,{isBN as os}from"bn.js";import{bits as pc,BitStructure as cy,blob as fc,Blob as ly,cstr as my,f32 as dy,f32be as py,f64 as fy,f64be as yy,greedy as by,Layout as yc,ns64 as gy,ns64be as wy,nu64 as bc,nu64be as Ay,offset as hy,s16 as Py,s16be as ky,s24 as Ty,s24be as Iy,s32 as gc,s32be as xy,s40 as By,s40be as Sy,s48 as Ky,s48be as Cy,s8 as Ry,seq as wc,struct as Ly,Structure as Ac,u16 as hc,u16be as Oy,u24 as Ny,u24be as My,u32 as Pc,u32be as _y,u40 as Ey,u40be as Vy,u48 as Fy,u48be as vy,u8 as kc,UInt as Tc,union as Dy,Union as Wy,unionLayoutDiscriminator as qy,utf8 as Uy}from"@solana/buffer-layout";var Kr=yc,es=Ac;var ki=Tc;var ts=kc,bt=hc;var Ti=Pc;var ns=bc;var Ne=gc;var rs=wc;var be=fc;var Ii=pc;var zt=class extends Kr{constructor(t,n,r){super(t,r);this.blob=be(t),this.signed=n}decode(t,n=0){let r=new is(this.blob.decode(t,n),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,n,r=0){return typeof t=="number"&&(t=new is(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}},Cr=class extends Kr{constructor(t){super(8,t);this._lower=Ii(Ti(),!1),this._upper=Ii(Ti(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let r=this._lower.decode(t,n),o=this._upper.decode(t,n+this._lower.span);return R(R({},r),o)}encode(t,n,r=0){return this._lower.encode(t,n,r)+this._upper.encode(t,n,r+this._lower.span)}};function F(i){return new ki(1,i)}function Ge(i){return new ki(4,i)}function w(i){return new zt(8,!1,i)}function z(i){return new zt(16,!1,i)}function ss(i){return new zt(1,!0,i)}function Lr(i){return new zt(8,!0,i)}function as(i){return new zt(16,!0,i)}var Rr=class extends Kr{constructor(t,n,r,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=r}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,r){return this.layout.encode(this.encoder(t),n,r)}getSpan(t,n){return this.layout.getSpan(t,n)}};function K(i){return new Rr(be(32),e=>new Ic(e),e=>e.toBuffer(),i)}function Ee(i){return new Rr(ts(),xc,Bc,i)}function xc(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function Bc(i){return i?1:0}var xi=class extends es{decode(e,t){return super.decode(e,t)}};function _(i,e,t){return new xi(i,e,t)}function q(i,e,t){let n,r=typeof e=="number"?e:os(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=os(a)?a.toNumber():a,Reflect.set(o,"count",n)}return Reflect.get(o,s)},set(o,s,a){return s==="count"&&(n=a),Reflect.set(o,s,a)}});return rs(i,r,t)}var an=_([K("mint"),K("owner"),w("amount"),Ge("delegateOption"),K("delegate"),F("state"),Ge("isNativeOption"),w("isNative"),w("delegatedAmount"),Ge("closeAuthorityOption"),K("closeAuthority")]);function Sc(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function Bi(i,...e){if(!Sc(i))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(i.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${i.length}`)}function Si(i,e=!0){if(i.destroyed)throw new Error("Hash instance has been destroyed");if(e&&i.finished)throw new Error("Hash#digest() has already been called")}function us(i,e){Bi(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Nr=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),ct=(i,e)=>i<<32-e|i>>>e;var ib=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Kc(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function Ki(i){return typeof i=="string"&&(i=Kc(i)),Bi(i),i}var Or=class{clone(){return this._cloneInto()}},ob={}.toString;function cs(i){let e=n=>i().update(Ki(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function Cc(i,e,t,n){if(typeof i.setBigUint64=="function")return i.setBigUint64(e,t,n);let r=BigInt(32),o=BigInt(4294967295),s=Number(t>>r&o),a=Number(t&o),u=n?4:0,c=n?0:4;i.setUint32(e+u,s,n),i.setUint32(e+c,a,n)}var ls=(i,e,t)=>i&e^~i&t,ms=(i,e,t)=>i&e^i&t^e&t,Mr=class extends Or{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Nr(this.buffer)}update(e){Si(this);let{view:t,buffer:n,blockLen:r}=this;e=Ki(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let u=Nr(e);for(;r<=o-s;s+=r)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Si(this),us(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(n,0),s=0);for(let m=s;m<r;m++)t[m]=0;Cc(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=Nr(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:r,finished:o,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=o,e.destroyed=s,r%t&&e.buffer.set(n),e}};var Rc=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]),_t=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Et=new Uint32Array(64),Ci=class extends Mr{constructor(){super(64,32,8,!1),this.A=_t[0]|0,this.B=_t[1]|0,this.C=_t[2]|0,this.D=_t[3]|0,this.E=_t[4]|0,this.F=_t[5]|0,this.G=_t[6]|0,this.H=_t[7]|0}get(){let{A:e,B:t,C:n,D:r,E:o,F:s,G:a,H:u}=this;return[e,t,n,r,o,s,a,u]}set(e,t,n,r,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)Et[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=Et[m-15],p=Et[m-2],y=ct(d,7)^ct(d,18)^d>>>3,f=ct(p,17)^ct(p,19)^p>>>10;Et[m]=f+Et[m-7]+y+Et[m-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=ct(a,6)^ct(a,11)^ct(a,25),p=l+d+ls(a,u,c)+Rc[m]+Et[m]|0,f=(ct(n,2)^ct(n,13)^ct(n,22))+ms(n,r,o)|0;l=c,c=u,u=a,a=s+p|0,s=o,o=r,r=n,n=p+f|0}n=n+this.A|0,r=r+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,r,o,s,a,u,c,l)}roundClean(){Et.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var ds=cs(()=>new Ci);var kb=oe("Raydium_Util");function fs({owner:i,solAccountResp:e,tokenAccountResp:t}){let n=[],r=[];for(let{pubkey:o,account:s}of t.value){let a=an.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:we(i,u,s.owner).publicKey.equals(o),isNative:!1,programId:s.owner}),r.push({pubkey:o,accountInfo:a,programId:s.owner})}return e&&n.push({mint:ps.default,amount:new Nc(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:r}}function Ve({fromPublicKey:i,programId:e=Oc}){let t=Lc.generate().publicKey.toBase58().slice(0,32);return{publicKey:Mc(i,t,e),seed:t}}function Mc(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=ds(n);return new ps(r)}function Ri(i){let{mint:e,tokenAccount:t,owner:n,programId:r=un}=i;return _c(t,e,n,r)}function It(i){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:r,programId:o=un}=i;return Ec(e,t,r,n,o)}async function xt(i){let{connection:e,amount:t,commitment:n,payer:r,owner:o,skipCloseAccount:s}=i,a=await e.getMinimumBalanceForRentExemption(an.span,n),u=Y(t).add(new Dc(a)),c=Ve({fromPublicKey:r,programId:un});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[vc.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:an.span,programId:un}),Ri({mint:new Fc(Le.address),tokenAccount:c.publicKey,owner:o,programId:un})],instructionTypes:[E.CreateAccount,E.InitAccount],endInstructionTypes:s?[]:[E.CloseAccount],endInstructions:s?[]:[It({tokenAccount:c.publicKey,payer:r,owner:o})]}}function On({source:i,destination:e,owner:t,amount:n,multiSigners:r=[],tokenProgram:o=un}){return Vc(i,e,t,BigInt(String(n)),r,o)}var Nn=class extends Pe{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:r}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=r||[],this._clientOwnedToken=!!(n||r)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}updateTokenAccount({tokenAccounts:t,tokenAccountRawInfos:n}){return t&&(this._tokenAccounts=t),n&&(this._tokenAccountRawInfos=n),this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=void 0,this._clientOwnedToken=!0,this}addAccountChangeListener(t){return this._accountListener.push(t),this}removeAccountChangeListener(t){return this._accountListener=this._accountListener.filter(n=>n!==t),this}getAssociatedTokenAccount(t,n){return we(this.scope.ownerPubKey,t,n).publicKey}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length)return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let r=R(R({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,r.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Vt},r.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Wc},r.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=fs({owner:this.scope.ownerPubKey,solAccountResp:o,tokenAccountResp:{context:s.context,value:[...s.value,...a.value]}});return this._tokenAccounts=u,this._tokenAccountRawInfos=c,this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>this.fetchWalletTokenAccounts({forceUpdate:!0}),t==null?void 0:t.commitment),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=Vt,associatedOnly:r=!0}){await this.fetchWalletTokenAccounts();let o=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,u)=>a.amount.lt(u.amount)?1:-1),s=this.getAssociatedTokenAccount(t,n);for(let a of o){let{publicKey:u}=a;if(u&&(!r||r&&s.equals(u)))return u}}async getOrCreateTokenAccount(t){var y,f;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:r,associatedOnly:o,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new _r(t.tokenProgram||Vt),m=this.getAssociatedTokenAccount(n,new _r(l)),d=(a?[]:this.tokenAccountRawInfos).filter(b=>b.accountInfo.mint.equals(n)&&(!o||b.pubkey.equals(m))).sort((b,g)=>b.accountInfo.amount.lt(g.accountInfo.amount)?1:-1);if(r===void 0||d.length>0)return d.length>0?{account:d[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(o){let b=Li(s,m,s,n,l);if(c){let g=await this.scope.connection.getAccountInfo(m);if(g===null)(y=p.instructions)==null||y.push(b),p.instructionTypes.push(E.CreateATA);else if(!(g.owner.equals(l)&&cn.decode(g.data).mint.equals(n)&&cn.decode(g.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else p.instructions.push(b),p.instructionTypes.push(E.CreateATA);if(n.equals(te)&&r.amount){let g=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:r.payer||this.scope.ownerPubKey,amount:(f=r.amount)!=null?f:0,skipCloseAccount:u});p.instructions.push(...g.instructions||[]),p.endInstructions.push(...g.endInstructions||[]),p.instructionTypes.push(...g.instructionTypes||[]),p.endInstructionTypes.push(...g.endInstructionTypes||[]),r.amount&&(p.instructions.push(On({source:g.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:r.amount,tokenProgram:Vt})),p.instructionTypes.push(E.TransferAmount))}return u||(p.endInstructions.push(It({owner:s,payer:r.payer||s,tokenAccount:m,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:m,instructionParams:p}}else{let b=Ve({fromPublicKey:s,programId:l}),g=await this.scope.connection.getMinimumBalanceForRentExemption(cn.span),h=qc.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:b.seed,newAccountPubkey:b.publicKey,lamports:g,space:cn.span,programId:l});return p.instructions.push(h,Ri({mint:n,tokenAccount:b.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(E.CreateAccount),p.instructionTypes.push(E.InitAccount),u||(p.endInstructions.push(It({owner:s,payer:r.payer||s,tokenAccount:b.publicKey,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:b.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=Vt,autoUnwrapWSOLToSOL:r}){var u;await this.fetchWalletTokenAccounts();let o=(u=this.scope.account.tokenAccounts.find(({mint:c})=>(c==null?void 0:c.toBase58())===t.toBase58()))==null?void 0:u.publicKey,s=this.scope.ownerPubKey,a={};if(!o){let c=this.getAssociatedTokenAccount(t,n),l=await Li(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[E.CreateATA],o=c}return r&&te.toBase58()===t.toBase58()&&(a.endInstructions=[It({owner:s,payer:s,tokenAccount:o,programId:n})],a.endInstructionTypes=[E.CloseAccount]),{pubKey:o,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:r,mint:o,programId:s=Vt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(o,s);if(new _r(te).equals(o)){let p=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:r,skipCloseAccount:l});return R({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!c){let p=[],y=Li(this.scope.ownerPubKey,d,this.scope.ownerPubKey,o,s);if(m){let f=await this.scope.connection.getAccountInfo(d);if(f===null)p.push(y);else if(!(f.owner.equals(Vt)&&cn.decode(f.data).mint.equals(o)&&cn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${o.toString()}, ata: ${d.toString()}`)}else p.push(y);return{tokenAccount:d,instructions:p,instructionTypes:[E.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:r=Vt,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new _r(te))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:r}),{tokenAccount:d}=l,p=Ae(l,["tokenAccount"]);u=d,c.addInstruction(p)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:r}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:r}),{tokenAccount:d}=m,p=Ae(m,["tokenAccount"]);u=d,c.addInstruction(p)}return R({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as ol}from"@solana/spl-token";import{PublicKey as fe,SystemProgram as sl}from"@solana/web3.js";import{PublicKey as gs}from"@solana/web3.js";var Oi=_([F("instruction")]),Ni=_([F("instruction")]),Uc=_([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),z("accRewardPerShare"),K("rewardVault"),K("rewardMint"),K("rewardSender"),w("rewardType"),q(w(),15,"padding")]),Gc=_([w("state"),w("nonce"),K("lpVault"),K("rewardVault"),K(),K(),w(),w(),w("totalReward"),z("perShareReward"),w("lastSlot"),w("perSlotReward")]),Xc=_([w("state"),w("nonce"),K("lpVault"),K("rewardVaultA"),w("totalRewardA"),z("perShareRewardA"),w("perSlotRewardA"),F("option"),K("rewardVaultB"),be(7),w("totalRewardB"),z("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),K()]),zc=_([w(),w("state"),w("nonce"),w("validRewardTokenNum"),z("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),K("lpMint"),K("lpVault"),q(Uc,5,"rewardInfos"),K("creator"),K(),q(w(),32,"padding")]),Yc=new Proxy(Gc,{get(i,e,t){return e==="decode"?(...n)=>{let r=i.decode(...n);return W(R({},r),{version:3,rewardInfos:[{rewardVault:r.rewardVault,totalReward:r.totalReward,perSlotReward:r.perSlotReward,perShareReward:r.perShareReward}]})}:Reflect.get(i,e,t)}}),Hc=new Proxy(Xc,{get(i,e,t){return e==="decode"?(...n)=>{let r=i.decode(...n);return W(R({},r),{version:5,rewardInfos:[{rewardVault:r.rewardVaultA,totalReward:r.totalRewardA,perSlotReward:r.perSlotRewardA,perShareReward:r.perShareRewardA},{rewardVault:r.rewardVaultB,totalReward:r.totalRewardB,perSlotReward:r.perSlotRewardB,perShareReward:r.perShareRewardB}]})}:Reflect.get(i,e,t)}}),Er=new Proxy(zc,{get(i,e,t){return e==="decode"?(...n)=>{let r=i.decode(...n);return W(R({},r),{version:6,rewardInfos:r.rewardInfos.map(o=>{var s;return W(R({},o),{rewardType:((s=Object.entries(Ft).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(i,e,t)}}),jc=_([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Mi=_([F("instruction"),w("nonce"),q(jc,5,"rewardTimeInfo")]),_i=_([F("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),Ei=_([F("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),eg=_([w("state"),K("id"),K("owner"),w("deposited"),q(w(),1,"rewardDebts")]),Vi=_([w("state"),K("id"),K("owner"),w("deposited"),q(z(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),tg=_([w("state"),K("id"),K("owner"),w("deposited"),q(w(),2,"rewardDebts")]),ys=_([w("state"),K("id"),K("owner"),w("deposited"),q(z(),2,"rewardDebts"),q(w(),17)]),bs=_([w(),w("state"),K("id"),K("owner"),w("deposited"),q(z(),5,"rewardDebts"),q(w(),16)]),Ze=_([F("instruction"),w("amount")]),Qc=_([K("mint"),K("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),ss("digitShift"),q(F(),7,"reserved1"),q(w(),7,"reserved2")]),Zc=_([be(8),K("governanceProgramId"),K("realm"),K("realmGoverningTokenMint"),K("realmAuthority"),q(F(),32,"reserved1"),q(Qc,4,"votingMints"),Lr("timeOffset"),F("bump"),q(F(),7,"reserved2"),q(w(),11,"reserved3")]),$c=_([Lr("startTime"),Lr("endTime"),F("kind"),q(F(),15,"reserved")]),Jc=_([q($c,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),Ee("isUsed"),Ee("allowClawback"),F("votingMintConfigIdx"),q(F(),29,"reserved")]),el=_([be(8),K("voterAuthority"),K("registrar"),q(Jc,32,"deposits"),F("voterBump"),F("voterWweightRecordBump"),q(F(),94,"reserved")]);var cg=oe("Raydium_farm_config"),ws=new gs("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),As=new gs("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var hs={3:Vi,5:ys,6:bs},Fi=i=>[3,5,6].indexOf(i)!==-1,vi=i=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=i,r=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,o={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${r}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${r}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${r}`}};return(s=o[e])==null?void 0:s.call(o)},Ft={"Standard SPL":0,"Option tokens":1},lt={[jo.toString()]:3,[Qo.toString()]:5,[Kn.toString()]:6};import{PublicKey as le,SystemProgram as Ts,SYSVAR_RENT_PUBKEY as rl,SYSVAR_CLOCK_PUBKEY as Vr,TransactionInstruction as mt}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Dg,TOKEN_PROGRAM_ID as vt,ASSOCIATED_TOKEN_PROGRAM_ID as Wg}from"@solana/spl-token";import Is from"bn.js";import tl from"bn.js";var nl=oe("Raydium.farm.util");function Mn({programId:i,poolId:e,mint:t,type:n}){let{publicKey:r}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],i);return r}function gt({programId:i,poolId:e,owner:t,version:n}){let{publicKey:r}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],i);return r}var Ps=({programId:i,poolId:e})=>ue([e.toBuffer()],i);function ks(i){return{isSet:new tl(1),rewardPerSecond:Y(i.perSecond),rewardOpenTime:Y(i.openTime),rewardEndTime:Y(i.endTime),rewardType:Y(Ft[i.rewardType])}}function Di(i){return Y(i.endTime).sub(Y(i.openTime)).mul(Y(i.perSecond))}function Wi(i){let e=hs[i];return e||nl.logWithError("invalid version",i),e}var il=oe("Raydium_farm_instruction"),ew={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 xs(i){let{version:e,id:t,ledger:n,programId:r,owner:o}=i,s={3:9,5:10}[e];s||il.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Oi.span);Oi.encode({instruction:s},a);let u=[T({pubkey:t}),T({pubkey:n}),T({pubkey:o,isWritable:!1}),T({pubkey:Ts.programId,isWritable:!1}),T({pubkey:rl,isWritable:!1})];return{instruction:new mt({programId:r,keys:u,data:a}),instructionType:E.FarmV3CreateLedger}}function Bs(i){var n;let e=Buffer.alloc(Mi.span);Mi.encode({instruction:0,nonce:new Is(i.nonce),rewardTimeInfo:i.rewardInfoConfig},e);let t=[...oi,T({pubkey:i.farmId}),T({pubkey:i.farmAuthority,isWritable:!1}),T({pubkey:i.lpVault}),T({pubkey:i.lpMint,isWritable:!1}),T({pubkey:i.lockVault}),T({pubkey:i.lockMint,isWritable:!1}),T({pubkey:(n=i.lockUserAccount)!=null?n:Se}),T({pubkey:i.owner,isWritable:!1,isSigner:!0})];for(let r of i.rewardInfo)t.push(T({pubkey:r.rewardMint,isWritable:!1}),T({pubkey:r.rewardVault}),T({pubkey:r.userRewardToken}));return{instruction:new mt({programId:i.programId,keys:t,data:e}),instructionType:E.FarmV6Create}}function Ss(i){let e=Buffer.alloc(Ni.span);Ni.encode({instruction:5},e);let t=[T({pubkey:vt,isWritable:!1}),T({pubkey:i.id}),T({pubkey:i.authority,isWritable:!1}),T({pubkey:i.lpVault,isWritable:!1}),T({pubkey:i.rewardVault}),T({pubkey:i.userRewardToken}),T({pubkey:i.owner,isWritable:!1,isSigner:!0})];return{instruction:new mt({programId:i.programId,keys:t,data:e}),instructionType:E.FarmV6CreatorWithdraw}}function qi({payer:i,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:r}){let o=Buffer.alloc(_i.span);_i.encode({instruction:3,rewardReopenTime:Y(r.openTime),rewardEndTime:Y(r.endTime),rewardPerSecond:Y(r.perSecond)},o);let s=[T({pubkey:vt,isWritable:!1}),T({pubkey:n.id}),T({pubkey:n.lpVault,isWritable:!1}),T({pubkey:e}),T({pubkey:t}),T({pubkey:i,isWritable:!1,isSigner:!0})];return new mt({programId:n.programId,keys:s,data:o})}function Ui({payer:i,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:r}){let o=Buffer.alloc(Ei.span);Ei.encode({instruction:4,isSet:new Is(1),rewardPerSecond:Y(r.perSecond),rewardOpenTime:Y(r.openTime),rewardEndTime:Y(r.endTime),rewardType:Y(Ft[r.rewardType])},o);let s=[...oi,T({pubkey:t.id}),T({pubkey:t.authority,isWritable:!1}),T({pubkey:r.mint,isWritable:!1}),T({pubkey:n}),T({pubkey:e}),T({pubkey:i,isWritable:!1,isSigner:!0})];return new mt({programId:t.programId,keys:s,data:o})}function _n(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s}=i,[a,u]=[new le(e.programId),new le(e.id)],c=gt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ze.span);Ze.encode({instruction:2,amount:Y(s)},l);let m=[T({pubkey:vt,isWritable:!1}),T({pubkey:u}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:new le(t.lpVault)}),T({pubkey:c}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(T({pubkey:new le(t.rewardInfos[d].vault)})),m.push(T({pubkey:r[d]}));return new mt({programId:a,keys:m,data:l})}function En(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=gt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ze.span);Ze.encode({instruction:12,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:Vr,isWritable:!1}),T({pubkey:vt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(T({pubkey:r[p]})),d.push(T({pubkey:new le(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function Vn(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=gt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ze.span);Ze.encode({instruction:11,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:Vr,isWritable:!1}),T({pubkey:vt,isWritable:!1})];if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function Ks(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=gt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ze.span);Ze.encode({instruction:10,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:Vr,isWritable:!1}),T({pubkey:vt,isWritable:!1})];if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function Cs(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=gt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ze.span);Ze.encode({instruction:11,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:Vr,isWritable:!1}),T({pubkey:vt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(T({pubkey:r[p]})),d.push(T({pubkey:new le(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function Rs(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s}=i,[a,u]=[new le(e.programId),new le(e.id)],c=gt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ze.span);Ze.encode({instruction:1,amount:Y(s)},l);let m=[T({pubkey:vt,isWritable:!1}),T({pubkey:Ts.programId,isWritable:!1}),T({pubkey:u}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:new le(t.lpVault)}),T({pubkey:c}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(T({pubkey:new le(t.rewardInfos[d].vault)})),m.push(T({pubkey:r[d]}));return new mt({programId:a,keys:m,data:l})}var Fn=class extends Pe{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Se)){let n=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:Di(W(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:r=Kn,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new fe(e.lpMint.address),lockInfo:{lockMint:ws,lockVault:As},version:6,rewardInfos:t,programId:r},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=Ve({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(Er.span);u.addInstruction({instructions:[sl.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:Er.span,programId:a.programId})]});let{publicKey:d,nonce:p}=Ps({programId:new fe(a.programId),poolId:l.publicKey}),y=Mn({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let P of a.rewardInfos){P.openTime>=P.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",P.openTime.toString()),isNaN(Ft[P.rewardType])&&this.logAndCreateError("rewardType error",P.rewardType),Number(P.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",P.perSecond),f.push(ks(P));let{rewardPubKey:x,newInstruction:B}=await this._getUserRewardInfo({rewardInfo:P,payer:c});B&&u.addInstruction(B),x||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let I=P.mint.equals(Se)?new fe(Le.address):P.mint;b.push({rewardMint:I,rewardVault:Mn({programId:a.programId,poolId:l.publicKey,mint:I,type:"rewardVault"}),userRewardToken:x})}let{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:new fe(a.lockInfo.lockMint),owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1});h&&u.addInstruction(h),g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:A,instructionType:k}=Bs({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:d,lpVault:y,lpMint:a.lpMint,lockVault:a.lockInfo.lockVault,lockMint:a.lockInfo.lockMint,lockUserAccount:g,programId:a.programId,rewardInfo:b,rewardInfoConfig:f,nonce:p});return u.addInstruction({instructions:[A],instructionTypes:[k]}).versionBuild({txVersion:o,extInfo:{farmId:l.publicKey,farmAuthority:d,lpVault:y,lockUserAccount:g,nonce:p}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:r}){var b;let o=lt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=Ue((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=t||this.scope.ownerPubKey,c=n.mint.equals(Se)?new fe(Le.address):n.mint,l=a.rewardInfos.findIndex(g=>new fe(g.mint.address).equals(c)),m=s.rewardInfos[l];m||this.logAndCreateError("configuration does not exist","rewardMint",c);let d=(b=m.vault)!=null?b:Se,p=this.createTxBuilder(),{rewardPubKey:y,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:n,payer:u});return f&&p.addInstruction(f),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),p.addInstruction({instructions:[qi({payer:this.scope.ownerPubKey,rewardVault:d,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[E.FarmV6Restart]}).versionBuild({txVersion:r})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:r}){var l;let o=lt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=Ue((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.forEach(m=>{m.openTime>=m.endTime&&this.logAndCreateError("start time error","newRewardInfo",m)});let u=t||this.scope.ownerPubKey,c=this.createTxBuilder();for(let m of n){let d=m.mint.equals(Se)?new fe(Le.address):m.mint,p=a.rewardInfos.findIndex(A=>new fe(A.mint.address).equals(d)),y=s.rewardInfos[p];y||this.logAndCreateError("configuration does not exist","rewardMint",d);let f=(l=y.vault)!=null?l:Se,{rewardPubKey:b,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:m,payer:u});g&&c.addInstruction(g),b||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let h=qi({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[h],instructionTypes:[E.FarmV6Restart]})}return c.versionBuild({txVersion:r})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:r,payer:o}=e,s=lt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ue((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=r.mint.equals(Se)?new fe(Le.address):r.mint,m=Mn({programId:new fe(n.programId),poolId:new fe(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:d,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:r,payer:u});return p&&c.addInstruction(p),d||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),r.mint=l,c.addInstruction({instructions:[Ui({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:m,rewardInfo:r})],instructionTypes:[E.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:r,payer:o}=e,s=lt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ue((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of r){let m=l.mint.equals(Se)?new fe(Le.address):l.mint,d=Mn({programId:new fe(n.programId),poolId:new fe(n.id),mint:m,type:"rewardVault"}),{rewardPubKey:p,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:l,payer:u});y&&c.addInstruction(y),p||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let f=Ui({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:d,rewardInfo:W(R({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[E.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:r,feePayer:o,useSOLBalance:s,associatedOnly:a=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:c,computeBudgetConfig:l}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:m,programId:d}=n,p=lt[d];Fi(p)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new fe(n.programId),new fe(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=gt({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:p}),h=this.createTxBuilder();h.addCustomComputeBudget(l);let A={};for(let v of this.scope.account.tokenAccounts)if(a){let j=we(this.scope.ownerPubKey,v.mint,v.programId).publicKey;v.publicKey&&j.equals(v.publicKey)&&(A[v.mint.toString()]=v.publicKey)}else A[v.mint.toString()]=v.publicKey;let k=b.lpMint,P=A[k.address];P||this.logAndCreateError("you don't have any lp","lp zero",A);let x=[];for(let v of m){let j=s&&v.mint.address===te.toString(),ee=A[v.mint.address];if(!ee){let{account:re,instructionParams:rt}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:v.mint.programId,mint:new fe(v.mint.address),notUseTokenAccount:j,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!j,associatedOnly:j?!1:a,checkCreateATAOwner:u});ee=re,rt&&h.addInstruction(rt)}A[v.mint.address]=ee,x.push(ee)}let B,I=await this.scope.connection.getAccountInfo(g);if(I&&(B=Wi(p).decode(I.data)),n.programId!==Kn.toString()&&!B){let{instruction:v,instructionType:j}=xs({id:f,programId:y,version:p,ledger:g,owner:this.scope.ownerPubKey});h.addInstruction({instructions:[v],instructionTypes:[j]})}let S=vi({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:x});S&&this.logAndCreateError(S);let N={amount:Y(r),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:P,rewardAccounts:x,userAuxiliaryLedgers:c==null?void 0:c.map(v=>new fe(v))},V=p===6?Rs(N):p===5?Cs(N):Ks(N),Q={3:E.FarmV3Deposit,5:E.FarmV5Deposit,6:E.FarmV6Deposit};return h.addInstruction({instructions:[V],instructionTypes:[Q[p]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:r,deposited:o,useSOLBalance:s,feePayer:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:l,computeBudgetConfig:m}=e,{rewardInfos:d}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let p=lt[n.programId];Fi(p)||this.logAndCreateError("invalid farm program:",n.programId);let y=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],f=this.createTxBuilder();f.addCustomComputeBudget(m);let b={};for(let S of this.scope.account.tokenAccounts)if(u){let N=we(this.scope.ownerPubKey,S.mint).publicKey;S.publicKey&&N.equals(S.publicKey)&&(b[S.mint.toString()]=S.publicKey)}else b[S.mint.toString()]=S.publicKey;if(o)o.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let S=gt({programId:new fe(n.programId),poolId:new fe(n.id),owner:this.scope.ownerPubKey,version:p}),N=await this.scope.connection.getAccountInfo(S);N||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:N}),Wi(p).decode(N.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,h=s&&g===te.toString(),A=b[g.toString()];if(!A){let{account:S,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new fe(g),notUseTokenAccount:h,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:u,checkCreateATAOwner:c});A=S,N&&f.addInstruction(N)}b[g.toString()]=A;let k=[];for(let S of d){let N=s&&S.mint.address===te.toString(),V=b[S.mint.address];if(!V){let{account:Q,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:S.mint.programId,mint:new fe(S.mint.address),notUseTokenAccount:N,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!N,associatedOnly:N?!1:u,checkCreateATAOwner:c});V=Q,v&&f.addInstruction(v)}b[S.mint.address]=V,k.push(V)}let P=vi({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:k});P&&this.logAndCreateError(P);let x={amount:Y(r),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:k,userAuxiliaryLedgers:l==null?void 0:l.map(S=>new fe(S))},B=p===6?_n(x):p===5?En(x):Vn(x),I={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};return f.addInstruction({instructions:[B],instructionTypes:[I[p]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var p;this.scope.checkOwner();let r=Ue((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),o=lt[e.programId];o!==6&&this.logAndCreateError("invalid farm version",o);let s=e.rewardInfos.findIndex(y=>y.mint.address===Se.toString()?new fe(Le.address):t),a=r.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(p=a==null?void 0:a.vault)!=null?p:Se,c=this.createTxBuilder(),l;if(t.equals(Se)){let y=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:Di(W(R({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new M(a.perSecond).mul(10**a.mint.decimals).toString()}))});l=y.addresses.newAccount,c.addInstruction(y)}else{let y=await this.scope.account.getCreatedTokenAccount({mint:t});y===null?(l=await this.scope.account.getAssociatedTokenAccount(t),c.addInstruction({instructions:[ol(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[E.CreateATA]})):l=y}let{instruction:m,instructionType:d}=Ss({programId:r.programId,id:r.id,authority:r.authority,lpVault:r.lpVault,rewardVault:u,userRewardToken:l,owner:this.scope.ownerPubKey});return c.addInstruction({instructions:[m],instructionTypes:[d]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:r,associatedOnly:o=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:u,computeBudgetConfig:c}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(o){let f=we(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(m[y.mint.toString()]=y.publicKey)}else m[y.mint.toString()]=y.publicKey;let p=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>W(R({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:h}=y,A=lt[f],k=b.address,P=n&&k===te.toString(),x=m[k];if(!x){let{account:Q,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new fe(k),notUseTokenAccount:P,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:P?!1:o,checkCreateATAOwner:s});x=Q,v&&l.addInstruction(v)}m[k.toString()]=x;let B=[];for(let Q of g){let v=n&&Q.mint.address===te.toString(),j=m[Q.mint.address];if(!j){let{account:ee,instructionParams:re}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Q.mint.programId,mint:new fe(Q.mint.address),notUseTokenAccount:v,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!v,associatedOnly:v?!1:o,checkCreateATAOwner:s});j=ee,re&&l.addInstruction(re)}m[Q.mint.address]=j,B.push(j)}let I=p[h],S={amount:qe,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:I,lpAccount:x,rewardAccounts:B,userAuxiliaryLedgers:a==null?void 0:a.map(Q=>new fe(Q))},N=A===6?_n(S):A===5?En(S):Vn(S),V={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};l.addInstruction({instructions:[N],instructionTypes:[V[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as De}from"@solana/web3.js";import{AccountLayout as Wl,NATIVE_MINT as da,TOKEN_PROGRAM_ID as Xr}from"@solana/spl-token";var Tw=_([Ge("mintAuthorityOption"),K("mintAuthority"),w("supply"),F("decimals"),F("isInitialized"),Ge("freezeAuthorityOption"),K("freezeAuthority")]);import{PublicKey as Sw}from"@solana/web3.js";import{MintLayout as Cw,TOKEN_PROGRAM_ID as Lw}from"@solana/spl-token";var Ls=i=>new he({mint:i.address,decimals:i.decimals,symbol:i.symbol,name:i.name});import{TOKEN_PROGRAM_ID as Fr,ASSOCIATED_TOKEN_PROGRAM_ID as hl}from"@solana/spl-token";import{PublicKey as wt,TransactionInstruction as mn,SystemProgram as Ds,SYSVAR_RENT_PUBKEY as eA}from"@solana/web3.js";var Gi=_([F("instruction"),w("amountIn"),w("minAmountOut")]),Xi=_([F("instruction"),w("maxAmountIn"),w("amountOut")]),Xw=_([F("instruction"),F("nonce")]),al=_([F("instruction"),F("nonce"),w("startTime")]),Os=_([w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalValue"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),w("swapBase2QuoteFee"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("withdrawQueue"),K("lpVault"),K("owner"),w("lpReserve"),q(w(),3,"padding")]),zw=_([w("accountType"),w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalsValue"),w("abortTradeFactor"),w("priceTickMultiplier"),w("priceTick"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("modelDataAccount"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("owner"),q(w(),64,"padding")]),zi=_([F("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),Yi=_([F("instruction"),w("amountIn")]);var Ns=_([w("fee")]);import{PublicKey as ul}from"@solana/web3.js";var ln=new ul("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Ht=5e4,cl=_([w("x"),w("y"),w("price")]),ll=_([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(cl,Ht,"DataElement")]);function ml(i,e){return[0,Ht-2]}function dl(i){return[0,Ht-2]}function pl(i){return[0,Ht-2]}function fl(i,e,t){let[n,r]=ml(e,t),o=n,s=r,a=0,u=e*i.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=Ht-2)return[a,a,!1];let c=i.DataElement[a].x*i.multiplier/i.DataElement[a].y,l=i.DataElement[a-1].x*i.multiplier/i.DataElement[a-1].y,m=i.DataElement[a+1].x*i.multiplier/i.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)s=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];o=a+1}}return[a,a,!1]}function Hi(i,e,t){let[n,r,o]=fl(i,e,t);if(!o)return 0;if(n===r){let s=i.DataElement[n].x;return e*i.multiplier/s}else{let s=i.DataElement[n].x,a=i.DataElement[n].y,u=i.DataElement[r].x,c=i.DataElement[r].y,l=t*(u*a-s*c),m=s*l,d=(u-s)*(e*a-s*t)*c,p=m+d;return e*i.multiplier*l/p}}function Yt(i,e,t){return e*i.multiplier/t}function Ms(i,e,t){return e*t/i.multiplier}function yl(i,e){let[t,n]=dl(e),r=t,o=n,s=0,a=e;for(;r<o;){if(s=Math.floor((o+r)/2),s<=0||s>Ht-2)return[s,s,!1];let u=i.DataElement[s].x,c=i.DataElement[s-1].x,l=i.DataElement[s+1].x;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<c)o=s-1;else{if(a>c&&a<u)return[s-1,s,!0];if(a>u&&a<l)return[s,s+1,!0];r=s+1}}return[s,s,!1]}function bl(i,e){let[t,n]=pl(e),r=t,o=n,s=0,a=e;for(;r<=o;){if(s=Math.floor((o+r)/2),s<=0||s>=Ht-2)return[s,s,!1];let u=i.DataElement[s].y,c=i.DataElement[s-1].y,l=i.DataElement[s+1].y;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)r=s+1;else{if(a<c&&a>u)return[s-1,s,!0];if(a<u&&a>l)return[s,s+1,!0];o=s-1}}return[s,s,!1]}function _s(i,e,t,n){let r=n?e+t:e-t,[o,s,a]=yl(i,r);if(!a)return[0,0,!1,a];if(o===s)return[i.DataElement[s].price,i.DataElement[s].y,!1,a];{let u=i.DataElement[o].x,c=i.DataElement[s].x,l=i.DataElement[o].price,m=i.DataElement[s].price,d=i.DataElement[o].y,p=i.DataElement[s].y;if(e>=u&&e<=c)return n?[m,p,!0,a]:[l,d,!0,a];{let y,f;return n?(y=l+(m-l)*(e-u)/(c-u),f=d-(r-u)*i.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=p+(c-r)*i.multiplier/l),[y,f,!1,a]}}}function gl(i,e,t,n){let r=n?e-t:e+t,[o,s,a]=bl(i,r);if(!a)return[0,0,!1,a];if(o===s)return[i.DataElement[s].price,i.DataElement[s].x,!1,a];{let u=i.DataElement[o].x,c=i.DataElement[s].x,l=i.DataElement[o].price,m=i.DataElement[s].price,d=i.DataElement[o].y,p=i.DataElement[s].y;if(e>=p&&e<=d)return n?[m,c,!0,a]:[l,u,!0,a];{let y,f;return n?(y=l+(m-l)*(d-e)/(d-p),f=u+m*(d-r)/i.multiplier):(y=l+(m-l)*(d-e)/(d-p),f=c-l*(r-p)/i.multiplier),[y,f,!1,a]}}}function wl(i,e){let t=_s(i,e,0,!1);return t[3]?t[0]:0}function Es(i,e,t,n){let r=Hi(i,e,t),o=Yt(i,e,r),s=Yt(i,t,r),a=Yt(i,n,r),u=!0,[c,l,m,d]=_s(i,o,a,u);if(!d)return 0;if(m)return n*i.multiplier/c;{let p=s-l;return Ms(i,p,r)}}function Vs(i,e,t,n){let r=Hi(i,e,t),o=Yt(i,e,r),s=Yt(i,t,r),a=Yt(i,n,r),u=!1,[c,l,m,d]=gl(i,s,a,u);if(!d)return 0;if(m)return n*c/i.multiplier;{let p=o-l;return Ms(i,p,r)}}function Al(i){let e=ll.decode(i);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 Fs(i,e,t,n){let r=wl(i,Yt(i,e,Hi(i,e,t)))/i.multiplier;return n?r:1/r}var vn=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(ln);e&&(this._layoutData=Al(e==null?void 0:e.data))}}};var vs=oe("Raydium_liquidity_instruction");function Ws(i){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:r,quoteAmountIn:o,fixedSide:s}=i,a=Buffer.alloc(zi.span);zi.encode({instruction:3,baseAmountIn:Y(r),quoteAmountIn:Y(o),fixedSide:s==="base"?qe:vo},a);let u=[T({pubkey:Fr,isWritable:!1}),T({pubkey:new wt(e.id)}),T({pubkey:new wt(t.authority),isWritable:!1}),T({pubkey:new wt(t.openOrders),isWritable:!1}),T({pubkey:new wt(t.targetOrders)}),T({pubkey:new wt(e.lpMint.address)}),T({pubkey:new wt(t.vault.A)}),T({pubkey:new wt(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(T({pubkey:ln})),u.push(T({pubkey:new wt(e.marketId),isWritable:!1}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:new wt(t.marketEventQueue),isWritable:!1})),new mn({programId:new wt(e.programId),keys:u,data:a})}function ji(i){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:r}=i,o=Ue(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(Yi.span);Yi.encode({instruction:4,amountIn:Y(r)},a);let u=[T({pubkey:Fr,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.mintLp.address}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return s===5?u.push(T({pubkey:ln})):(u.push(T({pubkey:o.id})),u.push(T({pubkey:o.id}))),u.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks})),new mn({programId:o.programId,keys:u,data:a})}return new mn({programId:o.programId,keys:[]})}function qs({programId:i,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:r,coinMint:o,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:y,userCoinVault:f,userPcVault:b,userLpVault:g,nonce:h,openTime:A,coinAmount:k,pcAmount:P,ammConfigId:x,feeDestinationId:B}){let I=_([F("instruction"),F("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),S=[{pubkey:Fr,isSigner:!1,isWritable:!1},{pubkey:hl,isSigner:!1,isWritable:!1},{pubkey:Ds.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:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:x,isSigner:!1,isWritable:!1},{pubkey:B,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0}],N=Buffer.alloc(I.span);return I.encode({instruction:1,nonce:h,openTime:A,coinAmount:k,pcAmount:P},N),{instruction:new mn({keys:S,programId:i,data:N}),instructionType:E.AmmV4CreatePool}}function Pl({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=Ue(i),s=Buffer.alloc(Gi.span);Gi.encode({instruction:9,amountIn:Y(t),minAmountOut:Y(n)},s);let a=[T({pubkey:Fr,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders})];return r===4&&a.push(T({pubkey:o.targetOrders})),a.push(T({pubkey:o.vault.A}),T({pubkey:o.vault.B})),r===5&&a.push(T({pubkey:ln})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1})),new mn({programId:o.programId,keys:a,data:s})}function kl({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=Ue(i),s=Buffer.alloc(Xi.span);Xi.encode({instruction:11,maxAmountIn:Y(t),amountOut:Y(n)},s);let a=[T({pubkey:Ds.programId,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return r===5&&a.push(T({pubkey:ln})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1,isSigner:!0})),new mn({programId:o.programId,keys:a,data:s})}function Us(i){let{poolKeys:e,version:t,userKeys:n,amountIn:r,amountOut:o,fixedSide:s}=i;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Pl(W(R({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return kl(W(R({},a),{maxAmountIn:r,amountOut:o}),t);vs.logWithError("invalid params","params",i)}throw vs.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{TOKEN_PROGRAM_ID as Me,TOKEN_2022_PROGRAM_ID as qt,ASSOCIATED_TOKEN_PROGRAM_ID as ia}from"@solana/spl-token";import{PublicKey as D,TransactionInstruction as dt,SystemProgram as dn,Keypair as ro}from"@solana/web3.js";import oa from"bn.js";import Ll from"bn.js";function vr(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function Qi(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function Zi(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function Dn(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Gs(i,e){return Dn(i,e)?null:Qi(i,e)}function Xs(i,e){return Dn(i,e)?null:Zi(i,e)}var fA=Buffer.from("amm_config","utf8"),Tl=Buffer.from("pool","utf8"),Il=Buffer.from("pool_vault","utf8"),xl=Buffer.from("pool_reward_vault","utf8"),zs=Buffer.from("position","utf8"),Bl=Buffer.from("tick_array","utf8"),Sl=Buffer.from("operation","utf8"),Kl=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Ys(i,e,t,n){return ue([Tl,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function $i(i,e,t){return ue([Il,e.toBuffer(),t.toBuffer()],i)}function Hs(i,e,t){return ue([xl,e.toBuffer(),t.toBuffer()],i)}function de(i,e,t){return ue([Bl,e.toBuffer(),vr(t)],i)}function jt(i,e,t,n){return ue([zs,e.toBuffer(),vr(t),vr(n)],i)}function et(i,e){return ue([zs,e.toBuffer()],i)}function Dr(i){return ue([Buffer.from("metadata","utf8"),rn.toBuffer(),i.toBuffer()],rn)}function Wn(i){return ue([Sl],i)}function At(i,e){return ue([Kl,e.toBuffer()],i)}import ht from"bn.js";var xe=new ht(0),Pt=new ht(1),Bt=new ht(-1),$e=new ht(1).shln(64),Wr=new ht(1).shln(128),Ji=$e.sub(Pt),qn=64,js=Wr.subn(1),Fe=-443636,Xe=-Fe,Dt=new ht("4295048016"),Wt=new ht("79226673521066979257578248091"),Qs=16,Zs="59543866431248",$s="184467440737095516",Js="15793534762490258745",qr=new ht(10).pow(new ht(6));var ea={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:[]},gA=new ht("18446744073700000000");var Cl=15,se=class{static async getTickArrays(e,t,n,r,o,s,a){let u=[],c=U.getTickArrayStartIndexByTick(r,o),l=U.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Cl/2));for(let p=0;p<l.length;p++){let{publicKey:y}=de(t,n,l[p]);u.push(y)}let m=(await yt(e,u)).map(p=>p!==null?Un.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=W(R({},y),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=U.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/se.tickCount(t)),a=n?U.searchLowBitFromStart(r,o,s-1,1,t):U.searchHightBitFromStart(r,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,r){let o;if(r){let a=Ke-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<Ke;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=de(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=U.getTickArrayStartIndexByTick(r,o),u=Math.floor((r-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<Ke;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=de(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(U.checkIsOutOfBoundary(e)){if(e>Xe)return!1;let n=U.getTickArrayStartIndexByTick(Fe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Ke*e}};import ne from"bn.js";import{PublicKey as Kt}from"@solana/web3.js";import Te from"bn.js";var eo=14,St=class{static maxTickInTickarrayBitmap(e){return e*Ke*Qt}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(r+=1);let o=n*r;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,r){if(!se.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-se.tickCount(n):t+se.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*Ke,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(r){let l=e.shln(1024-c-1),m=Gs(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=Xs(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-se.tickCount(n)}}}},Gn=class{static getBitmapOffset(e,t){if(!se.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=St.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&r--,r}static getBitmap(e,t,n){let r=this.getBitmapOffset(e,t);return e<0?{offset:r,tickarrayBitmap:n.negativeTickArrayBitmap[r]}:{offset:r,tickarrayBitmap:n.positiveTickArrayBitmap[r]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:r}=this.extensionTickBoundary(t);if(e>=r&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=St.maxTickInTickarrayBitmap(e),n=-t;if(Xe<=t)throw Error(`extensionTickBoundary check error: ${Xe}, ${t}`);if(n<=Fe)throw Error(`extensionTickBoundary check error: ${n}, ${Fe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:r}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:U.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=se.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,r);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,r){let{minValue:o,maxValue:s}=St.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let u=U.mergeTickArrayBitmap(e).shln(Qt-1-a),c=Dn(512,u)?null:Qi(512,u);if(c!==null){let l=t-c*se.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=U.mergeTickArrayBitmap(e).shrn(a),c=Dn(512,u)?null:Zi(512,u);if(c!==null){let l=t+c*se.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-se.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%St.maxTickInTickarrayBitmap(t),r=Math.floor(n/se.tickCount(t));return e<0&&n!=0&&(r=Qt-r),r}};import kt from"bn.js";var Xn=class{static getfeeGrowthInside(e,t,n){let r=new kt(0),o=new kt(0);e.tickCurrent>=t.tick?(r=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(r=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new kt(0),a=new kt(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=Z.wrappingSubU128(Z.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),c=Z.wrappingSubU128(Z.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=Z.mulDivFloor(Z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,$e),u=t.tokenFeesOwedA.add(a),c=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,$e),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=Z.mulDivFloor(Z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,$e),u=t.tokenFeesOwedA.add(a),c=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,$e),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=Z.wrappingSubU128(u,c.growthInsideLastX64),m=Z.mulDivFloor(l,t.liquidity,$e),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,r){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=Z.wrappingSubU128(u,c.growthInsideLastX64),m=Z.mulDivFloor(l,t.liquidity,$e),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new kt(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new kt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Z.wrappingSubU128(Z.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new kt(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new kt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Z.wrappingSubU128(Z.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var b,g,h,A;let a=J.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),u=J.getSqrtPriceX64FromTick(t.tickLower),c=J.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,m=ae.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[ye(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),ye(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[ye(new kt(new M(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),ye(new kt(new M(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Xt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as ta}from"@solana/spl-token";var ve=class{static getOutputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=Zt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,c,o);return a.push(...d),{expectedAmountOut:m.mul(Bt),remainingAccounts:a,executionPrice:p,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=de(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=Zt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(Bt),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=ve.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Gn.checkTickArrayIsInit(se.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):U.checkTickArrayIsInitialized(U.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=de(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,se.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=de(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/se.tickCount(e.tickSpacing)),r=t?U.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):U.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return r.length>0?{isExist:!0,nextStartIndex:r[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=se.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=St.nextInitializedTickArrayStartIndex(U.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Gn.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Fe||t>Xe)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=W(R({},m),{perSecond:Z.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Kt(d)});if(p.tokenMint.equals(Kt.default))continue;if(n<=p.openTime.toNumber()||r.eq(xe)){s.push(p);continue}let y=new Te(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),b=Z.mulDivFloor(f,p.emissionsPerSecondX64,r),g=p.rewardGrowthGlobalX64.add(b),h=Z.mulDivFloor(f,p.emissionsPerSecondX64,$e),A=p.rewardTotalEmissioned.add(h);s.push(W(R({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:A,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=U.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=St.maxTickInTickarrayBitmap(e),n=-t;return t>Xe&&(t=se.getArrayStartIndex(Xe,e)+se.tickCount(e)),n<Fe&&(n=se.getArrayStartIndex(Fe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!se.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/se.tickCount(t)*Qt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await Ar(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=na.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let u of t){let c=U.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=U.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=de(u.programId,u.id,m);o.push({pubkey:d}),r[d.toString()]=u.id}}let s=await Ar(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=r[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=Un.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=W(R({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(et(p,d).publicKey);let l=await yt(t,c,{batchRequest:r}),m={};for(let d of l){if(d===null)continue;let p=Gr.decode(d.data),y=p.poolId.toString(),f=e.find(I=>I.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=U._getTickPriceLegacy({poolInfo:b,tick:p.tickLower,baseIn:!0}),h=U._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:A,amountB:k}=ae.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),P=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(I=>W(R({},I),{pendingReward:new Te(0)})),leverage:P,tokenFeeAmountA:new Te(0),tokenFeeAmountB:new Te(0)}];let x=await U.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),B=await U.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=x,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=B}if(o){let d=Object.values(m),p=await yt(t,d,{batchRequest:r}),y={};for(let f=0;f<d.length;f++){let b=p[f];if(b===null)continue;let g=d[f].toString();y[g]=Un.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let g of b){let h=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,k=y[m[h].toString()],P=y[m[A].toString()],x=k.ticks[U.getTickOffsetInArray(g.tickLower,f.tickSpacing)],B=P.ticks[U.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:I,tokenFeeAmountB:S}=await Xn.GetPositionFees(f,g,x,B),N=await Xn.GetPositionRewards(f,g,x,B);g.tokenFeeAmountA=I.gte(new Te(0))?I:new Te(0),g.tokenFeeAmountB=S.gte(new Te(0))?S:new Te(0);for(let V=0;V<N.length;V++)g.rewardInfos[V].pendingReward=N[V].gte(new Te(0))?N[V]:new Te(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new M(0)}){var N;let u,c=n.toBase58()===e.mintA.address,[l,m]=c?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new M(0))?u=c?Dt.add(new Te(1)):Wt.sub(new Te(1)):u=J.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=ye(o,l,r,!1),{expectedAmountOut:p,remainingAccounts:y,executionPrice:f,feeAmount:b}=ve.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((N=d.fee)!=null?N:xe),u),g=ye(p,m,r,!1),h=J.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?h:new M(1).div(h),k=p.mul(new Te(Math.floor((1-s)*1e10))).div(new Te(1e10)),P=ye(k,m,r,!1),x=c?e.currentPrice:new M(1).div(e.currentPrice),B=new M(A).sub(x).abs(),I=x,S=new Qe(new M(B).mul(10**15).toFixed(0),new M(I).mul(10**15).toFixed(0));return{realAmountIn:d,amountOut:g,minAmountOut:P,expirationTime:Xt(d.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:S,fee:b,remainingAccounts:y}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s}){let a=r.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new he(W(R({},u),{mint:u.address,isToken2022:u.programId===ta.toBase58()})),new he(W(R({},c),{mint:c.address,isToken2022:c.programId===ta.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:h,fee:A,remainingAccounts:k}=await ve.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Kt(u.address),amountIn:n,slippage:o,epochInfo:s}),P=W(R({},d),{amount:new ke(l,d.amount),fee:d.fee===void 0?void 0:new ke(l,d.fee)}),x=W(R({},p),{amount:new ke(m,p.amount),fee:p.fee===void 0?void 0:new ke(m,p.fee)}),B=W(R({},y),{amount:new ke(m,y.amount),fee:y.fee===void 0?void 0:new ke(m,y.fee)}),I=new Je({baseToken:l,denominator:new Te(10).pow(new Te(20+l.decimals)),quoteToken:m,numerator:b.mul(new M(10**(20+m.decimals))).toFixed(0)}),S=new Je({baseToken:l,denominator:new Te(10).pow(new Te(20+l.decimals)),quoteToken:m,numerator:g.mul(new M(10**(20+m.decimals))).toFixed(0)}),N=new ke(l,A);return{realAmountIn:P,amountOut:x,minAmountOut:B,expirationTime:f,currentPrice:I,executionPrice:S,priceImpact:h,fee:N,remainingAccounts:k}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var y,f,b;let o=e[t],s=U.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=U.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,d=o.priceMax-o.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:o.feeApr*p,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*p,(f=o.rewardApr[1])!=null?f:0*p,(b=o.rewardApr[2])!=null?b:0*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=r[on(e.mintA.address).toString()],d=r[on(e.mintB.address).toString()],p=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=J.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),b=J.getSqrtPriceX64FromTick(s),g=J.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:A}=ae.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:k,amountSlippageB:P}=ae.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),x=new M(h.toString()).div(new M(10).pow(p)).mul(m.value).add(new M(A.toString()).div(new M(10).pow(y)).mul(d.value)),B=new M(k.toString()).div(new M(10).pow(p)).mul(m.value).add(new M(P.toString()).div(new M(10).pow(y)).mul(d.value)),I=B.div(x.add(B)).div(B),N=new M(l.volumeFee).mul(365).div(c).mul(I).mul(100).toNumber(),V=3600*24*365,Q=e.rewardDefaultInfos.map(v=>{var re,rt;let j=v.mint.decimals,ee=r[v.mint.address];return u<((re=v.startTime)!=null?re:0)||u>((rt=v.endTime)!=null?rt:0)||!v.perSecond||!ee||j===void 0?0:new M(ee.value).mul(new M(v.perSecond).mul(V)).div(new M(10).pow(j)).mul(I).mul(100).toNumber()});return{feeApr:N,rewardsApr:Q,apr:N+Q.reduce((v,j)=>v+j,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,h;let l=J.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),m=J.getSqrtPriceX64FromTick(n),d=J.getSqrtPriceX64FromTick(r),p=a?1-s:1+s,y=ye(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Te(new M(y.amount.sub((h=y.fee)!=null?h:xe).toString()).mul(p).toFixed(0)),b;if(l.lte(m))b=t?ae.getLiquidityFromTokenAmountA(m,d,f,!a):new Te(0);else if(l.lte(d)){let A=ae.getLiquidityFromTokenAmountA(l,d,f,!a),k=ae.getLiquidityFromTokenAmountB(m,l,f);b=t?A:k}else b=t?new Te(0):ae.getLiquidityFromTokenAmountB(m,d,f);return ve.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:r,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var b,g,h,A;let u=J.getSqrtPriceX64FromTick(n),c=J.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=ae.getAmountsFromLiquidity(J.priceToSqrtPriceX64(new M(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[ye(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),ye(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[ye(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),ye(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Xt(d.expirationTime,p.expirationTime)}}static async fetchComputeClmmInfo({connection:e,poolInfo:t}){let n=await e.getAccountInfo(new Kt(t.id));if(!n)throw new Error(`pool not found ${t.id}`);let r=Ur.decode(n.data),o=At(new Kt(t.programId),new Kt(t.id)).publicKey,s=await ve.fetchExBitmaps({connection:e,exBitmapAddress:[o],batchRequest:!1});return W(R({},r),{id:new Kt(t.id),programId:new Kt(t.programId),mintA:t.mintA,mintB:t.mintB,ammConfig:W(R({},t.config),{id:new Kt(t.config.id),fundOwner:""}),currentPrice:new M(t.price),exBitmapInfo:s[o.toBase58()],startTime:r.startTime.toNumber()})}};var Z=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(xe)||(o=o.add(Pt)),o}static mulDivFloor(e,t,n){if(n.eq(xe))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(xe))throw new Error("division by 0");return e.mul(t).add(n.sub(Pt)).div(n)}static x64ToDecimal(e,t){return new M(e.toString()).div(M.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ne(e.mul(M.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Wr).sub(t).mod(Wr)}};function Ce(i,e){return to(i.mul(e),64,256)}function Rl(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function to(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var J=class{static sqrtPriceX64ToPrice(e,t,n){return Z.x64ToDecimal(e).pow(2).mul(M.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return Z.decimalToX64(e.mul(M.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(xe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(xe))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,r){if(!e.gt(xe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(xe))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,r){if(n.eq(xe))return e;let o=t.shln(qn);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?Z.mulDivCeil(s,e,a):Z.mulDivRoundingUp(s,Pt,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return Z.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(qn);if(r)return e.add(o.div(t));{let s=Z.mulDivRoundingUp(o,Pt,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<Fe||e>Xe)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new ne("18445821805675395072"):new ne("18446744073709551616");return(t&2)!=0&&(n=Ce(n,new ne("18444899583751176192"))),(t&4)!=0&&(n=Ce(n,new ne("18443055278223355904"))),(t&8)!=0&&(n=Ce(n,new ne("18439367220385607680"))),(t&16)!=0&&(n=Ce(n,new ne("18431993317065453568"))),(t&32)!=0&&(n=Ce(n,new ne("18417254355718170624"))),(t&64)!=0&&(n=Ce(n,new ne("18387811781193609216"))),(t&128)!=0&&(n=Ce(n,new ne("18329067761203558400"))),(t&256)!=0&&(n=Ce(n,new ne("18212142134806163456"))),(t&512)!=0&&(n=Ce(n,new ne("17980523815641700352"))),(t&1024)!=0&&(n=Ce(n,new ne("17526086738831433728"))),(t&2048)!=0&&(n=Ce(n,new ne("16651378430235570176"))),(t&4096)!=0&&(n=Ce(n,new ne("15030750278694412288"))),(t&8192)!=0&&(n=Ce(n,new ne("12247334978884435968"))),(t&16384)!=0&&(n=Ce(n,new ne("8131365268886854656"))),(t&32768)!=0&&(n=Ce(n,new ne("3584323654725218816"))),(t&65536)!=0&&(n=Ce(n,new ne("696457651848324352"))),(t&131072)!=0&&(n=Ce(n,new ne("26294789957507116"))),(t&262144)!=0&&(n=Ce(n,new ne("37481735321082"))),e>0&&(n=js.div(n)),n}static getTickFromPrice(e,t,n){return J.getTickFromSqrtPriceX64(J.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Wt)||e.lt(Dt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ne(t-64),r=Rl(n,32,128),o=new ne("8000000000000000","hex"),s=0,a=new ne(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new ne(0))&&s<Qs;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(o.mul(y)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=r.add(c).mul(new ne(Zs)),d=to(m.sub(new ne($s)),64,128).toNumber(),p=to(m.add(new ne(Js)),64,128).toNumber();return d==p?d:J.getSqrtPriceX64FromTick(p).lte(e)?p:d}},$t=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=J.getTickFromSqrtPriceX64(J.priceToSqrtPriceX64(e,n,r))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,r){let o=$t.getTickWithPriceAndTickspacing(e,t,n,r),s=J.getSqrtPriceX64FromTick(o);return J.sqrtPriceX64ToPrice(s,n,r)}},ae=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(xe))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(qn),s=t.sub(e);return r?Z.mulDivRoundingUp(Z.mulDivCeil(o,s,t),Pt,e):Z.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(xe))throw new Error("sqrtPriceX64A must greater than 0");return r?Z.mulDivCeil(n,t.sub(e),$e):Z.mulDivFloor(n,t.sub(e),$e)}static getLiquidityFromTokenAmountA(e,t,n,r){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return r?Z.mulDivRoundingUp(a,Pt,Ji):a.shrn(qn)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),Z.mulDivFloor(n,Ji,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ae.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=ae.getLiquidityFromTokenAmountA(e,n,r,!1),a=ae.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ae.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ae.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new ne(0)};if(e.lt(n)){let s=ae.getTokenAmountAFromLiquidity(e,n,r,o),a=ae.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new ne(0),amountB:ae.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:u,amountB:c}=ae.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,m=new ne(new M(u.toString()).mul(l).toFixed(0)),d=new ne(new M(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var h,A,k,P;let c=J.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),l=J.getSqrtPriceX64FromTick(t),m=J.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=ae.getAmountsFromLiquidity(c,l,m,r,s),[y,f]=[ye(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),ye(p.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[b,g]=[ye(new ne(new M(p.amountA.toString()).mul(d).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,u),ye(new ne(new M(p.amountB.toString()).mul(d).toFixed(0)),(P=e.mintB.extensions)==null?void 0:P.feeConfig,a,u)];return{liquidity:r,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:Xt(y.expirationTime,f.expirationTime)}}},Zt=class{static swapCompute(e,t,n,r,o,s,a,u,c,l,m,d,p,y){if(d.eq(xe))throw new Error("amountSpecified must not be 0");if(y||(y=s?Dt.add(Pt):Wt.sub(Pt)),s){if(y.lt(Dt))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(y.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(y.gt(Wt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=d.gt(xe),b={amountSpecifiedRemaining:d,amountCalculated:xe,sqrtPriceX64:m,tick:c>p?Math.min(p+se.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new ne(0)},g=p,h=n[p],A=0,k=!s&&h.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(xe)&&!b.sqrtPriceX64.eq(y);){if(A>10)throw Error("liquidity limit");let P={};P.sqrtPriceStartX64=b.sqrtPriceX64;let x=U.nextInitTick(h,b.tick,l,s,k),B=x||null,I=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let N=ve.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},g,s);if(!N.isExist)throw Error("swapCompute LiquidityInsufficient");g=N.nextStartIndex;let{publicKey:V}=de(e,t,g);I=V,h=n[g],B=U.firstInitializedTick(h,s)}P.tickNext=B.tick,P.initialized=B.liquidityGross.gtn(0),p!==g&&I&&(b.accounts.push(I),p=g),P.tickNext<Fe?P.tickNext=Fe:P.tickNext>Xe&&(P.tickNext=Xe),P.sqrtPriceNextX64=J.getSqrtPriceX64FromTick(P.tickNext);let S;if(s&&P.sqrtPriceNextX64.lt(y)||!s&&P.sqrtPriceNextX64.gt(y)?S=y:S=P.sqrtPriceNextX64,[b.sqrtPriceX64,P.amountIn,P.amountOut,P.feeAmount]=Zt.swapStepCompute(b.sqrtPriceX64,S,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(P.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(P.amountIn.add(P.feeAmount)),b.amountCalculated=b.amountCalculated.sub(P.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(P.amountOut),b.amountCalculated=b.amountCalculated.add(P.amountIn.add(P.feeAmount))),b.sqrtPriceX64.eq(P.sqrtPriceNextX64)){if(P.initialized){let N=B.liquidityNet;s&&(N=N.mul(Bt)),b.liquidity=ae.addDelta(b.liquidity,N)}k=P.tickNext!=b.tick&&!s&&h.startTickIndex===P.tickNext,b.tick=s?P.tickNext-1:P.tickNext}else if(b.sqrtPriceX64!=P.sqrtPriceStartX64){let N=J.getTickFromSqrtPriceX64(b.sqrtPriceX64);k=N!=b.tick&&!s&&h.startTickIndex===N,b.tick=N}++A}try{let{nextStartIndex:P,isExist:x}=se.nextInitializedTickArray(b.tick,l,s,r,o);x&&p!==P&&(b.accounts.push(de(e,t,P).publicKey),p=P)}catch{}return{amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,r,o){let s={sqrtPriceX64Next:new ne(0),amountIn:new ne(0),amountOut:new ne(0),feeAmount:new ne(0)},a=e.gte(t),u=r.gte(xe);if(u){let l=Z.mulDivFloor(r,qr.sub(new ne(o.toString())),qr);s.amountIn=a?ae.getTokenAmountAFromLiquidity(t,e,n,!0):ae.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=J.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ae.getTokenAmountBFromLiquidity(t,e,n,!1):ae.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Bt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=J.getNextSqrtPriceX64FromOutput(e,n,r.mul(Bt),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ae.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ae.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ae.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ae.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(r.mul(Bt))&&(s.amountOut=r.mul(Bt)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=Z.mulDivCeil(s.amountIn,new ne(o),qr.sub(new ne(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var Ke=60,Qt=512,U=class{static getTickArrayAddressByTick(e,t,n,r){let o=U.getTickArrayStartIndexByTick(n,r),{publicKey:s}=de(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=U.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=Ke)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=se.tickCount(t),r=e/n;return e<0&&e%n!=0?r=Math.ceil(r)-1:r=Math.floor(r),r}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*se.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Ke,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*Ke,o=Math.floor(t/r)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*r}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Ke:e+t*Ke}static mergeTickArrayBitmap(e){let t=new Ll(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,r,o){let s=Math.floor(r/(n*Ke));return[...U.searchLowBitFromStart(e,t,s-1,o,n),...U.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return U.searchHightBitFromStart(e,t,0,Qt,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=U.getAllInitializedTickArrayStartIndex(n,r,o);for(let u of a){let{publicKey:c}=de(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>U.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===r)break}let u=se.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>U.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===r)break}let u=se.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Fe||e>Xe}static nextInitTick(e,t,n,r,o){if(se.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(r)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<Ke;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Ke-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Ke;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let r=J.getSqrtPriceX64FromTick(t),o=J.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new M(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new M(1).div(t),o=$t.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=J.getSqrtPriceX64FromTick(o),a=J.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new M(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=J.getSqrtPriceX64FromTick(t),o=J.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new M(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new M(1).div(t),o=$t.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=J.getSqrtPriceX64FromTick(o),a=J.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new M(1).div(a)}}};var xh=_([be(8),F("bump"),bt("index"),K(""),Ge("protocolFeeRate"),Ge("tradeFeeRate"),bt("tickSpacing"),q(w(),8,"")]),Ol=_([Ge("blockTimestamp"),z("sqrtPriceX64"),z("cumulativeTimePriceX64"),q(z(),1,"")]),no=_([be(8),Ee("initialized"),K("poolId"),q(Ol,1e3,"observations"),q(z(),5,"")]),Nl=_([F("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),z("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),K("tokenMint"),K("tokenVault"),K("creator"),z("rewardGrowthGlobalX64")]),Ur=_([be(8),F("bump"),K("ammConfig"),K("creator"),K("mintA"),K("mintB"),K("vaultA"),K("vaultB"),K("observationId"),F("mintDecimalsA"),F("mintDecimalsB"),bt("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),Ne("tickCurrent"),bt("observationIndex"),bt("observationUpdateDuration"),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),F("status"),q(F(),7,""),q(Nl,3,"rewardInfos"),q(w(),16,"tickArrayBitmap"),w("totalFeesTokenA"),w("totalFeesClaimedTokenA"),w("totalFeesTokenB"),w("totalFeesClaimedTokenB"),w("fundFeesTokenA"),w("fundFeesTokenB"),w("startTime"),q(w(),15*4-3,"padding")]),Ml=_([z("growthInsideLastX64"),w("rewardAmountOwed")]),Gr=_([be(8),F("bump"),K("nftMint"),K("poolId"),Ne("tickLower"),Ne("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(Ml,3,"rewardInfos"),q(w(),8,"")]),Bh=_([be(8),F("bump"),K("poolId"),Ne("tickLowerIndex"),Ne("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(z(),3,"rewardGrowthInside"),q(w(),8,"")]),_l=_([Ne("tick"),as("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),q(z(),3,"rewardGrowthsOutsideX64"),q(Ge(),13,"")]),Un=_([be(8),K("poolId"),Ne("startTickIndex"),q(_l,Ke,"ticks"),F("initializedTickCount"),q(F(),115,"")]),ra=_([be(329),q(K(),100,"whitelistMints")]),na=_([be(8),K("poolId"),q(q(w(),8),eo,"positiveTickArrayBitmap"),q(q(w(),8),eo,"negativeTickArrayBitmap")]);var sa=oe("Raydium_Clmm"),pt={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},Ie=class{static createPoolInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y){let f=_([z("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:dn.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([...pt.createPool,...g]);return new dt({keys:b,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Ve({fromPublicKey:r,programId:n}),[d,p]=[new D(o.address),new D(s.address)],y=[dn.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(no.span),space:no.span,programId:n})],{publicKey:f}=Ys(n,a,d,p),{publicKey:b}=$i(n,f,d),{publicKey:g}=$i(n,f,p);return y.push(this.createPoolInstruction(n,f,r,a,m.publicKey,d,b,new D(o.programId||Me),p,g,new D(s.programId||Me),At(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[E.CreateAccount,E.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:b,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A,k,P,x,B,I,S,N){let V=_([Ne("tickLowerIndex"),Ne("tickUpperIndex"),Ne("tickArrayLowerStartIndex"),Ne("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ee("withMetadata"),F("optionBaseFlag"),Ee("baseFlag")]),Q=[...N?[{pubkey:N,isSigner:!1,isWritable:!0}]:[]],v=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,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:dn.programId,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:ia,isSigner:!1,isWritable:!1},{pubkey:rn,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Q],j=Buffer.alloc(V.span);V.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:P,liquidity:x,amountMaxA:B,amountMaxB:I,withMetadata:S==="create",baseFlag:!1,optionBaseFlag:0},j);let ee=Buffer.from([...pt.openPosition,...j]);return new dt({keys:v,programId:e,data:ee})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new D(e.programId),new D(e.id)],y;if(l)y=new D((await l(1))[0]);else{let I=ro.generate();m.push(I),y=I.publicKey}let f=U.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=de(d,p,f),{publicKey:h}=de(d,p,b),{publicKey:A}=we(n.wallet,y,Me),{publicKey:k}=Dr(y),{publicKey:P}=et(d,y),{publicKey:x}=jt(d,p,r,o),B=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,A,k,x,g,h,P,n.tokenAccountA,n.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),r,o,f,b,s,a,u,c);return{signers:m,instructions:[B],instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:k,personalPosition:P,protocolPosition:x}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new D(e.programId),new D(e.id)],y;if(l)y=new D((await l(1))[0]);else{let I=ro.generate();m.push(I),y=I.publicKey}let f=U.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=de(d,p,f),{publicKey:h}=de(d,p,b),{publicKey:A}=we(n.wallet,y,Me),{publicKey:k}=Dr(y),{publicKey:P}=et(d,y),{publicKey:x}=jt(d,p,r,o),B=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,A,k,x,g,h,P,n.tokenAccountA,n.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),r,o,f,b,c,s,a,u,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?At(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:k,personalPosition:P,protocolPosition:x},instructions:[B],signers:m,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A,k,P,x,B,I,S,N){let V=_([Ne("tickLowerIndex"),Ne("tickUpperIndex"),Ne("tickArrayLowerStartIndex"),Ne("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ee("withMetadata"),F("optionBaseFlag"),Ee("baseFlag")]),Q=[...N?[{pubkey:N,isSigner:!1,isWritable:!0}]:[]],v=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,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:dn.programId,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:ia,isSigner:!1,isWritable:!1},{pubkey:rn,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Q],j=Buffer.alloc(V.span);V.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:P,liquidity:new oa(0),amountMaxA:B==="MintA"?I:S,amountMaxB:B==="MintA"?S:I,withMetadata:x==="create",baseFlag:B==="MintA",optionBaseFlag:1},j);let ee=Buffer.from([...pt.openPosition,...j]);return new dt({keys:v,programId:e,data:ee})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new D((await l(1))[0]);else{let I=ro.generate();d.push(I),m=I.publicKey}let[p,y]=[new D(e.programId),new D(e.id)],f=U.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=de(p,y,f),{publicKey:h}=de(p,y,b),{publicKey:A}=we(n.wallet,m,Me),{publicKey:k}=Dr(m),{publicKey:P}=et(p,m),{publicKey:x}=jt(p,y,r,o),B=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,A,k,x,g,h,P,n.tokenAccountA,n.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(t.mintA.address),new D(t.mintB.address),r,o,f,b,s,a,u,c,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?At(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:k,personalPosition:P,protocolPosition:x},instructions:[B],signers:d,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=_([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:dn.programId,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...pt.closePosition,...u]);return new dt({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new D(e.programId),{publicKey:s}=we(n.wallet,r.nftMint,Me),{publicKey:a}=et(o,r.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[E.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h){let A=_([z("liquidity"),w("amountMaxA"),w("amountMaxB"),F("optionBaseFlag"),Ee("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],x=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},x);let B=Buffer.from([...pt.increaseLiquidity,...x]);return new dt({keys:P,programId:e,data:B})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new D(e.programId),new D(e.id)],l=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=de(u,c,l),{publicKey:p}=de(u,c,m),{publicKey:y}=we(r.wallet,n.nftMint,Me),{publicKey:f}=et(u,n.nftMint),{publicKey:b}=jt(u,c,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(u,r.wallet,y,f,c,b,d,p,r.tokenAccountA,r.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),o,s,a,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?At(u,c).publicKey:void 0);return{address:{tickArrayLower:d,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:r,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new D(e.programId),new D(e.id)],l=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=de(u,c,l),{publicKey:p}=de(u,c,m),{publicKey:y}=we(r.wallet,n.nftMint,Me),{publicKey:f}=et(u,n.nftMint),{publicKey:b}=jt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,r.wallet,y,f,c,b,d,p,r.tokenAccountA,r.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),o,s,a,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?At(u,c).publicKey:void 0)],signers:[],instructionTypes:[E.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h){let A=_([z("liquidity"),w("amountMaxA"),w("amountMaxB"),F("optionBaseFlag"),Ee("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],x=Buffer.alloc(A.span);A.encode({liquidity:new oa(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},x);let B=Buffer.from([...pt.increaseLiquidity,...x]);return new dt({keys:P,programId:e,data:B})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A){let k=_([z("liquidity"),w("amountMinA"),w("amountMinB")]),P=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(S=>[{pubkey:S.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.rewardMint,isSigner:!1,isWritable:!1}]).flat()],x=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:dr,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...P],B=Buffer.alloc(k.span);k.encode({liquidity:b,amountMinA:g,amountMinB:h},B);let I=Buffer.from([...pt.decreaseLiquidity,...B]);return new dt({keys:x,programId:e,data:I})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new D(e.programId),new D(e.id)],m=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=de(c,l,m),{publicKey:y}=de(c,l,d),{publicKey:f}=we(r.wallet,n.nftMint,u),{publicKey:b}=et(c,n.nftMint),{publicKey:g}=jt(c,l,n.tickLower,n.tickUpper),h=[];for(let k=0;k<e.rewardDefaultInfos.length;k++)h.push({poolRewardVault:new D(t.rewardInfos[k].vault),ownerRewardVault:r.rewardAccounts[k],rewardMint:new D(e.rewardDefaultInfos[k].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,r.wallet,f,b,l,g,p,y,r.tokenAccountA,r.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),h,o,s,a,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?At(c,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,r,o,s,a,u,c,l,m,d,p,y,f,b,g){let h=_([w("amount"),w("otherAmountThreshold"),z("sqrtPriceLimitX64"),Ee("isBaseInput")]),A=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(B=>({pubkey:B,isSigner:!1,isWritable:!0}))],k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:dr,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],P=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},P);let x=Buffer.from([...pt.swap,...P]);return new dt({keys:k,programId:e,data:x})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new D(e.programId),new D(e.id)],[d,p]=[new D(t.vault.A),new D(t.vault.B)],[y,f]=[new D(e.mintA.address),new D(e.mintB.address)],b=e.mintA.address===o.toString(),g=[this.swapInstruction(l,r.wallet,m,new D(e.config.id),b?r.tokenAccountA:r.tokenAccountB,b?r.tokenAccountB:r.tokenAccountA,b?d:p,b?p:d,b?y:f,b?f:y,c,n,s,a,u,!0,At(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[E.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,d){let p=_([w("openTime"),w("endTime"),z("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:dn.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:Y(l),endTime:Y(m),emissionsPerSecondX64:d},f);let b=Buffer.from([...pt.initReward,...f]);return new dt({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new D(e.programId),new D(e.id)],a=Hs(o,s,r.mint).publicKey,u=Wn(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new D(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[E.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,d){let p=_([F("rewardIndex"),z("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:Y(l),endTime:Y(m)},f);let b=Buffer.from([...pt.setRewardEmissions,...f]);return new dt({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new D(e.programId),new D(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===r.mint.toString()&&(a=d,u=new D(t.rewardInfos[d].vault),c=new D(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&sa.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Wn(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new D(e.config.id),n.tokenAccount,u,c,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[E.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let u=_([F("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:dr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...pt.collectReward,...l]);return new dt({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new D(e.programId),new D(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,u=new D(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&sa.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,r,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[E.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new D(e.programId),new D(e.id)],[m,d]=[new D(t.vault.A),new D(t.vault.B)],[p,y]=[new D(e.mintA.address),new D(e.mintB.address)],f=e.mintA.address===r.toString(),b=[this.swapInstruction(c,n.wallet,l,new D(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:y,f?y:p,u,m,o,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[E.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as Fl}from"@solana/web3.js";import{PublicKey as El}from"@solana/web3.js";import aa from"bn.js";var ua=new aa(25),ca=new aa(1e4);var Vl=oe("Raydium_liquidity_serum");function la({programId:i,marketId:e}){let t=[e.toBuffer()],n=0,r;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));r=El.createProgramAddressSync(o,i)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:r,nonce:n}}throw Vl.logWithError("unable to find a viable program address nonce","params",{programId:i,marketId:e}),new Error("unable to find a viable program address nonce")}import sP from"bn.js";function io({programId:i}){let{publicKey:e}=ue([Buffer.from("amm_config_account_seed","utf-8")],i);return e}function Jt({name:i,programId:e,marketId:t}){let{publicKey:n}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(i,"utf-8")],e);return n}function vl({programId:i,marketId:e}){let{publicKey:t}=ue([i.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],i);return t}function Dl({programId:i}){return ue([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],i)}function ma({version:i,marketVersion:e,marketId:t,baseMint:n,quoteMint:r,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=Jt({name:"amm_associated_seed",programId:a,marketId:t}),l=Jt({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=Dl({programId:a}),p=Jt({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=Jt({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=Jt({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=vl({programId:a,marketId:t}),g=Jt({name:"target_associated_seed",programId:a,marketId:t}),h=Jt({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=la({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:r,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:i,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:h,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:Fl.default,configId:io({programId:a})}}import je from"bn.js";var zn=class extends Pe{constructor(t){super(t);this.stableLayout=new vn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:r,baseIn:o}){let s=new je(new M(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=Ls(t[o?"mintB":"mintA"]),[u,c]=[new je(new M(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new je(new M(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new je(new M(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,M.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${r.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=o?"base":"quote";this.logDebug("input side:",m);let d=qe;s.isZero()||(d=m==="base"?br(s.mul(c),u):br(s.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=br(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new Qe(new je(1)).add(r).mul(d).quotient,b=new ke(a,d),g=new ke(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:r,amountInB:o,fixedSide:s,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",r,"amountInB:",o),(r.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:r.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,y]=[r.token,o.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 De(n.lpMint.address)}),h=[p,y],A=[f,b],k=[r.raw,o.raw],P=r.token.mint.toBase58()===n.mintA.address?"base":"quote",x="base";["quote","base"].includes(P)||this.logAndCreateError("invalid fixedSide","fixedSide",s),P==="quote"?(h.reverse(),A.reverse(),k.reverse(),x=s==="a"?"quote":"base"):P==="base"&&(x=s==="a"?"base":"quote");let[B,I]=h,[S,N]=A,[V,Q]=k,v=await this.getAmmPoolKeys(n.id),j=this.createTxBuilder(),Ct=await l.handleTokenAccount({side:"in",amount:V,mint:B.mint,tokenAccount:S,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:ee}=Ct,re=Ae(Ct,["tokenAccount"]);j.addInstruction(re);let rr=await l.handleTokenAccount({side:"in",amount:Q,mint:I.mint,tokenAccount:N,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:rt}=rr,yn=Ae(rr,["tokenAccount"]);j.addInstruction(yn);let bn=await l.handleTokenAccount({side:"out",amount:0,mint:new De(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:Qr}=bn,Zr=Ae(bn,["tokenAccount"]);return j.addInstruction(Zr),j.addInstruction({instructions:[Ws({poolInfo:n,poolKeys:v,userKeys:{baseTokenAccount:ee,quoteTokenAccount:rt,lpTokenAccount:Qr,owner:this.scope.ownerPubKey},baseAmountIn:V,quoteAmountIn:Q,fixedSide:x})],instructionTypes:[n.pooltype.includes("StablePool")?E.AmmV5AddLiquidity:E.AmmV4AddLiquidity],lookupTableAddress:v.lookupTableAccount?[v.lookupTableAccount]:[]}),j.addCustomComputeBudget(c),u===0&&await j.buildV0(),j.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:r,config:o,txVersion:s,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new De(n.mintA.address),new De(n.mintB.address),new De(n.lpMint.address)];this.logDebug("amountIn:",r),r.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",r.toString());let{account:d}=this.scope,p=await d.getCreatedTokenAccount({mint:m,associatedOnly:!1});p||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",d.tokenAccounts);let y=await d.getCreatedTokenAccount({mint:c}),f=await d.getCreatedTokenAccount({mint:l}),b=this.createTxBuilder(),{bypassAssociatedCheck:g,checkCreateATAOwner:h}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),B=await d.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:h}),{tokenAccount:A}=B,k=Ae(B,["tokenAccount"]);b.addInstruction(k);let I=await d.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:h}),{tokenAccount:P}=I,x=Ae(I,["tokenAccount"]);return b.addInstruction(x),b.addInstruction({instructions:[ji({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:p,baseTokenAccount:A,quoteTokenAccount:P,owner:this.scope.ownerPubKey},amountIn:r})],lookupTableAddress:u.lookupTableAccount?[u.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:r,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,tokenProgram:m=Xr,checkCreateATAOwner:d=!0,getEphemeralSigners:p,txVersion:y}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let f=this.createTxBuilder();f.addCustomComputeBudget(c);let b={};for(let ee of this.scope.account.tokenAccountRawInfos)(b[ee.accountInfo.mint.toString()]===void 0||we(this.scope.ownerPubKey,ee.accountInfo.mint,Xr).publicKey.equals(ee.pubkey))&&(b[ee.accountInfo.mint.toString()]=ee.pubkey);let g=b[t.lpMint.address];if(g===void 0)throw Error("find lp account error in trade accounts");let h=r.add(a!=null?a:new je(0)),A=t.mintA.address===he.WSOL.mint.toString(),k=t.mintB.address===he.WSOL.mint.toString(),{account:P,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Xr,mint:new De(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(x||{}),P===void 0)throw new Error("base token account not found");let{account:B,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Xr,mint:new De(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(I||{}),B===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=P,b[t.mintB.address]=B,s!==void 0&&!(a!=null&&a.isZero())){let ee=[];for(let Ct of s.rewardInfos){let rr=Ct.mint.address===he.WSOL.mint.toString();if(b[Ct.mint.address])ee.push(b[Ct.mint.address]);else{let{account:bn,instructionParams:mo}=await this.scope.account.getOrCreateTokenAccount({mint:new De(Ct.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!rr,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:d});bn||this.logAndCreateError("farm reward account not found:",Ct.mint.address),mo&&f.addInstruction(mo),ee.push(bn)}}let re=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],rt={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:re,lpAccount:g,rewardAccounts:ee},yn=lt[s.programId],Qr=yn===6?_n(rt):yn===5?En(rt):Vn(rt),Zr={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};f.addInstruction({instructions:[Qr],instructionTypes:[Zr[yn]]})}let S=await this.getAmmPoolKeys(t.id),N=ji({poolInfo:t,poolKeys:S,userKeys:{lpTokenAccount:g,baseTokenAccount:P,quoteTokenAccount:B,owner:this.scope.ownerPubKey},amountIn:h});f.addInstruction({instructions:[N],instructionTypes:[t.pooltype.includes("StablePool")?E.AmmV5RemoveLiquidity:E.AmmV4RemoveLiquidity],lookupTableAddress:S.lookupTableAccount?[S.lookupTableAccount]:[]});let[V,Q]=t.mintA.address===n.mintA.address?[P,B]:[B,P],v=await this.scope.clmm.getClmmPoolKeys(t.id),j=await Ie.openPositionFromBaseInstructions(W(R({poolInfo:n,poolKeys:v,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:V,tokenAccountB:Q},withMetadata:"create"},o),{base:u,getEphemeralSigners:p}));return f.addInstruction({instructions:[...j.instructions],signers:j.signers,instructionTypes:[...j.instructionTypes],lookupTableAddress:v.lookupTableAccount?[v.lookupTableAccount]:[]}),y===0?f.sizeCheckBuildV0():f.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:r,quoteMintInfo:o,baseAmount:s,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:y,computeBudgetConfig:f}){var Q;let b=c.feePayer||((Q=this.scope.owner)==null?void 0:Q.publicKey),g=c.useSOLBalance&&r.mint.equals(da),h=c.useSOLBalance&&o.mint.equals(da),A=this.createTxBuilder(),{account:k,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({mint:r.mint,owner:this.scope.ownerPubKey,createInfo:g?{payer:b,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:l,checkCreateATAOwner:m});A.addInstruction(P||{});let{account:x,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:h?{payer:b,amount:a}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:l,checkCreateATAOwner:m});if(A.addInstruction(B||{}),k===void 0||x===void 0)throw Error("you don't has some token account");let I=ma({version:4,marketVersion:3,marketId:n.marketId,baseMint:r.mint,quoteMint:o.mint,baseDecimals:r.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),S={programId:t,ammId:I.id,ammAuthority:I.authority,ammOpenOrders:I.openOrders,lpMint:I.lpMint,coinMint:I.baseMint,pcMint:I.quoteMint,coinVault:I.baseVault,pcVault:I.quoteVault,withdrawQueue:I.withdrawQueue,ammTargetOrders:I.targetOrders,poolTempLp:I.lpVault,marketProgramId:I.marketProgramId,marketId:I.marketId,ammConfigId:I.configId,feeDestinationId:y},{instruction:N,instructionType:V}=qs(W(R({},S),{userWallet:this.scope.ownerPubKey,userCoinVault:k,userPcVault:x,userLpVault:we(this.scope.ownerPubKey,I.lpMint,d).publicKey,nonce:I.nonce,openTime:u,coinAmount:s,pcAmount:a}));return A.addInstruction({instructions:[N],instructionTypes:[V]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:p,extInfo:{address:S}})}async getCreatePoolFee({programId:t}){let n=io({programId:t}),r=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(r===null)throw Error("get config account error");return Ns.decode(r.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:r,mintOut:o,slippage:s}){if(r!==t.mintA.address&&r!==t.mintB.address)throw new Error("toke not match");if(o!==t.mintA.address&&o!==t.mintB.address)throw new Error("toke not match");let{baseReserve:a,quoteReserve:u}=t,c=[a,u],l=r==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,d]=c,p=t.programId===Zo.toBase58(),y;if(p)y=new M(d.toString()).div(m.toString());else{let I=Fs(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new M(1e6).div(I*1e6):y=new M(I*1e6).div(1e6)}let f=n,b=new je(0),g=new je(0);if(!f.isZero())if(p){g=Ln(f.mul(ua),ca);let I=f.sub(g),S=m.add(I);b=d.mul(I).div(S)}else{g=f.mul(new je(2)).div(new je(1e4));let I=f.sub(g);l==="quote"?b=new je(Es(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),I.toNumber())):b=new je(Vs(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),I.toNumber()))}let h=new je(new M(b.toString()).mul(1-s).toFixed(0)),A=b,k=h,P=new M(b.toString()).div(new M(f.sub(g).toString()).toFixed(0));!f.isZero()&&!b.isZero()&&(P=new M(b.toString()).div(f.sub(g).toString()));let x=y.sub(P).div(y).mul(100);return{amountOut:A,minAmountOut:k,currentPrice:y,executionPrice:P,priceImpact:x,fee:g}}async swap({poolInfo:t,amountIn:n,amountOut:r,inputMint:o,fixedSide:s,txVersion:a,computeBudgetConfig:u}){let c=this.createTxBuilder(),[l,m]=o===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],d=await this.scope.account.getCreatedTokenAccount({mint:new De(l.address),programId:new De(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new De(m.address),programId:new De(m.programId),associatedOnly:!1}),k=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new De(l.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=k,f=Ae(k,["tokenAccount"]);c.addInstruction(f);let P=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new De(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=P,g=Ae(P,["tokenAccount"]);c.addInstruction(g);let h=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[Us({version:A,poolKeys:h,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:r,fixedSide:s})],instructionTypes:[A===4?E.AmmV4SwapBaseIn:E.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t){let n=await this.scope.connection.getMultipleAccountsInfo(t.map(c=>new De(c))),r={},o=[];for(let c=0;c<t.length;c++){let l=n[c];if(l===null)throw Error("fetch pool info error: "+String(t[c]));let m=Os.decode(l.data);r[String(t[c])]=m,o.push(m.baseVault,m.quoteVault)}let s={},a=await this.scope.connection.getMultipleAccountsInfo(o.map(c=>new De(c)));for(let c=0;c<o.length;c++){let l=a[c];if(l===null)throw Error("fetch vault info error: "+o[c]);s[String(o[c])]=new je(Wl.decode(l.data).amount.toString())}let u={};for(let[c,l]of Object.entries(r)){let m=s[l.baseVault.toString()].sub(l.baseNeedTakePnl),d=s[l.quoteVault.toString()].sub(l.quoteNeedTakePnl);u[c]=W(R({},l),{baseReserve:m,quoteReserve:d,poolPrice:new M(d.toString()).div(new M(10).pow(l.baseDecimal.toString())).div(new M(m.toString()).div(new M(10).pow(l.quoteDecimal.toString())))})}return u}};import{PublicKey as ie}from"@solana/web3.js";import tt from"bn.js";var Yn=class extends Pe{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var h;let{programId:t,owner:n=((h=this.scope.owner)==null?void 0:h.publicKey)||ie.default,mint1:r,mint2:o,ammConfig:s,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,y,f]=new tt(new ie(r.address).toBuffer()).gt(new tt(new ie(o.address).toBuffer()))?[o,r,new M(1).div(a)]:[r,o,a],b=J.priceToSqrtPriceX64(f,p.decimals,y.decimals),g=await Ie.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:y,ammConfigId:s.id,initialPriceX64:b,startTime:u,forerunCreate:l});return d.addInstruction(g),d.addCustomComputeBudget(c),d.versionBuild({txVersion:m,extInfo:{address:W(R({},g.address),{programId:t.toString(),id:g.address.poolId.toString(),mintA:p,mintB:y,openTime:u.toString(),vault:{A:g.address.mintAVault.toString(),B:g.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:R({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:g.address.poolId.toString(),mintA:p,mintB:y,feeRate:s.tradeFeeRate,openTime:u.toString(),programId:t.toString(),price:f.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}},ea),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:d,computeBudgetConfig:p,txVersion:y}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),b=null,g=null,h=n.useSOLBalance&&e.mintA.address===te.toString(),A=n.useSOLBalance&&e.mintB.address===te.toString(),[k,P]=s==="MintA"?[a,u]:[u,a],{account:x,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||k.isZero()?{payer:this.scope.ownerPubKey,amount:k}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:c,checkCreateATAOwner:l});x&&(b=x),f.addInstruction(B||{});let{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||P.isZero()?{payer:this.scope.ownerPubKey,amount:P}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});I&&(g=I),f.addInstruction(S||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let N=t||await this.getClmmPoolKeys(e.id),V=await Ie.openPositionFromBaseInstructions({poolInfo:e,poolKeys:N,ownerInfo:W(R({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(V),f.addCustomComputeBudget(p),f.versionBuild({txVersion:y,extInfo:V.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:r,amountMaxB:o,tickLower:s,tickUpper:a,liquidity:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:d,getEphemeralSigners:p}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let y=this.createTxBuilder(),f=null,b=null,g=n.useSOLBalance&&e.mintA.address===te.toBase58(),h=n.useSOLBalance&&e.mintB.address===te.toBase58(),{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g||r.isZero()?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:c,checkCreateATAOwner:l});A&&(f=A),y.addInstruction(k||{});let{account:P,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:c,checkCreateATAOwner:l});P&&(b=P),y.addInstruction(x||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let B=t||await this.getClmmPoolKeys(e.id),I=await Ie.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:B,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:u,amountMaxA:r,amountMaxB:o,withMetadata:m,getEphemeralSigners:p});return y.addInstruction(I),y.versionBuild({txVersion:d,extInfo:{address:I.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:r,amountMaxB:o,liquidity:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||r.isZero()?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(h||{});let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(k||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let P=await this.getClmmPoolKeys(t.id),x=Ie.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:P,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},liquidity:s,amountMaxA:r,amountMaxB:o});return d.addInstruction(x),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:x.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:r,baseAmount:o,otherAmountMax:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||(r==="MintA"?o:s).isZero()?{payer:this.scope.ownerPubKey,amount:r==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(h||{});let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b||(r==="MintA"?s:o).isZero()?{payer:this.scope.ownerPubKey,amount:r==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(k||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let P=await this.getClmmPoolKeys(t.id),x=Ie.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:P,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:r,baseAmount:o,otherAmountMax:s});return d.addInstruction(x),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:x.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:r,amountMinA:o,amountMinB:s,liquidity:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let d=this.createTxBuilder(),p=r.useSOLBalance&&t.mintA.address===te.toString(),y=r.useSOLBalance&&t.mintB.address===te.toString(),f,b,{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!p,associatedOnly:p?!1:u,checkCreateATAOwner:c});f=g,h&&d.addInstruction(h);let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(t.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:c});b=A,k&&d.addInstruction(k);let P=[];for(let S of t.rewardDefaultInfos){let N=r.useSOLBalance&&S.mint.address===te.toString(),V;if(S.mint.address===t.mintA.address)V=f;else if(S.mint.address===t.mintB.address)V=b;else{let{account:Q,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(S.mint.programId),mint:new ie(S.mint.address),notUseTokenAccount:N,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!N,associatedOnly:N?!1:u,checkCreateATAOwner:c});V=Q,v&&d.addInstruction(v)}P.push(V)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let x=await this.getClmmPoolKeys(t.id),B=await Ie.decreaseLiquidityInstructions({poolInfo:t,poolKeys:x,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:P},liquidity:a,amountMinA:o,amountMinB:s});d.addInstruction({instructions:B.instructions,instructionTypes:[E.ClmmDecreasePosition]});let I=R({},B.address);if(r.closePosition){let S=await Ie.closePositionInstructions({poolInfo:t,poolKeys:x,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});d.addInstruction({endInstructions:S.instructions,endInstructionTypes:S.instructionTypes}),I=R(R({},I),S.address)}return d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:I}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let r=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=Ie.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return r.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.address.toString()===te.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(n.mint.address),mint:new ie(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new tt(new M(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:r,checkCreateATAOwner:o});d&&u.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=Ie.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new ie(n.mint.programId),mint:new ie(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:Z.decimalToX64(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let u=this.createTxBuilder(),c={};for(let l of n){let m=t.useSOLBalance&&l.mint.address===te.toString(),d=l.perSecond.mul(l.endTime-l.openTime),{account:p,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(l.mint.programId),mint:new ie(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new tt(new M(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:r,checkCreateATAOwner:o});y&&u.addInstruction(y),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=Ie.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new ie(l.mint.programId),mint:new ie(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:Z.decimalToX64(l.perSecond)}});c=R(R({},c),b.address),u.addInstruction(b)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.equals(te),{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new tt(new M(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:c?!1:r,checkCreateATAOwner:o});m&&u.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=Ie.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:Z.decimalToX64(n.perSecond)}});return u.addInstruction(p),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:p.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){let u=this.createTxBuilder(),c={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let m=t.useSOLBalance&&l.mint.address===te.toString(),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(l.mint.programId),mint:new ie(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new tt(new M(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:m?!1:r,checkCreateATAOwner:o});p&&u.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),f=Ie.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:new ie(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:Z.decimalToX64(l.perSecond)}});u.addInstruction(f),c=R(R({},c),f.address)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1}){let s=e.rewardDefaultInfos.find(p=>p.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),u=t.useSOLBalance&&n.equals(te),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(s.mint.programId),mint:n,notUseTokenAccount:u,owner:this.scope.ownerPubKey,skipCloseAccount:!u,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:u?!1:r,checkCreateATAOwner:o});l&&a.addInstruction(l),c||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),d=Ie.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:c},rewardMint:n});return a.addInstruction(d),a.build({address:d.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1}){let s=this.createTxBuilder(),a={};for(let u of n){let c=e.rewardDefaultInfos.find(f=>f.mint.address===u.toString());if(!c){this.logAndCreateError("reward mint error","not found reward mint",u);continue}let l=t.useSOLBalance&&u.equals(te),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(c.mint.programId),mint:u,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:r,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&s.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),y=Ie.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});s.addInstruction(y),a=R(R({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:r,priceLimit:o,observationId:s,ownerInfo:a,remainingAccounts:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,txVersion:m}){let d=this.createTxBuilder(),p=a.useSOLBalance&&e.mintA.address===te.toBase58(),y=a.useSOLBalance&&e.mintB.address===te.toBase58(),f;!o||o.equals(new M(0))?f=t.toString()===e.mintA.address?Dt.add(new tt(1)):Wt.sub(new tt(1)):f=J.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let b;if(!b){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(e.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:c,checkCreateATAOwner:l});b=A,k&&d.addInstruction(k)}let g;if(!g){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(e.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:c,checkCreateATAOwner:l});g=A,k&&d.addInstruction(k)}(!b||!g)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let h=await this.getClmmPoolKeys(e.id);return d.addInstruction(Ie.makeSwapBaseInInstructions({poolInfo:e,poolKeys:h,observationId:s,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g},inputMint:new ie(t),amountIn:n,amountOutMin:r,sqrtPriceLimitX64:f,remainingAccounts:u})),d.versionBuild({txVersion:m})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)r?we(this.scope.ownerPubKey,m.accountInfo.mint,s).publicKey.equals(m.pubkey)&&(c[m.accountInfo.mint.toString()]=m.pubkey):c[m.accountInfo.mint.toString()]=m.pubkey;let l=this.createTxBuilder();for(let m of Object.values(e)){if(t[m.id]===void 0||!t[m.id].find(A=>!A.liquidity.isZero()||A.rewardInfos.find(k=>!k.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===te.toString(),y=n.useSOLBalance&&d.mintB.address===te.toString(),f=c[d.mintA.address];if(!f){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new ie(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:r,checkCreateATAOwner:o});f=A,k&&l.addInstruction(k)}let b=c[d.mintB.address];if(!b){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new ie(d.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:r,checkCreateATAOwner:o});b=A,k&&l.addInstruction(k)}c[d.mintA.address]=f,c[d.mintB.address]=b;let g=[];for(let A of d.rewardDefaultInfos){let k=n.useSOLBalance&&A.mint.address===te.toString(),P=c[A.mint.address];if(!P){let{account:x,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(A.mint.programId),mint:new ie(A.mint.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,skipCloseAccount:!k,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:k?!1:r});P=x,B&&l.addInstruction(B)}c[A.mint.address]=P,g.push(P)}let h=await this.getClmmPoolKeys(d.id);for(let A of t[m.id]){let k=Ie.decreaseLiquidityInstructions({poolInfo:d,poolKeys:h,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new tt(0),amountMinA:new tt(0),amountMinB:new tt(0)});l.addInstruction(k)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(Wn(e).publicKey);return t?ra.decode(t.data).whitelistMints.filter(r=>!r.equals(ie.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new tt(1))).map(s=>et(new ie(e),s.accountInfo.mint).publicKey),r=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return r.forEach(s=>{if(!s)return;let a=Gr.decode(s.data);o.push(a)}),o}async getRpcClmmPoolInfo({poolId:e}){return(await this.getRpcClmmPoolInfos({poolIds:[e]}))[String(e)]}async getRpcClmmPoolInfos({poolIds:e}){let t=await this.scope.connection.getMultipleAccountsInfo(e.map(r=>new ie(r))),n={};for(let r=0;r<e.length;r++){let o=t[r];if(o===null)throw Error("fetch pool info error: "+String(e[r]));let s=Ur.decode(o.data),a=J.sqrtPriceX64ToPrice(s.sqrtPriceX64,s.mintDecimalsA,s.mintDecimalsB).toNumber();n[String(e[r])]=W(R({},s),{currentPrice:a})}return n}};import{PublicKey as G}from"@solana/web3.js";import{NATIVE_MINT as Yr,TOKEN_PROGRAM_ID as Ut,AccountLayout as tm}from"@solana/spl-token";var ql=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Ul=Buffer.from("amm_config","utf8"),Gl=Buffer.from("pool","utf8"),Xl=Buffer.from("pool_lp_mint","utf8"),zl=Buffer.from("pool_vault","utf8"),Yl=Buffer.from("observation","utf8");function Hl(i){return ue([ql],i)}function jl(i,e){return ue([Ul,$l(e)],i)}function Ql(i,e,t,n){return ue([Gl,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function Zl(i,e){return ue([Xl,e.toBuffer()],i)}function pa(i,e,t){return ue([zl,e.toBuffer(),t.toBuffer()],i)}function zr(i,e){return ue([Yl,e.toBuffer()],i)}function $l(i){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,i,!1),new Uint8Array(e)}function fa({programId:i,mintA:e,mintB:t}){let n=jl(i,0).publicKey,r=Hl(i).publicKey,o=Ql(i,n,e,t).publicKey,s=Zl(i,o).publicKey,a=pa(i,o,e).publicKey,u=pa(i,o,t).publicKey,c=zr(i,o).publicKey;return{poolId:o,configId:n,authority:r,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as Hn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as oo,TOKEN_2022_PROGRAM_ID as ya,ASSOCIATED_TOKEN_PROGRAM_ID as Jl}from"@solana/spl-token";var em=oe("Raydium_cpmm"),jn={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 ba(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A){let k=_([w("amountMaxA"),w("amountMaxB"),w("openTime")]),P=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:oo,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Jl,isSigner:!1,isWritable:!1},{pubkey:ui,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],x=Buffer.alloc(k.span);return k.encode({amountMaxA:g,amountMaxB:h,openTime:A},x),new Hn({keys:P,programId:i,data:Buffer.from([...jn.initialize,...x])})}function ga(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y){let f=_([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:oo,isSigner:!1,isWritable:!1},{pubkey:ya,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],g=Buffer.alloc(f.span);return em.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:y},g),new Hn({keys:b,programId:i,data:Buffer.from([...jn.deposit,...g])})}function wa(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y){let f=_([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:oo,isSigner:!1,isWritable:!1},{pubkey:ya,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Mo,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:y},g),new Hn({keys:b,programId:i,data:Buffer.from([...jn.withdraw,...g])})}function Aa(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y,f){let b=_([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],h=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},h),new Hn({keys:g,programId:i,data:Buffer.from([...jn.swapBaseInput,...h])})}function ha(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y,f){let b=_([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],h=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},h),new Hn({keys:g,programId:i,data:Buffer.from([...jn.swapBaseOutput,...h])})}import ze from"bn.js";var Pa=_([be(8),F("bump"),Ee("disableCreatePool"),bt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),K("protocolOwner"),K("fundOwner"),q(w(),16)]),ka=_([be(8),K("configId"),K("poolCreator"),K("vaultA"),K("vaultB"),K("mintLp"),K("mintA"),K("mintB"),K("mintProgramA"),K("mintProgramB"),K("observationId"),F("bump"),F("status"),F("lpDecimals"),F("mintDecimalA"),F("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),q(w(),32)]);var Qn=class extends Pe{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 this.scope.connection.getMultipleAccountsInfo(e.map(m=>new G(m))),r={},o=new Set,s=[];for(let m=0;m<e.length;m++){let d=n[m];if(d===null)throw Error("fetch pool info error: "+String(e[m]));let p=ka.decode(d.data);r[String(e[m])]=p,o.add(String(p.configId)),s.push(p.vaultA,p.vaultB)}let a={};if(t){let m=[...o],d=await this.scope.connection.getMultipleAccountsInfo(m.map(p=>new G(p)));for(let p=0;p<m.length;p++){let y=d[p];if(y===null)throw Error("fetch pool config error: "+m[p]);a[m[p]]=Pa.decode(y.data)}}let u={},c=await this.scope.connection.getMultipleAccountsInfo(s.map(m=>new G(m)));for(let m=0;m<s.length;m++){let d=c[m];if(d===null)throw Error("fetch vault info error: "+s[m]);u[String(s[m])]=new ze(tm.decode(d.data).amount.toString())}let l={};for(let[m,d]of Object.entries(r)){let p=u[d.vaultA.toString()].sub(d.protocolFeesMintA).sub(d.fundFeesMintA),y=u[d.vaultB.toString()].sub(d.protocolFeesMintB).sub(d.fundFeesMintB);l[m]=W(R({},d),{baseReserve:p,quoteReserve:y,configInfo:a[d.configId.toString()],poolPrice:new M(y.toString()).div(new M(10).pow(d.mintDecimalB)).div(new M(p.toString()).div(new M(10).pow(d.mintDecimalA)))})}return l}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:r,associatedOnly:o=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:u}=m,c=Ae(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var Q,v,j;let d=r.feePayer||((Q=this.scope.owner)==null?void 0:Q.publicKey),p=new ze(new G(c.mintA.address).toBuffer()).lte(new ze(new G(c.mintB.address).toBuffer())),[y,f]=p?[c.mintA,c.mintB]:[c.mintB,c.mintA],[b,g]=p?[c.mintAAmount,c.mintBAmount]:[c.mintBAmount,c.mintAAmount],h=r.useSOLBalance&&y.address===Yr.toBase58(),A=r.useSOLBalance&&f.address===Yr.toBase58(),[k,P]=[new G(y.address),new G(f.address)],x=this.createTxBuilder(),{account:B,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({mint:k,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:h?{payer:d,amount:b}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:o,checkCreateATAOwner:s});x.addInstruction(I||{});let{account:S,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({mint:new G(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:A?{payer:d,amount:g}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:o,checkCreateATAOwner:s});if(x.addInstruction(N||{}),B===void 0||S===void 0)throw Error("you don't has some token account");let V=fa({programId:e,mintA:k,mintB:P});return x.addInstruction({instructions:[ba(e,this.scope.ownerPubKey,V.configId,V.authority,V.poolId,k,P,V.lpMint,B,S,we(this.scope.ownerPubKey,V.lpMint).publicKey,V.vaultA,V.vaultB,t,new G((v=y.programId)!=null?v:Ut),new G((j=f.programId)!=null?j:Ut),V.observationId,b,g,n)],instructionTypes:[E.CpmmCreatePool]}),x.addCustomComputeBudget(u),x.versionBuild({txVersion:a,extInfo:{address:W(R({},V),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:r,slippage:o,computeResult:s,computeBudgetConfig:a,config:u,txVersion:c}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),n.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:n.toString()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),p=await this.getRpcPoolInfo(t.id),{liquidity:y,inputAmountFee:f,anotherAmount:b}=s||this.computePairAmount({poolInfo:W(R({},t),{mintAmountA:new M(p.baseReserve.toString()).div(10**t.mintA.decimals).toNumber(),mintAmountB:new M(p.quoteReserve.toString()).div(10**t.mintB.decimals).toNumber(),lpAmount:new M(p.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),slippage:o,baseIn:r,epochInfo:await this.scope.fetchEpochInfo(),amount:new M(n.toString()).div(10**(r?t.mintA.decimals:t.mintB.decimals))}),g=b.amount,h=t.mintA.address===Yr.toString(),A=t.mintB.address===Yr.toString(),k=this.createTxBuilder(),[P,x]=[new G(t.mintA.address),new G(t.mintB.address)],{account:B,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new G(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||(r?n:g).isZero()?{payer:this.scope.ownerPubKey,amount:r?n:g}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!1,checkCreateATAOwner:d});k.addInstruction(I||{});let{account:S,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new G(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||(r?g:n).isZero()?{payer:this.scope.ownerPubKey,amount:r?g:n}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!1,checkCreateATAOwner:d});k.addInstruction(N||{}),!B&&!S&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let V=await l.getCreatedTokenAccount({mint:new G(t.lpMint.address)}),ee=await l.handleTokenAccount({side:"out",amount:0,mint:new G(t.lpMint.address),tokenAccount:V,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:Q}=ee,v=Ae(ee,["tokenAccount"]);k.addInstruction(v);let j=await this.getCpmmPoolKeys(t.id);return k.addInstruction({instructions:[ga(new G(t.programId),this.scope.ownerPubKey,new G(j.authority),new G(t.id),Q,B,S,new G(j.vault.A),new G(j.vault.B),P,x,new G(t.lpMint.address),y,r?f.amount:g,r?g:f.amount)],instructionTypes:[E.CpmmAddLiquidity],lookupTableAddress:j.lookupTableAccount?[j.lookupTableAccount]:[]}),k.addCustomComputeBudget(a),k.versionBuild({txVersion:c})}async withdrawLiquidity(e){var Q,v;let{poolInfo:t,lpAmount:n,slippage:r,computeBudgetConfig:o,txVersion:s}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new Qe(new ze(1)).sub(r),u=await this.getRpcPoolInfo(t.id),[c,l]=[a.mul(n.mul(u.baseReserve).div(u.lpAmount)).quotient,a.mul(n.mul(u.quoteReserve).div(u.lpAmount)).quotient],m=await this.scope.fetchEpochInfo(),[d,p]=[ye(c,t.mintA.extensions.feeConfig,m,!0),ye(l,t.mintB.extensions.feeConfig,m,!0)],{account:y}=this.scope,f=this.createTxBuilder(),[b,g]=[new G(t.mintA.address),new G(t.mintB.address)],h=b.equals(te),A=g.equals(te),k,P,{account:x,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new G(t.mintA.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!h,associatedOnly:!h,checkCreateATAOwner:!1});k=x,B&&f.addInstruction(B);let{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new G(t.mintB.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:!A,checkCreateATAOwner:!1});P=I,S&&f.addInstruction(S),(!k||!P)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let N=await y.getCreatedTokenAccount({mint:new G(t.lpMint.address)});N||this.logAndCreateError("cannot found lp token account","tokenAccounts",y.tokenAccounts);let V=await this.getCpmmPoolKeys(t.id);return f.addInstruction({instructions:[wa(new G(t.programId),this.scope.ownerPubKey,new G(V.authority),new G(t.id),N,k,P,new G(V.vault.A),new G(V.vault.B),b,g,new G(t.lpMint.address),n,c.sub((Q=d.fee)!=null?Q:new ze(0)),l.sub((v=p.fee)!=null?v:new ze(0)))],instructionTypes:[E.CpmmWithdrawLiquidity],lookupTableAddress:V.lookupTableAccount?[V.lookupTableAccount]:[]}),f.addCustomComputeBudget(o),f.versionBuild({txVersion:s})}async swap(e){var k,P,I,S,N,V;let{poolInfo:t,baseIn:n,swapResult:r,config:o,computeBudgetConfig:s,txVersion:a}=e,{bypassAssociatedCheck:u,checkCreateATAOwner:c}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),l=this.createTxBuilder(),[m,d]=[new G(t.mintA.address),new G(t.mintB.address)],p=await this.scope.account.getCreatedTokenAccount({programId:new G((k=t.mintA.programId)!=null?k:Ut),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new G((P=t.mintB.programId)!=null?P:Ut),mint:d,associatedOnly:!1}),x=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?r.sourceAmountSwapped:r.destinationAmountSwapped,mint:m,tokenAccount:p,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:f}=x,b=Ae(x,["tokenAccount"]);l.addInstruction(b);let B=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?r.destinationAmountSwapped:r.sourceAmountSwapped,mint:d,tokenAccount:y,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:g}=B,h=Ae(B,["tokenAccount"]);l.addInstruction(h),!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let A=await this.getCpmmPoolKeys(t.id);return l.addInstruction({instructions:[n?Aa(new G(t.programId),this.scope.ownerPubKey,new G(A.authority),new G(A.config.id),new G(t.id),f,g,new G(A.vault.A),new G(A.vault.B),new G((I=t.mintA.programId)!=null?I:Ut),new G((S=t.mintB.programId)!=null?S:Ut),m,d,zr(new G(t.programId),new G(t.id)).publicKey,r.sourceAmountSwapped,r.destinationAmountSwapped):ha(new G(t.programId),this.scope.ownerPubKey,new G(A.authority),new G(A.config.id),new G(t.id),g,f,new G(A.vault.B),new G(A.vault.A),new G((N=t.mintB.programId)!=null?N:Ut),new G((V=t.mintA.programId)!=null?V:Ut),d,m,zr(new G(t.programId),new G(t.id)).publicKey,r.sourceAmountSwapped,r.destinationAmountSwapped)],instructionTypes:[n?E.CpmmSwapBaseIn:E.CpmmSwapBaseOut]}),l.addCustomComputeBudget(s),l.versionBuild({txVersion:a})}computePairAmount({poolInfo:e,amount:t,slippage:n,epochInfo:r,baseIn:o}){var h,A,k,P,x,B,I,S;let s=1-Number(n.toSignificant())/100,a=new ze(new M(t).mul(10**e[o?"mintA":"mintB"].decimals).mul(s).toFixed(0)),u=ye(a,e[o?"mintA":"mintB"].extensions.feeConfig,r,!1),c=a.sub((h=u.fee)!=null?h:new ze(0)),[l,m]=[new ze(new M(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new ze(new M(e.mintAmountB).mul(10**e.mintB.decimals).toString())],d=new ze(new M(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,M.ROUND_DOWN));this.logDebug("baseReserve:",l.toString(),"quoteReserve:",m.toString()),this.logDebug("tokenIn:",o?e.mintA.symbol:e.mintB.symbol,"amountIn:",a.toString(),"amountInFee:",(k=(A=u.fee)==null?void 0:A.toString())!=null?k:0,"anotherToken:",o?e.mintB.symbol:e.mintA.symbol,"slippage:",`${n.toSignificant()}%`);let p=o?"base":"quote";this.logDebug("input side:",p);let y=c.mul(d).div(p==="base"?l:m),f={amount:qe,fee:void 0,expirationTime:void 0};c.isZero()||(f=ye(nm(y,l,m,d)[o?"amountB":"amountA"],e[o?"mintB":"mintA"].extensions.feeConfig,r,!0));let b=new Qe(new ze(1)).add(n),g=ye(b.mul(f.amount.sub((P=f.fee)!=null?P:new ze(0))).quotient,e[o?"mintB":"mintA"].extensions.feeConfig,r,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(B=(x=f.fee)==null?void 0:x.toString())!=null?B:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(S=(I=g.fee)==null?void 0:I.toString())!=null?S:0),{inputAmountFee:u,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function nm(i,e,t,n){let r=i.mul(e).div(n);!r.isZero()&&!i.mul(e).mod(n).isZero()&&(r=r.add(new ze(1)));let o=i.mul(t).div(n);return!o.isZero()&&!i.mul(t).mod(n).isZero()&&(o=o.add(new ze(1))),{amountA:r,amountB:o}}var Zn=class extends Pe{constructor(e){super(e)}static getAddLiquidityDefaultPool({addLiquidityPools:e,poolInfosCache:t}){if(e.length===0)return;if(e.length===1||(e.sort((r,o)=>o.version-r.version),e[0].version!==e[1].version))return e[0];let n=e.filter(r=>r.version===e[0].version);return n.sort((r,o)=>this.comparePoolSize(r,o,t)),n[0]}static comparePoolSize(e,t,n){let r=n[e.id],o=n[t.id];return r===void 0?1:o===void 0?-1:e.baseMint===t.baseMint?r.baseReserve.sub(o.baseReserve).gte(qe)?-1:1:r.baseReserve.sub(o.quoteReserve).gte(qe)?-1:1}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(te));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n}=e,r=await this.getWSolAccounts(),o=this.createTxBuilder();o.addCustomComputeBudget(e.computeBudgetConfig);let s=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(s);let a=Y(t);for(let u=0;u<r.length;u++)a.gte(r[u].amount)?(o.addInstruction({instructions:[It({tokenAccount:r[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(r[u].amount)):(o.addInstruction({instructions:[It({tokenAccount:r[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),On({destination:s.addresses.newAccount,source:r[u].publicKey,amount:a,owner:this.scope.ownerPubKey,tokenProgram:n}));return o.build()}async wrapWSol(e,t){let n=await this.getWSolAccounts(),r=this.createTxBuilder(),o=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return r.addInstruction(o),n.length&&r.addInstruction({instructions:[On({destination:n[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[It({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),r.build()}};import{TOKEN_PROGRAM_ID as rm}from"@solana/spl-token";import{PublicKey as im,Transaction as so,TransactionInstruction as om}from"@solana/web3.js";import Ta from"bn.js";var We=class extends Pe{static getPdaPoolId(e,t){return ue([We.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,r){return ue([We.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Ta(r).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:r,chainTime:o}){if(n.length===0)return[];let s=n.map(l=>We.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<We.VERSION_PROJECT.length;l++)a.push(...s.map(m=>We.getPdaOwnerId(t,m,r,l).publicKey));let u=await yt(e,[...s,...a]),c=[];for(let l=0;l<u.length;l++){let m=Math.floor(l/n.length),d=l%n.length,p=s[d],y=a[l],f=u[d],b=u[n.length+l];if(!(f&&b)||f.data.length!==We.POOL_LAYOUT.span||b.data.length!==We.OWNER_LAYOUT.span)continue;let g=We.POOL_LAYOUT.decode(f.data),h=We.OWNER_LAYOUT.decode(b.data),A=g.openTime.toNumber(),k=g.endTime.toNumber(),P=h.tokenInfo.map(I=>I.debtAmount.gt(new Ta(0))).filter(I=>!I).length!==3,x=o>A&&o<k&&g.status===1,B=P&&x;c.push({programId:t,poolId:p,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:h.lpAmount,project:We.VERSION_PROJECT[m],openTime:A,endTime:k,canClaim:B,canClaimErrorType:P?x?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((I,S)=>({mintAddress:I.mintAddress,mintVault:I.mintVault,mintDecimals:I.mintDecimals,perLpLoss:I.perLpLoss,debtAmount:h.tokenInfo[S].debtAmount.add(h.tokenInfo[S].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),r=t.wallet||this.scope.ownerPubKey,o=[];for(let u of e.tokenInfo){let{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({mint:u.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:u.mintAddress.equals(he.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!u.mintAddress.equals(he.WSOL.mint),associatedOnly:u.mintAddress.equals(he.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),o.push(c)}n.addInstruction({instructions:[We.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:r,ownerPda:e.ownerAccountId,claimAddress:o}})]});let{transaction:s,signers:a}=n.build();return[{transaction:s,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),r=t.wallet||this.scope.ownerPubKey,o={};for(let c of e){let l=[];for(let m of c.tokenInfo){let{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(he.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!m.mintAddress.equals(he.WSOL.mint),associatedOnly:m.mintAddress.equals(he.WSOL.mint)?!1:t.associatedOnly});p&&n.addInstruction(p),d&&(o[m.mintAddress.toString()]=d,l.push(d))}n.addInstruction({instructions:[We.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:r,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),u=n.allInstructions;return yi(u,[r,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new so().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new so().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new so().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let r=_([]),o=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(u=>({pubkey:u,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:u})=>({pubkey:u,isSigner:!1,isWritable:!0})),{pubkey:rm,isSigner:!1,isWritable:!1}],s=Buffer.alloc(r.span);r.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new om({keys:o,programId:e,data:a})}},nt=We;nt.CLAIMED_NUM=3,nt.POOL_LAYOUT=_([be(8),F("bump"),F("status"),w("openTime"),w("endTime"),K("ammId"),q(_([F("mintDecimals"),K("mintAddress"),K("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),We.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),nt.OWNER_LAYOUT=_([be(8),F("bump"),F("version"),K("poolId"),K("owner"),w("lpAmount"),q(_([K("mintAddress"),w("debtAmount"),w("claimedAmount")]),We.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),nt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new im(e)),nt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},nt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as $n}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ka}from"@solana/spl-token";import Jn from"bn.js";import{TransactionInstruction as am,SYSVAR_RENT_PUBKEY as um}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ia}from"@solana/spl-token";import{createInitializeAccountInstruction as xa}from"@solana/spl-token";import{SystemProgram as en,Transaction as Ba}from"@solana/web3.js";function sm(i="accountFlags"){let e=new Cr(i);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var ao=_([be(5),sm("accountFlags"),K("ownAddress"),w("vaultSignerNonce"),K("baseMint"),K("quoteMint"),K("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),K("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),K("requestQueue"),K("eventQueue"),K("bids"),K("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),be(7)]);function cm({programId:i,marketInfo:e}){let t=_([F("version"),Ge("instruction"),w("baseLotSize"),w("quoteLotSize"),bt("feeRateBps"),w("vaultSignerNonce"),w("quoteDustThreshold")]),n=[{pubkey:e.id,isSigner:!1,isWritable:!0},{pubkey:e.requestQueue,isSigner:!1,isWritable:!0},{pubkey:e.eventQueue,isSigner:!1,isWritable:!0},{pubkey:e.bids,isSigner:!1,isWritable:!0},{pubkey:e.asks,isSigner:!1,isWritable:!0},{pubkey:e.baseVault,isSigner:!1,isWritable:!0},{pubkey:e.quoteVault,isSigner:!1,isWritable:!0},{pubkey:e.baseMint,isSigner:!1,isWritable:!1},{pubkey:e.quoteMint,isSigner:!1,isWritable:!1},{pubkey:e.authority?e.quoteMint:um,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),r=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},r),new am({keys:n,programId:i,data:r})}async function Sa({connection:i,wallet:e,marketInfo:t}){let n=new Ba,r=await i.getMinimumBalanceForRentExemption(165);n.add(en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:r,space:165,programId:Ia}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:r,space:165,programId:Ia}),xa(t.baseVault.publicKey,t.baseMint,t.vaultOwner),xa(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new Ba;return o.add(en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await i.getMinimumBalanceForRentExemption(ao.span),space:ao.span,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await i.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await i.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await i.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await i.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),cm({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:o,signer:[],instructionTypes:[E.CreateAccount,E.CreateAccount,E.CreateAccount,E.CreateAccount,E.CreateAccount,E.InitMarket]}]}var pn=class extends Pe{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:r,dexProgramId:o,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=Ve({fromPublicKey:u,programId:o}),l=Ve({fromPublicKey:u,programId:o}),m=Ve({fromPublicKey:u,programId:o}),d=Ve({fromPublicKey:u,programId:o}),p=Ve({fromPublicKey:u,programId:o}),y=Ve({fromPublicKey:u,programId:Ka}),f=Ve({fromPublicKey:u,programId:Ka}),b=0,g=new Jn(100);function h(){let S=new Jn(0);for(;;)try{return{vaultOwner:$n.createProgramAddressSync([c.publicKey.toBuffer(),S.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:S}}catch{if(S.iaddn(1),S.gt(new Jn(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:k}=h(),P=new Jn(Math.round(10**e.decimals*n)),x=new Jn(Math.round(n*10**t.decimals*r));if(P.eq(qe))throw Error("lot size is too small");if(x.eq(qe))throw Error("tick size or lot size is too small");let B=await Sa({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:o,id:c,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:A,requestQueue:l,eventQueue:m,bids:d,asks:p,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:k,baseLotSize:P,quoteLotSize:x}}),I=this.createTxBuilder();I.addInstruction({instructions:B[0].transaction.instructions,signers:B[0].signer});for await(let S of B.slice(1,B.length))I.addInstruction({instructions:S.transaction.instructions,signers:S.signer,instructionTypes:S.instructionTypes});return s===0?I.sizeCheckBuildV0({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new $n(e.mint),quoteMin:new $n(t.mint)}}):I.sizeCheckBuild({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new $n(e.mint),quoteMin:new $n(t.mint)}})}};import{PublicKey as tr}from"@solana/web3.js";import{TransactionInstruction as Ca,SYSVAR_CLOCK_PUBKEY as mm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ra}from"@solana/spl-token";var lm=_([F("instruction"),ns("amount")]),er=_([F("instruction")]);function Hr({programId:i},e){let t=[{pubkey:Ra,isSigner:!1,isWritable:!1},{pubkey:_o,isSigner:!1,isWritable:!1},...Object.entries(e).map(([r,o])=>({pubkey:o,isSigner:r==="userOwner",isWritable:!["authority","userOwner"].includes(r)}))],n=Buffer.alloc(er.span);return er.encode({instruction:2},n),new Ca({keys:t,programId:i,data:n})}function uo(i){let{poolConfig:e,userKeys:t,side:n}=i,r=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,o=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(er.span);er.encode({instruction:2},s);let a=[{pubkey:Ra,isWritable:!1,isSigner:!1},{pubkey:mm,isWritable:!1,isSigner:!1},{pubkey:e.id,isWritable:!0,isSigner:!1},{pubkey:e.authority,isWritable:!1,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:r,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new Ca({programId:e.programId,keys:a,data:s})}import La from"bn.js";var dm={[Cn.IDO_PROGRAM_ID_V1.toString()]:1,[Cn.IDO_PROGRAM_ID_V2.toString()]:2,[Cn.IDO_PROGRAM_ID_V3.toString()]:3,[Cn.IDO_PROGRAM_ID_V4.toString()]:4},fn=class extends Pe{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:r=!1,txVersion:o}){let s=this.createTxBuilder(),a=dm[t.programId];a||this.logAndCreateError("invalid version",a);let u=Ue(t),[c,l]=[!new La(e.coin).isZero(),!new La(e.pc).isZero()],m=u.projectInfo.mint.address.equals(te),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.projectInfo.mint.programId,mint:u.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!m,notUseTokenAccount:m,associatedOnly:m?!1:n,checkCreateATAOwner:r});!d&&c&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),c&&p&&s.addInstruction(p);let y=u.buyInfo.mint.address.equals(te),{account:f,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.buyInfo.mint.programId,mint:u.buyInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:n,checkCreateATAOwner:r});if(!d&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&b&&s.addInstruction(b),(!d||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return s.addInstruction({instructions:[...c?[Hr({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:d,userIdoInfo:new tr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[Hr({programId:new tr(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new tr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[Hr({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:d,userIdoInfo:new tr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:o});let g={poolConfig:{id:u.id,programId:u.programId,authority:u.authority,baseVault:u.projectInfo.vault,quoteVault:u.buyInfo.vault,baseToken:t.projectInfo.mint,quoteToken:t.buyInfo.mint},userKeys:{baseTokenAccount:d,quoteTokenAccount:f,ledgerAccount:new tr(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[uo(W(R({},g),{side:"base"}))]:[],...l?[uo(W(R({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as pm}from"@solana/web3.js";import{MintLayout as fm,TOKEN_2022_PROGRAM_ID as co,TOKEN_PROGRAM_ID as lo}from"@solana/spl-token";var nr=class extends Pe{constructor(t){super(t);this._tokenList=[];this._tokenMap=new Map;this._blackTokenMap=new Map;this._mintGroup={official:new Set,jup:new Set,extra:new Set};this._whiteMap=new Set;this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:r="strict"}=t||{},{mintList:o,blacklist:s,whiteList:a}=await this.scope.fetchV3TokenList(n),u=await this.scope.fetchJupTokenList(r,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._whiteMap=new Set(a),this._tokenMap.set(Mt.address,Mt),this._mintGroup.official.add(Mt.address),s.forEach(c=>{this._blackTokenMap.set(c.address,W(R({},c),{priority:-1}))}),o.forEach(c=>{var l;this._blackTokenMap.has(c.address)||(this._tokenMap.set(c.address,W(R({},c),{type:"raydium",priority:2,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?co.toBase58():lo.toBase58()})),this._mintGroup.official.add(c.address))}),u.forEach(c=>{var l;this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,W(R({},c),{type:"jupiter",priority:1,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?co.toBase58():lo.toBase58()})),this._mintGroup.jup.add(c.address))}),this._extraTokenList.forEach(c=>{this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,W(R({},c),{type:"extra",priority:1,programId:c.programId||c.tags.includes("token-2022")?co.toBase58():lo.toBase58()})),this._mintGroup.extra.add(c.address))}),this._tokenList=Array.from(this._tokenMap).map(c=>c[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}get whiteListMap(){return this._whiteMap}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),r=this._tokenMap.get(n);if(r)return r;if(n.toLocaleUpperCase()==="SOL")return Mt;let o=(await this.scope.api.getTokenInfo([n]))[0];if(o)return this._mintGroup.extra.add(n),this._tokenMap.set(n,W(R({},o),{priority:2})),o;let s=await this.scope.connection.getAccountInfo(new pm(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=fm.decode(s.data),u=n.toString().substring(0,6),c={chainId:101,address:n,programId:s.owner.toBase58(),logoURI:"",symbol:u,name:u,decimals:a.decimals,tags:[],extensions:{},priority:0,type:"unknown"};return this._mintGroup.extra.add(n),this._tokenMap.set(n,c),c}};var jr=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:r,api:o,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:u}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=r?new at(r):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=oe("Raydium"),this.farm=new Fn({scope:this,moduleName:"Raydium_Farm"}),this.account=new Nn({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new zn({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new nr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new Zn({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new Yn({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new Qn({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new nt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new pn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new fn({scope:this,moduleName:"Raydium_ido"}),this.availability={};let c=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:c,value:{chainTime:s||Date.now()-a,offset:a}})}static async load(e){var l;let t=ym({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:r,logCount:o,logRequests:s,urlConfigs:a}=t,u=new Br({cluster:n,timeout:r,urlConfigs:a,logCount:o,logRequests:s}),c=new jr(W(R({},t),{api:u}));return await c.fetchAvailabilityStatus((l=e.disableFeatureCheck)!=null?l:!0),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(Sr);return this._owner.publicKey}setOwner(e){return this._owner=e?new at(e):void 0,this}get connection(){if(!this._connection)throw new Error(Jo);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(Sr),new Error(Sr)}isCacheInvalidate(e){return new Date().getTime()-e>this._apiCacheTime}async fetchChainTime(){try{let e=await this.api.getChainTimeOffset();this._chainTime={fetched:Date.now(),value:{chainTime:Date.now()+e.offset*1e3,offset:e.offset*1e3}}}catch{this._chainTime=void 0}}async fetchV3TokenList(e){if(this.apiData.tokenList&&!this.isCacheInvalidate(this.apiData.tokenList.fetched)&&!e)return this.apiData.tokenList.data;let t=await this.api.getTokenList(),n={fetched:Date.now(),data:t};return this.apiData.tokenList=n,n.data}async fetchJupTokenList(e,t){var o;let n=(o=this.apiData.jupTokenList)==null?void 0:o[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let r=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=W(R({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:r}}),this.apiData.jupTokenList[e].data}get chainTimeData(){var e;return(e=this._chainTime)==null?void 0:e.value}async chainTimeOffset(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.offset:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.offset)||0)}async currentBlockChainTime(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.chainTime:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.chainTime)||Date.now())}async fetchEpochInfo(){return this._epochInfo&&Date.now()-this._epochInfo.fetched<=1e3*30?this._epochInfo.value:(this._epochInfo={fetched:Date.now(),value:await this.connection.getEpochInfo()},this._epochInfo.value)}async fetchAvailabilityStatus(e){if(e)return{};try{let t=await this.api.fetchAvailabilityStatus(),n=t.all===!1;return this.availability={all:t.all,swap:n?!1:t.swap,createConcentratedPosition:n?!1:t.createConcentratedPosition,addConcentratedPosition:n?!1:t.addConcentratedPosition,addStandardPosition:n?!1:t.addStandardPosition,removeConcentratedPosition:n?!1:t.removeConcentratedPosition,removeStandardPosition:n?!1:t.removeStandardPosition,addFarm:n?!1:t.addFarm,removeFarm:n?!1:t.removeFarm},t}catch{return{}}}};export{jr as Raydium};
|
|
1
|
+
var Oa=Object.defineProperty,Na=Object.defineProperties;var Ma=Object.getOwnPropertyDescriptors;var ir=Object.getOwnPropertySymbols;var fo=Object.prototype.hasOwnProperty,yo=Object.prototype.propertyIsEnumerable;var po=(i,e,t)=>e in i?Oa(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,R=(i,e)=>{for(var t in e||(e={}))fo.call(e,t)&&po(i,t,e[t]);if(ir)for(var t of ir(e))yo.call(e,t)&&po(i,t,e[t]);return i},W=(i,e)=>Na(i,Ma(e));var Ae=(i,e)=>{var t={};for(var n in i)fo.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&ir)for(var n of ir(i))e.indexOf(n)<0&&yo.call(i,n)&&(t[n]=i[n]);return t};import{merge as ym}from"lodash";import dc from"axios";import{get as bo,set as _a}from"lodash";import wo from"dayjs";import Ea from"dayjs/plugin/utc";wo.extend(Ea);var $r=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 wo().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}},go={},Va={};function oe(i){let e=bo(go,i);if(!e){let t=bo(Va,i);e=new $r({name:i,logLevel:t}),_a(go,i,e)}return e}import{PublicKey as Yu}from"@solana/web3.js";import Hu from"bn.js";import Gu from"big.js";import gr from"bn.js";import He from"bn.js";var tn=9e15,Nt=1e9,Jr="0123456789abcdef",sr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",ar="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",ei={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-tn,maxE:tn,crypto:!1},ko,Tt,$=!0,cr="[DecimalError] ",Ot=cr+"Invalid argument: ",To=cr+"Precision limit exceeded",Io=cr+"crypto unavailable",xo="[object Decimal]",_e=Math.floor,Be=Math.pow,Fa=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,va=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Da=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,Bo=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ot=1e7,H=7,Wa=9007199254740991,qa=sr.length-1,ti=ar.length-1,C={toStringTag:xo};C.absoluteValue=C.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),X(i)};C.ceil=function(){return X(new this.constructor(this),this.e+1,2)};C.clampedTo=C.clamp=function(i,e){var t,n=this,r=n.constructor;if(i=new r(i),e=new r(e),!i.s||!e.s)return new r(NaN);if(i.gt(e))throw Error(Ot+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};C.comparedTo=C.cmp=function(i){var e,t,n,r,o=this,s=o.d,a=(i=new o.constructor(i)).d,u=o.s,c=i.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==i.e)return o.e>i.e^u<0?1:-1;for(n=s.length,r=a.length,e=0,t=n<r?n:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===r?0:n>r^u<0?1:-1};C.cosine=C.cos=function(){var i,e,t=this,n=t.constructor;return t.d?t.d[0]?(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+H,n.rounding=1,t=Ua(n,Lo(n,t)),n.precision=i,n.rounding=e,X(Tt==2||Tt==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};C.cubeRoot=C.cbrt=function(){var i,e,t,n,r,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for($=!1,o=l.s*Be(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Re(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Be(t,1/3),i=_e((i+1)/3)-(i%3==(i<0?-1:2)),o==1/0?t="5e"+i:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+i),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(i=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=pe(c.plus(l).times(a),c.plus(u),s+2,1),Re(a.d).slice(0,s)===(t=Re(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(X(a,i+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(X(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return $=!0,X(n,i,m.rounding,e)};C.decimalPlaces=C.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-_e(this.e/H))*H,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};C.dividedBy=C.div=function(i){return pe(this,new this.constructor(i))};C.dividedToIntegerBy=C.divToInt=function(i){var e=this,t=e.constructor;return X(pe(e,new t(i),0,1,1),t.precision,t.rounding)};C.equals=C.eq=function(i){return this.cmp(i)===0};C.floor=function(){return X(new this.constructor(this),this.e+1,3)};C.greaterThan=C.gt=function(i){return this.cmp(i)>0};C.greaterThanOrEqualTo=C.gte=function(i){var e=this.cmp(i);return e==1||e===0};C.hyperbolicCosine=C.cosh=function(){var i,e,t,n,r,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,r=o.d.length,r<32?(i=Math.ceil(r/3),e=(1/mr(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=nn(s,1,o.times(e),new s(1),!0);for(var u,c=i,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return X(o,s.precision=t,s.rounding=n,!0)};C.hyperbolicSine=C.sinh=function(){var i,e,t,n,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(r.e,r.sd())+4,o.rounding=1,n=r.d.length,n<3)r=nn(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/mr(5,i)),r=nn(o,2,r,r,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);i--;)s=r.times(r),r=r.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,X(r,e,t,!0)};C.hyperbolicTangent=C.tanh=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+7,n.rounding=1,pe(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};C.inverseCosine=C.acos=function(){var i,e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?it(t,r,o):new t(0):new t(NaN):e.isZero()?it(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=it(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};C.inverseHyperbolicCosine=C.acosh=function(){var i,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(i=n.precision,e=n.rounding,n.precision=i+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,$=!1,t=t.times(t).minus(1).sqrt().plus(t),$=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};C.inverseHyperbolicSine=C.asinh=function(){var i,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,$=!1,t=t.times(t).plus(1).sqrt().plus(t),$=!0,n.precision=i,n.rounding=e,t.ln())};C.inverseHyperbolicTangent=C.atanh=function(){var i,e,t,n,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(i=o.precision,e=o.rounding,n=r.sd(),Math.max(n,i)<2*-r.e-1?X(new o(r),i,e,!0):(o.precision=t=n-r.e,r=pe(r.plus(1),new o(1).minus(r),t+i,1),o.precision=i+4,o.rounding=1,r=r.ln(),o.precision=i,o.rounding=e,r.times(.5))):new o(NaN)};C.inverseSine=C.asin=function(){var i,e,t,n,r=this,o=r.constructor;return r.isZero()?new o(r):(e=r.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(i=it(o,t+4,n).times(.5),i.s=r.s,i):new o(NaN):(o.precision=t+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,r.times(2)))};C.inverseTangent=C.atan=function(){var i,e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=ti)return s=it(l,m+4,d).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=ti)return s=it(l,m+4,d).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/H+2|0),i=t;i;--i)c=c.div(c.times(c).plus(1).sqrt().plus(1));for($=!1,e=Math.ceil(a/H),n=1,u=c.times(c),s=new l(c),r=c;i!==-1;)if(r=r.times(u),o=s.minus(r.div(n+=2)),r=r.times(u),s=o.plus(r.div(n+=2)),s.d[e]!==void 0)for(i=e;s.d[i]===o.d[i]&&i--;);return t&&(s=s.times(2<<t-1)),$=!0,X(s,l.precision=m,l.rounding=d,!0)};C.isFinite=function(){return!!this.d};C.isInteger=C.isInt=function(){return!!this.d&&_e(this.e/H)>this.d.length-2};C.isNaN=function(){return!this.s};C.isNegative=C.isNeg=function(){return this.s<0};C.isPositive=C.isPos=function(){return this.s>0};C.isZero=function(){return!!this.d&&this.d[0]===0};C.lessThan=C.lt=function(i){return this.cmp(i)<0};C.lessThanOrEqualTo=C.lte=function(i){return this.cmp(i)<1};C.logarithm=C.log=function(i){var e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,d=l.rounding,p=5;if(i==null)i=new l(10),e=!0;else{if(i=new l(i),t=i.d,i.s<0||!t||!t[0]||i.eq(1))return new l(NaN);e=i.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(r=t[0];r%10===0;)r/=10;o=r!==1}if($=!1,a=m+p,s=Lt(c,a),n=e?ur(l,a+10):Lt(i,a),u=pe(s,n,a,1),gn(u.d,r=m,d))do if(a+=10,s=Lt(c,a),n=e?ur(l,a+10):Lt(i,a),u=pe(s,n,a,1),!o){+Re(u.d).slice(r+1,r+15)+1==1e14&&(u=X(u,m+1,0));break}while(gn(u.d,r+=10,d));return $=!0,X(u,m,d)};C.minus=C.sub=function(i){var e,t,n,r,o,s,a,u,c,l,m,d,p=this,y=p.constructor;if(i=new y(i),!p.d||!i.d)return!p.s||!i.s?i=new y(NaN):p.d?i.s=-i.s:i=new y(i.d||p.s!==i.s?p:NaN),i;if(p.s!=i.s)return i.s=-i.s,p.plus(i);if(c=p.d,d=i.d,a=y.precision,u=y.rounding,!c[0]||!d[0]){if(d[0])i.s=-i.s;else if(c[0])i=new y(p);else return new y(u===3?-0:0);return $?X(i,a,u):i}if(t=_e(i.e/H),l=_e(p.e/H),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=d.length):(e=d,t=l,s=c.length),n=Math.max(Math.ceil(a/H),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=d[n]){m=c[n]<d[n];break}o=0}for(m&&(e=c,c=d,d=e,i.s=-i.s),s=c.length,n=d.length-s;n>0;--n)c[s++]=0;for(n=d.length;n>o;){if(c[--n]<d[n]){for(r=n;r&&c[--r]===0;)c[r]=ot-1;--c[r],c[n]+=ot}c[n]-=d[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(i.d=c,i.e=lr(c,t),$?X(i,a,u):i):new y(u===3?-0:0)};C.modulo=C.mod=function(i){var e,t=this,n=t.constructor;return i=new n(i),!t.d||!i.s||i.d&&!i.d[0]?new n(NaN):!i.d||t.d&&!t.d[0]?X(new n(t),n.precision,n.rounding):($=!1,n.modulo==9?(e=pe(t,i.abs(),0,3,1),e.s*=i.s):e=pe(t,i,0,n.modulo,1),e=e.times(i),$=!0,t.minus(e))};C.naturalExponential=C.exp=function(){return ni(this)};C.naturalLogarithm=C.ln=function(){return Lt(this)};C.negated=C.neg=function(){var i=new this.constructor(this);return i.s=-i.s,X(i)};C.plus=C.add=function(i){var e,t,n,r,o,s,a,u,c,l,m=this,d=m.constructor;if(i=new d(i),!m.d||!i.d)return!m.s||!i.s?i=new d(NaN):m.d||(i=new d(i.d||m.s===i.s?m:NaN)),i;if(m.s!=i.s)return i.s=-i.s,m.minus(i);if(c=m.d,l=i.d,a=d.precision,u=d.rounding,!c[0]||!l[0])return l[0]||(i=new d(m)),$?X(i,a,u):i;if(o=_e(m.e/H),n=_e(i.e/H),c=c.slice(),r=o-n,r){for(r<0?(t=c,r=-r,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/H),s=o>s?o+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=c.length,r=l.length,s-r<0&&(r=s,t=l,l=c,c=t),e=0;r;)e=(c[--r]=c[r]+l[r]+e)/ot|0,c[r]%=ot;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return i.d=c,i.e=lr(c,n),$?X(i,a,u):i};C.precision=C.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(Ot+i);return t.d?(e=So(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};C.round=function(){var i=this,e=i.constructor;return X(new e(i),i.e+1,e.rounding)};C.sine=C.sin=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+Math.max(t.e,t.sd())+H,n.rounding=1,t=Xa(n,Lo(n,t)),n.precision=i,n.rounding=e,X(Tt>2?t.neg():t,i,e,!0)):new n(NaN)};C.squareRoot=C.sqrt=function(){var i,e,t,n,r,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for($=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Re(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=_e((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(pe(s,o,t+2,1)).times(.5),Re(o.d).slice(0,t)===(e=Re(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(X(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(X(n,u+1,1),i=!n.times(n).eq(s));break}return $=!0,X(n,u,l.rounding,i)};C.tangent=C.tan=function(){var i,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(i=n.precision,e=n.rounding,n.precision=i+10,n.rounding=1,t=t.sin(),t.s=1,t=pe(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,X(Tt==2||Tt==4?t.neg():t,i,e,!0)):new n(NaN)};C.times=C.mul=function(i){var e,t,n,r,o,s,a,u,c,l=this,m=l.constructor,d=l.d,p=(i=new m(i)).d;if(i.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!i.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?i.s/0:i.s*0);for(t=_e(l.e/H)+_e(i.e/H),u=d.length,c=p.length,u<c&&(o=d,d=p,p=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,r=u+n;r>n;)a=o[r]+p[n]*d[r-n-1]+e,o[r--]=a%ot|0,e=a/ot|0;o[r]=(o[r]+e)%ot|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=lr(o,t),$?X(i,m.precision,m.rounding):i};C.toBinary=function(i,e){return ii(this,2,i,e)};C.toDecimalPlaces=C.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(Ye(i,0,Nt),e===void 0?e=n.rounding:Ye(e,0,8),X(t,i+t.e+1,e))};C.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=ft(n,!0):(Ye(i,0,Nt),e===void 0?e=r.rounding:Ye(e,0,8),n=X(new r(n),i+1,e),t=ft(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};C.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=ft(r):(Ye(i,0,Nt),e===void 0?e=o.rounding:Ye(e,0,8),n=X(new o(r),i+r.e+1,e),t=ft(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};C.toFraction=function(i){var e,t,n,r,o,s,a,u,c,l,m,d,p=this,y=p.d,f=p.constructor;if(!y)return new f(p);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=So(y)-p.e-1,s=o%H,e.d[0]=Be(10,s<0?H+s:s),i==null)i=o>0?e:c;else{if(a=new f(i),!a.isInt()||a.lt(c))throw Error(Ot+a);i=a.gt(e)?o>0?e:c:a}for($=!1,a=new f(Re(y)),l=f.precision,f.precision=o=y.length*H*2;m=pe(a,e,0,1,1),r=t.plus(m.times(n)),r.cmp(i)!=1;)t=n,n=r,r=c,c=u.plus(m.times(r)),u=r,r=e,e=a.minus(m.times(r)),a=r;return r=pe(i.minus(t),n,0,1,1),u=u.plus(r.times(c)),t=t.plus(r.times(n)),u.s=c.s=p.s,d=pe(c,n,o,1).minus(p).abs().cmp(pe(u,t,o,1).minus(p).abs())<1?[c,n]:[u,t],f.precision=l,$=!0,d};C.toHexadecimal=C.toHex=function(i,e){return ii(this,16,i,e)};C.toNearest=function(i,e){var t=this,n=t.constructor;if(t=new n(t),i==null){if(!t.d)return t;i=new n(1),e=n.rounding}else{if(i=new n(i),e===void 0?e=n.rounding:Ye(e,0,8),!t.d)return i.s?t:i;if(!i.d)return i.s&&(i.s=t.s),i}return i.d[0]?($=!1,t=pe(t,i,0,e,1).times(i),$=!0,X(t)):(i.s=t.s,t=i),t};C.toNumber=function(){return+this};C.toOctal=function(i,e){return ii(this,8,i,e)};C.toPower=C.pow=function(i){var e,t,n,r,o,s,a=this,u=a.constructor,c=+(i=new u(i));if(!a.d||!i.d||!a.d[0]||!i.d[0])return new u(Be(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,i.eq(1))return X(a,n,o);if(e=_e(i.e/H),e>=i.d.length-1&&(t=c<0?-c:c)<=Wa)return r=Ko(u,a,t,n),i.s<0?new u(1).div(r):X(r,n,o);if(s=a.s,s<0){if(e<i.d.length-1)return new u(NaN);if((i.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Be(+a,c),e=t==0||!isFinite(t)?_e(c*(Math.log("0."+Re(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):($=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),r=ni(i.times(Lt(a,n+t)),n),r.d&&(r=X(r,n+5,1),gn(r.d,n,o)&&(e=n+10,r=X(ni(i.times(Lt(a,e+t)),e),e+5,1),+Re(r.d).slice(n+1,n+15)+1==1e14&&(r=X(r,n+1,0)))),r.s=s,$=!0,u.rounding=o,X(r,n,o))};C.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=ft(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(Ye(i,1,Nt),e===void 0?e=r.rounding:Ye(e,0,8),n=X(new r(n),i,e),t=ft(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};C.toSignificantDigits=C.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(Ye(i,1,Nt),e===void 0?e=n.rounding:Ye(e,0,8)),X(new n(t),i,e)};C.toString=function(){var i=this,e=i.constructor,t=ft(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};C.truncated=C.trunc=function(){return X(new this.constructor(this),this.e+1,1)};C.valueOf=C.toJSON=function(){var i=this,e=i.constructor,t=ft(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function Re(i){var e,t,n,r=i.length-1,o="",s=i[0];if(r>0){for(o+=s,e=1;e<r;e++)n=i[e]+"",t=H-n.length,t&&(o+=Rt(t)),o+=n;s=i[e],n=s+"",t=H-n.length,t&&(o+=Rt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function Ye(i,e,t){if(i!==~~i||i<e||i>t)throw Error(Ot+i)}function gn(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=H,r=0):(r=Math.ceil((e+1)/H),e%=H),o=Be(10,H-e),a=i[r]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(i[r+1]/o/100|0)==Be(10,e-2)-1||(a==o/2||a==0)&&(i[r+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(i[r+1]/o/1e3|0)==Be(10,e-3)-1,s}function or(i,e,t){for(var n,r=[0],o,s=0,a=i.length;s<a;){for(o=r.length;o--;)r[o]*=e;for(r[0]+=Jr.indexOf(i.charAt(s++)),n=0;n<r.length;n++)r[n]>t-1&&(r[n+1]===void 0&&(r[n+1]=0),r[n+1]+=r[n]/t|0,r[n]%=t)}return r.reverse()}function Ua(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/mr(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=nn(i,1,e.times(r),new i(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return i.precision-=t,e}var pe=function(){function i(n,r,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*r+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,r,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=r[a]){u=n[a]>r[a]?1:-1;break}return u}function t(n,r,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<r[o]?1:0,n[o]=a*s+n[o]-r[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,o,s,a,u){var c,l,m,d,p,y,f,b,g,h,A,k,P,x,B,I,S,N,V,Q,v=n.constructor,j=n.s==r.s?1:-1,ee=n.d,re=r.d;if(!ee||!ee[0]||!re||!re[0])return new v(!n.s||!r.s||(ee?re&&ee[0]==re[0]:!re)?NaN:ee&&ee[0]==0||!re?j*0:j/0);for(u?(p=1,l=n.e-r.e):(u=ot,p=H,l=_e(n.e/p)-_e(r.e/p)),V=re.length,S=ee.length,g=new v(j),h=g.d=[],m=0;re[m]==(ee[m]||0);m++);if(re[m]>(ee[m]||0)&&l--,o==null?(x=o=v.precision,s=v.rounding):a?x=o+(n.e-r.e)+1:x=o,x<0)h.push(1),y=!0;else{if(x=x/p+2|0,m=0,V==1){for(d=0,re=re[0],x++;(m<S||d)&&x--;m++)B=d*u+(ee[m]||0),h[m]=B/re|0,d=B%re|0;y=d||m<S}else{for(d=u/(re[0]+1)|0,d>1&&(re=i(re,d,u),ee=i(ee,d,u),V=re.length,S=ee.length),I=V,A=ee.slice(0,V),k=A.length;k<V;)A[k++]=0;Q=re.slice(),Q.unshift(0),N=re[0],re[1]>=u/2&&++N;do d=0,c=e(re,A,V,k),c<0?(P=A[0],V!=k&&(P=P*u+(A[1]||0)),d=P/N|0,d>1?(d>=u&&(d=u-1),f=i(re,d,u),b=f.length,k=A.length,c=e(f,A,b,k),c==1&&(d--,t(f,V<b?Q:re,b,u))):(d==0&&(c=d=1),f=re.slice()),b=f.length,b<k&&f.unshift(0),t(A,f,k,u),c==-1&&(k=A.length,c=e(re,A,V,k),c<1&&(d++,t(A,V<k?Q:re,k,u))),k=A.length):c===0&&(d++,A=[0]),h[m++]=d,c&&A[0]?A[k++]=ee[I]||0:(A=[ee[I]],k=1);while((I++<S||A[0]!==void 0)&&x--);y=A[0]!==void 0}h[0]||h.shift()}if(p==1)g.e=l,ko=y;else{for(m=1,d=h[0];d>=10;d/=10)m++;g.e=m+l*p-1,X(g,a?o+g.e+1:o,s,y)}return g}}();function X(i,e,t,n){var r,o,s,a,u,c,l,m,d,p=i.constructor;e:if(e!=null){if(m=i.d,!m)return i;for(r=1,a=m[0];a>=10;a/=10)r++;if(o=e-r,o<0)o+=H,s=e,l=m[d=0],u=l/Be(10,r-s-1)%10|0;else if(d=Math.ceil((o+1)/H),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=u=0,r=1,o%=H,s=o-H+1}else break e;else{for(l=a=m[d],r=1;a>=10;a/=10)r++;o%=H,s=o-H+r,u=s<0?0:l/Be(10,r-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%Be(10,r-s-1)),c=t<4?(u||n)&&(t==0||t==(i.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/Be(10,r-s):0:m[d-1])%10&1||t==(i.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=i.e+1,m[0]=Be(10,(H-e%H)%H),i.e=-e||0):m[0]=i.e=0,i;if(o==0?(m.length=d,a=1,d--):(m.length=d+1,a=Be(10,H-o),m[d]=s>0?(l/Be(10,r-s)%Be(10,s)|0)*a:0),c)for(;;)if(d==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,m[0]==ot&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=ot)break;m[d--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return $&&(i.e>p.maxE?(i.d=null,i.e=NaN):i.e<p.minE&&(i.e=0,i.d=[0])),i}function ft(i,e,t){if(!i.isFinite())return Ro(i);var n,r=i.e,o=Re(i.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Rt(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+Rt(-r-1)+o,t&&(n=t-s)>0&&(o+=Rt(n))):r>=s?(o+=Rt(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+Rt(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=Rt(n))),o}function lr(i,e){var t=i[0];for(e*=H;t>=10;t/=10)e++;return e}function ur(i,e,t){if(e>qa)throw $=!0,t&&(i.precision=t),Error(To);return X(new i(sr),e,1,!0)}function it(i,e,t){if(e>ti)throw Error(To);return X(new i(ar),e,t,!0)}function So(i){var e=i.length-1,t=e*H+1;if(e=i[e],e){for(;e%10==0;e/=10)t--;for(e=i[0];e>=10;e/=10)t++}return t}function Rt(i){for(var e="";i--;)e+="0";return e}function Ko(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/H+4);for($=!1;;){if(t%2&&(o=o.times(e),ho(o.d,s)&&(r=!0)),t=_e(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),ho(e.d,s)}return $=!0,o}function Ao(i){return i.d[i.d.length-1]&1}function Co(i,e,t){for(var n,r=new i(e[0]),o=0;++o<e.length;)if(n=new i(e[o]),n.s)r[t](n)&&(r=n);else{r=n;break}return r}function ni(i,e){var t,n,r,o,s,a,u,c=0,l=0,m=0,d=i.constructor,p=d.rounding,y=d.precision;if(!i.d||!i.d[0]||i.e>17)return new d(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?($=!1,u=y):u=e,a=new d(.03125);i.e>-2;)i=i.times(a),m+=5;for(n=Math.log(Be(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new d(1),d.precision=u;;){if(o=X(o.times(i),u,1),t=t.times(++l),a=s.plus(pe(o,t,u,1)),Re(a.d).slice(0,u)===Re(s.d).slice(0,u)){for(r=m;r--;)s=X(s.times(s),u,1);if(e==null)if(c<3&&gn(s.d,u-n,p,c))d.precision=u+=10,t=o=a=new d(1),l=0,c++;else return X(s,d.precision=y,p,$=!0);else return d.precision=y,s}s=a}}function Lt(i,e){var t,n,r,o,s,a,u,c,l,m,d,p=1,y=10,f=i,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?($=!1,l=A):l=e,g.precision=l+=y,t=Re(b),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(i),t=Re(f.d),n=t.charAt(0),p++;o=f.e,n>1?(f=new g("0."+t),o++):f=new g(n+"."+t.slice(1))}else return c=ur(g,l+2,A).times(o+""),f=Lt(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=A,e==null?X(f,A,h,$=!0):f;for(m=f,u=s=f=pe(f.minus(1),f.plus(1),l,1),d=X(f.times(f),l,1),r=3;;){if(s=X(s.times(d),l,1),c=u.plus(pe(s,new g(r),l,1)),Re(c.d).slice(0,l)===Re(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(ur(g,l+2,A).times(o+""))),u=pe(u,new g(p),l,1),e==null)if(gn(u.d,l-y,h,a))g.precision=l+=y,c=s=f=pe(m.minus(1),m.plus(1),l,1),d=X(f.times(f),l,1),r=a=1;else return X(u,g.precision=A,h,$=!0);else return g.precision=A,u;u=c,r+=2}}function Ro(i){return String(i.s*i.s/0)}function ri(i,e){var t,n,r;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(n,r),e){if(r-=n,i.e=t=t-n-1,i.d=[],n=(t+1)%H,t<0&&(n+=H),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=H;n<r;)i.d.push(+e.slice(n,n+=H));e=e.slice(n),n=H-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),$&&(i.e>i.constructor.maxE?(i.d=null,i.e=NaN):i.e<i.constructor.minE&&(i.e=0,i.d=[0]))}else i.e=0,i.d=[0];return i}function Ga(i,e){var t,n,r,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),Bo.test(e))return ri(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(va.test(e))t=16,e=e.toLowerCase();else if(Fa.test(e))t=2;else if(Da.test(e))t=8;else throw Error(Ot+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=i.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,r=Ko(n,new n(t),o,o*2)),c=or(e,t,ot),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(i.s*0):(i.e=lr(c,l),i.d=c,$=!1,s&&(i=pe(i,r,a*4)),u&&(i=i.times(Math.abs(u)<54?Be(2,u):wn.pow(2,u))),$=!0,i)}function Xa(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:nn(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/mr(5,t)),e=nn(i,2,e,e);for(var r,o=new i(5),s=new i(16),a=new i(20);t--;)r=e.times(e),e=e.times(o.plus(r.times(s.times(r).minus(a))));return e}function nn(i,e,t,n,r){var o,s,a,u,c=1,l=i.precision,m=Math.ceil(l/H);for($=!1,u=t.times(t),a=new i(n);;){if(s=pe(a.times(u),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=pe(s.times(u),new i(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return $=!0,s.d.length=m+1,s}function mr(i,e){for(var t=i;--e;)t*=i;return t}function Lo(i,e){var t,n=e.s<0,r=it(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return Tt=n?4:1,e;if(t=e.divToInt(r),t.isZero())Tt=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return Tt=Ao(t)?n?2:3:n?4:1,e;Tt=Ao(t)?n?1:4:n?3:2}return e.minus(r).abs()}function ii(i,e,t,n){var r,o,s,a,u,c,l,m,d,p=i.constructor,y=t!==void 0;if(y?(Ye(t,1,Nt),n===void 0?n=p.rounding:Ye(n,0,8)):(t=p.precision,n=p.rounding),!i.isFinite())l=Ro(i);else{for(l=ft(i),s=l.indexOf("."),y?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=or(ft(d),10,r),d.e=d.d.length),m=or(l,10,r),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(i=new p(i),i.d=m,i.e=o,i=pe(i,d,t,n,0,r),m=i.d,o=i.e,c=ko),s=m[t],a=r/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(i.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(i.s<0?8:7)),m.length=t,c)for(;++m[--t]>r-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=Jr.charAt(m[s]);if(y){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=or(l,r,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Jr.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return i.s<0?"-"+l:l}function ho(i,e){if(i.length>e)return i.length=e,!0}function za(i){return new this(i).abs()}function Ya(i){return new this(i).acos()}function Ha(i){return new this(i).acosh()}function ja(i,e){return new this(i).plus(e)}function Qa(i){return new this(i).asin()}function Za(i){return new this(i).asinh()}function $a(i){return new this(i).atan()}function Ja(i){return new this(i).atanh()}function eu(i,e){i=new this(i),e=new this(e);var t,n=this.precision,r=this.rounding,o=n+4;return!i.s||!e.s?t=new this(NaN):!i.d&&!e.d?(t=it(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?it(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=it(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(pe(i,e,o,1)),e=it(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(pe(i,e,o,1)),t}function tu(i){return new this(i).cbrt()}function nu(i){return X(i=new this(i),i.e+1,2)}function ru(i,e,t){return new this(i).clamp(e,t)}function iu(i){if(!i||typeof i!="object")throw Error(cr+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,Nt,"rounding",0,8,"toExpNeg",-tn,0,"toExpPos",0,tn,"maxE",0,tn,"minE",-tn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=ei[t]),(n=i[t])!==void 0)if(_e(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Ot+t+": "+n);if(t="crypto",r&&(this[t]=ei[t]),(n=i[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(Io);else this[t]=!1;else throw Error(Ot+t+": "+n);return this}function ou(i){return new this(i).cos()}function su(i){return new this(i).cosh()}function Oo(i){var e,t,n;function r(o){var s,a,u,c=this;if(!(c instanceof r))return new r(o);if(c.constructor=r,Po(o)){c.s=o.s,$?!o.d||o.e>r.maxE?(c.e=NaN,c.d=null):o.e<r.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;$?s>r.maxE?(c.e=NaN,c.d=null):s<r.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return ri(c,o.toString())}else if(u!=="string")throw Error(Ot+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),Bo.test(o)?ri(c,o):Ga(c,o)}if(r.prototype=C,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=iu,r.clone=Oo,r.isDecimal=Po,r.abs=za,r.acos=Ya,r.acosh=Ha,r.add=ja,r.asin=Qa,r.asinh=Za,r.atan=$a,r.atanh=Ja,r.atan2=eu,r.cbrt=tu,r.ceil=nu,r.clamp=ru,r.cos=ou,r.cosh=su,r.div=au,r.exp=uu,r.floor=cu,r.hypot=lu,r.ln=mu,r.log=du,r.log10=fu,r.log2=pu,r.max=yu,r.min=bu,r.mod=gu,r.mul=wu,r.pow=Au,r.random=hu,r.round=Pu,r.sign=ku,r.sin=Tu,r.sinh=Iu,r.sqrt=xu,r.sub=Bu,r.sum=Su,r.tan=Ku,r.tanh=Cu,r.trunc=Ru,i===void 0&&(i={}),i&&i.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)i.hasOwnProperty(t=n[e++])||(i[t]=this[t]);return r.config(i),r}function au(i,e){return new this(i).div(e)}function uu(i){return new this(i).exp()}function cu(i){return X(i=new this(i),i.e+1,3)}function lu(){var i,e,t=new this(0);for($=!1,i=0;i<arguments.length;)if(e=new this(arguments[i++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return $=!0,new this(1/0);t=e}return $=!0,t.sqrt()}function Po(i){return i instanceof wn||i&&i.toStringTag===xo||!1}function mu(i){return new this(i).ln()}function du(i,e){return new this(i).log(e)}function pu(i){return new this(i).log(2)}function fu(i){return new this(i).log(10)}function yu(){return Co(this,arguments,"lt")}function bu(){return Co(this,arguments,"gt")}function gu(i,e){return new this(i).mod(e)}function wu(i,e){return new this(i).mul(e)}function Au(i,e){return new this(i).pow(e)}function hu(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:Ye(i,1,Nt),n=Math.ceil(i/H),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)r=e[o],r>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)r=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(r%1e7),o+=4);o=n/4}else throw Error(Io);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=H,n&&i&&(r=Be(10,H-i),a[o]=(n/r|0)*r);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=H)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<H&&(t-=H-n)}return s.e=t,s.d=a,s}function Pu(i){return X(i=new this(i),i.e+1,this.rounding)}function ku(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function Tu(i){return new this(i).sin()}function Iu(i){return new this(i).sinh()}function xu(i){return new this(i).sqrt()}function Bu(i,e){return new this(i).sub(e)}function Su(){var i=0,e=arguments,t=new this(e[i]);for($=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return $=!0,X(t,this.precision,this.rounding)}function Ku(i){return new this(i).tan()}function Cu(i){return new this(i).tanh()}function Ru(i){return X(i=new this(i),i.e+1,1)}C[Symbol.for("nodejs.util.inspect.custom")]=C.toString;C[Symbol.toStringTag]="Decimal";var wn=C.constructor=Oo(ei);sr=new wn(sr);ar=new wn(ar);var M=wn;import{PublicKey as ci}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Lu}from"@solana/spl-token";import{PublicKey as ge,SystemProgram as No,SYSVAR_RENT_PUBKEY as Ou}from"@solana/web3.js";function T({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var oi=[T({pubkey:Lu,isWritable:!1}),T({pubkey:No.programId,isWritable:!1}),T({pubkey:Ou,isWritable:!1})];function si({publicKey:i,transformSol:e}){let t=ai(i.toString());if(t instanceof ge)return e&&t.equals(Se)?te:t;if(e&&t.toString()===Se.toBase58())return te;if(typeof t=="string"){if(t===ge.default.toBase58())return ge.default;try{return new ge(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function ai(i){try{return new ge(i)}catch{return i}}var dr=new ge("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Mo=new ge("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),st=new ge("SysvarRent111111111111111111111111111111111"),_o=new ge("SysvarC1ock11111111111111111111111111111111"),rn=new ge("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Nu=new ge("Sysvar1nstructions1111111111111111111111111"),ui=No.programId,xm=new ge("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Bm=new ge("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Sm=new ge("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Km=new ge("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Cm=new ge("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Rm=new ge("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Lm=new ge("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Om=new ge("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Nm=new ge("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Mm=new ge("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),_m=new ge("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),te=new ge("So11111111111111111111111111111111111111112"),Se=ge.default;function on(i){return si({publicKey:i,transformSol:!0})}import{PublicKey as Mu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Eo}from"@solana/spl-token";var Mt={chainId:101,address:Mu.default.toBase58(),programId:Eo.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Le={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Eo.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};var li=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===Se.toBase58()||e instanceof ci&&Se.equals(e)){this.decimals=Le.decimals,this.symbol=Le.symbol,this.name=Le.name,this.mint=new ci(Le.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=r||e.toString().substring(0,6),this.mint=o?ci.default:si({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},he=li;he.WSOL=new li(W(R({},Le),{mint:Le.address}));import fr from"big.js";import Vu from"bn.js";import Fu from"decimal.js-light";import _u from"toformat";var Eu=_u,An=Eu;var pr=oe("module/fraction"),mi=An(fr),hn=An(Fu),vu={[0]:hn.ROUND_DOWN,[1]:hn.ROUND_HALF_UP,[2]:hn.ROUND_UP},Du={[0]:fr.roundDown,[1]:fr.roundHalfUp,[2]:fr.roundUp},me=class{constructor(e,t=new Vu(1)){this.numerator=Y(e),this.denominator=Y(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new me(this.denominator,this.numerator)}add(e){let t=e instanceof me?e:new me(Y(e));return this.denominator.eq(t.denominator)?new me(this.numerator.add(t.numerator),this.denominator):new me(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof me?e:new me(Y(e));return this.denominator.eq(t.denominator)?new me(this.numerator.sub(t.numerator),this.denominator):new me(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof me?e:new me(Y(e));return new me(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof me?e:new me(Y(e));return new me(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||pr.logWithError(`${e} is not an integer.`),e<=0&&pr.logWithError(`${e} is not positive.`),hn.set({precision:e+1,rounding:vu[n]});let r=new hn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||pr.logWithError(`${e} is not an integer.`),e<0&&pr.logWithError(`${e} is negative.`),mi.DP=e,mi.RM=Du[n]||1,new mi(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var qu=oe("Raydium_price"),Je=class extends me{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new me(di(n.decimals),di(r.decimals))}get raw(){return new me(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Je({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&qu.logWithError("mul token not equals");let n=super.mul(t);return new Je({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};var pi=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},yr=pi;yr.SOL=new pi(Mt);import Uu from"bn.js";var Vo=new me(new Uu(100)),Qe=class extends me{toSignificant(e=5,t,n){return this.mul(Vo).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Vo).toFixed(e,t,n)}};var qe=new He(0),vo=new He(1),Ld=new He(2),Od=new He(3),Nd=new He(5),fi=new He(10),Md=new He(100),_d=new He(1e3),Ed=new He(1e4),Fo=9007199254740991;function Y(i){let e=oe("Raydium_parseBigNumberish");if(i instanceof He)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new He(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=Fo||i<=-Fo)&&e.logWithError(`BigNumberish number overflow: ${i}`),new He(String(i))):typeof i=="bigint"?new He(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new He(0))}function di(i){return fi.pow(Y(i))}function br(i,e){let t=i.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var Xu=oe("Raydium_amount"),Wo=An(Gu);function zu(i,e){let t="0",n="0";if(i.includes(".")){let r=i.split(".");r.length===2?([t,n]=r,n=n.padEnd(e,"0")):Xu.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var ke=class extends me{constructor(t,n,r=!0,o){let s=new gr(0),a=fi.pow(new gr(t.decimals));if(r)s=Y(n);else{let u=new gr(0),c=new gr(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=zu(n.toString(),t.decimals);u=Y(l),c=Y(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=oe(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new ke(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new ke(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,r=0){return super.toSignificant(t,n,r)}toFixed(t=this.token.decimals,n,r=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,r)}toExact(t={groupSeparator:""}){return Wo.DP=this.token.decimals,new Wo(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function Do(i){return typeof i=="object"&&i!==null&&![he,ke,Yu,me,Hu,Je,Qe].some(e=>typeof e=="object"&&i instanceof e)}function Ue(i){return typeof i=="string"?ai(i):Array.isArray(i)?i.map(e=>Ue(e)):Do(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,Ue(t)])):i}import{PublicKey as Tn,sendAndConfirmTransaction as In,Transaction as xn,TransactionMessage as Bn,VersionedTransaction as Sn}from"@solana/web3.js";import ec from"axios";var 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 ju,ComputeBudgetProgram as qo,Transaction as Go,TransactionMessage as Qu,Keypair as Xo,VersionedTransaction as zo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Zu}from"@solana/spl-token";var Uo=oe("Raydium_txUtil"),Yo=1644;function wr(i){let e=[],t=[];return i.microLamports&&(e.push(qo.setComputeUnitPrice({microLamports:i.microLamports})),t.push(E.SetComputeUnitPrice)),i.units&&(e.push(qo.setComputeUnitLimit({units:i.units})),t.push(E.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function sn(i){var e,t;try{return((t=await((e=i.getLatestBlockhash)==null?void 0:e.call(i)))==null?void 0:t.blockhash)||(await i.getRecentBlockhash()).blockhash}catch{return(await i.getRecentBlockhash()).blockhash}}function yi(i,e){i.length<1&&Uo.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&Uo.logWithError(`no signers provided:, ${e.toString()}`);let t=new Go;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Yo}catch{return!1}}function ue(i,e){let[t,n]=ju.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function Pn({instructions:i,payer:e,signers:t}){return yi(i,[e,...t])}function kn({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Xo.generate().publicKey.toString()}){let o=new Qu({payerKey:e,recentBlockhash:n,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new zo(o).serialize()).toString("base64").length<Yo}catch{return!1}}var $u=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i);function Gt(i){let e=[];return i.forEach(t=>{t instanceof Go&&(t.recentBlockhash||(t.recentBlockhash=Zu.toBase58()),t.feePayer||(t.feePayer=Xo.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof zo&&(n=$u(n));let r=n.toString("base64");e.push(r)}),console.log("simulate tx string:",e),e}import{PublicKey as Ho,AddressLookupTableAccount as hr}from"@solana/web3.js";import{PublicKey as Ju}from"@solana/web3.js";import{getTransferFeeConfig as Tp,unpackMint as Ip}from"@solana/spl-token";var bi=oe("Raydium_accountInfo_util");async function yt(i,e,t){let{batchRequest:n,commitment:r="confirmed"}=R({batchRequest:!1},t),o=gi(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=i._buildArgs([l.map(d=>d.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=gi(a,10);s=(await(await Promise.all(u.map(async l=>await i._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&bi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:d,executable:p,lamports:y,owner:f,rentEpoch:b}=m;return d.length!==2&&d[1]!=="base64"&&bi.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:p,lamports:y,owner:new Ju(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>i.getMultipleAccountsInfo(a,r)))}catch(a){a instanceof Error&&bi.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Ar(i,e,t){let n=await yt(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>W(R({},r),{accountInfo:n[o]}))}async function wi({connection:i,address:e}){let t=await yt(i,[...new Set(e.map(r=>r.toString()))].map(r=>new Ho(r))),n={};for(let r=0;r<e.length;r++){let o=t[r],s=e[r];if(!o)continue;let a=new hr({key:s,state:hr.deserialize(o.data)});n[s.toString()]=a,Pr[s.toString()]=a}return n}var Pr={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new hr({key:new Ho("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:hr.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 kr=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await ec.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}=wr(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:r=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...r),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==Tn.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 xn;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:r,skipPreflight:o=!0}=n||{},s=r!=null?r:await sn(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),Gt([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await In(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:o}),signedTx:u[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:r}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[r,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var f;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{},y=d!=null?d:await sn(this.connection);if((f=this.owner)!=null&&f.isKeyPair){if(l){let b=[];for(let g of s){let h=await In(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 In(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));Gt(b);let g=await this.signAllTransactions(b);if(l){let h=0,A=[],k=async()=>{if(!g[h])return;let P=await this.connection.sendRawTransaction(g[h].serialize(),{skipPreflight:p});A.push({txId:P,status:"sent",signedTx:g[h]}),m==null||m([...A]),h++,this.connection.onSignature(P,x=>{let B=A.findIndex(I=>I.txId===P);B>-1&&(A[B].status=x.err?"error":"success"),m==null||m([...A]),x.err||k()},"processed"),this.connection.getSignatureStatus(P)};return await k(),{txIds:A.map(P=>P.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 d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:r}=d,o=Ae(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=R(R({},this.cluster==="devnet"?{}:Pr),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let p of a)s[p]===void 0&&u.push(new Tn(p));let c=await wi({connection:this.connection,address:u});for(let[p,y]of Object.entries(c))s[p]=y;let l=new Bn({payerKey:this.feePayer,recentBlockhash:r?Tn.default.toBase58():await sn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new Sn(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async p=>{var b;let{recentBlockHash:y,skipPreflight:f=!0}=p||{};if(y&&(m.message.recentBlockhash=y),Gt([m]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let g=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:h,blockhash:A}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:h,signature:g},"confirmed"),{txId:g,signedTx:m}}if(this.signAllTransactions){let g=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(g[0],{skipPreflight:f}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:r}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[r,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return s.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var y;let{sequentially:l,onTxUpdate:m,recentBlockHash:d,skipPreflight:p=!0}=c||{};if(d&&s.forEach(f=>f.message.recentBlockhash=d),Gt(s),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();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:P}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:P,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]}),m==null||m([...g]),b++,this.connection.onSignature(A,k=>{let P=g.findIndex(x=>x.txId===A);P>-1&&(g[P].status=k.err?"error":"success"),m==null||m([...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 c=e||{},{computeBudgetConfig:t}=c,n=Ae(c,["computeBudgetConfig"]),r=t?wr(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>W(R({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],d=t?[...r.instructions,...m]:m,y=[...new Set(m.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(f=>new Tn(f));if(u.length<12&&Pn({instructions:d,payer:this.feePayer,signers:y})||Pn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Pn({instructions:t?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new xn().add(...r.instructions,...u)):s.push(new xn().add(...u)),a.push(Array.from(new Set(u.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),u=[l]}}),u.length>0){let m=[...new Set(u.map(d=>d.keys.filter(p=>p.isSigner).map(p=>p.pubkey.toString())).flat()).values()].map(d=>o[d]).filter(d=>d!==void 0);Pn({instructions:t?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(d=>d.publicKey)})?s.push(new xn().add(...r.instructions,...u)):s.push(new xn().add(...u)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var b;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:y=!0}=l||{},f=p!=null?p:await sn(this.connection);if(s.forEach(async(g,h)=>{g.recentBlockhash=f,a[h].length&&g.sign(...a[h])}),Gt(s),(b=this.owner)!=null&&b.isKeyPair){if(m){let g=[];for(let h of s){let A=await In(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 In(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(m){let h=0,A=[],k=async()=>{if(!g[h])return;let P=await this.connection.sendRawTransaction(g[h].serialize(),{skipPreflight:y});A.push({txId:P,status:"sent",signedTx:g[h]}),d==null||d([...A]),h++,this.connection.onSignature(P,x=>{let B=A.findIndex(I=>I.txId===P);B>-1&&(A[B].status=x.err?"error":"success"),d==null||d([...A]),x.err||k()},"processed"),this.connection.getSignatureStatus(P)};return await k(),{txIds:A.map(P=>P.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:r=[]}=b,o=Ae(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=R(R({},this.cluster==="devnet"?{}:Pr),n),a=Array.from(new Set([...this.lookupTableAddress,...r])),u=[];for(let g of a)s[g]===void 0&&u.push(new Tn(g));let c=await wi({connection:this.connection,address:u});for(let[g,h]of Object.entries(c))s[g]=h;let l=t?wr(t):{instructions:[],instructionTypes:[]},m=await sn(this.connection),d=this.signers.reduce((g,h)=>W(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&&kn({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||kn({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 P of[...new Set(a)])s[P]!==void 0&&(k[P]=s[P]);if(t&&kn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let P=new Bn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Sn(P))}else{let P=new Bn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Sn(P))}y.push(Array.from(new Set(f.map(P=>P.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat())).map(P=>d[P]).filter(P=>P!==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=>d[A]).filter(A=>A!==void 0);if(t&&kn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Bn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new Sn(A))}else{let A=new Bn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new Sn(A))}y.push(h)}return{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var x;let{sequentially:h,onTxUpdate:A,recentBlockHash:k,skipPreflight:P=!0}=g||{};if(p.map(async(B,I)=>{y[I].length&&B.sign(y[I]),k&&(B.message.recentBlockhash=k)}),Gt(p),(x=this.owner)!=null&&x.isKeyPair){let{lastValidBlockHeight:B,blockhash:I}=await this.connection.getLatestBlockhash();if(p.forEach((S,N)=>{y[N].find(V=>V.publicKey.equals(this.owner.publicKey))||S.sign([this.owner.signer])}),h){let S=[];for(let N of p){let V=await this.connection.sendTransaction(N,{skipPreflight:P}),{lastValidBlockHeight:Q,blockhash:v}=await this.connection.getLatestBlockhash();await this.connection.confirmTransaction({blockhash:v,lastValidBlockHeight:Q,signature:V},"confirmed"),S.push(V)}return{txIds:S,signedTxs:p}}return{txIds:await Promise.all(p.map(async S=>{let N=await this.connection.sendTransaction(S,{skipPreflight:P});return await this.connection.confirmTransaction({blockhash:I,lastValidBlockHeight:B,signature:N},"confirmed"),N})),signedTxs:p}}if(this.signAllTransactions){let B=await this.signAllTransactions(p);if(h){let I=0,S=[],N=async()=>{if(!B[I])return;let V=await this.connection.sendTransaction(B[I],{skipPreflight:P});S.push({txId:V,status:"sent",signedTx:B[I]}),A==null||A([...S]),I++,this.connection.onSignature(V,Q=>{let v=S.findIndex(j=>j.txId===V);v>-1&&(S[v].status=Q.err?"error":"success"),A==null||A([...S]),Q.err||N()},"processed"),this.connection.getSignatureStatus(V)};return N(),{txIds:[],signedTxs:B}}else{let I=[];for(let S=0;S<B.length;S+=1){let N=await this.connection.sendTransaction(B[S],{skipPreflight:P});I.push(N)}return{txIds:I,signedTxs:B}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};var at=class{constructor(e){this._owner=e}get publicKey(){return at.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return at.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return at.isKeyPair(this._owner)}get isPublicKey(){return at.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!at.isKeyPair(e)}};function gi(i,e=1,t=[]){let n=[...i];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{PublicKey as ce}from"@solana/web3.js";var jo=new ce("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Qo=new ce("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Kn=new ce("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),zp=new ce("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Yp=new ce("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Hp=new ce("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Zo=new ce("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),jp=new ce("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Qp=new ce("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Zp=new ce("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),$p=new ce("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),tc=new ce("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),nc=new ce("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),rc=new ce("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),ic=new ce("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Jp=new ce("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),ef=new ce("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),tf=new ce("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),oc=new ce("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),sc=new ce("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),ac=new ce("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),Cn={IDO_PROGRAM_ID_V1:tc,IDO_PROGRAM_ID_V2:nc,IDO_PROGRAM_ID_V3:rc,IDO_PROGRAM_ID_V4:ic};var nf={SERUM_MARKET:ce.default,OPENBOOK_MARKET:new ce("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:ce.default,FarmV3:new ce("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new ce("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new ce("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new ce("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new ce("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new ce("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new ce("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:oc,CREATE_CPMM_POOL_AUTH:sc,CREATE_CPMM_POOL_FEE_ACC:ac,FEE_DESTINATION_ID:new ce("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as uc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as cc}from"@solana/spl-token";function we(i,e,t){return ue([i.toBuffer(),(t!=null?t:cc).toBuffer(),e.toBuffer()],new uc("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import ut from"bn.js";var Rn=1e4;function ye(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=W(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}}),o=t.epoch<r.newerTransferFee.epoch?r.olderTransferFee:r.newerTransferFee,s=new ut(o.maximumFee.toString()),a=t.epoch<r.newerTransferFee.epoch?(Number(r.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===Rn){let u=new ut(o.maximumFee.toString());return{amount:i.add(u),fee:u,expirationTime:a}}else{let u=Ln(i.mul(new ut(Rn)),new ut(Rn-o.transferFeeBasisPoints)),c=new ut(o.maximumFee.toString()),l=u.sub(i).gt(c)?i.add(c):u,m=Ln(l.mul(new ut(o.transferFeeBasisPoints)),new ut(Rn)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let u=Ln(i.mul(new ut(o.transferFeeBasisPoints)),new ut(Rn)),c=u.gt(s)?s:u;return{amount:i,fee:c,expirationTime:a}}}function Xt(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function Ln(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new ut(0))?t.add(new ut(1)):t}var Oe={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"},Cf=R({},Oe);var $o="ray_tab_hash",Ai="ray_req_hash",lc=()=>{if(typeof window===void 0)return"";let i=sessionStorage.getItem($o);return i||(i=`ray-${Date.now()}`,sessionStorage.setItem($o,i)),i},Ir=async n=>{var r=n,{logCount:i=1e3,removeLastLog:e}=r,t=Ae(r,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(Ai)||"[]").slice(0,i-1);e&&o.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),o.unshift(W(R({},t),{time:Date.now(),session:lc()}));try{localStorage.setItem(Ai,JSON.stringify(o))}catch{if(e){let s=!1,a=JSON.stringify(t.data).substring(0,100);for(o[0].data=a+(a.length>100?"...":"");!s;){o.pop();let u=JSON.stringify(t.data).substring(0,100);o[0].data=u+(u.length>100?"...":"");try{localStorage.setItem(Ai,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return Ir(W(R({},t),{logCount:i,removeLastLog:!0}))}};var xr=oe("Raydium_Api"),hi=new Map;var Br=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:r,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=r||1e3,this.api=dc.create({baseURL:this.urlConfigs.BASE_HOST||Oe.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return xr.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(xr.error("Request failed"),Promise.reject(s))),this.api.interceptors.response.use(s=>{let{config:a,data:u,status:c}=s,{method:l,baseURL:m,url:d}=a;return n&&Ir({status:c,url:`${m}${d}`,params:a.params,data:u,logCount:this.logCount}),xr.debug(`${l==null?void 0:l.toUpperCase()} ${m}${d} ${c}`),u},s=>{let{config:a,response:u={}}=s,{status:c}=u,{method:l,baseURL:m,url:d}=a;return n&&Ir({status:c,url:`${m}${d}`,params:a.params,data:s.message,logCount:this.logCount}),xr.error(`${l.toUpperCase()} ${m}${d} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||Oe.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||Oe.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await this.api.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(r=>r.numSlots);return n.reduce((r,o)=>r+o,0)/n.length/60}async getChainTimeOffset(){return(await this.api.get(this.urlConfigs.CHAIN_TIME||Oe.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||Oe.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||Oe.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||Oe.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||Oe.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:r="desc",page:o=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||Oe.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${r}&page=${o}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||Oe.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],r=t.filter(s=>hi.has(s)?(n.push(hi.get(s)),!1):!0),o=[];return r.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||Oe.POOL_KEY_BY_ID)+`?ids=${r.join(",")}`)).data.filter(Boolean),o.forEach(a=>{hi.set(a.id,a)})),n.concat(o)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:r="all",sort:o="default",order:s="desc",page:a=1}=e,[u,c]=[t&&on(t).toBase58(),n&&n!=="undefined"?on(n).toBase58():""],[l,m]=c&&u>c?[c,u]:[u,c];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||Oe.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${r}&poolSortField=${o}&sortType=${s}&pageSize=100&page=${a}`)).data}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||Oe.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||Oe.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||Oe.CHECK_AVAILABILITY)).data}};var Sr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",Jo="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as Li,TOKEN_PROGRAM_ID as Vt,AccountLayout as cn,TOKEN_2022_PROGRAM_ID as Wc}from"@solana/spl-token";import{PublicKey as _r,SystemProgram as qc}from"@solana/web3.js";var Pi=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Pe=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=oe(t)}createTxBuilder(e){return this.scope.checkOwner(),new kr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(Pi(e))}logInfo(...e){this.logger.info(Pi(e))}logAndCreateError(...e){let t=Pi(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as _c,createCloseAccountInstruction as Ec,createTransferInstruction as Vc,TOKEN_PROGRAM_ID as un}from"@solana/spl-token";import{PublicKey as Fc,SystemProgram as vc}from"@solana/web3.js";import Dc from"bn.js";import{PublicKey as ps,Keypair as Lc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Oc}from"@solana/spl-token";import Nc from"bn.js";import{PublicKey as Ic}from"@solana/web3.js";import is,{isBN as os}from"bn.js";import{bits as pc,BitStructure as cy,blob as fc,Blob as ly,cstr as my,f32 as dy,f32be as py,f64 as fy,f64be as yy,greedy as by,Layout as yc,ns64 as gy,ns64be as wy,nu64 as bc,nu64be as Ay,offset as hy,s16 as Py,s16be as ky,s24 as Ty,s24be as Iy,s32 as gc,s32be as xy,s40 as By,s40be as Sy,s48 as Ky,s48be as Cy,s8 as Ry,seq as wc,struct as Ly,Structure as Ac,u16 as hc,u16be as Oy,u24 as Ny,u24be as My,u32 as Pc,u32be as _y,u40 as Ey,u40be as Vy,u48 as Fy,u48be as vy,u8 as kc,UInt as Tc,union as Dy,Union as Wy,unionLayoutDiscriminator as qy,utf8 as Uy}from"@solana/buffer-layout";var Kr=yc,es=Ac;var ki=Tc;var ts=kc,bt=hc;var Ti=Pc;var ns=bc;var Ne=gc;var rs=wc;var be=fc;var Ii=pc;var zt=class extends Kr{constructor(t,n,r){super(t,r);this.blob=be(t),this.signed=n}decode(t,n=0){let r=new is(this.blob.decode(t,n),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,n,r=0){return typeof t=="number"&&(t=new is(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}},Cr=class extends Kr{constructor(t){super(8,t);this._lower=Ii(Ti(),!1),this._upper=Ii(Ti(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let r=this._lower.decode(t,n),o=this._upper.decode(t,n+this._lower.span);return R(R({},r),o)}encode(t,n,r=0){return this._lower.encode(t,n,r)+this._upper.encode(t,n,r+this._lower.span)}};function F(i){return new ki(1,i)}function Ge(i){return new ki(4,i)}function w(i){return new zt(8,!1,i)}function z(i){return new zt(16,!1,i)}function ss(i){return new zt(1,!0,i)}function Lr(i){return new zt(8,!0,i)}function as(i){return new zt(16,!0,i)}var Rr=class extends Kr{constructor(t,n,r,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=r}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,r){return this.layout.encode(this.encoder(t),n,r)}getSpan(t,n){return this.layout.getSpan(t,n)}};function K(i){return new Rr(be(32),e=>new Ic(e),e=>e.toBuffer(),i)}function Ee(i){return new Rr(ts(),xc,Bc,i)}function xc(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function Bc(i){return i?1:0}var xi=class extends es{decode(e,t){return super.decode(e,t)}};function _(i,e,t){return new xi(i,e,t)}function q(i,e,t){let n,r=typeof e=="number"?e:os(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=os(a)?a.toNumber():a,Reflect.set(o,"count",n)}return Reflect.get(o,s)},set(o,s,a){return s==="count"&&(n=a),Reflect.set(o,s,a)}});return rs(i,r,t)}var an=_([K("mint"),K("owner"),w("amount"),Ge("delegateOption"),K("delegate"),F("state"),Ge("isNativeOption"),w("isNative"),w("delegatedAmount"),Ge("closeAuthorityOption"),K("closeAuthority")]);function Sc(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function Bi(i,...e){if(!Sc(i))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(i.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${i.length}`)}function Si(i,e=!0){if(i.destroyed)throw new Error("Hash instance has been destroyed");if(e&&i.finished)throw new Error("Hash#digest() has already been called")}function us(i,e){Bi(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Nr=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),ct=(i,e)=>i<<32-e|i>>>e;var ib=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Kc(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function Ki(i){return typeof i=="string"&&(i=Kc(i)),Bi(i),i}var Or=class{clone(){return this._cloneInto()}},ob={}.toString;function cs(i){let e=n=>i().update(Ki(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function Cc(i,e,t,n){if(typeof i.setBigUint64=="function")return i.setBigUint64(e,t,n);let r=BigInt(32),o=BigInt(4294967295),s=Number(t>>r&o),a=Number(t&o),u=n?4:0,c=n?0:4;i.setUint32(e+u,s,n),i.setUint32(e+c,a,n)}var ls=(i,e,t)=>i&e^~i&t,ms=(i,e,t)=>i&e^i&t^e&t,Mr=class extends Or{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Nr(this.buffer)}update(e){Si(this);let{view:t,buffer:n,blockLen:r}=this;e=Ki(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(r-this.pos,o-s);if(a===r){let u=Nr(e);for(;r<=o-s;s+=r)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Si(this),us(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(n,0),s=0);for(let m=s;m<r;m++)t[m]=0;Cc(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=Nr(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:r,finished:o,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=o,e.destroyed=s,r%t&&e.buffer.set(n),e}};var Rc=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]),_t=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Et=new Uint32Array(64),Ci=class extends Mr{constructor(){super(64,32,8,!1),this.A=_t[0]|0,this.B=_t[1]|0,this.C=_t[2]|0,this.D=_t[3]|0,this.E=_t[4]|0,this.F=_t[5]|0,this.G=_t[6]|0,this.H=_t[7]|0}get(){let{A:e,B:t,C:n,D:r,E:o,F:s,G:a,H:u}=this;return[e,t,n,r,o,s,a,u]}set(e,t,n,r,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)Et[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=Et[m-15],p=Et[m-2],y=ct(d,7)^ct(d,18)^d>>>3,f=ct(p,17)^ct(p,19)^p>>>10;Et[m]=f+Et[m-7]+y+Et[m-16]|0}let{A:n,B:r,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let d=ct(a,6)^ct(a,11)^ct(a,25),p=l+d+ls(a,u,c)+Rc[m]+Et[m]|0,f=(ct(n,2)^ct(n,13)^ct(n,22))+ms(n,r,o)|0;l=c,c=u,u=a,a=s+p|0,s=o,o=r,r=n,n=p+f|0}n=n+this.A|0,r=r+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,r,o,s,a,u,c,l)}roundClean(){Et.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var ds=cs(()=>new Ci);var kb=oe("Raydium_Util");function fs({owner:i,solAccountResp:e,tokenAccountResp:t}){let n=[],r=[];for(let{pubkey:o,account:s}of t.value){let a=an.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:we(i,u,s.owner).publicKey.equals(o),isNative:!1,programId:s.owner}),r.push({pubkey:o,accountInfo:a,programId:s.owner})}return e&&n.push({mint:ps.default,amount:new Nc(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:r}}function Ve({fromPublicKey:i,programId:e=Oc}){let t=Lc.generate().publicKey.toBase58().slice(0,32);return{publicKey:Mc(i,t,e),seed:t}}function Mc(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=ds(n);return new ps(r)}function Ri(i){let{mint:e,tokenAccount:t,owner:n,programId:r=un}=i;return _c(t,e,n,r)}function It(i){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:r,programId:o=un}=i;return Ec(e,t,r,n,o)}async function xt(i){let{connection:e,amount:t,commitment:n,payer:r,owner:o,skipCloseAccount:s}=i,a=await e.getMinimumBalanceForRentExemption(an.span,n),u=Y(t).add(new Dc(a)),c=Ve({fromPublicKey:r,programId:un});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[vc.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:an.span,programId:un}),Ri({mint:new Fc(Le.address),tokenAccount:c.publicKey,owner:o,programId:un})],instructionTypes:[E.CreateAccount,E.InitAccount],endInstructionTypes:s?[]:[E.CloseAccount],endInstructions:s?[]:[It({tokenAccount:c.publicKey,payer:r,owner:o})]}}function On({source:i,destination:e,owner:t,amount:n,multiSigners:r=[],tokenProgram:o=un}){return Vc(i,e,t,BigInt(String(n)),r,o)}var Nn=class extends Pe{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:r}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=r||[],this._clientOwnedToken=!!(n||r)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}updateTokenAccount({tokenAccounts:t,tokenAccountRawInfos:n}){return t&&(this._tokenAccounts=t),n&&(this._tokenAccountRawInfos=n),this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=void 0,this._clientOwnedToken=!0,this}addAccountChangeListener(t){return this._accountListener.push(t),this}removeAccountChangeListener(t){return this._accountListener=this._accountListener.filter(n=>n!==t),this}getAssociatedTokenAccount(t,n){return we(this.scope.ownerPubKey,t,n).publicKey}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length)return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let r=R(R({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,r.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Vt},r.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Wc},r.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=fs({owner:this.scope.ownerPubKey,solAccountResp:o,tokenAccountResp:{context:s.context,value:[...s.value,...a.value]}});return this._tokenAccounts=u,this._tokenAccountRawInfos=c,this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>this.fetchWalletTokenAccounts({forceUpdate:!0}),t==null?void 0:t.commitment),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=Vt,associatedOnly:r=!0}){await this.fetchWalletTokenAccounts();let o=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,u)=>a.amount.lt(u.amount)?1:-1),s=this.getAssociatedTokenAccount(t,n);for(let a of o){let{publicKey:u}=a;if(u&&(!r||r&&s.equals(u)))return u}}async getOrCreateTokenAccount(t){var y,f,b,g;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:r,associatedOnly:o,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new _r(t.tokenProgram||Vt),m=this.getAssociatedTokenAccount(n,new _r(l)),d=(a?[]:this.tokenAccountRawInfos).filter(h=>h.accountInfo.mint.equals(n)&&(!o||h.pubkey.equals(m))).sort((h,A)=>h.accountInfo.amount.lt(A.accountInfo.amount)?1:-1);if(r===void 0||d.length>0)return d.length>0?{account:d[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(o){let h=Li(s,m,s,n,l);if(c){let A=await this.scope.connection.getAccountInfo(m);if(A===null)(y=p.instructions)==null||y.push(h),p.instructionTypes.push(E.CreateATA);else if(!(A.owner.equals(l)&&cn.decode(A.data).mint.equals(n)&&cn.decode(A.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else p.instructions.push(h),p.instructionTypes.push(E.CreateATA);if(n.equals(te)&&r.amount){let A=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:r.payer||this.scope.ownerPubKey,amount:(f=r.amount)!=null?f:0,skipCloseAccount:u});p.instructions.push(...A.instructions||[]),p.endInstructions.push(...A.endInstructions||[]),p.instructionTypes.push(...A.instructionTypes||[]),p.endInstructionTypes.push(...A.endInstructionTypes||[]),r.amount&&(p.instructions.push(On({source:A.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:r.amount,tokenProgram:Vt})),p.instructionTypes.push(E.TransferAmount))}return u||(p.endInstructions.push(It({owner:s,payer:r.payer||s,tokenAccount:m,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:m,instructionParams:p}}else{let h=Ve({fromPublicKey:s,programId:l}),A=await this.scope.connection.getMinimumBalanceForRentExemption(cn.span),k=qc.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:h.seed,newAccountPubkey:h.publicKey,lamports:A+Number((g=(b=r.amount)==null?void 0:b.toString())!=null?g:0),space:cn.span,programId:l});return p.instructions.push(k,Ri({mint:n,tokenAccount:h.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(E.CreateAccount),p.instructionTypes.push(E.InitAccount),u||(p.endInstructions.push(It({owner:s,payer:r.payer||s,tokenAccount:h.publicKey,programId:l})),p.endInstructionTypes.push(E.CloseAccount)),{account:h.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=Vt,autoUnwrapWSOLToSOL:r}){var u;await this.fetchWalletTokenAccounts();let o=(u=this.scope.account.tokenAccounts.find(({mint:c})=>(c==null?void 0:c.toBase58())===t.toBase58()))==null?void 0:u.publicKey,s=this.scope.ownerPubKey,a={};if(!o){let c=this.getAssociatedTokenAccount(t,n),l=await Li(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[E.CreateATA],o=c}return r&&te.toBase58()===t.toBase58()&&(a.endInstructions=[It({owner:s,payer:s,tokenAccount:o,programId:n})],a.endInstructionTypes=[E.CloseAccount]),{pubKey:o,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:r,mint:o,programId:s=Vt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(o,s);if(new _r(te).equals(o)){let p=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:r,skipCloseAccount:l});return R({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!c){let p=[],y=Li(this.scope.ownerPubKey,d,this.scope.ownerPubKey,o,s);if(m){let f=await this.scope.connection.getAccountInfo(d);if(f===null)p.push(y);else if(!(f.owner.equals(Vt)&&cn.decode(f.data).mint.equals(o)&&cn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${o.toString()}, ata: ${d.toString()}`)}else p.push(y);return{tokenAccount:d,instructions:p,instructionTypes:[E.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:r=Vt,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new _r(te))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:r}),{tokenAccount:d}=l,p=Ae(l,["tokenAccount"]);u=d,c.addInstruction(p)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:r}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:r}),{tokenAccount:d}=m,p=Ae(m,["tokenAccount"]);u=d,c.addInstruction(p)}return R({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as ol}from"@solana/spl-token";import{PublicKey as fe,SystemProgram as sl}from"@solana/web3.js";import{PublicKey as gs}from"@solana/web3.js";var Oi=_([F("instruction")]),Ni=_([F("instruction")]),Uc=_([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),z("accRewardPerShare"),K("rewardVault"),K("rewardMint"),K("rewardSender"),w("rewardType"),q(w(),15,"padding")]),Gc=_([w("state"),w("nonce"),K("lpVault"),K("rewardVault"),K(),K(),w(),w(),w("totalReward"),z("perShareReward"),w("lastSlot"),w("perSlotReward")]),Xc=_([w("state"),w("nonce"),K("lpVault"),K("rewardVaultA"),w("totalRewardA"),z("perShareRewardA"),w("perSlotRewardA"),F("option"),K("rewardVaultB"),be(7),w("totalRewardB"),z("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),K()]),zc=_([w(),w("state"),w("nonce"),w("validRewardTokenNum"),z("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),K("lpMint"),K("lpVault"),q(Uc,5,"rewardInfos"),K("creator"),K(),q(w(),32,"padding")]),Yc=new Proxy(Gc,{get(i,e,t){return e==="decode"?(...n)=>{let r=i.decode(...n);return W(R({},r),{version:3,rewardInfos:[{rewardVault:r.rewardVault,totalReward:r.totalReward,perSlotReward:r.perSlotReward,perShareReward:r.perShareReward}]})}:Reflect.get(i,e,t)}}),Hc=new Proxy(Xc,{get(i,e,t){return e==="decode"?(...n)=>{let r=i.decode(...n);return W(R({},r),{version:5,rewardInfos:[{rewardVault:r.rewardVaultA,totalReward:r.totalRewardA,perSlotReward:r.perSlotRewardA,perShareReward:r.perShareRewardA},{rewardVault:r.rewardVaultB,totalReward:r.totalRewardB,perSlotReward:r.perSlotRewardB,perShareReward:r.perShareRewardB}]})}:Reflect.get(i,e,t)}}),Er=new Proxy(zc,{get(i,e,t){return e==="decode"?(...n)=>{let r=i.decode(...n);return W(R({},r),{version:6,rewardInfos:r.rewardInfos.map(o=>{var s;return W(R({},o),{rewardType:((s=Object.entries(Ft).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(i,e,t)}}),jc=_([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Mi=_([F("instruction"),w("nonce"),q(jc,5,"rewardTimeInfo")]),_i=_([F("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),Ei=_([F("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),eg=_([w("state"),K("id"),K("owner"),w("deposited"),q(w(),1,"rewardDebts")]),Vi=_([w("state"),K("id"),K("owner"),w("deposited"),q(z(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),tg=_([w("state"),K("id"),K("owner"),w("deposited"),q(w(),2,"rewardDebts")]),ys=_([w("state"),K("id"),K("owner"),w("deposited"),q(z(),2,"rewardDebts"),q(w(),17)]),bs=_([w(),w("state"),K("id"),K("owner"),w("deposited"),q(z(),5,"rewardDebts"),q(w(),16)]),Ze=_([F("instruction"),w("amount")]),Qc=_([K("mint"),K("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),ss("digitShift"),q(F(),7,"reserved1"),q(w(),7,"reserved2")]),Zc=_([be(8),K("governanceProgramId"),K("realm"),K("realmGoverningTokenMint"),K("realmAuthority"),q(F(),32,"reserved1"),q(Qc,4,"votingMints"),Lr("timeOffset"),F("bump"),q(F(),7,"reserved2"),q(w(),11,"reserved3")]),$c=_([Lr("startTime"),Lr("endTime"),F("kind"),q(F(),15,"reserved")]),Jc=_([q($c,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),Ee("isUsed"),Ee("allowClawback"),F("votingMintConfigIdx"),q(F(),29,"reserved")]),el=_([be(8),K("voterAuthority"),K("registrar"),q(Jc,32,"deposits"),F("voterBump"),F("voterWweightRecordBump"),q(F(),94,"reserved")]);var cg=oe("Raydium_farm_config"),ws=new gs("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),As=new gs("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var hs={3:Vi,5:ys,6:bs},Fi=i=>[3,5,6].indexOf(i)!==-1,vi=i=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=i,r=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,o={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${r}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${r}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${r}`}};return(s=o[e])==null?void 0:s.call(o)},Ft={"Standard SPL":0,"Option tokens":1},lt={[jo.toString()]:3,[Qo.toString()]:5,[Kn.toString()]:6};import{PublicKey as le,SystemProgram as Ts,SYSVAR_RENT_PUBKEY as rl,SYSVAR_CLOCK_PUBKEY as Vr,TransactionInstruction as mt}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Dg,TOKEN_PROGRAM_ID as vt,ASSOCIATED_TOKEN_PROGRAM_ID as Wg}from"@solana/spl-token";import Is from"bn.js";import tl from"bn.js";var nl=oe("Raydium.farm.util");function Mn({programId:i,poolId:e,mint:t,type:n}){let{publicKey:r}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],i);return r}function gt({programId:i,poolId:e,owner:t,version:n}){let{publicKey:r}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],i);return r}var Ps=({programId:i,poolId:e})=>ue([e.toBuffer()],i);function ks(i){return{isSet:new tl(1),rewardPerSecond:Y(i.perSecond),rewardOpenTime:Y(i.openTime),rewardEndTime:Y(i.endTime),rewardType:Y(Ft[i.rewardType])}}function Di(i){return Y(i.endTime).sub(Y(i.openTime)).mul(Y(i.perSecond))}function Wi(i){let e=hs[i];return e||nl.logWithError("invalid version",i),e}var il=oe("Raydium_farm_instruction"),ew={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 xs(i){let{version:e,id:t,ledger:n,programId:r,owner:o}=i,s={3:9,5:10}[e];s||il.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Oi.span);Oi.encode({instruction:s},a);let u=[T({pubkey:t}),T({pubkey:n}),T({pubkey:o,isWritable:!1}),T({pubkey:Ts.programId,isWritable:!1}),T({pubkey:rl,isWritable:!1})];return{instruction:new mt({programId:r,keys:u,data:a}),instructionType:E.FarmV3CreateLedger}}function Bs(i){var n;let e=Buffer.alloc(Mi.span);Mi.encode({instruction:0,nonce:new Is(i.nonce),rewardTimeInfo:i.rewardInfoConfig},e);let t=[...oi,T({pubkey:i.farmId}),T({pubkey:i.farmAuthority,isWritable:!1}),T({pubkey:i.lpVault}),T({pubkey:i.lpMint,isWritable:!1}),T({pubkey:i.lockVault}),T({pubkey:i.lockMint,isWritable:!1}),T({pubkey:(n=i.lockUserAccount)!=null?n:Se}),T({pubkey:i.owner,isWritable:!1,isSigner:!0})];for(let r of i.rewardInfo)t.push(T({pubkey:r.rewardMint,isWritable:!1}),T({pubkey:r.rewardVault}),T({pubkey:r.userRewardToken}));return{instruction:new mt({programId:i.programId,keys:t,data:e}),instructionType:E.FarmV6Create}}function Ss(i){let e=Buffer.alloc(Ni.span);Ni.encode({instruction:5},e);let t=[T({pubkey:vt,isWritable:!1}),T({pubkey:i.id}),T({pubkey:i.authority,isWritable:!1}),T({pubkey:i.lpVault,isWritable:!1}),T({pubkey:i.rewardVault}),T({pubkey:i.userRewardToken}),T({pubkey:i.owner,isWritable:!1,isSigner:!0})];return{instruction:new mt({programId:i.programId,keys:t,data:e}),instructionType:E.FarmV6CreatorWithdraw}}function qi({payer:i,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:r}){let o=Buffer.alloc(_i.span);_i.encode({instruction:3,rewardReopenTime:Y(r.openTime),rewardEndTime:Y(r.endTime),rewardPerSecond:Y(r.perSecond)},o);let s=[T({pubkey:vt,isWritable:!1}),T({pubkey:n.id}),T({pubkey:n.lpVault,isWritable:!1}),T({pubkey:e}),T({pubkey:t}),T({pubkey:i,isWritable:!1,isSigner:!0})];return new mt({programId:n.programId,keys:s,data:o})}function Ui({payer:i,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:r}){let o=Buffer.alloc(Ei.span);Ei.encode({instruction:4,isSet:new Is(1),rewardPerSecond:Y(r.perSecond),rewardOpenTime:Y(r.openTime),rewardEndTime:Y(r.endTime),rewardType:Y(Ft[r.rewardType])},o);let s=[...oi,T({pubkey:t.id}),T({pubkey:t.authority,isWritable:!1}),T({pubkey:r.mint,isWritable:!1}),T({pubkey:n}),T({pubkey:e}),T({pubkey:i,isWritable:!1,isSigner:!0})];return new mt({programId:t.programId,keys:s,data:o})}function _n(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s}=i,[a,u]=[new le(e.programId),new le(e.id)],c=gt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ze.span);Ze.encode({instruction:2,amount:Y(s)},l);let m=[T({pubkey:vt,isWritable:!1}),T({pubkey:u}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:new le(t.lpVault)}),T({pubkey:c}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(T({pubkey:new le(t.rewardInfos[d].vault)})),m.push(T({pubkey:r[d]}));return new mt({programId:a,keys:m,data:l})}function En(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=gt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ze.span);Ze.encode({instruction:12,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:Vr,isWritable:!1}),T({pubkey:vt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(T({pubkey:r[p]})),d.push(T({pubkey:new le(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function Vn(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=gt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ze.span);Ze.encode({instruction:11,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:Vr,isWritable:!1}),T({pubkey:vt,isWritable:!1})];if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function Ks(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=gt({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ze.span);Ze.encode({instruction:10,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:Vr,isWritable:!1}),T({pubkey:vt,isWritable:!1})];if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function Cs(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s,userAuxiliaryLedgers:a}=i,[u,c]=[new le(e.programId),new le(e.id)],l=gt({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ze.span);Ze.encode({instruction:11,amount:Y(s)},m);let d=[T({pubkey:c}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:l}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n}),T({pubkey:new le(t.lpVault)}),T({pubkey:r[0]}),T({pubkey:new le(t.rewardInfos[0].vault)}),T({pubkey:Vr,isWritable:!1}),T({pubkey:vt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(T({pubkey:r[p]})),d.push(T({pubkey:new le(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(T({pubkey:p}));return new mt({programId:u,keys:d,data:m})}function Rs(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:o,amount:s}=i,[a,u]=[new le(e.programId),new le(e.id)],c=gt({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ze.span);Ze.encode({instruction:1,amount:Y(s)},l);let m=[T({pubkey:vt,isWritable:!1}),T({pubkey:Ts.programId,isWritable:!1}),T({pubkey:u}),T({pubkey:new le(t.authority),isWritable:!1}),T({pubkey:new le(t.lpVault)}),T({pubkey:c}),T({pubkey:o,isWritable:!1,isSigner:!0}),T({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(T({pubkey:new le(t.rewardInfos[d].vault)})),m.push(T({pubkey:r[d]}));return new mt({programId:a,keys:m,data:l})}var Fn=class extends Pe{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Se)){let n=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:Di(W(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:r=Kn,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new fe(e.lpMint.address),lockInfo:{lockMint:ws,lockVault:As},version:6,rewardInfos:t,programId:r},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=Ve({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(Er.span);u.addInstruction({instructions:[sl.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:Er.span,programId:a.programId})]});let{publicKey:d,nonce:p}=Ps({programId:new fe(a.programId),poolId:l.publicKey}),y=Mn({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let P of a.rewardInfos){P.openTime>=P.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",P.openTime.toString()),isNaN(Ft[P.rewardType])&&this.logAndCreateError("rewardType error",P.rewardType),Number(P.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",P.perSecond),f.push(ks(P));let{rewardPubKey:x,newInstruction:B}=await this._getUserRewardInfo({rewardInfo:P,payer:c});B&&u.addInstruction(B),x||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let I=P.mint.equals(Se)?new fe(Le.address):P.mint;b.push({rewardMint:I,rewardVault:Mn({programId:a.programId,poolId:l.publicKey,mint:I,type:"rewardVault"}),userRewardToken:x})}let{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:new fe(a.lockInfo.lockMint),owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1});h&&u.addInstruction(h),g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:A,instructionType:k}=Bs({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:d,lpVault:y,lpMint:a.lpMint,lockVault:a.lockInfo.lockVault,lockMint:a.lockInfo.lockMint,lockUserAccount:g,programId:a.programId,rewardInfo:b,rewardInfoConfig:f,nonce:p});return u.addInstruction({instructions:[A],instructionTypes:[k]}).versionBuild({txVersion:o,extInfo:{farmId:l.publicKey,farmAuthority:d,lpVault:y,lockUserAccount:g,nonce:p}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:r}){var b;let o=lt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=Ue((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=t||this.scope.ownerPubKey,c=n.mint.equals(Se)?new fe(Le.address):n.mint,l=a.rewardInfos.findIndex(g=>new fe(g.mint.address).equals(c)),m=s.rewardInfos[l];m||this.logAndCreateError("configuration does not exist","rewardMint",c);let d=(b=m.vault)!=null?b:Se,p=this.createTxBuilder(),{rewardPubKey:y,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:n,payer:u});return f&&p.addInstruction(f),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),p.addInstruction({instructions:[qi({payer:this.scope.ownerPubKey,rewardVault:d,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[E.FarmV6Restart]}).versionBuild({txVersion:r})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:r}){var l;let o=lt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=Ue((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.forEach(m=>{m.openTime>=m.endTime&&this.logAndCreateError("start time error","newRewardInfo",m)});let u=t||this.scope.ownerPubKey,c=this.createTxBuilder();for(let m of n){let d=m.mint.equals(Se)?new fe(Le.address):m.mint,p=a.rewardInfos.findIndex(A=>new fe(A.mint.address).equals(d)),y=s.rewardInfos[p];y||this.logAndCreateError("configuration does not exist","rewardMint",d);let f=(l=y.vault)!=null?l:Se,{rewardPubKey:b,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:m,payer:u});g&&c.addInstruction(g),b||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let h=qi({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[h],instructionTypes:[E.FarmV6Restart]})}return c.versionBuild({txVersion:r})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:r,payer:o}=e,s=lt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ue((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=r.mint.equals(Se)?new fe(Le.address):r.mint,m=Mn({programId:new fe(n.programId),poolId:new fe(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:d,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:r,payer:u});return p&&c.addInstruction(p),d||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),r.mint=l,c.addInstruction({instructions:[Ui({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:m,rewardInfo:r})],instructionTypes:[E.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:r,payer:o}=e,s=lt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ue((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of r){let m=l.mint.equals(Se)?new fe(Le.address):l.mint,d=Mn({programId:new fe(n.programId),poolId:new fe(n.id),mint:m,type:"rewardVault"}),{rewardPubKey:p,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:l,payer:u});y&&c.addInstruction(y),p||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let f=Ui({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:d,rewardInfo:W(R({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[E.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:r,feePayer:o,useSOLBalance:s,associatedOnly:a=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:c,computeBudgetConfig:l}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:m,programId:d}=n,p=lt[d];Fi(p)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new fe(n.programId),new fe(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=gt({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:p}),h=this.createTxBuilder();h.addCustomComputeBudget(l);let A={};for(let v of this.scope.account.tokenAccounts)if(a){let j=we(this.scope.ownerPubKey,v.mint,v.programId).publicKey;v.publicKey&&j.equals(v.publicKey)&&(A[v.mint.toString()]=v.publicKey)}else A[v.mint.toString()]=v.publicKey;let k=b.lpMint,P=A[k.address];P||this.logAndCreateError("you don't have any lp","lp zero",A);let x=[];for(let v of m){let j=s&&v.mint.address===te.toString(),ee=A[v.mint.address];if(!ee){let{account:re,instructionParams:rt}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:v.mint.programId,mint:new fe(v.mint.address),notUseTokenAccount:j,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!j,associatedOnly:j?!1:a,checkCreateATAOwner:u});ee=re,rt&&h.addInstruction(rt)}A[v.mint.address]=ee,x.push(ee)}let B,I=await this.scope.connection.getAccountInfo(g);if(I&&(B=Wi(p).decode(I.data)),n.programId!==Kn.toString()&&!B){let{instruction:v,instructionType:j}=xs({id:f,programId:y,version:p,ledger:g,owner:this.scope.ownerPubKey});h.addInstruction({instructions:[v],instructionTypes:[j]})}let S=vi({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:x});S&&this.logAndCreateError(S);let N={amount:Y(r),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:P,rewardAccounts:x,userAuxiliaryLedgers:c==null?void 0:c.map(v=>new fe(v))},V=p===6?Rs(N):p===5?Cs(N):Ks(N),Q={3:E.FarmV3Deposit,5:E.FarmV5Deposit,6:E.FarmV6Deposit};return h.addInstruction({instructions:[V],instructionTypes:[Q[p]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:r,deposited:o,useSOLBalance:s,feePayer:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:l,computeBudgetConfig:m}=e,{rewardInfos:d}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let p=lt[n.programId];Fi(p)||this.logAndCreateError("invalid farm program:",n.programId);let y=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],f=this.createTxBuilder();f.addCustomComputeBudget(m);let b={};for(let S of this.scope.account.tokenAccounts)if(u){let N=we(this.scope.ownerPubKey,S.mint).publicKey;S.publicKey&&N.equals(S.publicKey)&&(b[S.mint.toString()]=S.publicKey)}else b[S.mint.toString()]=S.publicKey;if(o)o.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let S=gt({programId:new fe(n.programId),poolId:new fe(n.id),owner:this.scope.ownerPubKey,version:p}),N=await this.scope.connection.getAccountInfo(S);N||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:N}),Wi(p).decode(N.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,h=s&&g===te.toString(),A=b[g.toString()];if(!A){let{account:S,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new fe(g),notUseTokenAccount:h,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:u,checkCreateATAOwner:c});A=S,N&&f.addInstruction(N)}b[g.toString()]=A;let k=[];for(let S of d){let N=s&&S.mint.address===te.toString(),V=b[S.mint.address];if(!V){let{account:Q,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:S.mint.programId,mint:new fe(S.mint.address),notUseTokenAccount:N,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!N,associatedOnly:N?!1:u,checkCreateATAOwner:c});V=Q,v&&f.addInstruction(v)}b[S.mint.address]=V,k.push(V)}let P=vi({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:k});P&&this.logAndCreateError(P);let x={amount:Y(r),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:k,userAuxiliaryLedgers:l==null?void 0:l.map(S=>new fe(S))},B=p===6?_n(x):p===5?En(x):Vn(x),I={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};return f.addInstruction({instructions:[B],instructionTypes:[I[p]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var p;this.scope.checkOwner();let r=Ue((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),o=lt[e.programId];o!==6&&this.logAndCreateError("invalid farm version",o);let s=e.rewardInfos.findIndex(y=>y.mint.address===Se.toString()?new fe(Le.address):t),a=r.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(p=a==null?void 0:a.vault)!=null?p:Se,c=this.createTxBuilder(),l;if(t.equals(Se)){let y=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:Di(W(R({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new M(a.perSecond).mul(10**a.mint.decimals).toString()}))});l=y.addresses.newAccount,c.addInstruction(y)}else{let y=await this.scope.account.getCreatedTokenAccount({mint:t});y===null?(l=await this.scope.account.getAssociatedTokenAccount(t),c.addInstruction({instructions:[ol(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[E.CreateATA]})):l=y}let{instruction:m,instructionType:d}=Ss({programId:r.programId,id:r.id,authority:r.authority,lpVault:r.lpVault,rewardVault:u,userRewardToken:l,owner:this.scope.ownerPubKey});return c.addInstruction({instructions:[m],instructionTypes:[d]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:r,associatedOnly:o=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:u,computeBudgetConfig:c}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(o){let f=we(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(m[y.mint.toString()]=y.publicKey)}else m[y.mint.toString()]=y.publicKey;let p=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>W(R({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:h}=y,A=lt[f],k=b.address,P=n&&k===te.toString(),x=m[k];if(!x){let{account:Q,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new fe(k),notUseTokenAccount:P,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:P?!1:o,checkCreateATAOwner:s});x=Q,v&&l.addInstruction(v)}m[k.toString()]=x;let B=[];for(let Q of g){let v=n&&Q.mint.address===te.toString(),j=m[Q.mint.address];if(!j){let{account:ee,instructionParams:re}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Q.mint.programId,mint:new fe(Q.mint.address),notUseTokenAccount:v,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!v,associatedOnly:v?!1:o,checkCreateATAOwner:s});j=ee,re&&l.addInstruction(re)}m[Q.mint.address]=j,B.push(j)}let I=p[h],S={amount:qe,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:I,lpAccount:x,rewardAccounts:B,userAuxiliaryLedgers:a==null?void 0:a.map(Q=>new fe(Q))},N=A===6?_n(S):A===5?En(S):Vn(S),V={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};l.addInstruction({instructions:[N],instructionTypes:[V[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as De}from"@solana/web3.js";import{AccountLayout as Wl,NATIVE_MINT as da,TOKEN_PROGRAM_ID as Xr}from"@solana/spl-token";var Tw=_([Ge("mintAuthorityOption"),K("mintAuthority"),w("supply"),F("decimals"),F("isInitialized"),Ge("freezeAuthorityOption"),K("freezeAuthority")]);import{PublicKey as Sw}from"@solana/web3.js";import{MintLayout as Cw,TOKEN_PROGRAM_ID as Lw}from"@solana/spl-token";var Ls=i=>new he({mint:i.address,decimals:i.decimals,symbol:i.symbol,name:i.name});import{TOKEN_PROGRAM_ID as Fr,ASSOCIATED_TOKEN_PROGRAM_ID as hl}from"@solana/spl-token";import{PublicKey as wt,TransactionInstruction as mn,SystemProgram as Ds,SYSVAR_RENT_PUBKEY as eA}from"@solana/web3.js";var Gi=_([F("instruction"),w("amountIn"),w("minAmountOut")]),Xi=_([F("instruction"),w("maxAmountIn"),w("amountOut")]),Xw=_([F("instruction"),F("nonce")]),al=_([F("instruction"),F("nonce"),w("startTime")]),Os=_([w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalValue"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),w("swapBase2QuoteFee"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("withdrawQueue"),K("lpVault"),K("owner"),w("lpReserve"),q(w(),3,"padding")]),zw=_([w("accountType"),w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalsValue"),w("abortTradeFactor"),w("priceTickMultiplier"),w("priceTick"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("modelDataAccount"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("owner"),q(w(),64,"padding")]),zi=_([F("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),Yi=_([F("instruction"),w("amountIn")]);var Ns=_([w("fee")]);import{PublicKey as ul}from"@solana/web3.js";var ln=new ul("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Ht=5e4,cl=_([w("x"),w("y"),w("price")]),ll=_([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(cl,Ht,"DataElement")]);function ml(i,e){return[0,Ht-2]}function dl(i){return[0,Ht-2]}function pl(i){return[0,Ht-2]}function fl(i,e,t){let[n,r]=ml(e,t),o=n,s=r,a=0,u=e*i.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=Ht-2)return[a,a,!1];let c=i.DataElement[a].x*i.multiplier/i.DataElement[a].y,l=i.DataElement[a-1].x*i.multiplier/i.DataElement[a-1].y,m=i.DataElement[a+1].x*i.multiplier/i.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)s=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];o=a+1}}return[a,a,!1]}function Hi(i,e,t){let[n,r,o]=fl(i,e,t);if(!o)return 0;if(n===r){let s=i.DataElement[n].x;return e*i.multiplier/s}else{let s=i.DataElement[n].x,a=i.DataElement[n].y,u=i.DataElement[r].x,c=i.DataElement[r].y,l=t*(u*a-s*c),m=s*l,d=(u-s)*(e*a-s*t)*c,p=m+d;return e*i.multiplier*l/p}}function Yt(i,e,t){return e*i.multiplier/t}function Ms(i,e,t){return e*t/i.multiplier}function yl(i,e){let[t,n]=dl(e),r=t,o=n,s=0,a=e;for(;r<o;){if(s=Math.floor((o+r)/2),s<=0||s>Ht-2)return[s,s,!1];let u=i.DataElement[s].x,c=i.DataElement[s-1].x,l=i.DataElement[s+1].x;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<c)o=s-1;else{if(a>c&&a<u)return[s-1,s,!0];if(a>u&&a<l)return[s,s+1,!0];r=s+1}}return[s,s,!1]}function bl(i,e){let[t,n]=pl(e),r=t,o=n,s=0,a=e;for(;r<=o;){if(s=Math.floor((o+r)/2),s<=0||s>=Ht-2)return[s,s,!1];let u=i.DataElement[s].y,c=i.DataElement[s-1].y,l=i.DataElement[s+1].y;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)r=s+1;else{if(a<c&&a>u)return[s-1,s,!0];if(a<u&&a>l)return[s,s+1,!0];o=s-1}}return[s,s,!1]}function _s(i,e,t,n){let r=n?e+t:e-t,[o,s,a]=yl(i,r);if(!a)return[0,0,!1,a];if(o===s)return[i.DataElement[s].price,i.DataElement[s].y,!1,a];{let u=i.DataElement[o].x,c=i.DataElement[s].x,l=i.DataElement[o].price,m=i.DataElement[s].price,d=i.DataElement[o].y,p=i.DataElement[s].y;if(e>=u&&e<=c)return n?[m,p,!0,a]:[l,d,!0,a];{let y,f;return n?(y=l+(m-l)*(e-u)/(c-u),f=d-(r-u)*i.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=p+(c-r)*i.multiplier/l),[y,f,!1,a]}}}function gl(i,e,t,n){let r=n?e-t:e+t,[o,s,a]=bl(i,r);if(!a)return[0,0,!1,a];if(o===s)return[i.DataElement[s].price,i.DataElement[s].x,!1,a];{let u=i.DataElement[o].x,c=i.DataElement[s].x,l=i.DataElement[o].price,m=i.DataElement[s].price,d=i.DataElement[o].y,p=i.DataElement[s].y;if(e>=p&&e<=d)return n?[m,c,!0,a]:[l,u,!0,a];{let y,f;return n?(y=l+(m-l)*(d-e)/(d-p),f=u+m*(d-r)/i.multiplier):(y=l+(m-l)*(d-e)/(d-p),f=c-l*(r-p)/i.multiplier),[y,f,!1,a]}}}function wl(i,e){let t=_s(i,e,0,!1);return t[3]?t[0]:0}function Es(i,e,t,n){let r=Hi(i,e,t),o=Yt(i,e,r),s=Yt(i,t,r),a=Yt(i,n,r),u=!0,[c,l,m,d]=_s(i,o,a,u);if(!d)return 0;if(m)return n*i.multiplier/c;{let p=s-l;return Ms(i,p,r)}}function Vs(i,e,t,n){let r=Hi(i,e,t),o=Yt(i,e,r),s=Yt(i,t,r),a=Yt(i,n,r),u=!1,[c,l,m,d]=gl(i,s,a,u);if(!d)return 0;if(m)return n*c/i.multiplier;{let p=o-l;return Ms(i,p,r)}}function Al(i){let e=ll.decode(i);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 Fs(i,e,t,n){let r=wl(i,Yt(i,e,Hi(i,e,t)))/i.multiplier;return n?r:1/r}var vn=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(ln);e&&(this._layoutData=Al(e==null?void 0:e.data))}}};var vs=oe("Raydium_liquidity_instruction");function Ws(i){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:r,quoteAmountIn:o,fixedSide:s}=i,a=Buffer.alloc(zi.span);zi.encode({instruction:3,baseAmountIn:Y(r),quoteAmountIn:Y(o),fixedSide:s==="base"?qe:vo},a);let u=[T({pubkey:Fr,isWritable:!1}),T({pubkey:new wt(e.id)}),T({pubkey:new wt(t.authority),isWritable:!1}),T({pubkey:new wt(t.openOrders),isWritable:!1}),T({pubkey:new wt(t.targetOrders)}),T({pubkey:new wt(e.lpMint.address)}),T({pubkey:new wt(t.vault.A)}),T({pubkey:new wt(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(T({pubkey:ln})),u.push(T({pubkey:new wt(e.marketId),isWritable:!1}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:new wt(t.marketEventQueue),isWritable:!1})),new mn({programId:new wt(e.programId),keys:u,data:a})}function ji(i){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:r}=i,o=Ue(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(Yi.span);Yi.encode({instruction:4,amountIn:Y(r)},a);let u=[T({pubkey:Fr,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.mintLp.address}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return s===5?u.push(T({pubkey:ln})):(u.push(T({pubkey:o.id})),u.push(T({pubkey:o.id}))),u.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:n.lpTokenAccount}),T({pubkey:n.baseTokenAccount}),T({pubkey:n.quoteTokenAccount}),T({pubkey:n.owner,isWritable:!1,isSigner:!0}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks})),new mn({programId:o.programId,keys:u,data:a})}return new mn({programId:o.programId,keys:[]})}function qs({programId:i,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:r,coinMint:o,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:y,userCoinVault:f,userPcVault:b,userLpVault:g,nonce:h,openTime:A,coinAmount:k,pcAmount:P,ammConfigId:x,feeDestinationId:B}){let I=_([F("instruction"),F("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),S=[{pubkey:Fr,isSigner:!1,isWritable:!1},{pubkey:hl,isSigner:!1,isWritable:!1},{pubkey:Ds.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:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:x,isSigner:!1,isWritable:!1},{pubkey:B,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0}],N=Buffer.alloc(I.span);return I.encode({instruction:1,nonce:h,openTime:A,coinAmount:k,pcAmount:P},N),{instruction:new mn({keys:S,programId:i,data:N}),instructionType:E.AmmV4CreatePool}}function Pl({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=Ue(i),s=Buffer.alloc(Gi.span);Gi.encode({instruction:9,amountIn:Y(t),minAmountOut:Y(n)},s);let a=[T({pubkey:Fr,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders})];return r===4&&a.push(T({pubkey:o.targetOrders})),a.push(T({pubkey:o.vault.A}),T({pubkey:o.vault.B})),r===5&&a.push(T({pubkey:ln})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1})),new mn({programId:o.programId,keys:a,data:s})}function kl({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=Ue(i),s=Buffer.alloc(Xi.span);Xi.encode({instruction:11,maxAmountIn:Y(t),amountOut:Y(n)},s);let a=[T({pubkey:Ds.programId,isWritable:!1}),T({pubkey:o.id}),T({pubkey:o.authority,isWritable:!1}),T({pubkey:o.openOrders}),T({pubkey:o.targetOrders}),T({pubkey:o.vault.A}),T({pubkey:o.vault.B})];return r===5&&a.push(T({pubkey:ln})),a.push(T({pubkey:o.marketProgramId,isWritable:!1}),T({pubkey:o.marketId}),T({pubkey:o.marketBids}),T({pubkey:o.marketAsks}),T({pubkey:o.marketEventQueue}),T({pubkey:o.marketBaseVault}),T({pubkey:o.marketQuoteVault}),T({pubkey:o.marketAuthority,isWritable:!1}),T({pubkey:e.tokenAccountIn}),T({pubkey:e.tokenAccountOut}),T({pubkey:e.owner,isWritable:!1,isSigner:!0})),new mn({programId:o.programId,keys:a,data:s})}function Us(i){let{poolKeys:e,version:t,userKeys:n,amountIn:r,amountOut:o,fixedSide:s}=i;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Pl(W(R({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return kl(W(R({},a),{maxAmountIn:r,amountOut:o}),t);vs.logWithError("invalid params","params",i)}throw vs.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}import{TOKEN_PROGRAM_ID as Me,TOKEN_2022_PROGRAM_ID as qt,ASSOCIATED_TOKEN_PROGRAM_ID as ia}from"@solana/spl-token";import{PublicKey as D,TransactionInstruction as dt,SystemProgram as dn,Keypair as ro}from"@solana/web3.js";import oa from"bn.js";import Ll from"bn.js";function vr(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function Qi(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function Zi(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function Dn(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Gs(i,e){return Dn(i,e)?null:Qi(i,e)}function Xs(i,e){return Dn(i,e)?null:Zi(i,e)}var fA=Buffer.from("amm_config","utf8"),Tl=Buffer.from("pool","utf8"),Il=Buffer.from("pool_vault","utf8"),xl=Buffer.from("pool_reward_vault","utf8"),zs=Buffer.from("position","utf8"),Bl=Buffer.from("tick_array","utf8"),Sl=Buffer.from("operation","utf8"),Kl=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Ys(i,e,t,n){return ue([Tl,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function $i(i,e,t){return ue([Il,e.toBuffer(),t.toBuffer()],i)}function Hs(i,e,t){return ue([xl,e.toBuffer(),t.toBuffer()],i)}function de(i,e,t){return ue([Bl,e.toBuffer(),vr(t)],i)}function jt(i,e,t,n){return ue([zs,e.toBuffer(),vr(t),vr(n)],i)}function et(i,e){return ue([zs,e.toBuffer()],i)}function Dr(i){return ue([Buffer.from("metadata","utf8"),rn.toBuffer(),i.toBuffer()],rn)}function Wn(i){return ue([Sl],i)}function At(i,e){return ue([Kl,e.toBuffer()],i)}import ht from"bn.js";var xe=new ht(0),Pt=new ht(1),Bt=new ht(-1),$e=new ht(1).shln(64),Wr=new ht(1).shln(128),Ji=$e.sub(Pt),qn=64,js=Wr.subn(1),Fe=-443636,Xe=-Fe,Dt=new ht("4295048016"),Wt=new ht("79226673521066979257578248091"),Qs=16,Zs="59543866431248",$s="184467440737095516",Js="15793534762490258745",qr=new ht(10).pow(new ht(6));var ea={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:[]},gA=new ht("18446744073700000000");var Cl=15,se=class{static async getTickArrays(e,t,n,r,o,s,a){let u=[],c=U.getTickArrayStartIndexByTick(r,o),l=U.getInitializedTickArrayInRange(s,a,o,c,Math.floor(Cl/2));for(let p=0;p<l.length;p++){let{publicKey:y}=de(t,n,l[p]);u.push(y)}let m=(await yt(e,u)).map(p=>p!==null?Un.decode(p.data):null),d={};for(let p=0;p<u.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=W(R({},y),{address:u[p]}))}return d}static nextInitializedTick(e,t,n,r,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,r,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=U.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/se.tickCount(t)),a=n?U.searchLowBitFromStart(r,o,s-1,1,t):U.searchHightBitFromStart(r,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,r){let o;if(r){let a=Ke-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<Ke;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=de(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=U.getTickArrayStartIndexByTick(r,o),u=Math.floor((r-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u-1}else for(u=u+1;u<Ke;){let d=c.ticks[u];if(d.liquidityGross.gtn(0)){l=d;break}u=u+1}let{publicKey:m}=de(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(U.checkIsOutOfBoundary(e)){if(e>Xe)return!1;let n=U.getTickArrayStartIndexByTick(Fe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Ke*e}};import ne from"bn.js";import{PublicKey as Kt}from"@solana/web3.js";import Te from"bn.js";var eo=14,St=class{static maxTickInTickarrayBitmap(e){return e*Ke*Qt}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(r+=1);let o=n*r;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,r){if(!se.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-se.tickCount(n):t+se.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*Ke,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(r){let l=e.shln(1024-c-1),m=Gs(1024,l);if(m!==null){let d=(c-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=Xs(1024,l);if(m!==null){let d=(c+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:o-se.tickCount(n)}}}},Gn=class{static getBitmapOffset(e,t){if(!se.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=St.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&r--,r}static getBitmap(e,t,n){let r=this.getBitmapOffset(e,t);return e<0?{offset:r,tickarrayBitmap:n.negativeTickArrayBitmap[r]}:{offset:r,tickarrayBitmap:n.positiveTickArrayBitmap[r]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:r}=this.extensionTickBoundary(t);if(e>=r&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=St.maxTickInTickarrayBitmap(e),n=-t;if(Xe<=t)throw Error(`extensionTickBoundary check error: ${Xe}, ${t}`);if(n<=Fe)throw Error(`extensionTickBoundary check error: ${n}, ${Fe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:r}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:U.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=se.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,r);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,r){let{minValue:o,maxValue:s}=St.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let u=U.mergeTickArrayBitmap(e).shln(Qt-1-a),c=Dn(512,u)?null:Qi(512,u);if(c!==null){let l=t-c*se.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=U.mergeTickArrayBitmap(e).shrn(a),c=Dn(512,u)?null:Zi(512,u);if(c!==null){let l=t+c*se.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-se.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%St.maxTickInTickarrayBitmap(t),r=Math.floor(n/se.tickCount(t));return e<0&&n!=0&&(r=Qt-r),r}};import kt from"bn.js";var Xn=class{static getfeeGrowthInside(e,t,n){let r=new kt(0),o=new kt(0);e.tickCurrent>=t.tick?(r=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(r=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new kt(0),a=new kt(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=Z.wrappingSubU128(Z.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),c=Z.wrappingSubU128(Z.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=Z.mulDivFloor(Z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,$e),u=t.tokenFeesOwedA.add(a),c=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,$e),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=Z.mulDivFloor(Z.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,$e),u=t.tokenFeesOwedA.add(a),c=Z.mulDivFloor(Z.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,$e),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=Z.wrappingSubU128(u,c.growthInsideLastX64),m=Z.mulDivFloor(l,t.liquidity,$e),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static GetPositionRewards(e,t,n,r){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=Z.wrappingSubU128(u,c.growthInsideLastX64),m=Z.mulDivFloor(l,t.liquidity,$e),d=c.rewardAmountOwed.add(m);o.push(d)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new kt(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new kt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Z.wrappingSubU128(Z.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new kt(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new kt(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(Z.wrappingSubU128(Z.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var b,g,h,A;let a=J.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),u=J.getSqrtPriceX64FromTick(t.tickLower),c=J.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,m=ae.getAmountsFromLiquidity(a,u,c,n,o),[d,p]=[ye(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),ye(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[ye(new kt(new M(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),ye(new kt(new M(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Xt(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as ta}from"@solana/spl-token";var ve=class{static getOutputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=Zt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,c,o);return a.push(...d),{expectedAmountOut:m.mul(Bt),remainingAccounts:a,executionPrice:p,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,r,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=de(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=Zt.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(Bt),c,o);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=ve.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Gn.checkTickArrayIsInit(se.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):U.checkTickArrayIsInitialized(U.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=de(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,se.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=de(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/se.tickCount(e.tickSpacing)),r=t?U.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):U.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return r.length>0?{isExist:!0,nextStartIndex:r[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=se.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=St.nextInitializedTickArrayStartIndex(U.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Gn.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Fe||t>Xe)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],d=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(d===void 0)throw Error("get new reward mint info error");let p=W(R({},m),{perSecond:Z.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Kt(d)});if(p.tokenMint.equals(Kt.default))continue;if(n<=p.openTime.toNumber()||r.eq(xe)){s.push(p);continue}let y=new Te(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),b=Z.mulDivFloor(f,p.emissionsPerSecondX64,r),g=p.rewardGrowthGlobalX64.add(b),h=Z.mulDivFloor(f,p.emissionsPerSecondX64,$e),A=p.rewardTotalEmissioned.add(h);s.push(W(R({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:A,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=U.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=St.maxTickInTickarrayBitmap(e),n=-t;return t>Xe&&(t=se.getArrayStartIndex(Xe,e)+se.tickCount(e)),n<Fe&&(n=se.getArrayStartIndex(Fe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!se.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/se.tickCount(t)*Qt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await Ar(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=na.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},o=[];for(let u of t){let c=U.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=U.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:d}=de(u.programId,u.id,m);o.push({pubkey:d}),r[d.toString()]=u.id}}let s=await Ar(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=r[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=Un.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=W(R({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(d=>d.accountInfo.mint),c=[];for(let d of u)for(let p of s)c.push(et(p,d).publicKey);let l=await yt(t,c,{batchRequest:r}),m={};for(let d of l){if(d===null)continue;let p=Gr.decode(d.data),y=p.poolId.toString(),f=e.find(I=>I.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=U._getTickPriceLegacy({poolInfo:b,tick:p.tickLower,baseIn:!0}),h=U._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:A,amountB:k}=ae.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),P=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(I=>W(R({},I),{pendingReward:new Te(0)})),leverage:P,tokenFeeAmountA:new Te(0),tokenFeeAmountB:new Te(0)}];let x=await U.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),B=await U.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=x,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=B}if(o){let d=Object.values(m),p=await yt(t,d,{batchRequest:r}),y={};for(let f=0;f<d.length;f++){let b=p[f];if(b===null)continue;let g=d[f].toString();y[g]=Un.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let g of b){let h=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,k=y[m[h].toString()],P=y[m[A].toString()],x=k.ticks[U.getTickOffsetInArray(g.tickLower,f.tickSpacing)],B=P.ticks[U.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:I,tokenFeeAmountB:S}=await Xn.GetPositionFees(f,g,x,B),N=await Xn.GetPositionRewards(f,g,x,B);g.tokenFeeAmountA=I.gte(new Te(0))?I:new Te(0),g.tokenFeeAmountB=S.gte(new Te(0))?S:new Te(0);for(let V=0;V<N.length;V++)g.rewardInfos[V].pendingReward=N[V].gte(new Te(0))?N[V]:new Te(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new M(0)}){var N;let u,c=n.toBase58()===e.mintA.address,[l,m]=c?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new M(0))?u=c?Dt.add(new Te(1)):Wt.sub(new Te(1)):u=J.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let d=ye(o,l,r,!1),{expectedAmountOut:p,remainingAccounts:y,executionPrice:f,feeAmount:b}=ve.getOutputAmountAndRemainAccounts(e,t,n,d.amount.sub((N=d.fee)!=null?N:xe),u),g=ye(p,m,r,!1),h=J.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?h:new M(1).div(h),k=p.mul(new Te(Math.floor((1-s)*1e10))).div(new Te(1e10)),P=ye(k,m,r,!1),x=c?e.currentPrice:new M(1).div(e.currentPrice),B=new M(A).sub(x).abs(),I=x,S=new Qe(new M(B).mul(10**15).toFixed(0),new M(I).mul(10**15).toFixed(0));return{realAmountIn:d,amountOut:g,minAmountOut:P,expirationTime:Xt(d.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:S,fee:b,remainingAccounts:y}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:o,epochInfo:s}){let a=r.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new he(W(R({},u),{mint:u.address,isToken2022:u.programId===ta.toBase58()})),new he(W(R({},c),{mint:c.address,isToken2022:c.programId===ta.toBase58()}))],{realAmountIn:d,amountOut:p,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:h,fee:A,remainingAccounts:k}=await ve.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Kt(u.address),amountIn:n,slippage:o,epochInfo:s}),P=W(R({},d),{amount:new ke(l,d.amount),fee:d.fee===void 0?void 0:new ke(l,d.fee)}),x=W(R({},p),{amount:new ke(m,p.amount),fee:p.fee===void 0?void 0:new ke(m,p.fee)}),B=W(R({},y),{amount:new ke(m,y.amount),fee:y.fee===void 0?void 0:new ke(m,y.fee)}),I=new Je({baseToken:l,denominator:new Te(10).pow(new Te(20+l.decimals)),quoteToken:m,numerator:b.mul(new M(10**(20+m.decimals))).toFixed(0)}),S=new Je({baseToken:l,denominator:new Te(10).pow(new Te(20+l.decimals)),quoteToken:m,numerator:g.mul(new M(10**(20+m.decimals))).toFixed(0)}),N=new ke(l,A);return{realAmountIn:P,amountOut:x,minAmountOut:B,expirationTime:f,currentPrice:I,executionPrice:S,priceImpact:h,fee:N,remainingAccounts:k}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var y,f,b;let o=e[t],s=U.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=U.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,d=o.priceMax-o.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:o.feeApr*p,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*p,(f=o.rewardApr[1])!=null?f:0*p,(b=o.rewardApr[2])!=null?b:0*p],apr:o.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=r[on(e.mintA.address).toString()],d=r[on(e.mintB.address).toString()],p=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=J.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),b=J.getSqrtPriceX64FromTick(s),g=J.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:A}=ae.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:k,amountSlippageB:P}=ae.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),x=new M(h.toString()).div(new M(10).pow(p)).mul(m.value).add(new M(A.toString()).div(new M(10).pow(y)).mul(d.value)),B=new M(k.toString()).div(new M(10).pow(p)).mul(m.value).add(new M(P.toString()).div(new M(10).pow(y)).mul(d.value)),I=B.div(x.add(B)).div(B),N=new M(l.volumeFee).mul(365).div(c).mul(I).mul(100).toNumber(),V=3600*24*365,Q=e.rewardDefaultInfos.map(v=>{var re,rt;let j=v.mint.decimals,ee=r[v.mint.address];return u<((re=v.startTime)!=null?re:0)||u>((rt=v.endTime)!=null?rt:0)||!v.perSecond||!ee||j===void 0?0:new M(ee.value).mul(new M(v.perSecond).mul(V)).div(new M(10).pow(j)).mul(I).mul(100).toNumber()});return{feeApr:N,rewardsApr:Q,apr:N+Q.reduce((v,j)=>v+j,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,h;let l=J.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),m=J.getSqrtPriceX64FromTick(n),d=J.getSqrtPriceX64FromTick(r),p=a?1-s:1+s,y=ye(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Te(new M(y.amount.sub((h=y.fee)!=null?h:xe).toString()).mul(p).toFixed(0)),b;if(l.lte(m))b=t?ae.getLiquidityFromTokenAmountA(m,d,f,!a):new Te(0);else if(l.lte(d)){let A=ae.getLiquidityFromTokenAmountA(l,d,f,!a),k=ae.getLiquidityFromTokenAmountB(m,l,f);b=t?A:k}else b=t?new Te(0):ae.getLiquidityFromTokenAmountB(m,d,f);return ve.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:r,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var b,g,h,A;let u=J.getSqrtPriceX64FromTick(n),c=J.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=ae.getAmountsFromLiquidity(J.priceToSqrtPriceX64(new M(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[d,p]=[ye(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),ye(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[ye(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),ye(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Xt(d.expirationTime,p.expirationTime)}}static async fetchComputeClmmInfo({connection:e,poolInfo:t}){let n=await e.getAccountInfo(new Kt(t.id));if(!n)throw new Error(`pool not found ${t.id}`);let r=Ur.decode(n.data),o=At(new Kt(t.programId),new Kt(t.id)).publicKey,s=await ve.fetchExBitmaps({connection:e,exBitmapAddress:[o],batchRequest:!1});return W(R({},r),{id:new Kt(t.id),programId:new Kt(t.programId),mintA:t.mintA,mintB:t.mintB,ammConfig:W(R({},t.config),{id:new Kt(t.config.id),fundOwner:""}),currentPrice:new M(t.price),exBitmapInfo:s[o.toBase58()],startTime:r.startTime.toNumber()})}};var Z=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(xe)||(o=o.add(Pt)),o}static mulDivFloor(e,t,n){if(n.eq(xe))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(xe))throw new Error("division by 0");return e.mul(t).add(n.sub(Pt)).div(n)}static x64ToDecimal(e,t){return new M(e.toString()).div(M.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ne(e.mul(M.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Wr).sub(t).mod(Wr)}};function Ce(i,e){return to(i.mul(e),64,256)}function Rl(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function to(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var J=class{static sqrtPriceX64ToPrice(e,t,n){return Z.x64ToDecimal(e).pow(2).mul(M.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return Z.decimalToX64(e.mul(M.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(xe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(xe))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,r){if(!e.gt(xe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(xe))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,r){if(n.eq(xe))return e;let o=t.shln(qn);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?Z.mulDivCeil(s,e,a):Z.mulDivRoundingUp(s,Pt,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return Z.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(qn);if(r)return e.add(o.div(t));{let s=Z.mulDivRoundingUp(o,Pt,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<Fe||e>Xe)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new ne("18445821805675395072"):new ne("18446744073709551616");return(t&2)!=0&&(n=Ce(n,new ne("18444899583751176192"))),(t&4)!=0&&(n=Ce(n,new ne("18443055278223355904"))),(t&8)!=0&&(n=Ce(n,new ne("18439367220385607680"))),(t&16)!=0&&(n=Ce(n,new ne("18431993317065453568"))),(t&32)!=0&&(n=Ce(n,new ne("18417254355718170624"))),(t&64)!=0&&(n=Ce(n,new ne("18387811781193609216"))),(t&128)!=0&&(n=Ce(n,new ne("18329067761203558400"))),(t&256)!=0&&(n=Ce(n,new ne("18212142134806163456"))),(t&512)!=0&&(n=Ce(n,new ne("17980523815641700352"))),(t&1024)!=0&&(n=Ce(n,new ne("17526086738831433728"))),(t&2048)!=0&&(n=Ce(n,new ne("16651378430235570176"))),(t&4096)!=0&&(n=Ce(n,new ne("15030750278694412288"))),(t&8192)!=0&&(n=Ce(n,new ne("12247334978884435968"))),(t&16384)!=0&&(n=Ce(n,new ne("8131365268886854656"))),(t&32768)!=0&&(n=Ce(n,new ne("3584323654725218816"))),(t&65536)!=0&&(n=Ce(n,new ne("696457651848324352"))),(t&131072)!=0&&(n=Ce(n,new ne("26294789957507116"))),(t&262144)!=0&&(n=Ce(n,new ne("37481735321082"))),e>0&&(n=js.div(n)),n}static getTickFromPrice(e,t,n){return J.getTickFromSqrtPriceX64(J.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Wt)||e.lt(Dt))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ne(t-64),r=Rl(n,32,128),o=new ne("8000000000000000","hex"),s=0,a=new ne(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new ne(0))&&s<Qs;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(o.mul(y)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=r.add(c).mul(new ne(Zs)),d=to(m.sub(new ne($s)),64,128).toNumber(),p=to(m.add(new ne(Js)),64,128).toNumber();return d==p?d:J.getSqrtPriceX64FromTick(p).lte(e)?p:d}},$t=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=J.getTickFromSqrtPriceX64(J.priceToSqrtPriceX64(e,n,r))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,r){let o=$t.getTickWithPriceAndTickspacing(e,t,n,r),s=J.getSqrtPriceX64FromTick(o);return J.sqrtPriceX64ToPrice(s,n,r)}},ae=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(xe))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(qn),s=t.sub(e);return r?Z.mulDivRoundingUp(Z.mulDivCeil(o,s,t),Pt,e):Z.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(xe))throw new Error("sqrtPriceX64A must greater than 0");return r?Z.mulDivCeil(n,t.sub(e),$e):Z.mulDivFloor(n,t.sub(e),$e)}static getLiquidityFromTokenAmountA(e,t,n,r){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return r?Z.mulDivRoundingUp(a,Pt,Ji):a.shrn(qn)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),Z.mulDivFloor(n,Ji,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ae.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=ae.getLiquidityFromTokenAmountA(e,n,r,!1),a=ae.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ae.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ae.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new ne(0)};if(e.lt(n)){let s=ae.getTokenAmountAFromLiquidity(e,n,r,o),a=ae.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new ne(0),amountB:ae.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:u,amountB:c}=ae.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,m=new ne(new M(u.toString()).mul(l).toFixed(0)),d=new ne(new M(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var h,A,k,P;let c=J.priceToSqrtPriceX64(new M(e.price),e.mintA.decimals,e.mintB.decimals),l=J.getSqrtPriceX64FromTick(t),m=J.getSqrtPriceX64FromTick(n),d=s?1+o:1-o,p=ae.getAmountsFromLiquidity(c,l,m,r,s),[y,f]=[ye(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),ye(p.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[b,g]=[ye(new ne(new M(p.amountA.toString()).mul(d).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,u),ye(new ne(new M(p.amountB.toString()).mul(d).toFixed(0)),(P=e.mintB.extensions)==null?void 0:P.feeConfig,a,u)];return{liquidity:r,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:Xt(y.expirationTime,f.expirationTime)}}},Zt=class{static swapCompute(e,t,n,r,o,s,a,u,c,l,m,d,p,y){if(d.eq(xe))throw new Error("amountSpecified must not be 0");if(y||(y=s?Dt.add(Pt):Wt.sub(Pt)),s){if(y.lt(Dt))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(y.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(y.gt(Wt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=d.gt(xe),b={amountSpecifiedRemaining:d,amountCalculated:xe,sqrtPriceX64:m,tick:c>p?Math.min(p+se.tickCount(l)-1,c):p,accounts:[],liquidity:u,feeAmount:new ne(0)},g=p,h=n[p],A=0,k=!s&&h.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(xe)&&!b.sqrtPriceX64.eq(y);){if(A>10)throw Error("liquidity limit");let P={};P.sqrtPriceStartX64=b.sqrtPriceX64;let x=U.nextInitTick(h,b.tick,l,s,k),B=x||null,I=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let N=ve.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},g,s);if(!N.isExist)throw Error("swapCompute LiquidityInsufficient");g=N.nextStartIndex;let{publicKey:V}=de(e,t,g);I=V,h=n[g],B=U.firstInitializedTick(h,s)}P.tickNext=B.tick,P.initialized=B.liquidityGross.gtn(0),p!==g&&I&&(b.accounts.push(I),p=g),P.tickNext<Fe?P.tickNext=Fe:P.tickNext>Xe&&(P.tickNext=Xe),P.sqrtPriceNextX64=J.getSqrtPriceX64FromTick(P.tickNext);let S;if(s&&P.sqrtPriceNextX64.lt(y)||!s&&P.sqrtPriceNextX64.gt(y)?S=y:S=P.sqrtPriceNextX64,[b.sqrtPriceX64,P.amountIn,P.amountOut,P.feeAmount]=Zt.swapStepCompute(b.sqrtPriceX64,S,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(P.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(P.amountIn.add(P.feeAmount)),b.amountCalculated=b.amountCalculated.sub(P.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(P.amountOut),b.amountCalculated=b.amountCalculated.add(P.amountIn.add(P.feeAmount))),b.sqrtPriceX64.eq(P.sqrtPriceNextX64)){if(P.initialized){let N=B.liquidityNet;s&&(N=N.mul(Bt)),b.liquidity=ae.addDelta(b.liquidity,N)}k=P.tickNext!=b.tick&&!s&&h.startTickIndex===P.tickNext,b.tick=s?P.tickNext-1:P.tickNext}else if(b.sqrtPriceX64!=P.sqrtPriceStartX64){let N=J.getTickFromSqrtPriceX64(b.sqrtPriceX64);k=N!=b.tick&&!s&&h.startTickIndex===N,b.tick=N}++A}try{let{nextStartIndex:P,isExist:x}=se.nextInitializedTickArray(b.tick,l,s,r,o);x&&p!==P&&(b.accounts.push(de(e,t,P).publicKey),p=P)}catch{}return{amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,r,o){let s={sqrtPriceX64Next:new ne(0),amountIn:new ne(0),amountOut:new ne(0),feeAmount:new ne(0)},a=e.gte(t),u=r.gte(xe);if(u){let l=Z.mulDivFloor(r,qr.sub(new ne(o.toString())),qr);s.amountIn=a?ae.getTokenAmountAFromLiquidity(t,e,n,!0):ae.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=J.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ae.getTokenAmountBFromLiquidity(t,e,n,!1):ae.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Bt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=J.getNextSqrtPriceX64FromOutput(e,n,r.mul(Bt),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ae.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ae.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ae.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ae.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(r.mul(Bt))&&(s.amountOut=r.mul(Bt)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=Z.mulDivCeil(s.amountIn,new ne(o),qr.sub(new ne(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var Ke=60,Qt=512,U=class{static getTickArrayAddressByTick(e,t,n,r){let o=U.getTickArrayStartIndexByTick(n,r),{publicKey:s}=de(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=U.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=Ke)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=se.tickCount(t),r=e/n;return e<0&&e%n!=0?r=Math.ceil(r)-1:r=Math.floor(r),r}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*se.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Ke,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*Ke,o=Math.floor(t/r)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*r}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Ke:e+t*Ke}static mergeTickArrayBitmap(e){let t=new Ll(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,r,o){let s=Math.floor(r/(n*Ke));return[...U.searchLowBitFromStart(e,t,s-1,o,n),...U.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return U.searchHightBitFromStart(e,t,0,Qt,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=U.getAllInitializedTickArrayStartIndex(n,r,o);for(let u of a){let{publicKey:c}=de(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>U.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===r)break}let u=se.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,r,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>U.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===r)break}let u=se.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Fe||e>Xe}static nextInitTick(e,t,n,r,o){if(se.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(r)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<Ke;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Ke-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Ke;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let r=J.getSqrtPriceX64FromTick(t),o=J.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new M(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new M(1).div(t),o=$t.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=J.getSqrtPriceX64FromTick(o),a=J.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new M(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=J.getSqrtPriceX64FromTick(t),o=J.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new M(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new M(1).div(t),o=$t.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=J.getSqrtPriceX64FromTick(o),a=J.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new M(1).div(a)}}};var xh=_([be(8),F("bump"),bt("index"),K(""),Ge("protocolFeeRate"),Ge("tradeFeeRate"),bt("tickSpacing"),q(w(),8,"")]),Ol=_([Ge("blockTimestamp"),z("sqrtPriceX64"),z("cumulativeTimePriceX64"),q(z(),1,"")]),no=_([be(8),Ee("initialized"),K("poolId"),q(Ol,1e3,"observations"),q(z(),5,"")]),Nl=_([F("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),z("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),K("tokenMint"),K("tokenVault"),K("creator"),z("rewardGrowthGlobalX64")]),Ur=_([be(8),F("bump"),K("ammConfig"),K("creator"),K("mintA"),K("mintB"),K("vaultA"),K("vaultB"),K("observationId"),F("mintDecimalsA"),F("mintDecimalsB"),bt("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),Ne("tickCurrent"),bt("observationIndex"),bt("observationUpdateDuration"),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),F("status"),q(F(),7,""),q(Nl,3,"rewardInfos"),q(w(),16,"tickArrayBitmap"),w("totalFeesTokenA"),w("totalFeesClaimedTokenA"),w("totalFeesTokenB"),w("totalFeesClaimedTokenB"),w("fundFeesTokenA"),w("fundFeesTokenB"),w("startTime"),q(w(),15*4-3,"padding")]),Ml=_([z("growthInsideLastX64"),w("rewardAmountOwed")]),Gr=_([be(8),F("bump"),K("nftMint"),K("poolId"),Ne("tickLower"),Ne("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(Ml,3,"rewardInfos"),q(w(),8,"")]),Bh=_([be(8),F("bump"),K("poolId"),Ne("tickLowerIndex"),Ne("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(z(),3,"rewardGrowthInside"),q(w(),8,"")]),_l=_([Ne("tick"),as("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),q(z(),3,"rewardGrowthsOutsideX64"),q(Ge(),13,"")]),Un=_([be(8),K("poolId"),Ne("startTickIndex"),q(_l,Ke,"ticks"),F("initializedTickCount"),q(F(),115,"")]),ra=_([be(329),q(K(),100,"whitelistMints")]),na=_([be(8),K("poolId"),q(q(w(),8),eo,"positiveTickArrayBitmap"),q(q(w(),8),eo,"negativeTickArrayBitmap")]);var sa=oe("Raydium_Clmm"),pt={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},Ie=class{static createPoolInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y){let f=_([z("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:dn.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([...pt.createPool,...g]);return new dt({keys:b,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=Ve({fromPublicKey:r,programId:n}),[d,p]=[new D(o.address),new D(s.address)],y=[dn.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(no.span),space:no.span,programId:n})],{publicKey:f}=Ys(n,a,d,p),{publicKey:b}=$i(n,f,d),{publicKey:g}=$i(n,f,p);return y.push(this.createPoolInstruction(n,f,r,a,m.publicKey,d,b,new D(o.programId||Me),p,g,new D(s.programId||Me),At(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[E.CreateAccount,E.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:b,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A,k,P,x,B,I,S,N){let V=_([Ne("tickLowerIndex"),Ne("tickUpperIndex"),Ne("tickArrayLowerStartIndex"),Ne("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ee("withMetadata"),F("optionBaseFlag"),Ee("baseFlag")]),Q=[...N?[{pubkey:N,isSigner:!1,isWritable:!0}]:[]],v=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,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:dn.programId,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:ia,isSigner:!1,isWritable:!1},{pubkey:rn,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Q],j=Buffer.alloc(V.span);V.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:P,liquidity:x,amountMaxA:B,amountMaxB:I,withMetadata:S==="create",baseFlag:!1,optionBaseFlag:0},j);let ee=Buffer.from([...pt.openPosition,...j]);return new dt({keys:v,programId:e,data:ee})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new D(e.programId),new D(e.id)],y;if(l)y=new D((await l(1))[0]);else{let I=ro.generate();m.push(I),y=I.publicKey}let f=U.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=de(d,p,f),{publicKey:h}=de(d,p,b),{publicKey:A}=we(n.wallet,y,Me),{publicKey:k}=Dr(y),{publicKey:P}=et(d,y),{publicKey:x}=jt(d,p,r,o),B=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,A,k,x,g,h,P,n.tokenAccountA,n.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),r,o,f,b,s,a,u,c);return{signers:m,instructions:[B],instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:k,personalPosition:P,protocolPosition:x}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[d,p]=[new D(e.programId),new D(e.id)],y;if(l)y=new D((await l(1))[0]);else{let I=ro.generate();m.push(I),y=I.publicKey}let f=U.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=de(d,p,f),{publicKey:h}=de(d,p,b),{publicKey:A}=we(n.wallet,y,Me),{publicKey:k}=Dr(y),{publicKey:P}=et(d,y),{publicKey:x}=jt(d,p,r,o),B=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,A,k,x,g,h,P,n.tokenAccountA,n.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),r,o,f,b,c,s,a,u,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?At(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:k,personalPosition:P,protocolPosition:x},instructions:[B],signers:m,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A,k,P,x,B,I,S,N){let V=_([Ne("tickLowerIndex"),Ne("tickUpperIndex"),Ne("tickArrayLowerStartIndex"),Ne("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ee("withMetadata"),F("optionBaseFlag"),Ee("baseFlag")]),Q=[...N?[{pubkey:N,isSigner:!1,isWritable:!0}]:[]],v=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,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:dn.programId,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:ia,isSigner:!1,isWritable:!1},{pubkey:rn,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Q],j=Buffer.alloc(V.span);V.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:P,liquidity:new oa(0),amountMaxA:B==="MintA"?I:S,amountMaxB:B==="MintA"?S:I,withMetadata:x==="create",baseFlag:B==="MintA",optionBaseFlag:1},j);let ee=Buffer.from([...pt.openPosition,...j]);return new dt({keys:v,programId:e,data:ee})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,d=[];if(l)m=new D((await l(1))[0]);else{let I=ro.generate();d.push(I),m=I.publicKey}let[p,y]=[new D(e.programId),new D(e.id)],f=U.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=de(p,y,f),{publicKey:h}=de(p,y,b),{publicKey:A}=we(n.wallet,m,Me),{publicKey:k}=Dr(m),{publicKey:P}=et(p,m),{publicKey:x}=jt(p,y,r,o),B=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,A,k,x,g,h,P,n.tokenAccountA,n.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(t.mintA.address),new D(t.mintB.address),r,o,f,b,s,a,u,c,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?At(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:A,metadataAccount:k,personalPosition:P,protocolPosition:x},instructions:[B],signers:d,instructionTypes:[E.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=_([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:dn.programId,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...pt.closePosition,...u]);return new dt({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new D(e.programId),{publicKey:s}=we(n.wallet,r.nftMint,Me),{publicKey:a}=et(o,r.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[E.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h){let A=_([z("liquidity"),w("amountMaxA"),w("amountMaxB"),F("optionBaseFlag"),Ee("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],x=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},x);let B=Buffer.from([...pt.increaseLiquidity,...x]);return new dt({keys:P,programId:e,data:B})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new D(e.programId),new D(e.id)],l=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=de(u,c,l),{publicKey:p}=de(u,c,m),{publicKey:y}=we(r.wallet,n.nftMint,Me),{publicKey:f}=et(u,n.nftMint),{publicKey:b}=jt(u,c,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(u,r.wallet,y,f,c,b,d,p,r.tokenAccountA,r.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),o,s,a,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?At(u,c).publicKey:void 0);return{address:{tickArrayLower:d,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:r,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new D(e.programId),new D(e.id)],l=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=de(u,c,l),{publicKey:p}=de(u,c,m),{publicKey:y}=we(r.wallet,n.nftMint,Me),{publicKey:f}=et(u,n.nftMint),{publicKey:b}=jt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,r.wallet,y,f,c,b,d,p,r.tokenAccountA,r.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),o,s,a,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?At(u,c).publicKey:void 0)],signers:[],instructionTypes:[E.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h){let A=_([z("liquidity"),w("amountMaxA"),w("amountMaxB"),F("optionBaseFlag"),Ee("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],x=Buffer.alloc(A.span);A.encode({liquidity:new oa(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},x);let B=Buffer.from([...pt.increaseLiquidity,...x]);return new dt({keys:P,programId:e,data:B})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A){let k=_([z("liquidity"),w("amountMinA"),w("amountMinB")]),P=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(S=>[{pubkey:S.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.rewardMint,isSigner:!1,isWritable:!1}]).flat()],x=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:dr,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...P],B=Buffer.alloc(k.span);k.encode({liquidity:b,amountMinA:g,amountMinB:h},B);let I=Buffer.from([...pt.decreaseLiquidity,...B]);return new dt({keys:x,programId:e,data:I})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new D(e.programId),new D(e.id)],m=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=de(c,l,m),{publicKey:y}=de(c,l,d),{publicKey:f}=we(r.wallet,n.nftMint,u),{publicKey:b}=et(c,n.nftMint),{publicKey:g}=jt(c,l,n.tickLower,n.tickUpper),h=[];for(let k=0;k<e.rewardDefaultInfos.length;k++)h.push({poolRewardVault:new D(t.rewardInfos[k].vault),ownerRewardVault:r.rewardAccounts[k],rewardMint:new D(e.rewardDefaultInfos[k].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,r.wallet,f,b,l,g,p,y,r.tokenAccountA,r.tokenAccountB,new D(t.vault.A),new D(t.vault.B),new D(e.mintA.address),new D(e.mintB.address),h,o,s,a,ve.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?At(c,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,r,o,s,a,u,c,l,m,d,p,y,f,b,g){let h=_([w("amount"),w("otherAmountThreshold"),z("sqrtPriceLimitX64"),Ee("isBaseInput")]),A=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(B=>({pubkey:B,isSigner:!1,isWritable:!0}))],k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:dr,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],P=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},P);let x=Buffer.from([...pt.swap,...P]);return new dt({keys:k,programId:e,data:x})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new D(e.programId),new D(e.id)],[d,p]=[new D(t.vault.A),new D(t.vault.B)],[y,f]=[new D(e.mintA.address),new D(e.mintB.address)],b=e.mintA.address===o.toString(),g=[this.swapInstruction(l,r.wallet,m,new D(e.config.id),b?r.tokenAccountA:r.tokenAccountB,b?r.tokenAccountB:r.tokenAccountA,b?d:p,b?p:d,b?y:f,b?f:y,c,n,s,a,u,!0,At(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[E.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,d){let p=_([w("openTime"),w("endTime"),z("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:dn.programId,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:Y(l),endTime:Y(m),emissionsPerSecondX64:d},f);let b=Buffer.from([...pt.initReward,...f]);return new dt({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new D(e.programId),new D(e.id)],a=Hs(o,s,r.mint).publicKey,u=Wn(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new D(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[E.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,d){let p=_([F("rewardIndex"),z("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:c,emissionsPerSecondX64:d,openTime:Y(l),endTime:Y(m)},f);let b=Buffer.from([...pt.setRewardEmissions,...f]);return new dt({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new D(e.programId),new D(e.id)],a,u,c;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===r.mint.toString()&&(a=d,u=new D(t.rewardInfos[d].vault),c=new D(t.rewardInfos[d].mint.address));(a===void 0||u===void 0)&&sa.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Wn(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new D(e.config.id),n.tokenAccount,u,c,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[E.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let u=_([F("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:qt,isSigner:!1,isWritable:!1},{pubkey:dr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...pt.collectReward,...l]);return new dt({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new D(e.programId),new D(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,u=new D(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&sa.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,r,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[E.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new D(e.programId),new D(e.id)],[m,d]=[new D(t.vault.A),new D(t.vault.B)],[p,y]=[new D(e.mintA.address),new D(e.mintB.address)],f=e.mintA.address===r.toString(),b=[this.swapInstruction(c,n.wallet,l,new D(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:y,f?y:p,u,m,o,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[E.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as Fl}from"@solana/web3.js";import{PublicKey as El}from"@solana/web3.js";import aa from"bn.js";var ua=new aa(25),ca=new aa(1e4);var Vl=oe("Raydium_liquidity_serum");function la({programId:i,marketId:e}){let t=[e.toBuffer()],n=0,r;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));r=El.createProgramAddressSync(o,i)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:r,nonce:n}}throw Vl.logWithError("unable to find a viable program address nonce","params",{programId:i,marketId:e}),new Error("unable to find a viable program address nonce")}import sP from"bn.js";function io({programId:i}){let{publicKey:e}=ue([Buffer.from("amm_config_account_seed","utf-8")],i);return e}function Jt({name:i,programId:e,marketId:t}){let{publicKey:n}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(i,"utf-8")],e);return n}function vl({programId:i,marketId:e}){let{publicKey:t}=ue([i.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],i);return t}function Dl({programId:i}){return ue([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],i)}function ma({version:i,marketVersion:e,marketId:t,baseMint:n,quoteMint:r,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=Jt({name:"amm_associated_seed",programId:a,marketId:t}),l=Jt({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=Dl({programId:a}),p=Jt({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=Jt({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=Jt({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=vl({programId:a,marketId:t}),g=Jt({name:"target_associated_seed",programId:a,marketId:t}),h=Jt({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=la({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:r,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:i,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:h,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:Fl.default,configId:io({programId:a})}}import je from"bn.js";var zn=class extends Pe{constructor(t){super(t);this.stableLayout=new vn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:r,baseIn:o}){let s=new je(new M(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=Ls(t[o?"mintB":"mintA"]),[u,c]=[new je(new M(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new je(new M(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new je(new M(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,M.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${r.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=o?"base":"quote";this.logDebug("input side:",m);let d=qe;s.isZero()||(d=m==="base"?br(s.mul(c),u):br(s.mul(u),c)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=br(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",p.toString());let f=new Qe(new je(1)).add(r).mul(d).quotient,b=new ke(a,d),g=new ke(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:r,amountInB:o,fixedSide:s,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",r,"amountInB:",o),(r.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:r.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[p,y]=[r.token,o.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 De(n.lpMint.address)}),h=[p,y],A=[f,b],k=[r.raw,o.raw],P=r.token.mint.toBase58()===n.mintA.address?"base":"quote",x="base";["quote","base"].includes(P)||this.logAndCreateError("invalid fixedSide","fixedSide",s),P==="quote"?(h.reverse(),A.reverse(),k.reverse(),x=s==="a"?"quote":"base"):P==="base"&&(x=s==="a"?"base":"quote");let[B,I]=h,[S,N]=A,[V,Q]=k,v=await this.getAmmPoolKeys(n.id),j=this.createTxBuilder(),Ct=await l.handleTokenAccount({side:"in",amount:V,mint:B.mint,tokenAccount:S,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:ee}=Ct,re=Ae(Ct,["tokenAccount"]);j.addInstruction(re);let rr=await l.handleTokenAccount({side:"in",amount:Q,mint:I.mint,tokenAccount:N,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:rt}=rr,yn=Ae(rr,["tokenAccount"]);j.addInstruction(yn);let bn=await l.handleTokenAccount({side:"out",amount:0,mint:new De(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:Qr}=bn,Zr=Ae(bn,["tokenAccount"]);return j.addInstruction(Zr),j.addInstruction({instructions:[Ws({poolInfo:n,poolKeys:v,userKeys:{baseTokenAccount:ee,quoteTokenAccount:rt,lpTokenAccount:Qr,owner:this.scope.ownerPubKey},baseAmountIn:V,quoteAmountIn:Q,fixedSide:x})],instructionTypes:[n.pooltype.includes("StablePool")?E.AmmV5AddLiquidity:E.AmmV4AddLiquidity],lookupTableAddress:v.lookupTableAccount?[v.lookupTableAccount]:[]}),j.addCustomComputeBudget(c),u===0&&await j.buildV0(),j.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:r,config:o,txVersion:s,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new De(n.mintA.address),new De(n.mintB.address),new De(n.lpMint.address)];this.logDebug("amountIn:",r),r.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",r.toString());let{account:d}=this.scope,p=await d.getCreatedTokenAccount({mint:m,associatedOnly:!1});p||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",d.tokenAccounts);let y=await d.getCreatedTokenAccount({mint:c}),f=await d.getCreatedTokenAccount({mint:l}),b=this.createTxBuilder(),{bypassAssociatedCheck:g,checkCreateATAOwner:h}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),B=await d.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:h}),{tokenAccount:A}=B,k=Ae(B,["tokenAccount"]);b.addInstruction(k);let I=await d.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:h}),{tokenAccount:P}=I,x=Ae(I,["tokenAccount"]);return b.addInstruction(x),b.addInstruction({instructions:[ji({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:p,baseTokenAccount:A,quoteTokenAccount:P,owner:this.scope.ownerPubKey},amountIn:r})],lookupTableAddress:u.lookupTableAccount?[u.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:r,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,tokenProgram:m=Xr,checkCreateATAOwner:d=!0,getEphemeralSigners:p,txVersion:y}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let f=this.createTxBuilder();f.addCustomComputeBudget(c);let b={};for(let ee of this.scope.account.tokenAccountRawInfos)(b[ee.accountInfo.mint.toString()]===void 0||we(this.scope.ownerPubKey,ee.accountInfo.mint,Xr).publicKey.equals(ee.pubkey))&&(b[ee.accountInfo.mint.toString()]=ee.pubkey);let g=b[t.lpMint.address];if(g===void 0)throw Error("find lp account error in trade accounts");let h=r.add(a!=null?a:new je(0)),A=t.mintA.address===he.WSOL.mint.toString(),k=t.mintB.address===he.WSOL.mint.toString(),{account:P,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Xr,mint:new De(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(x||{}),P===void 0)throw new Error("base token account not found");let{account:B,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Xr,mint:new De(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!0,checkCreateATAOwner:d});if(f.addInstruction(I||{}),B===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=P,b[t.mintB.address]=B,s!==void 0&&!(a!=null&&a.isZero())){let ee=[];for(let Ct of s.rewardInfos){let rr=Ct.mint.address===he.WSOL.mint.toString();if(b[Ct.mint.address])ee.push(b[Ct.mint.address]);else{let{account:bn,instructionParams:mo}=await this.scope.account.getOrCreateTokenAccount({mint:new De(Ct.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!rr,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:d});bn||this.logAndCreateError("farm reward account not found:",Ct.mint.address),mo&&f.addInstruction(mo),ee.push(bn)}}let re=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],rt={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:re,lpAccount:g,rewardAccounts:ee},yn=lt[s.programId],Qr=yn===6?_n(rt):yn===5?En(rt):Vn(rt),Zr={3:E.FarmV3Withdraw,5:E.FarmV5Withdraw,6:E.FarmV6Withdraw};f.addInstruction({instructions:[Qr],instructionTypes:[Zr[yn]]})}let S=await this.getAmmPoolKeys(t.id),N=ji({poolInfo:t,poolKeys:S,userKeys:{lpTokenAccount:g,baseTokenAccount:P,quoteTokenAccount:B,owner:this.scope.ownerPubKey},amountIn:h});f.addInstruction({instructions:[N],instructionTypes:[t.pooltype.includes("StablePool")?E.AmmV5RemoveLiquidity:E.AmmV4RemoveLiquidity],lookupTableAddress:S.lookupTableAccount?[S.lookupTableAccount]:[]});let[V,Q]=t.mintA.address===n.mintA.address?[P,B]:[B,P],v=await this.scope.clmm.getClmmPoolKeys(t.id),j=await Ie.openPositionFromBaseInstructions(W(R({poolInfo:n,poolKeys:v,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:V,tokenAccountB:Q},withMetadata:"create"},o),{base:u,getEphemeralSigners:p}));return f.addInstruction({instructions:[...j.instructions],signers:j.signers,instructionTypes:[...j.instructionTypes],lookupTableAddress:v.lookupTableAccount?[v.lookupTableAccount]:[]}),y===0?f.sizeCheckBuildV0():f.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:r,quoteMintInfo:o,baseAmount:s,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:y,computeBudgetConfig:f}){var Q;let b=c.feePayer||((Q=this.scope.owner)==null?void 0:Q.publicKey),g=c.useSOLBalance&&r.mint.equals(da),h=c.useSOLBalance&&o.mint.equals(da),A=this.createTxBuilder(),{account:k,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({mint:r.mint,owner:this.scope.ownerPubKey,createInfo:g?{payer:b,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:l,checkCreateATAOwner:m});A.addInstruction(P||{});let{account:x,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:h?{payer:b,amount:a}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:l,checkCreateATAOwner:m});if(A.addInstruction(B||{}),k===void 0||x===void 0)throw Error("you don't has some token account");let I=ma({version:4,marketVersion:3,marketId:n.marketId,baseMint:r.mint,quoteMint:o.mint,baseDecimals:r.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),S={programId:t,ammId:I.id,ammAuthority:I.authority,ammOpenOrders:I.openOrders,lpMint:I.lpMint,coinMint:I.baseMint,pcMint:I.quoteMint,coinVault:I.baseVault,pcVault:I.quoteVault,withdrawQueue:I.withdrawQueue,ammTargetOrders:I.targetOrders,poolTempLp:I.lpVault,marketProgramId:I.marketProgramId,marketId:I.marketId,ammConfigId:I.configId,feeDestinationId:y},{instruction:N,instructionType:V}=qs(W(R({},S),{userWallet:this.scope.ownerPubKey,userCoinVault:k,userPcVault:x,userLpVault:we(this.scope.ownerPubKey,I.lpMint,d).publicKey,nonce:I.nonce,openTime:u,coinAmount:s,pcAmount:a}));return A.addInstruction({instructions:[N],instructionTypes:[V]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:p,extInfo:{address:S}})}async getCreatePoolFee({programId:t}){let n=io({programId:t}),r=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(r===null)throw Error("get config account error");return Ns.decode(r.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:r,mintOut:o,slippage:s}){if(r!==t.mintA.address&&r!==t.mintB.address)throw new Error("toke not match");if(o!==t.mintA.address&&o!==t.mintB.address)throw new Error("toke not match");let{baseReserve:a,quoteReserve:u}=t,c=[a,u],l=r==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,d]=c,p=t.programId===Zo.toBase58(),y;if(p)y=new M(d.toString()).div(m.toString());else{let I=Fs(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new M(1e6).div(I*1e6):y=new M(I*1e6).div(1e6)}let f=n,b=new je(0),g=new je(0);if(!f.isZero())if(p){g=Ln(f.mul(ua),ca);let I=f.sub(g),S=m.add(I);b=d.mul(I).div(S)}else{g=f.mul(new je(2)).div(new je(1e4));let I=f.sub(g);l==="quote"?b=new je(Es(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),I.toNumber())):b=new je(Vs(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),I.toNumber()))}let h=new je(new M(b.toString()).mul(1-s).toFixed(0)),A=b,k=h,P=new M(b.toString()).div(new M(f.sub(g).toString()).toFixed(0));!f.isZero()&&!b.isZero()&&(P=new M(b.toString()).div(f.sub(g).toString()));let x=y.sub(P).div(y).mul(100);return{amountOut:A,minAmountOut:k,currentPrice:y,executionPrice:P,priceImpact:x,fee:g}}async swap({poolInfo:t,amountIn:n,amountOut:r,inputMint:o,fixedSide:s,txVersion:a,computeBudgetConfig:u}){let c=this.createTxBuilder(),[l,m]=o===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],d=await this.scope.account.getCreatedTokenAccount({mint:new De(l.address),programId:new De(l.programId),associatedOnly:!1}),p=await this.scope.account.getCreatedTokenAccount({mint:new De(m.address),programId:new De(m.programId),associatedOnly:!1}),k=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new De(l.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=k,f=Ae(k,["tokenAccount"]);c.addInstruction(f);let P=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new De(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=P,g=Ae(P,["tokenAccount"]);c.addInstruction(g);let h=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[Us({version:A,poolKeys:h,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:r,fixedSide:s})],instructionTypes:[A===4?E.AmmV4SwapBaseIn:E.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t){let n=await this.scope.connection.getMultipleAccountsInfo(t.map(c=>new De(c))),r={},o=[];for(let c=0;c<t.length;c++){let l=n[c];if(l===null)throw Error("fetch pool info error: "+String(t[c]));let m=Os.decode(l.data);r[String(t[c])]=m,o.push(m.baseVault,m.quoteVault)}let s={},a=await this.scope.connection.getMultipleAccountsInfo(o.map(c=>new De(c)));for(let c=0;c<o.length;c++){let l=a[c];if(l===null)throw Error("fetch vault info error: "+o[c]);s[String(o[c])]=new je(Wl.decode(l.data).amount.toString())}let u={};for(let[c,l]of Object.entries(r)){let m=s[l.baseVault.toString()].sub(l.baseNeedTakePnl),d=s[l.quoteVault.toString()].sub(l.quoteNeedTakePnl);u[c]=W(R({},l),{baseReserve:m,quoteReserve:d,poolPrice:new M(d.toString()).div(new M(10).pow(l.quoteDecimal.toString())).div(new M(m.toString()).div(new M(10).pow(l.baseDecimal.toString())))})}return u}};import{PublicKey as ie}from"@solana/web3.js";import tt from"bn.js";var Yn=class extends Pe{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var h;let{programId:t,owner:n=((h=this.scope.owner)==null?void 0:h.publicKey)||ie.default,mint1:r,mint2:o,ammConfig:s,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,y,f]=new tt(new ie(r.address).toBuffer()).gt(new tt(new ie(o.address).toBuffer()))?[o,r,new M(1).div(a)]:[r,o,a],b=J.priceToSqrtPriceX64(f,p.decimals,y.decimals),g=await Ie.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:y,ammConfigId:s.id,initialPriceX64:b,startTime:u,forerunCreate:l});return d.addInstruction(g),d.addCustomComputeBudget(c),d.versionBuild({txVersion:m,extInfo:{address:W(R({},g.address),{programId:t.toString(),id:g.address.poolId.toString(),mintA:p,mintB:y,openTime:u.toString(),vault:{A:g.address.mintAVault.toString(),B:g.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:R({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:g.address.poolId.toString(),mintA:p,mintB:y,feeRate:s.tradeFeeRate,openTime:u.toString(),programId:t.toString(),price:f.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}},ea),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:d,computeBudgetConfig:p,txVersion:y}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),b=null,g=null,h=n.useSOLBalance&&e.mintA.address===te.toString(),A=n.useSOLBalance&&e.mintB.address===te.toString(),[k,P]=s==="MintA"?[a,u]:[u,a],{account:x,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||k.isZero()?{payer:this.scope.ownerPubKey,amount:k}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:c,checkCreateATAOwner:l});x&&(b=x),f.addInstruction(B||{});let{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||P.isZero()?{payer:this.scope.ownerPubKey,amount:P}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});I&&(g=I),f.addInstruction(S||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let N=t||await this.getClmmPoolKeys(e.id),V=await Ie.openPositionFromBaseInstructions({poolInfo:e,poolKeys:N,ownerInfo:W(R({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:r,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(V),f.addCustomComputeBudget(p),f.versionBuild({txVersion:y,extInfo:V.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:r,amountMaxB:o,tickLower:s,tickUpper:a,liquidity:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:d,getEphemeralSigners:p}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let y=this.createTxBuilder(),f=null,b=null,g=n.useSOLBalance&&e.mintA.address===te.toBase58(),h=n.useSOLBalance&&e.mintB.address===te.toBase58(),{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g||r.isZero()?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:c,checkCreateATAOwner:l});A&&(f=A),y.addInstruction(k||{});let{account:P,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:c,checkCreateATAOwner:l});P&&(b=P),y.addInstruction(x||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let B=t||await this.getClmmPoolKeys(e.id),I=await Ie.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:B,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:u,amountMaxA:r,amountMaxB:o,withMetadata:m,getEphemeralSigners:p});return y.addInstruction(I),y.versionBuild({txVersion:d,extInfo:{address:I.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:r,amountMaxB:o,liquidity:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||r.isZero()?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(h||{});let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(k||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let P=await this.getClmmPoolKeys(t.id),x=Ie.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:P,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},liquidity:s,amountMaxA:r,amountMaxB:o});return d.addInstruction(x),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:x.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:r,baseAmount:o,otherAmountMax:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||(r==="MintA"?o:s).isZero()?{payer:this.scope.ownerPubKey,amount:r==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(p=g),d.addInstruction(h||{});let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b||(r==="MintA"?s:o).isZero()?{payer:this.scope.ownerPubKey,amount:r==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),d.addInstruction(k||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let P=await this.getClmmPoolKeys(t.id),x=Ie.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:P,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:r,baseAmount:o,otherAmountMax:s});return d.addInstruction(x),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:x.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:r,amountMinA:o,amountMinB:s,liquidity:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let d=this.createTxBuilder(),p=r.useSOLBalance&&t.mintA.address===te.toString(),y=r.useSOLBalance&&t.mintB.address===te.toString(),f,b,{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ie(t.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!p,associatedOnly:p?!1:u,checkCreateATAOwner:c});f=g,h&&d.addInstruction(h);let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ie(t.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:c});b=A,k&&d.addInstruction(k);let P=[];for(let S of t.rewardDefaultInfos){let N=r.useSOLBalance&&S.mint.address===te.toString(),V;if(S.mint.address===t.mintA.address)V=f;else if(S.mint.address===t.mintB.address)V=b;else{let{account:Q,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(S.mint.programId),mint:new ie(S.mint.address),notUseTokenAccount:N,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!N,associatedOnly:N?!1:u,checkCreateATAOwner:c});V=Q,v&&d.addInstruction(v)}P.push(V)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let x=await this.getClmmPoolKeys(t.id),B=await Ie.decreaseLiquidityInstructions({poolInfo:t,poolKeys:x,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:P},liquidity:a,amountMinA:o,amountMinB:s});d.addInstruction({instructions:B.instructions,instructionTypes:[E.ClmmDecreasePosition]});let I=R({},B.address);if(r.closePosition){let S=await Ie.closePositionInstructions({poolInfo:t,poolKeys:x,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});d.addInstruction({endInstructions:S.instructions,endInstructionTypes:S.instructionTypes}),I=R(R({},I),S.address)}return d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:I}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let r=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=Ie.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return r.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.address.toString()===te.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(n.mint.address),mint:new ie(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new tt(new M(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:r,checkCreateATAOwner:o});d&&u.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=Ie.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new ie(n.mint.programId),mint:new ie(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:Z.decimalToX64(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let u=this.createTxBuilder(),c={};for(let l of n){let m=t.useSOLBalance&&l.mint.address===te.toString(),d=l.perSecond.mul(l.endTime-l.openTime),{account:p,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(l.mint.programId),mint:new ie(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new tt(new M(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:r,checkCreateATAOwner:o});y&&u.addInstruction(y),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=Ie.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{programId:new ie(l.mint.programId),mint:new ie(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:Z.decimalToX64(l.perSecond)}});c=R(R({},c),b.address),u.addInstruction(b)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.equals(te),{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new tt(new M(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:c?!1:r,checkCreateATAOwner:o});m&&u.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=Ie.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:Z.decimalToX64(n.perSecond)}});return u.addInstruction(p),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:p.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){let u=this.createTxBuilder(),c={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let m=t.useSOLBalance&&l.mint.address===te.toString(),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(l.mint.programId),mint:new ie(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new tt(new M(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:m?!1:r,checkCreateATAOwner:o});p&&u.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),f=Ie.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:new ie(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:Z.decimalToX64(l.perSecond)}});u.addInstruction(f),c=R(R({},c),f.address)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1}){let s=e.rewardDefaultInfos.find(p=>p.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),u=t.useSOLBalance&&n.equals(te),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(s.mint.programId),mint:n,notUseTokenAccount:u,owner:this.scope.ownerPubKey,skipCloseAccount:!u,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:u?!1:r,checkCreateATAOwner:o});l&&a.addInstruction(l),c||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),d=Ie.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:c},rewardMint:n});return a.addInstruction(d),a.build({address:d.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1}){let s=this.createTxBuilder(),a={};for(let u of n){let c=e.rewardDefaultInfos.find(f=>f.mint.address===u.toString());if(!c){this.logAndCreateError("reward mint error","not found reward mint",u);continue}let l=t.useSOLBalance&&u.equals(te),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(c.mint.programId),mint:u,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:r,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&s.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),y=Ie.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});s.addInstruction(y),a=R(R({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:r,priceLimit:o,observationId:s,ownerInfo:a,remainingAccounts:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,txVersion:m}){let d=this.createTxBuilder(),p=a.useSOLBalance&&e.mintA.address===te.toBase58(),y=a.useSOLBalance&&e.mintB.address===te.toBase58(),f;!o||o.equals(new M(0))?f=t.toString()===e.mintA.address?Dt.add(new tt(1)):Wt.sub(new tt(1)):f=J.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let b;if(!b){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ie(e.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:c,checkCreateATAOwner:l});b=A,k&&d.addInstruction(k)}let g;if(!g){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ie(e.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:c,checkCreateATAOwner:l});g=A,k&&d.addInstruction(k)}(!b||!g)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let h=await this.getClmmPoolKeys(e.id);return d.addInstruction(Ie.makeSwapBaseInInstructions({poolInfo:e,poolKeys:h,observationId:s,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g},inputMint:new ie(t),amountIn:n,amountOutMin:r,sqrtPriceLimitX64:f,remainingAccounts:u})),d.versionBuild({txVersion:m})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:r=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)r?we(this.scope.ownerPubKey,m.accountInfo.mint,s).publicKey.equals(m.pubkey)&&(c[m.accountInfo.mint.toString()]=m.pubkey):c[m.accountInfo.mint.toString()]=m.pubkey;let l=this.createTxBuilder();for(let m of Object.values(e)){if(t[m.id]===void 0||!t[m.id].find(A=>!A.liquidity.isZero()||A.rewardInfos.find(k=>!k.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===te.toString(),y=n.useSOLBalance&&d.mintB.address===te.toString(),f=c[d.mintA.address];if(!f){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new ie(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:r,checkCreateATAOwner:o});f=A,k&&l.addInstruction(k)}let b=c[d.mintB.address];if(!b){let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new ie(d.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:r,checkCreateATAOwner:o});b=A,k&&l.addInstruction(k)}c[d.mintA.address]=f,c[d.mintB.address]=b;let g=[];for(let A of d.rewardDefaultInfos){let k=n.useSOLBalance&&A.mint.address===te.toString(),P=c[A.mint.address];if(!P){let{account:x,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ie(A.mint.programId),mint:new ie(A.mint.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,skipCloseAccount:!k,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:k?!1:r});P=x,B&&l.addInstruction(B)}c[A.mint.address]=P,g.push(P)}let h=await this.getClmmPoolKeys(d.id);for(let A of t[m.id]){let k=Ie.decreaseLiquidityInstructions({poolInfo:d,poolKeys:h,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new tt(0),amountMinA:new tt(0),amountMinB:new tt(0)});l.addInstruction(k)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(Wn(e).publicKey);return t?ra.decode(t.data).whitelistMints.filter(r=>!r.equals(ie.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new tt(1))).map(s=>et(new ie(e),s.accountInfo.mint).publicKey),r=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return r.forEach(s=>{if(!s)return;let a=Gr.decode(s.data);o.push(a)}),o}async getRpcClmmPoolInfo({poolId:e}){return(await this.getRpcClmmPoolInfos({poolIds:[e]}))[String(e)]}async getRpcClmmPoolInfos({poolIds:e}){let t=await this.scope.connection.getMultipleAccountsInfo(e.map(r=>new ie(r))),n={};for(let r=0;r<e.length;r++){let o=t[r];if(o===null)throw Error("fetch pool info error: "+String(e[r]));let s=Ur.decode(o.data),a=J.sqrtPriceX64ToPrice(s.sqrtPriceX64,s.mintDecimalsA,s.mintDecimalsB).toNumber();n[String(e[r])]=W(R({},s),{currentPrice:a})}return n}};import{PublicKey as G}from"@solana/web3.js";import{NATIVE_MINT as Yr,TOKEN_PROGRAM_ID as Ut,AccountLayout as tm}from"@solana/spl-token";var ql=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Ul=Buffer.from("amm_config","utf8"),Gl=Buffer.from("pool","utf8"),Xl=Buffer.from("pool_lp_mint","utf8"),zl=Buffer.from("pool_vault","utf8"),Yl=Buffer.from("observation","utf8");function Hl(i){return ue([ql],i)}function jl(i,e){return ue([Ul,$l(e)],i)}function Ql(i,e,t,n){return ue([Gl,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function Zl(i,e){return ue([Xl,e.toBuffer()],i)}function pa(i,e,t){return ue([zl,e.toBuffer(),t.toBuffer()],i)}function zr(i,e){return ue([Yl,e.toBuffer()],i)}function $l(i){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,i,!1),new Uint8Array(e)}function fa({programId:i,mintA:e,mintB:t}){let n=jl(i,0).publicKey,r=Hl(i).publicKey,o=Ql(i,n,e,t).publicKey,s=Zl(i,o).publicKey,a=pa(i,o,e).publicKey,u=pa(i,o,t).publicKey,c=zr(i,o).publicKey;return{poolId:o,configId:n,authority:r,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as Hn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as oo,TOKEN_2022_PROGRAM_ID as ya,ASSOCIATED_TOKEN_PROGRAM_ID as Jl}from"@solana/spl-token";var em=oe("Raydium_cpmm"),jn={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 ba(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y,f,b,g,h,A){let k=_([w("amountMaxA"),w("amountMaxB"),w("openTime")]),P=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:oo,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Jl,isSigner:!1,isWritable:!1},{pubkey:ui,isSigner:!1,isWritable:!1},{pubkey:st,isSigner:!1,isWritable:!1}],x=Buffer.alloc(k.span);return k.encode({amountMaxA:g,amountMaxB:h,openTime:A},x),new Hn({keys:P,programId:i,data:Buffer.from([...jn.initialize,...x])})}function ga(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y){let f=_([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:oo,isSigner:!1,isWritable:!1},{pubkey:ya,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],g=Buffer.alloc(f.span);return em.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:y},g),new Hn({keys:b,programId:i,data:Buffer.from([...jn.deposit,...g])})}function wa(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y){let f=_([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:oo,isSigner:!1,isWritable:!1},{pubkey:ya,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Mo,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:y},g),new Hn({keys:b,programId:i,data:Buffer.from([...jn.withdraw,...g])})}function Aa(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y,f){let b=_([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],h=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},h),new Hn({keys:g,programId:i,data:Buffer.from([...jn.swapBaseInput,...h])})}function ha(i,e,t,n,r,o,s,a,u,c,l,m,d,p,y,f){let b=_([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],h=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},h),new Hn({keys:g,programId:i,data:Buffer.from([...jn.swapBaseOutput,...h])})}import ze from"bn.js";var Pa=_([be(8),F("bump"),Ee("disableCreatePool"),bt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),K("protocolOwner"),K("fundOwner"),q(w(),16)]),ka=_([be(8),K("configId"),K("poolCreator"),K("vaultA"),K("vaultB"),K("mintLp"),K("mintA"),K("mintB"),K("mintProgramA"),K("mintProgramB"),K("observationId"),F("bump"),F("status"),F("lpDecimals"),F("mintDecimalA"),F("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),q(w(),32)]);var Qn=class extends Pe{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 this.scope.connection.getMultipleAccountsInfo(e.map(m=>new G(m))),r={},o=new Set,s=[];for(let m=0;m<e.length;m++){let d=n[m];if(d===null)throw Error("fetch pool info error: "+String(e[m]));let p=ka.decode(d.data);r[String(e[m])]=p,o.add(String(p.configId)),s.push(p.vaultA,p.vaultB)}let a={};if(t){let m=[...o],d=await this.scope.connection.getMultipleAccountsInfo(m.map(p=>new G(p)));for(let p=0;p<m.length;p++){let y=d[p];if(y===null)throw Error("fetch pool config error: "+m[p]);a[m[p]]=Pa.decode(y.data)}}let u={},c=await this.scope.connection.getMultipleAccountsInfo(s.map(m=>new G(m)));for(let m=0;m<s.length;m++){let d=c[m];if(d===null)throw Error("fetch vault info error: "+s[m]);u[String(s[m])]=new ze(tm.decode(d.data).amount.toString())}let l={};for(let[m,d]of Object.entries(r)){let p=u[d.vaultA.toString()].sub(d.protocolFeesMintA).sub(d.fundFeesMintA),y=u[d.vaultB.toString()].sub(d.protocolFeesMintB).sub(d.fundFeesMintB);l[m]=W(R({},d),{baseReserve:p,quoteReserve:y,configInfo:a[d.configId.toString()],poolPrice:new M(y.toString()).div(new M(10).pow(d.mintDecimalB)).div(new M(p.toString()).div(new M(10).pow(d.mintDecimalA)))})}return l}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:r,associatedOnly:o=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:u}=m,c=Ae(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var Q,v,j;let d=r.feePayer||((Q=this.scope.owner)==null?void 0:Q.publicKey),p=new ze(new G(c.mintA.address).toBuffer()).lte(new ze(new G(c.mintB.address).toBuffer())),[y,f]=p?[c.mintA,c.mintB]:[c.mintB,c.mintA],[b,g]=p?[c.mintAAmount,c.mintBAmount]:[c.mintBAmount,c.mintAAmount],h=r.useSOLBalance&&y.address===Yr.toBase58(),A=r.useSOLBalance&&f.address===Yr.toBase58(),[k,P]=[new G(y.address),new G(f.address)],x=this.createTxBuilder(),{account:B,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({mint:k,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:h?{payer:d,amount:b}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:o,checkCreateATAOwner:s});x.addInstruction(I||{});let{account:S,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({mint:new G(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:A?{payer:d,amount:g}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:o,checkCreateATAOwner:s});if(x.addInstruction(N||{}),B===void 0||S===void 0)throw Error("you don't has some token account");let V=fa({programId:e,mintA:k,mintB:P});return x.addInstruction({instructions:[ba(e,this.scope.ownerPubKey,V.configId,V.authority,V.poolId,k,P,V.lpMint,B,S,we(this.scope.ownerPubKey,V.lpMint).publicKey,V.vaultA,V.vaultB,t,new G((v=y.programId)!=null?v:Ut),new G((j=f.programId)!=null?j:Ut),V.observationId,b,g,n)],instructionTypes:[E.CpmmCreatePool]}),x.addCustomComputeBudget(u),x.versionBuild({txVersion:a,extInfo:{address:W(R({},V),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:r,slippage:o,computeResult:s,computeBudgetConfig:a,config:u,txVersion:c}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),n.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:n.toString()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:d}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),p=await this.getRpcPoolInfo(t.id),{liquidity:y,inputAmountFee:f,anotherAmount:b}=s||this.computePairAmount({poolInfo:W(R({},t),{mintAmountA:new M(p.baseReserve.toString()).div(10**t.mintA.decimals).toNumber(),mintAmountB:new M(p.quoteReserve.toString()).div(10**t.mintB.decimals).toNumber(),lpAmount:new M(p.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),slippage:o,baseIn:r,epochInfo:await this.scope.fetchEpochInfo(),amount:new M(n.toString()).div(10**(r?t.mintA.decimals:t.mintB.decimals))}),g=b.amount,h=t.mintA.address===Yr.toString(),A=t.mintB.address===Yr.toString(),k=this.createTxBuilder(),[P,x]=[new G(t.mintA.address),new G(t.mintB.address)],{account:B,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new G(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||(r?n:g).isZero()?{payer:this.scope.ownerPubKey,amount:r?n:g}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!1,checkCreateATAOwner:d});k.addInstruction(I||{});let{account:S,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new G(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||(r?g:n).isZero()?{payer:this.scope.ownerPubKey,amount:r?g:n}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!1,checkCreateATAOwner:d});k.addInstruction(N||{}),!B&&!S&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let V=await l.getCreatedTokenAccount({mint:new G(t.lpMint.address)}),ee=await l.handleTokenAccount({side:"out",amount:0,mint:new G(t.lpMint.address),tokenAccount:V,bypassAssociatedCheck:m,checkCreateATAOwner:d}),{tokenAccount:Q}=ee,v=Ae(ee,["tokenAccount"]);k.addInstruction(v);let j=await this.getCpmmPoolKeys(t.id);return k.addInstruction({instructions:[ga(new G(t.programId),this.scope.ownerPubKey,new G(j.authority),new G(t.id),Q,B,S,new G(j.vault.A),new G(j.vault.B),P,x,new G(t.lpMint.address),y,r?f.amount:g,r?g:f.amount)],instructionTypes:[E.CpmmAddLiquidity],lookupTableAddress:j.lookupTableAccount?[j.lookupTableAccount]:[]}),k.addCustomComputeBudget(a),k.versionBuild({txVersion:c})}async withdrawLiquidity(e){var Q,v;let{poolInfo:t,lpAmount:n,slippage:r,computeBudgetConfig:o,txVersion:s}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new Qe(new ze(1)).sub(r),u=await this.getRpcPoolInfo(t.id),[c,l]=[a.mul(n.mul(u.baseReserve).div(u.lpAmount)).quotient,a.mul(n.mul(u.quoteReserve).div(u.lpAmount)).quotient],m=await this.scope.fetchEpochInfo(),[d,p]=[ye(c,t.mintA.extensions.feeConfig,m,!0),ye(l,t.mintB.extensions.feeConfig,m,!0)],{account:y}=this.scope,f=this.createTxBuilder(),[b,g]=[new G(t.mintA.address),new G(t.mintB.address)],h=b.equals(te),A=g.equals(te),k,P,{account:x,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new G(t.mintA.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!h,associatedOnly:!h,checkCreateATAOwner:!1});k=x,B&&f.addInstruction(B);let{account:I,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new G(t.mintB.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:!A,checkCreateATAOwner:!1});P=I,S&&f.addInstruction(S),(!k||!P)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let N=await y.getCreatedTokenAccount({mint:new G(t.lpMint.address)});N||this.logAndCreateError("cannot found lp token account","tokenAccounts",y.tokenAccounts);let V=await this.getCpmmPoolKeys(t.id);return f.addInstruction({instructions:[wa(new G(t.programId),this.scope.ownerPubKey,new G(V.authority),new G(t.id),N,k,P,new G(V.vault.A),new G(V.vault.B),b,g,new G(t.lpMint.address),n,c.sub((Q=d.fee)!=null?Q:new ze(0)),l.sub((v=p.fee)!=null?v:new ze(0)))],instructionTypes:[E.CpmmWithdrawLiquidity],lookupTableAddress:V.lookupTableAccount?[V.lookupTableAccount]:[]}),f.addCustomComputeBudget(o),f.versionBuild({txVersion:s})}async swap(e){var k,P,I,S,N,V;let{poolInfo:t,baseIn:n,swapResult:r,config:o,computeBudgetConfig:s,txVersion:a}=e,{bypassAssociatedCheck:u,checkCreateATAOwner:c}=R({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),l=this.createTxBuilder(),[m,d]=[new G(t.mintA.address),new G(t.mintB.address)],p=await this.scope.account.getCreatedTokenAccount({programId:new G((k=t.mintA.programId)!=null?k:Ut),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new G((P=t.mintB.programId)!=null?P:Ut),mint:d,associatedOnly:!1}),x=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?r.sourceAmountSwapped:r.destinationAmountSwapped,mint:m,tokenAccount:p,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:f}=x,b=Ae(x,["tokenAccount"]);l.addInstruction(b);let B=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?r.destinationAmountSwapped:r.sourceAmountSwapped,mint:d,tokenAccount:y,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:g}=B,h=Ae(B,["tokenAccount"]);l.addInstruction(h),!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let A=await this.getCpmmPoolKeys(t.id);return l.addInstruction({instructions:[n?Aa(new G(t.programId),this.scope.ownerPubKey,new G(A.authority),new G(A.config.id),new G(t.id),f,g,new G(A.vault.A),new G(A.vault.B),new G((I=t.mintA.programId)!=null?I:Ut),new G((S=t.mintB.programId)!=null?S:Ut),m,d,zr(new G(t.programId),new G(t.id)).publicKey,r.sourceAmountSwapped,r.destinationAmountSwapped):ha(new G(t.programId),this.scope.ownerPubKey,new G(A.authority),new G(A.config.id),new G(t.id),g,f,new G(A.vault.B),new G(A.vault.A),new G((N=t.mintB.programId)!=null?N:Ut),new G((V=t.mintA.programId)!=null?V:Ut),d,m,zr(new G(t.programId),new G(t.id)).publicKey,r.sourceAmountSwapped,r.destinationAmountSwapped)],instructionTypes:[n?E.CpmmSwapBaseIn:E.CpmmSwapBaseOut]}),l.addCustomComputeBudget(s),l.versionBuild({txVersion:a})}computePairAmount({poolInfo:e,amount:t,slippage:n,epochInfo:r,baseIn:o}){var h,A,k,P,x,B,I,S;let s=1-Number(n.toSignificant())/100,a=new ze(new M(t).mul(10**e[o?"mintA":"mintB"].decimals).mul(s).toFixed(0)),u=ye(a,e[o?"mintA":"mintB"].extensions.feeConfig,r,!1),c=a.sub((h=u.fee)!=null?h:new ze(0)),[l,m]=[new ze(new M(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new ze(new M(e.mintAmountB).mul(10**e.mintB.decimals).toString())],d=new ze(new M(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,M.ROUND_DOWN));this.logDebug("baseReserve:",l.toString(),"quoteReserve:",m.toString()),this.logDebug("tokenIn:",o?e.mintA.symbol:e.mintB.symbol,"amountIn:",a.toString(),"amountInFee:",(k=(A=u.fee)==null?void 0:A.toString())!=null?k:0,"anotherToken:",o?e.mintB.symbol:e.mintA.symbol,"slippage:",`${n.toSignificant()}%`);let p=o?"base":"quote";this.logDebug("input side:",p);let y=c.mul(d).div(p==="base"?l:m),f={amount:qe,fee:void 0,expirationTime:void 0};c.isZero()||(f=ye(nm(y,l,m,d)[o?"amountB":"amountA"],e[o?"mintB":"mintA"].extensions.feeConfig,r,!0));let b=new Qe(new ze(1)).add(n),g=ye(b.mul(f.amount.sub((P=f.fee)!=null?P:new ze(0))).quotient,e[o?"mintB":"mintA"].extensions.feeConfig,r,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(B=(x=f.fee)==null?void 0:x.toString())!=null?B:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(S=(I=g.fee)==null?void 0:I.toString())!=null?S:0),{inputAmountFee:u,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function nm(i,e,t,n){let r=i.mul(e).div(n);!r.isZero()&&!i.mul(e).mod(n).isZero()&&(r=r.add(new ze(1)));let o=i.mul(t).div(n);return!o.isZero()&&!i.mul(t).mod(n).isZero()&&(o=o.add(new ze(1))),{amountA:r,amountB:o}}var Zn=class extends Pe{constructor(e){super(e)}static getAddLiquidityDefaultPool({addLiquidityPools:e,poolInfosCache:t}){if(e.length===0)return;if(e.length===1||(e.sort((r,o)=>o.version-r.version),e[0].version!==e[1].version))return e[0];let n=e.filter(r=>r.version===e[0].version);return n.sort((r,o)=>this.comparePoolSize(r,o,t)),n[0]}static comparePoolSize(e,t,n){let r=n[e.id],o=n[t.id];return r===void 0?1:o===void 0?-1:e.baseMint===t.baseMint?r.baseReserve.sub(o.baseReserve).gte(qe)?-1:1:r.baseReserve.sub(o.quoteReserve).gte(qe)?-1:1}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(te));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n}=e,r=await this.getWSolAccounts(),o=this.createTxBuilder();o.addCustomComputeBudget(e.computeBudgetConfig);let s=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(s);let a=Y(t);for(let u=0;u<r.length;u++)a.gte(r[u].amount)?(o.addInstruction({instructions:[It({tokenAccount:r[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(r[u].amount)):(o.addInstruction({instructions:[It({tokenAccount:r[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),On({destination:s.addresses.newAccount,source:r[u].publicKey,amount:a,owner:this.scope.ownerPubKey,tokenProgram:n}));return o.build()}async wrapWSol(e,t){let n=await this.getWSolAccounts(),r=this.createTxBuilder(),o=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return r.addInstruction(o),n.length&&r.addInstruction({instructions:[On({destination:n[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[It({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),r.build()}};import{TOKEN_PROGRAM_ID as rm}from"@solana/spl-token";import{PublicKey as im,Transaction as so,TransactionInstruction as om}from"@solana/web3.js";import Ta from"bn.js";var We=class extends Pe{static getPdaPoolId(e,t){return ue([We.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,r){return ue([We.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Ta(r).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:r,chainTime:o}){if(n.length===0)return[];let s=n.map(l=>We.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<We.VERSION_PROJECT.length;l++)a.push(...s.map(m=>We.getPdaOwnerId(t,m,r,l).publicKey));let u=await yt(e,[...s,...a]),c=[];for(let l=0;l<u.length;l++){let m=Math.floor(l/n.length),d=l%n.length,p=s[d],y=a[l],f=u[d],b=u[n.length+l];if(!(f&&b)||f.data.length!==We.POOL_LAYOUT.span||b.data.length!==We.OWNER_LAYOUT.span)continue;let g=We.POOL_LAYOUT.decode(f.data),h=We.OWNER_LAYOUT.decode(b.data),A=g.openTime.toNumber(),k=g.endTime.toNumber(),P=h.tokenInfo.map(I=>I.debtAmount.gt(new Ta(0))).filter(I=>!I).length!==3,x=o>A&&o<k&&g.status===1,B=P&&x;c.push({programId:t,poolId:p,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:h.lpAmount,project:We.VERSION_PROJECT[m],openTime:A,endTime:k,canClaim:B,canClaimErrorType:P?x?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((I,S)=>({mintAddress:I.mintAddress,mintVault:I.mintVault,mintDecimals:I.mintDecimals,perLpLoss:I.perLpLoss,debtAmount:h.tokenInfo[S].debtAmount.add(h.tokenInfo[S].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),r=t.wallet||this.scope.ownerPubKey,o=[];for(let u of e.tokenInfo){let{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({mint:u.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:u.mintAddress.equals(he.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!u.mintAddress.equals(he.WSOL.mint),associatedOnly:u.mintAddress.equals(he.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),o.push(c)}n.addInstruction({instructions:[We.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:r,ownerPda:e.ownerAccountId,claimAddress:o}})]});let{transaction:s,signers:a}=n.build();return[{transaction:s,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),r=t.wallet||this.scope.ownerPubKey,o={};for(let c of e){let l=[];for(let m of c.tokenInfo){let{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(he.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!m.mintAddress.equals(he.WSOL.mint),associatedOnly:m.mintAddress.equals(he.WSOL.mint)?!1:t.associatedOnly});p&&n.addInstruction(p),d&&(o[m.mintAddress.toString()]=d,l.push(d))}n.addInstruction({instructions:[We.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:r,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),u=n.allInstructions;return yi(u,[r,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new so().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new so().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new so().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let r=_([]),o=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(u=>({pubkey:u,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:u})=>({pubkey:u,isSigner:!1,isWritable:!0})),{pubkey:rm,isSigner:!1,isWritable:!1}],s=Buffer.alloc(r.span);r.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new om({keys:o,programId:e,data:a})}},nt=We;nt.CLAIMED_NUM=3,nt.POOL_LAYOUT=_([be(8),F("bump"),F("status"),w("openTime"),w("endTime"),K("ammId"),q(_([F("mintDecimals"),K("mintAddress"),K("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),We.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),nt.OWNER_LAYOUT=_([be(8),F("bump"),F("version"),K("poolId"),K("owner"),w("lpAmount"),q(_([K("mintAddress"),w("debtAmount"),w("claimedAmount")]),We.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),nt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new im(e)),nt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},nt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as $n}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ka}from"@solana/spl-token";import Jn from"bn.js";import{TransactionInstruction as am,SYSVAR_RENT_PUBKEY as um}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ia}from"@solana/spl-token";import{createInitializeAccountInstruction as xa}from"@solana/spl-token";import{SystemProgram as en,Transaction as Ba}from"@solana/web3.js";function sm(i="accountFlags"){let e=new Cr(i);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var ao=_([be(5),sm("accountFlags"),K("ownAddress"),w("vaultSignerNonce"),K("baseMint"),K("quoteMint"),K("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),K("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),K("requestQueue"),K("eventQueue"),K("bids"),K("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),be(7)]);function cm({programId:i,marketInfo:e}){let t=_([F("version"),Ge("instruction"),w("baseLotSize"),w("quoteLotSize"),bt("feeRateBps"),w("vaultSignerNonce"),w("quoteDustThreshold")]),n=[{pubkey:e.id,isSigner:!1,isWritable:!0},{pubkey:e.requestQueue,isSigner:!1,isWritable:!0},{pubkey:e.eventQueue,isSigner:!1,isWritable:!0},{pubkey:e.bids,isSigner:!1,isWritable:!0},{pubkey:e.asks,isSigner:!1,isWritable:!0},{pubkey:e.baseVault,isSigner:!1,isWritable:!0},{pubkey:e.quoteVault,isSigner:!1,isWritable:!0},{pubkey:e.baseMint,isSigner:!1,isWritable:!1},{pubkey:e.quoteMint,isSigner:!1,isWritable:!1},{pubkey:e.authority?e.quoteMint:um,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),r=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},r),new am({keys:n,programId:i,data:r})}async function Sa({connection:i,wallet:e,marketInfo:t}){let n=new Ba,r=await i.getMinimumBalanceForRentExemption(165);n.add(en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:r,space:165,programId:Ia}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:r,space:165,programId:Ia}),xa(t.baseVault.publicKey,t.baseMint,t.vaultOwner),xa(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new Ba;return o.add(en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await i.getMinimumBalanceForRentExemption(ao.span),space:ao.span,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await i.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await i.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await i.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),en.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await i.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),cm({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:o,signer:[],instructionTypes:[E.CreateAccount,E.CreateAccount,E.CreateAccount,E.CreateAccount,E.CreateAccount,E.InitMarket]}]}var pn=class extends Pe{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:r,dexProgramId:o,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=Ve({fromPublicKey:u,programId:o}),l=Ve({fromPublicKey:u,programId:o}),m=Ve({fromPublicKey:u,programId:o}),d=Ve({fromPublicKey:u,programId:o}),p=Ve({fromPublicKey:u,programId:o}),y=Ve({fromPublicKey:u,programId:Ka}),f=Ve({fromPublicKey:u,programId:Ka}),b=0,g=new Jn(100);function h(){let S=new Jn(0);for(;;)try{return{vaultOwner:$n.createProgramAddressSync([c.publicKey.toBuffer(),S.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:S}}catch{if(S.iaddn(1),S.gt(new Jn(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:k}=h(),P=new Jn(Math.round(10**e.decimals*n)),x=new Jn(Math.round(n*10**t.decimals*r));if(P.eq(qe))throw Error("lot size is too small");if(x.eq(qe))throw Error("tick size or lot size is too small");let B=await Sa({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:o,id:c,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:A,requestQueue:l,eventQueue:m,bids:d,asks:p,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:k,baseLotSize:P,quoteLotSize:x}}),I=this.createTxBuilder();I.addInstruction({instructions:B[0].transaction.instructions,signers:B[0].signer});for await(let S of B.slice(1,B.length))I.addInstruction({instructions:S.transaction.instructions,signers:S.signer,instructionTypes:S.instructionTypes});return s===0?I.sizeCheckBuildV0({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new $n(e.mint),quoteMin:new $n(t.mint)}}):I.sizeCheckBuild({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new $n(e.mint),quoteMin:new $n(t.mint)}})}};import{PublicKey as tr}from"@solana/web3.js";import{TransactionInstruction as Ca,SYSVAR_CLOCK_PUBKEY as mm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ra}from"@solana/spl-token";var lm=_([F("instruction"),ns("amount")]),er=_([F("instruction")]);function Hr({programId:i},e){let t=[{pubkey:Ra,isSigner:!1,isWritable:!1},{pubkey:_o,isSigner:!1,isWritable:!1},...Object.entries(e).map(([r,o])=>({pubkey:o,isSigner:r==="userOwner",isWritable:!["authority","userOwner"].includes(r)}))],n=Buffer.alloc(er.span);return er.encode({instruction:2},n),new Ca({keys:t,programId:i,data:n})}function uo(i){let{poolConfig:e,userKeys:t,side:n}=i,r=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,o=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(er.span);er.encode({instruction:2},s);let a=[{pubkey:Ra,isWritable:!1,isSigner:!1},{pubkey:mm,isWritable:!1,isSigner:!1},{pubkey:e.id,isWritable:!0,isSigner:!1},{pubkey:e.authority,isWritable:!1,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:r,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new Ca({programId:e.programId,keys:a,data:s})}import La from"bn.js";var dm={[Cn.IDO_PROGRAM_ID_V1.toString()]:1,[Cn.IDO_PROGRAM_ID_V2.toString()]:2,[Cn.IDO_PROGRAM_ID_V3.toString()]:3,[Cn.IDO_PROGRAM_ID_V4.toString()]:4},fn=class extends Pe{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:r=!1,txVersion:o}){let s=this.createTxBuilder(),a=dm[t.programId];a||this.logAndCreateError("invalid version",a);let u=Ue(t),[c,l]=[!new La(e.coin).isZero(),!new La(e.pc).isZero()],m=u.projectInfo.mint.address.equals(te),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.projectInfo.mint.programId,mint:u.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!m,notUseTokenAccount:m,associatedOnly:m?!1:n,checkCreateATAOwner:r});!d&&c&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),c&&p&&s.addInstruction(p);let y=u.buyInfo.mint.address.equals(te),{account:f,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.buyInfo.mint.programId,mint:u.buyInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:n,checkCreateATAOwner:r});if(!d&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&b&&s.addInstruction(b),(!d||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return s.addInstruction({instructions:[...c?[Hr({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:d,userIdoInfo:new tr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[Hr({programId:new tr(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new tr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[Hr({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:d,userIdoInfo:new tr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:o});let g={poolConfig:{id:u.id,programId:u.programId,authority:u.authority,baseVault:u.projectInfo.vault,quoteVault:u.buyInfo.vault,baseToken:t.projectInfo.mint,quoteToken:t.buyInfo.mint},userKeys:{baseTokenAccount:d,quoteTokenAccount:f,ledgerAccount:new tr(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[uo(W(R({},g),{side:"base"}))]:[],...l?[uo(W(R({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as pm}from"@solana/web3.js";import{MintLayout as fm,TOKEN_2022_PROGRAM_ID as co,TOKEN_PROGRAM_ID as lo}from"@solana/spl-token";var nr=class extends Pe{constructor(t){super(t);this._tokenList=[];this._tokenMap=new Map;this._blackTokenMap=new Map;this._mintGroup={official:new Set,jup:new Set,extra:new Set};this._whiteMap=new Set;this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:r="strict"}=t||{},{mintList:o,blacklist:s,whiteList:a}=await this.scope.fetchV3TokenList(n),u=await this.scope.fetchJupTokenList(r,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._whiteMap=new Set(a),this._tokenMap.set(Mt.address,Mt),this._mintGroup.official.add(Mt.address),s.forEach(c=>{this._blackTokenMap.set(c.address,W(R({},c),{priority:-1}))}),o.forEach(c=>{var l;this._blackTokenMap.has(c.address)||(this._tokenMap.set(c.address,W(R({},c),{type:"raydium",priority:2,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?co.toBase58():lo.toBase58()})),this._mintGroup.official.add(c.address))}),u.forEach(c=>{var l;this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,W(R({},c),{type:"jupiter",priority:1,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?co.toBase58():lo.toBase58()})),this._mintGroup.jup.add(c.address))}),this._extraTokenList.forEach(c=>{this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,W(R({},c),{type:"extra",priority:1,programId:c.programId||c.tags.includes("token-2022")?co.toBase58():lo.toBase58()})),this._mintGroup.extra.add(c.address))}),this._tokenList=Array.from(this._tokenMap).map(c=>c[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}get whiteListMap(){return this._whiteMap}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),r=this._tokenMap.get(n);if(r)return r;if(n.toLocaleUpperCase()==="SOL")return Mt;let o=(await this.scope.api.getTokenInfo([n]))[0];if(o)return this._mintGroup.extra.add(n),this._tokenMap.set(n,W(R({},o),{priority:2})),o;let s=await this.scope.connection.getAccountInfo(new pm(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=fm.decode(s.data),u=n.toString().substring(0,6),c={chainId:101,address:n,programId:s.owner.toBase58(),logoURI:"",symbol:u,name:u,decimals:a.decimals,tags:[],extensions:{},priority:0,type:"unknown"};return this._mintGroup.extra.add(n),this._tokenMap.set(n,c),c}};var jr=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:r,api:o,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:u}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=r?new at(r):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=oe("Raydium"),this.farm=new Fn({scope:this,moduleName:"Raydium_Farm"}),this.account=new Nn({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new zn({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new nr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new Zn({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new Yn({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new Qn({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new nt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new pn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new fn({scope:this,moduleName:"Raydium_ido"}),this.availability={};let c=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:c,value:{chainTime:s||Date.now()-a,offset:a}})}static async load(e){var l;let t=ym({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:r,logCount:o,logRequests:s,urlConfigs:a}=t,u=new Br({cluster:n,timeout:r,urlConfigs:a,logCount:o,logRequests:s}),c=new jr(W(R({},t),{api:u}));return await c.fetchAvailabilityStatus((l=e.disableFeatureCheck)!=null?l:!0),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(Sr);return this._owner.publicKey}setOwner(e){return this._owner=e?new at(e):void 0,this}get connection(){if(!this._connection)throw new Error(Jo);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(Sr),new Error(Sr)}isCacheInvalidate(e){return new Date().getTime()-e>this._apiCacheTime}async fetchChainTime(){try{let e=await this.api.getChainTimeOffset();this._chainTime={fetched:Date.now(),value:{chainTime:Date.now()+e.offset*1e3,offset:e.offset*1e3}}}catch{this._chainTime=void 0}}async fetchV3TokenList(e){if(this.apiData.tokenList&&!this.isCacheInvalidate(this.apiData.tokenList.fetched)&&!e)return this.apiData.tokenList.data;let t=await this.api.getTokenList(),n={fetched:Date.now(),data:t};return this.apiData.tokenList=n,n.data}async fetchJupTokenList(e,t){var o;let n=(o=this.apiData.jupTokenList)==null?void 0:o[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let r=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=W(R({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:r}}),this.apiData.jupTokenList[e].data}get chainTimeData(){var e;return(e=this._chainTime)==null?void 0:e.value}async chainTimeOffset(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.offset:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.offset)||0)}async currentBlockChainTime(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.chainTime:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.chainTime)||Date.now())}async fetchEpochInfo(){return this._epochInfo&&Date.now()-this._epochInfo.fetched<=1e3*30?this._epochInfo.value:(this._epochInfo={fetched:Date.now(),value:await this.connection.getEpochInfo()},this._epochInfo.value)}async fetchAvailabilityStatus(e){if(e)return{};try{let t=await this.api.fetchAvailabilityStatus(),n=t.all===!1;return this.availability={all:t.all,swap:n?!1:t.swap,createConcentratedPosition:n?!1:t.createConcentratedPosition,addConcentratedPosition:n?!1:t.addConcentratedPosition,addStandardPosition:n?!1:t.addStandardPosition,removeConcentratedPosition:n?!1:t.removeConcentratedPosition,removeStandardPosition:n?!1:t.removeStandardPosition,addFarm:n?!1:t.addFarm,removeFarm:n?!1:t.removeFarm},t}catch{return{}}}};export{jr as Raydium};
|
|
2
2
|
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
3
3
|
//# sourceMappingURL=raydium.mjs.map
|