@raydium-io/raydium-sdk-v2 0.1.7-alpha → 0.1.8-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/index.d.ts +1 -1
- package/lib/raydium/account/instruction.d.ts +1 -1
- package/lib/raydium/account/layout.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 +3 -3
- 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/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/index.js +1 -1
- package/lib/raydium/liquidity/index.js.map +1 -1
- package/lib/raydium/liquidity/index.mjs +1 -1
- package/lib/raydium/liquidity/index.mjs.map +1 -1
- package/lib/raydium/liquidity/instruction.d.ts +1 -1
- package/lib/raydium/liquidity/instruction.js +1 -1
- package/lib/raydium/liquidity/instruction.js.map +1 -1
- package/lib/raydium/liquidity/instruction.mjs +1 -1
- package/lib/raydium/liquidity/instruction.mjs.map +1 -1
- package/lib/raydium/liquidity/layout.d.ts +2 -2
- 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/liquidity/utils.js.map +1 -1
- package/lib/raydium/liquidity/utils.mjs.map +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/index.js +1 -1
- package/lib/raydium/tradeV2/index.js.map +1 -1
- package/lib/raydium/tradeV2/index.mjs +1 -1
- package/lib/raydium/tradeV2/index.mjs.map +1 -1
- package/lib/raydium/tradeV2/instrument.d.ts +2 -2
- package/lib/raydium/tradeV2/instrument.js +1 -1
- package/lib/raydium/tradeV2/instrument.js.map +1 -1
- package/lib/raydium/tradeV2/instrument.mjs +1 -1
- package/lib/raydium/tradeV2/instrument.mjs.map +1 -1
- 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-6c4df6ad.d.ts → raydium-916014c1.d.ts} +3 -3
- package/lib/{type-68b778f2.d.ts → type-389634c9.d.ts} +1 -1
- package/lib/{type-bdbaf9b2.d.ts → type-9fe71e3c.d.ts} +7 -7
- package/package.json +1 -1
- package/src/raydium/liquidity/instruction.ts +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var tr=Object.defineProperty,nr=Object.defineProperties;var ir=Object.getOwnPropertyDescriptors;var Zn=Object.getOwnPropertySymbols;var rr=Object.prototype.hasOwnProperty,or=Object.prototype.propertyIsEnumerable;var jn=(i,e,t)=>e in i?tr(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,Y=(i,e)=>{for(var t in e||(e={}))rr.call(e,t)&&jn(i,t,e[t]);if(Zn)for(var t of Zn(e))or.call(e,t)&&jn(i,t,e[t]);return i},te=(i,e)=>nr(i,ir(e));import{get as Jn,set as sr}from"lodash";import ei from"dayjs";import ar from"dayjs/plugin/utc";ei.extend(ar);var nn=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 ei().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}},$n={},ur={};function ae(i){let e=Jn($n,i);if(!e){let t=Jn(ur,i);e=new nn({name:i,logLevel:t}),sr($n,i,e)}return e}import{PublicKey as ko}from"@solana/web3.js";import Ao from"bn.js";import yo from"big.js";import Ht from"bn.js";import Be from"bn.js";var bt=9e15,it=1e9,rn="0123456789abcdef",Ft="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Wt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",on={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-bt,maxE:bt,crypto:!1},ri,ze,M=!0,Vt="[DecimalError] ",nt=Vt+"Invalid argument: ",oi=Vt+"Precision limit exceeded",si=Vt+"crypto unavailable",ai="[object Decimal]",we=Math.floor,ce=Math.pow,cr=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,lr=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,mr=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ui=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Ee=1e7,C=7,dr=9007199254740991,pr=Ft.length-1,sn=Wt.length-1,w={toStringTag:ai};w.absoluteValue=w.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),K(i)};w.ceil=function(){return K(new this.constructor(this),this.e+1,2)};w.clampedTo=w.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(nt+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};w.comparedTo=w.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};w.cosine=w.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())+C,n.rounding=1,t=fr(n,pi(n,t)),n.precision=i,n.rounding=e,K(ze==2||ze==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};w.cubeRoot=w.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(M=!1,o=l.s*ce(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=fe(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=ce(t,1/3),i=we((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=J(c.plus(l).times(a),c.plus(u),s+2,1),fe(a.d).slice(0,s)===(t=fe(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(K(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")&&(K(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return M=!0,K(n,i,m.rounding,e)};w.decimalPlaces=w.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-we(this.e/C))*C,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};w.dividedBy=w.div=function(i){return J(this,new this.constructor(i))};w.dividedToIntegerBy=w.divToInt=function(i){var e=this,t=e.constructor;return K(J(e,new t(i),0,1,1),t.precision,t.rounding)};w.equals=w.eq=function(i){return this.cmp(i)===0};w.floor=function(){return K(new this.constructor(this),this.e+1,3)};w.greaterThan=w.gt=function(i){return this.cmp(i)>0};w.greaterThanOrEqualTo=w.gte=function(i){var e=this.cmp(i);return e==1||e===0};w.hyperbolicCosine=w.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/_t(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=yt(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 K(o,s.precision=t,s.rounding=n,!0)};w.hyperbolicSine=w.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=yt(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/_t(5,i)),r=yt(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,K(r,e,t,!0)};w.hyperbolicTangent=w.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,J(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};w.inverseCosine=w.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()?Oe(t,r,o):new t(0):new t(NaN):e.isZero()?Oe(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=Oe(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};w.inverseHyperbolicCosine=w.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,M=!1,t=t.times(t).minus(1).sqrt().plus(t),M=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};w.inverseHyperbolicSine=w.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,M=!1,t=t.times(t).plus(1).sqrt().plus(t),M=!0,n.precision=i,n.rounding=e,t.ln())};w.inverseHyperbolicTangent=w.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?K(new o(r),i,e,!0):(o.precision=t=n-r.e,r=J(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)};w.inverseSine=w.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=Oe(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)))};w.inverseTangent=w.atan=function(){var i,e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=sn)return s=Oe(l,m+4,p).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=sn)return s=Oe(l,m+4,p).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/C+2|0),i=t;i;--i)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(M=!1,e=Math.ceil(a/C),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)),M=!0,K(s,l.precision=m,l.rounding=p,!0)};w.isFinite=function(){return!!this.d};w.isInteger=w.isInt=function(){return!!this.d&&we(this.e/C)>this.d.length-2};w.isNaN=function(){return!this.s};w.isNegative=w.isNeg=function(){return this.s<0};w.isPositive=w.isPos=function(){return this.s>0};w.isZero=function(){return!!this.d&&this.d[0]===0};w.lessThan=w.lt=function(i){return this.cmp(i)<0};w.lessThanOrEqualTo=w.lte=function(i){return this.cmp(i)<1};w.logarithm=w.log=function(i){var e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding,d=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(M=!1,a=m+d,s=tt(c,a),n=e?vt(l,a+10):tt(i,a),u=J(s,n,a,1),Pt(u.d,r=m,p))do if(a+=10,s=tt(c,a),n=e?vt(l,a+10):tt(i,a),u=J(s,n,a,1),!o){+fe(u.d).slice(r+1,r+15)+1==1e14&&(u=K(u,m+1,0));break}while(Pt(u.d,r+=10,p));return M=!0,K(u,m,p)};w.minus=w.sub=function(i){var e,t,n,r,o,s,a,u,c,l,m,p,d=this,b=d.constructor;if(i=new b(i),!d.d||!i.d)return!d.s||!i.s?i=new b(NaN):d.d?i.s=-i.s:i=new b(i.d||d.s!==i.s?d:NaN),i;if(d.s!=i.s)return i.s=-i.s,d.plus(i);if(c=d.d,p=i.d,a=b.precision,u=b.rounding,!c[0]||!p[0]){if(p[0])i.s=-i.s;else if(c[0])i=new b(d);else return new b(u===3?-0:0);return M?K(i,a,u):i}if(t=we(i.e/C),l=we(d.e/C),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=p.length):(e=p,t=l,s=c.length),n=Math.max(Math.ceil(a/C),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=p.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=p[n]){m=c[n]<p[n];break}o=0}for(m&&(e=c,c=p,p=e,i.s=-i.s),s=c.length,n=p.length-s;n>0;--n)c[s++]=0;for(n=p.length;n>o;){if(c[--n]<p[n]){for(r=n;r&&c[--r]===0;)c[r]=Ee-1;--c[r],c[n]+=Ee}c[n]-=p[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(i.d=c,i.e=Dt(c,t),M?K(i,a,u):i):new b(u===3?-0:0)};w.modulo=w.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]?K(new n(t),n.precision,n.rounding):(M=!1,n.modulo==9?(e=J(t,i.abs(),0,3,1),e.s*=i.s):e=J(t,i,0,n.modulo,1),e=e.times(i),M=!0,t.minus(e))};w.naturalExponential=w.exp=function(){return an(this)};w.naturalLogarithm=w.ln=function(){return tt(this)};w.negated=w.neg=function(){var i=new this.constructor(this);return i.s=-i.s,K(i)};w.plus=w.add=function(i){var e,t,n,r,o,s,a,u,c,l,m=this,p=m.constructor;if(i=new p(i),!m.d||!i.d)return!m.s||!i.s?i=new p(NaN):m.d||(i=new p(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=p.precision,u=p.rounding,!c[0]||!l[0])return l[0]||(i=new p(m)),M?K(i,a,u):i;if(o=we(m.e/C),n=we(i.e/C),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/C),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)/Ee|0,c[r]%=Ee;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return i.d=c,i.e=Dt(c,n),M?K(i,a,u):i};w.precision=w.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(nt+i);return t.d?(e=ci(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};w.round=function(){var i=this,e=i.constructor;return K(new e(i),i.e+1,e.rounding)};w.sine=w.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())+C,n.rounding=1,t=yr(n,pi(n,t)),n.precision=i,n.rounding=e,K(ze>2?t.neg():t,i,e,!0)):new n(NaN)};w.squareRoot=w.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(M=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=fe(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=we((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(J(s,o,t+2,1)).times(.5),fe(o.d).slice(0,t)===(e=fe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(K(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")&&(K(n,u+1,1),i=!n.times(n).eq(s));break}return M=!0,K(n,u,l.rounding,i)};w.tangent=w.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=J(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,K(ze==2||ze==4?t.neg():t,i,e,!0)):new n(NaN)};w.times=w.mul=function(i){var e,t,n,r,o,s,a,u,c,l=this,m=l.constructor,p=l.d,d=(i=new m(i)).d;if(i.s*=l.s,!p||!p[0]||!d||!d[0])return new m(!i.s||p&&!p[0]&&!d||d&&!d[0]&&!p?NaN:!p||!d?i.s/0:i.s*0);for(t=we(l.e/C)+we(i.e/C),u=p.length,c=d.length,u<c&&(o=p,p=d,d=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,r=u+n;r>n;)a=o[r]+d[n]*p[r-n-1]+e,o[r--]=a%Ee|0,e=a/Ee|0;o[r]=(o[r]+e)%Ee|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=Dt(o,t),M?K(i,m.precision,m.rounding):i};w.toBinary=function(i,e){return cn(this,2,i,e)};w.toDecimalPlaces=w.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(xe(i,0,it),e===void 0?e=n.rounding:xe(e,0,8),K(t,i+t.e+1,e))};w.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=_e(n,!0):(xe(i,0,it),e===void 0?e=r.rounding:xe(e,0,8),n=K(new r(n),i+1,e),t=_e(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=_e(r):(xe(i,0,it),e===void 0?e=o.rounding:xe(e,0,8),n=K(new o(r),i+r.e+1,e),t=_e(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};w.toFraction=function(i){var e,t,n,r,o,s,a,u,c,l,m,p,d=this,b=d.d,f=d.constructor;if(!b)return new f(d);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=ci(b)-d.e-1,s=o%C,e.d[0]=ce(10,s<0?C+s:s),i==null)i=o>0?e:c;else{if(a=new f(i),!a.isInt()||a.lt(c))throw Error(nt+a);i=a.gt(e)?o>0?e:c:a}for(M=!1,a=new f(fe(b)),l=f.precision,f.precision=o=b.length*C*2;m=J(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=J(i.minus(t),n,0,1,1),u=u.plus(r.times(c)),t=t.plus(r.times(n)),u.s=c.s=d.s,p=J(c,n,o,1).minus(d).abs().cmp(J(u,t,o,1).minus(d).abs())<1?[c,n]:[u,t],f.precision=l,M=!0,p};w.toHexadecimal=w.toHex=function(i,e){return cn(this,16,i,e)};w.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:xe(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]?(M=!1,t=J(t,i,0,e,1).times(i),M=!0,K(t)):(i.s=t.s,t=i),t};w.toNumber=function(){return+this};w.toOctal=function(i,e){return cn(this,8,i,e)};w.toPower=w.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(ce(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,i.eq(1))return K(a,n,o);if(e=we(i.e/C),e>=i.d.length-1&&(t=c<0?-c:c)<=dr)return r=li(u,a,t,n),i.s<0?new u(1).div(r):K(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=ce(+a,c),e=t==0||!isFinite(t)?we(c*(Math.log("0."+fe(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(M=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),r=an(i.times(tt(a,n+t)),n),r.d&&(r=K(r,n+5,1),Pt(r.d,n,o)&&(e=n+10,r=K(an(i.times(tt(a,e+t)),e),e+5,1),+fe(r.d).slice(n+1,n+15)+1==1e14&&(r=K(r,n+1,0)))),r.s=s,M=!0,u.rounding=o,K(r,n,o))};w.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=_e(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(xe(i,1,it),e===void 0?e=r.rounding:xe(e,0,8),n=K(new r(n),i,e),t=_e(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toSignificantDigits=w.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(xe(i,1,it),e===void 0?e=n.rounding:xe(e,0,8)),K(new n(t),i,e)};w.toString=function(){var i=this,e=i.constructor,t=_e(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};w.truncated=w.trunc=function(){return K(new this.constructor(this),this.e+1,1)};w.valueOf=w.toJSON=function(){var i=this,e=i.constructor,t=_e(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function fe(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=C-n.length,t&&(o+=et(t)),o+=n;s=i[e],n=s+"",t=C-n.length,t&&(o+=et(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function xe(i,e,t){if(i!==~~i||i<e||i>t)throw Error(nt+i)}function Pt(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=C,r=0):(r=Math.ceil((e+1)/C),e%=C),o=ce(10,C-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)==ce(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)==ce(10,e-3)-1,s}function Et(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]+=rn.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 fr(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/_t(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=yt(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 J=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,p,d,b,f,y,k,h,A,x,P,L,E,_,ee,X,j,Me,pe=n.constructor,Te=n.s==r.s?1:-1,re=n.d,Q=r.d;if(!re||!re[0]||!Q||!Q[0])return new pe(!n.s||!r.s||(re?Q&&re[0]==Q[0]:!Q)?NaN:re&&re[0]==0||!Q?Te*0:Te/0);for(u?(d=1,l=n.e-r.e):(u=Ee,d=C,l=we(n.e/d)-we(r.e/d)),j=Q.length,ee=re.length,k=new pe(Te),h=k.d=[],m=0;Q[m]==(re[m]||0);m++);if(Q[m]>(re[m]||0)&&l--,o==null?(L=o=pe.precision,s=pe.rounding):a?L=o+(n.e-r.e)+1:L=o,L<0)h.push(1),b=!0;else{if(L=L/d+2|0,m=0,j==1){for(p=0,Q=Q[0],L++;(m<ee||p)&&L--;m++)E=p*u+(re[m]||0),h[m]=E/Q|0,p=E%Q|0;b=p||m<ee}else{for(p=u/(Q[0]+1)|0,p>1&&(Q=i(Q,p,u),re=i(re,p,u),j=Q.length,ee=re.length),_=j,A=re.slice(0,j),x=A.length;x<j;)A[x++]=0;Me=Q.slice(),Me.unshift(0),X=Q[0],Q[1]>=u/2&&++X;do p=0,c=e(Q,A,j,x),c<0?(P=A[0],j!=x&&(P=P*u+(A[1]||0)),p=P/X|0,p>1?(p>=u&&(p=u-1),f=i(Q,p,u),y=f.length,x=A.length,c=e(f,A,y,x),c==1&&(p--,t(f,j<y?Me:Q,y,u))):(p==0&&(c=p=1),f=Q.slice()),y=f.length,y<x&&f.unshift(0),t(A,f,x,u),c==-1&&(x=A.length,c=e(Q,A,j,x),c<1&&(p++,t(A,j<x?Me:Q,x,u))),x=A.length):c===0&&(p++,A=[0]),h[m++]=p,c&&A[0]?A[x++]=re[_]||0:(A=[re[_]],x=1);while((_++<ee||A[0]!==void 0)&&L--);b=A[0]!==void 0}h[0]||h.shift()}if(d==1)k.e=l,ri=b;else{for(m=1,p=h[0];p>=10;p/=10)m++;k.e=m+l*d-1,K(k,a?o+k.e+1:o,s,b)}return k}}();function K(i,e,t,n){var r,o,s,a,u,c,l,m,p,d=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+=C,s=e,l=m[p=0],u=l/ce(10,r-s-1)%10|0;else if(p=Math.ceil((o+1)/C),a=m.length,p>=a)if(n){for(;a++<=p;)m.push(0);l=u=0,r=1,o%=C,s=o-C+1}else break e;else{for(l=a=m[p],r=1;a>=10;a/=10)r++;o%=C,s=o-C+r,u=s<0?0:l/ce(10,r-s-1)%10|0}if(n=n||e<0||m[p+1]!==void 0||(s<0?l:l%ce(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/ce(10,r-s):0:m[p-1])%10&1||t==(i.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=i.e+1,m[0]=ce(10,(C-e%C)%C),i.e=-e||0):m[0]=i.e=0,i;if(o==0?(m.length=p,a=1,p--):(m.length=p+1,a=ce(10,C-o),m[p]=s>0?(l/ce(10,r-s)%ce(10,s)|0)*a:0),c)for(;;)if(p==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,m[0]==Ee&&(m[0]=1));break}else{if(m[p]+=a,m[p]!=Ee)break;m[p--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return M&&(i.e>d.maxE?(i.d=null,i.e=NaN):i.e<d.minE&&(i.e=0,i.d=[0])),i}function _e(i,e,t){if(!i.isFinite())return di(i);var n,r=i.e,o=fe(i.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+et(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+et(-r-1)+o,t&&(n=t-s)>0&&(o+=et(n))):r>=s?(o+=et(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+et(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=et(n))),o}function Dt(i,e){var t=i[0];for(e*=C;t>=10;t/=10)e++;return e}function vt(i,e,t){if(e>pr)throw M=!0,t&&(i.precision=t),Error(oi);return K(new i(Ft),e,1,!0)}function Oe(i,e,t){if(e>sn)throw Error(oi);return K(new i(Wt),e,t,!0)}function ci(i){var e=i.length-1,t=e*C+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 et(i){for(var e="";i--;)e+="0";return e}function li(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/C+4);for(M=!1;;){if(t%2&&(o=o.times(e),ni(o.d,s)&&(r=!0)),t=we(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),ni(e.d,s)}return M=!0,o}function ti(i){return i.d[i.d.length-1]&1}function mi(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 an(i,e){var t,n,r,o,s,a,u,c=0,l=0,m=0,p=i.constructor,d=p.rounding,b=p.precision;if(!i.d||!i.d[0]||i.e>17)return new p(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(M=!1,u=b):u=e,a=new p(.03125);i.e>-2;)i=i.times(a),m+=5;for(n=Math.log(ce(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new p(1),p.precision=u;;){if(o=K(o.times(i),u,1),t=t.times(++l),a=s.plus(J(o,t,u,1)),fe(a.d).slice(0,u)===fe(s.d).slice(0,u)){for(r=m;r--;)s=K(s.times(s),u,1);if(e==null)if(c<3&&Pt(s.d,u-n,d,c))p.precision=u+=10,t=o=a=new p(1),l=0,c++;else return K(s,p.precision=b,d,M=!0);else return p.precision=b,s}s=a}}function tt(i,e){var t,n,r,o,s,a,u,c,l,m,p,d=1,b=10,f=i,y=f.d,k=f.constructor,h=k.rounding,A=k.precision;if(f.s<0||!y||!y[0]||!f.e&&y[0]==1&&y.length==1)return new k(y&&!y[0]?-1/0:f.s!=1?NaN:y?0:f);if(e==null?(M=!1,l=A):l=e,k.precision=l+=b,t=fe(y),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=fe(f.d),n=t.charAt(0),d++;o=f.e,n>1?(f=new k("0."+t),o++):f=new k(n+"."+t.slice(1))}else return c=vt(k,l+2,A).times(o+""),f=tt(new k(n+"."+t.slice(1)),l-b).plus(c),k.precision=A,e==null?K(f,A,h,M=!0):f;for(m=f,u=s=f=J(f.minus(1),f.plus(1),l,1),p=K(f.times(f),l,1),r=3;;){if(s=K(s.times(p),l,1),c=u.plus(J(s,new k(r),l,1)),fe(c.d).slice(0,l)===fe(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(vt(k,l+2,A).times(o+""))),u=J(u,new k(d),l,1),e==null)if(Pt(u.d,l-b,h,a))k.precision=l+=b,c=s=f=J(m.minus(1),m.plus(1),l,1),p=K(f.times(f),l,1),r=a=1;else return K(u,k.precision=A,h,M=!0);else return k.precision=A,u;u=c,r+=2}}function di(i){return String(i.s*i.s/0)}function un(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)%C,t<0&&(n+=C),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=C;n<r;)i.d.push(+e.slice(n,n+=C));e=e.slice(n),n=C-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),M&&(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 br(i,e){var t,n,r,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),ui.test(e))return un(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(lr.test(e))t=16,e=e.toLowerCase();else if(cr.test(e))t=2;else if(mr.test(e))t=8;else throw Error(nt+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=li(n,new n(t),o,o*2)),c=Et(e,t,Ee),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(i.s*0):(i.e=Dt(c,l),i.d=c,M=!1,s&&(i=J(i,r,a*4)),u&&(i=i.times(Math.abs(u)<54?ce(2,u):Tt.pow(2,u))),M=!0,i)}function yr(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:yt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/_t(5,t)),e=yt(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 yt(i,e,t,n,r){var o,s,a,u,c=1,l=i.precision,m=Math.ceil(l/C);for(M=!1,u=t.times(t),a=new i(n);;){if(s=J(a.times(u),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=J(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 M=!0,s.d.length=m+1,s}function _t(i,e){for(var t=i;--e;)t*=i;return t}function pi(i,e){var t,n=e.s<0,r=Oe(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return ze=n?4:1,e;if(t=e.divToInt(r),t.isZero())ze=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return ze=ti(t)?n?2:3:n?4:1,e;ze=ti(t)?n?1:4:n?3:2}return e.minus(r).abs()}function cn(i,e,t,n){var r,o,s,a,u,c,l,m,p,d=i.constructor,b=t!==void 0;if(b?(xe(t,1,it),n===void 0?n=d.rounding:xe(n,0,8)):(t=d.precision,n=d.rounding),!i.isFinite())l=di(i);else{for(l=_e(i),s=l.indexOf("."),b?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),p=new d(1),p.e=l.length-s,p.d=Et(_e(p),10,r),p.e=p.d.length),m=Et(l,10,r),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=b?"0p+0":"0";else{if(s<0?o--:(i=new d(i),i.d=m,i.e=o,i=J(i,p,t,n,0,r),m=i.d,o=i.e,c=ri),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+=rn.charAt(m[s]);if(b){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=Et(l,r,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=rn.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 ni(i,e){if(i.length>e)return i.length=e,!0}function gr(i){return new this(i).abs()}function wr(i){return new this(i).acos()}function kr(i){return new this(i).acosh()}function Ar(i,e){return new this(i).plus(e)}function hr(i){return new this(i).asin()}function Pr(i){return new this(i).asinh()}function Tr(i){return new this(i).atan()}function xr(i){return new this(i).atanh()}function Br(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=Oe(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?Oe(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=Oe(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(J(i,e,o,1)),e=Oe(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(J(i,e,o,1)),t}function Ir(i){return new this(i).cbrt()}function Sr(i){return K(i=new this(i),i.e+1,2)}function Kr(i,e,t){return new this(i).clamp(e,t)}function Cr(i){if(!i||typeof i!="object")throw Error(Vt+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,it,"rounding",0,8,"toExpNeg",-bt,0,"toExpPos",0,bt,"maxE",0,bt,"minE",-bt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=on[t]),(n=i[t])!==void 0)if(we(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(nt+t+": "+n);if(t="crypto",r&&(this[t]=on[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(si);else this[t]=!1;else throw Error(nt+t+": "+n);return this}function Nr(i){return new this(i).cos()}function Lr(i){return new this(i).cosh()}function fi(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,ii(o)){c.s=o.s,M?!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++;M?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 un(c,o.toString())}else if(u!=="string")throw Error(nt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),ui.test(o)?un(c,o):br(c,o)}if(r.prototype=w,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=Cr,r.clone=fi,r.isDecimal=ii,r.abs=gr,r.acos=wr,r.acosh=kr,r.add=Ar,r.asin=hr,r.asinh=Pr,r.atan=Tr,r.atanh=xr,r.atan2=Br,r.cbrt=Ir,r.ceil=Sr,r.clamp=Kr,r.cos=Nr,r.cosh=Lr,r.div=Rr,r.exp=Mr,r.floor=Or,r.hypot=Er,r.ln=Fr,r.log=Wr,r.log10=Vr,r.log2=vr,r.max=Dr,r.min=_r,r.mod=qr,r.mul=Gr,r.pow=Ur,r.random=Xr,r.round=Hr,r.sign=zr,r.sin=Qr,r.sinh=Yr,r.sqrt=Zr,r.sub=jr,r.sum=Jr,r.tan=$r,r.tanh=eo,r.trunc=to,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 Rr(i,e){return new this(i).div(e)}function Mr(i){return new this(i).exp()}function Or(i){return K(i=new this(i),i.e+1,3)}function Er(){var i,e,t=new this(0);for(M=!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 M=!0,new this(1/0);t=e}return M=!0,t.sqrt()}function ii(i){return i instanceof Tt||i&&i.toStringTag===ai||!1}function Fr(i){return new this(i).ln()}function Wr(i,e){return new this(i).log(e)}function vr(i){return new this(i).log(2)}function Vr(i){return new this(i).log(10)}function Dr(){return mi(this,arguments,"lt")}function _r(){return mi(this,arguments,"gt")}function qr(i,e){return new this(i).mod(e)}function Gr(i,e){return new this(i).mul(e)}function Ur(i,e){return new this(i).pow(e)}function Xr(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:xe(i,1,it),n=Math.ceil(i/C),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(si);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=C,n&&i&&(r=ce(10,C-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-=C)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<C&&(t-=C-n)}return s.e=t,s.d=a,s}function Hr(i){return K(i=new this(i),i.e+1,this.rounding)}function zr(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function Qr(i){return new this(i).sin()}function Yr(i){return new this(i).sinh()}function Zr(i){return new this(i).sqrt()}function jr(i,e){return new this(i).sub(e)}function Jr(){var i=0,e=arguments,t=new this(e[i]);for(M=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return M=!0,K(t,this.precision,this.rounding)}function $r(i){return new this(i).tan()}function eo(i){return new this(i).tanh()}function to(i){return K(i=new this(i),i.e+1,1)}w[Symbol.for("nodejs.util.inspect.custom")]=w.toString;w[Symbol.toStringTag]="Decimal";var Tt=w.constructor=fi(on);Ft=new Tt(Ft);Wt=new Tt(Wt);var N=Tt;import{PublicKey as pn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as no}from"@solana/spl-token";import{PublicKey as ne,SystemProgram as bi,SYSVAR_RENT_PUBKEY as io}from"@solana/web3.js";function V({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var Ls=[V({pubkey:no,isWritable:!1}),V({pubkey:bi.programId,isWritable:!1}),V({pubkey:io,isWritable:!1})];function ln({publicKey:i,transformSol:e}){let t=mn(i.toString());if(t instanceof ne)return e&&t.equals(xt)?qt:t;if(e&&t.toString()===xt.toBase58())return qt;if(typeof t=="string"){if(t===ne.default.toBase58())return ne.default;try{return new ne(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function mn(i){try{return new ne(i)}catch{return i}}var gt=new ne("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Rs=new ne("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),wt=new ne("SysvarRent111111111111111111111111111111111"),Ms=new ne("SysvarC1ock11111111111111111111111111111111"),kt=new ne("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Os=new ne("Sysvar1nstructions1111111111111111111111111"),Es=bi.programId,Fs=new ne("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ws=new ne("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),vs=new ne("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Vs=new ne("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Ds=new ne("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),_s=new ne("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),qs=new ne("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Gs=new ne("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Us=new ne("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Xs=new ne("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Hs=new ne("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),qt=new ne("So11111111111111111111111111111111111111112"),xt=ne.default;function dn(i){return ln({publicKey:i,transformSol:!0})}import{PublicKey as ro}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as yi}from"@solana/spl-token";var gi={chainId:101,address:ro.default.toBase58(),programId:yi.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},rt={chainId:101,address:"So11111111111111111111111111111111111111112",programId:yi.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 fn=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===xt.toBase58()||e instanceof pn&&xt.equals(e)){this.decimals=rt.decimals,this.symbol=rt.symbol,this.name=rt.name,this.mint=new pn(rt.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?pn.default:ln({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},qe=fn;qe.WSOL=new fn(te(Y({},rt),{mint:rt.address}));import Ut from"big.js";import ao from"bn.js";import uo from"decimal.js-light";import oo from"toformat";var so=oo,Bt=so;var Gt=ae("module/fraction"),bn=Bt(Ut),It=Bt(uo),co={[0]:It.ROUND_DOWN,[1]:It.ROUND_HALF_UP,[2]:It.ROUND_UP},lo={[0]:Ut.roundDown,[1]:Ut.roundHalfUp,[2]:Ut.roundUp},z=class{constructor(e,t=new ao(1)){this.numerator=ie(e),this.denominator=ie(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new z(this.denominator,this.numerator)}add(e){let t=e instanceof z?e:new z(ie(e));return this.denominator.eq(t.denominator)?new z(this.numerator.add(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof z?e:new z(ie(e));return this.denominator.eq(t.denominator)?new z(this.numerator.sub(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof z?e:new z(ie(e));return new z(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof z?e:new z(ie(e));return new z(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Gt.logWithError(`${e} is not an integer.`),e<=0&&Gt.logWithError(`${e} is not positive.`),It.set({precision:e+1,rounding:co[n]});let r=new It(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)||Gt.logWithError(`${e} is not an integer.`),e<0&&Gt.logWithError(`${e} is negative.`),bn.DP=e,bn.RM=lo[n]||1,new bn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var po=ae("Raydium_price"),Ke=class extends z{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new z(yn(n.decimals),yn(r.decimals))}get raw(){return new z(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ke({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&po.logWithError("mul token not equals");let n=super.mul(t);return new Ke({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 gn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Xt=gn;Xt.SOL=new gn(gi);import fo from"bn.js";var wi=new z(new fo(100)),ot=class extends z{toSignificant(e=5,t,n){return this.mul(wi).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(wi).toFixed(e,t,n)}};var wn=new Be(0),bo=new Be(1),qa=new Be(2),Ga=new Be(3),Ua=new Be(5),kn=new Be(10),Xa=new Be(100),Ha=new Be(1e3),za=new Be(1e4),ki=9007199254740991;function ie(i){let e=ae("Raydium_parseBigNumberish");if(i instanceof Be)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Be(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=ki||i<=-ki)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Be(String(i))):typeof i=="bigint"?new Be(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Be(0))}function yn(i){return kn.pow(ie(i))}var go=ae("Raydium_amount"),hi=Bt(yo);function wo(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")):go.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var be=class extends z{constructor(t,n,r=!0,o){let s=new Ht(0),a=kn.pow(new Ht(t.decimals));if(r)s=ie(n);else{let u=new Ht(0),c=new Ht(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=wo(n.toString(),t.decimals);u=ie(l),c=ie(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ae(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new be(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new be(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,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 hi.DP=this.token.decimals,new hi(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function Ai(i){return typeof i=="object"&&i!==null&&![qe,be,ko,z,Ao,Ke,ot].some(e=>typeof e=="object"&&i instanceof e)}function ke(i){return typeof i=="string"?mn(i):Array.isArray(i)?i.map(e=>ke(e)):Ai(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,ke(t)])):i}import{PublicKey as oc,sendAndConfirmTransaction as sc,Transaction as uc,TransactionMessage as lc,VersionedTransaction as mc}from"@solana/web3.js";import pc from"axios";var oe={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 ho,ComputeBudgetProgram as Pu,Transaction as xu,TransactionMessage as Iu,Keypair as Su,VersionedTransaction as Cu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Lu}from"@solana/spl-token";var Ou=ae("Raydium_txUtil");function Ce(i,e){let[t,n]=ho.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}import{PublicKey as To,AddressLookupTableAccount as Pi}from"@solana/web3.js";import{PublicKey as Po}from"@solana/web3.js";import{getTransferFeeConfig as _u,unpackMint as qu}from"@solana/spl-token";var An=ae("Raydium_accountInfo_util");async function ct(i,e,t){let{batchRequest:n,commitment:r="confirmed"}=Y({batchRequest:!1},t),o=hn(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=i._buildArgs([l.map(p=>p.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=hn(a,10);s=(await(await Promise.all(u.map(async l=>await i._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&An.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:p,executable:d,lamports:b,owner:f,rentEpoch:y}=m;return p.length!==2&&p[1]!=="base64"&&An.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:d,lamports:b,owner:new Po(f),rentEpoch:y}}return null})))}else try{s=await Promise.all(o.map(a=>i.getMultipleAccountsInfo(a,r)))}catch(a){a instanceof Error&&An.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Pn(i,e,t){let n=await ct(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>te(Y({},r),{accountInfo:n[o]}))}var xo={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Pi({key:new To("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Pi.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"))})};function hn(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 H}from"@solana/web3.js";var Tc=new H("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),xc=new H("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Bc=new H("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Ic=new H("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Sc=new H("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Kc=new H("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Cc=new H("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Nc=new H("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Lc=new H("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Rc=new H("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Mc=new H("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Oc=new H("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Ec=new H("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Fc=new H("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Wc=new H("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),vc=new H("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Vc=new H("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Dc=new H("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Io=new H("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),So=new H("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Ko=new H("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var _c={SERUM_MARKET:H.default,OPENBOOK_MARKET:new H("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:H.default,FarmV3:new H("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new H("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new H("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new H("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new H("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new H("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new H("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:Io,CREATE_CPMM_POOL_AUTH:So,CREATE_CPMM_POOL_FEE_ACC:Ko,FEE_DESTINATION_ID:new H("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as Co}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as No}from"@solana/spl-token";function Ge(i,e,t){return Ce([i.toBuffer(),(t!=null?t:No).toBuffer(),e.toBuffer()],new Co("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Fe from"bn.js";var St=1e4;function le(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=te(Y({},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 Fe(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===St){let u=new Fe(o.maximumFee.toString());return{amount:i.add(u),fee:u,expirationTime:a}}else{let u=Tn(i.mul(new Fe(St)),new Fe(St-o.transferFeeBasisPoints)),c=new Fe(o.maximumFee.toString()),l=u.sub(i).gt(c)?i.add(c):u,m=Tn(l.mul(new Fe(o.transferFeeBasisPoints)),new Fe(St)),p=m.gt(s)?s:m;return{amount:l,fee:p,expirationTime:a}}else{let u=Tn(i.mul(new Fe(o.transferFeeBasisPoints)),new Fe(St)),c=u.gt(s)?s:u;return{amount:i,fee:c,expirationTime:a}}}function lt(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function Tn(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new Fe(0))?t.add(new Fe(1)):t}import{createInitializeAccountInstruction as Dm,createCloseAccountInstruction as _m,createTransferInstruction as qm,TOKEN_PROGRAM_ID as Gm}from"@solana/spl-token";import{PublicKey as zm,SystemProgram as Ym}from"@solana/web3.js";import Jm from"bn.js";import{PublicKey as Ho,Keypair as zo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Qo}from"@solana/spl-token";import Mm from"bn.js";import{PublicKey as Vo}from"@solana/web3.js";import Ii,{isBN as Si}from"bn.js";import{bits as wl,BitStructure as kl,blob as Lo,Blob as Al,cstr as hl,f32 as Pl,f32be as Tl,f64 as xl,f64be as Bl,greedy as Il,Layout as Ro,ns64 as Sl,ns64be as Kl,nu64 as Cl,nu64be as Nl,offset as Ll,s16 as Rl,s16be as Ml,s24 as Ol,s24be as El,s32 as Mo,s32be as Fl,s40 as Wl,s40be as vl,s48 as Vl,s48be as Dl,s8 as _l,seq as Oo,struct as ql,Structure as Eo,u16 as Fo,u16be as Gl,u24 as Ul,u24be as Xl,u32 as Hl,u32be as zl,u40 as Ql,u40be as Yl,u48 as Zl,u48be as jl,u8 as Wo,UInt as vo,union as Jl,Union as $l,unionLayoutDiscriminator as em,utf8 as tm}from"@solana/buffer-layout";var xn=Ro,Ti=Eo;var Bn=vo;var xi=Wo,At=Fo;var ye=Mo;var Bi=Oo;var Ne=Lo;var Kt=class extends xn{constructor(t,n,r){super(t,r);this.blob=Ne(t),this.signed=n}decode(t,n=0){let r=new Ii(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 Ii(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function q(i){return new Bn(1,i)}function Qe(i){return new Bn(4,i)}function g(i){return new Kt(8,!1,i)}function O(i){return new Kt(16,!1,i)}function Ki(i){return new Kt(16,!0,i)}var zt=class extends xn{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 R(i){return new zt(Ne(32),e=>new Vo(e),e=>e.toBuffer(),i)}function Ue(i){return new zt(xi(),Do,_o,i)}function Do(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function _o(i){return i?1:0}var In=class extends Ti{decode(e,t){return super.decode(e,t)}};function F(i,e,t){return new In(i,e,t)}function $(i,e,t){let n,r=typeof e=="number"?e:Si(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Si(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 Bi(i,r,t)}var Ci=F([R("mint"),R("owner"),g("amount"),Qe("delegateOption"),R("delegate"),q("state"),Qe("isNativeOption"),g("isNative"),g("delegatedAmount"),Qe("closeAuthorityOption"),R("closeAuthority")]);function qo(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function Sn(i,...e){if(!qo(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 Kn(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 Ni(i,e){Sn(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Yt=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),We=(i,e)=>i<<32-e|i>>>e;var wm=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Go(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function Cn(i){return typeof i=="string"&&(i=Go(i)),Sn(i),i}var Qt=class{clone(){return this._cloneInto()}},km={}.toString;function Li(i){let e=n=>i().update(Cn(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function Uo(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 Ri=(i,e,t)=>i&e^~i&t,Mi=(i,e,t)=>i&e^i&t^e&t,Zt=class extends Qt{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=Yt(this.buffer)}update(e){Kn(this);let{view:t,buffer:n,blockLen:r}=this;e=Cn(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=Yt(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){Kn(this),Ni(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;Uo(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=Yt(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 Xo=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]),st=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),at=new Uint32Array(64),Nn=class extends Zt{constructor(){super(64,32,8,!1),this.A=st[0]|0,this.B=st[1]|0,this.C=st[2]|0,this.D=st[3]|0,this.E=st[4]|0,this.F=st[5]|0,this.G=st[6]|0,this.H=st[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)at[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let p=at[m-15],d=at[m-2],b=We(p,7)^We(p,18)^p>>>3,f=We(d,17)^We(d,19)^d>>>10;at[m]=f+at[m-7]+b+at[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 p=We(a,6)^We(a,11)^We(a,25),d=l+p+Ri(a,u,c)+Xo[m]+at[m]|0,f=(We(n,2)^We(n,13)^We(n,22))+Mi(n,r,o)|0;l=c,c=u,u=a,a=s+d|0,s=o,o=r,r=n,n=d+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(){at.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Oi=Li(()=>new Nn);var Wm=ae("Raydium_Util");function Ln({fromPublicKey:i,programId:e=Qo}){let t=zo.generate().publicKey.toBase58().slice(0,32);return{publicKey:Yo(i,t,e),seed:t}}function Yo(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=Oi(n);return new Ho(r)}import{TOKEN_PROGRAM_ID as zn,TOKEN_2022_PROGRAM_ID as Xn}from"@solana/spl-token";import{PublicKey as Re,TransactionInstruction as Qn,SystemProgram as er}from"@solana/web3.js";import Hn from"bn.js";import{PublicKey as tf}from"@solana/web3.js";import Xe from"bn.js";var ue=new Xe(0),Ie=new Xe(1),Ye=new Xe(-1),Se=new Xe(1).shln(64),jt=new Xe(1).shln(128),Rn=Se.sub(Ie),Ct=64,Ei=jt.subn(1),Ae=-443636,Pe=-Ae,Ze=new Xe("4295048016"),je=new Xe("79226673521066979257578248091"),Fi=16,Wi="59543866431248",vi="184467440737095516",Vi="15793534762490258745",Jt=new Xe(10).pow(new Xe(6));var Pd=new Xe("18446744073700000000");import D from"bn.js";function $t(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function Mn(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function On(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function Nt(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Di(i,e){return Nt(i,e)?null:Mn(i,e)}function _i(i,e){return Nt(i,e)?null:On(i,e)}var Kd=Buffer.from("amm_config","utf8"),jo=Buffer.from("pool","utf8"),Jo=Buffer.from("pool_vault","utf8"),$o=Buffer.from("pool_reward_vault","utf8"),qi=Buffer.from("position","utf8"),es=Buffer.from("tick_array","utf8"),ts=Buffer.from("operation","utf8"),ns=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Gi(i,e,t,n){return Ce([jo,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function En(i,e,t){return Ce([Jo,e.toBuffer(),t.toBuffer()],i)}function Ui(i,e,t){return Ce([$o,e.toBuffer(),t.toBuffer()],i)}function Z(i,e,t){return Ce([es,e.toBuffer(),$t(t)],i)}function mt(i,e,t,n){return Ce([qi,e.toBuffer(),$t(t),$t(n)],i)}function ve(i,e){return Ce([qi,e.toBuffer()],i)}function en(i){return Ce([Buffer.from("metadata","utf8"),kt.toBuffer(),i.toBuffer()],kt)}function tn(i){return Ce([ts],i)}function Le(i,e){return Ce([ns,e.toBuffer()],i)}import{PublicKey as $e}from"@solana/web3.js";import se from"bn.js";import cs from"bn.js";var Fn=14,Je=class{static maxTickInTickarrayBitmap(e){return e*me*dt}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(!G.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-G.tickCount(n):t+G.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*me,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=Di(1024,l);if(m!==null){let p=(c-m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=_i(1024,l);if(m!==null){let p=(c+m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:o-G.tickCount(n)}}}},Lt=class{static getBitmapOffset(e,t){if(!G.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Je.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=Je.maxTickInTickarrayBitmap(e),n=-t;if(Pe<=t)throw Error(`extensionTickBoundary check error: ${Pe}, ${t}`);if(n<=Ae)throw Error(`extensionTickBoundary check error: ${n}, ${Ae}`);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:S.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=G.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}=Je.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let u=S.mergeTickArrayBitmap(e).shln(dt-1-a),c=Nt(512,u)?null:Mn(512,u);if(c!==null){let l=t-c*G.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=S.mergeTickArrayBitmap(e).shrn(a),c=Nt(512,u)?null:On(512,u);if(c!==null){let l=t+c*G.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-G.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Je.maxTickInTickarrayBitmap(t),r=Math.floor(n/G.tickCount(t));return e<0&&n!=0&&(r=dt-r),r}};var vd=F([Ne(8),q("bump"),At("index"),R(""),Qe("protocolFeeRate"),Qe("tradeFeeRate"),At("tickSpacing"),$(g(),8,"")]),is=F([Qe("blockTimestamp"),O("sqrtPriceX64"),O("cumulativeTimePriceX64"),$(O(),1,"")]),Wn=F([Ne(8),Ue("initialized"),R("poolId"),$(is,1e3,"observations"),$(O(),5,"")]),rs=F([q("rewardState"),g("openTime"),g("endTime"),g("lastUpdateTime"),O("emissionsPerSecondX64"),g("rewardTotalEmissioned"),g("rewardClaimed"),R("tokenMint"),R("tokenVault"),R("creator"),O("rewardGrowthGlobalX64")]),vn=F([Ne(8),q("bump"),R("ammConfig"),R("creator"),R("mintA"),R("mintB"),R("vaultA"),R("vaultB"),R("observationId"),q("mintDecimalsA"),q("mintDecimalsB"),At("tickSpacing"),O("liquidity"),O("sqrtPriceX64"),ye("tickCurrent"),At("observationIndex"),At("observationUpdateDuration"),O("feeGrowthGlobalX64A"),O("feeGrowthGlobalX64B"),g("protocolFeesTokenA"),g("protocolFeesTokenB"),O("swapInAmountTokenA"),O("swapOutAmountTokenB"),O("swapInAmountTokenB"),O("swapOutAmountTokenA"),q("status"),$(q(),7,""),$(rs,3,"rewardInfos"),$(g(),16,"tickArrayBitmap"),g("totalFeesTokenA"),g("totalFeesClaimedTokenA"),g("totalFeesTokenB"),g("totalFeesClaimedTokenB"),g("fundFeesTokenA"),g("fundFeesTokenB"),g("startTime"),$(g(),15*4-3,"padding")]),os=F([O("growthInsideLastX64"),g("rewardAmountOwed")]),Vn=F([Ne(8),q("bump"),R("nftMint"),R("poolId"),ye("tickLower"),ye("tickUpper"),O("liquidity"),O("feeGrowthInsideLastX64A"),O("feeGrowthInsideLastX64B"),g("tokenFeesOwedA"),g("tokenFeesOwedB"),$(os,3,"rewardInfos"),$(g(),8,"")]),Vd=F([Ne(8),q("bump"),R("poolId"),ye("tickLowerIndex"),ye("tickUpperIndex"),O("liquidity"),O("feeGrowthInsideLastX64A"),O("feeGrowthInsideLastX64B"),g("tokenFeesOwedA"),g("tokenFeesOwedB"),$(O(),3,"rewardGrowthInside"),$(g(),8,"")]),ss=F([ye("tick"),Ki("liquidityNet"),O("liquidityGross"),O("feeGrowthOutsideX64A"),O("feeGrowthOutsideX64B"),$(O(),3,"rewardGrowthsOutsideX64"),$(Qe(),13,"")]),Rt=F([Ne(8),R("poolId"),ye("startTickIndex"),$(ss,me,"ticks"),q("initializedTickCount"),$(q(),115,"")]),as=F([Ne(329),$(R(),100,"whitelistMints")]),Xi=F([Ne(8),R("poolId"),$($(g(),8),Fn,"positiveTickArrayBitmap"),$($(g(),8),Fn,"negativeTickArrayBitmap")]);var us=15,G=class{static async getTickArrays(e,t,n,r,o,s,a){let u=[],c=S.getTickArrayStartIndexByTick(r,o),l=S.getInitializedTickArrayInRange(s,a,o,c,Math.floor(us/2));for(let d=0;d<l.length;d++){let{publicKey:b}=Z(t,n,l[d]);u.push(b)}let m=(await ct(e,u)).map(d=>d!==null?Rt.decode(d.data):null),p={};for(let d=0;d<u.length;d++){let b=m[d];b!==null&&(p[b.startTickIndex]=te(Y({},b),{address:u[d]}))}return p}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=S.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:p,tickArrayStartTickIndex:d}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,p,d]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/G.tickCount(t)),a=n?S.searchLowBitFromStart(r,o,s-1,1,t):S.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=me-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<me;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=Z(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=S.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 p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u-1}else for(u=u+1;u<me;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u+1}let{publicKey:m}=Z(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(S.checkIsOutOfBoundary(e)){if(e>Pe)return!1;let n=S.getTickArrayStartIndexByTick(Ae,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return me*e}};var me=60,dt=512,S=class{static getTickArrayAddressByTick(e,t,n,r){let o=S.getTickArrayStartIndexByTick(n,r),{publicKey:s}=Z(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=S.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=me)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=G.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)*G.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*me,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*me,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*me:e+t*me}static mergeTickArrayBitmap(e){let t=new cs(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*me));return[...S.searchLowBitFromStart(e,t,s-1,o,n),...S.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return S.searchHightBitFromStart(e,t,0,dt,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=S.getAllInitializedTickArrayStartIndex(n,r,o);for(let u of a){let{publicKey:c}=Z(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=>S.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=G.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=>S.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=G.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Ae||e>Pe}static nextInitTick(e,t,n,r,o){if(G.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<me;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=me-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<me;){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=W.getSqrtPriceX64FromTick(t),o=W.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new N(1).div(t),o=pt.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=W.getSqrtPriceX64FromTick(o),a=W.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new N(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=W.getSqrtPriceX64FromTick(t),o=W.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new N(1).div(t),o=pt.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=W.getSqrtPriceX64FromTick(o),a=W.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new N(1).div(a)}}};import He from"bn.js";var Mt=class{static getfeeGrowthInside(e,t,n){let r=new He(0),o=new He(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 He(0),a=new He(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=v.wrappingSubU128(v.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),c=v.wrappingSubU128(v.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=v.mulDivFloor(v.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Se),u=t.tokenFeesOwedA.add(a),c=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Se),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=v.mulDivFloor(v.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Se),u=t.tokenFeesOwedA.add(a),c=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Se),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=v.wrappingSubU128(u,c.growthInsideLastX64),m=v.mulDivFloor(l,t.liquidity,Se),p=c.rewardAmountOwed.add(m);o.push(p)}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=v.wrappingSubU128(u,c.growthInsideLastX64),m=v.mulDivFloor(l,t.liquidity,Se),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new He(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 He(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.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 He(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 He(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var y,k,h,A;let a=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),u=W.getSqrtPriceX64FromTick(t.tickLower),c=W.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,m=U.getAmountsFromLiquidity(a,u,c,n,o),[p,d]=[le(m.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),le(m.amountB,(k=e.mintB.extensions)==null?void 0:k.feeConfig,s,!0)],[b,f]=[le(new He(new N(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),le(new He(new N(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:p,amountB:d,amountSlippageA:b,amountSlippageB:f,expirationTime:lt(p.expirationTime,d.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Hi}from"@solana/spl-token";var he=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:p,sqrtPriceX64:d,feeAmount:b}=ft.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(...p),{expectedAmountOut:m.mul(Ye),remainingAccounts:a,executionPrice:d,feeAmount:b}}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:y}=Z(e.programId,e.id,f.nextStartIndex);a.push(y)}}catch{}a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:b}=ft.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(Ye),c,o);return a.push(...p),{expectedAmountIn:m,remainingAccounts:a,executionPrice:d,feeAmount:b}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=he.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Lt.checkTickArrayIsInit(G.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):S.checkTickArrayIsInitialized(S.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=Z(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,G.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=Z(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/G.tickCount(e.tickSpacing)),r=t?S.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):S.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=G.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=Je.nextInitializedTickArrayStartIndex(S.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Lt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Ae||t>Pe)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],p=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(p===void 0)throw Error("get new reward mint info error");let d=te(Y({},m),{perSecond:v.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new $e(p)});if(d.tokenMint.equals($e.default))continue;if(n<=d.openTime.toNumber()||r.eq(ue)){s.push(d);continue}let b=new se(Math.min(d.endTime.toNumber(),n)),f=b.sub(d.lastUpdateTime),y=v.mulDivFloor(f,d.emissionsPerSecondX64,r),k=d.rewardGrowthGlobalX64.add(y),h=v.mulDivFloor(f,d.emissionsPerSecondX64,Se),A=d.rewardTotalEmissioned.add(h);s.push(te(Y({},d),{rewardGrowthGlobalX64:k,rewardTotalEmissioned:A,lastUpdateTime:b}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=S.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=Je.maxTickInTickarrayBitmap(e),n=-t;return t>Pe&&(t=G.getArrayStartIndex(Pe,e)+G.tickCount(e)),n<Ae&&(n=G.getArrayStartIndex(Ae,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!G.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/G.tickCount(t)*dt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await Pn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=Xi.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=S.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=S.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:p}=Z(u.programId,u.id,m);o.push({pubkey:p}),r[p.toString()]=u.id}}let s=await Pn(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=Rt.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=te(Y({},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(p=>p.accountInfo.mint),c=[];for(let p of u)for(let d of s)c.push(ve(d,p).publicKey);let l=await ct(t,c,{batchRequest:r}),m={};for(let p of l){if(p===null)continue;let d=Vn.decode(p.data),b=d.poolId.toString(),f=e.find(_=>_.state.id.toBase58()===b);if(f===void 0)continue;let y=f.state,k=S._getTickPriceLegacy({poolInfo:y,tick:d.tickLower,baseIn:!0}),h=S._getTickPriceLegacy({poolInfo:y,tick:d.tickUpper,baseIn:!0}),{amountA:A,amountB:x}=U.getAmountsFromLiquidity(y.sqrtPriceX64,k.tickSqrtPriceX64,h.tickSqrtPriceX64,d.liquidity,!1),P=1/(1-Math.sqrt(Math.sqrt(k.price.div(h.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:d.poolId,nftMint:d.nftMint,priceLower:k.price,priceUpper:h.price,amountA:A,amountB:x,tickLower:d.tickLower,tickUpper:d.tickUpper,liquidity:d.liquidity,feeGrowthInsideLastX64A:d.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:d.feeGrowthInsideLastX64B,tokenFeesOwedA:d.tokenFeesOwedA,tokenFeesOwedB:d.tokenFeesOwedB,rewardInfos:d.rewardInfos.map(_=>te(Y({},_),{pendingReward:new se(0)})),leverage:P,tokenFeeAmountA:new se(0),tokenFeeAmountB:new se(0)}];let L=await S.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickLower,f.state.tickSpacing),E=await S.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickLower}`]=L,m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickUpper}`]=E}if(o){let p=Object.values(m),d=await ct(t,p,{batchRequest:r}),b={};for(let f=0;f<p.length;f++){let y=d[f];if(y===null)continue;let k=p[f].toString();b[k]=Rt.decode(y.data)}for(let{state:f,positionAccount:y}of e)if(!!y)for(let k of y){let h=`${f.programId.toString()}-${f.id.toString()}-${k.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${k.tickUpper}`,x=b[m[h].toString()],P=b[m[A].toString()],L=x.ticks[S.getTickOffsetInArray(k.tickLower,f.tickSpacing)],E=P.ticks[S.getTickOffsetInArray(k.tickUpper,f.tickSpacing)],{tokenFeeAmountA:_,tokenFeeAmountB:ee}=await Mt.GetPositionFees(f,k,L,E),X=await Mt.GetPositionRewards(f,k,L,E);k.tokenFeeAmountA=_.gte(new se(0))?_:new se(0),k.tokenFeeAmountB=ee.gte(new se(0))?ee:new se(0);for(let j=0;j<X.length;j++)k.rewardInfos[j].pendingReward=X[j].gte(new se(0))?X[j]:new se(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new N(0)}){var X;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 N(0))?u=c?Ze.add(new se(1)):je.sub(new se(1)):u=W.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=le(o,l,r,!1),{expectedAmountOut:d,remainingAccounts:b,executionPrice:f,feeAmount:y}=he.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((X=p.fee)!=null?X:ue),u),k=le(d,m,r,!1),h=W.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?h:new N(1).div(h),x=d.mul(new se(Math.floor((1-s)*1e10))).div(new se(1e10)),P=le(x,m,r,!1),L=c?e.currentPrice:new N(1).div(e.currentPrice),E=new N(A).sub(L).abs(),_=L,ee=new ot(new N(E).mul(10**15).toFixed(0),new N(_).mul(10**15).toFixed(0));return{realAmountIn:p,amountOut:k,minAmountOut:P,expirationTime:lt(p.expirationTime,k.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:ee,fee:y,remainingAccounts:b}}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 qe(te(Y({},u),{mint:u.address,isToken2022:u.programId===Hi.toBase58()})),new qe(te(Y({},c),{mint:c.address,isToken2022:c.programId===Hi.toBase58()}))],{realAmountIn:p,amountOut:d,minAmountOut:b,expirationTime:f,currentPrice:y,executionPrice:k,priceImpact:h,fee:A,remainingAccounts:x}=await he.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new $e(u.address),amountIn:n,slippage:o,epochInfo:s}),P=te(Y({},p),{amount:new be(l,p.amount),fee:p.fee===void 0?void 0:new be(l,p.fee)}),L=te(Y({},d),{amount:new be(m,d.amount),fee:d.fee===void 0?void 0:new be(m,d.fee)}),E=te(Y({},b),{amount:new be(m,b.amount),fee:b.fee===void 0?void 0:new be(m,b.fee)}),_=new Ke({baseToken:l,denominator:new se(10).pow(new se(20+l.decimals)),quoteToken:m,numerator:y.mul(new N(10**(20+m.decimals))).toFixed(0)}),ee=new Ke({baseToken:l,denominator:new se(10).pow(new se(20+l.decimals)),quoteToken:m,numerator:k.mul(new N(10**(20+m.decimals))).toFixed(0)}),X=new be(l,A);return{realAmountIn:P,amountOut:L,minAmountOut:E,expirationTime:f,currentPrice:_,executionPrice:ee,priceImpact:h,fee:X,remainingAccounts:x}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var b,f,y;let o=e[t],s=S.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=S.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,p=o.priceMax-o.priceMin,d;return l<=0?d=0:m===l?d=p/l:p===l?d=l/m:d=l/p*(l/m),{feeApr:o.feeApr*d,rewardsApr:[(b=o.rewardApr[0])!=null?b:0*d,(f=o.rewardApr[1])!=null?f:0*d,(y=o.rewardApr[2])!=null?y:0*d],apr:o.apr*d}}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[dn(e.mintA.address).toString()],p=r[dn(e.mintB.address).toString()],d=e.mintA.decimals,b=e.mintB.decimals;if(!l||!m||!p)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),y=W.getSqrtPriceX64FromTick(s),k=W.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:A}=U.getAmountsFromLiquidityWithSlippage(f,y,k,t,!1,!1,0),{amountSlippageA:x,amountSlippageB:P}=U.getAmountsFromLiquidityWithSlippage(f,y,k,o,!1,!1,0),L=new N(h.toString()).div(new N(10).pow(d)).mul(m.value).add(new N(A.toString()).div(new N(10).pow(b)).mul(p.value)),E=new N(x.toString()).div(new N(10).pow(d)).mul(m.value).add(new N(P.toString()).div(new N(10).pow(b)).mul(p.value)),_=E.div(L.add(E)).div(E),X=new N(l.volumeFee).mul(365).div(c).mul(_).mul(100).toNumber(),j=3600*24*365,Me=e.rewardDefaultInfos.map(pe=>{var Q,Yn;let Te=pe.mint.decimals,re=r[pe.mint.address];return u<((Q=pe.startTime)!=null?Q:0)||u>((Yn=pe.endTime)!=null?Yn:0)||!pe.perSecond||!re||Te===void 0?0:new N(re.value).mul(new N(pe.perSecond).mul(j)).div(new N(10).pow(Te)).mul(_).mul(100).toNumber()});return{feeApr:X,rewardsApr:Me,apr:X+Me.reduce((pe,Te)=>pe+Te,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var k,h;let l=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),m=W.getSqrtPriceX64FromTick(n),p=W.getSqrtPriceX64FromTick(r),d=a?1-s:1+s,b=le(o,(k=e[t?"mintA":"mintB"].extensions)==null?void 0:k.feeConfig,u,!c),f=new se(new N(b.amount.sub((h=b.fee)!=null?h:ue).toString()).mul(d).toFixed(0)),y;if(l.lte(m))y=t?U.getLiquidityFromTokenAmountA(m,p,f,!a):new se(0);else if(l.lte(p)){let A=U.getLiquidityFromTokenAmountA(l,p,f,!a),x=U.getLiquidityFromTokenAmountB(m,l,f);y=t?A:x}else y=t?new se(0):U.getLiquidityFromTokenAmountB(m,p,f);return he.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:r,liquidity:y,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var y,k,h,A;let u=W.getSqrtPriceX64FromTick(n),c=W.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=U.getAmountsFromLiquidity(W.priceToSqrtPriceX64(new N(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[p,d]=[le(m.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),le(m.amountB,(k=t.mintB.extensions)==null?void 0:k.feeConfig,e,!0)],[b,f]=[le(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),le(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:p,amountB:d,amountSlippageA:b,amountSlippageB:f,expirationTime:lt(p.expirationTime,d.expirationTime)}}static async fetchComputeClmmInfo({connection:e,poolInfo:t}){let n=await e.getAccountInfo(new $e(t.id));if(!n)throw new Error(`pool not found ${t.id}`);let r=vn.decode(n.data),o=Le(new $e(t.programId),new $e(t.id)).publicKey,s=await he.fetchExBitmaps({connection:e,exBitmapAddress:[o],batchRequest:!1});return te(Y({},r),{id:new $e(t.id),programId:new $e(t.programId),mintA:t.mintA,mintB:t.mintB,ammConfig:te(Y({},t.config),{id:new $e(t.config.id),fundOwner:""}),currentPrice:new N(t.price),exBitmapInfo:s[o.toBase58()],startTime:r.startTime.toNumber()})}};var v=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(ue)||(o=o.add(Ie)),o}static mulDivFloor(e,t,n){if(n.eq(ue))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(ue))throw new Error("division by 0");return e.mul(t).add(n.sub(Ie)).div(n)}static x64ToDecimal(e,t){return new N(e.toString()).div(N.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new D(e.mul(N.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(jt).sub(t).mod(jt)}};function de(i,e){return Dn(i.mul(e),64,256)}function ls(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Dn(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var W=class{static sqrtPriceX64ToPrice(e,t,n){return v.x64ToDecimal(e).pow(2).mul(N.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return v.decimalToX64(e.mul(N.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(ue))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ue))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(ue))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ue))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(ue))return e;let o=t.shln(Ct);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?v.mulDivCeil(s,e,a):v.mulDivRoundingUp(s,Ie,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 v.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(Ct);if(r)return e.add(o.div(t));{let s=v.mulDivRoundingUp(o,Ie,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<Ae||e>Pe)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new D("18445821805675395072"):new D("18446744073709551616");return(t&2)!=0&&(n=de(n,new D("18444899583751176192"))),(t&4)!=0&&(n=de(n,new D("18443055278223355904"))),(t&8)!=0&&(n=de(n,new D("18439367220385607680"))),(t&16)!=0&&(n=de(n,new D("18431993317065453568"))),(t&32)!=0&&(n=de(n,new D("18417254355718170624"))),(t&64)!=0&&(n=de(n,new D("18387811781193609216"))),(t&128)!=0&&(n=de(n,new D("18329067761203558400"))),(t&256)!=0&&(n=de(n,new D("18212142134806163456"))),(t&512)!=0&&(n=de(n,new D("17980523815641700352"))),(t&1024)!=0&&(n=de(n,new D("17526086738831433728"))),(t&2048)!=0&&(n=de(n,new D("16651378430235570176"))),(t&4096)!=0&&(n=de(n,new D("15030750278694412288"))),(t&8192)!=0&&(n=de(n,new D("12247334978884435968"))),(t&16384)!=0&&(n=de(n,new D("8131365268886854656"))),(t&32768)!=0&&(n=de(n,new D("3584323654725218816"))),(t&65536)!=0&&(n=de(n,new D("696457651848324352"))),(t&131072)!=0&&(n=de(n,new D("26294789957507116"))),(t&262144)!=0&&(n=de(n,new D("37481735321082"))),e>0&&(n=Ei.div(n)),n}static getTickFromPrice(e,t,n){return W.getTickFromSqrtPriceX64(W.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(je)||e.lt(Ze))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new D(t-64),r=ls(n,32,128),o=new D("8000000000000000","hex"),s=0,a=new D(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new D(0))&&s<Fi;){u=u.mul(u);let b=u.shrn(127);u=u.shrn(63+b.toNumber()),a=a.add(o.mul(b)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=r.add(c).mul(new D(Wi)),p=Dn(m.sub(new D(vi)),64,128).toNumber(),d=Dn(m.add(new D(Vi)),64,128).toNumber();return p==d?p:W.getSqrtPriceX64FromTick(d).lte(e)?d:p}},pt=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=W.getTickFromSqrtPriceX64(W.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=pt.getTickWithPriceAndTickspacing(e,t,n,r),s=W.getSqrtPriceX64FromTick(o);return W.sqrtPriceX64ToPrice(s,n,r)}},U=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(ue))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Ct),s=t.sub(e);return r?v.mulDivRoundingUp(v.mulDivCeil(o,s,t),Ie,e):v.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(ue))throw new Error("sqrtPriceX64A must greater than 0");return r?v.mulDivCeil(n,t.sub(e),Se):v.mulDivFloor(n,t.sub(e),Se)}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?v.mulDivRoundingUp(a,Ie,Rn):a.shrn(Ct)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),v.mulDivFloor(n,Rn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return U.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=U.getLiquidityFromTokenAmountA(e,n,r,!1),a=U.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return U.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:U.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new D(0)};if(e.lt(n)){let s=U.getTokenAmountAFromLiquidity(e,n,r,o),a=U.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new D(0),amountB:U.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:u,amountB:c}=U.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,m=new D(new N(u.toString()).mul(l).toFixed(0)),p=new D(new N(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:p}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var h,A,x,P;let c=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),l=W.getSqrtPriceX64FromTick(t),m=W.getSqrtPriceX64FromTick(n),p=s?1+o:1-o,d=U.getAmountsFromLiquidity(c,l,m,r,s),[b,f]=[le(d.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),le(d.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[y,k]=[le(new D(new N(d.amountA.toString()).mul(p).toFixed(0)),(x=e.mintA.extensions)==null?void 0:x.feeConfig,a,u),le(new D(new N(d.amountB.toString()).mul(p).toFixed(0)),(P=e.mintB.extensions)==null?void 0:P.feeConfig,a,u)];return{liquidity:r,amountA:b,amountB:f,amountSlippageA:y,amountSlippageB:k,expirationTime:lt(b.expirationTime,f.expirationTime)}}},ft=class{static swapCompute(e,t,n,r,o,s,a,u,c,l,m,p,d,b){if(p.eq(ue))throw new Error("amountSpecified must not be 0");if(b||(b=s?Ze.add(Ie):je.sub(Ie)),s){if(b.lt(Ze))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(b.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(b.gt(je))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(b.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=p.gt(ue),y={amountSpecifiedRemaining:p,amountCalculated:ue,sqrtPriceX64:m,tick:c>d?Math.min(d+G.tickCount(l)-1,c):d,accounts:[],liquidity:u,feeAmount:new D(0)},k=d,h=n[d],A=0,x=!s&&h.startTickIndex===y.tick;for(;!y.amountSpecifiedRemaining.eq(ue)&&!y.sqrtPriceX64.eq(b);){if(A>10)throw Error("liquidity limit");let P={};P.sqrtPriceStartX64=y.sqrtPriceX64;let L=S.nextInitTick(h,y.tick,l,s,x),E=L||null,_=null;if(!(E!=null&&E.liquidityGross.gtn(0))){let X=he.nextInitializedTickArrayStartIndex({tickCurrent:y.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},k,s);if(!X.isExist)throw Error("swapCompute LiquidityInsufficient");k=X.nextStartIndex;let{publicKey:j}=Z(e,t,k);_=j,h=n[k],E=S.firstInitializedTick(h,s)}P.tickNext=E.tick,P.initialized=E.liquidityGross.gtn(0),d!==k&&_&&(y.accounts.push(_),d=k),P.tickNext<Ae?P.tickNext=Ae:P.tickNext>Pe&&(P.tickNext=Pe),P.sqrtPriceNextX64=W.getSqrtPriceX64FromTick(P.tickNext);let ee;if(s&&P.sqrtPriceNextX64.lt(b)||!s&&P.sqrtPriceNextX64.gt(b)?ee=b:ee=P.sqrtPriceNextX64,[y.sqrtPriceX64,P.amountIn,P.amountOut,P.feeAmount]=ft.swapStepCompute(y.sqrtPriceX64,ee,y.liquidity,y.amountSpecifiedRemaining,a),y.feeAmount=y.feeAmount.add(P.feeAmount),f?(y.amountSpecifiedRemaining=y.amountSpecifiedRemaining.sub(P.amountIn.add(P.feeAmount)),y.amountCalculated=y.amountCalculated.sub(P.amountOut)):(y.amountSpecifiedRemaining=y.amountSpecifiedRemaining.add(P.amountOut),y.amountCalculated=y.amountCalculated.add(P.amountIn.add(P.feeAmount))),y.sqrtPriceX64.eq(P.sqrtPriceNextX64)){if(P.initialized){let X=E.liquidityNet;s&&(X=X.mul(Ye)),y.liquidity=U.addDelta(y.liquidity,X)}x=P.tickNext!=y.tick&&!s&&h.startTickIndex===P.tickNext,y.tick=s?P.tickNext-1:P.tickNext}else if(y.sqrtPriceX64!=P.sqrtPriceStartX64){let X=W.getTickFromSqrtPriceX64(y.sqrtPriceX64);x=X!=y.tick&&!s&&h.startTickIndex===X,y.tick=X}++A}try{let{nextStartIndex:P,isExist:L}=G.nextInitializedTickArray(y.tick,l,s,r,o);L&&d!==P&&(y.accounts.push(Z(e,t,P).publicKey),d=P)}catch{}return{amountCalculated:y.amountCalculated,feeAmount:y.feeAmount,sqrtPriceX64:y.sqrtPriceX64,liquidity:y.liquidity,tickCurrent:y.tick,accounts:y.accounts}}static swapStepCompute(e,t,n,r,o){let s={sqrtPriceX64Next:new D(0),amountIn:new D(0),amountOut:new D(0),feeAmount:new D(0)},a=e.gte(t),u=r.gte(ue);if(u){let l=v.mulDivFloor(r,Jt.sub(new D(o.toString())),Jt);s.amountIn=a?U.getTokenAmountAFromLiquidity(t,e,n,!0):U.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=W.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?U.getTokenAmountBFromLiquidity(t,e,n,!1):U.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Ye).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=W.getNextSqrtPriceX64FromOutput(e,n,r.mul(Ye),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=U.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=U.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:U.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:U.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(r.mul(Ye))&&(s.amountOut=r.mul(Ye)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=v.mulDivCeil(s.amountIn,new D(o),Jt.sub(new D(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};import{TOKEN_PROGRAM_ID as ge,TOKEN_2022_PROGRAM_ID as ut,ASSOCIATED_TOKEN_PROGRAM_ID as zi}from"@solana/spl-token";import{PublicKey as T,TransactionInstruction as Ve,SystemProgram as ht,Keypair as _n}from"@solana/web3.js";import Qi from"bn.js";var Yi=ae("Raydium_Clmm"),De={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]},Ot=class{static createPoolInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b){let f=F([O("sqrtPriceX64"),g("startTime")]),y=[{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:p,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:ht.programId,isSigner:!1,isWritable:!1},{pubkey:wt,isSigner:!1,isWritable:!1}],k=Buffer.alloc(f.span);f.encode({sqrtPriceX64:d,startTime:b},k);let h=Buffer.from([...De.createPool,...k]);return new Ve({keys:y,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=Ln({fromPublicKey:r,programId:n}),[p,d]=[new T(o.address),new T(s.address)],b=[ht.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Wn.span),space:Wn.span,programId:n})],{publicKey:f}=Gi(n,a,p,d),{publicKey:y}=En(n,f,p),{publicKey:k}=En(n,f,d);return b.push(this.createPoolInstruction(n,f,r,a,m.publicKey,p,y,new T(o.programId||ge),d,k,new T(s.programId||ge),Le(n,f).publicKey,u,c)),{signers:[],instructions:b,instructionTypes:[oe.CreateAccount,oe.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:y,mintBVault:k},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k,h,A,x,P,L,E,_,ee,X){let j=F([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),O("liquidity"),g("amountMaxA"),g("amountMaxB"),Ue("withMetadata"),q("optionBaseFlag"),Ue("baseFlag")]),Me=[...X?[{pubkey:X,isSigner:!1,isWritable:!0}]:[]],pe=[{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:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:ht.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:zi,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},...Me],Te=Buffer.alloc(j.span);j.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:x,tickArrayUpperStartIndex:P,liquidity:L,amountMaxA:E,amountMaxB:_,withMetadata:ee==="create",baseFlag:!1,optionBaseFlag:0},Te);let re=Buffer.from([...De.openPosition,...Te]);return new Ve({keys:pe,programId:e,data:re})}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=[],[p,d]=[new T(e.programId),new T(e.id)],b;if(l)b=new T((await l(1))[0]);else{let _=_n.generate();m.push(_),b=_.publicKey}let f=S.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=S.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Z(p,d,f),{publicKey:h}=Z(p,d,y),{publicKey:A}=Ge(n.wallet,b,ge),{publicKey:x}=en(b),{publicKey:P}=ve(p,b),{publicKey:L}=mt(p,d,r,o),E=this.openPositionFromLiquidityInstruction(p,n.feePayer,d,n.wallet,b,A,x,L,k,h,P,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),r,o,f,y,s,a,u,c);return{signers:m,instructions:[E],instructionTypes:[oe.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:k,tickArrayUpper:h,positionNftAccount:A,metadataAccount:x,personalPosition:P,protocolPosition:L}}}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=[],[p,d]=[new T(e.programId),new T(e.id)],b;if(l)b=new T((await l(1))[0]);else{let _=_n.generate();m.push(_),b=_.publicKey}let f=S.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=S.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Z(p,d,f),{publicKey:h}=Z(p,d,y),{publicKey:A}=Ge(n.wallet,b,ge),{publicKey:x}=en(b),{publicKey:P}=ve(p,b),{publicKey:L}=mt(p,d,r,o),E=this.openPositionFromBaseInstruction(p,n.feePayer,d,n.wallet,b,A,x,L,k,h,P,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),r,o,f,y,c,s,a,u,he.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?Le(p,d).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:k,tickArrayUpper:h,positionNftAccount:A,metadataAccount:x,personalPosition:P,protocolPosition:L},instructions:[E],signers:m,instructionTypes:[oe.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k,h,A,x,P,L,E,_,ee,X){let j=F([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),O("liquidity"),g("amountMaxA"),g("amountMaxB"),Ue("withMetadata"),q("optionBaseFlag"),Ue("baseFlag")]),Me=[...X?[{pubkey:X,isSigner:!1,isWritable:!0}]:[]],pe=[{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:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:ht.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:zi,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},...Me],Te=Buffer.alloc(j.span);j.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:x,tickArrayUpperStartIndex:P,liquidity:new Qi(0),amountMaxA:E==="MintA"?_:ee,amountMaxB:E==="MintA"?ee:_,withMetadata:L==="create",baseFlag:E==="MintA",optionBaseFlag:1},Te);let re=Buffer.from([...De.openPosition,...Te]);return new Ve({keys:pe,programId:e,data:re})}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,p=[];if(l)m=new T((await l(1))[0]);else{let _=_n.generate();p.push(_),m=_.publicKey}let[d,b]=[new T(e.programId),new T(e.id)],f=S.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=S.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Z(d,b,f),{publicKey:h}=Z(d,b,y),{publicKey:A}=Ge(n.wallet,m,ge),{publicKey:x}=en(m),{publicKey:P}=ve(d,m),{publicKey:L}=mt(d,b,r,o),E=this.openPositionFromLiquidityInstruction(d,n.wallet,b,n.wallet,m,A,x,L,k,h,P,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(t.mintA.address),new T(t.mintB.address),r,o,f,y,s,a,u,c,he.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?Le(d,b).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:k,tickArrayUpper:h,positionNftAccount:A,metadataAccount:x,personalPosition:P,protocolPosition:L},instructions:[E],signers:p,instructionTypes:[oe.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=F([]),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:ht.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...De.closePosition,...u]);return new Ve({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new T(e.programId),{publicKey:s}=Ge(n.wallet,r.nftMint,ge),{publicKey:a}=ve(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:[oe.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k,h){let A=F([O("liquidity"),g("amountMaxA"),g("amountMaxB"),q("optionBaseFlag"),Ue("baseFlag")]),x=[...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:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...x],L=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:y,amountMaxB:k,optionBaseFlag:0,baseFlag:!1},L);let E=Buffer.from([...De.increaseLiquidity,...L]);return new Ve({keys:P,programId:e,data:E})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new T(e.programId),new T(e.id)],l=S.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=S.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Z(u,c,l),{publicKey:d}=Z(u,c,m),{publicKey:b}=Ge(r.wallet,n.nftMint,ge),{publicKey:f}=ve(u,n.nftMint),{publicKey:y}=mt(u,c,n.tickLower,n.tickUpper),k=this.increasePositionFromLiquidityInstruction(u,r.wallet,b,f,c,y,p,d,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),o,s,a,he.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Le(u,c).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:b,personalPosition:f,protocolPosition:y},signers:[],instructions:[k],instructionTypes:[oe.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 T(e.programId),new T(e.id)],l=S.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=S.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Z(u,c,l),{publicKey:d}=Z(u,c,m),{publicKey:b}=Ge(r.wallet,n.nftMint,ge),{publicKey:f}=ve(u,n.nftMint),{publicKey:y}=mt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:b,personalPosition:f,protocolPosition:y},instructions:[this.increasePositionFromBaseInstruction(u,r.wallet,b,f,c,y,p,d,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),o,s,a,he.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Le(u,c).publicKey:void 0)],signers:[],instructionTypes:[oe.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k,h){let A=F([O("liquidity"),g("amountMaxA"),g("amountMaxB"),q("optionBaseFlag"),Ue("baseFlag")]),x=[...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:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...x],L=Buffer.alloc(A.span);A.encode({liquidity:new Qi(0),amountMaxA:f==="MintA"?y:k,amountMaxB:f==="MintA"?k:y,baseFlag:f==="MintA",optionBaseFlag:1},L);let E=Buffer.from([...De.increaseLiquidity,...L]);return new Ve({keys:P,programId:e,data:E})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k,h,A){let x=F([O("liquidity"),g("amountMinA"),g("amountMinB")]),P=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(ee=>[{pubkey:ee.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:ee.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:ee.rewardMint,isSigner:!1,isWritable:!1}]).flat()],L=[{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:p,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...P],E=Buffer.alloc(x.span);x.encode({liquidity:y,amountMinA:k,amountMinB:h},E);let _=Buffer.from([...De.decreaseLiquidity,...E]);return new Ve({keys:L,programId:e,data:_})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new T(e.programId),new T(e.id)],m=S.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=S.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=Z(c,l,m),{publicKey:b}=Z(c,l,p),{publicKey:f}=Ge(r.wallet,n.nftMint,u),{publicKey:y}=ve(c,n.nftMint),{publicKey:k}=mt(c,l,n.tickLower,n.tickUpper),h=[];for(let x=0;x<e.rewardDefaultInfos.length;x++)h.push({poolRewardVault:new T(t.rewardInfos[x].vault),ownerRewardVault:r.rewardAccounts[x],rewardMint:new T(e.rewardDefaultInfos[x].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,r.wallet,f,y,l,k,d,b,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),h,o,s,a,he.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?Le(c,l).publicKey:void 0)),{address:{tickArrayLower:d,tickArrayUpper:b,positionNftAccount:f,personalPosition:y,protocolPosition:k},signers:[],instructions:A,instructionTypes:[oe.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k){let h=F([g("amount"),g("otherAmountThreshold"),O("sqrtPriceLimitX64"),Ue("isBaseInput")]),A=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[],...m.map(E=>({pubkey:E,isSigner:!1,isWritable:!0}))],x=[{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:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:gt,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:d,otherAmountThreshold:b,sqrtPriceLimitX64:f,isBaseInput:y},P);let L=Buffer.from([...De.swap,...P]);return new Ve({keys:x,programId:e,data:L})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new T(e.programId),new T(e.id)],[p,d]=[new T(t.vault.A),new T(t.vault.B)],[b,f]=[new T(e.mintA.address),new T(e.mintB.address)],y=e.mintA.address===o.toString(),k=[this.swapInstruction(l,r.wallet,m,new T(e.config.id),y?r.tokenAccountA:r.tokenAccountB,y?r.tokenAccountB:r.tokenAccountA,y?p:d,y?d:p,y?b:f,y?f:b,c,n,s,a,u,!0,Le(l,m).publicKey)];return{signers:[],instructions:k,instructionTypes:[oe.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,p){let d=F([g("openTime"),g("endTime"),O("emissionsPerSecondX64")]),b=[{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:ht.programId,isSigner:!1,isWritable:!1},{pubkey:wt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({openTime:ie(l),endTime:ie(m),emissionsPerSecondX64:p},f);let y=Buffer.from([...De.initReward,...f]);return new Ve({keys:b,programId:e,data:y})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new T(e.programId),new T(e.id)],a=Ui(o,s,r.mint).publicKey,u=tn(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new T(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:[oe.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,p){let d=F([q("rewardIndex"),O("emissionsPerSecondX64"),g("openTime"),g("endTime")]),b=[{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:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(d.span);d.encode({rewardIndex:c,emissionsPerSecondX64:p,openTime:ie(l),endTime:ie(m)},f);let y=Buffer.from([...De.setRewardEmissions,...f]);return new Ve({keys:b,programId:e,data:y})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new T(e.programId),new T(e.id)],a,u,c;for(let p=0;p<e.rewardDefaultInfos.length;p++)e.rewardDefaultInfos[p].mint.address===r.mint.toString()&&(a=p,u=new T(t.rewardInfos[p].vault),c=new T(t.rewardInfos[p].mint.address));(a===void 0||u===void 0)&&Yi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=tn(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new T(e.config.id),n.tokenAccount,u,c,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[oe.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let u=F([q("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:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...De.collectReward,...l]);return new Ve({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new T(e.programId),new T(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,u=new T(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&Yi.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:[oe.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 T(e.programId),new T(e.id)],[m,p]=[new T(t.vault.A),new T(t.vault.B)],[d,b]=[new T(e.mintA.address),new T(e.mintB.address)],f=e.mintA.address===r.toString(),y=[this.swapInstruction(c,n.wallet,l,new T(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?p:m,f?m:p,f?d:b,f?b:d,u,m,o,s,a,!1)];return{signers:[],instructions:y,instructionTypes:[oe.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import gf from"bn.js";import{TOKEN_PROGRAM_ID as gs,ASSOCIATED_TOKEN_PROGRAM_ID as nb}from"@solana/spl-token";import{PublicKey as rb,TransactionInstruction as ji,SystemProgram as ws,SYSVAR_RENT_PUBKEY as ob}from"@solana/web3.js";var qn=F([q("instruction"),g("amountIn"),g("minAmountOut")]),Gn=F([q("instruction"),g("maxAmountIn"),g("amountOut")]),Xf=F([q("instruction"),q("nonce")]),ms=F([q("instruction"),q("nonce"),g("startTime")]),Hf=F([g("status"),g("nonce"),g("maxOrder"),g("depth"),g("baseDecimal"),g("quoteDecimal"),g("state"),g("resetFlag"),g("minSize"),g("volMaxCutRatio"),g("amountWaveRatio"),g("baseLotSize"),g("quoteLotSize"),g("minPriceMultiplier"),g("maxPriceMultiplier"),g("systemDecimalValue"),g("minSeparateNumerator"),g("minSeparateDenominator"),g("tradeFeeNumerator"),g("tradeFeeDenominator"),g("pnlNumerator"),g("pnlDenominator"),g("swapFeeNumerator"),g("swapFeeDenominator"),g("baseNeedTakePnl"),g("quoteNeedTakePnl"),g("quoteTotalPnl"),g("baseTotalPnl"),g("poolOpenTime"),g("punishPcAmount"),g("punishCoinAmount"),g("orderbookToInitTime"),O("swapBaseInAmount"),O("swapQuoteOutAmount"),g("swapBase2QuoteFee"),O("swapQuoteInAmount"),O("swapBaseOutAmount"),g("swapQuote2BaseFee"),R("baseVault"),R("quoteVault"),R("baseMint"),R("quoteMint"),R("lpMint"),R("openOrders"),R("marketId"),R("marketProgramId"),R("targetOrders"),R("withdrawQueue"),R("lpVault"),R("owner"),g("lpReserve"),$(g(),3,"padding")]),zf=F([g("accountType"),g("status"),g("nonce"),g("maxOrder"),g("depth"),g("baseDecimal"),g("quoteDecimal"),g("state"),g("resetFlag"),g("minSize"),g("volMaxCutRatio"),g("amountWaveRatio"),g("baseLotSize"),g("quoteLotSize"),g("minPriceMultiplier"),g("maxPriceMultiplier"),g("systemDecimalsValue"),g("abortTradeFactor"),g("priceTickMultiplier"),g("priceTick"),g("minSeparateNumerator"),g("minSeparateDenominator"),g("tradeFeeNumerator"),g("tradeFeeDenominator"),g("pnlNumerator"),g("pnlDenominator"),g("swapFeeNumerator"),g("swapFeeDenominator"),g("baseNeedTakePnl"),g("quoteNeedTakePnl"),g("quoteTotalPnl"),g("baseTotalPnl"),g("poolOpenTime"),g("punishPcAmount"),g("punishCoinAmount"),g("orderbookToInitTime"),O("swapBaseInAmount"),O("swapQuoteOutAmount"),O("swapQuoteInAmount"),O("swapBaseOutAmount"),g("swapQuote2BaseFee"),g("swapBase2QuoteFee"),R("baseVault"),R("quoteVault"),R("baseMint"),R("quoteMint"),R("lpMint"),R("modelDataAccount"),R("openOrders"),R("marketId"),R("marketProgramId"),R("targetOrders"),R("owner"),$(g(),64,"padding")]),ds=F([q("instruction"),g("baseAmountIn"),g("quoteAmountIn"),g("fixedSide")]),ps=F([q("instruction"),g("amountIn")]);var Qf=F([g("fee")]);import{PublicKey as fs}from"@solana/web3.js";var Un=new fs("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),bs=5e4,ys=F([g("x"),g("y"),g("price")]),$f=F([g("accountType"),g("status"),g("multiplier"),g("validDataCount"),$(ys,bs,"DataElement")]);var Zi=ae("Raydium_liquidity_instruction");function ks({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=ke(i),s=Buffer.alloc(qn.span);qn.encode({instruction:9,amountIn:ie(t),minAmountOut:ie(n)},s);let a=[V({pubkey:gs,isWritable:!1}),V({pubkey:o.id}),V({pubkey:o.authority,isWritable:!1}),V({pubkey:o.openOrders})];return r===4&&a.push(V({pubkey:o.targetOrders})),a.push(V({pubkey:o.vault.A}),V({pubkey:o.vault.B})),r===5&&a.push(V({pubkey:Un})),a.push(V({pubkey:o.marketProgramId,isWritable:!1}),V({pubkey:o.marketId}),V({pubkey:o.marketBids}),V({pubkey:o.marketAsks}),V({pubkey:o.marketEventQueue}),V({pubkey:o.marketBaseVault}),V({pubkey:o.marketQuoteVault}),V({pubkey:o.marketAuthority,isWritable:!1}),V({pubkey:e.tokenAccountIn}),V({pubkey:e.tokenAccountOut}),V({pubkey:e.owner,isWritable:!1})),new ji({programId:o.programId,keys:a,data:s})}function As({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=ke(i),s=Buffer.alloc(Gn.span);Gn.encode({instruction:11,maxAmountIn:ie(t),amountOut:ie(n)},s);let a=[V({pubkey:ws.programId,isWritable:!1}),V({pubkey:o.id}),V({pubkey:o.authority,isWritable:!1}),V({pubkey:o.openOrders}),V({pubkey:o.targetOrders}),V({pubkey:o.vault.A}),V({pubkey:o.vault.B})];return r===5&&a.push(V({pubkey:Un})),a.push(V({pubkey:o.marketProgramId,isWritable:!1}),V({pubkey:o.marketId}),V({pubkey:o.marketBids}),V({pubkey:o.marketAsks}),V({pubkey:o.marketEventQueue}),V({pubkey:o.marketBaseVault}),V({pubkey:o.marketQuoteVault}),V({pubkey:o.marketAuthority,isWritable:!1}),V({pubkey:e.tokenAccountIn}),V({pubkey:e.tokenAccountOut}),V({pubkey:e.owner,isWritable:!1,isSigner:!0})),new ji({programId:o.programId,keys:a,data:s})}function Ji(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 ks(te(Y({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return As(te(Y({},a),{maxAmountIn:r,amountOut:o}),t);Zi.logWithError("invalid params","params",i)}throw Zi.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function Tb(i,e,t,n,r,o,s,a,u,c,l,m){let p=F([q("instruction"),g("amountIn"),g("amountOut")]),d=[{pubkey:er.programId,isSigner:!1,isWritable:!1},{pubkey:zn,isSigner:!1,isWritable:!1},{pubkey:new Re(t.programId),isSigner:!1,isWritable:!1},{pubkey:new Re(t.id),isSigner:!1,isWritable:!0},{pubkey:new Re(n.id),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:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=ke(t);d.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=ke(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=ke(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let b=Buffer.alloc(p.span);return p.encode({instruction:4,amountIn:c,amountOut:l},b),new Qn({keys:d,programId:i,data:b})}function xb(i,e,t,n,r,o,s,a,u,c){let l=F([q("instruction")]),m=[{pubkey:er.programId,isSigner:!1,isWritable:!1},{pubkey:zn,isSigner:!1,isWritable:!1},{pubkey:new Re(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new Re(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new Re(String(t.id)),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:!0,isWritable:!1}];if(e.type==="Concentrated"){let d=ke(n);m.push({pubkey:d.config.id,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.A:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.B:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},...c.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let d=ke(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0})}else{let d=ke(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},...d.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:d.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:d.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0}])}let p=Buffer.alloc(l.span);return l.encode({instruction:5},p),new Qn({keys:m,programId:i,data:p})}function $i(i,e,t,n,r,o){if(i.pooltype.includes("StablePool")){let s=ke(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(i.type==="Concentrated"){let s=i,a=ke(e),u=s.mintA.address===t;return[{pubkey:new Re(String(i.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:a.id,isSigner:!1,isWritable:!0},...a.mintA.programId.equals(Xn)||a.mintB.programId.equals(Xn)?[{pubkey:Xn,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:Le(new Re(String(i.programId)),new Re(i.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=ke(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function hs(i,e,t,n,r,o,s,a,u,c,l,m,p,d){let b=F([q("instruction"),g("amountIn"),g("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:zn,isSigner:!1,isWritable:!1}];f.push(...$i(a,c,o,t,n,d[0])),f.push(...$i(u,l,s,n,r,d[1]));let y=Buffer.alloc(b.span);return b.encode({instruction:8,amountIn:m,amountOut:p},y),new Qn({keys:f,programId:i,data:y})}async function Bb({routeProgram:i,ownerInfo:e,inputMint:t,swapInfo:n}){var r,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=ke(n.poolKey[0]),m=t.equals(l.mintA.address)?Ze.add(Ie):je.sub(Ie);return await Ot.makeSwapBaseInInstructions({poolInfo:l,poolKeys:l,observationId:l.vault.A,ownerInfo:{wallet:e.wallet,tokenAccountA:l.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:l.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(r=n.minAmountOut.fee)==null?void 0:r.raw)!=null?o:new Hn(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[Ji({poolKeys:l,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((a=(s=n.minAmountOut.fee)==null?void 0:s.raw)!=null?a:new Hn(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?oe.AmmV5SwapBaseIn:oe.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let l=n.poolInfo[0],m=n.poolInfo[1],p=n.poolKey[0],d=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[hs(i,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.minMiddleAmountFee.token.mint.toString(),l,m,p,d,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((c=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?c:new Hn(0)),n.remainingAccounts)],instructionTypes:[oe.RouteSwap],lookupTableAddress:[p.lookupTableAccount,d.lookupTableAccount].filter(b=>b!==void 0),address:{}}}else throw Error("route type error")}export{Bb as makeSwapInstruction,Tb as route1Instruction,xb as route2Instruction,hs as routeInstruction};
|
|
1
|
+
var nr=Object.defineProperty,ir=Object.defineProperties;var rr=Object.getOwnPropertyDescriptors;var Zn=Object.getOwnPropertySymbols;var or=Object.prototype.hasOwnProperty,sr=Object.prototype.propertyIsEnumerable;var jn=(i,e,t)=>e in i?nr(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,Y=(i,e)=>{for(var t in e||(e={}))or.call(e,t)&&jn(i,t,e[t]);if(Zn)for(var t of Zn(e))sr.call(e,t)&&jn(i,t,e[t]);return i},te=(i,e)=>ir(i,rr(e));import{get as Jn,set as ar}from"lodash";import ei from"dayjs";import ur from"dayjs/plugin/utc";ei.extend(ur);var nn=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 ei().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}},$n={},cr={};function ae(i){let e=Jn($n,i);if(!e){let t=Jn(cr,i);e=new nn({name:i,logLevel:t}),ar($n,i,e)}return e}import{PublicKey as Ao}from"@solana/web3.js";import ho from"bn.js";import go from"big.js";import Ht from"bn.js";import Be from"bn.js";var bt=9e15,it=1e9,rn="0123456789abcdef",Ft="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Wt="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",on={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-bt,maxE:bt,crypto:!1},ri,ze,M=!0,Vt="[DecimalError] ",nt=Vt+"Invalid argument: ",oi=Vt+"Precision limit exceeded",si=Vt+"crypto unavailable",ai="[object Decimal]",we=Math.floor,ce=Math.pow,lr=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,mr=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,dr=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ui=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,Ee=1e7,C=7,pr=9007199254740991,fr=Ft.length-1,sn=Wt.length-1,w={toStringTag:ai};w.absoluteValue=w.abs=function(){var i=new this.constructor(this);return i.s<0&&(i.s=1),K(i)};w.ceil=function(){return K(new this.constructor(this),this.e+1,2)};w.clampedTo=w.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(nt+e);return t=n.cmp(i),t<0?i:n.cmp(e)>0?e:new r(n)};w.comparedTo=w.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};w.cosine=w.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())+C,n.rounding=1,t=br(n,pi(n,t)),n.precision=i,n.rounding=e,K(ze==2||ze==3?t.neg():t,i,e,!0)):new n(1):new n(NaN)};w.cubeRoot=w.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(M=!1,o=l.s*ce(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=fe(l.d),i=l.e,(o=(i-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=ce(t,1/3),i=we((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=J(c.plus(l).times(a),c.plus(u),s+2,1),fe(a.d).slice(0,s)===(t=fe(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(K(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")&&(K(n,i+1,1),e=!n.times(n).times(n).eq(l));break}return M=!0,K(n,i,m.rounding,e)};w.decimalPlaces=w.dp=function(){var i,e=this.d,t=NaN;if(e){if(i=e.length-1,t=(i-we(this.e/C))*C,i=e[i],i)for(;i%10==0;i/=10)t--;t<0&&(t=0)}return t};w.dividedBy=w.div=function(i){return J(this,new this.constructor(i))};w.dividedToIntegerBy=w.divToInt=function(i){var e=this,t=e.constructor;return K(J(e,new t(i),0,1,1),t.precision,t.rounding)};w.equals=w.eq=function(i){return this.cmp(i)===0};w.floor=function(){return K(new this.constructor(this),this.e+1,3)};w.greaterThan=w.gt=function(i){return this.cmp(i)>0};w.greaterThanOrEqualTo=w.gte=function(i){var e=this.cmp(i);return e==1||e===0};w.hyperbolicCosine=w.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/_t(4,i)).toString()):(i=16,e="2.3283064365386962890625e-10"),o=yt(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 K(o,s.precision=t,s.rounding=n,!0)};w.hyperbolicSine=w.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=yt(o,2,r,r,!0);else{i=1.4*Math.sqrt(n),i=i>16?16:i|0,r=r.times(1/_t(5,i)),r=yt(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,K(r,e,t,!0)};w.hyperbolicTangent=w.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,J(t.sinh(),t.cosh(),n.precision=i,n.rounding=e)):new n(t.s)};w.inverseCosine=w.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()?Oe(t,r,o):new t(0):new t(NaN):e.isZero()?Oe(t,r+4,o).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),i=Oe(t,r+4,o).times(.5),t.precision=r,t.rounding=o,i.minus(e))};w.inverseHyperbolicCosine=w.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,M=!1,t=t.times(t).minus(1).sqrt().plus(t),M=!0,n.precision=i,n.rounding=e,t.ln()):new n(t)};w.inverseHyperbolicSine=w.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,M=!1,t=t.times(t).plus(1).sqrt().plus(t),M=!0,n.precision=i,n.rounding=e,t.ln())};w.inverseHyperbolicTangent=w.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?K(new o(r),i,e,!0):(o.precision=t=n-r.e,r=J(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)};w.inverseSine=w.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=Oe(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)))};w.inverseTangent=w.atan=function(){var i,e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=sn)return s=Oe(l,m+4,p).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=sn)return s=Oe(l,m+4,p).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/C+2|0),i=t;i;--i)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(M=!1,e=Math.ceil(a/C),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)),M=!0,K(s,l.precision=m,l.rounding=p,!0)};w.isFinite=function(){return!!this.d};w.isInteger=w.isInt=function(){return!!this.d&&we(this.e/C)>this.d.length-2};w.isNaN=function(){return!this.s};w.isNegative=w.isNeg=function(){return this.s<0};w.isPositive=w.isPos=function(){return this.s>0};w.isZero=function(){return!!this.d&&this.d[0]===0};w.lessThan=w.lt=function(i){return this.cmp(i)<0};w.lessThanOrEqualTo=w.lte=function(i){return this.cmp(i)<1};w.logarithm=w.log=function(i){var e,t,n,r,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding,d=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(M=!1,a=m+d,s=tt(c,a),n=e?vt(l,a+10):tt(i,a),u=J(s,n,a,1),Pt(u.d,r=m,p))do if(a+=10,s=tt(c,a),n=e?vt(l,a+10):tt(i,a),u=J(s,n,a,1),!o){+fe(u.d).slice(r+1,r+15)+1==1e14&&(u=K(u,m+1,0));break}while(Pt(u.d,r+=10,p));return M=!0,K(u,m,p)};w.minus=w.sub=function(i){var e,t,n,r,o,s,a,u,c,l,m,p,d=this,b=d.constructor;if(i=new b(i),!d.d||!i.d)return!d.s||!i.s?i=new b(NaN):d.d?i.s=-i.s:i=new b(i.d||d.s!==i.s?d:NaN),i;if(d.s!=i.s)return i.s=-i.s,d.plus(i);if(c=d.d,p=i.d,a=b.precision,u=b.rounding,!c[0]||!p[0]){if(p[0])i.s=-i.s;else if(c[0])i=new b(d);else return new b(u===3?-0:0);return M?K(i,a,u):i}if(t=we(i.e/C),l=we(d.e/C),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=p.length):(e=p,t=l,s=c.length),n=Math.max(Math.ceil(a/C),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=p.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=p[n]){m=c[n]<p[n];break}o=0}for(m&&(e=c,c=p,p=e,i.s=-i.s),s=c.length,n=p.length-s;n>0;--n)c[s++]=0;for(n=p.length;n>o;){if(c[--n]<p[n]){for(r=n;r&&c[--r]===0;)c[r]=Ee-1;--c[r],c[n]+=Ee}c[n]-=p[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(i.d=c,i.e=Dt(c,t),M?K(i,a,u):i):new b(u===3?-0:0)};w.modulo=w.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]?K(new n(t),n.precision,n.rounding):(M=!1,n.modulo==9?(e=J(t,i.abs(),0,3,1),e.s*=i.s):e=J(t,i,0,n.modulo,1),e=e.times(i),M=!0,t.minus(e))};w.naturalExponential=w.exp=function(){return an(this)};w.naturalLogarithm=w.ln=function(){return tt(this)};w.negated=w.neg=function(){var i=new this.constructor(this);return i.s=-i.s,K(i)};w.plus=w.add=function(i){var e,t,n,r,o,s,a,u,c,l,m=this,p=m.constructor;if(i=new p(i),!m.d||!i.d)return!m.s||!i.s?i=new p(NaN):m.d||(i=new p(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=p.precision,u=p.rounding,!c[0]||!l[0])return l[0]||(i=new p(m)),M?K(i,a,u):i;if(o=we(m.e/C),n=we(i.e/C),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/C),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)/Ee|0,c[r]%=Ee;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return i.d=c,i.e=Dt(c,n),M?K(i,a,u):i};w.precision=w.sd=function(i){var e,t=this;if(i!==void 0&&i!==!!i&&i!==1&&i!==0)throw Error(nt+i);return t.d?(e=ci(t.d),i&&t.e+1>e&&(e=t.e+1)):e=NaN,e};w.round=function(){var i=this,e=i.constructor;return K(new e(i),i.e+1,e.rounding)};w.sine=w.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())+C,n.rounding=1,t=gr(n,pi(n,t)),n.precision=i,n.rounding=e,K(ze>2?t.neg():t,i,e,!0)):new n(NaN)};w.squareRoot=w.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(M=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=fe(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=we((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(J(s,o,t+2,1)).times(.5),fe(o.d).slice(0,t)===(e=fe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(K(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")&&(K(n,u+1,1),i=!n.times(n).eq(s));break}return M=!0,K(n,u,l.rounding,i)};w.tangent=w.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=J(t,new n(1).minus(t.times(t)).sqrt(),i+10,0),n.precision=i,n.rounding=e,K(ze==2||ze==4?t.neg():t,i,e,!0)):new n(NaN)};w.times=w.mul=function(i){var e,t,n,r,o,s,a,u,c,l=this,m=l.constructor,p=l.d,d=(i=new m(i)).d;if(i.s*=l.s,!p||!p[0]||!d||!d[0])return new m(!i.s||p&&!p[0]&&!d||d&&!d[0]&&!p?NaN:!p||!d?i.s/0:i.s*0);for(t=we(l.e/C)+we(i.e/C),u=p.length,c=d.length,u<c&&(o=p,p=d,d=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,r=u+n;r>n;)a=o[r]+d[n]*p[r-n-1]+e,o[r--]=a%Ee|0,e=a/Ee|0;o[r]=(o[r]+e)%Ee|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),i.d=o,i.e=Dt(o,t),M?K(i,m.precision,m.rounding):i};w.toBinary=function(i,e){return cn(this,2,i,e)};w.toDecimalPlaces=w.toDP=function(i,e){var t=this,n=t.constructor;return t=new n(t),i===void 0?t:(xe(i,0,it),e===void 0?e=n.rounding:xe(e,0,8),K(t,i+t.e+1,e))};w.toExponential=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=_e(n,!0):(xe(i,0,it),e===void 0?e=r.rounding:xe(e,0,8),n=K(new r(n),i+1,e),t=_e(n,!0,i+1)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toFixed=function(i,e){var t,n,r=this,o=r.constructor;return i===void 0?t=_e(r):(xe(i,0,it),e===void 0?e=o.rounding:xe(e,0,8),n=K(new o(r),i+r.e+1,e),t=_e(n,!1,i+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};w.toFraction=function(i){var e,t,n,r,o,s,a,u,c,l,m,p,d=this,b=d.d,f=d.constructor;if(!b)return new f(d);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=ci(b)-d.e-1,s=o%C,e.d[0]=ce(10,s<0?C+s:s),i==null)i=o>0?e:c;else{if(a=new f(i),!a.isInt()||a.lt(c))throw Error(nt+a);i=a.gt(e)?o>0?e:c:a}for(M=!1,a=new f(fe(b)),l=f.precision,f.precision=o=b.length*C*2;m=J(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=J(i.minus(t),n,0,1,1),u=u.plus(r.times(c)),t=t.plus(r.times(n)),u.s=c.s=d.s,p=J(c,n,o,1).minus(d).abs().cmp(J(u,t,o,1).minus(d).abs())<1?[c,n]:[u,t],f.precision=l,M=!0,p};w.toHexadecimal=w.toHex=function(i,e){return cn(this,16,i,e)};w.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:xe(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]?(M=!1,t=J(t,i,0,e,1).times(i),M=!0,K(t)):(i.s=t.s,t=i),t};w.toNumber=function(){return+this};w.toOctal=function(i,e){return cn(this,8,i,e)};w.toPower=w.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(ce(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,i.eq(1))return K(a,n,o);if(e=we(i.e/C),e>=i.d.length-1&&(t=c<0?-c:c)<=pr)return r=li(u,a,t,n),i.s<0?new u(1).div(r):K(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=ce(+a,c),e=t==0||!isFinite(t)?we(c*(Math.log("0."+fe(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(M=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),r=an(i.times(tt(a,n+t)),n),r.d&&(r=K(r,n+5,1),Pt(r.d,n,o)&&(e=n+10,r=K(an(i.times(tt(a,e+t)),e),e+5,1),+fe(r.d).slice(n+1,n+15)+1==1e14&&(r=K(r,n+1,0)))),r.s=s,M=!0,u.rounding=o,K(r,n,o))};w.toPrecision=function(i,e){var t,n=this,r=n.constructor;return i===void 0?t=_e(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(xe(i,1,it),e===void 0?e=r.rounding:xe(e,0,8),n=K(new r(n),i,e),t=_e(n,i<=n.e||n.e<=r.toExpNeg,i)),n.isNeg()&&!n.isZero()?"-"+t:t};w.toSignificantDigits=w.toSD=function(i,e){var t=this,n=t.constructor;return i===void 0?(i=n.precision,e=n.rounding):(xe(i,1,it),e===void 0?e=n.rounding:xe(e,0,8)),K(new n(t),i,e)};w.toString=function(){var i=this,e=i.constructor,t=_e(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()&&!i.isZero()?"-"+t:t};w.truncated=w.trunc=function(){return K(new this.constructor(this),this.e+1,1)};w.valueOf=w.toJSON=function(){var i=this,e=i.constructor,t=_e(i,i.e<=e.toExpNeg||i.e>=e.toExpPos);return i.isNeg()?"-"+t:t};function fe(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=C-n.length,t&&(o+=et(t)),o+=n;s=i[e],n=s+"",t=C-n.length,t&&(o+=et(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function xe(i,e,t){if(i!==~~i||i<e||i>t)throw Error(nt+i)}function Pt(i,e,t,n){var r,o,s,a;for(o=i[0];o>=10;o/=10)--e;return--e<0?(e+=C,r=0):(r=Math.ceil((e+1)/C),e%=C),o=ce(10,C-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)==ce(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)==ce(10,e-3)-1,s}function Et(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]+=rn.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 br(i,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/_t(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),i.precision+=t,e=yt(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 J=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,p,d,b,f,y,k,h,A,x,P,L,E,_,ee,X,j,Me,pe=n.constructor,Te=n.s==r.s?1:-1,re=n.d,Q=r.d;if(!re||!re[0]||!Q||!Q[0])return new pe(!n.s||!r.s||(re?Q&&re[0]==Q[0]:!Q)?NaN:re&&re[0]==0||!Q?Te*0:Te/0);for(u?(d=1,l=n.e-r.e):(u=Ee,d=C,l=we(n.e/d)-we(r.e/d)),j=Q.length,ee=re.length,k=new pe(Te),h=k.d=[],m=0;Q[m]==(re[m]||0);m++);if(Q[m]>(re[m]||0)&&l--,o==null?(L=o=pe.precision,s=pe.rounding):a?L=o+(n.e-r.e)+1:L=o,L<0)h.push(1),b=!0;else{if(L=L/d+2|0,m=0,j==1){for(p=0,Q=Q[0],L++;(m<ee||p)&&L--;m++)E=p*u+(re[m]||0),h[m]=E/Q|0,p=E%Q|0;b=p||m<ee}else{for(p=u/(Q[0]+1)|0,p>1&&(Q=i(Q,p,u),re=i(re,p,u),j=Q.length,ee=re.length),_=j,A=re.slice(0,j),x=A.length;x<j;)A[x++]=0;Me=Q.slice(),Me.unshift(0),X=Q[0],Q[1]>=u/2&&++X;do p=0,c=e(Q,A,j,x),c<0?(P=A[0],j!=x&&(P=P*u+(A[1]||0)),p=P/X|0,p>1?(p>=u&&(p=u-1),f=i(Q,p,u),y=f.length,x=A.length,c=e(f,A,y,x),c==1&&(p--,t(f,j<y?Me:Q,y,u))):(p==0&&(c=p=1),f=Q.slice()),y=f.length,y<x&&f.unshift(0),t(A,f,x,u),c==-1&&(x=A.length,c=e(Q,A,j,x),c<1&&(p++,t(A,j<x?Me:Q,x,u))),x=A.length):c===0&&(p++,A=[0]),h[m++]=p,c&&A[0]?A[x++]=re[_]||0:(A=[re[_]],x=1);while((_++<ee||A[0]!==void 0)&&L--);b=A[0]!==void 0}h[0]||h.shift()}if(d==1)k.e=l,ri=b;else{for(m=1,p=h[0];p>=10;p/=10)m++;k.e=m+l*d-1,K(k,a?o+k.e+1:o,s,b)}return k}}();function K(i,e,t,n){var r,o,s,a,u,c,l,m,p,d=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+=C,s=e,l=m[p=0],u=l/ce(10,r-s-1)%10|0;else if(p=Math.ceil((o+1)/C),a=m.length,p>=a)if(n){for(;a++<=p;)m.push(0);l=u=0,r=1,o%=C,s=o-C+1}else break e;else{for(l=a=m[p],r=1;a>=10;a/=10)r++;o%=C,s=o-C+r,u=s<0?0:l/ce(10,r-s-1)%10|0}if(n=n||e<0||m[p+1]!==void 0||(s<0?l:l%ce(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/ce(10,r-s):0:m[p-1])%10&1||t==(i.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=i.e+1,m[0]=ce(10,(C-e%C)%C),i.e=-e||0):m[0]=i.e=0,i;if(o==0?(m.length=p,a=1,p--):(m.length=p+1,a=ce(10,C-o),m[p]=s>0?(l/ce(10,r-s)%ce(10,s)|0)*a:0),c)for(;;)if(p==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(i.e++,m[0]==Ee&&(m[0]=1));break}else{if(m[p]+=a,m[p]!=Ee)break;m[p--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return M&&(i.e>d.maxE?(i.d=null,i.e=NaN):i.e<d.minE&&(i.e=0,i.d=[0])),i}function _e(i,e,t){if(!i.isFinite())return di(i);var n,r=i.e,o=fe(i.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+et(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(i.e<0?"e":"e+")+i.e):r<0?(o="0."+et(-r-1)+o,t&&(n=t-s)>0&&(o+=et(n))):r>=s?(o+=et(r+1-s),t&&(n=t-r-1)>0&&(o=o+"."+et(n))):((n=r+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(o+="."),o+=et(n))),o}function Dt(i,e){var t=i[0];for(e*=C;t>=10;t/=10)e++;return e}function vt(i,e,t){if(e>fr)throw M=!0,t&&(i.precision=t),Error(oi);return K(new i(Ft),e,1,!0)}function Oe(i,e,t){if(e>sn)throw Error(oi);return K(new i(Wt),e,t,!0)}function ci(i){var e=i.length-1,t=e*C+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 et(i){for(var e="";i--;)e+="0";return e}function li(i,e,t,n){var r,o=new i(1),s=Math.ceil(n/C+4);for(M=!1;;){if(t%2&&(o=o.times(e),ni(o.d,s)&&(r=!0)),t=we(t/2),t===0){t=o.d.length-1,r&&o.d[t]===0&&++o.d[t];break}e=e.times(e),ni(e.d,s)}return M=!0,o}function ti(i){return i.d[i.d.length-1]&1}function mi(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 an(i,e){var t,n,r,o,s,a,u,c=0,l=0,m=0,p=i.constructor,d=p.rounding,b=p.precision;if(!i.d||!i.d[0]||i.e>17)return new p(i.d?i.d[0]?i.s<0?0:1/0:1:i.s?i.s<0?0:i:0/0);for(e==null?(M=!1,u=b):u=e,a=new p(.03125);i.e>-2;)i=i.times(a),m+=5;for(n=Math.log(ce(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new p(1),p.precision=u;;){if(o=K(o.times(i),u,1),t=t.times(++l),a=s.plus(J(o,t,u,1)),fe(a.d).slice(0,u)===fe(s.d).slice(0,u)){for(r=m;r--;)s=K(s.times(s),u,1);if(e==null)if(c<3&&Pt(s.d,u-n,d,c))p.precision=u+=10,t=o=a=new p(1),l=0,c++;else return K(s,p.precision=b,d,M=!0);else return p.precision=b,s}s=a}}function tt(i,e){var t,n,r,o,s,a,u,c,l,m,p,d=1,b=10,f=i,y=f.d,k=f.constructor,h=k.rounding,A=k.precision;if(f.s<0||!y||!y[0]||!f.e&&y[0]==1&&y.length==1)return new k(y&&!y[0]?-1/0:f.s!=1?NaN:y?0:f);if(e==null?(M=!1,l=A):l=e,k.precision=l+=b,t=fe(y),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=fe(f.d),n=t.charAt(0),d++;o=f.e,n>1?(f=new k("0."+t),o++):f=new k(n+"."+t.slice(1))}else return c=vt(k,l+2,A).times(o+""),f=tt(new k(n+"."+t.slice(1)),l-b).plus(c),k.precision=A,e==null?K(f,A,h,M=!0):f;for(m=f,u=s=f=J(f.minus(1),f.plus(1),l,1),p=K(f.times(f),l,1),r=3;;){if(s=K(s.times(p),l,1),c=u.plus(J(s,new k(r),l,1)),fe(c.d).slice(0,l)===fe(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(vt(k,l+2,A).times(o+""))),u=J(u,new k(d),l,1),e==null)if(Pt(u.d,l-b,h,a))k.precision=l+=b,c=s=f=J(m.minus(1),m.plus(1),l,1),p=K(f.times(f),l,1),r=a=1;else return K(u,k.precision=A,h,M=!0);else return k.precision=A,u;u=c,r+=2}}function di(i){return String(i.s*i.s/0)}function un(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)%C,t<0&&(n+=C),n<r){for(n&&i.d.push(+e.slice(0,n)),r-=C;n<r;)i.d.push(+e.slice(n,n+=C));e=e.slice(n),n=C-e.length}else n-=r;for(;n--;)e+="0";i.d.push(+e),M&&(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 yr(i,e){var t,n,r,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),ui.test(e))return un(i,e)}else if(e==="Infinity"||e==="NaN")return+e||(i.s=NaN),i.e=NaN,i.d=null,i;if(mr.test(e))t=16,e=e.toLowerCase();else if(lr.test(e))t=2;else if(dr.test(e))t=8;else throw Error(nt+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=li(n,new n(t),o,o*2)),c=Et(e,t,Ee),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(i.s*0):(i.e=Dt(c,l),i.d=c,M=!1,s&&(i=J(i,r,a*4)),u&&(i=i.times(Math.abs(u)<54?ce(2,u):Tt.pow(2,u))),M=!0,i)}function gr(i,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:yt(i,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/_t(5,t)),e=yt(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 yt(i,e,t,n,r){var o,s,a,u,c=1,l=i.precision,m=Math.ceil(l/C);for(M=!1,u=t.times(t),a=new i(n);;){if(s=J(a.times(u),new i(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=J(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 M=!0,s.d.length=m+1,s}function _t(i,e){for(var t=i;--e;)t*=i;return t}function pi(i,e){var t,n=e.s<0,r=Oe(i,i.precision,1),o=r.times(.5);if(e=e.abs(),e.lte(o))return ze=n?4:1,e;if(t=e.divToInt(r),t.isZero())ze=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(o))return ze=ti(t)?n?2:3:n?4:1,e;ze=ti(t)?n?1:4:n?3:2}return e.minus(r).abs()}function cn(i,e,t,n){var r,o,s,a,u,c,l,m,p,d=i.constructor,b=t!==void 0;if(b?(xe(t,1,it),n===void 0?n=d.rounding:xe(n,0,8)):(t=d.precision,n=d.rounding),!i.isFinite())l=di(i);else{for(l=_e(i),s=l.indexOf("."),b?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),p=new d(1),p.e=l.length-s,p.d=Et(_e(p),10,r),p.e=p.d.length),m=Et(l,10,r),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=b?"0p+0":"0";else{if(s<0?o--:(i=new d(i),i.d=m,i.e=o,i=J(i,p,t,n,0,r),m=i.d,o=i.e,c=ri),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+=rn.charAt(m[s]);if(b){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=Et(l,r,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=rn.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 ni(i,e){if(i.length>e)return i.length=e,!0}function wr(i){return new this(i).abs()}function kr(i){return new this(i).acos()}function Ar(i){return new this(i).acosh()}function hr(i,e){return new this(i).plus(e)}function Pr(i){return new this(i).asin()}function Tr(i){return new this(i).asinh()}function xr(i){return new this(i).atan()}function Br(i){return new this(i).atanh()}function Ir(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=Oe(this,o,1).times(e.s>0?.25:.75),t.s=i.s):!e.d||i.isZero()?(t=e.s<0?Oe(this,n,r):new this(0),t.s=i.s):!i.d||e.isZero()?(t=Oe(this,o,1).times(.5),t.s=i.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(J(i,e,o,1)),e=Oe(this,o,1),this.precision=n,this.rounding=r,t=i.s<0?t.minus(e):t.plus(e)):t=this.atan(J(i,e,o,1)),t}function Sr(i){return new this(i).cbrt()}function Kr(i){return K(i=new this(i),i.e+1,2)}function Cr(i,e,t){return new this(i).clamp(e,t)}function Nr(i){if(!i||typeof i!="object")throw Error(Vt+"Object expected");var e,t,n,r=i.defaults===!0,o=["precision",1,it,"rounding",0,8,"toExpNeg",-bt,0,"toExpPos",0,bt,"maxE",0,bt,"minE",-bt,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],r&&(this[t]=on[t]),(n=i[t])!==void 0)if(we(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(nt+t+": "+n);if(t="crypto",r&&(this[t]=on[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(si);else this[t]=!1;else throw Error(nt+t+": "+n);return this}function Lr(i){return new this(i).cos()}function Rr(i){return new this(i).cosh()}function fi(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,ii(o)){c.s=o.s,M?!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++;M?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 un(c,o.toString())}else if(u!=="string")throw Error(nt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),ui.test(o)?un(c,o):yr(c,o)}if(r.prototype=w,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=Nr,r.clone=fi,r.isDecimal=ii,r.abs=wr,r.acos=kr,r.acosh=Ar,r.add=hr,r.asin=Pr,r.asinh=Tr,r.atan=xr,r.atanh=Br,r.atan2=Ir,r.cbrt=Sr,r.ceil=Kr,r.clamp=Cr,r.cos=Lr,r.cosh=Rr,r.div=Mr,r.exp=Or,r.floor=Er,r.hypot=Fr,r.ln=Wr,r.log=vr,r.log10=Dr,r.log2=Vr,r.max=_r,r.min=qr,r.mod=Gr,r.mul=Ur,r.pow=Xr,r.random=Hr,r.round=zr,r.sign=Qr,r.sin=Yr,r.sinh=Zr,r.sqrt=jr,r.sub=Jr,r.sum=$r,r.tan=eo,r.tanh=to,r.trunc=no,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 Mr(i,e){return new this(i).div(e)}function Or(i){return new this(i).exp()}function Er(i){return K(i=new this(i),i.e+1,3)}function Fr(){var i,e,t=new this(0);for(M=!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 M=!0,new this(1/0);t=e}return M=!0,t.sqrt()}function ii(i){return i instanceof Tt||i&&i.toStringTag===ai||!1}function Wr(i){return new this(i).ln()}function vr(i,e){return new this(i).log(e)}function Vr(i){return new this(i).log(2)}function Dr(i){return new this(i).log(10)}function _r(){return mi(this,arguments,"lt")}function qr(){return mi(this,arguments,"gt")}function Gr(i,e){return new this(i).mod(e)}function Ur(i,e){return new this(i).mul(e)}function Xr(i,e){return new this(i).pow(e)}function Hr(i){var e,t,n,r,o=0,s=new this(1),a=[];if(i===void 0?i=this.precision:xe(i,1,it),n=Math.ceil(i/C),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(si);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],i%=C,n&&i&&(r=ce(10,C-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-=C)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<C&&(t-=C-n)}return s.e=t,s.d=a,s}function zr(i){return K(i=new this(i),i.e+1,this.rounding)}function Qr(i){return i=new this(i),i.d?i.d[0]?i.s:0*i.s:i.s||NaN}function Yr(i){return new this(i).sin()}function Zr(i){return new this(i).sinh()}function jr(i){return new this(i).sqrt()}function Jr(i,e){return new this(i).sub(e)}function $r(){var i=0,e=arguments,t=new this(e[i]);for(M=!1;t.s&&++i<e.length;)t=t.plus(e[i]);return M=!0,K(t,this.precision,this.rounding)}function eo(i){return new this(i).tan()}function to(i){return new this(i).tanh()}function no(i){return K(i=new this(i),i.e+1,1)}w[Symbol.for("nodejs.util.inspect.custom")]=w.toString;w[Symbol.toStringTag]="Decimal";var Tt=w.constructor=fi(on);Ft=new Tt(Ft);Wt=new Tt(Wt);var N=Tt;import{PublicKey as pn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as io}from"@solana/spl-token";import{PublicKey as ne,SystemProgram as bi,SYSVAR_RENT_PUBKEY as ro}from"@solana/web3.js";function V({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var Ns=[V({pubkey:io,isWritable:!1}),V({pubkey:bi.programId,isWritable:!1}),V({pubkey:ro,isWritable:!1})];function ln({publicKey:i,transformSol:e}){let t=mn(i.toString());if(t instanceof ne)return e&&t.equals(xt)?qt:t;if(e&&t.toString()===xt.toBase58())return qt;if(typeof t=="string"){if(t===ne.default.toBase58())return ne.default;try{return new ne(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function mn(i){try{return new ne(i)}catch{return i}}var gt=new ne("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ls=new ne("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),wt=new ne("SysvarRent111111111111111111111111111111111"),Rs=new ne("SysvarC1ock11111111111111111111111111111111"),kt=new ne("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Ms=new ne("Sysvar1nstructions1111111111111111111111111"),Os=bi.programId,Es=new ne("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Fs=new ne("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ws=new ne("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),vs=new ne("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Vs=new ne("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ds=new ne("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),_s=new ne("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),qs=new ne("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Gs=new ne("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Us=new ne("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Xs=new ne("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),qt=new ne("So11111111111111111111111111111111111111112"),xt=ne.default;function dn(i){return ln({publicKey:i,transformSol:!0})}import{PublicKey as oo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as yi}from"@solana/spl-token";var gi={chainId:101,address:oo.default.toBase58(),programId:yi.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},rt={chainId:101,address:"So11111111111111111111111111111111111111112",programId:yi.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 fn=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:o=!1,isToken2022:s=!1}){if(e===xt.toBase58()||e instanceof pn&&xt.equals(e)){this.decimals=rt.decimals,this.symbol=rt.symbol,this.name=rt.name,this.mint=new pn(rt.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?pn.default:ln({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},qe=fn;qe.WSOL=new fn(te(Y({},rt),{mint:rt.address}));import Ut from"big.js";import uo from"bn.js";import co from"decimal.js-light";import so from"toformat";var ao=so,Bt=ao;var Gt=ae("module/fraction"),bn=Bt(Ut),It=Bt(co),lo={[0]:It.ROUND_DOWN,[1]:It.ROUND_HALF_UP,[2]:It.ROUND_UP},mo={[0]:Ut.roundDown,[1]:Ut.roundHalfUp,[2]:Ut.roundUp},z=class{constructor(e,t=new uo(1)){this.numerator=ie(e),this.denominator=ie(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new z(this.denominator,this.numerator)}add(e){let t=e instanceof z?e:new z(ie(e));return this.denominator.eq(t.denominator)?new z(this.numerator.add(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof z?e:new z(ie(e));return this.denominator.eq(t.denominator)?new z(this.numerator.sub(t.numerator),this.denominator):new z(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof z?e:new z(ie(e));return new z(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof z?e:new z(ie(e));return new z(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Gt.logWithError(`${e} is not an integer.`),e<=0&&Gt.logWithError(`${e} is not positive.`),It.set({precision:e+1,rounding:lo[n]});let r=new It(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)||Gt.logWithError(`${e} is not an integer.`),e<0&&Gt.logWithError(`${e} is negative.`),bn.DP=e,bn.RM=mo[n]||1,new bn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var fo=ae("Raydium_price"),Ke=class extends z{constructor(t){let{baseToken:n,quoteToken:r,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=r,this.scalar=new z(yn(n.decimals),yn(r.decimals))}get raw(){return new z(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ke({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&fo.logWithError("mul token not equals");let n=super.mul(t);return new Ke({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 gn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Xt=gn;Xt.SOL=new gn(gi);import bo from"bn.js";var wi=new z(new bo(100)),ot=class extends z{toSignificant(e=5,t,n){return this.mul(wi).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(wi).toFixed(e,t,n)}};var wn=new Be(0),yo=new Be(1),_a=new Be(2),qa=new Be(3),Ga=new Be(5),kn=new Be(10),Ua=new Be(100),Xa=new Be(1e3),Ha=new Be(1e4),ki=9007199254740991;function ie(i){let e=ae("Raydium_parseBigNumberish");if(i instanceof Be)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Be(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=ki||i<=-ki)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Be(String(i))):typeof i=="bigint"?new Be(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Be(0))}function yn(i){return kn.pow(ie(i))}var wo=ae("Raydium_amount"),hi=Bt(go);function ko(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")):wo.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var be=class extends z{constructor(t,n,r=!0,o){let s=new Ht(0),a=kn.pow(new Ht(t.decimals));if(r)s=ie(n);else{let u=new Ht(0),c=new Ht(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=ko(n.toString(),t.decimals);u=ie(l),c=ie(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ae(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new be(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new be(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,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 hi.DP=this.token.decimals,new hi(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function Ai(i){return typeof i=="object"&&i!==null&&![qe,be,Ao,z,ho,Ke,ot].some(e=>typeof e=="object"&&i instanceof e)}function ke(i){return typeof i=="string"?mn(i):Array.isArray(i)?i.map(e=>ke(e)):Ai(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,ke(t)])):i}import{PublicKey as rc,sendAndConfirmTransaction as oc,Transaction as ac,TransactionMessage as cc,VersionedTransaction as lc}from"@solana/web3.js";import dc from"axios";var oe={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 Po,ComputeBudgetProgram as hu,Transaction as Tu,TransactionMessage as Bu,Keypair as Iu,VersionedTransaction as Ku}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Nu}from"@solana/spl-token";var Mu=ae("Raydium_txUtil");function Ce(i,e){let[t,n]=Po.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}import{PublicKey as xo,AddressLookupTableAccount as Pi}from"@solana/web3.js";import{PublicKey as To}from"@solana/web3.js";import{getTransferFeeConfig as Du,unpackMint as _u}from"@solana/spl-token";var An=ae("Raydium_accountInfo_util");async function ct(i,e,t){let{batchRequest:n,commitment:r="confirmed"}=Y({batchRequest:!1},t),o=hn(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=i._buildArgs([l.map(p=>p.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=hn(a,10);s=(await(await Promise.all(u.map(async l=>await i._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&An.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:p,executable:d,lamports:b,owner:f,rentEpoch:y}=m;return p.length!==2&&p[1]!=="base64"&&An.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:d,lamports:b,owner:new To(f),rentEpoch:y}}return null})))}else try{s=await Promise.all(o.map(a=>i.getMultipleAccountsInfo(a,r)))}catch(a){a instanceof Error&&An.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Pn(i,e,t){let n=await ct(i,e.map(r=>r.pubkey),t);return e.map((r,o)=>te(Y({},r),{accountInfo:n[o]}))}var Bo={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Pi({key:new xo("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Pi.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"))})};function hn(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 H}from"@solana/web3.js";var Pc=new H("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Tc=new H("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),xc=new H("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Bc=new H("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Ic=new H("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Sc=new H("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Kc=new H("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Cc=new H("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Nc=new H("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Lc=new H("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Rc=new H("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Mc=new H("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Oc=new H("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Ec=new H("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Fc=new H("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Wc=new H("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),vc=new H("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Vc=new H("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),So=new H("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Ko=new H("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),Co=new H("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2");var Dc={SERUM_MARKET:H.default,OPENBOOK_MARKET:new H("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:H.default,FarmV3:new H("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new H("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new H("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new H("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new H("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new H("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new H("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:So,CREATE_CPMM_POOL_AUTH:Ko,CREATE_CPMM_POOL_FEE_ACC:Co,FEE_DESTINATION_ID:new H("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as No}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Lo}from"@solana/spl-token";function Ge(i,e,t){return Ce([i.toBuffer(),(t!=null?t:Lo).toBuffer(),e.toBuffer()],new No("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Fe from"bn.js";var St=1e4;function le(i,e,t,n){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=te(Y({},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 Fe(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===St){let u=new Fe(o.maximumFee.toString());return{amount:i.add(u),fee:u,expirationTime:a}}else{let u=Tn(i.mul(new Fe(St)),new Fe(St-o.transferFeeBasisPoints)),c=new Fe(o.maximumFee.toString()),l=u.sub(i).gt(c)?i.add(c):u,m=Tn(l.mul(new Fe(o.transferFeeBasisPoints)),new Fe(St)),p=m.gt(s)?s:m;return{amount:l,fee:p,expirationTime:a}}else{let u=Tn(i.mul(new Fe(o.transferFeeBasisPoints)),new Fe(St)),c=u.gt(s)?s:u;return{amount:i,fee:c,expirationTime:a}}}function lt(i,e){return i===void 0?e:e===void 0?i:Math.min(i,e)}function Tn(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new Fe(0))?t.add(new Fe(1)):t}import{createInitializeAccountInstruction as Vm,createCloseAccountInstruction as Dm,createTransferInstruction as _m,TOKEN_PROGRAM_ID as qm}from"@solana/spl-token";import{PublicKey as Hm,SystemProgram as Qm}from"@solana/web3.js";import jm from"bn.js";import{PublicKey as zo,Keypair as Qo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Yo}from"@solana/spl-token";import Rm from"bn.js";import{PublicKey as Do}from"@solana/web3.js";import Ii,{isBN as Si}from"bn.js";import{bits as gl,BitStructure as wl,blob as Ro,Blob as kl,cstr as Al,f32 as hl,f32be as Pl,f64 as Tl,f64be as xl,greedy as Bl,Layout as Mo,ns64 as Il,ns64be as Sl,nu64 as Kl,nu64be as Cl,offset as Nl,s16 as Ll,s16be as Rl,s24 as Ml,s24be as Ol,s32 as Oo,s32be as El,s40 as Fl,s40be as Wl,s48 as vl,s48be as Vl,s8 as Dl,seq as Eo,struct as _l,Structure as Fo,u16 as Wo,u16be as ql,u24 as Gl,u24be as Ul,u32 as Xl,u32be as Hl,u40 as zl,u40be as Ql,u48 as Yl,u48be as Zl,u8 as vo,UInt as Vo,union as jl,Union as Jl,unionLayoutDiscriminator as $l,utf8 as em}from"@solana/buffer-layout";var xn=Mo,Ti=Fo;var Bn=Vo;var xi=vo,At=Wo;var ye=Oo;var Bi=Eo;var Ne=Ro;var Kt=class extends xn{constructor(t,n,r){super(t,r);this.blob=Ne(t),this.signed=n}decode(t,n=0){let r=new Ii(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 Ii(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}};function q(i){return new Bn(1,i)}function Qe(i){return new Bn(4,i)}function g(i){return new Kt(8,!1,i)}function O(i){return new Kt(16,!1,i)}function Ki(i){return new Kt(16,!0,i)}var zt=class extends xn{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 R(i){return new zt(Ne(32),e=>new Do(e),e=>e.toBuffer(),i)}function Ue(i){return new zt(xi(),_o,qo,i)}function _o(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function qo(i){return i?1:0}var In=class extends Ti{decode(e,t){return super.decode(e,t)}};function F(i,e,t){return new In(i,e,t)}function $(i,e,t){let n,r=typeof e=="number"?e:Si(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=Si(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 Bi(i,r,t)}var Ci=F([R("mint"),R("owner"),g("amount"),Qe("delegateOption"),R("delegate"),q("state"),Qe("isNativeOption"),g("isNative"),g("delegatedAmount"),Qe("closeAuthorityOption"),R("closeAuthority")]);function Go(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function Sn(i,...e){if(!Go(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 Kn(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 Ni(i,e){Sn(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Yt=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),We=(i,e)=>i<<32-e|i>>>e;var gm=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Uo(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function Cn(i){return typeof i=="string"&&(i=Uo(i)),Sn(i),i}var Qt=class{clone(){return this._cloneInto()}},wm={}.toString;function Li(i){let e=n=>i().update(Cn(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function Xo(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 Ri=(i,e,t)=>i&e^~i&t,Mi=(i,e,t)=>i&e^i&t^e&t,Zt=class extends Qt{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=Yt(this.buffer)}update(e){Kn(this);let{view:t,buffer:n,blockLen:r}=this;e=Cn(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=Yt(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){Kn(this),Ni(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;Xo(n,r-8,BigInt(this.length*8),o),this.process(n,0);let a=Yt(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 Ho=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]),st=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),at=new Uint32Array(64),Nn=class extends Zt{constructor(){super(64,32,8,!1),this.A=st[0]|0,this.B=st[1]|0,this.C=st[2]|0,this.D=st[3]|0,this.E=st[4]|0,this.F=st[5]|0,this.G=st[6]|0,this.H=st[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)at[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let p=at[m-15],d=at[m-2],b=We(p,7)^We(p,18)^p>>>3,f=We(d,17)^We(d,19)^d>>>10;at[m]=f+at[m-7]+b+at[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 p=We(a,6)^We(a,11)^We(a,25),d=l+p+Ri(a,u,c)+Ho[m]+at[m]|0,f=(We(n,2)^We(n,13)^We(n,22))+Mi(n,r,o)|0;l=c,c=u,u=a,a=s+d|0,s=o,o=r,r=n,n=d+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(){at.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Oi=Li(()=>new Nn);var Fm=ae("Raydium_Util");function Ln({fromPublicKey:i,programId:e=Yo}){let t=Qo.generate().publicKey.toBase58().slice(0,32);return{publicKey:Zo(i,t,e),seed:t}}function Zo(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=Oi(n);return new zo(r)}import{TOKEN_PROGRAM_ID as zn,TOKEN_2022_PROGRAM_ID as Xn}from"@solana/spl-token";import{PublicKey as Re,TransactionInstruction as Qn,SystemProgram as tr}from"@solana/web3.js";import Hn from"bn.js";import{PublicKey as ef}from"@solana/web3.js";import Xe from"bn.js";var ue=new Xe(0),Ie=new Xe(1),Ye=new Xe(-1),Se=new Xe(1).shln(64),jt=new Xe(1).shln(128),Rn=Se.sub(Ie),Ct=64,Ei=jt.subn(1),Ae=-443636,Pe=-Ae,Ze=new Xe("4295048016"),je=new Xe("79226673521066979257578248091"),Fi=16,Wi="59543866431248",vi="184467440737095516",Vi="15793534762490258745",Jt=new Xe(10).pow(new Xe(6));var hd=new Xe("18446744073700000000");import D from"bn.js";function $t(i){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,i,!1),new Uint8Array(e)}function Mn(i,e){let t=0;for(let n=i-1;n>=0&&!e.testn(n);n--)t++;return t}function On(i,e){let t=0;for(let n=0;n<i&&!e.testn(n);n++)t++;return t}function Nt(i,e){for(let t=0;t<i;t++)if(e.testn(t))return!1;return!0}function Di(i,e){return Nt(i,e)?null:Mn(i,e)}function _i(i,e){return Nt(i,e)?null:On(i,e)}var Sd=Buffer.from("amm_config","utf8"),Jo=Buffer.from("pool","utf8"),$o=Buffer.from("pool_vault","utf8"),es=Buffer.from("pool_reward_vault","utf8"),qi=Buffer.from("position","utf8"),ts=Buffer.from("tick_array","utf8"),ns=Buffer.from("operation","utf8"),is=Buffer.from("pool_tick_array_bitmap_extension","utf8");function Gi(i,e,t,n){return Ce([Jo,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function En(i,e,t){return Ce([$o,e.toBuffer(),t.toBuffer()],i)}function Ui(i,e,t){return Ce([es,e.toBuffer(),t.toBuffer()],i)}function Z(i,e,t){return Ce([ts,e.toBuffer(),$t(t)],i)}function mt(i,e,t,n){return Ce([qi,e.toBuffer(),$t(t),$t(n)],i)}function ve(i,e){return Ce([qi,e.toBuffer()],i)}function en(i){return Ce([Buffer.from("metadata","utf8"),kt.toBuffer(),i.toBuffer()],kt)}function tn(i){return Ce([ns],i)}function Le(i,e){return Ce([is,e.toBuffer()],i)}import{PublicKey as $e}from"@solana/web3.js";import se from"bn.js";import ls from"bn.js";var Fn=14,Je=class{static maxTickInTickarrayBitmap(e){return e*me*dt}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(!G.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=r?t-G.tickCount(n):t+G.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*me,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=Di(1024,l);if(m!==null){let p=(c-m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=_i(1024,l);if(m!==null){let p=(c+m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:o-G.tickCount(n)}}}},Lt=class{static getBitmapOffset(e,t){if(!G.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Je.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=Je.maxTickInTickarrayBitmap(e),n=-t;if(Pe<=t)throw Error(`extensionTickBoundary check error: ${Pe}, ${t}`);if(n<=Ae)throw Error(`extensionTickBoundary check error: ${n}, ${Ae}`);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:S.mergeTickArrayBitmap(r).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let o=G.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}=Je.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let u=S.mergeTickArrayBitmap(e).shln(dt-1-a),c=Nt(512,u)?null:Mn(512,u);if(c!==null){let l=t-c*G.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=S.mergeTickArrayBitmap(e).shrn(a),c=Nt(512,u)?null:On(512,u);if(c!==null){let l=t+c*G.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-G.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Je.maxTickInTickarrayBitmap(t),r=Math.floor(n/G.tickCount(t));return e<0&&n!=0&&(r=dt-r),r}};var Wd=F([Ne(8),q("bump"),At("index"),R(""),Qe("protocolFeeRate"),Qe("tradeFeeRate"),At("tickSpacing"),$(g(),8,"")]),rs=F([Qe("blockTimestamp"),O("sqrtPriceX64"),O("cumulativeTimePriceX64"),$(O(),1,"")]),Wn=F([Ne(8),Ue("initialized"),R("poolId"),$(rs,1e3,"observations"),$(O(),5,"")]),os=F([q("rewardState"),g("openTime"),g("endTime"),g("lastUpdateTime"),O("emissionsPerSecondX64"),g("rewardTotalEmissioned"),g("rewardClaimed"),R("tokenMint"),R("tokenVault"),R("creator"),O("rewardGrowthGlobalX64")]),vn=F([Ne(8),q("bump"),R("ammConfig"),R("creator"),R("mintA"),R("mintB"),R("vaultA"),R("vaultB"),R("observationId"),q("mintDecimalsA"),q("mintDecimalsB"),At("tickSpacing"),O("liquidity"),O("sqrtPriceX64"),ye("tickCurrent"),At("observationIndex"),At("observationUpdateDuration"),O("feeGrowthGlobalX64A"),O("feeGrowthGlobalX64B"),g("protocolFeesTokenA"),g("protocolFeesTokenB"),O("swapInAmountTokenA"),O("swapOutAmountTokenB"),O("swapInAmountTokenB"),O("swapOutAmountTokenA"),q("status"),$(q(),7,""),$(os,3,"rewardInfos"),$(g(),16,"tickArrayBitmap"),g("totalFeesTokenA"),g("totalFeesClaimedTokenA"),g("totalFeesTokenB"),g("totalFeesClaimedTokenB"),g("fundFeesTokenA"),g("fundFeesTokenB"),g("startTime"),$(g(),15*4-3,"padding")]),ss=F([O("growthInsideLastX64"),g("rewardAmountOwed")]),Vn=F([Ne(8),q("bump"),R("nftMint"),R("poolId"),ye("tickLower"),ye("tickUpper"),O("liquidity"),O("feeGrowthInsideLastX64A"),O("feeGrowthInsideLastX64B"),g("tokenFeesOwedA"),g("tokenFeesOwedB"),$(ss,3,"rewardInfos"),$(g(),8,"")]),vd=F([Ne(8),q("bump"),R("poolId"),ye("tickLowerIndex"),ye("tickUpperIndex"),O("liquidity"),O("feeGrowthInsideLastX64A"),O("feeGrowthInsideLastX64B"),g("tokenFeesOwedA"),g("tokenFeesOwedB"),$(O(),3,"rewardGrowthInside"),$(g(),8,"")]),as=F([ye("tick"),Ki("liquidityNet"),O("liquidityGross"),O("feeGrowthOutsideX64A"),O("feeGrowthOutsideX64B"),$(O(),3,"rewardGrowthsOutsideX64"),$(Qe(),13,"")]),Rt=F([Ne(8),R("poolId"),ye("startTickIndex"),$(as,me,"ticks"),q("initializedTickCount"),$(q(),115,"")]),us=F([Ne(329),$(R(),100,"whitelistMints")]),Xi=F([Ne(8),R("poolId"),$($(g(),8),Fn,"positiveTickArrayBitmap"),$($(g(),8),Fn,"negativeTickArrayBitmap")]);var cs=15,G=class{static async getTickArrays(e,t,n,r,o,s,a){let u=[],c=S.getTickArrayStartIndexByTick(r,o),l=S.getInitializedTickArrayInRange(s,a,o,c,Math.floor(cs/2));for(let d=0;d<l.length;d++){let{publicKey:b}=Z(t,n,l[d]);u.push(b)}let m=(await ct(e,u)).map(d=>d!==null?Rt.decode(d.data):null),p={};for(let d=0;d<u.length;d++){let b=m[d];b!==null&&(p[b.startTickIndex]=te(Y({},b),{address:u[d]}))}return p}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=S.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:p,tickArrayStartTickIndex:d}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,p,d]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,r,o){let s=Math.floor(e/G.tickCount(t)),a=n?S.searchLowBitFromStart(r,o,s-1,1,t):S.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=me-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<me;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=Z(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,o,s){let a=S.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 p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u-1}else for(u=u+1;u<me;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u+1}let{publicKey:m}=Z(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(S.checkIsOutOfBoundary(e)){if(e>Pe)return!1;let n=S.getTickArrayStartIndexByTick(Ae,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return me*e}};var me=60,dt=512,S=class{static getTickArrayAddressByTick(e,t,n,r){let o=S.getTickArrayStartIndexByTick(n,r),{publicKey:s}=Z(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=S.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=me)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=G.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)*G.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*me,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*me,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*me:e+t*me}static mergeTickArrayBitmap(e){let t=new ls(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*me));return[...S.searchLowBitFromStart(e,t,s-1,o,n),...S.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return S.searchHightBitFromStart(e,t,0,dt,n)}static getAllInitializedTickArrayInfo(e,t,n,r,o){let s=[],a=S.getAllInitializedTickArrayStartIndex(n,r,o);for(let u of a){let{publicKey:c}=Z(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=>S.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=G.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=>S.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=G.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<Ae||e>Pe}static nextInitTick(e,t,n,r,o){if(G.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<me;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=me-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<me;){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=W.getSqrtPriceX64FromTick(t),o=W.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new N(1).div(t),o=pt.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=W.getSqrtPriceX64FromTick(o),a=W.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new N(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=W.getSqrtPriceX64FromTick(t),o=W.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:r}:{tick:t,price:new N(1).div(o),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new N(1).div(t),o=pt.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=W.getSqrtPriceX64FromTick(o),a=W.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new N(1).div(a)}}};import He from"bn.js";var Mt=class{static getfeeGrowthInside(e,t,n){let r=new He(0),o=new He(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 He(0),a=new He(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=v.wrappingSubU128(v.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),c=v.wrappingSubU128(v.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=v.mulDivFloor(v.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Se),u=t.tokenFeesOwedA.add(a),c=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Se),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=v.mulDivFloor(v.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,Se),u=t.tokenFeesOwedA.add(a),c=v.mulDivFloor(v.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,Se),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=v.wrappingSubU128(u,c.growthInsideLastX64),m=v.mulDivFloor(l,t.liquidity,Se),p=c.rewardAmountOwed.add(m);o.push(p)}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=v.wrappingSubU128(u,c.growthInsideLastX64),m=v.mulDivFloor(l,t.liquidity,Se),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static getRewardGrowthInside(e,t,n,r){let o=[];for(let s=0;s<r.length;s++){let a=new He(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 He(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.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 He(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 He(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push(v.wrappingSubU128(v.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:o,epochInfo:s}){var y,k,h,A;let a=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),u=W.getSqrtPriceX64FromTick(t.tickLower),c=W.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+r:1-r,m=U.getAmountsFromLiquidity(a,u,c,n,o),[p,d]=[le(m.amountA,(y=e.mintA.extensions)==null?void 0:y.feeConfig,s,!0),le(m.amountB,(k=e.mintB.extensions)==null?void 0:k.feeConfig,s,!0)],[b,f]=[le(new He(new N(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),le(new He(new N(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:p,amountB:d,amountSlippageA:b,amountSlippageB:f,expirationTime:lt(p.expirationTime,d.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Hi}from"@solana/spl-token";var he=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:p,sqrtPriceX64:d,feeAmount:b}=ft.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(...p),{expectedAmountOut:m.mul(Ye),remainingAccounts:a,executionPrice:d,feeAmount:b}}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:y}=Z(e.programId,e.id,f.nextStartIndex);a.push(y)}}catch{}a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:b}=ft.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(Ye),c,o);return a.push(...p),{expectedAmountIn:m,remainingAccounts:a,executionPrice:d,feeAmount:b}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=he.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Lt.checkTickArrayIsInit(G.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):S.checkTickArrayIsInitialized(S.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=Z(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,G.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=Z(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/G.tickCount(e.tickSpacing)),r=t?S.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):S.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=G.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:o}=Je.nextInitializedTickArrayStartIndex(S.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=Lt.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<Ae||t>Pe)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],p=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(p===void 0)throw Error("get new reward mint info error");let d=te(Y({},m),{perSecond:v.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new $e(p)});if(d.tokenMint.equals($e.default))continue;if(n<=d.openTime.toNumber()||r.eq(ue)){s.push(d);continue}let b=new se(Math.min(d.endTime.toNumber(),n)),f=b.sub(d.lastUpdateTime),y=v.mulDivFloor(f,d.emissionsPerSecondX64,r),k=d.rewardGrowthGlobalX64.add(y),h=v.mulDivFloor(f,d.emissionsPerSecondX64,Se),A=d.rewardTotalEmissioned.add(h);s.push(te(Y({},d),{rewardGrowthGlobalX64:k,rewardTotalEmissioned:A,lastUpdateTime:b}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let o of t){let s=S.getTickArrayStartIndexByTick(o,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=Je.maxTickInTickarrayBitmap(e),n=-t;return t>Pe&&(t=G.getArrayStartIndex(Pe,e)+G.tickCount(e)),n<Ae&&(n=G.getArrayStartIndex(Ae,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!G.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/G.tickCount(t)*dt}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await Pn(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of r)s.accountInfo!==null&&(o[s.pubkey.toString()]=Xi.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=S.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=S.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:p}=Z(u.programId,u.id,m);o.push({pubkey:p}),r[p.toString()]=u.id}}let s=await Pn(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=Rt.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=te(Y({},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(p=>p.accountInfo.mint),c=[];for(let p of u)for(let d of s)c.push(ve(d,p).publicKey);let l=await ct(t,c,{batchRequest:r}),m={};for(let p of l){if(p===null)continue;let d=Vn.decode(p.data),b=d.poolId.toString(),f=e.find(_=>_.state.id.toBase58()===b);if(f===void 0)continue;let y=f.state,k=S._getTickPriceLegacy({poolInfo:y,tick:d.tickLower,baseIn:!0}),h=S._getTickPriceLegacy({poolInfo:y,tick:d.tickUpper,baseIn:!0}),{amountA:A,amountB:x}=U.getAmountsFromLiquidity(y.sqrtPriceX64,k.tickSqrtPriceX64,h.tickSqrtPriceX64,d.liquidity,!1),P=1/(1-Math.sqrt(Math.sqrt(k.price.div(h.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:d.poolId,nftMint:d.nftMint,priceLower:k.price,priceUpper:h.price,amountA:A,amountB:x,tickLower:d.tickLower,tickUpper:d.tickUpper,liquidity:d.liquidity,feeGrowthInsideLastX64A:d.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:d.feeGrowthInsideLastX64B,tokenFeesOwedA:d.tokenFeesOwedA,tokenFeesOwedB:d.tokenFeesOwedB,rewardInfos:d.rewardInfos.map(_=>te(Y({},_),{pendingReward:new se(0)})),leverage:P,tokenFeeAmountA:new se(0),tokenFeeAmountB:new se(0)}];let L=await S.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickLower,f.state.tickSpacing),E=await S.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickLower}`]=L,m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickUpper}`]=E}if(o){let p=Object.values(m),d=await ct(t,p,{batchRequest:r}),b={};for(let f=0;f<p.length;f++){let y=d[f];if(y===null)continue;let k=p[f].toString();b[k]=Rt.decode(y.data)}for(let{state:f,positionAccount:y}of e)if(!!y)for(let k of y){let h=`${f.programId.toString()}-${f.id.toString()}-${k.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${k.tickUpper}`,x=b[m[h].toString()],P=b[m[A].toString()],L=x.ticks[S.getTickOffsetInArray(k.tickLower,f.tickSpacing)],E=P.ticks[S.getTickOffsetInArray(k.tickUpper,f.tickSpacing)],{tokenFeeAmountA:_,tokenFeeAmountB:ee}=await Mt.GetPositionFees(f,k,L,E),X=await Mt.GetPositionRewards(f,k,L,E);k.tokenFeeAmountA=_.gte(new se(0))?_:new se(0),k.tokenFeeAmountB=ee.gte(new se(0))?ee:new se(0);for(let j=0;j<X.length;j++)k.rewardInfos[j].pendingReward=X[j].gte(new se(0))?X[j]:new se(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:o,slippage:s,priceLimit:a=new N(0)}){var X;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 N(0))?u=c?Ze.add(new se(1)):je.sub(new se(1)):u=W.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=le(o,l,r,!1),{expectedAmountOut:d,remainingAccounts:b,executionPrice:f,feeAmount:y}=he.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((X=p.fee)!=null?X:ue),u),k=le(d,m,r,!1),h=W.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?h:new N(1).div(h),x=d.mul(new se(Math.floor((1-s)*1e10))).div(new se(1e10)),P=le(x,m,r,!1),L=c?e.currentPrice:new N(1).div(e.currentPrice),E=new N(A).sub(L).abs(),_=L,ee=new ot(new N(E).mul(10**15).toFixed(0),new N(_).mul(10**15).toFixed(0));return{realAmountIn:p,amountOut:k,minAmountOut:P,expirationTime:lt(p.expirationTime,k.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:ee,fee:y,remainingAccounts:b}}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 qe(te(Y({},u),{mint:u.address,isToken2022:u.programId===Hi.toBase58()})),new qe(te(Y({},c),{mint:c.address,isToken2022:c.programId===Hi.toBase58()}))],{realAmountIn:p,amountOut:d,minAmountOut:b,expirationTime:f,currentPrice:y,executionPrice:k,priceImpact:h,fee:A,remainingAccounts:x}=await he.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new $e(u.address),amountIn:n,slippage:o,epochInfo:s}),P=te(Y({},p),{amount:new be(l,p.amount),fee:p.fee===void 0?void 0:new be(l,p.fee)}),L=te(Y({},d),{amount:new be(m,d.amount),fee:d.fee===void 0?void 0:new be(m,d.fee)}),E=te(Y({},b),{amount:new be(m,b.amount),fee:b.fee===void 0?void 0:new be(m,b.fee)}),_=new Ke({baseToken:l,denominator:new se(10).pow(new se(20+l.decimals)),quoteToken:m,numerator:y.mul(new N(10**(20+m.decimals))).toFixed(0)}),ee=new Ke({baseToken:l,denominator:new se(10).pow(new se(20+l.decimals)),quoteToken:m,numerator:k.mul(new N(10**(20+m.decimals))).toFixed(0)}),X=new be(l,A);return{realAmountIn:P,amountOut:L,minAmountOut:E,expirationTime:f,currentPrice:_,executionPrice:ee,priceImpact:h,fee:X,remainingAccounts:x}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var b,f,y;let o=e[t],s=S.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=S.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,p=o.priceMax-o.priceMin,d;return l<=0?d=0:m===l?d=p/l:p===l?d=l/m:d=l/p*(l/m),{feeApr:o.feeApr*d,rewardsApr:[(b=o.rewardApr[0])!=null?b:0*d,(f=o.rewardApr[1])!=null?f:0*d,(y=o.rewardApr[2])!=null?y:0*d],apr:o.apr*d}}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[dn(e.mintA.address).toString()],p=r[dn(e.mintB.address).toString()],d=e.mintA.decimals,b=e.mintB.decimals;if(!l||!m||!p)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),y=W.getSqrtPriceX64FromTick(s),k=W.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:A}=U.getAmountsFromLiquidityWithSlippage(f,y,k,t,!1,!1,0),{amountSlippageA:x,amountSlippageB:P}=U.getAmountsFromLiquidityWithSlippage(f,y,k,o,!1,!1,0),L=new N(h.toString()).div(new N(10).pow(d)).mul(m.value).add(new N(A.toString()).div(new N(10).pow(b)).mul(p.value)),E=new N(x.toString()).div(new N(10).pow(d)).mul(m.value).add(new N(P.toString()).div(new N(10).pow(b)).mul(p.value)),_=E.div(L.add(E)).div(E),X=new N(l.volumeFee).mul(365).div(c).mul(_).mul(100).toNumber(),j=3600*24*365,Me=e.rewardDefaultInfos.map(pe=>{var Q,Yn;let Te=pe.mint.decimals,re=r[pe.mint.address];return u<((Q=pe.startTime)!=null?Q:0)||u>((Yn=pe.endTime)!=null?Yn:0)||!pe.perSecond||!re||Te===void 0?0:new N(re.value).mul(new N(pe.perSecond).mul(j)).div(new N(10).pow(Te)).mul(_).mul(100).toNumber()});return{feeApr:X,rewardsApr:Me,apr:X+Me.reduce((pe,Te)=>pe+Te,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var k,h;let l=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),m=W.getSqrtPriceX64FromTick(n),p=W.getSqrtPriceX64FromTick(r),d=a?1-s:1+s,b=le(o,(k=e[t?"mintA":"mintB"].extensions)==null?void 0:k.feeConfig,u,!c),f=new se(new N(b.amount.sub((h=b.fee)!=null?h:ue).toString()).mul(d).toFixed(0)),y;if(l.lte(m))y=t?U.getLiquidityFromTokenAmountA(m,p,f,!a):new se(0);else if(l.lte(p)){let A=U.getLiquidityFromTokenAmountA(l,p,f,!a),x=U.getLiquidityFromTokenAmountB(m,l,f);y=t?A:x}else y=t?new se(0):U.getLiquidityFromTokenAmountB(m,p,f);return he.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:r,liquidity:y,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:o,slippage:s,add:a}){var y,k,h,A;let u=W.getSqrtPriceX64FromTick(n),c=W.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=U.getAmountsFromLiquidity(W.priceToSqrtPriceX64(new N(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[p,d]=[le(m.amountA,(y=t.mintA.extensions)==null?void 0:y.feeConfig,e,!0),le(m.amountB,(k=t.mintB.extensions)==null?void 0:k.feeConfig,e,!0)],[b,f]=[le(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),le(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:p,amountB:d,amountSlippageA:b,amountSlippageB:f,expirationTime:lt(p.expirationTime,d.expirationTime)}}static async fetchComputeClmmInfo({connection:e,poolInfo:t}){let n=await e.getAccountInfo(new $e(t.id));if(!n)throw new Error(`pool not found ${t.id}`);let r=vn.decode(n.data),o=Le(new $e(t.programId),new $e(t.id)).publicKey,s=await he.fetchExBitmaps({connection:e,exBitmapAddress:[o],batchRequest:!1});return te(Y({},r),{id:new $e(t.id),programId:new $e(t.programId),mintA:t.mintA,mintB:t.mintB,ammConfig:te(Y({},t.config),{id:new $e(t.config.id),fundOwner:""}),currentPrice:new N(t.price),exBitmapInfo:s[o.toBase58()],startTime:r.startTime.toNumber()})}};var v=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),o=r.div(n);return r.mod(n).eq(ue)||(o=o.add(Ie)),o}static mulDivFloor(e,t,n){if(n.eq(ue))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(ue))throw new Error("division by 0");return e.mul(t).add(n.sub(Ie)).div(n)}static x64ToDecimal(e,t){return new N(e.toString()).div(N.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new D(e.mul(N.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(jt).sub(t).mod(jt)}};function de(i,e){return Dn(i.mul(e),64,256)}function ms(i,e,t){let n=i.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Dn(i,e,t){let n=i.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var W=class{static sqrtPriceX64ToPrice(e,t,n){return v.x64ToDecimal(e).pow(2).mul(N.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return v.decimalToX64(e.mul(N.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(ue))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ue))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(ue))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ue))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(ue))return e;let o=t.shln(Ct);if(r){let s=o,a=o.add(n.mul(e));return a.gte(s)?v.mulDivCeil(s,e,a):v.mulDivRoundingUp(s,Ie,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 v.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let o=n.shln(Ct);if(r)return e.add(o.div(t));{let s=v.mulDivRoundingUp(o,Ie,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<Ae||e>Pe)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new D("18445821805675395072"):new D("18446744073709551616");return(t&2)!=0&&(n=de(n,new D("18444899583751176192"))),(t&4)!=0&&(n=de(n,new D("18443055278223355904"))),(t&8)!=0&&(n=de(n,new D("18439367220385607680"))),(t&16)!=0&&(n=de(n,new D("18431993317065453568"))),(t&32)!=0&&(n=de(n,new D("18417254355718170624"))),(t&64)!=0&&(n=de(n,new D("18387811781193609216"))),(t&128)!=0&&(n=de(n,new D("18329067761203558400"))),(t&256)!=0&&(n=de(n,new D("18212142134806163456"))),(t&512)!=0&&(n=de(n,new D("17980523815641700352"))),(t&1024)!=0&&(n=de(n,new D("17526086738831433728"))),(t&2048)!=0&&(n=de(n,new D("16651378430235570176"))),(t&4096)!=0&&(n=de(n,new D("15030750278694412288"))),(t&8192)!=0&&(n=de(n,new D("12247334978884435968"))),(t&16384)!=0&&(n=de(n,new D("8131365268886854656"))),(t&32768)!=0&&(n=de(n,new D("3584323654725218816"))),(t&65536)!=0&&(n=de(n,new D("696457651848324352"))),(t&131072)!=0&&(n=de(n,new D("26294789957507116"))),(t&262144)!=0&&(n=de(n,new D("37481735321082"))),e>0&&(n=Ei.div(n)),n}static getTickFromPrice(e,t,n){return W.getTickFromSqrtPriceX64(W.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(je)||e.lt(Ze))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new D(t-64),r=ms(n,32,128),o=new D("8000000000000000","hex"),s=0,a=new D(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new D(0))&&s<Fi;){u=u.mul(u);let b=u.shrn(127);u=u.shrn(63+b.toNumber()),a=a.add(o.mul(b)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=r.add(c).mul(new D(Wi)),p=Dn(m.sub(new D(vi)),64,128).toNumber(),d=Dn(m.add(new D(Vi)),64,128).toNumber();return p==d?p:W.getSqrtPriceX64FromTick(d).lte(e)?d:p}},pt=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=W.getTickFromSqrtPriceX64(W.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=pt.getTickWithPriceAndTickspacing(e,t,n,r),s=W.getSqrtPriceX64FromTick(o);return W.sqrtPriceX64ToPrice(s,n,r)}},U=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(ue))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(Ct),s=t.sub(e);return r?v.mulDivRoundingUp(v.mulDivCeil(o,s,t),Ie,e):v.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(ue))throw new Error("sqrtPriceX64A must greater than 0");return r?v.mulDivCeil(n,t.sub(e),Se):v.mulDivFloor(n,t.sub(e),Se)}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?v.mulDivRoundingUp(a,Ie,Rn):a.shrn(Ct)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),v.mulDivFloor(n,Rn,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return U.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=U.getLiquidityFromTokenAmountA(e,n,r,!1),a=U.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return U.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,r,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:U.getTokenAmountAFromLiquidity(t,n,r,o),amountB:new D(0)};if(e.lt(n)){let s=U.getTokenAmountAFromLiquidity(e,n,r,o),a=U.getTokenAmountBFromLiquidity(t,e,r,o);return{amountA:s,amountB:a}}else return{amountA:new D(0),amountB:U.getTokenAmountBFromLiquidity(t,n,r,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,o,s,a){let{amountA:u,amountB:c}=U.getAmountsFromLiquidity(e,t,n,r,s),l=o?1+a:1-a,m=new D(new N(u.toString()).mul(l).toFixed(0)),p=new D(new N(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:p}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var h,A,x,P;let c=W.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),l=W.getSqrtPriceX64FromTick(t),m=W.getSqrtPriceX64FromTick(n),p=s?1+o:1-o,d=U.getAmountsFromLiquidity(c,l,m,r,s),[b,f]=[le(d.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),le(d.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[y,k]=[le(new D(new N(d.amountA.toString()).mul(p).toFixed(0)),(x=e.mintA.extensions)==null?void 0:x.feeConfig,a,u),le(new D(new N(d.amountB.toString()).mul(p).toFixed(0)),(P=e.mintB.extensions)==null?void 0:P.feeConfig,a,u)];return{liquidity:r,amountA:b,amountB:f,amountSlippageA:y,amountSlippageB:k,expirationTime:lt(b.expirationTime,f.expirationTime)}}},ft=class{static swapCompute(e,t,n,r,o,s,a,u,c,l,m,p,d,b){if(p.eq(ue))throw new Error("amountSpecified must not be 0");if(b||(b=s?Ze.add(Ie):je.sub(Ie)),s){if(b.lt(Ze))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(b.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(b.gt(je))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(b.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=p.gt(ue),y={amountSpecifiedRemaining:p,amountCalculated:ue,sqrtPriceX64:m,tick:c>d?Math.min(d+G.tickCount(l)-1,c):d,accounts:[],liquidity:u,feeAmount:new D(0)},k=d,h=n[d],A=0,x=!s&&h.startTickIndex===y.tick;for(;!y.amountSpecifiedRemaining.eq(ue)&&!y.sqrtPriceX64.eq(b);){if(A>10)throw Error("liquidity limit");let P={};P.sqrtPriceStartX64=y.sqrtPriceX64;let L=S.nextInitTick(h,y.tick,l,s,x),E=L||null,_=null;if(!(E!=null&&E.liquidityGross.gtn(0))){let X=he.nextInitializedTickArrayStartIndex({tickCurrent:y.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:o},k,s);if(!X.isExist)throw Error("swapCompute LiquidityInsufficient");k=X.nextStartIndex;let{publicKey:j}=Z(e,t,k);_=j,h=n[k],E=S.firstInitializedTick(h,s)}P.tickNext=E.tick,P.initialized=E.liquidityGross.gtn(0),d!==k&&_&&(y.accounts.push(_),d=k),P.tickNext<Ae?P.tickNext=Ae:P.tickNext>Pe&&(P.tickNext=Pe),P.sqrtPriceNextX64=W.getSqrtPriceX64FromTick(P.tickNext);let ee;if(s&&P.sqrtPriceNextX64.lt(b)||!s&&P.sqrtPriceNextX64.gt(b)?ee=b:ee=P.sqrtPriceNextX64,[y.sqrtPriceX64,P.amountIn,P.amountOut,P.feeAmount]=ft.swapStepCompute(y.sqrtPriceX64,ee,y.liquidity,y.amountSpecifiedRemaining,a),y.feeAmount=y.feeAmount.add(P.feeAmount),f?(y.amountSpecifiedRemaining=y.amountSpecifiedRemaining.sub(P.amountIn.add(P.feeAmount)),y.amountCalculated=y.amountCalculated.sub(P.amountOut)):(y.amountSpecifiedRemaining=y.amountSpecifiedRemaining.add(P.amountOut),y.amountCalculated=y.amountCalculated.add(P.amountIn.add(P.feeAmount))),y.sqrtPriceX64.eq(P.sqrtPriceNextX64)){if(P.initialized){let X=E.liquidityNet;s&&(X=X.mul(Ye)),y.liquidity=U.addDelta(y.liquidity,X)}x=P.tickNext!=y.tick&&!s&&h.startTickIndex===P.tickNext,y.tick=s?P.tickNext-1:P.tickNext}else if(y.sqrtPriceX64!=P.sqrtPriceStartX64){let X=W.getTickFromSqrtPriceX64(y.sqrtPriceX64);x=X!=y.tick&&!s&&h.startTickIndex===X,y.tick=X}++A}try{let{nextStartIndex:P,isExist:L}=G.nextInitializedTickArray(y.tick,l,s,r,o);L&&d!==P&&(y.accounts.push(Z(e,t,P).publicKey),d=P)}catch{}return{amountCalculated:y.amountCalculated,feeAmount:y.feeAmount,sqrtPriceX64:y.sqrtPriceX64,liquidity:y.liquidity,tickCurrent:y.tick,accounts:y.accounts}}static swapStepCompute(e,t,n,r,o){let s={sqrtPriceX64Next:new D(0),amountIn:new D(0),amountOut:new D(0),feeAmount:new D(0)},a=e.gte(t),u=r.gte(ue);if(u){let l=v.mulDivFloor(r,Jt.sub(new D(o.toString())),Jt);s.amountIn=a?U.getTokenAmountAFromLiquidity(t,e,n,!0):U.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=W.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?U.getTokenAmountBFromLiquidity(t,e,n,!1):U.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Ye).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=W.getNextSqrtPriceX64FromOutput(e,n,r.mul(Ye),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=U.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=U.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:U.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:U.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(r.mul(Ye))&&(s.amountOut=r.mul(Ye)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=v.mulDivCeil(s.amountIn,new D(o),Jt.sub(new D(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};import{TOKEN_PROGRAM_ID as ge,TOKEN_2022_PROGRAM_ID as ut,ASSOCIATED_TOKEN_PROGRAM_ID as zi}from"@solana/spl-token";import{PublicKey as T,TransactionInstruction as Ve,SystemProgram as ht,Keypair as _n}from"@solana/web3.js";import Qi from"bn.js";var Yi=ae("Raydium_Clmm"),De={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]},Ot=class{static createPoolInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b){let f=F([O("sqrtPriceX64"),g("startTime")]),y=[{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:p,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:ht.programId,isSigner:!1,isWritable:!1},{pubkey:wt,isSigner:!1,isWritable:!1}],k=Buffer.alloc(f.span);f.encode({sqrtPriceX64:d,startTime:b},k);let h=Buffer.from([...De.createPool,...k]);return new Ve({keys:y,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=Ln({fromPublicKey:r,programId:n}),[p,d]=[new T(o.address),new T(s.address)],b=[ht.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Wn.span),space:Wn.span,programId:n})],{publicKey:f}=Gi(n,a,p,d),{publicKey:y}=En(n,f,p),{publicKey:k}=En(n,f,d);return b.push(this.createPoolInstruction(n,f,r,a,m.publicKey,p,y,new T(o.programId||ge),d,k,new T(s.programId||ge),Le(n,f).publicKey,u,c)),{signers:[],instructions:b,instructionTypes:[oe.CreateAccount,oe.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:y,mintBVault:k},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k,h,A,x,P,L,E,_,ee,X){let j=F([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),O("liquidity"),g("amountMaxA"),g("amountMaxB"),Ue("withMetadata"),q("optionBaseFlag"),Ue("baseFlag")]),Me=[...X?[{pubkey:X,isSigner:!1,isWritable:!0}]:[]],pe=[{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:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:ht.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:zi,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},...Me],Te=Buffer.alloc(j.span);j.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:x,tickArrayUpperStartIndex:P,liquidity:L,amountMaxA:E,amountMaxB:_,withMetadata:ee==="create",baseFlag:!1,optionBaseFlag:0},Te);let re=Buffer.from([...De.openPosition,...Te]);return new Ve({keys:pe,programId:e,data:re})}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=[],[p,d]=[new T(e.programId),new T(e.id)],b;if(l)b=new T((await l(1))[0]);else{let _=_n.generate();m.push(_),b=_.publicKey}let f=S.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=S.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Z(p,d,f),{publicKey:h}=Z(p,d,y),{publicKey:A}=Ge(n.wallet,b,ge),{publicKey:x}=en(b),{publicKey:P}=ve(p,b),{publicKey:L}=mt(p,d,r,o),E=this.openPositionFromLiquidityInstruction(p,n.feePayer,d,n.wallet,b,A,x,L,k,h,P,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),r,o,f,y,s,a,u,c);return{signers:m,instructions:[E],instructionTypes:[oe.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:k,tickArrayUpper:h,positionNftAccount:A,metadataAccount:x,personalPosition:P,protocolPosition:L}}}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=[],[p,d]=[new T(e.programId),new T(e.id)],b;if(l)b=new T((await l(1))[0]);else{let _=_n.generate();m.push(_),b=_.publicKey}let f=S.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=S.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Z(p,d,f),{publicKey:h}=Z(p,d,y),{publicKey:A}=Ge(n.wallet,b,ge),{publicKey:x}=en(b),{publicKey:P}=ve(p,b),{publicKey:L}=mt(p,d,r,o),E=this.openPositionFromBaseInstruction(p,n.feePayer,d,n.wallet,b,A,x,L,k,h,P,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),r,o,f,y,c,s,a,u,he.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?Le(p,d).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:k,tickArrayUpper:h,positionNftAccount:A,metadataAccount:x,personalPosition:P,protocolPosition:L},instructions:[E],signers:m,instructionTypes:[oe.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k,h,A,x,P,L,E,_,ee,X){let j=F([ye("tickLowerIndex"),ye("tickUpperIndex"),ye("tickArrayLowerStartIndex"),ye("tickArrayUpperStartIndex"),O("liquidity"),g("amountMaxA"),g("amountMaxB"),Ue("withMetadata"),q("optionBaseFlag"),Ue("baseFlag")]),Me=[...X?[{pubkey:X,isSigner:!1,isWritable:!0}]:[]],pe=[{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:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:ht.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:zi,isSigner:!1,isWritable:!1},{pubkey:kt,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},...Me],Te=Buffer.alloc(j.span);j.encode({tickLowerIndex:h,tickUpperIndex:A,tickArrayLowerStartIndex:x,tickArrayUpperStartIndex:P,liquidity:new Qi(0),amountMaxA:E==="MintA"?_:ee,amountMaxB:E==="MintA"?ee:_,withMetadata:L==="create",baseFlag:E==="MintA",optionBaseFlag:1},Te);let re=Buffer.from([...De.openPosition,...Te]);return new Ve({keys:pe,programId:e,data:re})}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,p=[];if(l)m=new T((await l(1))[0]);else{let _=_n.generate();p.push(_),m=_.publicKey}let[d,b]=[new T(e.programId),new T(e.id)],f=S.getTickArrayStartIndexByTick(r,e.config.tickSpacing),y=S.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:k}=Z(d,b,f),{publicKey:h}=Z(d,b,y),{publicKey:A}=Ge(n.wallet,m,ge),{publicKey:x}=en(m),{publicKey:P}=ve(d,m),{publicKey:L}=mt(d,b,r,o),E=this.openPositionFromLiquidityInstruction(d,n.wallet,b,n.wallet,m,A,x,L,k,h,P,n.tokenAccountA,n.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(t.mintA.address),new T(t.mintB.address),r,o,f,y,s,a,u,c,he.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,y])?Le(d,b).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:k,tickArrayUpper:h,positionNftAccount:A,metadataAccount:x,personalPosition:P,protocolPosition:L},instructions:[E],signers:p,instructionTypes:[oe.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,o){let s=F([]),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:ht.programId,isSigner:!1,isWritable:!1},{pubkey:ge,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...De.closePosition,...u]);return new Ve({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let o=new T(e.programId),{publicKey:s}=Ge(n.wallet,r.nftMint,ge),{publicKey:a}=ve(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:[oe.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k,h){let A=F([O("liquidity"),g("amountMaxA"),g("amountMaxB"),q("optionBaseFlag"),Ue("baseFlag")]),x=[...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:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...x],L=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:y,amountMaxB:k,optionBaseFlag:0,baseFlag:!1},L);let E=Buffer.from([...De.increaseLiquidity,...L]);return new Ve({keys:P,programId:e,data:E})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new T(e.programId),new T(e.id)],l=S.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=S.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Z(u,c,l),{publicKey:d}=Z(u,c,m),{publicKey:b}=Ge(r.wallet,n.nftMint,ge),{publicKey:f}=ve(u,n.nftMint),{publicKey:y}=mt(u,c,n.tickLower,n.tickUpper),k=this.increasePositionFromLiquidityInstruction(u,r.wallet,b,f,c,y,p,d,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),o,s,a,he.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Le(u,c).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:b,personalPosition:f,protocolPosition:y},signers:[],instructions:[k],instructionTypes:[oe.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 T(e.programId),new T(e.id)],l=S.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=S.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Z(u,c,l),{publicKey:d}=Z(u,c,m),{publicKey:b}=Ge(r.wallet,n.nftMint,ge),{publicKey:f}=ve(u,n.nftMint),{publicKey:y}=mt(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:b,personalPosition:f,protocolPosition:y},instructions:[this.increasePositionFromBaseInstruction(u,r.wallet,b,f,c,y,p,d,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),o,s,a,he.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?Le(u,c).publicKey:void 0)],signers:[],instructionTypes:[oe.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k,h){let A=F([O("liquidity"),g("amountMaxA"),g("amountMaxB"),q("optionBaseFlag"),Ue("baseFlag")]),x=[...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:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...x],L=Buffer.alloc(A.span);A.encode({liquidity:new Qi(0),amountMaxA:f==="MintA"?y:k,amountMaxB:f==="MintA"?k:y,baseFlag:f==="MintA",optionBaseFlag:1},L);let E=Buffer.from([...De.increaseLiquidity,...L]);return new Ve({keys:P,programId:e,data:E})}static decreaseLiquidityInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k,h,A){let x=F([O("liquidity"),g("amountMinA"),g("amountMinB")]),P=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(ee=>[{pubkey:ee.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:ee.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:ee.rewardMint,isSigner:!1,isWritable:!1}]).flat()],L=[{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:p,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...P],E=Buffer.alloc(x.span);x.encode({liquidity:y,amountMinA:k,amountMinB:h},E);let _=Buffer.from([...De.decreaseLiquidity,...E]);return new Ve({keys:L,programId:e,data:_})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new T(e.programId),new T(e.id)],m=S.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=S.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=Z(c,l,m),{publicKey:b}=Z(c,l,p),{publicKey:f}=Ge(r.wallet,n.nftMint,u),{publicKey:y}=ve(c,n.nftMint),{publicKey:k}=mt(c,l,n.tickLower,n.tickUpper),h=[];for(let x=0;x<e.rewardDefaultInfos.length;x++)h.push({poolRewardVault:new T(t.rewardInfos[x].vault),ownerRewardVault:r.rewardAccounts[x],rewardMint:new T(e.rewardDefaultInfos[x].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,r.wallet,f,y,l,k,d,b,r.tokenAccountA,r.tokenAccountB,new T(t.vault.A),new T(t.vault.B),new T(e.mintA.address),new T(e.mintB.address),h,o,s,a,he.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?Le(c,l).publicKey:void 0)),{address:{tickArrayLower:d,tickArrayUpper:b,positionNftAccount:f,personalPosition:y,protocolPosition:k},signers:[],instructions:A,instructionTypes:[oe.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,o,s,a,u,c,l,m,p,d,b,f,y,k){let h=F([g("amount"),g("otherAmountThreshold"),O("sqrtPriceLimitX64"),Ue("isBaseInput")]),A=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[],...m.map(E=>({pubkey:E,isSigner:!1,isWritable:!0}))],x=[{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:p,isSigner:!1,isWritable:!0},{pubkey:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:gt,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:d,otherAmountThreshold:b,sqrtPriceLimitX64:f,isBaseInput:y},P);let L=Buffer.from([...De.swap,...P]);return new Ve({keys:x,programId:e,data:L})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:o,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:u,remainingAccounts:c}){let[l,m]=[new T(e.programId),new T(e.id)],[p,d]=[new T(t.vault.A),new T(t.vault.B)],[b,f]=[new T(e.mintA.address),new T(e.mintB.address)],y=e.mintA.address===o.toString(),k=[this.swapInstruction(l,r.wallet,m,new T(e.config.id),y?r.tokenAccountA:r.tokenAccountB,y?r.tokenAccountB:r.tokenAccountA,y?p:d,y?d:p,y?b:f,y?f:b,c,n,s,a,u,!0,Le(l,m).publicKey)];return{signers:[],instructions:k,instructionTypes:[oe.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,p){let d=F([g("openTime"),g("endTime"),O("emissionsPerSecondX64")]),b=[{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:ht.programId,isSigner:!1,isWritable:!1},{pubkey:wt,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({openTime:ie(l),endTime:ie(m),emissionsPerSecondX64:p},f);let y=Buffer.from([...De.initReward,...f]);return new Ve({keys:b,programId:e,data:y})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new T(e.programId),new T(e.id)],a=Ui(o,s,r.mint).publicKey,u=tn(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new T(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:[oe.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,o,s,a,u,c,l,m,p){let d=F([q("rewardIndex"),O("emissionsPerSecondX64"),g("openTime"),g("endTime")]),b=[{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:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(d.span);d.encode({rewardIndex:c,emissionsPerSecondX64:p,openTime:ie(l),endTime:ie(m)},f);let y=Buffer.from([...De.setRewardEmissions,...f]);return new Ve({keys:b,programId:e,data:y})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[o,s]=[new T(e.programId),new T(e.id)],a,u,c;for(let p=0;p<e.rewardDefaultInfos.length;p++)e.rewardDefaultInfos[p].mint.address===r.mint.toString()&&(a=p,u=new T(t.rewardInfos[p].vault),c=new T(t.rewardInfos[p].mint.address));(a===void 0||u===void 0)&&Yi.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=tn(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new T(e.config.id),n.tokenAccount,u,c,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[oe.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,o,s,a){let u=F([q("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:ge,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...De.collectReward,...l]);return new Ve({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[o,s]=[new T(e.programId),new T(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,u=new T(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&Yi.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:[oe.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 T(e.programId),new T(e.id)],[m,p]=[new T(t.vault.A),new T(t.vault.B)],[d,b]=[new T(e.mintA.address),new T(e.mintB.address)],f=e.mintA.address===r.toString(),y=[this.swapInstruction(c,n.wallet,l,new T(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?p:m,f?m:p,f?d:b,f?b:d,u,m,o,s,a,!1)];return{signers:[],instructions:y,instructionTypes:[oe.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import yf from"bn.js";import{TOKEN_PROGRAM_ID as ji,ASSOCIATED_TOKEN_PROGRAM_ID as tb}from"@solana/spl-token";import{PublicKey as ib,TransactionInstruction as Ji,SystemProgram as rb,SYSVAR_RENT_PUBKEY as ob}from"@solana/web3.js";var qn=F([q("instruction"),g("amountIn"),g("minAmountOut")]),Gn=F([q("instruction"),g("maxAmountIn"),g("amountOut")]),Uf=F([q("instruction"),q("nonce")]),ds=F([q("instruction"),q("nonce"),g("startTime")]),Xf=F([g("status"),g("nonce"),g("maxOrder"),g("depth"),g("baseDecimal"),g("quoteDecimal"),g("state"),g("resetFlag"),g("minSize"),g("volMaxCutRatio"),g("amountWaveRatio"),g("baseLotSize"),g("quoteLotSize"),g("minPriceMultiplier"),g("maxPriceMultiplier"),g("systemDecimalValue"),g("minSeparateNumerator"),g("minSeparateDenominator"),g("tradeFeeNumerator"),g("tradeFeeDenominator"),g("pnlNumerator"),g("pnlDenominator"),g("swapFeeNumerator"),g("swapFeeDenominator"),g("baseNeedTakePnl"),g("quoteNeedTakePnl"),g("quoteTotalPnl"),g("baseTotalPnl"),g("poolOpenTime"),g("punishPcAmount"),g("punishCoinAmount"),g("orderbookToInitTime"),O("swapBaseInAmount"),O("swapQuoteOutAmount"),g("swapBase2QuoteFee"),O("swapQuoteInAmount"),O("swapBaseOutAmount"),g("swapQuote2BaseFee"),R("baseVault"),R("quoteVault"),R("baseMint"),R("quoteMint"),R("lpMint"),R("openOrders"),R("marketId"),R("marketProgramId"),R("targetOrders"),R("withdrawQueue"),R("lpVault"),R("owner"),g("lpReserve"),$(g(),3,"padding")]),Hf=F([g("accountType"),g("status"),g("nonce"),g("maxOrder"),g("depth"),g("baseDecimal"),g("quoteDecimal"),g("state"),g("resetFlag"),g("minSize"),g("volMaxCutRatio"),g("amountWaveRatio"),g("baseLotSize"),g("quoteLotSize"),g("minPriceMultiplier"),g("maxPriceMultiplier"),g("systemDecimalsValue"),g("abortTradeFactor"),g("priceTickMultiplier"),g("priceTick"),g("minSeparateNumerator"),g("minSeparateDenominator"),g("tradeFeeNumerator"),g("tradeFeeDenominator"),g("pnlNumerator"),g("pnlDenominator"),g("swapFeeNumerator"),g("swapFeeDenominator"),g("baseNeedTakePnl"),g("quoteNeedTakePnl"),g("quoteTotalPnl"),g("baseTotalPnl"),g("poolOpenTime"),g("punishPcAmount"),g("punishCoinAmount"),g("orderbookToInitTime"),O("swapBaseInAmount"),O("swapQuoteOutAmount"),O("swapQuoteInAmount"),O("swapBaseOutAmount"),g("swapQuote2BaseFee"),g("swapBase2QuoteFee"),R("baseVault"),R("quoteVault"),R("baseMint"),R("quoteMint"),R("lpMint"),R("modelDataAccount"),R("openOrders"),R("marketId"),R("marketProgramId"),R("targetOrders"),R("owner"),$(g(),64,"padding")]),ps=F([q("instruction"),g("baseAmountIn"),g("quoteAmountIn"),g("fixedSide")]),fs=F([q("instruction"),g("amountIn")]);var zf=F([g("fee")]);import{PublicKey as bs}from"@solana/web3.js";var Un=new bs("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ys=5e4,gs=F([g("x"),g("y"),g("price")]),Jf=F([g("accountType"),g("status"),g("multiplier"),g("validDataCount"),$(gs,ys,"DataElement")]);var Zi=ae("Raydium_liquidity_instruction");function ws({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n},r){let o=ke(i),s=Buffer.alloc(qn.span);qn.encode({instruction:9,amountIn:ie(t),minAmountOut:ie(n)},s);let a=[V({pubkey:ji,isWritable:!1}),V({pubkey:o.id}),V({pubkey:o.authority,isWritable:!1}),V({pubkey:o.openOrders})];return r===4&&a.push(V({pubkey:o.targetOrders})),a.push(V({pubkey:o.vault.A}),V({pubkey:o.vault.B})),r===5&&a.push(V({pubkey:Un})),a.push(V({pubkey:o.marketProgramId,isWritable:!1}),V({pubkey:o.marketId}),V({pubkey:o.marketBids}),V({pubkey:o.marketAsks}),V({pubkey:o.marketEventQueue}),V({pubkey:o.marketBaseVault}),V({pubkey:o.marketQuoteVault}),V({pubkey:o.marketAuthority,isWritable:!1}),V({pubkey:e.tokenAccountIn}),V({pubkey:e.tokenAccountOut}),V({pubkey:e.owner,isWritable:!1})),new Ji({programId:o.programId,keys:a,data:s})}function ks({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n},r){let o=ke(i),s=Buffer.alloc(Gn.span);Gn.encode({instruction:11,maxAmountIn:ie(t),amountOut:ie(n)},s);let a=[V({pubkey:ji,isWritable:!1}),V({pubkey:o.id}),V({pubkey:o.authority,isWritable:!1}),V({pubkey:o.openOrders}),V({pubkey:o.targetOrders}),V({pubkey:o.vault.A}),V({pubkey:o.vault.B})];return r===5&&a.push(V({pubkey:Un})),a.push(V({pubkey:o.marketProgramId,isWritable:!1}),V({pubkey:o.marketId}),V({pubkey:o.marketBids}),V({pubkey:o.marketAsks}),V({pubkey:o.marketEventQueue}),V({pubkey:o.marketBaseVault}),V({pubkey:o.marketQuoteVault}),V({pubkey:o.marketAuthority,isWritable:!1}),V({pubkey:e.tokenAccountIn}),V({pubkey:e.tokenAccountOut}),V({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Ji({programId:o.programId,keys:a,data:s})}function $i(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 ws(te(Y({},a),{amountIn:r,minAmountOut:o}),t);if(s==="out")return ks(te(Y({},a),{maxAmountIn:r,amountOut:o}),t);Zi.logWithError("invalid params","params",i)}throw Zi.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function Tb(i,e,t,n,r,o,s,a,u,c,l,m){let p=F([q("instruction"),g("amountIn"),g("amountOut")]),d=[{pubkey:tr.programId,isSigner:!1,isWritable:!1},{pubkey:zn,isSigner:!1,isWritable:!1},{pubkey:new Re(t.programId),isSigner:!1,isWritable:!1},{pubkey:new Re(t.id),isSigner:!1,isWritable:!0},{pubkey:new Re(n.id),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:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=ke(t);d.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=ke(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=ke(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let b=Buffer.alloc(p.span);return p.encode({instruction:4,amountIn:c,amountOut:l},b),new Qn({keys:d,programId:i,data:b})}function xb(i,e,t,n,r,o,s,a,u,c){let l=F([q("instruction")]),m=[{pubkey:tr.programId,isSigner:!1,isWritable:!1},{pubkey:zn,isSigner:!1,isWritable:!1},{pubkey:new Re(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new Re(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new Re(String(t.id)),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:!0,isWritable:!1}];if(e.type==="Concentrated"){let d=ke(n);m.push({pubkey:d.config.id,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.A:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.B:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},...c.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let d=ke(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0})}else{let d=ke(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},...d.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:d.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:d.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0}])}let p=Buffer.alloc(l.span);return l.encode({instruction:5},p),new Qn({keys:m,programId:i,data:p})}function er(i,e,t,n,r,o){if(i.pooltype.includes("StablePool")){let s=ke(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new Re("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(i.type==="Concentrated"){let s=i,a=ke(e),u=s.mintA.address===t;return[{pubkey:new Re(String(i.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:a.id,isSigner:!1,isWritable:!0},...a.mintA.programId.equals(Xn)||a.mintB.programId.equals(Xn)?[{pubkey:Xn,isSigner:!1,isWritable:!1},{pubkey:gt,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:Le(new Re(String(i.programId)),new Re(i.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=ke(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function As(i,e,t,n,r,o,s,a,u,c,l,m,p,d){let b=F([q("instruction"),g("amountIn"),g("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:zn,isSigner:!1,isWritable:!1}];f.push(...er(a,c,o,t,n,d[0])),f.push(...er(u,l,s,n,r,d[1]));let y=Buffer.alloc(b.span);return b.encode({instruction:8,amountIn:m,amountOut:p},y),new Qn({keys:f,programId:i,data:y})}async function Bb({routeProgram:i,ownerInfo:e,inputMint:t,swapInfo:n}){var r,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=ke(n.poolKey[0]),m=t.equals(l.mintA.address)?Ze.add(Ie):je.sub(Ie);return await Ot.makeSwapBaseInInstructions({poolInfo:l,poolKeys:l,observationId:l.vault.A,ownerInfo:{wallet:e.wallet,tokenAccountA:l.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:l.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(r=n.minAmountOut.fee)==null?void 0:r.raw)!=null?o:new Hn(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[$i({poolKeys:l,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((a=(s=n.minAmountOut.fee)==null?void 0:s.raw)!=null?a:new Hn(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?oe.AmmV5SwapBaseIn:oe.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let l=n.poolInfo[0],m=n.poolInfo[1],p=n.poolKey[0],d=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[As(i,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.minMiddleAmountFee.token.mint.toString(),l,m,p,d,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((c=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?c:new Hn(0)),n.remainingAccounts)],instructionTypes:[oe.RouteSwap],lookupTableAddress:[p.lookupTableAccount,d.lookupTableAccount].filter(b=>b!==void 0),address:{}}}else throw Error("route type error")}export{Bb as makeSwapInstruction,Tb as route1Instruction,xb as route2Instruction,As as routeInstruction};
|
|
2
2
|
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
3
3
|
//# sourceMappingURL=index.mjs.map
|