@raydium-io/raydium-sdk-v2 0.0.41-alpha → 0.0.43-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 +2 -1
- package/lib/api/api.js +1 -1
- package/lib/api/api.js.map +1 -1
- package/lib/api/api.mjs +1 -1
- package/lib/api/api.mjs.map +1 -1
- package/lib/api/index.d.ts +1 -1
- package/lib/api/index.js +1 -1
- package/lib/api/index.js.map +1 -1
- package/lib/api/index.mjs +1 -1
- package/lib/api/index.mjs.map +1 -1
- package/lib/api/type.d.ts +1 -1
- package/lib/api/type.js.map +1 -1
- package/lib/api/type.mjs.map +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/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/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/instruction.d.ts +1 -1
- package/lib/raydium/liquidity/liquidity.d.ts +3 -3
- package/lib/raydium/liquidity/type.d.ts +1 -1
- package/lib/raydium/liquidity/utils.d.ts +1 -1
- package/lib/raydium/marketV2/createMarket.d.ts +3 -3
- package/lib/raydium/marketV2/createMarket.js +1 -1
- package/lib/raydium/marketV2/createMarket.js.map +1 -1
- package/lib/raydium/marketV2/createMarket.mjs +1 -1
- package/lib/raydium/marketV2/createMarket.mjs.map +1 -1
- package/lib/raydium/marketV2/index.d.ts +3 -3
- package/lib/raydium/marketV2/index.js +1 -1
- package/lib/raydium/marketV2/index.js.map +1 -1
- package/lib/raydium/marketV2/index.mjs +1 -1
- package/lib/raydium/marketV2/index.mjs.map +1 -1
- 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/token.js +1 -1
- package/lib/raydium/token/token.js.map +1 -1
- package/lib/raydium/token/token.mjs +1 -1
- package/lib/raydium/token/token.mjs.map +1 -1
- package/lib/raydium/token/type.d.ts +1 -1
- package/lib/raydium/token/utils.d.ts +1 -1
- package/lib/raydium/tradeV2/index.d.ts +2 -2
- package/lib/raydium/tradeV2/instrument.d.ts +2 -2
- package/lib/raydium/tradeV2/trade.d.ts +3 -3
- package/lib/raydium/tradeV2/type.d.ts +2 -2
- package/lib/raydium/type.d.ts +1 -1
- package/lib/raydium/utils1216/index.d.ts +3 -3
- package/lib/raydium/utils1216/utils1216.d.ts +3 -3
- package/lib/{raydium-d05441b6.d.ts → raydium-0396913e.d.ts} +4 -2
- package/lib/{type-08d7cf11.d.ts → type-085c771c.d.ts} +1 -1
- package/lib/{type-15746482.d.ts → type-9fe71e3c.d.ts} +1 -0
- package/package.json +1 -1
- package/src/api/api.ts +1 -6
- package/src/api/type.ts +1 -0
- package/src/raydium/marketV2/createMarket.ts +26 -12
- package/src/raydium/token/token.ts +6 -1
package/lib/raydium/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var Ou=Object.defineProperty,Nu=Object.defineProperties;var Mu=Object.getOwnPropertyDescriptors;var wr=Object.getOwnPropertySymbols;var Zo=Object.prototype.hasOwnProperty,$o=Object.prototype.propertyIsEnumerable;var jo=(r,e,t)=>e in r?Ou(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,M=(r,e)=>{for(var t in e||(e={}))Zo.call(e,t)&&jo(r,t,e[t]);if(wr)for(var t of wr(e))$o.call(e,t)&&jo(r,t,e[t]);return r},D=(r,e)=>Nu(r,Mu(e));var Pe=(r,e)=>{var t={};for(var n in r)Zo.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&wr)for(var n of wr(r))e.indexOf(n)<0&&$o.call(r,n)&&(t[n]=r[n]);return t};import{merge as Pd}from"lodash";import ul from"axios";import{get as Jo,set as _u}from"lodash";import ts from"dayjs";import Vu from"dayjs/plugin/utc";ts.extend(Vu);var bi=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return ts().utc().format("YYYY/MM/DD HH:mm:ss UTC")}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(n=>typeof n=="object"?JSON.stringify(n):n).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},es={},Eu={};function ae(r){let e=Jo(es,r);if(!e){let t=Jo(Eu,r);e=new bi({name:r,logLevel:t}),_u(es,r,e)}return e}import{PublicKey as zc}from"@solana/web3.js";import Yc from"bn.js";import Uc from"big.js";import Lr from"bn.js";import Ze from"bn.js";var cn=9e15,Dt=1e9,gi="0123456789abcdef",Pr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",kr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",wi={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-cn,maxE:cn,crypto:!1},os,Rt,J=!0,Tr="[DecimalError] ",Wt=Tr+"Invalid argument: ",ss=Tr+"Precision limit exceeded",as=Tr+"crypto unavailable",us="[object Decimal]",ve=Math.floor,Ke=Math.pow,Fu=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,vu=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Wu=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,cs=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ft=1e7,H=7,Du=9007199254740991,qu=Pr.length-1,Ai=kr.length-1,L={toStringTag:us};L.absoluteValue=L.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),G(r)};L.ceil=function(){return G(new this.constructor(this),this.e+1,2)};L.clampedTo=L.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(Wt+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};L.comparedTo=L.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};L.cosine=L.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+H,n.rounding=1,t=Uu(n,fs(n,t)),n.precision=r,n.rounding=e,G(Rt==2||Rt==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};L.cubeRoot=L.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(J=!1,o=l.s*Ke(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Me(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Ke(t,1/3),r=ve((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=ge(c.plus(l).times(a),c.plus(u),s+2,1),Me(a.d).slice(0,s)===(t=Me(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(G(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(G(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return J=!0,G(n,r,m.rounding,e)};L.decimalPlaces=L.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-ve(this.e/H))*H,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};L.dividedBy=L.div=function(r){return ge(this,new this.constructor(r))};L.dividedToIntegerBy=L.divToInt=function(r){var e=this,t=e.constructor;return G(ge(e,new t(r),0,1,1),t.precision,t.rounding)};L.equals=L.eq=function(r){return this.cmp(r)===0};L.floor=function(){return G(new this.constructor(this),this.e+1,3)};L.greaterThan=L.gt=function(r){return this.cmp(r)>0};L.greaterThanOrEqualTo=L.gte=function(r){var e=this.cmp(r);return e==1||e===0};L.hyperbolicCosine=L.cosh=function(){var r,e,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/xr(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=ln(s,1,o.times(e),new s(1),!0);for(var u,c=r,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return G(o,s.precision=t,s.rounding=n,!0)};L.hyperbolicSine=L.sinh=function(){var r,e,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=ln(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/xr(5,r)),i=ln(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,G(i,e,t,!0)};L.hyperbolicTangent=L.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,ge(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};L.inverseCosine=L.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?pt(t,i,o):new t(0):new t(NaN):e.isZero()?pt(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=pt(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};L.inverseHyperbolicCosine=L.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,J=!1,t=t.times(t).minus(1).sqrt().plus(t),J=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};L.inverseHyperbolicSine=L.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,J=!1,t=t.times(t).plus(1).sqrt().plus(t),J=!0,n.precision=r,n.rounding=e,t.ln())};L.inverseHyperbolicTangent=L.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?G(new o(i),r,e,!0):(o.precision=t=n-i.e,i=ge(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};L.inverseSine=L.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=pt(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};L.inverseTangent=L.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=Ai)return s=pt(l,m+4,p).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=Ai)return s=pt(l,m+4,p).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/H+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(J=!1,e=Math.ceil(a/H),n=1,u=c.times(c),s=new l(c),i=c;r!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),J=!0,G(s,l.precision=m,l.rounding=p,!0)};L.isFinite=function(){return!!this.d};L.isInteger=L.isInt=function(){return!!this.d&&ve(this.e/H)>this.d.length-2};L.isNaN=function(){return!this.s};L.isNegative=L.isNeg=function(){return this.s<0};L.isPositive=L.isPos=function(){return this.s>0};L.isZero=function(){return!!this.d&&this.d[0]===0};L.lessThan=L.lt=function(r){return this.cmp(r)<0};L.lessThanOrEqualTo=L.lte=function(r){return this.cmp(r)<1};L.logarithm=L.log=function(r){var e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding,d=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if(J=!1,a=m+d,s=vt(c,a),n=e?hr(l,a+10):vt(r,a),u=ge(s,n,a,1),xn(u.d,i=m,p))do if(a+=10,s=vt(c,a),n=e?hr(l,a+10):vt(r,a),u=ge(s,n,a,1),!o){+Me(u.d).slice(i+1,i+15)+1==1e14&&(u=G(u,m+1,0));break}while(xn(u.d,i+=10,p));return J=!0,G(u,m,p)};L.minus=L.sub=function(r){var e,t,n,i,o,s,a,u,c,l,m,p,d=this,y=d.constructor;if(r=new y(r),!d.d||!r.d)return!d.s||!r.s?r=new y(NaN):d.d?r.s=-r.s:r=new y(r.d||d.s!==r.s?d:NaN),r;if(d.s!=r.s)return r.s=-r.s,d.plus(r);if(c=d.d,p=r.d,a=y.precision,u=y.rounding,!c[0]||!p[0]){if(p[0])r.s=-r.s;else if(c[0])r=new y(d);else return new y(u===3?-0:0);return J?G(r,a,u):r}if(t=ve(r.e/H),l=ve(d.e/H),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/H),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=p.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=p[n]){m=c[n]<p[n];break}o=0}for(m&&(e=c,c=p,p=e,r.s=-r.s),s=c.length,n=p.length-s;n>0;--n)c[s++]=0;for(n=p.length;n>o;){if(c[--n]<p[n]){for(i=n;i&&c[--i]===0;)c[i]=ft-1;--c[i],c[n]+=ft}c[n]-=p[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=Ir(c,t),J?G(r,a,u):r):new y(u===3?-0:0)};L.modulo=L.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?G(new n(t),n.precision,n.rounding):(J=!1,n.modulo==9?(e=ge(t,r.abs(),0,3,1),e.s*=r.s):e=ge(t,r,0,n.modulo,1),e=e.times(r),J=!0,t.minus(e))};L.naturalExponential=L.exp=function(){return Pi(this)};L.naturalLogarithm=L.ln=function(){return vt(this)};L.negated=L.neg=function(){var r=new this.constructor(this);return r.s=-r.s,G(r)};L.plus=L.add=function(r){var e,t,n,i,o,s,a,u,c,l,m=this,p=m.constructor;if(r=new p(r),!m.d||!r.d)return!m.s||!r.s?r=new p(NaN):m.d||(r=new p(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=p.precision,u=p.rounding,!c[0]||!l[0])return l[0]||(r=new p(m)),J?G(r,a,u):r;if(o=ve(m.e/H),n=ve(r.e/H),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/H),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=c.length,i=l.length,s-i<0&&(i=s,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/ft|0,c[i]%=ft;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=Ir(c,n),J?G(r,a,u):r};L.precision=L.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Wt+r);return t.d?(e=ls(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};L.round=function(){var r=this,e=r.constructor;return G(new e(r),r.e+1,e.rounding)};L.sine=L.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+H,n.rounding=1,t=Xu(n,fs(n,t)),n.precision=r,n.rounding=e,G(Rt>2?t.neg():t,r,e,!0)):new n(NaN)};L.squareRoot=L.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(J=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Me(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=ve((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(ge(s,o,t+2,1)).times(.5),Me(o.d).slice(0,t)===(e=Me(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(G(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(G(n,u+1,1),r=!n.times(n).eq(s));break}return J=!0,G(n,u,l.rounding,r)};L.tangent=L.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=ge(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,G(Rt==2||Rt==4?t.neg():t,r,e,!0)):new n(NaN)};L.times=L.mul=function(r){var e,t,n,i,o,s,a,u,c,l=this,m=l.constructor,p=l.d,d=(r=new m(r)).d;if(r.s*=l.s,!p||!p[0]||!d||!d[0])return new m(!r.s||p&&!p[0]&&!d||d&&!d[0]&&!p?NaN:!p||!d?r.s/0:r.s*0);for(t=ve(l.e/H)+ve(r.e/H),u=p.length,c=d.length,u<c&&(o=p,p=d,d=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+d[n]*p[i-n-1]+e,o[i--]=a%ft|0,e=a/ft|0;o[i]=(o[i]+e)%ft|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=Ir(o,t),J?G(r,m.precision,m.rounding):r};L.toBinary=function(r,e){return hi(this,2,r,e)};L.toDecimalPlaces=L.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(He(r,0,Dt),e===void 0?e=n.rounding:He(e,0,8),G(t,r+t.e+1,e))};L.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=kt(n,!0):(He(r,0,Dt),e===void 0?e=i.rounding:He(e,0,8),n=G(new i(n),r+1,e),t=kt(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};L.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=kt(i):(He(r,0,Dt),e===void 0?e=o.rounding:He(e,0,8),n=G(new o(i),r+i.e+1,e),t=kt(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};L.toFraction=function(r){var e,t,n,i,o,s,a,u,c,l,m,p,d=this,y=d.d,f=d.constructor;if(!y)return new f(d);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=ls(y)-d.e-1,s=o%H,e.d[0]=Ke(10,s<0?H+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(Wt+a);r=a.gt(e)?o>0?e:c:a}for(J=!1,a=new f(Me(y)),l=f.precision,f.precision=o=y.length*H*2;m=ge(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=ge(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=d.s,p=ge(c,n,o,1).minus(d).abs().cmp(ge(u,t,o,1).minus(d).abs())<1?[c,n]:[u,t],f.precision=l,J=!0,p};L.toHexadecimal=L.toHex=function(r,e){return hi(this,16,r,e)};L.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:He(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(J=!1,t=ge(t,r,0,e,1).times(r),J=!0,G(t)):(r.s=t.s,t=r),t};L.toNumber=function(){return+this};L.toOctal=function(r,e){return hi(this,8,r,e)};L.toPower=L.pow=function(r){var e,t,n,i,o,s,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(Ke(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return G(a,n,o);if(e=ve(r.e/H),e>=r.d.length-1&&(t=c<0?-c:c)<=Du)return i=ms(u,a,t,n),r.s<0?new u(1).div(i):G(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Ke(+a,c),e=t==0||!isFinite(t)?ve(c*(Math.log("0."+Me(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(J=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Pi(r.times(vt(a,n+t)),n),i.d&&(i=G(i,n+5,1),xn(i.d,n,o)&&(e=n+10,i=G(Pi(r.times(vt(a,e+t)),e),e+5,1),+Me(i.d).slice(n+1,n+15)+1==1e14&&(i=G(i,n+1,0)))),i.s=s,J=!0,u.rounding=o,G(i,n,o))};L.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=kt(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(He(r,1,Dt),e===void 0?e=i.rounding:He(e,0,8),n=G(new i(n),r,e),t=kt(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};L.toSignificantDigits=L.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(He(r,1,Dt),e===void 0?e=n.rounding:He(e,0,8)),G(new n(t),r,e)};L.toString=function(){var r=this,e=r.constructor,t=kt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};L.truncated=L.trunc=function(){return G(new this.constructor(this),this.e+1,1)};L.valueOf=L.toJSON=function(){var r=this,e=r.constructor,t=kt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function Me(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=H-n.length,t&&(o+=Ft(t)),o+=n;s=r[e],n=s+"",t=H-n.length,t&&(o+=Ft(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function He(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Wt+r)}function xn(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=H,i=0):(i=Math.ceil((e+1)/H),e%=H),o=Ke(10,H-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==Ke(10,e-2)-1||(a==o/2||a==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(r[i+1]/o/1e3|0)==Ke(10,e-3)-1,s}function Ar(r,e,t){for(var n,i=[0],o,s=0,a=r.length;s<a;){for(o=i.length;o--;)i[o]*=e;for(i[0]+=gi.indexOf(r.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function Uu(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/xr(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=ln(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var ge=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,p,d,y,f,b,g,P,A,h,T,I,B,x,K,N,E,Q,W=n.constructor,j=n.s==i.s?1:-1,ee=n.d,oe=i.d;if(!ee||!ee[0]||!oe||!oe[0])return new W(!n.s||!i.s||(ee?oe&&ee[0]==oe[0]:!oe)?NaN:ee&&ee[0]==0||!oe?j*0:j/0);for(u?(d=1,l=n.e-i.e):(u=ft,d=H,l=ve(n.e/d)-ve(i.e/d)),E=oe.length,K=ee.length,g=new W(j),P=g.d=[],m=0;oe[m]==(ee[m]||0);m++);if(oe[m]>(ee[m]||0)&&l--,o==null?(I=o=W.precision,s=W.rounding):a?I=o+(n.e-i.e)+1:I=o,I<0)P.push(1),y=!0;else{if(I=I/d+2|0,m=0,E==1){for(p=0,oe=oe[0],I++;(m<K||p)&&I--;m++)B=p*u+(ee[m]||0),P[m]=B/oe|0,p=B%oe|0;y=p||m<K}else{for(p=u/(oe[0]+1)|0,p>1&&(oe=r(oe,p,u),ee=r(ee,p,u),E=oe.length,K=ee.length),x=E,A=ee.slice(0,E),h=A.length;h<E;)A[h++]=0;Q=oe.slice(),Q.unshift(0),N=oe[0],oe[1]>=u/2&&++N;do p=0,c=e(oe,A,E,h),c<0?(T=A[0],E!=h&&(T=T*u+(A[1]||0)),p=T/N|0,p>1?(p>=u&&(p=u-1),f=r(oe,p,u),b=f.length,h=A.length,c=e(f,A,b,h),c==1&&(p--,t(f,E<b?Q:oe,b,u))):(p==0&&(c=p=1),f=oe.slice()),b=f.length,b<h&&f.unshift(0),t(A,f,h,u),c==-1&&(h=A.length,c=e(oe,A,E,h),c<1&&(p++,t(A,E<h?Q:oe,h,u))),h=A.length):c===0&&(p++,A=[0]),P[m++]=p,c&&A[0]?A[h++]=ee[x]||0:(A=[ee[x]],h=1);while((x++<K||A[0]!==void 0)&&I--);y=A[0]!==void 0}P[0]||P.shift()}if(d==1)g.e=l,os=y;else{for(m=1,p=P[0];p>=10;p/=10)m++;g.e=m+l*d-1,G(g,a?o+g.e+1:o,s,y)}return g}}();function G(r,e,t,n){var i,o,s,a,u,c,l,m,p,d=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=H,s=e,l=m[p=0],u=l/Ke(10,i-s-1)%10|0;else if(p=Math.ceil((o+1)/H),a=m.length,p>=a)if(n){for(;a++<=p;)m.push(0);l=u=0,i=1,o%=H,s=o-H+1}else break e;else{for(l=a=m[p],i=1;a>=10;a/=10)i++;o%=H,s=o-H+i,u=s<0?0:l/Ke(10,i-s-1)%10|0}if(n=n||e<0||m[p+1]!==void 0||(s<0?l:l%Ke(10,i-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/Ke(10,i-s):0:m[p-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=Ke(10,(H-e%H)%H),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=p,a=1,p--):(m.length=p+1,a=Ke(10,H-o),m[p]=s>0?(l/Ke(10,i-s)%Ke(10,s)|0)*a:0),c)for(;;)if(p==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==ft&&(m[0]=1));break}else{if(m[p]+=a,m[p]!=ft)break;m[p--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return J&&(r.e>d.maxE?(r.d=null,r.e=NaN):r.e<d.minE&&(r.e=0,r.d=[0])),r}function kt(r,e,t){if(!r.isFinite())return ps(r);var n,i=r.e,o=Me(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Ft(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+Ft(-i-1)+o,t&&(n=t-s)>0&&(o+=Ft(n))):i>=s?(o+=Ft(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+Ft(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=Ft(n))),o}function Ir(r,e){var t=r[0];for(e*=H;t>=10;t/=10)e++;return e}function hr(r,e,t){if(e>qu)throw J=!0,t&&(r.precision=t),Error(ss);return G(new r(Pr),e,1,!0)}function pt(r,e,t){if(e>Ai)throw Error(ss);return G(new r(kr),e,t,!0)}function ls(r){var e=r.length-1,t=e*H+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function Ft(r){for(var e="";r--;)e+="0";return e}function ms(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/H+4);for(J=!1;;){if(t%2&&(o=o.times(e),rs(o.d,s)&&(i=!0)),t=ve(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),rs(e.d,s)}return J=!0,o}function ns(r){return r.d[r.d.length-1]&1}function ds(r,e,t){for(var n,i=new r(e[0]),o=0;++o<e.length;)if(n=new r(e[o]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function Pi(r,e){var t,n,i,o,s,a,u,c=0,l=0,m=0,p=r.constructor,d=p.rounding,y=p.precision;if(!r.d||!r.d[0]||r.e>17)return new p(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(J=!1,u=y):u=e,a=new p(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(Ke(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new p(1),p.precision=u;;){if(o=G(o.times(r),u,1),t=t.times(++l),a=s.plus(ge(o,t,u,1)),Me(a.d).slice(0,u)===Me(s.d).slice(0,u)){for(i=m;i--;)s=G(s.times(s),u,1);if(e==null)if(c<3&&xn(s.d,u-n,d,c))p.precision=u+=10,t=o=a=new p(1),l=0,c++;else return G(s,p.precision=y,d,J=!0);else return p.precision=y,s}s=a}}function vt(r,e){var t,n,i,o,s,a,u,c,l,m,p,d=1,y=10,f=r,b=f.d,g=f.constructor,P=g.rounding,A=g.precision;if(f.s<0||!b||!b[0]||!f.e&&b[0]==1&&b.length==1)return new g(b&&!b[0]?-1/0:f.s!=1?NaN:b?0:f);if(e==null?(J=!1,l=A):l=e,g.precision=l+=y,t=Me(b),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=Me(f.d),n=t.charAt(0),d++;o=f.e,n>1?(f=new g("0."+t),o++):f=new g(n+"."+t.slice(1))}else return c=hr(g,l+2,A).times(o+""),f=vt(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=A,e==null?G(f,A,P,J=!0):f;for(m=f,u=s=f=ge(f.minus(1),f.plus(1),l,1),p=G(f.times(f),l,1),i=3;;){if(s=G(s.times(p),l,1),c=u.plus(ge(s,new g(i),l,1)),Me(c.d).slice(0,l)===Me(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(hr(g,l+2,A).times(o+""))),u=ge(u,new g(d),l,1),e==null)if(xn(u.d,l-y,P,a))g.precision=l+=y,c=s=f=ge(m.minus(1),m.plus(1),l,1),p=G(f.times(f),l,1),i=a=1;else return G(u,g.precision=A,P,J=!0);else return g.precision=A,u;u=c,i+=2}}function ps(r){return String(r.s*r.s/0)}function ki(r,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%H,t<0&&(n+=H),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=H;n<i;)r.d.push(+e.slice(n,n+=H));e=e.slice(n),n=H-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),J&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function Gu(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),cs.test(e))return ki(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(vu.test(e))t=16,e=e.toLowerCase();else if(Fu.test(e))t=2;else if(Wu.test(e))t=8;else throw Error(Wt+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=ms(n,new n(t),o,o*2)),c=Ar(e,t,ft),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=Ir(c,l),r.d=c,J=!1,s&&(r=ge(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Ke(2,u):Bn.pow(2,u))),J=!0,r)}function Xu(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:ln(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/xr(5,t)),e=ln(r,2,e,e);for(var i,o=new r(5),s=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(o.plus(i.times(s.times(i).minus(a))));return e}function ln(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/H);for(J=!1,u=t.times(t),a=new r(n);;){if(s=ge(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=ge(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return J=!0,s.d.length=m+1,s}function xr(r,e){for(var t=r;--e;)t*=r;return t}function fs(r,e){var t,n=e.s<0,i=pt(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return Rt=n?4:1,e;if(t=e.divToInt(i),t.isZero())Rt=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Rt=ns(t)?n?2:3:n?4:1,e;Rt=ns(t)?n?1:4:n?3:2}return e.minus(i).abs()}function hi(r,e,t,n){var i,o,s,a,u,c,l,m,p,d=r.constructor,y=t!==void 0;if(y?(He(t,1,Dt),n===void 0?n=d.rounding:He(n,0,8)):(t=d.precision,n=d.rounding),!r.isFinite())l=ps(r);else{for(l=kt(r),s=l.indexOf("."),y?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),p=new d(1),p.e=l.length-s,p.d=Ar(kt(p),10,i),p.e=p.d.length),m=Ar(l,10,i),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(r=new d(r),r.d=m,r.e=o,r=ge(r,p,t,n,0,i),m=r.d,o=r.e,c=os),s=m[t],a=i/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=gi.charAt(m[s]);if(y){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=Ar(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=gi.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function rs(r,e){if(r.length>e)return r.length=e,!0}function zu(r){return new this(r).abs()}function Yu(r){return new this(r).acos()}function Qu(r){return new this(r).acosh()}function Hu(r,e){return new this(r).plus(e)}function ju(r){return new this(r).asin()}function Zu(r){return new this(r).asinh()}function $u(r){return new this(r).atan()}function Ju(r){return new this(r).atanh()}function ec(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,o=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=pt(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?pt(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=pt(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(ge(r,e,o,1)),e=pt(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(ge(r,e,o,1)),t}function tc(r){return new this(r).cbrt()}function nc(r){return G(r=new this(r),r.e+1,2)}function rc(r,e,t){return new this(r).clamp(e,t)}function ic(r){if(!r||typeof r!="object")throw Error(Tr+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,Dt,"rounding",0,8,"toExpNeg",-cn,0,"toExpPos",0,cn,"maxE",0,cn,"minE",-cn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=wi[t]),(n=r[t])!==void 0)if(ve(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Wt+t+": "+n);if(t="crypto",i&&(this[t]=wi[t]),(n=r[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(as);else this[t]=!1;else throw Error(Wt+t+": "+n);return this}function oc(r){return new this(r).cos()}function sc(r){return new this(r).cosh()}function ys(r){var e,t,n;function i(o){var s,a,u,c=this;if(!(c instanceof i))return new i(o);if(c.constructor=i,is(o)){c.s=o.s,J?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;J?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return ki(c,o.toString())}else if(u!=="string")throw Error(Wt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),cs.test(o)?ki(c,o):Gu(c,o)}if(i.prototype=L,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=ic,i.clone=ys,i.isDecimal=is,i.abs=zu,i.acos=Yu,i.acosh=Qu,i.add=Hu,i.asin=ju,i.asinh=Zu,i.atan=$u,i.atanh=Ju,i.atan2=ec,i.cbrt=tc,i.ceil=nc,i.clamp=rc,i.cos=oc,i.cosh=sc,i.div=ac,i.exp=uc,i.floor=cc,i.hypot=lc,i.ln=mc,i.log=dc,i.log10=fc,i.log2=pc,i.max=yc,i.min=bc,i.mod=gc,i.mul=wc,i.pow=Ac,i.random=Pc,i.round=kc,i.sign=hc,i.sin=Tc,i.sinh=Ic,i.sqrt=xc,i.sub=Bc,i.sum=Sc,i.tan=Kc,i.tanh=Cc,i.trunc=Rc,r===void 0&&(r={}),r&&r.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)r.hasOwnProperty(t=n[e++])||(r[t]=this[t]);return i.config(r),i}function ac(r,e){return new this(r).div(e)}function uc(r){return new this(r).exp()}function cc(r){return G(r=new this(r),r.e+1,3)}function lc(){var r,e,t=new this(0);for(J=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return J=!0,new this(1/0);t=e}return J=!0,t.sqrt()}function is(r){return r instanceof Bn||r&&r.toStringTag===us||!1}function mc(r){return new this(r).ln()}function dc(r,e){return new this(r).log(e)}function pc(r){return new this(r).log(2)}function fc(r){return new this(r).log(10)}function yc(){return ds(this,arguments,"lt")}function bc(){return ds(this,arguments,"gt")}function gc(r,e){return new this(r).mod(e)}function wc(r,e){return new this(r).mul(e)}function Ac(r,e){return new this(r).pow(e)}function Pc(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:He(r,1,Dt),n=Math.ceil(r/H),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(as);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=H,n&&r&&(i=Ke(10,H-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=H)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<H&&(t-=H-n)}return s.e=t,s.d=a,s}function kc(r){return G(r=new this(r),r.e+1,this.rounding)}function hc(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Tc(r){return new this(r).sin()}function Ic(r){return new this(r).sinh()}function xc(r){return new this(r).sqrt()}function Bc(r,e){return new this(r).sub(e)}function Sc(){var r=0,e=arguments,t=new this(e[r]);for(J=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return J=!0,G(t,this.precision,this.rounding)}function Kc(r){return new this(r).tan()}function Cc(r){return new this(r).tanh()}function Rc(r){return G(r=new this(r),r.e+1,1)}L[Symbol.for("nodejs.util.inspect.custom")]=L.toString;L[Symbol.toStringTag]="Decimal";var Bn=L.constructor=ys(wi);Pr=new Bn(Pr);kr=new Bn(kr);var F=Bn;import{PublicKey as Si}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Lc}from"@solana/spl-token";import{PublicKey as ke,SystemProgram as bs,SYSVAR_RENT_PUBKEY as Oc}from"@solana/web3.js";function k({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Ti=[k({pubkey:Lc,isWritable:!1}),k({pubkey:bs.programId,isWritable:!1}),k({pubkey:Oc,isWritable:!1})];function Ii({publicKey:r,transformSol:e}){let t=xi(r.toString());if(t instanceof ke)return e&&t.equals(Ce)?te:t;if(e&&t.toString()===Ce.toBase58())return te;if(typeof t=="string"){if(t===ke.default.toBase58())return ke.default;try{return new ke(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function xi(r){try{return new ke(r)}catch{return r}}var mn=new ke("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),gs=new ke("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),je=new ke("SysvarRent111111111111111111111111111111111"),Bi=new ke("SysvarC1ock11111111111111111111111111111111"),dn=new ke("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Br=new ke("Sysvar1nstructions1111111111111111111111111"),ws=bs.programId,Md=new ke("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),_d=new ke("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Vd=new ke("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ed=new ke("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Fd=new ke("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),vd=new ke("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Wd=new ke("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Dd=new ke("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),qd=new ke("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ud=new ke("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Gd=new ke("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),te=new ke("So11111111111111111111111111111111111111112"),Ce=ke.default;function pn(r){return Ii({publicKey:r,transformSol:!0})}import{PublicKey as Nc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as As}from"@solana/spl-token";var ht={chainId:101,address:Nc.default.toBase58(),programId:As.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Re={chainId:101,address:"So11111111111111111111111111111111111111112",programId:As.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};var Ki=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ce.toBase58()||e instanceof Si&&Ce.equals(e)){this.decimals=Re.decimals,this.symbol=Re.symbol,this.name=Re.name,this.mint=new Si(Re.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=o?Si.default:Ii({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},he=Ki;he.WSOL=new Ki(D(M({},Re),{mint:Re.address}));import Kr from"big.js";import Vc from"bn.js";import Ec from"decimal.js-light";import Mc from"toformat";var _c=Mc,Sn=_c;var Sr=ae("module/fraction"),Ci=Sn(Kr),Kn=Sn(Ec),Fc={[0]:Kn.ROUND_DOWN,[1]:Kn.ROUND_HALF_UP,[2]:Kn.ROUND_UP},vc={[0]:Kr.roundDown,[1]:Kr.roundHalfUp,[2]:Kr.roundUp},le=class{constructor(e,t=new Vc(1)){this.numerator=X(e),this.denominator=X(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new le(this.denominator,this.numerator)}add(e){let t=e instanceof le?e:new le(X(e));return this.denominator.eq(t.denominator)?new le(this.numerator.add(t.numerator),this.denominator):new le(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof le?e:new le(X(e));return this.denominator.eq(t.denominator)?new le(this.numerator.sub(t.numerator),this.denominator):new le(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof le?e:new le(X(e));return new le(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof le?e:new le(X(e));return new le(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Sr.logWithError(`${e} is not an integer.`),e<=0&&Sr.logWithError(`${e} is not positive.`),Kn.set({precision:e+1,rounding:Fc[n]});let i=new Kn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Sr.logWithError(`${e} is not an integer.`),e<0&&Sr.logWithError(`${e} is negative.`),Ci.DP=e,Ci.RM=vc[n]||1,new Ci(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Dc=ae("Raydium_price"),st=class extends le{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new le(Ri(n.decimals),Ri(i.decimals))}get raw(){return new le(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new st({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Dc.logWithError("mul token not equals");let n=super.mul(t);return new st({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var Li=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Cr=Li;Cr.SOL=new Li(ht);import qc from"bn.js";var Ps=new le(new qc(100)),tt=class extends le{toSignificant(e=5,t,n){return this.mul(Ps).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Ps).toFixed(e,t,n)}};var ze=new Ze(0),hs=new Ze(1),Wp=new Ze(2),Dp=new Ze(3),qp=new Ze(5),Oi=new Ze(10),Up=new Ze(100),Gp=new Ze(1e3),Xp=new Ze(1e4),ks=9007199254740991;function X(r){let e=ae("Raydium_parseBigNumberish");if(r instanceof Ze)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Ze(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=ks||r<=-ks)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Ze(String(r))):typeof r=="bigint"?new Ze(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Ze(0))}function Ri(r){return Oi.pow(X(r))}function Rr(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var Gc=ae("Raydium_amount"),Is=Sn(Uc);function Xc(r,e){let t="0",n="0";if(r.includes(".")){let i=r.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):Gc.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var xe=class extends le{constructor(t,n,i=!0,o){let s=new Lr(0),a=Oi.pow(new Lr(t.decimals));if(i)s=X(n);else{let u=new Lr(0),c=new Lr(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Xc(n.toString(),t.decimals);u=X(l),c=X(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ae(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new xe(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new xe(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Is.DP=this.token.decimals,new Is(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function Ts(r){return typeof r=="object"&&r!==null&&![he,xe,zc,le,Yc,st,tt].some(e=>typeof e=="object"&&r instanceof e)}function pe(r){return typeof r=="string"?xi(r):Array.isArray(r)?r.map(e=>pe(e)):Ts(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,pe(t)])):r}import{PublicKey as On,sendAndConfirmTransaction as Vi,Transaction as Nn,TransactionMessage as Mn,VersionedTransaction as _n}from"@solana/web3.js";import Jc from"axios";var V={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut"};import{PublicKey as Bs,ComputeBudgetProgram as xs,Transaction as Or,TransactionMessage as Qc,Keypair as Ss,VersionedTransaction as Ks}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Hc}from"@solana/spl-token";var Lt=ae("Raydium_txUtil"),Cs=1644;function Nr(r){let e=[],t=[];return r.microLamports&&(e.push(xs.setComputeUnitPrice({microLamports:r.microLamports})),t.push(V.SetComputeUnitPrice)),r.units&&(e.push(xs.setComputeUnitLimit({units:r.units})),t.push(V.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function fn(r){var e,t;try{return((t=await((e=r.getLatestBlockhash)==null?void 0:e.call(r)))==null?void 0:t.blockhash)||(await r.getRecentBlockhash()).blockhash}catch{return(await r.getRecentBlockhash()).blockhash}}function Mr(r,e){r.length<1&&Lt.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Lt.logWithError(`no signers provided:, ${e.toString()}`);let t=new Or;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Cs}catch{return!1}}async function Rs(r,e,t,n=!0){let i=new Bs("RaydiumSimuLateTransaction11111111111111111"),o=[],s=new Or;s.feePayer=i;for(let c of e)Mr([...s.instructions,c],[i])||(o.push(s),s=new Or,s.feePayer=i),s.add(c);s.instructions.length>0&&o.push(s);let a=[];try{if(a=await jc(r,o,n),a.find(c=>c.err!==null))throw Error("rpc simulateTransaction error")}catch(c){c instanceof Error&&Lt.logWithError("failed to simulate for instructions","RPC_ERROR",{message:c.message})}let u=[];for(let c of a)if(Lt.debug("simulate result:",c),c.logs){let l=c.logs.filter(m=>m&&m.includes(t));Lt.debug("filteredLog:",u),l.length||Lt.logWithError("simulate log not match keyword","keyword",t),u.push(...l)}return u}function Ls(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Lt.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Ot(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Lt.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function ie(r,e){let[t,n]=Bs.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function jc(r,e,t){let n=[];if(t){let i=await r.getLatestBlockhash(),o=[];for(let c of e){c.recentBlockhash=i.blockhash,c.lastValidBlockHeight=i.lastValidBlockHeight;let m=c._compile().serialize(),d=c._serialize(m).toString("base64");o.push(d)}let s=o.map(c=>{let l=r._buildArgs([c],void 0,"base64");return{methodName:"simulateTransaction",args:l}}),a=[],u=20;for(let c=0;c<Math.ceil(s.length/u);c++)a.push(s.slice(c*u,(c+1)*u));n=await(await Promise.all(a.map(async c=>(await r._rpcBatchRequest(c)).map(l=>l.result.value)))).flat()}else try{n=await Promise.all(e.map(async i=>await(await r.simulateTransaction(i)).value))}catch(i){i instanceof Error&&Lt.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:i.message})}return n}function Cn({instructions:r,payer:e,signers:t}){return Mr(r,[e,...t])}function Rn({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Ss.generate().publicKey.toString()}){let o=new Qc({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Ks(o).serialize()).toString("base64").length<Cs}catch{return!1}}var Zc=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function jt(r){let e=[];return r.forEach(t=>{t instanceof Or&&(t.recentBlockhash||(t.recentBlockhash=Hc.toBase58()),t.feePayer||(t.feePayer=Ss.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Ks&&(n=Zc(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as Os,AddressLookupTableAccount as _r}from"@solana/web3.js";import{PublicKey as $c}from"@solana/web3.js";import{getTransferFeeConfig as Nf,unpackMint as Mf}from"@solana/spl-token";var Ni=ae("Raydium_accountInfo_util");async function Tt(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=M({batchRequest:!1},t),o=Mi(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=r._buildArgs([l.map(p=>p.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=Mi(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&Ni.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:p,executable:d,lamports:y,owner:f,rentEpoch:b}=m;return p.length!==2&&p[1]!=="base64"&&Ni.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:d,lamports:y,owner:new $c(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&Ni.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Ln(r,e,t){let n=await Tt(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>D(M({},i),{accountInfo:n[o]}))}async function _i({connection:r,address:e}){let t=await Tt(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Os(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new _r({key:s,state:_r.deserialize(o.data)});n[s.toString()]=a,Vr[s.toString()]=a}return n}var Vr={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new _r({key:new Os("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:_r.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};var Er=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await Jc.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=Nr(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==On.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(M({},t||{})):this.build(t)}build(e){let t=new Nn;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:i,skipPreflight:o=!0}=n||{},s=i!=null?i:await fn(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),jt([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await Vi(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:o}),signedTx:u[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var f;let{sequentially:l,onTxUpdate:m,recentBlockHash:p,skipPreflight:d=!0}=c||{},y=p!=null?p:await fn(this.connection);if((f=this.owner)!=null&&f.isKeyPair)return{txIds:await await Promise.all(s.map(async(b,g)=>(b.recentBlockhash=y,await Vi(this.connection,b,a[g].find(P=>P.publicKey.equals(this.owner.publicKey))?a[g]:[...a[g],this.owner.signer],{skipPreflight:d})))),signedTxs:s};if(this.signAllTransactions){let b=s.map((P,A)=>(P.recentBlockhash=y,a[A].length&&P.sign(...a[A]),P));jt(b);let g=await this.signAllTransactions(b);if(l){let P=0,A=[],h=async()=>{if(!g[P])return;let T=await this.connection.sendRawTransaction(g[P].serialize(),{skipPreflight:d});A.push({txId:T,status:"sent",signedTx:g[P]}),m==null||m([...A]),P++,this.connection.onSignature(T,I=>{let B=A.findIndex(x=>x.txId===T);B>-1&&(A[B].status=I.err?"error":"success"),m==null||m([...A]),I.err||h()},"processed"),this.connection.getSignatureStatus(T)};return await h(),{txIds:A.map(T=>T.txId),signedTxs:g}}else{let P=[];for(let A=0;A<g.length;A+=1){let h=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:d});P.push(h)}return{txIds:P,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){let p=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=p,o=Pe(p,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=M(M({},this.cluster==="devnet"?{}:Vr),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let d of a)s[d]===void 0&&u.push(new On(d));let c=await _i({connection:this.connection,address:u});for(let[d,y]of Object.entries(c))s[d]=y;let l=new Mn({payerKey:this.feePayer,recentBlockhash:i?On.default.toBase58():await fn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new _n(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async d=>{var b;let{recentBlockHash:y,skipPreflight:f=!0}=d||{};if(y&&(m.message.recentBlockhash=y),jt([m]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let g=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:P,blockhash:A}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:P,signature:g},"confirmed"),{txId:g,signedTx:m}}if(this.signAllTransactions){let g=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(g[0],{skipPreflight:f}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return s.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var y;let{sequentially:l,onTxUpdate:m,recentBlockHash:p,skipPreflight:d=!0}=c||{};if(p&&s.forEach(f=>f.message.recentBlockhash=p),jt(s),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();return s.forEach((g,P)=>{a[P].find(A=>A.publicKey.equals(this.owner.publicKey))||g.sign([this.owner.signer])}),{txIds:await Promise.all(s.map(async g=>{let P=await this.connection.sendTransaction(g,{skipPreflight:d});return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:P},"confirmed"),P})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let b=0,g=[],P=async()=>{if(!f[b])return;let A=await this.connection.sendTransaction(f[b],{skipPreflight:d});g.push({txId:A,status:"sent",signedTx:f[b]}),m==null||m([...g]),b++,this.connection.onSignature(A,h=>{let T=g.findIndex(I=>I.txId===A);T>-1&&(g[T].status=h.err?"error":"success"),m==null||m([...g]),h.err||P()},"processed"),this.connection.getSignatureStatus(A)};return P(),{txIds:[],signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let P=await this.connection.sendTransaction(f[g],{skipPreflight:d});b.push(P)}return{txIds:b,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=Pe(c,["computeBudgetConfig"]),i=t?Nr(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>D(M({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],p=t?[...i.instructions,...m]:m,y=[...new Set(m.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(f=>new On(f));if(u.length<12&&Cn({instructions:p,payer:this.feePayer,signers:y})||Cn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Cn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new Nn().add(...i.instructions,...u)):s.push(new Nn().add(...u)),a.push(Array.from(new Set(u.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),u=[l]}}),u.length>0){let m=[...new Set(u.map(p=>p.keys.filter(d=>d.isSigner).map(d=>d.pubkey.toString())).flat()).values()].map(p=>o[p]).filter(p=>p!==void 0);Cn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(p=>p.publicKey)})?s.push(new Nn().add(...i.instructions,...u)):s.push(new Nn().add(...u)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var b;let{sequentially:m,onTxUpdate:p,recentBlockHash:d,skipPreflight:y=!0}=l||{},f=d!=null?d:await fn(this.connection);if(s.forEach(async(g,P)=>{g.recentBlockhash=f,a[P].length&&g.sign(...a[P])}),jt(s),(b=this.owner)!=null&&b.isKeyPair)return{txIds:await Promise.all(s.map(async(g,P)=>await Vi(this.connection,g,a[P].find(A=>A.publicKey.equals(this.owner.publicKey))?a[P]:[...a[P],this.owner.signer],{skipPreflight:y}))),signedTxs:s};if(this.signAllTransactions){let g=await this.signAllTransactions(s);if(m){let P=0,A=[],h=async()=>{if(!g[P])return;let T=await this.connection.sendRawTransaction(g[P].serialize(),{skipPreflight:y});A.push({txId:T,status:"sent",signedTx:g[P]}),p==null||p([...A]),P++,this.connection.onSignature(T,I=>{let B=A.findIndex(x=>x.txId===T);B>-1&&(A[B].status=I.err?"error":"success"),p==null||p([...A]),I.err||h()},"processed"),this.connection.getSignatureStatus(T)};return await h(),{txIds:A.map(T=>T.txId),signedTxs:g}}else{let P=[];for(let A=0;A<g.length;A+=1){let h=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:y});P.push(h)}return{txIds:P,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=b,o=Pe(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=M(M({},this.cluster==="devnet"?{}:Vr),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let g of a)s[g]===void 0&&u.push(new On(g));let c=await _i({connection:this.connection,address:u});for(let[g,P]of Object.entries(c))s[g]=P;let l=t?Nr(t):{instructions:[],instructionTypes:[]},m=await fn(this.connection),p=this.signers.reduce((g,P)=>D(M({},g),{[P.publicKey.toBase58()]:P}),{}),d=[],y=[],f=[];if(this.allInstructions.forEach(g=>{let P=[...f,g],A=t?[...l.instructions,...P]:P;if(f.length<12&&Rn({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||Rn({instructions:P,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(g);else{if(f.length===0)throw Error("item ins too big");let h={};for(let T of[...new Set(a)])s[T]!==void 0&&(h[T]=s[T]);if(t&&Rn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let T=new Mn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new _n(T))}else{let T=new Mn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new _n(T))}y.push(Array.from(new Set(f.map(T=>T.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(T=>p[T]).filter(T=>T!==void 0)),f=[g]}}),f.length>0){let P=[...new Set(f.map(A=>A.keys.filter(h=>h.isSigner).map(h=>h.pubkey.toString())).flat()).values()].map(A=>p[A]).filter(A=>A!==void 0);if(t&&Rn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Mn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new _n(A))}else{let A=new Mn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new _n(A))}y.push(P)}return{builder:this,transactions:d,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var I;let{sequentially:P,onTxUpdate:A,recentBlockHash:h,skipPreflight:T=!0}=g||{};if(d.map(async(B,x)=>{y[x].length&&B.sign(y[x]),h&&(B.message.recentBlockhash=h)}),jt(d),(I=this.owner)!=null&&I.isKeyPair){let{lastValidBlockHeight:B,blockhash:x}=await this.connection.getLatestBlockhash();return d.forEach((K,N)=>{y[N].find(E=>E.publicKey.equals(this.owner.publicKey))||K.sign([this.owner.signer])}),{txIds:await Promise.all(d.map(async K=>{let N=await this.connection.sendTransaction(K,{skipPreflight:T});return await this.connection.confirmTransaction({blockhash:x,lastValidBlockHeight:B,signature:N},"confirmed"),N})),signedTxs:d}}if(this.signAllTransactions){let B=await this.signAllTransactions(d);if(P){let x=0,K=[],N=async()=>{if(!B[x])return;let E=await this.connection.sendTransaction(B[x],{skipPreflight:T});K.push({txId:E,status:"sent",signedTx:B[x]}),A==null||A([...K]),x++,this.connection.onSignature(E,Q=>{let W=K.findIndex(j=>j.txId===E);W>-1&&(K[W].status=Q.err?"error":"success"),A==null||A([...K]),Q.err||N()},"processed"),this.connection.getSignatureStatus(E)};return N(),{txIds:[],signedTxs:B}}else{let x=[];for(let K=0;K<B.length;K+=1){let N=await this.connection.sendTransaction(B[K],{skipPreflight:T});x.push(N)}return{txIds:x,signedTxs:B}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};var yt=class{constructor(e){this._owner=e}get publicKey(){return yt.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return yt.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return yt.isKeyPair(this._owner)}get isPublicKey(){return yt.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!yt.isKeyPair(e)}};function Mi(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var Ns=r=>typeof r=="number";function Ms(r,e,t){let n=Ns(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function _s(r,e,t){let n=Ns(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}import{PublicKey as Se}from"@solana/web3.js";var Vs=new Se("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Es=new Se("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Vn=new Se("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),ny=new Se("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),ry=new Se("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Fi=new Se("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Fs=new Se("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),iy=new Se("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),oy=new Se("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),sy=new Se("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),el=new Se("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),tl=new Se("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),nl=new Se("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),rl=new Se("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),ay=new Se("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),uy=new Se("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),cy=new Se("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ly=new Se("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),my=new Se("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),dy=new Se("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),En={IDO_PROGRAM_ID_V1:el,IDO_PROGRAM_ID_V2:tl,IDO_PROGRAM_ID_V3:nl,IDO_PROGRAM_ID_V4:rl};import{PublicKey as il}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ol}from"@solana/spl-token";function fe(r,e,t){return ie([r.toBuffer(),(t!=null?t:ol).toBuffer(),e.toBuffer()],new il("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import bt from"bn.js";var Fn=1e4;function we(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=D(M({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new bt(o.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===Fn){let u=new bt(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=vn(r.mul(new bt(Fn)),new bt(Fn-o.transferFeeBasisPoints)),c=new bt(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=vn(l.mul(new bt(o.transferFeeBasisPoints)),new bt(Fn)),p=m.gt(s)?s:m;return{amount:l,fee:p,expirationTime:a}}else{let u=vn(r.mul(new bt(o.transferFeeBasisPoints)),new bt(Fn)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function Zt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function vn(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new bt(0))?t.add(new bt(1)):t}var _e={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://token.jup.ag/{type}",POOL_LIST:"/pools/info/list",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/mint",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",IDO_KEYS:"/ido/key/ids",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee"},Fy=M({},_e);var vs="ray_tab_hash",vi="ray_req_hash",sl=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(vs);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(vs,r)),r},Fr=async n=>{var i=n,{logCount:r=1e3,removeLastLog:e}=i,t=Pe(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(vi)||"[]").slice(0,r-1);e&&o.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),o.unshift(D(M({},t),{time:Date.now(),session:sl()}));try{localStorage.setItem(vi,JSON.stringify(o))}catch{if(e){let s=!1,a=JSON.stringify(t.data).substring(0,100);for(o[0].data=a+(a.length>100?"...":"");!s;){o.pop();let u=JSON.stringify(t.data).substring(0,100);o[0].data=u+(u.length>100?"...":"");try{localStorage.setItem(vi,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return Fr(D(M({},t),{logCount:r,removeLastLog:!0}))}};var vr=ae("Raydium_Api"),Wi=new Map;var Wr=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=i||1e3,this.api=ul.create({baseURL:this.urlConfigs.BASE_HOST||_e.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return vr.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(vr.error("Request failed"),Promise.reject(s))),this.api.interceptors.response.use(s=>{let{config:a,data:u,status:c}=s,{method:l,baseURL:m,url:p}=a;return n&&Fr({status:c,url:`${m}${p}`,params:a.params,data:u,logCount:this.logCount}),vr.debug(`${l==null?void 0:l.toUpperCase()} ${m}${p} ${c}`),u},s=>{let{config:a,response:u={}}=s,{status:c}=u,{method:l,baseURL:m,url:p}=a;return n&&Fr({status:c,url:`${m}${p}`,params:a.params,data:s.message,logCount:this.logCount}),vr.error(`${l.toUpperCase()} ${m}${p} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||_e.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||_e.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await this.api.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(i=>i.numSlots);return n.reduce((i,o)=>i+o,0)/n.length/60}async getChainTimeOffset(){return(await this.api.get(this.urlConfigs.CHAIN_TIME||_e.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||_e.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||_e.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||_e.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||_e.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:i="desc",page:o=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||_e.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${i}&page=${o}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||_e.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(s=>Wi.has(s)?(n.push(Wi.get(s)),!1):!0),o=[];return i.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||_e.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),o.forEach(a=>{Wi.set(a.id,a)})),n.concat(o)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:i="all",sort:o="default",order:s="desc",page:a=1}=e,[u,c]=[t&&pn(t).toBase58(),n&&n!=="undefined"?pn(n).toBase58():""],[l,m]=c&&u>c?[c,u]:[u,c];return console.log(123123555,`?mint1=${l}&mint2=${m}&poolType=${i}&poolSortField=${o}&sortType=${s}&pageSize=100&page=${a}`),(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||_e.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${i}&poolSortField=${o}&sortType=${s}&pageSize=100&page=${a}`)).data}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||_e.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||_e.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||_e.CHECK_AVAILABILITY)).data}};var Dr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",Ws="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as Zi,TOKEN_PROGRAM_ID as Xt,AccountLayout as bn,TOKEN_2022_PROGRAM_ID as El}from"@solana/spl-token";import{PublicKey as Hr,SystemProgram as Fl}from"@solana/web3.js";var Di=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Te=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ae(t)}createTxBuilder(e){return this.scope.checkOwner(),new Er({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(Di(e))}logInfo(...e){this.logger.info(Di(e))}logAndCreateError(...e){let t=Di(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as Ll,createCloseAccountInstruction as Ol,createTransferInstruction as Nl,TOKEN_PROGRAM_ID as yn}from"@solana/spl-token";import{PublicKey as Ml,SystemProgram as _l}from"@solana/web3.js";import Vl from"bn.js";import{PublicKey as ea,Keypair as Sl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Kl}from"@solana/spl-token";import Cl from"bn.js";import{PublicKey as Pl}from"@solana/web3.js";import Xs,{isBN as zs}from"bn.js";import{bits as cl,BitStructure as wb,blob as ll,Blob as Ab,cstr as Pb,f32 as kb,f32be as hb,f64 as Tb,f64be as Ib,greedy as xb,Layout as ml,ns64 as Bb,ns64be as Sb,nu64 as dl,nu64be as Kb,offset as Cb,s16 as Rb,s16be as Lb,s24 as Ob,s24be as Nb,s32 as pl,s32be as Mb,s40 as _b,s40be as Vb,s48 as Eb,s48be as Fb,s8 as vb,seq as fl,struct as Wb,Structure as yl,u16 as bl,u16be as Db,u24 as qb,u24be as Ub,u32 as gl,u32be as Gb,u40 as Xb,u40be as zb,u48 as Yb,u48be as Qb,u8 as wl,UInt as Al,union as Hb,Union as jb,unionLayoutDiscriminator as Zb,utf8 as $b}from"@solana/buffer-layout";var qr=ml,Ds=yl;var qi=Al;var qs=wl,It=bl;var Ui=gl;var Us=dl;var Ve=pl;var Gs=fl;var de=ll;var Gi=cl;var $t=class extends qr{constructor(t,n,i){super(t,i);this.blob=de(t),this.signed=n}decode(t,n=0){let i=new Xs(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new Xs(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},Ur=class extends qr{constructor(t){super(8,t);this._lower=Gi(Ui(),!1),this._upper=Gi(Ui(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let i=this._lower.decode(t,n),o=this._upper.decode(t,n+this._lower.span);return M(M({},i),o)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function _(r){return new qi(1,r)}function We(r){return new qi(4,r)}function w(r){return new $t(8,!1,r)}function z(r){return new $t(16,!1,r)}function Ys(r){return new $t(1,!0,r)}function Xr(r){return new $t(8,!0,r)}function Qs(r){return new $t(16,!0,r)}var Gr=class extends qr{constructor(t,n,i,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function S(r){return new Gr(de(32),e=>new Pl(e),e=>e.toBuffer(),r)}function Ee(r){return new Gr(qs(),kl,hl,r)}function kl(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function hl(r){return r?1:0}var Xi=class extends Ds{decode(e,t){return super.decode(e,t)}};function O(r,e,t){return new Xi(r,e,t)}function q(r,e,t){let n,i=typeof e=="number"?e:zs(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=zs(a)?a.toNumber():a,Reflect.set(o,"count",n)}return Reflect.get(o,s)},set(o,s,a){return s==="count"&&(n=a),Reflect.set(o,s,a)}});return Gs(r,i,t)}var qt=O([S("mint"),S("owner"),w("amount"),We("delegateOption"),S("delegate"),_("state"),We("isNativeOption"),w("isNative"),w("delegatedAmount"),We("closeAuthorityOption"),S("closeAuthority")]);function Tl(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function zi(r,...e){if(!Tl(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function Yi(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function Hs(r,e){zi(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Yr=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),gt=(r,e)=>r<<32-e|r>>>e;var pg=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Il(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Qi(r){return typeof r=="string"&&(r=Il(r)),zi(r),r}var zr=class{clone(){return this._cloneInto()}},fg={}.toString;function js(r){let e=n=>r().update(Qi(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function xl(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),u=n?4:0,c=n?0:4;r.setUint32(e+u,s,n),r.setUint32(e+c,a,n)}var Zs=(r,e,t)=>r&e^~r&t,$s=(r,e,t)=>r&e^r&t^e&t,Qr=class extends zr{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Yr(this.buffer)}update(e){Yi(this);let{view:t,buffer:n,blockLen:i}=this;e=Qi(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let u=Yr(e);for(;i<=o-s;s+=i)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Yi(this),Hs(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>i-s&&(this.process(n,0),s=0);for(let m=s;m<i;m++)t[m]=0;xl(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=Yr(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:o,destroyed:s,pos:a}=this;return e.length=i,e.pos=a,e.finished=o,e.destroyed=s,i%t&&e.buffer.set(n),e}};var Bl=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ut=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Gt=new Uint32Array(64),Hi=class extends Qr{constructor(){super(64,32,8,!1),this.A=Ut[0]|0,this.B=Ut[1]|0,this.C=Ut[2]|0,this.D=Ut[3]|0,this.E=Ut[4]|0,this.F=Ut[5]|0,this.G=Ut[6]|0,this.H=Ut[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:u}=this;return[e,t,n,i,o,s,a,u]}set(e,t,n,i,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)Gt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let p=Gt[m-15],d=Gt[m-2],y=gt(p,7)^gt(p,18)^p>>>3,f=gt(d,17)^gt(d,19)^d>>>10;Gt[m]=f+Gt[m-7]+y+Gt[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let p=gt(a,6)^gt(a,11)^gt(a,25),d=l+p+Zs(a,u,c)+Bl[m]+Gt[m]|0,f=(gt(n,2)^gt(n,13)^gt(n,22))+$s(n,i,o)|0;l=c,c=u,u=a,a=s+d|0,s=o,o=i,i=n,n=d+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,u,c,l)}roundClean(){Gt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Js=js(()=>new Hi);var Lg=ae("Raydium_Util");function ta({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:o,account:s}of t.value){let a=qt.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:fe(r,u,s.owner).publicKey.equals(o),isNative:!1,programId:s.owner}),i.push({pubkey:o,accountInfo:a,programId:s.owner})}return e&&n.push({mint:ea.default,amount:new Cl(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function De({fromPublicKey:r,programId:e=Kl}){let t=Sl.generate().publicKey.toBase58().slice(0,32);return{publicKey:Rl(r,t,e),seed:t}}function Rl(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=Js(n);return new ea(i)}function ji(r){let{mint:e,tokenAccount:t,owner:n,programId:i=yn}=r;return Ll(t,e,n,i)}function Nt(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:o=yn}=r;return Ol(e,t,i,n,o)}async function xt(r){let{connection:e,amount:t,commitment:n,payer:i,owner:o,skipCloseAccount:s}=r,a=await e.getMinimumBalanceForRentExemption(qt.span,n),u=X(t).add(new Vl(a)),c=De({fromPublicKey:i,programId:yn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[_l.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:qt.span,programId:yn}),ji({mint:new Ml(Re.address),tokenAccount:c.publicKey,owner:o,programId:yn})],instructionTypes:[V.CreateAccount,V.InitAccount],endInstructionTypes:s?[]:[V.CloseAccount],endInstructions:s?[]:[Nt({tokenAccount:c.publicKey,payer:i,owner:o})]}}function Wn({source:r,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:o=yn}){return Nl(r,e,t,BigInt(String(n)),i,o)}var Dn=class extends Te{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:i}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=i||[],this._clientOwnedToken=!!(n||i)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}updateTokenAccount({tokenAccounts:t,tokenAccountRawInfos:n}){return t&&(this._tokenAccounts=t),n&&(this._tokenAccountRawInfos=n),this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=void 0,this._clientOwnedToken=!0,this}addAccountChangeListener(t){return this._accountListener.push(t),this}removeAccountChangeListener(t){return this._accountListener=this._accountListener.filter(n=>n!==t),this}getAssociatedTokenAccount(t,n){return fe(this.scope.ownerPubKey,t,n).publicKey}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length)return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let i=M(M({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Xt},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:El},i.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=ta({owner:this.scope.ownerPubKey,solAccountResp:o,tokenAccountResp:{context:s.context,value:[...s.value,...a.value]}});return this._tokenAccounts=u,this._tokenAccountRawInfos=c,this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>this.fetchWalletTokenAccounts({forceUpdate:!0}),"confirmed"),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=Xt,associatedOnly:i=!0}){await this.fetchWalletTokenAccounts();let o=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,u)=>a.amount.lt(u.amount)?1:-1),s=this.getAssociatedTokenAccount(t,n);for(let a of o){let{publicKey:u}=a;if(u&&(!i||i&&s.equals(u)))return u}}async getOrCreateTokenAccount(t){var y,f,b;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:i,associatedOnly:o,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new Hr(t.tokenProgram||Xt),m=this.getAssociatedTokenAccount(n,new Hr(l)),p=(a?[]:this.tokenAccountRawInfos).filter(g=>g.accountInfo.mint.equals(n)&&(!o||g.pubkey.equals(m))).sort((g,P)=>g.accountInfo.amount.lt(P.accountInfo.amount)?1:-1);if(i===void 0||p.length>0)return p.length>0?{account:p[0].pubkey}:{};let d={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(o){let g=Zi(s,m,s,n,l);if(c){let P=await this.scope.connection.getAccountInfo(m);if(P===null)(y=d.instructions)==null||y.push(g),d.instructionTypes.push(V.CreateATA);else if(!(P.owner.equals(l)&&bn.decode(P.data).mint.equals(n)&&bn.decode(P.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else d.instructions.push(g),d.instructionTypes.push(V.CreateATA);if(n.equals(te)&&i.amount){let P=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(f=i.amount)!=null?f:0,skipCloseAccount:u});d.instructions.push(...P.instructions||[]),d.endInstructions.push(...P.endInstructions||[]),d.instructionTypes.push(...P.instructionTypes||[]),d.endInstructionTypes.push(...P.endInstructionTypes||[]),i.amount&&(d.instructions.push(Wn({source:P.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:Xt})),d.instructionTypes.push(V.TransferAmount))}return u||(d.endInstructions.push(Nt({owner:s,payer:i.payer||s,tokenAccount:m,programId:l})),d.endInstructionTypes.push(V.CloseAccount)),{account:m,instructionParams:d}}else if(n.equals(te)){let g=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(b=i.amount)!=null?b:0,skipCloseAccount:u});return d.instructions.push(...g.instructions||[]),d.endInstructions.push(...g.endInstructions||[]),d.signers.push(...g.signers||[]),d.instructionTypes.push(...g.instructionTypes||[]),d.endInstructionTypes.push(...g.endInstructionTypes||[]),{account:g.addresses.newAccount,instructionParams:d}}else{let g=De({fromPublicKey:s,programId:l}),P=await this.scope.connection.getMinimumBalanceForRentExemption(bn.span),A=Fl.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:g.seed,newAccountPubkey:g.publicKey,lamports:P,space:bn.span,programId:l});return d.instructions.push(A,ji({mint:n,tokenAccount:g.publicKey,owner:this.scope.ownerPubKey,programId:l})),d.instructionTypes.push(V.CreateAccount),d.instructionTypes.push(V.InitAccount),u||(d.endInstructions.push(Nt({owner:s,payer:i.payer||s,tokenAccount:g.publicKey,programId:l})),d.endInstructionTypes.push(V.CloseAccount)),{account:g.publicKey,instructionParams:d}}}async checkOrCreateAta({mint:t,programId:n=Xt,autoUnwrapWSOLToSOL:i}){var u;await this.fetchWalletTokenAccounts();let o=(u=this.scope.account.tokenAccounts.find(({mint:c})=>(c==null?void 0:c.toBase58())===t.toBase58()))==null?void 0:u.publicKey,s=this.scope.ownerPubKey,a={};if(!o){let c=this.getAssociatedTokenAccount(t,n),l=await Zi(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[V.CreateATA],o=c}return i&&te.toBase58()===t.toBase58()&&(a.endInstructions=[Nt({owner:s,payer:s,tokenAccount:o,programId:n})],a.endInstructionTypes=[V.CloseAccount]),{pubKey:o,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:i,mint:o,programId:s=Xt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,p=this.getAssociatedTokenAccount(o,s);if(new Hr(te).equals(o)){let d=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:i,skipCloseAccount:l});return M({tokenAccount:d.addresses.newAccount},d)}else if(!a||n==="out"&&!p.equals(a)&&!c){let d=[],y=Zi(this.scope.ownerPubKey,p,this.scope.ownerPubKey,o,s);if(m){let f=await this.scope.connection.getAccountInfo(p);if(f===null)d.push(y);else if(!(f.owner.equals(Xt)&&bn.decode(f.data).mint.equals(o)&&bn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${o.toString()}, ata: ${p.toString()}`)}else d.push(y);return{tokenAccount:p,instructions:d,instructionTypes:[V.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:i=Xt,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new Hr(te))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=l,d=Pe(l,["tokenAccount"]);u=p,c.addInstruction(d)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:i}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=m,d=Pe(m,["tokenAccount"]);u=p,c.addInstruction(d)}return M({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as om}from"@solana/spl-token";import{PublicKey as Ae,SystemProgram as sm}from"@solana/web3.js";import{PublicKey as ua}from"@solana/web3.js";var $i=O([_("instruction")]),Ji=O([_("instruction")]),vl=O([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),z("accRewardPerShare"),S("rewardVault"),S("rewardMint"),S("rewardSender"),w("rewardType"),q(w(),15,"padding")]),Wl=O([w("state"),w("nonce"),S("lpVault"),S("rewardVault"),S(),S(),w(),w(),w("totalReward"),z("perShareReward"),w("lastSlot"),w("perSlotReward")]),Dl=O([w("state"),w("nonce"),S("lpVault"),S("rewardVaultA"),w("totalRewardA"),z("perShareRewardA"),w("perSlotRewardA"),_("option"),S("rewardVaultB"),de(7),w("totalRewardB"),z("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),S()]),ql=O([w(),w("state"),w("nonce"),w("validRewardTokenNum"),z("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),S("lpMint"),S("lpVault"),q(vl,5,"rewardInfos"),S("creator"),S(),q(w(),32,"padding")]),na=new Proxy(Wl,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(M({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),ra=new Proxy(Dl,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(M({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),qn=new Proxy(ql,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(M({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return D(M({},o),{rewardType:((s=Object.entries(zt).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),Ul=O([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),eo=O([_("instruction"),w("nonce"),q(Ul,5,"rewardTimeInfo")]),to=O([_("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),no=O([_("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),cw=O([w("state"),S("id"),S("owner"),w("deposited"),q(w(),1,"rewardDebts")]),Un=O([w("state"),S("id"),S("owner"),w("deposited"),q(z(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),lw=O([w("state"),S("id"),S("owner"),w("deposited"),q(w(),2,"rewardDebts")]),ia=O([w("state"),S("id"),S("owner"),w("deposited"),q(z(),2,"rewardDebts"),q(w(),17)]),oa=O([w(),w("state"),S("id"),S("owner"),w("deposited"),q(z(),5,"rewardDebts"),q(w(),16)]),Ye=O([_("instruction"),w("amount")]),Gl=O([S("mint"),S("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),Ys("digitShift"),q(_(),7,"reserved1"),q(w(),7,"reserved2")]),sa=O([de(8),S("governanceProgramId"),S("realm"),S("realmGoverningTokenMint"),S("realmAuthority"),q(_(),32,"reserved1"),q(Gl,4,"votingMints"),Xr("timeOffset"),_("bump"),q(_(),7,"reserved2"),q(w(),11,"reserved3")]),Xl=O([Xr("startTime"),Xr("endTime"),_("kind"),q(_(),15,"reserved")]),zl=O([q(Xl,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),Ee("isUsed"),Ee("allowClawback"),_("votingMintConfigIdx"),q(_(),29,"reserved")]),aa=O([de(8),S("voterAuthority"),S("registrar"),q(zl,32,"deposits"),_("voterBump"),_("voterWweightRecordBump"),q(_(),94,"reserved")]);var ww=ae("Raydium_farm_config"),ca=new ua("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),la=new ua("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),ma={3:na,5:ra,6:qn},da={3:Un,5:ia,6:oa},ro=r=>[3,5,6].indexOf(r)!==-1,io=r=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=r,i=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,o={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${i}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${i}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${i}`}};return(s=o[e])==null?void 0:s.call(o)},zt={"Standard SPL":0,"Option tokens":1},wt={[Vs.toString()]:3,[Es.toString()]:5,[Vn.toString()]:6};import{PublicKey as re,SystemProgram as Jt,SYSVAR_RENT_PUBKEY as Hl,SYSVAR_CLOCK_PUBKEY as zn,TransactionInstruction as Oe}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as jl,TOKEN_PROGRAM_ID as nt,ASSOCIATED_TOKEN_PROGRAM_ID as Zl}from"@solana/spl-token";import Zr from"bn.js";function oo(r,e,t){return ie([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function so(r,e){return ie([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function ao(r,e){return ie([e.toBuffer()],r)}function uo(r,e,t){return ie([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function co(r,e,t){return ie([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function lo(r,e,t,n){return ie([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import $e from"bn.js";var Gn=ae("Raydium.farm.util");function Xn({programId:r,poolId:e,mint:t,type:n}){let{publicKey:i}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],r);return i}function Je({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}var pa=({programId:r,poolId:e})=>ie([e.toBuffer()],r);function fa(r){return{isSet:new $e(1),rewardPerSecond:X(r.perSecond),rewardOpenTime:X(r.openTime),rewardEndTime:X(r.endTime),rewardType:X(zt[r.rewardType])}}function mo(r){return X(r.endTime).sub(X(r.openTime)).mul(X(r.perSecond))}function jr(r){let e=da[r];return e||Gn.logWithError("invalid version",r),e}function Yl(r){let e=ma[r];return e||Gn.logWithError("invalid version",r),e}function Ql(r,e,t,n){if(r.version===3||r.version===5){if(r.lastSlot.gte(new $e(t)))return r;let i=new $e(t).sub(r.lastSlot);r.lastSlot=new $e(t);for(let o of r.rewardInfos){if(e.amount.eq(new $e(0)))continue;let s=o.perSlotReward.mul(i);o.perShareReward=o.perShareReward.add(s.mul(new $e(10).pow(new $e(r.version===3?9:15))).div(e.amount)),o.totalReward=o.totalReward.add(s)}}else if(r.version===6)for(let i of r.rewardInfos){if(i.rewardState.eq(new $e(0)))continue;let o=$e.min(new $e(n),i.rewardEndTime);if(i.rewardOpenTime.gte(o))continue;let a=o.sub(i.rewardLastUpdateTime).mul(i.rewardPerSecond),u=i.totalReward.sub(i.totalRewardEmissioned);u.lt(a)?(a=u,i.rewardLastUpdateTime=i.rewardLastUpdateTime.add(u.div(i.rewardPerSecond))):i.rewardLastUpdateTime=o,!e.amount.eq(new $e(0))&&(i.accRewardPerShare=i.accRewardPerShare.add(a.mul(r.rewardMultiplier).div(e.amount)),i.totalRewardEmissioned=i.totalRewardEmissioned.add(a))}return r}async function _w({connection:r,farmPools:e,owner:t,config:n,chainTime:i}){let o=!1,s=!1,a=new $e(10),u=[];for(let p of e){let d=pe(p);d.version===6?s=!0:o=!0,u.push({pubkey:d.id,version:d.version,key:"state",poolId:d.id},{pubkey:d.lpVault,version:d.version,key:"lpVault",poolId:d.id}),t&&u.push({pubkey:Je({programId:d.programId,poolId:d.id,owner:t,version:p.version}),version:d.version,key:"ledger",poolId:d.id})}let c={},l=await Ln(r,u,n);for(let{pubkey:p,version:d,key:y,poolId:f,accountInfo:b}of l){let g=f.toBase58();if(c[g]=M({},c[g]),y==="state"){let P=Yl(d);(!b||!b.data||b.data.length!==P.span)&&Gn.logWithError(`invalid farm state account info, pools.id, ${p}`),c[g].state=P.decode(b.data)}else if(y==="lpVault")(!b||!b.data||b.data.length!==qt.span)&&Gn.logWithError(`invalid farm lp vault account info, pools.lpVault, ${p}`),c[g].lpVault=qt.decode(b.data);else if(y==="ledger"){let P=jr(d);b&&b.data&&(b.data.length!==P.span&&Gn.logWithError(`invalid farm ledger account info, ledger, ${p}`),c[g].ledger=P.decode(b.data))}}let m=s||o?await r.getSlot():0;for(let p of Object.keys(c))c[p]!==void 0&&(c[p].state=Ql(c[p].state,c[p].lpVault,m,i));for(let[p,{state:d,ledger:y}]of Object.entries(c))if(y){let f=d.version===6?d.rewardMultiplier:d.rewardInfos.length===1?a.pow(new $e(9)):a.pow(new $e(15)),b=d.rewardInfos.map((g,P)=>{let A=y.rewardDebts[P];return y.deposited.mul(d.version===6?g.accRewardPerShare:g.perShareReward).div(f).sub(A)});c[p].wrapped=D(M({},c[p].wrapped),{pendingRewards:b})}return c}function Vw(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>Ms(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>_s(e,n.toNumber(),{unit:"s"})))return"closed pool"}else{let t=r.state.rewardInfos.map(({perSlotReward:n})=>n);if(t.length===2){if(String(t[0])==="0"&&String(t[1])!=="0")return"normal fusion pool";if(String(t[0])!=="0"&&String(t[1])!=="0")return"dual fusion pool";if(String(t[0])==="0"&&String(t[1])==="0")return"closed pool"}else if(t.length===1&&String(t[0])==="0")return"closed pool"}}async function po(r,e,t,n){let i=await r.getAccountInfo(e);if(i===null)throw Error("registrar info check error");let s=sa.decode(i.data).votingMints.findIndex(l=>l.mint.equals(n));if(s===-1)throw Error("find voter mint error");let a=await r.getAccountInfo(t);if(a===null)return{index:s,isInit:!1};let c=aa.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return c===-1?{index:s,isInit:!1}:{index:c,isInit:!0}}var $l=ae("Raydium_farm_instruction"),Yn={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};function ya(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,s={3:9,5:10}[e];s||$l.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc($i.span);$i.encode({instruction:s},a);let u=[k({pubkey:t}),k({pubkey:n}),k({pubkey:o,isWritable:!1}),k({pubkey:Jt.programId,isWritable:!1}),k({pubkey:Hl,isWritable:!1})];return{instruction:new Oe({programId:i,keys:u,data:a}),instructionType:V.FarmV3CreateLedger}}function ba(r){var n;let e=Buffer.alloc(eo.span);eo.encode({instruction:0,nonce:new Zr(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...Ti,k({pubkey:r.farmId}),k({pubkey:r.farmAuthority,isWritable:!1}),k({pubkey:r.lpVault}),k({pubkey:r.lpMint,isWritable:!1}),k({pubkey:r.lockVault}),k({pubkey:r.lockMint,isWritable:!1}),k({pubkey:(n=r.lockUserAccount)!=null?n:Ce}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];for(let i of r.rewardInfo)t.push(k({pubkey:i.rewardMint,isWritable:!1}),k({pubkey:i.rewardVault}),k({pubkey:i.userRewardToken}));return{instruction:new Oe({programId:r.programId,keys:t,data:e}),instructionType:V.FarmV6Create}}function ga(r){let e=Buffer.alloc(Ji.span);Ji.encode({instruction:5},e);let t=[k({pubkey:nt,isWritable:!1}),k({pubkey:r.id}),k({pubkey:r.authority,isWritable:!1}),k({pubkey:r.lpVault,isWritable:!1}),k({pubkey:r.rewardVault}),k({pubkey:r.userRewardToken}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];return{instruction:new Oe({programId:r.programId,keys:t,data:e}),instructionType:V.FarmV6CreatorWithdraw}}function Jl(r,e,t,n,i,o,s,a,u,c,l,m,p){let d=O([_("depositEntryIndex"),w("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:Br,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({depositEntryIndex:m,amount:p},f);let b=Buffer.from([...Yn.voterStakeRegistryDeposit,...f]);return new Oe({keys:y,programId:r,data:b})}function em(r,e,t,n){let i=O([]),o=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:Jt.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([...Yn.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new Oe({keys:o,programId:r,data:a})}function tm(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=O([_("depositEntryIndex"),w("amount")]),b=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:Br,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:d,amount:y},g);let P=Buffer.from([...Yn.voterStakeRegistryWithdraw,...g]);return new Oe({keys:b,programId:r,data:P})}function nm(r,e,t,n,i,o){let s=O([_("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:Jt.programId,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);return s.encode({ins:23},u),new Oe({keys:a,programId:r,data:u})}function rm(r,e,t,n,i,o,s,a){let u=O([_("voterBump"),_("voterWeightRecordBump")]),c=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:Jt.programId,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:Br,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({voterBump:s,voterWeightRecordBump:a},l);let m=Buffer.from([...Yn.voterStakeRegistryCreateVoter,...l]);return new Oe({keys:c,programId:r,data:m})}function im(r,e,t,n,i,o,s,a,u,c,l,m){let p=O([_("depositEntryIndex"),_("kind"),_("option"),w("startTs"),We("periods"),Ee("allowClawback")]),d=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Jt.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:Zl,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1}],y=Buffer.alloc(p.span);p.encode({depositEntryIndex:a,kind:u,option:c===void 0?0:1,startTs:c,periods:l,allowClawback:m},y);let f=Buffer.from([...Yn.voterStakeRegistryCreateDepositEntry,...y]);return new Oe({keys:d,programId:r,data:f})}async function Jw({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=oo(n,i,o).publicKey,l=Je({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let p=Un.decode(m.data),d=p.deposited.sub(p.voteLockedBalance);if(console.log("amount",d.toString()),d.eq(new Zr(0)))throw Error("user do not has new stake amount");let y=so(e,a).publicKey,f=ao(e,a).publicKey,{publicKey:b,nonce:g}=uo(n,c,s),P=fe(b,y,u).publicKey,{publicKey:A,nonce:h}=co(n,c,s),T=lo(t,i,o,s).publicKey,I=[],B=fe(s,y,u).publicKey;if(await r.getAccountInfo(B)===null&&I.push(jl(s,B,s,y)),await r.getAccountInfo(b)===null){let Q=nm(t,i,s,o,s,T);I.push(Q,rm(n,c,b,A,s,s,g,h))}let{index:N,isInit:E}=await po(r,c,b,y);return E||I.push(im(n,c,b,P,s,s,y,N,0,void 0,0,!1)),I.push(Jl(n,c,b,P,B,s,l,a,y,f,e,N,d),em(n,c,b,A)),I}async function eA({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=oo(n,i,o).publicKey,l=Je({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let p=Un.decode(m.data);if(p.voteLockedBalance.eq(new Zr(0)))throw Error("user has vote locked balance = 0");let d=so(e,a).publicKey,y=ao(e,a).publicKey,{publicKey:f}=uo(n,c,s),b=fe(f,d,u).publicKey,{publicKey:g}=co(n,c,s),P=lo(t,i,o,s).publicKey,A=[],{index:h,isInit:T}=await po(r,c,f,d);if(!T)throw Error("deposit entry index check error");return A.push(tm(n,c,f,s,P,g,b,fe(s,d,u).publicKey,l,a,d,y,e,h,p.voteLockedBalance)),A}function fo({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let o=Buffer.alloc(to.span);to.encode({instruction:3,rewardReopenTime:X(i.openTime),rewardEndTime:X(i.endTime),rewardPerSecond:X(i.perSecond)},o);let s=[k({pubkey:nt,isWritable:!1}),k({pubkey:n.id}),k({pubkey:n.lpVault,isWritable:!1}),k({pubkey:e}),k({pubkey:t}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new Oe({programId:n.programId,keys:s,data:o})}function yo({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let o=Buffer.alloc(no.span);no.encode({instruction:4,isSet:new Zr(1),rewardPerSecond:X(i.perSecond),rewardOpenTime:X(i.openTime),rewardEndTime:X(i.endTime),rewardType:X(zt[i.rewardType])},o);let s=[...Ti,k({pubkey:t.id}),k({pubkey:t.authority,isWritable:!1}),k({pubkey:i.mint,isWritable:!1}),k({pubkey:n}),k({pubkey:e}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new Oe({programId:t.programId,keys:s,data:o})}function tA(r){let{farmInfo:e,farmKeys:t,version:n,lpAccount:i,rewardAccounts:o,owner:s,instruction:a,amount:u,deposit:c}=r,[l,m]=[new re(e.programId),new re(e.id)],p=Je({programId:l,poolId:m,owner:s,version:n}),d=Buffer.alloc(Ye.span);Ye.encode({instruction:a,amount:u},d);let y=n===6?[k({pubkey:nt,isWritable:!1}),...c?[k({pubkey:Jt.programId,isWritable:!1})]:[],k({pubkey:m}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:new re(t.lpVault)}),k({pubkey:p}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:i})]:[k({pubkey:m}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:p}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:i}),k({pubkey:new re(t.lpVault)}),k({pubkey:o[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:zn,isWritable:!1}),k({pubkey:nt,isWritable:!1})];if(n===5)for(let f=1;f<t.rewardInfos.length;f++)y.push(k({pubkey:o[f]})),y.push(k({pubkey:new re(t.rewardInfos[f].vault)}));if(n===6)for(let f=0;f<t.rewardInfos.length;f++)y.push(k({pubkey:new re(t.rewardInfos[f].vault)})),y.push(k({pubkey:o[f]}));return new Oe({programId:l,keys:y,data:d})}function Qn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new re(e.programId),new re(e.id)],c=Je({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ye.span);Ye.encode({instruction:2,amount:X(s)},l);let m=[k({pubkey:nt,isWritable:!1}),k({pubkey:u}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:new re(t.lpVault)}),k({pubkey:c}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let p=0;p<t.rewardInfos.length;p++)m.push(k({pubkey:new re(t.rewardInfos[p].vault)})),m.push(k({pubkey:i[p]}));return new Oe({programId:a,keys:m,data:l})}function Hn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:12,amount:X(s)},m);let p=[k({pubkey:c}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new re(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:zn,isWritable:!1}),k({pubkey:nt,isWritable:!1})];for(let d=1;d<t.rewardInfos.length;d++)p.push(k({pubkey:i[d]})),p.push(k({pubkey:new re(t.rewardInfos[d].vault)}));if(a)for(let d of a)p.push(k({pubkey:d}));return new Oe({programId:u,keys:p,data:m})}function jn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:11,amount:X(s)},m);let p=[k({pubkey:c}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new re(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:zn,isWritable:!1}),k({pubkey:nt,isWritable:!1})];if(a)for(let d of a)p.push(k({pubkey:d}));return new Oe({programId:u,keys:p,data:m})}function wa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:10,amount:X(s)},m);let p=[k({pubkey:c}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new re(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:zn,isWritable:!1}),k({pubkey:nt,isWritable:!1})];if(a)for(let d of a)p.push(k({pubkey:d}));return new Oe({programId:u,keys:p,data:m})}function Aa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:11,amount:X(s)},m);let p=[k({pubkey:c}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new re(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:zn,isWritable:!1}),k({pubkey:nt,isWritable:!1})];for(let d=1;d<t.rewardInfos.length;d++)p.push(k({pubkey:i[d]})),p.push(k({pubkey:new re(t.rewardInfos[d].vault)}));if(a)for(let d of a)p.push(k({pubkey:d}));return new Oe({programId:u,keys:p,data:m})}function Pa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new re(e.programId),new re(e.id)],c=Je({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ye.span);Ye.encode({instruction:1,amount:X(s)},l);let m=[k({pubkey:nt,isWritable:!1}),k({pubkey:Jt.programId,isWritable:!1}),k({pubkey:u}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:new re(t.lpVault)}),k({pubkey:c}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let p=0;p<t.rewardInfos.length;p++)m.push(k({pubkey:new re(t.rewardInfos[p].vault)})),m.push(k({pubkey:i[p]}));return new Oe({programId:a,keys:m,data:l})}var Zn=class extends Te{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ce)){let n=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:mo(D(M({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:n,programId:i=Vn,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new Ae(e.lpMint.address),lockInfo:{lockMint:ca,lockVault:la},version:6,rewardInfos:t,programId:i},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=De({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(qn.span);u.addInstruction({instructions:[sm.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:qn.span,programId:a.programId})]});let{publicKey:p,nonce:d}=pa({programId:new Ae(a.programId),poolId:l.publicKey}),y=Xn({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let h of a.rewardInfos){h.openTime>=h.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",h.openTime.toString()),isNaN(zt[h.rewardType])&&this.logAndCreateError("rewardType error",h.rewardType),Number(h.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",h.perSecond),f.push(fa(h));let{rewardPubKey:T,newInstruction:I}=await this._getUserRewardInfo({rewardInfo:h,payer:c});I&&u.addInstruction(I),T||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let B=h.mint.equals(Ce)?new Ae(Re.address):h.mint;b.push({rewardMint:B,rewardVault:Xn({programId:a.programId,poolId:l.publicKey,mint:B,type:"rewardVault"}),userRewardToken:T})}let g=await this.scope.account.getCreatedTokenAccount({mint:a.lockInfo.lockMint});g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:P,instructionType:A}=ba({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:p,lpVault:y,lpMint:a.lpMint,lockVault:a.lockInfo.lockVault,lockMint:a.lockInfo.lockMint,lockUserAccount:g,programId:a.programId,rewardInfo:b,rewardInfoConfig:f,nonce:d});return u.addInstruction({instructions:[P],instructionTypes:[A]}).versionBuild({txVersion:o,extInfo:{farmId:l.publicKey,farmAuthority:p,lpVault:y,lockUserAccount:g,nonce:d}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:i}){var b;let o=wt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=pe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=t||this.scope.ownerPubKey,c=n.mint.equals(Ce)?new Ae(Re.address):n.mint,l=a.rewardInfos.findIndex(g=>new Ae(g.mint.address).equals(c)),m=s.rewardInfos[l];m||this.logAndCreateError("configuration does not exist","rewardMint",c);let p=(b=m.vault)!=null?b:Ce,d=this.createTxBuilder(),{rewardPubKey:y,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:n,payer:u});return f&&d.addInstruction(f),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),d.addInstruction({instructions:[fo({payer:this.scope.ownerPubKey,rewardVault:p,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[V.FarmV6Restart]}).versionBuild({txVersion:i})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:i}){var l;let o=wt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=pe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.forEach(m=>{m.openTime>=m.endTime&&this.logAndCreateError("start time error","newRewardInfo",m)});let u=t||this.scope.ownerPubKey,c=this.createTxBuilder();for(let m of n){let p=m.mint.equals(Ce)?new Ae(Re.address):m.mint,d=a.rewardInfos.findIndex(A=>new Ae(A.mint.address).equals(p)),y=s.rewardInfos[d];y||this.logAndCreateError("configuration does not exist","rewardMint",p);let f=(l=y.vault)!=null?l:Ce,{rewardPubKey:b,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:m,payer:u});g&&c.addInstruction(g),b||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let P=fo({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[P],instructionTypes:[V.FarmV6Restart]})}return c.versionBuild({txVersion:i})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:i,payer:o}=e,s=wt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=pe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=i.mint.equals(Ce)?new Ae(Re.address):i.mint,m=Xn({programId:new Ae(n.programId),poolId:new Ae(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:p,newInstruction:d}=await this._getUserRewardInfo({rewardInfo:i,payer:u});return d&&c.addInstruction(d),p||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),i.mint=l,c.addInstruction({instructions:[yo({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:m,rewardInfo:i})],instructionTypes:[V.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:i,payer:o}=e,s=wt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=pe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of i){let m=l.mint.equals(Ce)?new Ae(Re.address):l.mint,p=Xn({programId:new Ae(n.programId),poolId:new Ae(n.id),mint:m,type:"rewardVault"}),{rewardPubKey:d,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:l,payer:u});y&&c.addInstruction(y),d||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let f=yo({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:p,rewardInfo:D(M({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[V.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:i,feePayer:o,useSOLBalance:s,associatedOnly:a=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:c,computeBudgetConfig:l}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:m,programId:p}=n,d=wt[p];ro(d)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new Ae(n.programId),new Ae(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=Je({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:d}),P=this.createTxBuilder();P.addCustomComputeBudget(l);let A={};for(let W of this.scope.account.tokenAccounts)if(a){let j=fe(this.scope.ownerPubKey,W.mint,W.programId).publicKey;W.publicKey&&j.equals(W.publicKey)&&(A[W.mint.toString()]=W.publicKey)}else A[W.mint.toString()]=W.publicKey;let h=b.lpMint,T=A[h.address];T||this.logAndCreateError("you don't have any lp","lp zero",A);let I=[];for(let W of m){let j=s&&W.mint.address===te.toString(),ee=A[W.mint.address];if(!ee){let{account:oe,instructionParams:dt}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:W.mint.programId,mint:new Ae(W.mint.address),notUseTokenAccount:j,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!j,associatedOnly:j?!1:a,checkCreateATAOwner:u});ee=oe,dt&&P.addInstruction(dt)}A[W.mint.address]=ee,I.push(ee)}let B,x=await this.scope.connection.getAccountInfo(g);if(x&&(B=jr(d).decode(x.data)),n.programId!==Vn.toString()&&!B){let{instruction:W,instructionType:j}=ya({id:f,programId:y,version:d,ledger:g,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[W],instructionTypes:[j]})}let K=io({version:d,rewardInfos:m,rewardTokenAccountsPublicKeys:I});K&&this.logAndCreateError(K);let N={amount:X(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:T,rewardAccounts:I,userAuxiliaryLedgers:c==null?void 0:c.map(W=>new Ae(W))},E=d===6?Pa(N):d===5?Aa(N):wa(N),Q={3:V.FarmV3Deposit,5:V.FarmV5Deposit,6:V.FarmV6Deposit};return P.addInstruction({instructions:[E],instructionTypes:[Q[d]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:i,deposited:o,useSOLBalance:s,feePayer:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:l,computeBudgetConfig:m}=e,{rewardInfos:p}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let d=wt[n.programId];ro(d)||this.logAndCreateError("invalid farm program:",n.programId);let y=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],f=this.createTxBuilder();f.addCustomComputeBudget(m);let b={};for(let K of this.scope.account.tokenAccounts)if(u){let N=fe(this.scope.ownerPubKey,K.mint).publicKey;K.publicKey&&N.equals(K.publicKey)&&(b[K.mint.toString()]=K.publicKey)}else b[K.mint.toString()]=K.publicKey;if(o)o.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let K=Je({programId:new Ae(n.programId),poolId:new Ae(n.id),owner:this.scope.ownerPubKey,version:d}),N=await this.scope.connection.getAccountInfo(K);N||this.logAndCreateError("no lp data",{farmId:n.id,version:d,ledgerData:N}),jr(d).decode(N.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,P=s&&g===te.toString(),A=b[g.toString()];if(!A){let{account:K,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new Ae(g),notUseTokenAccount:P,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:P?!1:u,checkCreateATAOwner:c});A=K,N&&f.addInstruction(N)}b[g.toString()]=A;let h=[];for(let K of p){let N=s&&K.mint.address===te.toString(),E=b[K.mint.address];if(!E){let{account:Q,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:K.mint.programId,mint:new Ae(K.mint.address),notUseTokenAccount:N,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!N,associatedOnly:N?!1:u,checkCreateATAOwner:c});E=Q,W&&f.addInstruction(W)}b[K.mint.address]=E,h.push(E)}let T=io({version:d,rewardInfos:p,rewardTokenAccountsPublicKeys:h});T&&this.logAndCreateError(T);let I={amount:X(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:h,userAuxiliaryLedgers:l==null?void 0:l.map(K=>new Ae(K))},B=d===6?Qn(I):d===5?Hn(I):jn(I),x={3:V.FarmV3Withdraw,5:V.FarmV5Withdraw,6:V.FarmV6Withdraw};return f.addInstruction({instructions:[B],instructionTypes:[x[d]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var d;this.scope.checkOwner();let i=pe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),o=wt[e.programId];o!==6&&this.logAndCreateError("invalid farm version",o);let s=e.rewardInfos.findIndex(y=>y.mint.address===Ce.toString()?new Ae(Re.address):t),a=i.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(d=a==null?void 0:a.vault)!=null?d:Ce,c=this.createTxBuilder(),l;if(t.equals(Ce)){let y=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:mo(D(M({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new F(a.perSecond).mul(10**a.mint.decimals).toString()}))});l=y.addresses.newAccount,c.addInstruction(y)}else{let y=await this.scope.account.getCreatedTokenAccount({mint:t});y===null?(l=await this.scope.account.getAssociatedTokenAccount(t),c.addInstruction({instructions:[om(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[V.CreateATA]})):l=y}let{instruction:m,instructionType:p}=ga({programId:i.programId,id:i.id,authority:i.authority,lpVault:i.lpVault,rewardVault:u,userRewardToken:l,owner:this.scope.ownerPubKey});return c.addInstruction({instructions:[m],instructionTypes:[p]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:u,computeBudgetConfig:c}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(o){let f=fe(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(m[y.mint.toString()]=y.publicKey)}else m[y.mint.toString()]=y.publicKey;let d=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>D(M({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:P}=y,A=wt[f],h=b.address,T=n&&h===te.toString(),I=m[h];if(!I){let{account:Q,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new Ae(h),notUseTokenAccount:T,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:T?!1:o,checkCreateATAOwner:s});I=Q,W&&l.addInstruction(W)}m[h.toString()]=I;let B=[];for(let Q of g){let W=n&&Q.mint.address===te.toString(),j=m[Q.mint.address];if(!j){let{account:ee,instructionParams:oe}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Q.mint.programId,mint:new Ae(Q.mint.address),notUseTokenAccount:W,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!W,associatedOnly:W?!1:o,checkCreateATAOwner:s});j=ee,oe&&l.addInstruction(oe)}m[Q.mint.address]=j,B.push(j)}let x=d[P],K={amount:ze,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:I,rewardAccounts:B,userAuxiliaryLedgers:a==null?void 0:a.map(Q=>new Ae(Q))},N=A===6?Qn(K):A===5?Hn(K):jn(K),E={3:V.FarmV3Withdraw,5:V.FarmV5Withdraw,6:V.FarmV6Withdraw};l.addInstruction({instructions:[N],instructionTypes:[E[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as et}from"@solana/web3.js";import{NATIVE_MINT as nu,TOKEN_PROGRAM_ID as oi}from"@solana/spl-token";var IA=O([We("mintAuthorityOption"),S("mintAuthority"),w("supply"),_("decimals"),_("isInitialized"),We("freezeAuthorityOption"),S("freezeAuthority")]);import{PublicKey as am}from"@solana/web3.js";import{MintLayout as ka,TOKEN_PROGRAM_ID as um}from"@solana/spl-token";var OA=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new am(e));return!t||t.data.length!==ka.span?void 0:ka.decode(t.data)},NA=({mint:r,decimals:e,programId:t=um,logoURI:n="",priority:i=3})=>{let o=r.toBase58().substring(0,6);return{address:r.toBase58(),decimals:e,symbol:o,logoURI:n,extensions:{},chainId:101,programId:t.toString(),name:o,tags:[],priority:i}},ha=r=>new he({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),MA=i=>{var o=i,{amount:r,isRaw:e,name:t}=o,n=Pe(o,["amount","isRaw","name"]);return new xe(new he({mint:n.address,decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function _A(r){return r.address===ht.address?Re:r}function VA(r){return r.address===Re.address?ht:r}import{TOKEN_PROGRAM_ID as $n,ASSOCIATED_TOKEN_PROGRAM_ID as Tm}from"@solana/spl-token";import{PublicKey as ye,TransactionInstruction as Mt,SystemProgram as ho,SYSVAR_RENT_PUBKEY as Im}from"@solana/web3.js";var bo=O([_("instruction"),w("amountIn"),w("minAmountOut")]),go=O([_("instruction"),w("maxAmountIn"),w("amountOut")]),QA=O([_("instruction"),_("nonce")]),wo=O([_("instruction"),_("nonce"),w("startTime")]),cm=O([w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalValue"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),w("swapBase2QuoteFee"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("withdrawQueue"),S("lpVault"),S("owner"),w("lpReserve"),q(w(),3,"padding")]),lm=O([w("accountType"),w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalsValue"),w("abortTradeFactor"),w("priceTickMultiplier"),w("priceTick"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("modelDataAccount"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("owner"),q(w(),64,"padding")]),Ao=O([_("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),Po=O([_("instruction"),w("amountIn")]),HA={4:cm,5:lm},Ta=O([w("fee")]);import{PublicKey as mm}from"@solana/web3.js";var wn=new mm("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),tn=5e4,dm=O([w("x"),w("y"),w("price")]),pm=O([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(dm,tn,"DataElement")]);function fm(r,e){return[0,tn-2]}function ym(r){return[0,tn-2]}function bm(r){return[0,tn-2]}function gm(r,e,t){let[n,i]=fm(e,t),o=n,s=i,a=0,u=e*r.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=tn-2)return[a,a,!1];let c=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,m=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)s=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];o=a+1}}return[a,a,!1]}function ko(r,e,t){let[n,i,o]=gm(r,e,t);if(!o)return 0;if(n===i){let s=r.DataElement[n].x;return e*r.multiplier/s}else{let s=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-s*c),m=s*l,p=(u-s)*(e*a-s*t)*c,d=m+p;return e*r.multiplier*l/d}}function en(r,e,t){return e*r.multiplier/t}function Ia(r,e,t){return e*t/r.multiplier}function wm(r,e){let[t,n]=ym(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>tn-2)return[s,s,!1];let u=r.DataElement[s].x,c=r.DataElement[s-1].x,l=r.DataElement[s+1].x;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<c)o=s-1;else{if(a>c&&a<u)return[s-1,s,!0];if(a>u&&a<l)return[s,s+1,!0];i=s+1}}return[s,s,!1]}function Am(r,e){let[t,n]=bm(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=tn-2)return[s,s,!1];let u=r.DataElement[s].y,c=r.DataElement[s-1].y,l=r.DataElement[s+1].y;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)i=s+1;else{if(a<c&&a>u)return[s-1,s,!0];if(a<u&&a>l)return[s,s+1,!0];o=s-1}}return[s,s,!1]}function xa(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=wm(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].y,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,p=r.DataElement[o].y,d=r.DataElement[s].y;if(e>=u&&e<=c)return n?[m,d,!0,a]:[l,p,!0,a];{let y,f;return n?(y=l+(m-l)*(e-u)/(c-u),f=p-(i-u)*r.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=d+(c-i)*r.multiplier/l),[y,f,!1,a]}}}function Pm(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=Am(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].x,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,p=r.DataElement[o].y,d=r.DataElement[s].y;if(e>=d&&e<=p)return n?[m,c,!0,a]:[l,u,!0,a];{let y,f;return n?(y=l+(m-l)*(p-e)/(p-d),f=u+m*(p-i)/r.multiplier):(y=l+(m-l)*(p-e)/(p-d),f=c-l*(i-d)/r.multiplier),[y,f,!1,a]}}}function km(r,e){let t=xa(r,e,0,!1);return t[3]?t[0]:0}function Ba(r,e,t,n){let i=ko(r,e,t),o=en(r,e,i),s=en(r,t,i),a=en(r,n,i),u=!0,[c,l,m,p]=xa(r,o,a,u);if(!p)return 0;if(m)return n*r.multiplier/c;{let d=s-l;return Ia(r,d,i)}}function Sa(r,e,t,n){let i=ko(r,e,t),o=en(r,e,i),s=en(r,t,i),a=en(r,n,i),u=!1,[c,l,m,p]=Pm(r,s,a,u);if(!p)return 0;if(m)return n*c/r.multiplier;{let d=o-l;return Ia(r,d,i)}}function hm(r){let e=pm.decode(r);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function Ka(r,e,t,n){let i=km(r,en(r,e,ko(r,e,t)))/r.multiplier;return n?i:1/i}var gn=class{constructor({connection:e}){this._layoutData={accountType:0,status:0,multiplier:0,validDataCount:0,DataElement:[]};this.connection=e}get stableModelData(){return this._layoutData}async initStableModelLayout(){if(this._layoutData.validDataCount===0&&this.connection){let e=await this.connection.getAccountInfo(wn);e&&(this._layoutData=hm(e==null?void 0:e.data))}}};var Ca=ae("Raydium_liquidity_instruction");function Ra(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(Ao.span);Ao.encode({instruction:3,baseAmountIn:X(i),quoteAmountIn:X(o),fixedSide:s==="base"?ze:hs},a);let u=[k({pubkey:$n,isWritable:!1}),k({pubkey:new ye(e.id)}),k({pubkey:new ye(t.authority),isWritable:!1}),k({pubkey:new ye(t.openOrders),isWritable:!1}),k({pubkey:new ye(t.targetOrders)}),k({pubkey:new ye(e.lpMint.address)}),k({pubkey:new ye(t.vault.A)}),k({pubkey:new ye(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(k({pubkey:wn})),u.push(k({pubkey:new ye(e.marketId),isWritable:!1}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:new ye(t.marketEventQueue),isWritable:!1})),new Mt({programId:new ye(e.programId),keys:u,data:a})}function To(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=pe(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(Po.span);Po.encode({instruction:4,amountIn:X(i)},a);let u=[k({pubkey:$n,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.authority,isWritable:!1}),k({pubkey:o.openOrders}),k({pubkey:o.targetOrders}),k({pubkey:o.mintLp.address}),k({pubkey:o.vault.A}),k({pubkey:o.vault.B})];return s===5?u.push(k({pubkey:wn})):(u.push(k({pubkey:o.id})),u.push(k({pubkey:o.id}))),u.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks})),new Mt({programId:o.programId,keys:u,data:a})}return new Mt({programId:o.programId,keys:[]})}function La({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:o,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:p,marketId:d,userWallet:y,userCoinVault:f,userPcVault:b,userLpVault:g,nonce:P,openTime:A,coinAmount:h,pcAmount:T,ammConfigId:I,feeDestinationId:B}){let x=O([_("instruction"),_("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),K=[{pubkey:$n,isSigner:!1,isWritable:!1},{pubkey:Tm,isSigner:!1,isWritable:!1},{pubkey:ho.programId,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:I,isSigner:!1,isWritable:!1},{pubkey:B,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0}],N=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:P,openTime:A,coinAmount:h,pcAmount:T},N),{instruction:new Mt({keys:K,programId:r,data:N}),instructionType:V.AmmV4CreatePool}}function mP(r){let e=O([_("instruction"),_("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new ye(r.id),isWritable:!1}),k({pubkey:new ye(r.authority),isWritable:!1}),k({pubkey:new ye(r.openOrders),isWritable:!1}),k({pubkey:new ye(r.vault.A),isWritable:!1}),k({pubkey:new ye(r.vault.B),isWritable:!1}),k({pubkey:new ye(r.mintLp.address),isWritable:!1}),k({pubkey:new ye(r.marketId),isWritable:!1}),k({pubkey:new ye(r.marketEventQueue),isWritable:!1})];return new Mt({programId:new ye(r.programId),keys:n,data:t})}function xm({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=pe(r),s=Buffer.alloc(bo.span);bo.encode({instruction:9,amountIn:X(t),minAmountOut:X(n)},s);let a=[k({pubkey:$n,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.authority,isWritable:!1}),k({pubkey:o.openOrders})];return i===4&&a.push(k({pubkey:o.targetOrders})),a.push(k({pubkey:o.vault.A}),k({pubkey:o.vault.B})),i===5&&a.push(k({pubkey:wn})),a.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1})),new Mt({programId:o.programId,keys:a,data:s})}function Bm({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=pe(r),s=Buffer.alloc(go.span);go.encode({instruction:11,maxAmountIn:X(t),amountOut:X(n)},s);let a=[k({pubkey:ho.programId,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.authority,isWritable:!1}),k({pubkey:o.openOrders}),k({pubkey:o.targetOrders}),k({pubkey:o.vault.A}),k({pubkey:o.vault.B})];return i===5&&a.push(k({pubkey:wn})),a.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Mt({programId:o.programId,keys:a,data:s})}function $r(r){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:o,fixedSide:s}=r;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return xm(D(M({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Bm(D(M({},a),{maxAmountIn:i,amountOut:o}),t);Ca.logWithError("invalid params","params",r)}throw Ca.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function dP({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(wo.span);wo.encode({instruction:0,nonce:5,startTime:X(t)},n);let i=pe(r),o=[k({pubkey:$n,isWritable:!1}),k({pubkey:ho.programId,isWritable:!1}),k({pubkey:Im,isWritable:!1}),k({pubkey:i.id}),k({pubkey:i.authority,isWritable:!1}),k({pubkey:i.openOrders}),k({pubkey:i.mintLp.address}),k({pubkey:i.mintA.address,isWritable:!1}),k({pubkey:i.mintB.address,isWritable:!1}),k({pubkey:i.vault.A,isWritable:!1}),k({pubkey:i.vault.B,isWritable:!1}),k({pubkey:i.id}),k({pubkey:i.targetOrders}),k({pubkey:e.lpTokenAccount}),k({pubkey:i.id,isWritable:!1}),k({pubkey:i.marketProgramId,isWritable:!1}),k({pubkey:i.marketId,isWritable:!1}),k({pubkey:e.payer,isSigner:!0})];return new Mt({programId:i.programId,keys:o,data:n})}function Oa({poolKeys:r}){let e=O([_("instruction"),_("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new ye(r.id),isWritable:!1}),k({pubkey:new ye(r.authority),isWritable:!1}),k({pubkey:new ye(r.openOrders),isWritable:!1}),k({pubkey:new ye(r.vault.A),isWritable:!1}),k({pubkey:new ye(r.vault.B),isWritable:!1}),k({pubkey:new ye(r.mintLp.address),isWritable:!1}),k({pubkey:new ye(r.marketId),isWritable:!1}),k({pubkey:new ye(r.marketEventQueue),isWritable:!1})];return{instruction:new Mt({programId:new ye(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as Fe,TOKEN_2022_PROGRAM_ID as Qt,ASSOCIATED_TOKEN_PROGRAM_ID as Qa}from"@solana/spl-token";import{PublicKey as v,TransactionInstruction as At,SystemProgram as An,Keypair as Lo}from"@solana/web3.js";import Ha from"bn.js";import Em from"bn.js";function Na(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function fP(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function yP(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function Jr(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function Io(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function xo(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function Jn(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Ma(r,e){return Jn(r,e)?null:Io(r,e)}function _a(r,e){return Jn(r,e)?null:xo(r,e)}var Sm=Buffer.from("amm_config","utf8"),Km=Buffer.from("pool","utf8"),Cm=Buffer.from("pool_vault","utf8"),Rm=Buffer.from("pool_reward_vault","utf8"),Va=Buffer.from("position","utf8"),Lm=Buffer.from("tick_array","utf8"),Om=Buffer.from("operation","utf8"),Nm=Buffer.from("pool_tick_array_bitmap_extension","utf8");function AP(r,e){return ie([Sm,Na(e)],r)}function Ea(r,e,t,n){return ie([Km,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function Bo(r,e,t){return ie([Cm,e.toBuffer(),t.toBuffer()],r)}function Fa(r,e,t){return ie([Rm,e.toBuffer(),t.toBuffer()],r)}function be(r,e,t){return ie([Lm,e.toBuffer(),Jr(t)],r)}function nn(r,e,t,n){return ie([Va,e.toBuffer(),Jr(t),Jr(n)],r)}function at(r,e){return ie([Va,e.toBuffer()],r)}function ei(r){return ie([Buffer.from("metadata","utf8"),dn.toBuffer(),r.toBuffer()],dn)}function er(r){return ie([Om],r)}function ut(r,e){return ie([Nm,e.toBuffer()],r)}import Bt from"bn.js";var me=new Bt(0),rt=new Bt(1),_t=new Bt(-1),it=new Bt(1).shln(64),ti=new Bt(1).shln(128),So=it.sub(rt),tr=64,va=ti.subn(1),qe=-443636,Qe=-qe,St=new Bt("4295048016"),Kt=new Bt("79226673521066979257578248091"),Wa=16,Da="59543866431248",qa="184467440737095516",Ua="15793534762490258745",ni=new Bt(10).pow(new Bt(6)),Mm=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(Mm||{}),hP={[500]:10,[3e3]:60,[1e4]:200},TP={version:6,liquidity:me,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:me,feeGrowthGlobalX64B:me,protocolFeesTokenA:me,protocolFeesTokenB:me,swapInAmountTokenA:me,swapOutAmountTokenB:me,swapInAmountTokenB:me,swapOutAmountTokenA:me,tickArrayBitmap:[],rewardInfos:[],day:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},week:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},month:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},tvl:0},Ga={tvl:0,volumeQuote:0,mintAmountA:0,mintAmountB:0,rewardDefaultInfos:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,day:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},week:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},month:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},pooltype:[]},IP=new Bt("18446744073700000000");var _m=15,ce=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=U.getTickArrayStartIndexByTick(i,o),l=U.getInitializedTickArrayInRange(s,a,o,c,Math.floor(_m/2));for(let d=0;d<l.length;d++){let{publicKey:y}=be(t,n,l[d]);u.push(y)}let m=(await Tt(e,u)).map(d=>d!==null?nr.decode(d.data):null),p={};for(let d=0;d<u.length;d++){let y=m[d];y!==null&&(p[y.startTickIndex]=D(M({},y),{address:u[d]}))}return p}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=U.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:p,tickArrayStartTickIndex:d}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,p,d]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/ce.tickCount(t)),a=n?U.searchLowBitFromStart(i,o,s-1,1,t):U.searchHightBitFromStart(i,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let a=Le-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<Le;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=be(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=U.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u-1}else for(u=u+1;u<Le;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u+1}let{publicKey:m}=be(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(U.checkIsOutOfBoundary(e)){if(e>Qe)return!1;let n=U.getTickArrayStartIndexByTick(qe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Le*e}};import ne from"bn.js";import{PublicKey as Yt}from"@solana/web3.js";import Be from"bn.js";var Ko=14,Vt=class{static maxTickInTickarrayBitmap(e){return e*Le*rn}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let o=n*i;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!ce.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-ce.tickCount(n):t+ce.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*Le,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=Ma(1024,l);if(m!==null){let p=(c-m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=_a(1024,l);if(m!==null){let p=(c+m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:o-ce.tickCount(n)}}}},rr=class{static getBitmapOffset(e,t){if(!ce.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Vt.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=Vt.maxTickInTickarrayBitmap(e),n=-t;if(Qe<=t)throw Error(`extensionTickBoundary check error: ${Qe}, ${t}`);if(n<=qe)throw Error(`extensionTickBoundary check error: ${n}, ${qe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:U.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=ce.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:s}=Vt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=U.mergeTickArrayBitmap(e).shln(rn-1-a),c=Jn(512,u)?null:Io(512,u);if(c!==null){let l=t-c*ce.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=U.mergeTickArrayBitmap(e).shrn(a),c=Jn(512,u)?null:xo(512,u);if(c!==null){let l=t+c*ce.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-ce.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Vt.maxTickInTickarrayBitmap(t),i=Math.floor(n/ce.tickCount(t));return e<0&&n!=0&&(i=rn-i),i}};import Ct from"bn.js";var ir=class{static getfeeGrowthInside(e,t,n){let i=new Ct(0),o=new Ct(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new Ct(0),a=new Ct(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=$.wrappingSubU128($.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=$.wrappingSubU128($.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,it),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,it),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,it),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,it),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.mulDivFloor(l,t.liquidity,it),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.mulDivFloor(l,t.liquidity,it),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Ct(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ct(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push($.wrappingSubU128($.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Ct(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ct(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push($.wrappingSubU128($.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var b,g,P,A;let a=Z.priceToSqrtPriceX64(new F(e.price),e.mintA.decimals,e.mintB.decimals),u=Z.getSqrtPriceX64FromTick(t.tickLower),c=Z.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=ue.getAmountsFromLiquidity(a,u,c,n,o),[p,d]=[we(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),we(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[we(new Ct(new F(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),we(new Ct(new F(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:p,amountB:d,amountSlippageA:y,amountSlippageB:f,expirationTime:Zt(p.expirationTime,d.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Xa}from"@solana/spl-token";var Ue=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:y}=on.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,c,o);return a.push(...p),{expectedAmountOut:m.mul(_t),remainingAccounts:a,executionPrice:d,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=be(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:y}=on.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(_t),c,o);return a.push(...p),{expectedAmountIn:m,remainingAccounts:a,executionPrice:d,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Ue.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?rr.checkTickArrayIsInit(ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):U.checkTickArrayIsInitialized(U.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=be(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=be(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/ce.tickCount(e.tickSpacing)),i=t?U.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):U.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=Vt.nextInitializedTickArrayStartIndex(U.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=rr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<qe||t>Qe)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],p=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(p===void 0)throw Error("get new reward mint info error");let d=D(M({},m),{perSecond:$.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Yt(p)});if(d.tokenMint.equals(Yt.default))continue;if(n<=d.openTime.toNumber()||i.eq(me)){s.push(d);continue}let y=new Be(Math.min(d.endTime.toNumber(),n)),f=y.sub(d.lastUpdateTime),b=$.mulDivFloor(f,d.emissionsPerSecondX64,i),g=d.rewardGrowthGlobalX64.add(b),P=$.mulDivFloor(f,d.emissionsPerSecondX64,it),A=d.rewardTotalEmissioned.add(P);s.push(D(M({},d),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:A,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=U.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=Vt.maxTickInTickarrayBitmap(e),n=-t;return t>Qe&&(t=ce.getArrayStartIndex(Qe,e)+ce.tickCount(e)),n<qe&&(n=ce.getArrayStartIndex(qe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!ce.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/ce.tickCount(t)*rn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await Ln(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=za.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=U.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=U.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:p}=be(u.programId,u.id,m);o.push({pubkey:p}),i[p.toString()]=u.id}}let s=await Ln(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=nr.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=D(M({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(p=>p.accountInfo.mint),c=[];for(let p of u)for(let d of s)c.push(at(d,p).publicKey);let l=await Tt(t,c,{batchRequest:i}),m={};for(let p of l){if(p===null)continue;let d=ii.decode(p.data),y=d.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=U._getTickPriceLegacy({poolInfo:b,tick:d.tickLower,baseIn:!0}),P=U._getTickPriceLegacy({poolInfo:b,tick:d.tickUpper,baseIn:!0}),{amountA:A,amountB:h}=ue.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,P.tickSqrtPriceX64,d.liquidity,!1),T=1/(1-Math.sqrt(Math.sqrt(g.price.div(P.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:d.poolId,nftMint:d.nftMint,priceLower:g.price,priceUpper:P.price,amountA:A,amountB:h,tickLower:d.tickLower,tickUpper:d.tickUpper,liquidity:d.liquidity,feeGrowthInsideLastX64A:d.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:d.feeGrowthInsideLastX64B,tokenFeesOwedA:d.tokenFeesOwedA,tokenFeesOwedB:d.tokenFeesOwedB,rewardInfos:d.rewardInfos.map(x=>D(M({},x),{pendingReward:new Be(0)})),leverage:T,tokenFeeAmountA:new Be(0),tokenFeeAmountB:new Be(0)}];let I=await U.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickLower,f.state.tickSpacing),B=await U.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickLower}`]=I,m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickUpper}`]=B}if(o){let p=Object.values(m),d=await Tt(t,p,{batchRequest:i}),y={};for(let f=0;f<p.length;f++){let b=d[f];if(b===null)continue;let g=p[f].toString();y[g]=nr.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let g of b){let P=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,h=y[m[P].toString()],T=y[m[A].toString()],I=h.ticks[U.getTickOffsetInArray(g.tickLower,f.tickSpacing)],B=T.ticks[U.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:K}=await ir.GetPositionFees(f,g,I,B),N=await ir.GetPositionRewards(f,g,I,B);g.tokenFeeAmountA=x.gte(new Be(0))?x:new Be(0),g.tokenFeeAmountB=K.gte(new Be(0))?K:new Be(0);for(let E=0;E<N.length;E++)g.rewardInfos[E].pendingReward=N[E].gte(new Be(0))?N[E]:new Be(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new F(0)}){var N;let u,c=n.toBase58()===e.mintA.address,[l,m]=c?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new F(0))?u=c?St.add(new Be(1)):Kt.sub(new Be(1)):u=Z.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=we(o,l,i,!1),{expectedAmountOut:d,remainingAccounts:y,executionPrice:f,feeAmount:b}=Ue.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((N=p.fee)!=null?N:me),u),g=we(d,m,i,!1),P=Z.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?P:new F(1).div(P),h=d.mul(new Be(Math.floor((1-s)*1e10))).div(new Be(1e10)),T=we(h,m,i,!1),I=c?e.currentPrice:new F(1).div(e.currentPrice),B=new F(A).sub(I).abs(),x=I,K=new tt(new F(B).mul(10**15).toFixed(0),new F(x).mul(10**15).toFixed(0));return{realAmountIn:p,amountOut:g,minAmountOut:T,expirationTime:Zt(p.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:K,fee:b,remainingAccounts:y}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s}){let a=i.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new he(D(M({},u),{mint:u.address,isToken2022:u.programId===Xa.toBase58()})),new he(D(M({},c),{mint:c.address,isToken2022:c.programId===Xa.toBase58()}))],{realAmountIn:p,amountOut:d,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:P,fee:A,remainingAccounts:h}=await Ue.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Yt(u.address),amountIn:n,slippage:o,epochInfo:s}),T=D(M({},p),{amount:new xe(l,p.amount),fee:p.fee===void 0?void 0:new xe(l,p.fee)}),I=D(M({},d),{amount:new xe(m,d.amount),fee:d.fee===void 0?void 0:new xe(m,d.fee)}),B=D(M({},y),{amount:new xe(m,y.amount),fee:y.fee===void 0?void 0:new xe(m,y.fee)}),x=new st({baseToken:l,denominator:new Be(10).pow(new Be(20+l.decimals)),quoteToken:m,numerator:b.mul(new F(10**(20+m.decimals))).toFixed(0)}),K=new st({baseToken:l,denominator:new Be(10).pow(new Be(20+l.decimals)),quoteToken:m,numerator:g.mul(new F(10**(20+m.decimals))).toFixed(0)}),N=new xe(l,A);return{realAmountIn:T,amountOut:I,minAmountOut:B,expirationTime:f,currentPrice:x,executionPrice:K,priceImpact:P,fee:N,remainingAccounts:h}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var y,f,b;let o=e[t],s=U.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=U.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,p=o.priceMax-o.priceMin,d;return l<=0?d=0:m===l?d=p/l:p===l?d=l/m:d=l/p*(l/m),{feeApr:o.feeApr*d,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*d,(f=o.rewardApr[1])!=null?f:0*d,(b=o.rewardApr[2])!=null?b:0*d],apr:o.apr*d}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[pn(e.mintA.address).toString()],p=i[pn(e.mintB.address).toString()],d=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!p)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=Z.priceToSqrtPriceX64(new F(e.price),e.mintA.decimals,e.mintB.decimals),b=Z.getSqrtPriceX64FromTick(s),g=Z.getSqrtPriceX64FromTick(a),{amountSlippageA:P,amountSlippageB:A}=ue.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:h,amountSlippageB:T}=ue.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),I=new F(P.toString()).div(new F(10).pow(d)).mul(m.value).add(new F(A.toString()).div(new F(10).pow(y)).mul(p.value)),B=new F(h.toString()).div(new F(10).pow(d)).mul(m.value).add(new F(T.toString()).div(new F(10).pow(y)).mul(p.value)),x=B.div(I.add(B)).div(B),N=new F(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),E=3600*24*365,Q=e.rewardDefaultInfos.map(W=>{var oe,dt;let j=W.mint.decimals,ee=i[W.mint.address];return u<((oe=W.startTime)!=null?oe:0)||u>((dt=W.endTime)!=null?dt:0)||!W.perSecond||!ee||j===void 0?0:new F(ee.value).mul(new F(W.perSecond).mul(E)).div(new F(10).pow(j)).mul(x).mul(100).toNumber()});return{feeApr:N,rewardsApr:Q,apr:N+Q.reduce((W,j)=>W+j,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,P;let l=Z.priceToSqrtPriceX64(new F(e.price),e.mintA.decimals,e.mintB.decimals),m=Z.getSqrtPriceX64FromTick(n),p=Z.getSqrtPriceX64FromTick(i),d=a?1-s:1+s,y=we(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Be(new F(y.amount.sub((P=y.fee)!=null?P:me).toString()).mul(d).toFixed(0)),b;if(l.lte(m))b=t?ue.getLiquidityFromTokenAmountA(m,p,f,!a):new Be(0);else if(l.lte(p)){let A=ue.getLiquidityFromTokenAmountA(l,p,f,!a),h=ue.getLiquidityFromTokenAmountB(m,l,f);b=t?A:h}else b=t?new Be(0):ue.getLiquidityFromTokenAmountB(m,p,f);return Ue.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var b,g,P,A;let u=Z.getSqrtPriceX64FromTick(n),c=Z.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=ue.getAmountsFromLiquidity(Z.priceToSqrtPriceX64(new F(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[p,d]=[we(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),we(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[we(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),we(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:p,amountB:d,amountSlippageA:y,amountSlippageB:f,expirationTime:Zt(p.expirationTime,d.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let i=await t.getAccountInfo(new Yt(n.id));if(!i)throw new Error(`pool not found ${n.id}`);let o=ri.decode(i.data),s=ut(e,new Yt(n.id)).publicKey,a=await Ue.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return D(M({},o),{id:new Yt(n.id),programId:new Yt(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:D(M({},n.config),{id:new Yt(n.config.id),fundOwner:""}),currentPrice:new F(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};function ck({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:o,add:s,epochInfo:a,amountHasFee:u}){var A,h,T,I;let[c,l,m,p]=e<t?[e,t,n,i]:[t,e,i,n],d=Z.priceToSqrtPriceX64(new F(r.price),r.mintA.decimals,r.mintB.decimals),y=Z.getSqrtPriceX64FromTick(c),f=Z.getSqrtPriceX64FromTick(l),[b,g]=[we(m,(A=r.mintA.extensions)==null?void 0:A.feeConfig,a,!u),we(p,(h=r.mintB.extensions)==null?void 0:h.feeConfig,a,!u)],P=ue.getLiquidityFromTokenAmounts(d,y,f,b.amount.sub((T=b.fee)!=null?T:me),g.amount.sub((I=g.fee)!=null?I:me));return ue.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:P,slippage:o,add:s,epochInfo:a,amountAddFee:!u})}var $=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(me)||(o=o.add(rt)),o}static mulDivFloor(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).add(n.sub(rt)).div(n)}static x64ToDecimal(e,t){return new F(e.toString()).div(F.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ne(e.mul(F.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(ti).sub(t).mod(ti)}};function Ne(r,e){return Co(r.mul(e),64,256)}function Vm(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Co(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var Z=class{static sqrtPriceX64ToPrice(e,t,n){return $.x64ToDecimal(e).pow(2).mul(F.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return $.decimalToX64(e.mul(F.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(me))return e;let o=t.shln(tr);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?$.mulDivCeil(s,e,a):$.mulDivRoundingUp(s,rt,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return $.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(tr);if(i)return e.add(o.div(t));{let s=$.mulDivRoundingUp(o,rt,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<qe||e>Qe)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new ne("18445821805675395072"):new ne("18446744073709551616");return(t&2)!=0&&(n=Ne(n,new ne("18444899583751176192"))),(t&4)!=0&&(n=Ne(n,new ne("18443055278223355904"))),(t&8)!=0&&(n=Ne(n,new ne("18439367220385607680"))),(t&16)!=0&&(n=Ne(n,new ne("18431993317065453568"))),(t&32)!=0&&(n=Ne(n,new ne("18417254355718170624"))),(t&64)!=0&&(n=Ne(n,new ne("18387811781193609216"))),(t&128)!=0&&(n=Ne(n,new ne("18329067761203558400"))),(t&256)!=0&&(n=Ne(n,new ne("18212142134806163456"))),(t&512)!=0&&(n=Ne(n,new ne("17980523815641700352"))),(t&1024)!=0&&(n=Ne(n,new ne("17526086738831433728"))),(t&2048)!=0&&(n=Ne(n,new ne("16651378430235570176"))),(t&4096)!=0&&(n=Ne(n,new ne("15030750278694412288"))),(t&8192)!=0&&(n=Ne(n,new ne("12247334978884435968"))),(t&16384)!=0&&(n=Ne(n,new ne("8131365268886854656"))),(t&32768)!=0&&(n=Ne(n,new ne("3584323654725218816"))),(t&65536)!=0&&(n=Ne(n,new ne("696457651848324352"))),(t&131072)!=0&&(n=Ne(n,new ne("26294789957507116"))),(t&262144)!=0&&(n=Ne(n,new ne("37481735321082"))),e>0&&(n=va.div(n)),n}static getTickFromPrice(e,t,n){return Z.getTickFromSqrtPriceX64(Z.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Kt)||e.lt(St))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ne(t-64),i=Vm(n,32,128),o=new ne("8000000000000000","hex"),s=0,a=new ne(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new ne(0))&&s<Wa;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(o.mul(y)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=i.add(c).mul(new ne(Da)),p=Co(m.sub(new ne(qa)),64,128).toNumber(),d=Co(m.add(new ne(Ua)),64,128).toNumber();return p==d?p:Z.getSqrtPriceX64FromTick(d).lte(e)?d:p}},sn=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=Z.getTickFromSqrtPriceX64(Z.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=sn.getTickWithPriceAndTickspacing(e,t,n,i),s=Z.getSqrtPriceX64FromTick(o);return Z.sqrtPriceX64ToPrice(s,n,i)}},ue=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(tr),s=t.sub(e);return i?$.mulDivRoundingUp($.mulDivCeil(o,s,t),rt,e):$.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");return i?$.mulDivCeil(n,t.sub(e),it):$.mulDivFloor(n,t.sub(e),it)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?$.mulDivRoundingUp(a,rt,So):a.shrn(tr)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),$.mulDivFloor(n,So,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ue.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=ue.getLiquidityFromTokenAmountA(e,n,i,!1),a=ue.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ue.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ue.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new ne(0)};if(e.lt(n)){let s=ue.getTokenAmountAFromLiquidity(e,n,i,o),a=ue.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new ne(0),amountB:ue.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=ue.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new ne(new F(u.toString()).mul(l).toFixed(0)),p=new ne(new F(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:p}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var P,A,h,T;let c=Z.priceToSqrtPriceX64(new F(e.price),e.mintA.decimals,e.mintB.decimals),l=Z.getSqrtPriceX64FromTick(t),m=Z.getSqrtPriceX64FromTick(n),p=s?1+o:1-o,d=ue.getAmountsFromLiquidity(c,l,m,i,s),[y,f]=[we(d.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),we(d.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[b,g]=[we(new ne(new F(d.amountA.toString()).mul(p).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),we(new ne(new F(d.amountB.toString()).mul(p).toFixed(0)),(T=e.mintB.extensions)==null?void 0:T.feeConfig,a,u)];return{liquidity:i,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:Zt(y.expirationTime,f.expirationTime)}}},on=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,p,d,y){if(p.eq(me))throw new Error("amountSpecified must not be 0");if(y||(y=s?St.add(rt):Kt.sub(rt)),s){if(y.lt(St))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(y.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(y.gt(Kt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=p.gt(me),b={amountSpecifiedRemaining:p,amountCalculated:me,sqrtPriceX64:m,tick:c>d?Math.min(d+ce.tickCount(l)-1,c):d,accounts:[],liquidity:u,feeAmount:new ne(0)},g=d,P=n[d],A=0,h=!s&&P.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(me)&&!b.sqrtPriceX64.eq(y);){if(A>10)throw Error("liquidity limit");let T={};T.sqrtPriceStartX64=b.sqrtPriceX64;let I=U.nextInitTick(P,b.tick,l,s,h),B=I||null,x=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let N=Ue.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},g,s);if(!N.isExist)throw Error("swapCompute LiquidityInsufficient");g=N.nextStartIndex;let{publicKey:E}=be(e,t,g);x=E,P=n[g],B=U.firstInitializedTick(P,s)}T.tickNext=B.tick,T.initialized=B.liquidityGross.gtn(0),d!==g&&x&&(b.accounts.push(x),d=g),T.tickNext<qe?T.tickNext=qe:T.tickNext>Qe&&(T.tickNext=Qe),T.sqrtPriceNextX64=Z.getSqrtPriceX64FromTick(T.tickNext);let K;if(s&&T.sqrtPriceNextX64.lt(y)||!s&&T.sqrtPriceNextX64.gt(y)?K=y:K=T.sqrtPriceNextX64,[b.sqrtPriceX64,T.amountIn,T.amountOut,T.feeAmount]=on.swapStepCompute(b.sqrtPriceX64,K,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(T.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(T.amountIn.add(T.feeAmount)),b.amountCalculated=b.amountCalculated.sub(T.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(T.amountOut),b.amountCalculated=b.amountCalculated.add(T.amountIn.add(T.feeAmount))),b.sqrtPriceX64.eq(T.sqrtPriceNextX64)){if(T.initialized){let N=B.liquidityNet;s&&(N=N.mul(_t)),b.liquidity=ue.addDelta(b.liquidity,N)}h=T.tickNext!=b.tick&&!s&&P.startTickIndex===T.tickNext,b.tick=s?T.tickNext-1:T.tickNext}else if(b.sqrtPriceX64!=T.sqrtPriceStartX64){let N=Z.getTickFromSqrtPriceX64(b.sqrtPriceX64);h=N!=b.tick&&!s&&P.startTickIndex===N,b.tick=N}++A}try{let{nextStartIndex:T,isExist:I}=ce.nextInitializedTickArray(b.tick,l,s,i,o);I&&d!==T&&(b.accounts.push(be(e,t,T).publicKey),d=T)}catch{}return{amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new ne(0),amountIn:new ne(0),amountOut:new ne(0),feeAmount:new ne(0)},a=e.gte(t),u=i.gte(me);if(u){let l=$.mulDivFloor(i,ni.sub(new ne(o.toString())),ni);s.amountIn=a?ue.getTokenAmountAFromLiquidity(t,e,n,!0):ue.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Z.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ue.getTokenAmountBFromLiquidity(t,e,n,!1):ue.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(_t).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Z.getNextSqrtPriceX64FromOutput(e,n,i.mul(_t),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ue.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ue.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ue.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ue.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(_t))&&(s.amountOut=i.mul(_t)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=$.mulDivCeil(s.amountIn,new ne(o),ni.sub(new ne(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var Le=60,rn=512,U=class{static getTickArrayAddressByTick(e,t,n,i){let o=U.getTickArrayStartIndexByTick(n,i),{publicKey:s}=be(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=U.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=Le)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=ce.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*ce.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Le,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*Le,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Le:e+t*Le}static mergeTickArrayBitmap(e){let t=new Em(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*Le));return[...U.searchLowBitFromStart(e,t,s-1,o,n),...U.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return U.searchHightBitFromStart(e,t,0,rn,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=U.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=be(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>U.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=ce.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>U.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=ce.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<qe||e>Qe}static nextInitTick(e,t,n,i,o){if(ce.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<Le;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Le-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Le;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=Z.getSqrtPriceX64FromTick(t),o=Z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new F(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new F(1).div(t),o=sn.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=Z.getSqrtPriceX64FromTick(o),a=Z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new F(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=Z.getSqrtPriceX64FromTick(t),o=Z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new F(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new F(1).div(t),o=sn.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=Z.getSqrtPriceX64FromTick(o),a=Z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new F(1).div(a)}}};var Nk=O([de(8),_("bump"),It("index"),S(""),We("protocolFeeRate"),We("tradeFeeRate"),It("tickSpacing"),q(w(),8,"")]),Fm=O([We("blockTimestamp"),z("sqrtPriceX64"),z("cumulativeTimePriceX64"),q(z(),1,"")]),Ro=O([de(8),Ee("initialized"),S("poolId"),q(Fm,1e3,"observations"),q(z(),5,"")]),vm=O([_("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),z("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),S("tokenMint"),S("tokenVault"),S("creator"),z("rewardGrowthGlobalX64")]),ri=O([de(8),_("bump"),S("ammConfig"),S("creator"),S("mintA"),S("mintB"),S("vaultA"),S("vaultB"),S("observationId"),_("mintDecimalsA"),_("mintDecimalsB"),It("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),Ve("tickCurrent"),It("observationIndex"),It("observationUpdateDuration"),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),_("status"),q(_(),7,""),q(vm,3,"rewardInfos"),q(w(),16,"tickArrayBitmap"),w("totalFeesTokenA"),w("totalFeesClaimedTokenA"),w("totalFeesTokenB"),w("totalFeesClaimedTokenB"),w("fundFeesTokenA"),w("fundFeesTokenB"),w("startTime"),q(w(),15*4-3,"padding")]),Wm=O([z("growthInsideLastX64"),w("rewardAmountOwed")]),ii=O([de(8),_("bump"),S("nftMint"),S("poolId"),Ve("tickLower"),Ve("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(Wm,3,"rewardInfos"),q(w(),8,"")]),Mk=O([de(8),_("bump"),S("poolId"),Ve("tickLowerIndex"),Ve("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(z(),3,"rewardGrowthInside"),q(w(),8,"")]),Dm=O([Ve("tick"),Qs("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),q(z(),3,"rewardGrowthsOutsideX64"),q(We(),13,"")]),nr=O([de(8),S("poolId"),Ve("startTickIndex"),q(Dm,Le,"ticks"),_("initializedTickCount"),q(_(),115,"")]),Ya=O([de(329),q(S(),100,"whitelistMints")]),za=O([de(8),S("poolId"),q(q(w(),8),Ko,"positiveTickArrayBitmap"),q(q(w(),8),Ko,"negativeTickArrayBitmap")]);var ja=ae("Raydium_Clmm"),Pt={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},Ie=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=O([z("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:d,startTime:y},g);let P=Buffer.from([...Pt.createPool,...g]);return new At({keys:b,programId:e,data:P})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=De({fromPublicKey:i,programId:n}),[p,d]=[new v(o.address),new v(s.address)],y=[An.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Ro.span),space:Ro.span,programId:n})],{publicKey:f}=Ea(n,a,p,d),{publicKey:b}=Bo(n,f,p),{publicKey:g}=Bo(n,f,d);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,p,b,new v(o.programId||Fe),d,g,new v(s.programId||Fe),ut(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[V.CreateAccount,V.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:b,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A,h,T,I,B,x,K,N){let E=O([Ve("tickLowerIndex"),Ve("tickUpperIndex"),Ve("tickArrayLowerStartIndex"),Ve("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ee("withMetadata"),_("optionBaseFlag"),Ee("baseFlag")]),Q=[...N?[{pubkey:N,isSigner:!1,isWritable:!0}]:[]],W=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:Fe,isSigner:!1,isWritable:!1},{pubkey:Qa,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Q],j=Buffer.alloc(E.span);E.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:T,liquidity:I,amountMaxA:B,amountMaxB:x,withMetadata:K==="create",baseFlag:!1,optionBaseFlag:0},j);let ee=Buffer.from([...Pt.openPosition,...j]);return new At({keys:W,programId:e,data:ee})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=Lo.generate();m.push(x),y=x.publicKey}let f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=be(p,d,f),{publicKey:P}=be(p,d,b),{publicKey:A}=fe(n.wallet,y,Fe),{publicKey:h}=ei(y),{publicKey:T}=at(p,y),{publicKey:I}=nn(p,d,i,o),B=this.openPositionFromLiquidityInstruction(p,n.feePayer,d,n.wallet,y,A,h,I,g,P,T,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,o,f,b,s,a,u,c);return{signers:m,instructions:[B],instructionTypes:[V.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:T,protocolPosition:I}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=Lo.generate();m.push(x),y=x.publicKey}let f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=be(p,d,f),{publicKey:P}=be(p,d,b),{publicKey:A}=fe(n.wallet,y,Fe),{publicKey:h}=ei(y),{publicKey:T}=at(p,y),{publicKey:I}=nn(p,d,i,o),B=this.openPositionFromBaseInstruction(p,n.feePayer,d,n.wallet,y,A,h,I,g,P,T,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,o,f,b,c,s,a,u,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ut(p,d).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:T,protocolPosition:I},instructions:[B],signers:m,instructionTypes:[V.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A,h,T,I,B,x,K,N){let E=O([Ve("tickLowerIndex"),Ve("tickUpperIndex"),Ve("tickArrayLowerStartIndex"),Ve("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ee("withMetadata"),_("optionBaseFlag"),Ee("baseFlag")]),Q=[...N?[{pubkey:N,isSigner:!1,isWritable:!0}]:[]],W=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:Fe,isSigner:!1,isWritable:!1},{pubkey:Qa,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...Q],j=Buffer.alloc(E.span);E.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:T,liquidity:new Ha(0),amountMaxA:B==="MintA"?x:K,amountMaxB:B==="MintA"?K:x,withMetadata:I==="create",baseFlag:B==="MintA",optionBaseFlag:1},j);let ee=Buffer.from([...Pt.openPosition,...j]);return new At({keys:W,programId:e,data:ee})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,p=[];if(l)m=new v((await l(1))[0]);else{let x=Lo.generate();p.push(x),m=x.publicKey}let[d,y]=[new v(e.programId),new v(e.id)],f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=be(d,y,f),{publicKey:P}=be(d,y,b),{publicKey:A}=fe(n.wallet,m,Fe),{publicKey:h}=ei(m),{publicKey:T}=at(d,m),{publicKey:I}=nn(d,y,i,o),B=this.openPositionFromLiquidityInstruction(d,n.wallet,y,n.wallet,m,A,h,I,g,P,T,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(t.mintA.address),new v(t.mintB.address),i,o,f,b,s,a,u,c,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ut(d,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:T,protocolPosition:I},instructions:[B],signers:p,instructionTypes:[V.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=O([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:Fe,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...Pt.closePosition,...u]);return new At({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new v(e.programId),{publicKey:s}=fe(n.wallet,i.nftMint,Fe),{publicKey:a}=at(o,i.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,i.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[V.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P){let A=O([z("liquidity"),w("amountMaxA"),w("amountMaxB"),_("optionBaseFlag"),Ee("baseFlag")]),h=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:Fe,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],I=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},I);let B=Buffer.from([...Pt.increaseLiquidity,...I]);return new At({keys:T,programId:e,data:B})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=be(u,c,l),{publicKey:d}=be(u,c,m),{publicKey:y}=fe(i.wallet,n.nftMint,Fe),{publicKey:f}=at(u,n.nftMint),{publicKey:b}=nn(u,c,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(u,i.wallet,y,f,c,b,p,d,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ut(u,c).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:y,personalPosition:f,protocolPosition:b},signers:[],instructions:[g],instructionTypes:[V.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=be(u,c,l),{publicKey:d}=be(u,c,m),{publicKey:y}=fe(i.wallet,n.nftMint,Fe),{publicKey:f}=at(u,n.nftMint),{publicKey:b}=nn(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,f,c,b,p,d,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ut(u,c).publicKey:void 0)],signers:[],instructionTypes:[V.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P){let A=O([z("liquidity"),w("amountMaxA"),w("amountMaxB"),_("optionBaseFlag"),Ee("baseFlag")]),h=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:Fe,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],I=Buffer.alloc(A.span);A.encode({liquidity:new Ha(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},I);let B=Buffer.from([...Pt.increaseLiquidity,...I]);return new At({keys:T,programId:e,data:B})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A){let h=O([z("liquidity"),w("amountMinA"),w("amountMinB")]),T=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(K=>[{pubkey:K.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.rewardMint,isSigner:!1,isWritable:!1}]).flat()],I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Fe,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],B=Buffer.alloc(h.span);h.encode({liquidity:b,amountMinA:g,amountMinB:P},B);let x=Buffer.from([...Pt.decreaseLiquidity,...B]);return new At({keys:I,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new v(e.programId),new v(e.id)],m=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=be(c,l,m),{publicKey:y}=be(c,l,p),{publicKey:f}=fe(i.wallet,n.nftMint,u),{publicKey:b}=at(c,n.nftMint),{publicKey:g}=nn(c,l,n.tickLower,n.tickUpper),P=[];for(let h=0;h<e.rewardDefaultInfos.length;h++)P.push({poolRewardVault:new v(t.rewardInfos[h].vault),ownerRewardVault:i.rewardAccounts[h],rewardMint:new v(e.rewardDefaultInfos[h].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,i.wallet,f,b,l,g,d,y,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),P,o,s,a,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?ut(c,l).publicKey:void 0)),{address:{tickArrayLower:d,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:A,instructionTypes:[V.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g){let P=O([w("amount"),w("otherAmountThreshold"),z("sqrtPriceLimitX64"),Ee("isBaseInput")]),A=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(B=>({pubkey:B,isSigner:!1,isWritable:!0}))],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:Fe,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],T=Buffer.alloc(P.span);P.encode({amount:d,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},T);let I=Buffer.from([...Pt.swap,...T]);return new At({keys:h,programId:e,data:I})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:i,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new v(e.programId),new v(e.id)],[m,p]=[new v(t.vault.A),new v(t.vault.B)],[d,y]=[new v(e.mintA.address),new v(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new v(e.config.id),f?n.tokenAccountA:n.tokenAccountB,f?n.tokenAccountB:n.tokenAccountA,f?m:p,f?p:m,f?d:y,f?y:d,u,m,o,s,a,!0,ut(c,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[V.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,p){let d=O([w("openTime"),w("endTime"),z("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({openTime:X(l),endTime:X(m),emissionsPerSecondX64:p},f);let b=Buffer.from([...Pt.initReward,...f]);return new At({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new v(e.programId),new v(e.id)],a=Fa(o,s,i.mint).publicKey,u=er(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new v(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[V.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,p){let d=O([_("rewardIndex"),z("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:Fe,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(d.span);d.encode({rewardIndex:c,emissionsPerSecondX64:p,openTime:X(l),endTime:X(m)},f);let b=Buffer.from([...Pt.setRewardEmissions,...f]);return new At({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new v(e.programId),new v(e.id)],a,u,c;for(let p=0;p<e.rewardDefaultInfos.length;p++)e.rewardDefaultInfos[p].mint.address===i.mint.toString()&&(a=p,u=new v(t.rewardInfos[p].vault),c=new v(t.rewardInfos[p].mint.address));(a===void 0||u===void 0)&&ja.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=er(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new v(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[V.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=O([_("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Fe,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...Pt.collectReward,...l]);return new At({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new v(e.programId),new v(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new v(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&ja.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,i,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[V.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:i,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new v(e.programId),new v(e.id)],[m,p]=[new v(t.vault.A),new v(t.vault.B)],[d,y]=[new v(e.mintA.address),new v(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new v(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?p:m,f?m:p,f?d:y,f?y:d,u,m,o,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[V.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as Xm}from"@solana/web3.js";import{PublicKey as Um}from"@solana/web3.js";import Za from"bn.js";var $a=new Za(25),Ja=new Za(1e4),qm={4:3,5:3};var Gm=ae("Raydium_liquidity_serum");function eu({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));i=Um.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw Gm.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}import or from"bn.js";function No({programId:r}){let{publicKey:e}=ie([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function an({name:r,programId:e,marketId:t}){let{publicKey:n}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function zm({programId:r,marketId:e}){let{publicKey:t}=ie([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function Ym({programId:r}){return ie([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function tu({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=an({name:"amm_associated_seed",programId:a,marketId:t}),l=an({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:p}=Ym({programId:a}),d=an({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=an({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=an({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=zm({programId:a,marketId:t}),g=an({name:"target_associated_seed",programId:a,marketId:t}),P=an({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=eu({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:r,programId:a,authority:m,nonce:p,baseVault:d,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:P,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:Xm.default,configId:No({programId:a})}}var Oo;async function lh({connection:r,poolKeysList:e,config:t}){Oo||(Oo=new gn({connection:r}),await Oo.initStableModelLayout());let n=e.map(s=>Oa({poolKeys:s}));return(await Rs(r,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=Ls(s,"GetPoolData"),u=new or(Ot(a,"status")),c=Number(Ot(a,"coin_decimals")),l=Number(Ot(a,"pc_decimals")),m=Number(Ot(a,"lp_decimals")),p=new or(Ot(a,"pool_coin_amount")),d=new or(Ot(a,"pool_pc_amount")),y=new or(Ot(a,"pool_lp_supply")),f="0";try{f=Ot(a,"pool_open_time")}catch{}return{status:u,baseDecimals:c,quoteDecimals:l,lpDecimals:m,baseReserve:p,quoteReserve:d,lpSupply:y,startTime:new or(f)}})}import ot from"bn.js";var sr=class extends Te{constructor(t){super(t);this.stableLayout=new gn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:i,baseIn:o}){let s=new ot(new F(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=ha(t[o?"mintB":"mintA"]),[u,c]=[new ot(new F(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new ot(new F(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new ot(new F(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,F.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=o?"base":"quote";this.logDebug("input side:",m);let p=ze;s.isZero()||(p=m==="base"?Rr(s.mul(c),u):Rr(s.mul(u),c)),this.logDebug("amountRaw:",p.toString(),"lpAmount:",l.toString());let d=Rr(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",d.toString());let f=new tt(new ot(1)).add(i).mul(p).quotient,b=new xe(a,p),g=new xe(a,f);return this.logDebug("anotherAmount:",b.toFixed(),"maxAnotherAmount:",g.toFixed()),{anotherAmount:b,maxAnotherAmount:g,liquidity:d}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,amountInA:i,amountInB:o,fixedSide:s,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",o),(i.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:p}=M({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[d,y]=[i.token,o.token],f=await l.getCreatedTokenAccount({mint:d.mint,associatedOnly:!1}),b=await l.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1});!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let g=await l.getCreatedTokenAccount({mint:new et(n.lpMint.address)}),P=[d,y],A=[f,b],h=[i.raw,o.raw],T=i.token.mint.toBase58()===n.mintA.address?"base":"quote",I="base";["quote","base"].includes(T)||this.logAndCreateError("invalid fixedSide","fixedSide",s),T==="quote"?(P.reverse(),A.reverse(),h.reverse(),I=s==="a"?"quote":"base"):T==="base"&&(I=s==="a"?"base":"quote");let[B,x]=P,[K,N]=A,[E,Q]=h,W=await this.getAmmPoolKeys(n.id),j=this.createTxBuilder(),Et=await l.handleTokenAccount({side:"in",amount:E,mint:B.mint,tokenAccount:K,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:ee}=Et,oe=Pe(Et,["tokenAccount"]);j.addInstruction(oe);let gr=await l.handleTokenAccount({side:"in",amount:Q,mint:x.mint,tokenAccount:N,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:dt}=gr,Tn=Pe(gr,["tokenAccount"]);j.addInstruction(Tn);let In=await l.handleTokenAccount({side:"out",amount:0,mint:new et(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:fi}=In,yi=Pe(In,["tokenAccount"]);return j.addInstruction(yi),j.addInstruction({instructions:[Ra({poolInfo:n,poolKeys:W,userKeys:{baseTokenAccount:ee,quoteTokenAccount:dt,lpTokenAccount:fi,owner:this.scope.ownerPubKey},baseAmountIn:E,quoteAmountIn:Q,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?V.AmmV5AddLiquidity:V.AmmV4AddLiquidity],lookupTableAddress:W.lookupTableAccount?[W.lookupTableAccount]:[]}),j.addCustomComputeBudget(c),u===0&&await j.buildV0(),j.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:i,config:o,txVersion:s,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new et(n.mintA.address),new et(n.mintB.address),new et(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.toString());let{account:p}=this.scope,d=await p.getCreatedTokenAccount({mint:m,associatedOnly:!1});d||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",p.tokenAccounts);let y=await p.getCreatedTokenAccount({mint:c}),f=await p.getCreatedTokenAccount({mint:l}),b=this.createTxBuilder(),{bypassAssociatedCheck:g,checkCreateATAOwner:P}=M({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),B=await p.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:A}=B,h=Pe(B,["tokenAccount"]);b.addInstruction(h);let x=await p.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:T}=x,I=Pe(x,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[To({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:d,baseTokenAccount:A,quoteTokenAccount:T,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?V.AmmV5RemoveLiquidity:V.AmmV4RemoveLiquidity]}),b.addCustomComputeBudget(a),s===0?await b.buildV0():b.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,tokenProgram:m=oi,checkCreateATAOwner:p=!0,getEphemeralSigners:d,txVersion:y}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let f=this.createTxBuilder();f.addCustomComputeBudget(c);let b={};for(let ee of this.scope.account.tokenAccountRawInfos)(b[ee.accountInfo.mint.toString()]===void 0||fe(this.scope.ownerPubKey,ee.accountInfo.mint,oi).publicKey.equals(ee.pubkey))&&(b[ee.accountInfo.mint.toString()]=ee.pubkey);let g=b[t.lpMint.address];if(g===void 0)throw Error("find lp account error in trade accounts");let P=i.add(a!=null?a:new ot(0)),A=t.mintA.address===he.WSOL.mint.toString(),h=t.mintB.address===he.WSOL.mint.toString(),{account:T,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:oi,mint:new et(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!0,checkCreateATAOwner:p});if(f.addInstruction(I||{}),T===void 0)throw new Error("base token account not found");let{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:oi,mint:new et(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!0,checkCreateATAOwner:p});if(f.addInstruction(x||{}),B===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=T,b[t.mintB.address]=B,s!==void 0&&!(a!=null&&a.isZero())){let ee=[];for(let Et of s.rewardInfos){let gr=Et.mint.address===he.WSOL.mint.toString();if(b[Et.mint.address])ee.push(b[Et.mint.address]);else{let{account:In,instructionParams:Ho}=await this.scope.account.getOrCreateTokenAccount({mint:new et(Et.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!gr,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});In||this.logAndCreateError("farm reward account not found:",Et.mint.address),Ho&&f.addInstruction(Ho),ee.push(In)}}let oe=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],dt={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:oe,lpAccount:g,rewardAccounts:ee},Tn=wt[s.programId],fi=Tn===6?Qn(dt):Tn===5?Hn(dt):jn(dt),yi={3:V.FarmV3Withdraw,5:V.FarmV5Withdraw,6:V.FarmV6Withdraw};f.addInstruction({instructions:[fi],instructionTypes:[yi[Tn]]})}let K=await this.getAmmPoolKeys(t.id),N=To({poolInfo:t,poolKeys:K,userKeys:{lpTokenAccount:g,baseTokenAccount:T,quoteTokenAccount:B,owner:this.scope.ownerPubKey},amountIn:P});f.addInstruction({instructions:[N],instructionTypes:[t.pooltype.includes("StablePool")?V.AmmV5RemoveLiquidity:V.AmmV4RemoveLiquidity],lookupTableAddress:K.lookupTableAccount?[K.lookupTableAccount]:[]});let[E,Q]=t.mintA.address===n.mintA.address?[T,B]:[B,T],W=await this.scope.clmm.getClmmPoolKeys(t.id),j=await Ie.openPositionFromBaseInstructions(D(M({poolInfo:n,poolKeys:W,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:E,tokenAccountB:Q},withMetadata:"create"},o),{base:u,getEphemeralSigners:d}));return f.addInstruction({instructions:[...j.instructions],signers:j.signers,instructionTypes:[...j.instructionTypes],lookupTableAddress:W.lookupTableAccount?[W.lookupTableAccount]:[]}),y===0?f.sizeCheckBuildV0():f.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:i,quoteMintInfo:o,baseAmount:s,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:p,txVersion:d,feeDestinationId:y,computeBudgetConfig:f}){var Q;let b=c.feePayer||((Q=this.scope.owner)==null?void 0:Q.publicKey),g=c.useSOLBalance&&i.mint.equals(nu),P=c.useSOLBalance&&o.mint.equals(nu),A=this.createTxBuilder(),{account:h,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:g?{payer:b,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:l,checkCreateATAOwner:m});A.addInstruction(T||{});let{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:P?{payer:b,amount:a}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:l,checkCreateATAOwner:m});if(A.addInstruction(B||{}),h===void 0||I===void 0)throw Error("you don't has some token account");let x=tu({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),K={programId:t,ammId:x.id,ammAuthority:x.authority,ammOpenOrders:x.openOrders,lpMint:x.lpMint,coinMint:x.baseMint,pcMint:x.quoteMint,coinVault:x.baseVault,pcVault:x.quoteVault,withdrawQueue:x.withdrawQueue,ammTargetOrders:x.targetOrders,poolTempLp:x.lpVault,marketProgramId:x.marketProgramId,marketId:x.marketId,ammConfigId:x.configId,feeDestinationId:y},{instruction:N,instructionType:E}=La(D(M({},K),{userWallet:this.scope.ownerPubKey,userCoinVault:h,userPcVault:I,userLpVault:fe(this.scope.ownerPubKey,x.lpMint,p).publicKey,nonce:x.nonce,openTime:u,coinAmount:s,pcAmount:a}));return A.addInstruction({instructions:[N],instructionTypes:[E]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:d,extInfo:{address:K}})}async getCreatePoolFee({programId:t}){let n=No({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Ta.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:s}){if(i!==t.mintA.address&&i!==t.mintA.address)throw new Error("toke not match");if(o!==t.mintB.address&&o!==t.mintB.address)throw new Error("toke not match");let{baseReserve:a,quoteReserve:u}=t,c=[a,u],l=i==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,p]=c,d=t.programId===Fs.toBase58(),y;if(d)y=new F(p.toString()).div(m.toString());else{let x=Ka(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new F(1e6).div(x*1e6):y=new F(x*1e6).div(1e6)}let f=n,b=new ot(0),g=new ot(0);if(!f.isZero())if(d){g=vn(f.mul($a),Ja);let x=f.sub(g),K=m.add(x);b=p.mul(x).div(K)}else{g=f.mul(new ot(2)).div(new ot(1e4));let x=f.sub(g);l==="quote"?b=new ot(Ba(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber())):b=new ot(Sa(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber()))}let P=new ot(new F(b.toString()).mul(1-s).toFixed(0)),A=b,h=P,T=new F(b.toString()).div(new F(f.sub(g).toString()).toFixed(0));!f.isZero()&&!b.isZero()&&(T=new F(b.toString()).div(f.sub(g).toString()));let I=y.sub(T).div(y).mul(100);return{amountOut:A,minAmountOut:h,currentPrice:y,executionPrice:T,priceImpact:I,fee:g}}async swap({poolInfo:t,amountIn:n,amountOut:i,inputMint:o,fixedSide:s,txVersion:a,computeBudgetConfig:u}){let c=this.createTxBuilder(),[l,m]=o===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],p=await this.scope.account.getCreatedTokenAccount({mint:new et(l.address),programId:new et(l.programId),associatedOnly:!1}),d=await this.scope.account.getCreatedTokenAccount({mint:new et(m.address),programId:new et(m.programId),associatedOnly:!1}),h=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new et(l.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=h,f=Pe(h,["tokenAccount"]);c.addInstruction(f);let T=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new et(m.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=T,g=Pe(T,["tokenAccount"]);c.addInstruction(g);let P=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[$r({version:A,poolKeys:P,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:s})],instructionTypes:[A===4?V.AmmV4SwapBaseIn:V.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}};import{PublicKey as se}from"@solana/web3.js";import ct from"bn.js";var ar=class extends Te{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var P;let{programId:t,owner:n=((P=this.scope.owner)==null?void 0:P.publicKey)||se.default,mint1:i,mint2:o,ammConfig:s,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,p=this.createTxBuilder(),[d,y,f]=new ct(new se(i.address).toBuffer()).gt(new ct(new se(o.address).toBuffer()))?[o,i,new F(1).div(a)]:[i,o,a],b=Z.priceToSqrtPriceX64(f,d.decimals,y.decimals),g=await Ie.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:d,mintB:y,ammConfigId:s.id,initialPriceX64:b,startTime:u,forerunCreate:l});return p.addInstruction(g),p.addCustomComputeBudget(c),p.versionBuild({txVersion:m,extInfo:{address:D(M({},g.address),{programId:t.toString(),id:g.address.poolId.toString(),mintA:d,mintB:y,openTime:u.toString(),vault:{A:g.address.mintAVault.toString(),B:g.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:M({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:g.address.poolId.toString(),mintA:d,mintB:y,feeRate:s.tradeFeeRate,openTime:u.toString(),programId:t.toString(),price:f.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}},Ga),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:p,computeBudgetConfig:d,txVersion:y}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),b=null,g=null,P=n.useSOLBalance&&e.mintA.address===te.toString(),A=n.useSOLBalance&&e.mintB.address===te.toString(),[h,T]=s==="MintA"?[a,u]:[u,a],{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new se(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});I&&(b=I),f.addInstruction(B||{});let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new se(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||T.isZero()?{payer:this.scope.ownerPubKey,amount:T}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});x&&(g=x),f.addInstruction(K||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let N=t||await this.getClmmPoolKeys(e.id),E=await Ie.openPositionFromBaseInstructions({poolInfo:e,poolKeys:N,ownerInfo:D(M({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:p});return f.addInstruction(E),f.addCustomComputeBudget(d),f.versionBuild({txVersion:y,extInfo:E.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:i,amountMaxB:o,tickLower:s,tickUpper:a,liquidity:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:p,getEphemeralSigners:d}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let y=this.createTxBuilder(),f=null,b=null,g=n.useSOLBalance&&e.mintA.address===te.toBase58(),P=n.useSOLBalance&&e.mintB.address===te.toBase58(),{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new se(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:c,checkCreateATAOwner:l});A&&(f=A),y.addInstruction(h||{});let{account:T,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new se(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:P?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});T&&(b=T),y.addInstruction(I||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let B=t||await this.getClmmPoolKeys(e.id),x=await Ie.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:B,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:u,amountMaxA:i,amountMaxB:o,withMetadata:m,getEphemeralSigners:d});return y.addInstruction(x),y.versionBuild({txVersion:p,extInfo:{address:x.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:i,amountMaxB:o,liquidity:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,p=this.createTxBuilder(),d,y,f=a.useSOLBalance&&t.mintA.address===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new se(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(d=g),p.addInstruction(P||{});let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new se(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),p.addInstruction(h||{}),!d&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=await this.getClmmPoolKeys(t.id),I=Ie.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:T,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:d,tokenAccountB:y},liquidity:s,amountMaxA:i,amountMaxB:o});return p.addInstruction(I),p.addCustomComputeBudget(l),p.versionBuild({txVersion:m,extInfo:{address:I.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:i,baseAmount:o,otherAmountMax:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,p=this.createTxBuilder(),d,y,f=a.useSOLBalance&&t.mintA.address===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new se(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(d=g),p.addInstruction(P||{});let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new se(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),p.addInstruction(h||{}),!d&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=await this.getClmmPoolKeys(t.id),I=Ie.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:T,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:d,tokenAccountB:y},base:i,baseAmount:o,otherAmountMax:s});return p.addInstruction(I),p.addCustomComputeBudget(l),p.versionBuild({txVersion:m,extInfo:{address:I.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:i,amountMinA:o,amountMinB:s,liquidity:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let p=this.createTxBuilder(),d=i.useSOLBalance&&t.mintA.address===te.toString(),y=i.useSOLBalance&&t.mintB.address===te.toString(),f,b,{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new se(t.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!d,associatedOnly:d?!1:u,checkCreateATAOwner:c});f=g,P&&p.addInstruction(P);let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new se(t.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:c});b=A,h&&p.addInstruction(h);let T=[];for(let K of t.rewardDefaultInfos){let N=i.useSOLBalance&&K.mint.address===te.toString(),E;if(K.mint.address===t.mintA.address)E=f;else if(K.mint.address===t.mintB.address)E=b;else{let{account:Q,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(K.mint.programId),mint:new se(K.mint.address),notUseTokenAccount:N,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!N,associatedOnly:N?!1:u,checkCreateATAOwner:c});E=Q,W&&p.addInstruction(W)}T.push(E)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let I=await this.getClmmPoolKeys(t.id),B=await Ie.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:T},liquidity:a,amountMinA:o,amountMinB:s});p.addInstruction({instructions:B.instructions,instructionTypes:[V.ClmmDecreasePosition]});let x=M({},B.address);if(i.closePosition){let K=await Ie.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});p.addInstruction({endInstructions:K.instructions,endInstructionTypes:K.instructionTypes}),x=M(M({},x),K.address)}return p.addCustomComputeBudget(l),p.versionBuild({txVersion:m,extInfo:{address:x}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let i=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=Ie.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return i.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.address.toString()===te.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(n.mint.address),mint:new se(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ct(new F(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:o});p&&u.addInstruction(p),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),y=Ie.initRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new se(n.mint.programId),mint:new se(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:$.decimalToX64(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let u=this.createTxBuilder(),c={};for(let l of n){let m=t.useSOLBalance&&l.mint.address===te.toString(),p=l.perSecond.mul(l.endTime-l.openTime),{account:d,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(l.mint.programId),mint:new se(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ct(new F(p.toFixed(0)).gte(p)?p.toFixed(0):p.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});y&&u.addInstruction(y),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=Ie.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{programId:new se(l.mint.programId),mint:new se(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:$.decimalToX64(l.perSecond)}});c=M(M({},c),b.address),u.addInstruction(b)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.equals(te),{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ct(new F(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:o});m&&u.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),d=Ie.setRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:$.decimalToX64(n.perSecond)}});return u.addInstruction(d),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:d.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){let u=this.createTxBuilder(),c={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let m=t.useSOLBalance&&l.mint.address===te.toString(),{account:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(l.mint.programId),mint:new se(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ct(new F(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});d&&u.addInstruction(d),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),f=Ie.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{mint:new se(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:$.decimalToX64(l.perSecond)}});u.addInstruction(f),c=M(M({},c),f.address)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=e.rewardDefaultInfos.find(d=>d.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),u=t.useSOLBalance&&n.equals(te),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(s.mint.programId),mint:n,notUseTokenAccount:u,owner:this.scope.ownerPubKey,skipCloseAccount:!u,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:u?!1:i,checkCreateATAOwner:o});l&&a.addInstruction(l),c||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),p=Ie.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:c},rewardMint:n});return a.addInstruction(p),a.build({address:p.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=this.createTxBuilder(),a={};for(let u of n){let c=e.rewardDefaultInfos.find(f=>f.mint.address===u.toString());if(!c){this.logAndCreateError("reward mint error","not found reward mint",u);continue}let l=t.useSOLBalance&&u.equals(te),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(c.mint.programId),mint:u,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:i,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),p&&s.addInstruction(p);let d=await this.getClmmPoolKeys(e.id),y=Ie.collectRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});s.addInstruction(y),a=M(M({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:i,priceLimit:o,ownerInfo:s,remainingAccounts:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,txVersion:l}){let m=this.createTxBuilder(),p=s.useSOLBalance&&e.mintA.address===te.toBase58(),d=s.useSOLBalance&&e.mintB.address===te.toBase58(),y;!o||o.equals(new F(0))?y=t.toString()===e.mintA.address?St.add(new ct(1)):Kt.sub(new ct(1)):y=Z.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let f;if(!f){let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new se(e.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:u,checkCreateATAOwner:c});f=P,A&&m.addInstruction(A)}let b;if(!b){let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new se(e.mintB.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:u,checkCreateATAOwner:c});b=P,A&&m.addInstruction(A)}(!f||!b)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let g=await this.getClmmPoolKeys(e.id);return m.addInstruction(Ie.makeSwapBaseInInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},inputMint:new se(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:y,remainingAccounts:a})),m.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)i?fe(this.scope.ownerPubKey,m.accountInfo.mint,s).publicKey.equals(m.pubkey)&&(c[m.accountInfo.mint.toString()]=m.pubkey):c[m.accountInfo.mint.toString()]=m.pubkey;let l=this.createTxBuilder();for(let m of Object.values(e)){if(t[m.id]===void 0||!t[m.id].find(A=>!A.liquidity.isZero()||A.rewardInfos.find(h=>!h.rewardAmountOwed.isZero())))continue;let p=m,d=n.useSOLBalance&&p.mintA.address===te.toString(),y=n.useSOLBalance&&p.mintB.address===te.toString(),f=c[p.mintA.address];if(!f){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintA.programId,mint:new se(p.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:i,checkCreateATAOwner:o});f=A,h&&l.addInstruction(h)}let b=c[p.mintB.address];if(!b){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintB.programId,mint:new se(p.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:i,checkCreateATAOwner:o});b=A,h&&l.addInstruction(h)}c[p.mintA.address]=f,c[p.mintB.address]=b;let g=[];for(let A of p.rewardDefaultInfos){let h=n.useSOLBalance&&A.mint.address===te.toString(),T=c[A.mint.address];if(!T){let{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(A.mint.programId),mint:new se(A.mint.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,skipCloseAccount:!h,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:h?!1:i});T=I,B&&l.addInstruction(B)}c[A.mint.address]=T,g.push(T)}let P=await this.getClmmPoolKeys(p.id);for(let A of t[m.id]){let h=Ie.decreaseLiquidityInstructions({poolInfo:p,poolKeys:P,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new ct(0),amountMinA:new ct(0),amountMinB:new ct(0)});l.addInstruction(h)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(er(e).publicKey);return t?Ya.decode(t.data).whitelistMints.filter(i=>!i.equals(se.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new ct(1))).map(s=>at(new se(e),s.accountInfo.mint).publicKey),i=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return i.forEach(s=>{if(!s)return;let a=ii.decode(s.data);o.push(a)}),o}async getRpcClmmPoolInfo({poolId:e}){let t=await this.scope.connection.getAccountInfo(new se(e)),n=ri.decode(t.data),i=Z.sqrtPriceX64ToPrice(n.sqrtPriceX64,n.mintDecimalsA,n.mintDecimalsB).toNumber();return D(M({},n),{currentPrice:i})}};import{PublicKey as Y}from"@solana/web3.js";import{NATIVE_MINT as ai,TOKEN_PROGRAM_ID as Ht,AccountLayout as pu}from"@solana/spl-token";var Qm=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Hm=Buffer.from("amm_config","utf8"),jm=Buffer.from("pool","utf8"),Zm=Buffer.from("pool_lp_mint","utf8"),$m=Buffer.from("pool_vault","utf8"),Jm=Buffer.from("observation","utf8");function ed(r){return ie([Qm],r)}function td(r,e){return ie([Hm,id(e)],r)}function nd(r,e,t,n){return ie([jm,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function rd(r,e){return ie([Zm,e.toBuffer()],r)}function ru(r,e,t){return ie([$m,e.toBuffer(),t.toBuffer()],r)}function si(r,e){return ie([Jm,e.toBuffer()],r)}function id(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function iu({programId:r,mintA:e,mintB:t}){let n=td(r,0).publicKey,i=ed(r).publicKey,o=nd(r,n,e,t).publicKey,s=rd(r,o).publicKey,a=ru(r,o,e).publicKey,u=ru(r,o,t).publicKey,c=si(r,o).publicKey;return{poolId:o,configId:n,authority:i,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as ur}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Mo,TOKEN_2022_PROGRAM_ID as ou,ASSOCIATED_TOKEN_PROGRAM_ID as od}from"@solana/spl-token";var sd=ae("Raydium_cpmm"),cr={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173]};function su(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A){let h=O([w("amountMaxA"),w("amountMaxB"),w("openTime")]),T=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:Mo,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:od,isSigner:!1,isWritable:!1},{pubkey:ws,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1}],I=Buffer.alloc(h.span);return h.encode({amountMaxA:g,amountMaxB:P,openTime:A},I),new ur({keys:T,programId:r,data:Buffer.from([...cr.initialize,...I])})}function au(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=O([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:Mo,isSigner:!1,isWritable:!1},{pubkey:ou,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],g=Buffer.alloc(f.span);return sd.debug("cpmm deposit data",{lpAmount:p.toString(),amountMaxA:d.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:p,amountMaxA:d,amountMaxB:y},g),new ur({keys:b,programId:r,data:Buffer.from([...cr.deposit,...g])})}function uu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=O([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:Mo,isSigner:!1,isWritable:!1},{pubkey:ou,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:gs,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:p,amountMinA:d,amountMinB:y},g),new ur({keys:b,programId:r,data:Buffer.from([...cr.withdraw,...g])})}function cu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=O([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},P),new ur({keys:g,programId:r,data:Buffer.from([...cr.swapBaseInput,...P])})}function lu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=O([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},P),new ur({keys:g,programId:r,data:Buffer.from([...cr.swapBaseOutput,...P])})}import Ge from"bn.js";var mu=O([de(8),_("bump"),Ee("disableCreatePool"),It("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),S("protocolOwner"),S("fundOwner"),q(w(),16)]),du=O([de(8),S("configId"),S("poolCreator"),S("vaultA"),S("vaultB"),S("mintLp"),S("mintA"),S("mintB"),S("mintProgramA"),S("mintProgramB"),S("observationId"),_("bump"),_("status"),_("lpDecimals"),_("mintDecimalA"),_("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),q(w(),32)]);var lr=class extends Te{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){let n=await this.scope.connection.getAccountInfo(new Y(e));if(!n)throw new Error(`pool not found: ${e}`);let i=du.decode(n.data),[o,s]=await this.scope.connection.getMultipleAccountsInfo([i.vaultA,i.vaultB]);if(!o)throw new Error(`pool vaultA info not found: ${i.vaultA.toBase58()}`);if(!s)throw new Error(`pool vaultB info not found: ${i.vaultB.toBase58()}`);let a;if(t){let u=await this.scope.connection.getAccountInfo(i.configId);u&&(a=mu.decode(u.data))}return D(M({},i),{baseReserve:new Ge(pu.decode(o.data).amount.toString()).sub(i.protocolFeesMintA).sub(i.fundFeesMintA),quoteReserve:new Ge(pu.decode(s.data).amount.toString()).sub(i.protocolFeesMintB).sub(i.fundFeesMintB),configInfo:a})}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:i,associatedOnly:o=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:u}=m,c=Pe(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var Q,W,j;let p=i.feePayer||((Q=this.scope.owner)==null?void 0:Q.publicKey),d=new Ge(new Y(c.mintA.address).toBuffer()).lte(new Ge(new Y(c.mintB.address).toBuffer())),[y,f]=d?[c.mintA,c.mintB]:[c.mintB,c.mintA],[b,g]=d?[c.mintAAmount,c.mintBAmount]:[c.mintBAmount,c.mintAAmount],P=i.useSOLBalance&&y.address===ai.toBase58(),A=i.useSOLBalance&&f.address===ai.toBase58(),[h,T]=[new Y(y.address),new Y(f.address)],I=this.createTxBuilder(),{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:h,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:P?{payer:p,amount:b}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:o,checkCreateATAOwner:s});I.addInstruction(x||{});let{account:K,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({mint:new Y(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:A?{payer:p,amount:g}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:o,checkCreateATAOwner:s});if(I.addInstruction(N||{}),B===void 0||K===void 0)throw Error("you don't has some token account");let E=iu({programId:e,mintA:h,mintB:T});return I.addInstruction({instructions:[su(e,this.scope.ownerPubKey,E.configId,E.authority,E.poolId,h,T,E.lpMint,B,K,fe(this.scope.ownerPubKey,E.lpMint).publicKey,E.vaultA,E.vaultB,t,new Y((W=y.programId)!=null?W:Ht),new Y((j=f.programId)!=null?j:Ht),E.observationId,b,g,n)],instructionTypes:[V.CpmmCreatePool]}),I.addCustomComputeBudget(u),I.versionBuild({txVersion:a,extInfo:{address:D(M({},E),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:i,slippage:o,computeResult:s,computeBudgetConfig:a,config:u,txVersion:c}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),n.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:n.toString()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:p}=M({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),d=await this.getRpcPoolInfo(t.id),{liquidity:y,inputAmountFee:f,anotherAmount:b}=s||this.computePairAmount({poolInfo:D(M({},t),{mintAmountA:new F(d.baseReserve.toString()).div(10**t.mintA.decimals).toNumber(),mintAmountB:new F(d.quoteReserve.toString()).div(10**t.mintB.decimals).toNumber(),lpAmount:new F(d.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),slippage:o,baseIn:i,epochInfo:await this.scope.fetchEpochInfo(),amount:new F(n.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),g=b.amount,P=t.mintA.address===ai.toString(),A=t.mintB.address===ai.toString(),h=this.createTxBuilder(),[T,I]=[new Y(t.mintA.address),new Y(t.mintB.address)],{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||(i?n:g).isZero()?{payer:this.scope.ownerPubKey,amount:i?n:g}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!1,checkCreateATAOwner:p});h.addInstruction(x||{});let{account:K,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||(i?g:n).isZero()?{payer:this.scope.ownerPubKey,amount:i?g:n}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!1,checkCreateATAOwner:p});h.addInstruction(N||{}),!B&&!K&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let E=await l.getCreatedTokenAccount({mint:new Y(t.lpMint.address)}),ee=await l.handleTokenAccount({side:"out",amount:0,mint:new Y(t.lpMint.address),tokenAccount:E,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:Q}=ee,W=Pe(ee,["tokenAccount"]);h.addInstruction(W);let j=await this.getCpmmPoolKeys(t.id);return h.addInstruction({instructions:[au(new Y(t.programId),this.scope.ownerPubKey,new Y(j.authority),new Y(t.id),Q,B,K,new Y(j.vault.A),new Y(j.vault.B),T,I,new Y(t.lpMint.address),y,i?f.amount:g,i?g:f.amount)],instructionTypes:[V.CpmmAddLiquidity],lookupTableAddress:j.lookupTableAccount?[j.lookupTableAccount]:[]}),h.addCustomComputeBudget(a),h.versionBuild({txVersion:c})}async withdrawLiquidity(e){var Q,W;let{poolInfo:t,lpAmount:n,slippage:i,computeBudgetConfig:o,txVersion:s}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new tt(new Ge(1)).sub(i),u=await this.getRpcPoolInfo(t.id),[c,l]=[a.mul(n.mul(u.baseReserve).div(u.lpAmount)).quotient,a.mul(n.mul(u.quoteReserve).div(u.lpAmount)).quotient],m=await this.scope.fetchEpochInfo(),[p,d]=[we(c,t.mintA.extensions.feeConfig,m,!0),we(l,t.mintB.extensions.feeConfig,m,!0)],{account:y}=this.scope,f=this.createTxBuilder(),[b,g]=[new Y(t.mintA.address),new Y(t.mintB.address)],P=b.equals(te),A=g.equals(te),h,T,{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!P,associatedOnly:!P,checkCreateATAOwner:!1});h=I,B&&f.addInstruction(B);let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:!A,checkCreateATAOwner:!1});T=x,K&&f.addInstruction(K),(!h||!T)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let N=await y.getCreatedTokenAccount({mint:new Y(t.lpMint.address)});N||this.logAndCreateError("cannot found lp token account","tokenAccounts",y.tokenAccounts);let E=await this.getCpmmPoolKeys(t.id);return f.addInstruction({instructions:[uu(new Y(t.programId),this.scope.ownerPubKey,new Y(E.authority),new Y(t.id),N,h,T,new Y(E.vault.A),new Y(E.vault.B),b,g,new Y(t.lpMint.address),n,c.sub((Q=p.fee)!=null?Q:new Ge(0)),l.sub((W=d.fee)!=null?W:new Ge(0)))],instructionTypes:[V.CpmmWithdrawLiquidity],lookupTableAddress:E.lookupTableAccount?[E.lookupTableAccount]:[]}),f.addCustomComputeBudget(o),f.versionBuild({txVersion:s})}async swap(e){var h,T,x,K,N,E;let{poolInfo:t,baseIn:n,swapResult:i,config:o,computeBudgetConfig:s,txVersion:a}=e,{bypassAssociatedCheck:u,checkCreateATAOwner:c}=M({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),l=this.createTxBuilder(),[m,p]=[new Y(t.mintA.address),new Y(t.mintB.address)],d=await this.scope.account.getCreatedTokenAccount({programId:new Y((h=t.mintA.programId)!=null?h:Ht),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new Y((T=t.mintB.programId)!=null?T:Ht),mint:p,associatedOnly:!1}),I=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?i.sourceAmountSwapped:i.destinationAmountSwapped,mint:m,tokenAccount:d,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:f}=I,b=Pe(I,["tokenAccount"]);l.addInstruction(b);let B=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?i.destinationAmountSwapped:i.sourceAmountSwapped,mint:p,tokenAccount:y,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:g}=B,P=Pe(B,["tokenAccount"]);l.addInstruction(P),!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let A=await this.getCpmmPoolKeys(t.id);return l.addInstruction({instructions:[n?cu(new Y(t.programId),this.scope.ownerPubKey,new Y(A.authority),new Y(A.config.id),new Y(t.id),f,g,new Y(A.vault.A),new Y(A.vault.B),new Y((x=t.mintA.programId)!=null?x:Ht),new Y((K=t.mintB.programId)!=null?K:Ht),m,p,si(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):lu(new Y(t.programId),this.scope.ownerPubKey,new Y(A.authority),new Y(A.config.id),new Y(t.id),g,f,new Y(A.vault.B),new Y(A.vault.A),new Y((N=t.mintB.programId)!=null?N:Ht),new Y((E=t.mintA.programId)!=null?E:Ht),p,m,si(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[n?V.CpmmSwapBaseIn:V.CpmmSwapBaseOut]}),l.addCustomComputeBudget(s),l.versionBuild({txVersion:a})}computePairAmount({poolInfo:e,amount:t,slippage:n,epochInfo:i,baseIn:o}){var P,A,h,T,I,B,x,K;let s=1-Number(n.toSignificant())/100,a=new Ge(new F(t).mul(10**e[o?"mintA":"mintB"].decimals).mul(s).toFixed(0)),u=we(a,e[o?"mintA":"mintB"].extensions.feeConfig,i,!1),c=a.sub((P=u.fee)!=null?P:new Ge(0)),[l,m]=[new Ge(new F(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new Ge(new F(e.mintAmountB).mul(10**e.mintB.decimals).toString())],p=new Ge(new F(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,F.ROUND_DOWN));this.logDebug("baseReserve:",l.toString(),"quoteReserve:",m.toString()),this.logDebug("tokenIn:",o?e.mintA.symbol:e.mintB.symbol,"amountIn:",a.toString(),"amountInFee:",(h=(A=u.fee)==null?void 0:A.toString())!=null?h:0,"anotherToken:",o?e.mintB.symbol:e.mintA.symbol,"slippage:",`${n.toSignificant()}%`);let d=o?"base":"quote";this.logDebug("input side:",d);let y=c.mul(p).div(d==="base"?l:m),f={amount:ze,fee:void 0,expirationTime:void 0};c.isZero()||(f=we(ad(y,l,m,p)[o?"amountB":"amountA"],e[o?"mintB":"mintA"].extensions.feeConfig,i,!0));let b=new tt(new Ge(1)).add(n),g=we(b.mul(f.amount.sub((T=f.fee)!=null?T:new Ge(0))).quotient,e[o?"mintB":"mintA"].extensions.feeConfig,i,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(B=(I=f.fee)==null?void 0:I.toString())!=null?B:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(K=(x=g.fee)==null?void 0:x.toString())!=null?K:0),{inputAmountFee:u,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function ad(r,e,t,n){let i=r.mul(e).div(n);!i.isZero()&&!r.mul(e).mod(n).isZero()&&(i=i.add(new Ge(1)));let o=r.mul(t).div(n);return!o.isZero()&&!r.mul(t).mod(n).isZero()&&(o=o.add(new Ge(1))),{amountA:i,amountB:o}}var mr=class extends Te{constructor(e){super(e)}static getAddLiquidityDefaultPool({addLiquidityPools:e,poolInfosCache:t}){if(e.length===0)return;if(e.length===1||(e.sort((i,o)=>o.version-i.version),e[0].version!==e[1].version))return e[0];let n=e.filter(i=>i.version===e[0].version);return n.sort((i,o)=>this.comparePoolSize(i,o,t)),n[0]}static comparePoolSize(e,t,n){let i=n[e.id],o=n[t.id];return i===void 0?1:o===void 0?-1:e.baseMint===t.baseMint?i.baseReserve.sub(o.baseReserve).gte(ze)?-1:1:i.baseReserve.sub(o.quoteReserve).gte(ze)?-1:1}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(te));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n}=e,i=await this.getWSolAccounts(),o=this.createTxBuilder();o.addCustomComputeBudget(e.computeBudgetConfig);let s=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(s);let a=X(t);for(let u=0;u<i.length;u++)a.gte(i[u].amount)?(o.addInstruction({instructions:[Nt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(i[u].amount)):(o.addInstruction({instructions:[Nt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),Wn({destination:s.addresses.newAccount,source:i[u].publicKey,amount:a,owner:this.scope.ownerPubKey,tokenProgram:n}));return o.build()}async wrapWSol(e,t){let n=await this.getWSolAccounts(),i=this.createTxBuilder(),o=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return i.addInstruction(o),n.length&&i.addInstruction({instructions:[Wn({destination:n[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Nt({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),i.build()}};import{TOKEN_PROGRAM_ID as ud}from"@solana/spl-token";import{PublicKey as cd,Transaction as _o,TransactionInstruction as ld}from"@solana/web3.js";import fu from"bn.js";var Xe=class extends Te{static getPdaPoolId(e,t){return ie([Xe.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return ie([Xe.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new fu(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:i,chainTime:o}){if(n.length===0)return[];let s=n.map(l=>Xe.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<Xe.VERSION_PROJECT.length;l++)a.push(...s.map(m=>Xe.getPdaOwnerId(t,m,i,l).publicKey));let u=await Tt(e,[...s,...a]),c=[];for(let l=0;l<u.length;l++){let m=Math.floor(l/n.length),p=l%n.length,d=s[p],y=a[l],f=u[p],b=u[n.length+l];if(!(f&&b)||f.data.length!==Xe.POOL_LAYOUT.span||b.data.length!==Xe.OWNER_LAYOUT.span)continue;let g=Xe.POOL_LAYOUT.decode(f.data),P=Xe.OWNER_LAYOUT.decode(b.data),A=g.openTime.toNumber(),h=g.endTime.toNumber(),T=P.tokenInfo.map(x=>x.debtAmount.gt(new fu(0))).filter(x=>!x).length!==3,I=o>A&&o<h&&g.status===1,B=T&&I;c.push({programId:t,poolId:d,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:P.lpAmount,project:Xe.VERSION_PROJECT[m],openTime:A,endTime:h,canClaim:B,canClaimErrorType:T?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,K)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:P.tokenInfo[K].debtAmount.add(P.tokenInfo[K].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o=[];for(let u of e.tokenInfo){let{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({mint:u.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:u.mintAddress.equals(he.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!u.mintAddress.equals(he.WSOL.mint),associatedOnly:u.mintAddress.equals(he.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),o.push(c)}n.addInstruction({instructions:[Xe.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:i,ownerPda:e.ownerAccountId,claimAddress:o}})]});let{transaction:s,signers:a}=n.build();return[{transaction:s,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o={};for(let c of e){let l=[];for(let m of c.tokenInfo){let{account:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(he.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!m.mintAddress.equals(he.WSOL.mint),associatedOnly:m.mintAddress.equals(he.WSOL.mint)?!1:t.associatedOnly});d&&n.addInstruction(d),p&&(o[m.mintAddress.toString()]=p,l.push(p))}n.addInstruction({instructions:[Xe.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:i,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),u=n.allInstructions;return Mr(u,[i,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new _o().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new _o().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new _o().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=O([]),o=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(u=>({pubkey:u,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:u})=>({pubkey:u,isSigner:!1,isWritable:!0})),{pubkey:ud,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new ld({keys:o,programId:e,data:a})}},lt=Xe;lt.CLAIMED_NUM=3,lt.POOL_LAYOUT=O([de(8),_("bump"),_("status"),w("openTime"),w("endTime"),S("ammId"),q(O([_("mintDecimals"),S("mintAddress"),S("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),Xe.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),lt.OWNER_LAYOUT=O([de(8),_("bump"),_("version"),S("poolId"),S("owner"),w("lpAmount"),q(O([S("mintAddress"),w("debtAmount"),w("claimedAmount")]),Xe.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),lt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new cd(e)),lt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},lt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as Eo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Au}from"@solana/spl-token";import dr from"bn.js";import{TransactionInstruction as dd,SYSVAR_RENT_PUBKEY as pd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as yu}from"@solana/spl-token";import{createInitializeAccountInstruction as bu}from"@solana/spl-token";import{SystemProgram as un,Transaction as gu}from"@solana/web3.js";function md(r="accountFlags"){let e=new Ur(r);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var Vo=O([de(5),md("accountFlags"),S("ownAddress"),w("vaultSignerNonce"),S("baseMint"),S("quoteMint"),S("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),S("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),S("requestQueue"),S("eventQueue"),S("bids"),S("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),de(7)]);function fd({programId:r,marketInfo:e}){let t=O([_("version"),We("instruction"),w("baseLotSize"),w("quoteLotSize"),It("feeRateBps"),w("vaultSignerNonce"),w("quoteDustThreshold")]),n=[{pubkey:e.id,isSigner:!1,isWritable:!0},{pubkey:e.requestQueue,isSigner:!1,isWritable:!0},{pubkey:e.eventQueue,isSigner:!1,isWritable:!0},{pubkey:e.bids,isSigner:!1,isWritable:!0},{pubkey:e.asks,isSigner:!1,isWritable:!0},{pubkey:e.baseVault,isSigner:!1,isWritable:!0},{pubkey:e.quoteVault,isSigner:!1,isWritable:!0},{pubkey:e.baseMint,isSigner:!1,isWritable:!1},{pubkey:e.quoteMint,isSigner:!1,isWritable:!1},{pubkey:e.authority?e.quoteMint:pd,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),i=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},i),new dd({keys:n,programId:r,data:i})}async function wu({connection:r,wallet:e,marketInfo:t}){let n=new gu,i=await r.getMinimumBalanceForRentExemption(165);n.add(un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:i,space:165,programId:yu}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:yu}),bu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),bu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new gu;return o.add(un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(Vo.span),space:Vo.span,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),fd({programId:t.programId,marketInfo:{id:t.id.publicKey,requestQueue:t.requestQueue.publicKey,eventQueue:t.eventQueue.publicKey,bids:t.bids.publicKey,asks:t.asks.publicKey,baseVault:t.baseVault.publicKey,quoteVault:t.quoteVault.publicKey,baseMint:t.baseMint,quoteMint:t.quoteMint,baseLotSize:t.baseLotSize,quoteLotSize:t.quoteLotSize,feeRateBps:t.feeRateBps,vaultSignerNonce:t.vaultSignerNonce,quoteDustThreshold:t.quoteDustThreshold}})),[{transaction:n,signer:[],instructionTypes:[V.CreateAccount,V.CreateAccount,V.InitAccount,V.InitAccount]},{transaction:o,signer:[],instructionTypes:[V.CreateAccount,V.CreateAccount,V.CreateAccount,V.CreateAccount,V.CreateAccount,V.InitMarket]}]}var Pn=class extends Te{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:i,dexProgramId:o,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=De({fromPublicKey:u,programId:o}),l=De({fromPublicKey:u,programId:o}),m=De({fromPublicKey:u,programId:o}),p=De({fromPublicKey:u,programId:o}),d=De({fromPublicKey:u,programId:o}),y=De({fromPublicKey:u,programId:Au}),f=De({fromPublicKey:u,programId:Au}),b=0,g=new dr(100);function P(){let N=new dr(0);for(;;)try{return{vaultOwner:Eo.createProgramAddressSync([c.publicKey.toBuffer(),N.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:N}}catch{if(N.iaddn(1),N.gt(new dr(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:h}=P(),T=new dr(Math.round(10**e.decimals*n)),I=new dr(Math.round(n*10**t.decimals*i));if(T.eq(ze))throw Error("lot size is too small");if(I.eq(ze))throw Error("tick size or lot size is too small");let B=await wu({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:o,id:c,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:A,requestQueue:l,eventQueue:m,bids:p,asks:d,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:h,baseLotSize:T,quoteLotSize:I}}),x=this.createTxBuilder();x.addCustomComputeBudget(a),x.addInstruction({instructions:B[0].transaction.instructions,signers:B[0].signer});let K=[];for await(let N of B.slice(1,B.length)){let E=this.createTxBuilder();E.addCustomComputeBudget(a),E.addInstruction({instructions:N.transaction.instructions,signers:N.signer,instructionTypes:N.instructionTypes});let Q=await E.versionBuild({txVersion:s});K.push(Q)}return x.versionMultiBuild({extraPreBuildData:K,extInfo:{address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:p.publicKey,asks:d.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Eo(e.mint),quoteMin:new Eo(t.mint)}},txVersion:s})}};import{PublicKey as fr}from"@solana/web3.js";import{PublicKey as yd,TransactionInstruction as vo,SYSVAR_CLOCK_PUBKEY as bd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Wo}from"@solana/spl-token";var Fo=O([_("instruction"),Us("amount")]),pr=O([_("instruction")]);function JI({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:new yd("11111111111111111111111111111111"),isSigner:!1,isWritable:!1},{pubkey:Wo,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:Bi,isSigner:!1,isWritable:!1},...Object.entries(t).map(([o,s])=>({pubkey:s,isSigner:o==="userOwner",isWritable:!["authority","userOwner","userIdoCheck","userStakeInfo"].includes(o)}))],i=Buffer.alloc(Fo.span);return Fo.encode({instruction:1,amount:Number(e)},i),new vo({keys:n,programId:r,data:i})}function ui({programId:r},e){let t=[{pubkey:Wo,isSigner:!1,isWritable:!1},{pubkey:Bi,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,o])=>({pubkey:o,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(pr.span);return pr.encode({instruction:2},n),new vo({keys:t,programId:r,data:n})}function Do(r){let{poolConfig:e,userKeys:t,side:n}=r,i=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,o=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(pr.span);pr.encode({instruction:2},s);let a=[{pubkey:Wo,isWritable:!1,isSigner:!1},{pubkey:bd,isWritable:!1,isSigner:!1},{pubkey:e.id,isWritable:!0,isSigner:!1},{pubkey:e.authority,isWritable:!1,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new vo({programId:e.programId,keys:a,data:s})}import Pu from"bn.js";var gd={[En.IDO_PROGRAM_ID_V1.toString()]:1,[En.IDO_PROGRAM_ID_V2.toString()]:2,[En.IDO_PROGRAM_ID_V3.toString()]:3,[En.IDO_PROGRAM_ID_V4.toString()]:4},kn=class extends Te{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:o}){let s=this.createTxBuilder(),a=gd[t.programId];a||this.logAndCreateError("invalid version",a);let u=pe(t),[c,l]=[!new Pu(e.coin).isZero(),!new Pu(e.pc).isZero()],m=u.projectInfo.mint.address.equals(te),{account:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.projectInfo.mint.programId,mint:u.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!m,notUseTokenAccount:m,associatedOnly:m?!1:n,checkCreateATAOwner:i});!p&&c&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),c&&d&&s.addInstruction(d);let y=u.buyInfo.mint.address.equals(te),{account:f,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.buyInfo.mint.programId,mint:u.buyInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:n,checkCreateATAOwner:i});if(!p&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&b&&s.addInstruction(b),(!p||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return s.addInstruction({instructions:[...c?[ui({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:p,userIdoInfo:new fr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[ui({programId:new fr(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new fr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[ui({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:p,userIdoInfo:new fr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:o});let g={poolConfig:{id:u.id,programId:u.programId,authority:u.authority,baseVault:u.projectInfo.vault,quoteVault:u.buyInfo.vault,baseToken:t.projectInfo.mint,quoteToken:t.buyInfo.mint},userKeys:{baseTokenAccount:p,quoteTokenAccount:f,ledgerAccount:new fr(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[Do(D(M({},g),{side:"base"}))]:[],...l?[Do(D(M({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as wd}from"@solana/web3.js";import{MintLayout as Ad,TOKEN_2022_PROGRAM_ID as qo,TOKEN_PROGRAM_ID as Uo}from"@solana/spl-token";var yr=class extends Te{constructor(t){super(t);this._tokenList=[];this._tokenMap=new Map;this._blackTokenMap=new Map;this._mintGroup={official:new Set,jup:new Set,extra:new Set};this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:i="strict"}=t||{},{mintList:o,blacklist:s}=await this.scope.fetchV3TokenList(n),a=await this.scope.fetchJupTokenList(i,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._tokenMap.set(ht.address,ht),this._mintGroup.official.add(ht.address),s.forEach(u=>{this._blackTokenMap.set(u.address,D(M({},u),{priority:-1}))}),o.forEach(u=>{var c;this._blackTokenMap.has(u.address)||(this._tokenMap.set(u.address,D(M({},u),{type:"raydium",priority:2,programId:(c=u.programId)!=null?c:u.tags.includes("token-2022")?qo.toBase58():Uo.toBase58()})),this._mintGroup.official.add(u.address))}),a.forEach(u=>{var c;this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,D(M({},u),{type:"jupiter",priority:1,programId:(c=u.programId)!=null?c:u.tags.includes("token-2022")?qo.toBase58():Uo.toBase58()})),this._mintGroup.jup.add(u.address))}),this._extraTokenList.forEach(u=>{this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,D(M({},u),{type:"extra",priority:1,programId:u.programId||u.tags.includes("token-2022")?qo.toBase58():Uo.toBase58()})),this._mintGroup.extra.add(u.address))}),this._tokenList=Array.from(this._tokenMap).map(u=>u[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),i=this._tokenMap.get(n);if(i)return i;if(n.toLocaleUpperCase()==="SOL")return ht;let o=(await this.scope.api.getTokenInfo([n]))[0];if(o)return this._mintGroup.extra.add(n),this._tokenMap.set(n,D(M({},o),{priority:2})),o;let s=await this.scope.connection.getAccountInfo(new wd(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=Ad.decode(s.data),u=n.toString().substring(0,6),c={chainId:101,address:n,programId:s.owner.toBase58(),logoURI:"",symbol:u,name:u,decimals:a.decimals,tags:[],extensions:{},priority:0,type:"unknown"};return this._mintGroup.extra.add(n),this._tokenMap.set(n,c),c}};var ci=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:i,api:o,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:u}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=i?new yt(i):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=ae("Raydium"),this.farm=new Zn({scope:this,moduleName:"Raydium_Farm"}),this.account=new Dn({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new sr({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new yr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new mr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new ar({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new lr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new lt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new Pn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new kn({scope:this,moduleName:"Raydium_ido"}),this.availability={};let c=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:c,value:{chainTime:s||Date.now()-a,offset:a}})}static async load(e){var l;let t=Pd({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:o,logRequests:s,urlConfigs:a}=t,u=new Wr({cluster:n,timeout:i,urlConfigs:a,logCount:o,logRequests:s}),c=new ci(D(M({},t),{api:u}));return await c.fetchAvailabilityStatus((l=e.disableFeatureCheck)!=null?l:!0),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(Dr);return this._owner.publicKey}setOwner(e){return this._owner=e?new yt(e):void 0,this}get connection(){if(!this._connection)throw new Error(Ws);return this._connection}setConnection(e){return this._connection=e,this}get signAllTransactions(){return this._signAllTransactions}setSignAllTransactions(e){return this._signAllTransactions=e,this}checkOwner(){if(!this.owner)throw this.logger.error(Dr),new Error(Dr)}isCacheInvalidate(e){return new Date().getTime()-e>this._apiCacheTime}async fetchChainTime(){try{let e=await this.api.getChainTimeOffset();this._chainTime={fetched:Date.now(),value:{chainTime:Date.now()+e.offset*1e3,offset:e.offset*1e3}}}catch{this._chainTime=void 0}}async fetchV3TokenList(e){if(this.apiData.tokenList&&!this.isCacheInvalidate(this.apiData.tokenList.fetched)&&!e)return this.apiData.tokenList.data;let t=await this.api.getTokenList(),n={fetched:Date.now(),data:t};return this.apiData.tokenList=n,n.data}async fetchJupTokenList(e,t){var o;let n=(o=this.apiData.jupTokenList)==null?void 0:o[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let i=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=D(M({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:i}}),this.apiData.jupTokenList[e].data}get chainTimeData(){var e;return(e=this._chainTime)==null?void 0:e.value}async chainTimeOffset(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.offset:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.offset)||0)}async currentBlockChainTime(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.chainTime:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.chainTime)||Date.now())}async fetchEpochInfo(){return this._epochInfo&&Date.now()-this._epochInfo.fetched<=1e3*30?this._epochInfo.value:(this._epochInfo={fetched:Date.now(),value:await this.connection.getEpochInfo()},this._epochInfo.value)}async fetchAvailabilityStatus(e){if(e)return{};try{let t=await this.api.fetchAvailabilityStatus(),n=t.all===!1;return this.availability={all:t.all,swap:n?!1:t.swap,createConcentratedPosition:n?!1:t.createConcentratedPosition,addConcentratedPosition:n?!1:t.addConcentratedPosition,addStandardPosition:n?!1:t.addStandardPosition,removeConcentratedPosition:n?!1:t.removeConcentratedPosition,removeStandardPosition:n?!1:t.removeStandardPosition,addFarm:n?!1:t.addFarm,removeFarm:n?!1:t.removeFarm},t}catch{return{}}}};import{TOKEN_PROGRAM_ID as zo,TOKEN_2022_PROGRAM_ID as Go}from"@solana/spl-token";import{PublicKey as mt,TransactionInstruction as Yo,SystemProgram as hu}from"@solana/web3.js";import Xo from"bn.js";function oB(r,e,t,n,i,o,s,a,u,c,l,m){let p=O([_("instruction"),w("amountIn"),w("amountOut")]),d=[{pubkey:hu.programId,isSigner:!1,isWritable:!1},{pubkey:zo,isSigner:!1,isWritable:!1},{pubkey:new mt(t.programId),isSigner:!1,isWritable:!1},{pubkey:new mt(t.id),isSigner:!1,isWritable:!0},{pubkey:new mt(n.id),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=pe(t);d.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=pe(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new mt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=pe(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let y=Buffer.alloc(p.span);return p.encode({instruction:4,amountIn:c,amountOut:l},y),new Yo({keys:d,programId:r,data:y})}function sB(r,e,t,n,i,o,s,a,u,c){let l=O([_("instruction")]),m=[{pubkey:hu.programId,isSigner:!1,isWritable:!1},{pubkey:zo,isSigner:!1,isWritable:!1},{pubkey:new mt(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new mt(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new mt(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let d=pe(n);m.push({pubkey:d.config.id,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.A:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.B:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},...c.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let d=pe(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:new mt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0})}else{let d=pe(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},...d.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:d.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:d.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0}])}let p=Buffer.alloc(l.span);return l.encode({instruction:5},p),new Yo({keys:m,programId:r,data:p})}function ku(r,e,t,n,i,o){if(r.pooltype.includes("StablePool")){let s=pe(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new mt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(r.type==="Concentrated"){let s=r,a=pe(e),u=s.mintA.address===t;return[{pubkey:new mt(String(r.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:a.id,isSigner:!1,isWritable:!0},...a.mintA.programId.equals(Go)||a.mintB.programId.equals(Go)?[{pubkey:Go,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:ut(new mt(String(r.programId)),new mt(r.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=pe(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function kd(r,e,t,n,i,o,s,a,u,c,l,m,p,d){let y=O([_("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:zo,isSigner:!1,isWritable:!1}];f.push(...ku(a,c,o,t,n,d[0])),f.push(...ku(u,l,s,n,i,d[1]));let b=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:p},b),new Yo({keys:f,programId:r,data:b})}async function aB({routeProgram:r,ownerInfo:e,inputMint:t,swapInfo:n}){var i,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=pe(n.poolKey[0]),m=t.equals(l.mintA.address)?St.add(rt):Kt.sub(rt);return await Ie.makeSwapBaseInInstructions({poolInfo:l,poolKeys:l,ownerInfo:{wallet:e.wallet,tokenAccountA:l.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:l.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(i=n.minAmountOut.fee)==null?void 0:i.raw)!=null?o:new Xo(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[$r({poolKeys:l,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((a=(s=n.minAmountOut.fee)==null?void 0:s.raw)!=null?a:new Xo(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?V.AmmV5SwapBaseIn:V.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let l=n.poolInfo[0],m=n.poolInfo[1],p=n.poolKey[0],d=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[kd(r,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.minMiddleAmountFee.token.mint.toString(),l,m,p,d,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((c=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?c:new Xo(0)),n.remainingAccounts)],instructionTypes:[V.RouteSwap],lookupTableAddress:[p.lookupTableAccount,d.lookupTableAccount].filter(y=>y!==void 0),address:{}}}else throw Error("route type error")}import Iu from"bn.js";var Qo=new Iu(1e6);function hd(r,e,t){return r.mul(e).add(t).sub(new Iu(1)).div(t)}function Tu(r,e,t){return r.mul(e).div(t)}var li=class{static tradingFee(e,t){return hd(e,t,Qo)}static protocolFee(e,t){return Tu(e,t,Qo)}static fundFee(e,t){return Tu(e,t,Qo)}};import br from"bn.js";function mi(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function Td(r,e){if(e.isZero())throw Error("rhs is zero");let t=r.div(e);if(t.isZero())throw Error("quotient is zero");let n=mi(r,e);if(n.gt(hn)){t=t.add(new br(1));let i=r.div(t);n=mi(r,t),n.gt(hn)&&(i=i.add(new br(1)))}return[t,e]}var hn=new br(0),di=class{static swapWithoutFees(e,t,n){let i=t.mul(n),o=t.add(e),[s,a]=Td(i,o),u=a.sub(t),c=n.sub(s);if(c.isZero())throw Error("destinationAmountSwapped is zero");return{sourceAmountSwapped:u,destinationAmountSwapped:c}}static lpTokensToTradingTokens(e,t,n,i,o){let s=e.mul(n).div(t),a=e.mul(i).div(t);if(o===0)return{tokenAmount0:s,tokenAmount1:a};if(o===1)return mi(e.mul(n),t).gt(hn)&&s.gt(hn)&&(s=s.add(new br(1))),mi(e.mul(i),t).gt(hn)&&a.gt(hn)&&(a=a.add(new br(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var xu=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(xu||{}),Bu=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swap(e,t,n,i){let o=li.tradingFee(e,i),s=e.sub(o),{sourceAmountSwapped:a,destinationAmountSwapped:u}=di.swapWithoutFees(s,t,n),c=a.add(o);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:o}}};var Su={[Fi.toBase58()]:3},Ku={3:Fi};var Id=O([de(5),de(8),S("ownAddress"),w("vaultSignerNonce"),S("baseMint"),S("quoteMint"),S("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),S("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),S("requestQueue"),S("eventQueue"),S("bids"),S("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),de(7)]),Cu={3:Id};import{PublicKey as Ru}from"@solana/web3.js";var pi=ae("Serum"),Lu=class{static getProgramId(e){let t=Ku[e];return t||pi.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=Su[t];return n||pi.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=Cu[e];return t||pi.logWithError(!!t,"invalid version","version",e),t}static getLayouts(e){return{state:this.getStateLayout(e)}}static getAssociatedAuthority({programId:e,marketId:t}){let n=[t.toBuffer()],i=0,o;for(;i<100;){try{let s=n.concat(Buffer.from([i]),Buffer.alloc(7));o=Ru.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;i++;continue}return{publicKey:o,nonce:i}}return pi.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:Ru.default,nonce:i}}};var tS=r=>r;export{Sm as AMM_CONFIG_SEED,Nk as AmmConfigLayout,Wa as BIT_PRECISION,ar as Clmm,Ie as ClmmInstrument,di as ConstantProductCurve,mu as CpmmConfigInfoLayout,li as CpmmFee,du as CpmmPoolInfoLayout,Bu as CurveCalculator,dm as DataElement,Ko as EXTENSION_TICKARRAY_BITMAP_SIZE,ca as FARM_LOCK_MINT,la as FARM_LOCK_VAULT,wt as FARM_PROGRAM_TO_VERSION,da as FARM_VERSION_TO_LEDGER_LAYOUT,ma as FARM_VERSION_TO_STATE_LAYOUT,ni as FEE_RATE_DENOMINATOR,Qo as FEE_RATE_DENOMINATOR_VALUE,_m as FETCH_TICKARRAY_COUNT,Mm as Fee,Ja as LIQUIDITY_FEES_DENOMINATOR,$a as LIQUIDITY_FEES_NUMERATOR,qm as LIQUIDITY_VERSION_TO_SERUM_VERSION,HA as LIQUIDITY_VERSION_TO_STATE_LAYOUT,Da as LOG_B_2_X32,qa as LOG_B_P_ERR_MARGIN_LOWER_X64,Ua as LOG_B_P_ERR_MARGIN_UPPER_X64,ue as LiquidityMath,Vo as MARKET_STATE_LAYOUT_V2,Id as MARKET_STATE_LAYOUT_V3,Cu as MARKET_VERSION_TO_STATE_LAYOUT,Kt as MAX_SQRT_PRICE_X64,Qe as MAX_TICK,St as MIN_SQRT_PRICE_X64,qe as MIN_TICK,wn as MODEL_DATA_PUBKEY,Lu as Market,$ as MathUtil,So as MaxU64,va as MaxUint128,_t as NEGATIVE_ONE,rt as ONE,Om as OPERATION_SEED,Ro as ObservationInfoLayout,Fm as ObservationLayout,Ya as OperationLayout,Rm as POOL_REWARD_VAULT_SEED,Km as POOL_SEED,Nm as POOL_TICK_ARRAY_BITMAP_SEED,Cm as POOL_VAULT_SEED,Va as POSITION_SEED,ri as PoolInfoLayout,Ue as PoolUtils,ii as PositionInfoLayout,Wm as PositionRewardInfoLayout,ir as PositionUtils,Mk as ProtocolPositionLayout,ti as Q128,it as Q64,ci as Raydium,vm as RewardInfo,xu as RoundDirection,Su as SERUM_PROGRAMID_TO_VERSION,Ku as SERUM_VERSION_TO_PROGRAMID,ht as SOL_INFO,IA as SPL_MINT_LAYOUT,Z as SqrtPriceMath,gn as StableLayout,on as SwapMath,rn as TICK_ARRAY_BITMAP_SIZE,Lm as TICK_ARRAY_SEED,Le as TICK_ARRAY_SIZE,hP as TICK_SPACINGS,Re as TOKEN_WSOL,Vt as TickArrayBitmap,za as TickArrayBitmapExtensionLayout,rr as TickArrayBitmapExtensionUtils,nr as TickArrayLayout,Dm as TickLayout,sn as TickMath,ce as TickQuery,U as TickUtils,tr as U64Resolution,IP as U64_IGNORE_RANGE,aa as Voter,zl as VoterDepositEntry,Xl as VoterLockup,sa as VoterRegistrar,Gl as VoterVotingMintConfig,me as ZERO,Ao as addLiquidityLayout,$i as associatedLedgerAccountLayout,mo as calFarmRewardAmount,hd as ceilDiv,pr as claimLayout,Nt as closeAccountInstruction,ya as createAssociatedLedgerAccountInstruction,Ta as createPoolFeeLayout,La as createPoolV4InstructionV2,QA as createPoolV4Layout,xt as createWSolAccountInstructions,Ye as dwLayout,no as farmAddRewardLayout,cw as farmLedgerLayoutV3_1,Un as farmLedgerLayoutV3_2,lw as farmLedgerLayoutV5_1,ia as farmLedgerLayoutV5_2,oa as farmLedgerLayoutV6_1,fa as farmRewardInfoToConfig,eo as farmRewardLayout,to as farmRewardRestartLayout,Ul as farmRewardTimeInfoLayout,na as farmStateV3Layout,ra as farmStateV5Layout,qn as farmStateV6Layout,_w as fetchMultipleFarmInfoAndUpdate,lh as fetchMultipleInfo,bo as fixedSwapInLayout,go as fixedSwapOutLayout,Tu as floorDiv,hm as formatLayout,De as generatePubKey,pa as getAssociatedAuthority,No as getAssociatedConfigId,Je as getAssociatedLedgerAccount,Xn as getAssociatedLedgerPoolAccount,zm as getAssociatedOpenOrders,tu as getAssociatedPoolKeys,td as getCpmmPdaAmmConfigId,nd as getCpmmPdaPoolId,iu as getCreatePoolKeys,po as getDepositEntryIndex,Sa as getDxByDyBaseIn,Ba as getDyByDxBaseIn,jr as getFarmLedgerLayout,Yl as getFarmStateLayout,Ym as getLiquidityAssociatedAuthority,an as getLiquidityAssociatedId,ck as getLiquidityFromAmounts,AP as getPdaAmmConfigId,ut as getPdaExBitmapAccount,rd as getPdaLpMint,ei as getPdaMetadataKey,si as getPdaObservationId,er as getPdaOperationAccount,at as getPdaPersonalPositionAddress,ed as getPdaPoolAuthority,Ea as getPdaPoolId,Fa as getPdaPoolRewardVaulId,Bo as getPdaPoolVaultId,nn as getPdaProtocolPositionAddress,be as getPdaTickArrayAddress,ru as getPdaVault,oo as getRegistrarAddress,Ka as getStablePrice,lo as getTokenOwnerRecordAddress,uo as getVoterAddress,co as getVoterWeightRecordAddress,ao as getVotingMintAuthority,so as getVotingTokenMint,nm as governanceCreateTokenOwnerRecord,fP as i16ToBytes,Jr as i32ToBytes,wo as initPoolLayout,ji as initTokenAccountInstruction,fd as initializeMarket,ro as isValidFarmVersion,Jn as isZero,Vw as judgeFarmType,Io as leadingZeros,_a as leastSignificantBit,cm as liquidityStateV4Layout,lm as liquidityStateV5Layout,$r as makeAMMSwapInstruction,Ra as makeAddLiquidityInstruction,yo as makeAddNewRewardInstruction,ui as makeClaimInstruction,Do as makeClaimInstructionV4,su as makeCreateCpmmPoolInInstruction,ba as makeCreateFarmInstruction,wu as makeCreateMarketInstruction,ga as makeCreatorWithdrawFarmRewardInstruction,au as makeDepositCpmmInInstruction,wa as makeDepositInstructionV3,Aa as makeDepositInstructionV5,Pa as makeDepositInstructionV6,Jw as makeDepositTokenInstruction,tA as makeDepositWithdrawInstruction,dP as makeInitPoolInstructionV4,JI as makePurchaseInstruction,fo as makeRestartRewardInstruction,Oa as makeSimulatePoolInfoInstruction,cu as makeSwapCpmmBaseInInInstruction,lu as makeSwapCpmmBaseOutInInstruction,xm as makeSwapFixedInInstruction,Bm as makeSwapFixedOutInstruction,aB as makeSwapInstruction,Wn as makeTransferInstruction,uu as makeWithdrawCpmmInInstruction,jn as makeWithdrawInstructionV3,Hn as makeWithdrawInstructionV5,Qn as makeWithdrawInstructionV6,eA as makeWithdrawTokenInstruction,TP as mockCreatePoolInfo,Ga as mockV3CreatePoolInfo,pm as modelDataInfoLayout,Ma as mostSignificantBit,ta as parseTokenAccountResp,OA as parseTokenInfo,zt as poolTypeV6,Fo as purchaseLayout,Wl as realFarmStateV3Layout,Dl as realFarmStateV5Layout,ql as realFarmV6Layout,To as removeLiquidityInstruction,Po as removeLiquidityLayout,oB as route1Instruction,sB as route2Instruction,kd as routeInstruction,mP as simulatePoolInfoInstruction,_A as solToWSolToken,qt as splAccountLayout,ha as toToken,MA as toTokenAmount,NA as toTokenInfo,xo as trailingZeros,Na as u16ToBytes,yP as u32ToBytes,tS as unionArr,Ql as updateFarmPoolInfo,io as validateFarmRewards,im as voterStakeRegistryCreateDepositEntry,rm as voterStakeRegistryCreateVoter,Jl as voterStakeRegistryDeposit,em as voterStakeRegistryUpdateVoterWeightRecord,tm as voterStakeRegistryWithdraw,VA as wSolToSolToken,Ji as withdrawRewardLayout};
|
|
1
|
+
var Ou=Object.defineProperty,Nu=Object.defineProperties;var Mu=Object.getOwnPropertyDescriptors;var Ar=Object.getOwnPropertySymbols;var Zo=Object.prototype.hasOwnProperty,$o=Object.prototype.propertyIsEnumerable;var jo=(r,e,t)=>e in r?Ou(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,N=(r,e)=>{for(var t in e||(e={}))Zo.call(e,t)&&jo(r,t,e[t]);if(Ar)for(var t of Ar(e))$o.call(e,t)&&jo(r,t,e[t]);return r},D=(r,e)=>Nu(r,Mu(e));var Pe=(r,e)=>{var t={};for(var n in r)Zo.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Ar)for(var n of Ar(r))e.indexOf(n)<0&&$o.call(r,n)&&(t[n]=r[n]);return t};import{merge as Pd}from"lodash";import ul from"axios";import{get as Jo,set as _u}from"lodash";import ts from"dayjs";import Vu from"dayjs/plugin/utc";ts.extend(Vu);var wi=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return ts().utc().format("YYYY/MM/DD HH:mm:ss UTC")}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(n=>typeof n=="object"?JSON.stringify(n):n).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},es={},Eu={};function ae(r){let e=Jo(es,r);if(!e){let t=Jo(Eu,r);e=new wi({name:r,logLevel:t}),_u(es,r,e)}return e}import{PublicKey as zc}from"@solana/web3.js";import Yc from"bn.js";import Uc from"big.js";import Or from"bn.js";import Ze from"bn.js";var cn=9e15,Dt=1e9,Ai="0123456789abcdef",kr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",hr="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Pi={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-cn,maxE:cn,crypto:!1},os,Rt,J=!0,Ir="[DecimalError] ",Wt=Ir+"Invalid argument: ",ss=Ir+"Precision limit exceeded",as=Ir+"crypto unavailable",us="[object Decimal]",ve=Math.floor,Ke=Math.pow,Fu=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,vu=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Wu=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,cs=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,ft=1e7,Q=7,Du=9007199254740991,qu=kr.length-1,ki=hr.length-1,L={toStringTag:us};L.absoluteValue=L.abs=function(){var r=new this.constructor(this);return r.s<0&&(r.s=1),G(r)};L.ceil=function(){return G(new this.constructor(this),this.e+1,2)};L.clampedTo=L.clamp=function(r,e){var t,n=this,i=n.constructor;if(r=new i(r),e=new i(e),!r.s||!e.s)return new i(NaN);if(r.gt(e))throw Error(Wt+e);return t=n.cmp(r),t<0?r:n.cmp(e)>0?e:new i(n)};L.comparedTo=L.cmp=function(r){var e,t,n,i,o=this,s=o.d,a=(r=new o.constructor(r)).d,u=o.s,c=r.s;if(!s||!a)return!u||!c?NaN:u!==c?u:s===a?0:!s^u<0?1:-1;if(!s[0]||!a[0])return s[0]?u:a[0]?-c:0;if(u!==c)return u;if(o.e!==r.e)return o.e>r.e^u<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^u<0?1:-1;return n===i?0:n>i^u<0?1:-1};L.cosine=L.cos=function(){var r,e,t=this,n=t.constructor;return t.d?t.d[0]?(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+Q,n.rounding=1,t=Uu(n,fs(n,t)),n.precision=r,n.rounding=e,G(Rt==2||Rt==3?t.neg():t,r,e,!0)):new n(1):new n(NaN)};L.cubeRoot=L.cbrt=function(){var r,e,t,n,i,o,s,a,u,c,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(J=!1,o=l.s*Ke(l.s*l,1/3),!o||Math.abs(o)==1/0?(t=Me(l.d),r=l.e,(o=(r-t.length+1)%3)&&(t+=o==1||o==-2?"0":"00"),o=Ke(t,1/3),r=ve((r+1)/3)-(r%3==(r<0?-1:2)),o==1/0?t="5e"+r:(t=o.toExponential(),t=t.slice(0,t.indexOf("e")+1)+r),n=new m(t),n.s=l.s):n=new m(o.toString()),s=(r=m.precision)+3;;)if(a=n,u=a.times(a).times(a),c=u.plus(l),n=ge(c.plus(l).times(a),c.plus(u),s+2,1),Me(a.d).slice(0,s)===(t=Me(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(G(a,r+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(G(n,r+1,1),e=!n.times(n).times(n).eq(l));break}return J=!0,G(n,r,m.rounding,e)};L.decimalPlaces=L.dp=function(){var r,e=this.d,t=NaN;if(e){if(r=e.length-1,t=(r-ve(this.e/Q))*Q,r=e[r],r)for(;r%10==0;r/=10)t--;t<0&&(t=0)}return t};L.dividedBy=L.div=function(r){return ge(this,new this.constructor(r))};L.dividedToIntegerBy=L.divToInt=function(r){var e=this,t=e.constructor;return G(ge(e,new t(r),0,1,1),t.precision,t.rounding)};L.equals=L.eq=function(r){return this.cmp(r)===0};L.floor=function(){return G(new this.constructor(this),this.e+1,3)};L.greaterThan=L.gt=function(r){return this.cmp(r)>0};L.greaterThanOrEqualTo=L.gte=function(r){var e=this.cmp(r);return e==1||e===0};L.hyperbolicCosine=L.cosh=function(){var r,e,t,n,i,o=this,s=o.constructor,a=new s(1);if(!o.isFinite())return new s(o.s?1/0:NaN);if(o.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(o.e,o.sd())+4,s.rounding=1,i=o.d.length,i<32?(r=Math.ceil(i/3),e=(1/Br(4,r)).toString()):(r=16,e="2.3283064365386962890625e-10"),o=ln(s,1,o.times(e),new s(1),!0);for(var u,c=r,l=new s(8);c--;)u=o.times(o),o=a.minus(u.times(l.minus(u.times(l))));return G(o,s.precision=t,s.rounding=n,!0)};L.hyperbolicSine=L.sinh=function(){var r,e,t,n,i=this,o=i.constructor;if(!i.isFinite()||i.isZero())return new o(i);if(e=o.precision,t=o.rounding,o.precision=e+Math.max(i.e,i.sd())+4,o.rounding=1,n=i.d.length,n<3)i=ln(o,2,i,i,!0);else{r=1.4*Math.sqrt(n),r=r>16?16:r|0,i=i.times(1/Br(5,r)),i=ln(o,2,i,i,!0);for(var s,a=new o(5),u=new o(16),c=new o(20);r--;)s=i.times(i),i=i.times(a.plus(s.times(u.times(s).plus(c))))}return o.precision=e,o.rounding=t,G(i,e,t,!0)};L.hyperbolicTangent=L.tanh=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+7,n.rounding=1,ge(t.sinh(),t.cosh(),n.precision=r,n.rounding=e)):new n(t.s)};L.inverseCosine=L.acos=function(){var r,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,o=t.rounding;return n!==-1?n===0?e.isNeg()?pt(t,i,o):new t(0):new t(NaN):e.isZero()?pt(t,i+4,o).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),r=pt(t,i+4,o).times(.5),t.precision=i,t.rounding=o,r.minus(e))};L.inverseHyperbolicCosine=L.acosh=function(){var r,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(r=n.precision,e=n.rounding,n.precision=r+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,J=!1,t=t.times(t).minus(1).sqrt().plus(t),J=!0,n.precision=r,n.rounding=e,t.ln()):new n(t)};L.inverseHyperbolicSine=L.asinh=function(){var r,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,J=!1,t=t.times(t).plus(1).sqrt().plus(t),J=!0,n.precision=r,n.rounding=e,t.ln())};L.inverseHyperbolicTangent=L.atanh=function(){var r,e,t,n,i=this,o=i.constructor;return i.isFinite()?i.e>=0?new o(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(r=o.precision,e=o.rounding,n=i.sd(),Math.max(n,r)<2*-i.e-1?G(new o(i),r,e,!0):(o.precision=t=n-i.e,i=ge(i.plus(1),new o(1).minus(i),t+r,1),o.precision=r+4,o.rounding=1,i=i.ln(),o.precision=r,o.rounding=e,i.times(.5))):new o(NaN)};L.inverseSine=L.asin=function(){var r,e,t,n,i=this,o=i.constructor;return i.isZero()?new o(i):(e=i.abs().cmp(1),t=o.precision,n=o.rounding,e!==-1?e===0?(r=pt(o,t+4,n).times(.5),r.s=i.s,r):new o(NaN):(o.precision=t+6,o.rounding=1,i=i.div(new o(1).minus(i.times(i)).sqrt().plus(1)).atan(),o.precision=t,o.rounding=n,i.times(2)))};L.inverseTangent=L.atan=function(){var r,e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding;if(c.isFinite()){if(c.isZero())return new l(c);if(c.abs().eq(1)&&m+4<=ki)return s=pt(l,m+4,p).times(.25),s.s=c.s,s}else{if(!c.s)return new l(NaN);if(m+4<=ki)return s=pt(l,m+4,p).times(.5),s.s=c.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/Q+2|0),r=t;r;--r)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(J=!1,e=Math.ceil(a/Q),n=1,u=c.times(c),s=new l(c),i=c;r!==-1;)if(i=i.times(u),o=s.minus(i.div(n+=2)),i=i.times(u),s=o.plus(i.div(n+=2)),s.d[e]!==void 0)for(r=e;s.d[r]===o.d[r]&&r--;);return t&&(s=s.times(2<<t-1)),J=!0,G(s,l.precision=m,l.rounding=p,!0)};L.isFinite=function(){return!!this.d};L.isInteger=L.isInt=function(){return!!this.d&&ve(this.e/Q)>this.d.length-2};L.isNaN=function(){return!this.s};L.isNegative=L.isNeg=function(){return this.s<0};L.isPositive=L.isPos=function(){return this.s>0};L.isZero=function(){return!!this.d&&this.d[0]===0};L.lessThan=L.lt=function(r){return this.cmp(r)<0};L.lessThanOrEqualTo=L.lte=function(r){return this.cmp(r)<1};L.logarithm=L.log=function(r){var e,t,n,i,o,s,a,u,c=this,l=c.constructor,m=l.precision,p=l.rounding,d=5;if(r==null)r=new l(10),e=!0;else{if(r=new l(r),t=r.d,r.s<0||!t||!t[0]||r.eq(1))return new l(NaN);e=r.eq(10)}if(t=c.d,c.s<0||!t||!t[0]||c.eq(1))return new l(t&&!t[0]?-1/0:c.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)o=!0;else{for(i=t[0];i%10===0;)i/=10;o=i!==1}if(J=!1,a=m+d,s=vt(c,a),n=e?Tr(l,a+10):vt(r,a),u=ge(s,n,a,1),xn(u.d,i=m,p))do if(a+=10,s=vt(c,a),n=e?Tr(l,a+10):vt(r,a),u=ge(s,n,a,1),!o){+Me(u.d).slice(i+1,i+15)+1==1e14&&(u=G(u,m+1,0));break}while(xn(u.d,i+=10,p));return J=!0,G(u,m,p)};L.minus=L.sub=function(r){var e,t,n,i,o,s,a,u,c,l,m,p,d=this,y=d.constructor;if(r=new y(r),!d.d||!r.d)return!d.s||!r.s?r=new y(NaN):d.d?r.s=-r.s:r=new y(r.d||d.s!==r.s?d:NaN),r;if(d.s!=r.s)return r.s=-r.s,d.plus(r);if(c=d.d,p=r.d,a=y.precision,u=y.rounding,!c[0]||!p[0]){if(p[0])r.s=-r.s;else if(c[0])r=new y(d);else return new y(u===3?-0:0);return J?G(r,a,u):r}if(t=ve(r.e/Q),l=ve(d.e/Q),c=c.slice(),o=l-t,o){for(m=o<0,m?(e=c,o=-o,s=p.length):(e=p,t=l,s=c.length),n=Math.max(Math.ceil(a/Q),s)+2,o>n&&(o=n,e.length=1),e.reverse(),n=o;n--;)e.push(0);e.reverse()}else{for(n=c.length,s=p.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(c[n]!=p[n]){m=c[n]<p[n];break}o=0}for(m&&(e=c,c=p,p=e,r.s=-r.s),s=c.length,n=p.length-s;n>0;--n)c[s++]=0;for(n=p.length;n>o;){if(c[--n]<p[n]){for(i=n;i&&c[--i]===0;)c[i]=ft-1;--c[i],c[n]+=ft}c[n]-=p[n]}for(;c[--s]===0;)c.pop();for(;c[0]===0;c.shift())--t;return c[0]?(r.d=c,r.e=xr(c,t),J?G(r,a,u):r):new y(u===3?-0:0)};L.modulo=L.mod=function(r){var e,t=this,n=t.constructor;return r=new n(r),!t.d||!r.s||r.d&&!r.d[0]?new n(NaN):!r.d||t.d&&!t.d[0]?G(new n(t),n.precision,n.rounding):(J=!1,n.modulo==9?(e=ge(t,r.abs(),0,3,1),e.s*=r.s):e=ge(t,r,0,n.modulo,1),e=e.times(r),J=!0,t.minus(e))};L.naturalExponential=L.exp=function(){return hi(this)};L.naturalLogarithm=L.ln=function(){return vt(this)};L.negated=L.neg=function(){var r=new this.constructor(this);return r.s=-r.s,G(r)};L.plus=L.add=function(r){var e,t,n,i,o,s,a,u,c,l,m=this,p=m.constructor;if(r=new p(r),!m.d||!r.d)return!m.s||!r.s?r=new p(NaN):m.d||(r=new p(r.d||m.s===r.s?m:NaN)),r;if(m.s!=r.s)return r.s=-r.s,m.minus(r);if(c=m.d,l=r.d,a=p.precision,u=p.rounding,!c[0]||!l[0])return l[0]||(r=new p(m)),J?G(r,a,u):r;if(o=ve(m.e/Q),n=ve(r.e/Q),c=c.slice(),i=o-n,i){for(i<0?(t=c,i=-i,s=l.length):(t=l,n=o,s=c.length),o=Math.ceil(a/Q),s=o>s?o+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=c.length,i=l.length,s-i<0&&(i=s,t=l,l=c,c=t),e=0;i;)e=(c[--i]=c[i]+l[i]+e)/ft|0,c[i]%=ft;for(e&&(c.unshift(e),++n),s=c.length;c[--s]==0;)c.pop();return r.d=c,r.e=xr(c,n),J?G(r,a,u):r};L.precision=L.sd=function(r){var e,t=this;if(r!==void 0&&r!==!!r&&r!==1&&r!==0)throw Error(Wt+r);return t.d?(e=ls(t.d),r&&t.e+1>e&&(e=t.e+1)):e=NaN,e};L.round=function(){var r=this,e=r.constructor;return G(new e(r),r.e+1,e.rounding)};L.sine=L.sin=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+Math.max(t.e,t.sd())+Q,n.rounding=1,t=Xu(n,fs(n,t)),n.precision=r,n.rounding=e,G(Rt>2?t.neg():t,r,e,!0)):new n(NaN)};L.squareRoot=L.sqrt=function(){var r,e,t,n,i,o,s=this,a=s.d,u=s.e,c=s.s,l=s.constructor;if(c!==1||!a||!a[0])return new l(!c||c<0&&(!a||a[0])?NaN:a?s:1/0);for(J=!1,c=Math.sqrt(+s),c==0||c==1/0?(e=Me(a),(e.length+u)%2==0&&(e+="0"),c=Math.sqrt(e),u=ve((u+1)/2)-(u<0||u%2),c==1/0?e="5e"+u:(e=c.toExponential(),e=e.slice(0,e.indexOf("e")+1)+u),n=new l(e)):n=new l(c.toString()),t=(u=l.precision)+3;;)if(o=n,n=o.plus(ge(s,o,t+2,1)).times(.5),Me(o.d).slice(0,t)===(e=Me(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(G(o,u+1,0),o.times(o).eq(s))){n=o;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(G(n,u+1,1),r=!n.times(n).eq(s));break}return J=!0,G(n,u,l.rounding,r)};L.tangent=L.tan=function(){var r,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(r=n.precision,e=n.rounding,n.precision=r+10,n.rounding=1,t=t.sin(),t.s=1,t=ge(t,new n(1).minus(t.times(t)).sqrt(),r+10,0),n.precision=r,n.rounding=e,G(Rt==2||Rt==4?t.neg():t,r,e,!0)):new n(NaN)};L.times=L.mul=function(r){var e,t,n,i,o,s,a,u,c,l=this,m=l.constructor,p=l.d,d=(r=new m(r)).d;if(r.s*=l.s,!p||!p[0]||!d||!d[0])return new m(!r.s||p&&!p[0]&&!d||d&&!d[0]&&!p?NaN:!p||!d?r.s/0:r.s*0);for(t=ve(l.e/Q)+ve(r.e/Q),u=p.length,c=d.length,u<c&&(o=p,p=d,d=o,s=u,u=c,c=s),o=[],s=u+c,n=s;n--;)o.push(0);for(n=c;--n>=0;){for(e=0,i=u+n;i>n;)a=o[i]+d[n]*p[i-n-1]+e,o[i--]=a%ft|0,e=a/ft|0;o[i]=(o[i]+e)%ft|0}for(;!o[--s];)o.pop();return e?++t:o.shift(),r.d=o,r.e=xr(o,t),J?G(r,m.precision,m.rounding):r};L.toBinary=function(r,e){return Ii(this,2,r,e)};L.toDecimalPlaces=L.toDP=function(r,e){var t=this,n=t.constructor;return t=new n(t),r===void 0?t:(He(r,0,Dt),e===void 0?e=n.rounding:He(e,0,8),G(t,r+t.e+1,e))};L.toExponential=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=kt(n,!0):(He(r,0,Dt),e===void 0?e=i.rounding:He(e,0,8),n=G(new i(n),r+1,e),t=kt(n,!0,r+1)),n.isNeg()&&!n.isZero()?"-"+t:t};L.toFixed=function(r,e){var t,n,i=this,o=i.constructor;return r===void 0?t=kt(i):(He(r,0,Dt),e===void 0?e=o.rounding:He(e,0,8),n=G(new o(i),r+i.e+1,e),t=kt(n,!1,r+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};L.toFraction=function(r){var e,t,n,i,o,s,a,u,c,l,m,p,d=this,y=d.d,f=d.constructor;if(!y)return new f(d);if(c=t=new f(1),n=u=new f(0),e=new f(n),o=e.e=ls(y)-d.e-1,s=o%Q,e.d[0]=Ke(10,s<0?Q+s:s),r==null)r=o>0?e:c;else{if(a=new f(r),!a.isInt()||a.lt(c))throw Error(Wt+a);r=a.gt(e)?o>0?e:c:a}for(J=!1,a=new f(Me(y)),l=f.precision,f.precision=o=y.length*Q*2;m=ge(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(r)!=1;)t=n,n=i,i=c,c=u.plus(m.times(i)),u=i,i=e,e=a.minus(m.times(i)),a=i;return i=ge(r.minus(t),n,0,1,1),u=u.plus(i.times(c)),t=t.plus(i.times(n)),u.s=c.s=d.s,p=ge(c,n,o,1).minus(d).abs().cmp(ge(u,t,o,1).minus(d).abs())<1?[c,n]:[u,t],f.precision=l,J=!0,p};L.toHexadecimal=L.toHex=function(r,e){return Ii(this,16,r,e)};L.toNearest=function(r,e){var t=this,n=t.constructor;if(t=new n(t),r==null){if(!t.d)return t;r=new n(1),e=n.rounding}else{if(r=new n(r),e===void 0?e=n.rounding:He(e,0,8),!t.d)return r.s?t:r;if(!r.d)return r.s&&(r.s=t.s),r}return r.d[0]?(J=!1,t=ge(t,r,0,e,1).times(r),J=!0,G(t)):(r.s=t.s,t=r),t};L.toNumber=function(){return+this};L.toOctal=function(r,e){return Ii(this,8,r,e)};L.toPower=L.pow=function(r){var e,t,n,i,o,s,a=this,u=a.constructor,c=+(r=new u(r));if(!a.d||!r.d||!a.d[0]||!r.d[0])return new u(Ke(+a,c));if(a=new u(a),a.eq(1))return a;if(n=u.precision,o=u.rounding,r.eq(1))return G(a,n,o);if(e=ve(r.e/Q),e>=r.d.length-1&&(t=c<0?-c:c)<=Du)return i=ms(u,a,t,n),r.s<0?new u(1).div(i):G(i,n,o);if(s=a.s,s<0){if(e<r.d.length-1)return new u(NaN);if((r.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Ke(+a,c),e=t==0||!isFinite(t)?ve(c*(Math.log("0."+Me(a.d))/Math.LN10+a.e+1)):new u(t+"").e,e>u.maxE+1||e<u.minE-1?new u(e>0?s/0:0):(J=!1,u.rounding=a.s=1,t=Math.min(12,(e+"").length),i=hi(r.times(vt(a,n+t)),n),i.d&&(i=G(i,n+5,1),xn(i.d,n,o)&&(e=n+10,i=G(hi(r.times(vt(a,e+t)),e),e+5,1),+Me(i.d).slice(n+1,n+15)+1==1e14&&(i=G(i,n+1,0)))),i.s=s,J=!0,u.rounding=o,G(i,n,o))};L.toPrecision=function(r,e){var t,n=this,i=n.constructor;return r===void 0?t=kt(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(He(r,1,Dt),e===void 0?e=i.rounding:He(e,0,8),n=G(new i(n),r,e),t=kt(n,r<=n.e||n.e<=i.toExpNeg,r)),n.isNeg()&&!n.isZero()?"-"+t:t};L.toSignificantDigits=L.toSD=function(r,e){var t=this,n=t.constructor;return r===void 0?(r=n.precision,e=n.rounding):(He(r,1,Dt),e===void 0?e=n.rounding:He(e,0,8)),G(new n(t),r,e)};L.toString=function(){var r=this,e=r.constructor,t=kt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()&&!r.isZero()?"-"+t:t};L.truncated=L.trunc=function(){return G(new this.constructor(this),this.e+1,1)};L.valueOf=L.toJSON=function(){var r=this,e=r.constructor,t=kt(r,r.e<=e.toExpNeg||r.e>=e.toExpPos);return r.isNeg()?"-"+t:t};function Me(r){var e,t,n,i=r.length-1,o="",s=r[0];if(i>0){for(o+=s,e=1;e<i;e++)n=r[e]+"",t=Q-n.length,t&&(o+=Ft(t)),o+=n;s=r[e],n=s+"",t=Q-n.length,t&&(o+=Ft(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return o+s}function He(r,e,t){if(r!==~~r||r<e||r>t)throw Error(Wt+r)}function xn(r,e,t,n){var i,o,s,a;for(o=r[0];o>=10;o/=10)--e;return--e<0?(e+=Q,i=0):(i=Math.ceil((e+1)/Q),e%=Q),o=Ke(10,Q-e),a=r[i]%o|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==o||t>3&&a+1==o/2)&&(r[i+1]/o/100|0)==Ke(10,e-2)-1||(a==o/2||a==0)&&(r[i+1]/o/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==o||!n&&t>3&&a+1==o/2)&&(r[i+1]/o/1e3|0)==Ke(10,e-3)-1,s}function Pr(r,e,t){for(var n,i=[0],o,s=0,a=r.length;s<a;){for(o=i.length;o--;)i[o]*=e;for(i[0]+=Ai.indexOf(r.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function Uu(r,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/Br(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),r.precision+=t,e=ln(r,1,e.times(i),new r(1));for(var o=t;o--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return r.precision-=t,e}var ge=function(){function r(n,i,o){var s,a=0,u=n.length;for(n=n.slice();u--;)s=n[u]*i+a,n[u]=s%o|0,a=s/o|0;return a&&n.unshift(a),n}function e(n,i,o,s){var a,u;if(o!=s)u=o>s?1:-1;else for(a=u=0;a<o;a++)if(n[a]!=i[a]){u=n[a]>i[a]?1:-1;break}return u}function t(n,i,o,s){for(var a=0;o--;)n[o]-=a,a=n[o]<i[o]?1:0,n[o]=a*s+n[o]-i[o];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,o,s,a,u){var c,l,m,p,d,y,f,b,g,P,A,h,T,I,B,x,K,M,F,j,W=n.constructor,H=n.s==i.s?1:-1,ee=n.d,oe=i.d;if(!ee||!ee[0]||!oe||!oe[0])return new W(!n.s||!i.s||(ee?oe&&ee[0]==oe[0]:!oe)?NaN:ee&&ee[0]==0||!oe?H*0:H/0);for(u?(d=1,l=n.e-i.e):(u=ft,d=Q,l=ve(n.e/d)-ve(i.e/d)),F=oe.length,K=ee.length,g=new W(H),P=g.d=[],m=0;oe[m]==(ee[m]||0);m++);if(oe[m]>(ee[m]||0)&&l--,o==null?(I=o=W.precision,s=W.rounding):a?I=o+(n.e-i.e)+1:I=o,I<0)P.push(1),y=!0;else{if(I=I/d+2|0,m=0,F==1){for(p=0,oe=oe[0],I++;(m<K||p)&&I--;m++)B=p*u+(ee[m]||0),P[m]=B/oe|0,p=B%oe|0;y=p||m<K}else{for(p=u/(oe[0]+1)|0,p>1&&(oe=r(oe,p,u),ee=r(ee,p,u),F=oe.length,K=ee.length),x=F,A=ee.slice(0,F),h=A.length;h<F;)A[h++]=0;j=oe.slice(),j.unshift(0),M=oe[0],oe[1]>=u/2&&++M;do p=0,c=e(oe,A,F,h),c<0?(T=A[0],F!=h&&(T=T*u+(A[1]||0)),p=T/M|0,p>1?(p>=u&&(p=u-1),f=r(oe,p,u),b=f.length,h=A.length,c=e(f,A,b,h),c==1&&(p--,t(f,F<b?j:oe,b,u))):(p==0&&(c=p=1),f=oe.slice()),b=f.length,b<h&&f.unshift(0),t(A,f,h,u),c==-1&&(h=A.length,c=e(oe,A,F,h),c<1&&(p++,t(A,F<h?j:oe,h,u))),h=A.length):c===0&&(p++,A=[0]),P[m++]=p,c&&A[0]?A[h++]=ee[x]||0:(A=[ee[x]],h=1);while((x++<K||A[0]!==void 0)&&I--);y=A[0]!==void 0}P[0]||P.shift()}if(d==1)g.e=l,os=y;else{for(m=1,p=P[0];p>=10;p/=10)m++;g.e=m+l*d-1,G(g,a?o+g.e+1:o,s,y)}return g}}();function G(r,e,t,n){var i,o,s,a,u,c,l,m,p,d=r.constructor;e:if(e!=null){if(m=r.d,!m)return r;for(i=1,a=m[0];a>=10;a/=10)i++;if(o=e-i,o<0)o+=Q,s=e,l=m[p=0],u=l/Ke(10,i-s-1)%10|0;else if(p=Math.ceil((o+1)/Q),a=m.length,p>=a)if(n){for(;a++<=p;)m.push(0);l=u=0,i=1,o%=Q,s=o-Q+1}else break e;else{for(l=a=m[p],i=1;a>=10;a/=10)i++;o%=Q,s=o-Q+i,u=s<0?0:l/Ke(10,i-s-1)%10|0}if(n=n||e<0||m[p+1]!==void 0||(s<0?l:l%Ke(10,i-s-1)),c=t<4?(u||n)&&(t==0||t==(r.s<0?3:2)):u>5||u==5&&(t==4||n||t==6&&(o>0?s>0?l/Ke(10,i-s):0:m[p-1])%10&1||t==(r.s<0?8:7)),e<1||!m[0])return m.length=0,c?(e-=r.e+1,m[0]=Ke(10,(Q-e%Q)%Q),r.e=-e||0):m[0]=r.e=0,r;if(o==0?(m.length=p,a=1,p--):(m.length=p+1,a=Ke(10,Q-o),m[p]=s>0?(l/Ke(10,i-s)%Ke(10,s)|0)*a:0),c)for(;;)if(p==0){for(o=1,s=m[0];s>=10;s/=10)o++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;o!=a&&(r.e++,m[0]==ft&&(m[0]=1));break}else{if(m[p]+=a,m[p]!=ft)break;m[p--]=0,a=1}for(o=m.length;m[--o]===0;)m.pop()}return J&&(r.e>d.maxE?(r.d=null,r.e=NaN):r.e<d.minE&&(r.e=0,r.d=[0])),r}function kt(r,e,t){if(!r.isFinite())return ps(r);var n,i=r.e,o=Me(r.d),s=o.length;return e?(t&&(n=t-s)>0?o=o.charAt(0)+"."+o.slice(1)+Ft(n):s>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r.e<0?"e":"e+")+r.e):i<0?(o="0."+Ft(-i-1)+o,t&&(n=t-s)>0&&(o+=Ft(n))):i>=s?(o+=Ft(i+1-s),t&&(n=t-i-1)>0&&(o=o+"."+Ft(n))):((n=i+1)<s&&(o=o.slice(0,n)+"."+o.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(o+="."),o+=Ft(n))),o}function xr(r,e){var t=r[0];for(e*=Q;t>=10;t/=10)e++;return e}function Tr(r,e,t){if(e>qu)throw J=!0,t&&(r.precision=t),Error(ss);return G(new r(kr),e,1,!0)}function pt(r,e,t){if(e>ki)throw Error(ss);return G(new r(hr),e,t,!0)}function ls(r){var e=r.length-1,t=e*Q+1;if(e=r[e],e){for(;e%10==0;e/=10)t--;for(e=r[0];e>=10;e/=10)t++}return t}function Ft(r){for(var e="";r--;)e+="0";return e}function ms(r,e,t,n){var i,o=new r(1),s=Math.ceil(n/Q+4);for(J=!1;;){if(t%2&&(o=o.times(e),rs(o.d,s)&&(i=!0)),t=ve(t/2),t===0){t=o.d.length-1,i&&o.d[t]===0&&++o.d[t];break}e=e.times(e),rs(e.d,s)}return J=!0,o}function ns(r){return r.d[r.d.length-1]&1}function ds(r,e,t){for(var n,i=new r(e[0]),o=0;++o<e.length;)if(n=new r(e[o]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function hi(r,e){var t,n,i,o,s,a,u,c=0,l=0,m=0,p=r.constructor,d=p.rounding,y=p.precision;if(!r.d||!r.d[0]||r.e>17)return new p(r.d?r.d[0]?r.s<0?0:1/0:1:r.s?r.s<0?0:r:0/0);for(e==null?(J=!1,u=y):u=e,a=new p(.03125);r.e>-2;)r=r.times(a),m+=5;for(n=Math.log(Ke(2,m))/Math.LN10*2+5|0,u+=n,t=o=s=new p(1),p.precision=u;;){if(o=G(o.times(r),u,1),t=t.times(++l),a=s.plus(ge(o,t,u,1)),Me(a.d).slice(0,u)===Me(s.d).slice(0,u)){for(i=m;i--;)s=G(s.times(s),u,1);if(e==null)if(c<3&&xn(s.d,u-n,d,c))p.precision=u+=10,t=o=a=new p(1),l=0,c++;else return G(s,p.precision=y,d,J=!0);else return p.precision=y,s}s=a}}function vt(r,e){var t,n,i,o,s,a,u,c,l,m,p,d=1,y=10,f=r,b=f.d,g=f.constructor,P=g.rounding,A=g.precision;if(f.s<0||!b||!b[0]||!f.e&&b[0]==1&&b.length==1)return new g(b&&!b[0]?-1/0:f.s!=1?NaN:b?0:f);if(e==null?(J=!1,l=A):l=e,g.precision=l+=y,t=Me(b),n=t.charAt(0),Math.abs(o=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(r),t=Me(f.d),n=t.charAt(0),d++;o=f.e,n>1?(f=new g("0."+t),o++):f=new g(n+"."+t.slice(1))}else return c=Tr(g,l+2,A).times(o+""),f=vt(new g(n+"."+t.slice(1)),l-y).plus(c),g.precision=A,e==null?G(f,A,P,J=!0):f;for(m=f,u=s=f=ge(f.minus(1),f.plus(1),l,1),p=G(f.times(f),l,1),i=3;;){if(s=G(s.times(p),l,1),c=u.plus(ge(s,new g(i),l,1)),Me(c.d).slice(0,l)===Me(u.d).slice(0,l))if(u=u.times(2),o!==0&&(u=u.plus(Tr(g,l+2,A).times(o+""))),u=ge(u,new g(d),l,1),e==null)if(xn(u.d,l-y,P,a))g.precision=l+=y,c=s=f=ge(m.minus(1),m.plus(1),l,1),p=G(f.times(f),l,1),i=a=1;else return G(u,g.precision=A,P,J=!0);else return g.precision=A,u;u=c,i+=2}}function ps(r){return String(r.s*r.s/0)}function Ti(r,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,r.e=t=t-n-1,r.d=[],n=(t+1)%Q,t<0&&(n+=Q),n<i){for(n&&r.d.push(+e.slice(0,n)),i-=Q;n<i;)r.d.push(+e.slice(n,n+=Q));e=e.slice(n),n=Q-e.length}else n-=i;for(;n--;)e+="0";r.d.push(+e),J&&(r.e>r.constructor.maxE?(r.d=null,r.e=NaN):r.e<r.constructor.minE&&(r.e=0,r.d=[0]))}else r.e=0,r.d=[0];return r}function Gu(r,e){var t,n,i,o,s,a,u,c,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),cs.test(e))return Ti(r,e)}else if(e==="Infinity"||e==="NaN")return+e||(r.s=NaN),r.e=NaN,r.d=null,r;if(vu.test(e))t=16,e=e.toLowerCase();else if(Fu.test(e))t=2;else if(Wu.test(e))t=8;else throw Error(Wt+e);for(o=e.search(/p/i),o>0?(u=+e.slice(o+1),e=e.substring(2,o)):e=e.slice(2),o=e.indexOf("."),s=o>=0,n=r.constructor,s&&(e=e.replace(".",""),a=e.length,o=a-o,i=ms(n,new n(t),o,o*2)),c=Pr(e,t,ft),l=c.length-1,o=l;c[o]===0;--o)c.pop();return o<0?new n(r.s*0):(r.e=xr(c,l),r.d=c,J=!1,s&&(r=ge(r,i,a*4)),u&&(r=r.times(Math.abs(u)<54?Ke(2,u):Bn.pow(2,u))),J=!0,r)}function Xu(r,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:ln(r,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/Br(5,t)),e=ln(r,2,e,e);for(var i,o=new r(5),s=new r(16),a=new r(20);t--;)i=e.times(e),e=e.times(o.plus(i.times(s.times(i).minus(a))));return e}function ln(r,e,t,n,i){var o,s,a,u,c=1,l=r.precision,m=Math.ceil(l/Q);for(J=!1,u=t.times(t),a=new r(n);;){if(s=ge(a.times(u),new r(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=ge(s.times(u),new r(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(o=m;s.d[o]===a.d[o]&&o--;);if(o==-1)break}o=a,a=n,n=s,s=o,c++}return J=!0,s.d.length=m+1,s}function Br(r,e){for(var t=r;--e;)t*=r;return t}function fs(r,e){var t,n=e.s<0,i=pt(r,r.precision,1),o=i.times(.5);if(e=e.abs(),e.lte(o))return Rt=n?4:1,e;if(t=e.divToInt(i),t.isZero())Rt=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(o))return Rt=ns(t)?n?2:3:n?4:1,e;Rt=ns(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Ii(r,e,t,n){var i,o,s,a,u,c,l,m,p,d=r.constructor,y=t!==void 0;if(y?(He(t,1,Dt),n===void 0?n=d.rounding:He(n,0,8)):(t=d.precision,n=d.rounding),!r.isFinite())l=ps(r);else{for(l=kt(r),s=l.indexOf("."),y?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),p=new d(1),p.e=l.length-s,p.d=Pr(kt(p),10,i),p.e=p.d.length),m=Pr(l,10,i),o=u=m.length;m[--u]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?o--:(r=new d(r),r.d=m,r.e=o,r=ge(r,p,t,n,0,i),m=r.d,o=r.e,c=os),s=m[t],a=i/2,c=c||m[t+1]!==void 0,c=n<4?(s!==void 0||c)&&(n===0||n===(r.s<0?3:2)):s>a||s===a&&(n===4||c||n===6&&m[t-1]&1||n===(r.s<0?8:7)),m.length=t,c)for(;++m[--t]>i-1;)m[t]=0,t||(++o,m.unshift(1));for(u=m.length;!m[u-1];--u);for(s=0,l="";s<u;s++)l+=Ai.charAt(m[s]);if(y){if(u>1)if(e==16||e==8){for(s=e==16?4:3,--u;u%s;u++)l+="0";for(m=Pr(l,i,e),u=m.length;!m[u-1];--u);for(s=1,l="1.";s<u;s++)l+=Ai.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(o<0?"p":"p+")+o}else if(o<0){for(;++o;)l="0"+l;l="0."+l}else if(++o>u)for(o-=u;o--;)l+="0";else o<u&&(l=l.slice(0,o)+"."+l.slice(o))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return r.s<0?"-"+l:l}function rs(r,e){if(r.length>e)return r.length=e,!0}function zu(r){return new this(r).abs()}function Yu(r){return new this(r).acos()}function Qu(r){return new this(r).acosh()}function Hu(r,e){return new this(r).plus(e)}function ju(r){return new this(r).asin()}function Zu(r){return new this(r).asinh()}function $u(r){return new this(r).atan()}function Ju(r){return new this(r).atanh()}function ec(r,e){r=new this(r),e=new this(e);var t,n=this.precision,i=this.rounding,o=n+4;return!r.s||!e.s?t=new this(NaN):!r.d&&!e.d?(t=pt(this,o,1).times(e.s>0?.25:.75),t.s=r.s):!e.d||r.isZero()?(t=e.s<0?pt(this,n,i):new this(0),t.s=r.s):!r.d||e.isZero()?(t=pt(this,o,1).times(.5),t.s=r.s):e.s<0?(this.precision=o,this.rounding=1,t=this.atan(ge(r,e,o,1)),e=pt(this,o,1),this.precision=n,this.rounding=i,t=r.s<0?t.minus(e):t.plus(e)):t=this.atan(ge(r,e,o,1)),t}function tc(r){return new this(r).cbrt()}function nc(r){return G(r=new this(r),r.e+1,2)}function rc(r,e,t){return new this(r).clamp(e,t)}function ic(r){if(!r||typeof r!="object")throw Error(Ir+"Object expected");var e,t,n,i=r.defaults===!0,o=["precision",1,Dt,"rounding",0,8,"toExpNeg",-cn,0,"toExpPos",0,cn,"maxE",0,cn,"minE",-cn,0,"modulo",0,9];for(e=0;e<o.length;e+=3)if(t=o[e],i&&(this[t]=Pi[t]),(n=r[t])!==void 0)if(ve(n)===n&&n>=o[e+1]&&n<=o[e+2])this[t]=n;else throw Error(Wt+t+": "+n);if(t="crypto",i&&(this[t]=Pi[t]),(n=r[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(as);else this[t]=!1;else throw Error(Wt+t+": "+n);return this}function oc(r){return new this(r).cos()}function sc(r){return new this(r).cosh()}function ys(r){var e,t,n;function i(o){var s,a,u,c=this;if(!(c instanceof i))return new i(o);if(c.constructor=i,is(o)){c.s=o.s,J?!o.d||o.e>i.maxE?(c.e=NaN,c.d=null):o.e<i.minE?(c.e=0,c.d=[0]):(c.e=o.e,c.d=o.d.slice()):(c.e=o.e,c.d=o.d?o.d.slice():o.d);return}if(u=typeof o,u==="number"){if(o===0){c.s=1/o<0?-1:1,c.e=0,c.d=[0];return}if(o<0?(o=-o,c.s=-1):c.s=1,o===~~o&&o<1e7){for(s=0,a=o;a>=10;a/=10)s++;J?s>i.maxE?(c.e=NaN,c.d=null):s<i.minE?(c.e=0,c.d=[0]):(c.e=s,c.d=[o]):(c.e=s,c.d=[o]);return}else if(o*0!==0){o||(c.s=NaN),c.e=NaN,c.d=null;return}return Ti(c,o.toString())}else if(u!=="string")throw Error(Wt+o);return(a=o.charCodeAt(0))===45?(o=o.slice(1),c.s=-1):(a===43&&(o=o.slice(1)),c.s=1),cs.test(o)?Ti(c,o):Gu(c,o)}if(i.prototype=L,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=ic,i.clone=ys,i.isDecimal=is,i.abs=zu,i.acos=Yu,i.acosh=Qu,i.add=Hu,i.asin=ju,i.asinh=Zu,i.atan=$u,i.atanh=Ju,i.atan2=ec,i.cbrt=tc,i.ceil=nc,i.clamp=rc,i.cos=oc,i.cosh=sc,i.div=ac,i.exp=uc,i.floor=cc,i.hypot=lc,i.ln=mc,i.log=dc,i.log10=fc,i.log2=pc,i.max=yc,i.min=bc,i.mod=gc,i.mul=wc,i.pow=Ac,i.random=Pc,i.round=kc,i.sign=hc,i.sin=Tc,i.sinh=Ic,i.sqrt=xc,i.sub=Bc,i.sum=Sc,i.tan=Kc,i.tanh=Cc,i.trunc=Rc,r===void 0&&(r={}),r&&r.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)r.hasOwnProperty(t=n[e++])||(r[t]=this[t]);return i.config(r),i}function ac(r,e){return new this(r).div(e)}function uc(r){return new this(r).exp()}function cc(r){return G(r=new this(r),r.e+1,3)}function lc(){var r,e,t=new this(0);for(J=!1,r=0;r<arguments.length;)if(e=new this(arguments[r++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return J=!0,new this(1/0);t=e}return J=!0,t.sqrt()}function is(r){return r instanceof Bn||r&&r.toStringTag===us||!1}function mc(r){return new this(r).ln()}function dc(r,e){return new this(r).log(e)}function pc(r){return new this(r).log(2)}function fc(r){return new this(r).log(10)}function yc(){return ds(this,arguments,"lt")}function bc(){return ds(this,arguments,"gt")}function gc(r,e){return new this(r).mod(e)}function wc(r,e){return new this(r).mul(e)}function Ac(r,e){return new this(r).pow(e)}function Pc(r){var e,t,n,i,o=0,s=new this(1),a=[];if(r===void 0?r=this.precision:He(r,1,Dt),n=Math.ceil(r/Q),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));o<n;)i=e[o],i>=429e7?e[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);o<n;)i=e[o]+(e[o+1]<<8)+(e[o+2]<<16)+((e[o+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,o):(a.push(i%1e7),o+=4);o=n/4}else throw Error(as);else for(;o<n;)a[o++]=Math.random()*1e7|0;for(n=a[--o],r%=Q,n&&r&&(i=Ke(10,Q-r),a[o]=(n/i|0)*i);a[o]===0;o--)a.pop();if(o<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=Q)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<Q&&(t-=Q-n)}return s.e=t,s.d=a,s}function kc(r){return G(r=new this(r),r.e+1,this.rounding)}function hc(r){return r=new this(r),r.d?r.d[0]?r.s:0*r.s:r.s||NaN}function Tc(r){return new this(r).sin()}function Ic(r){return new this(r).sinh()}function xc(r){return new this(r).sqrt()}function Bc(r,e){return new this(r).sub(e)}function Sc(){var r=0,e=arguments,t=new this(e[r]);for(J=!1;t.s&&++r<e.length;)t=t.plus(e[r]);return J=!0,G(t,this.precision,this.rounding)}function Kc(r){return new this(r).tan()}function Cc(r){return new this(r).tanh()}function Rc(r){return G(r=new this(r),r.e+1,1)}L[Symbol.for("nodejs.util.inspect.custom")]=L.toString;L[Symbol.toStringTag]="Decimal";var Bn=L.constructor=ys(Pi);kr=new Bn(kr);hr=new Bn(hr);var E=Bn;import{PublicKey as Ci}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Lc}from"@solana/spl-token";import{PublicKey as ke,SystemProgram as bs,SYSVAR_RENT_PUBKEY as Oc}from"@solana/web3.js";function k({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var xi=[k({pubkey:Lc,isWritable:!1}),k({pubkey:bs.programId,isWritable:!1}),k({pubkey:Oc,isWritable:!1})];function Bi({publicKey:r,transformSol:e}){let t=Si(r.toString());if(t instanceof ke)return e&&t.equals(Ce)?te:t;if(e&&t.toString()===Ce.toBase58())return te;if(typeof t=="string"){if(t===ke.default.toBase58())return ke.default;try{return new ke(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Si(r){try{return new ke(r)}catch{return r}}var mn=new ke("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),gs=new ke("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),je=new ke("SysvarRent111111111111111111111111111111111"),Ki=new ke("SysvarC1ock11111111111111111111111111111111"),dn=new ke("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Sr=new ke("Sysvar1nstructions1111111111111111111111111"),ws=bs.programId,Md=new ke("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),_d=new ke("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Vd=new ke("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ed=new ke("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Fd=new ke("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),vd=new ke("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Wd=new ke("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Dd=new ke("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),qd=new ke("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ud=new ke("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Gd=new ke("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),te=new ke("So11111111111111111111111111111111111111112"),Ce=ke.default;function pn(r){return Bi({publicKey:r,transformSol:!0})}import{PublicKey as Nc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as As}from"@solana/spl-token";var ht={chainId:101,address:Nc.default.toBase58(),programId:As.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Re={chainId:101,address:"So11111111111111111111111111111111111111112",programId:As.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};var Ri=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:o=!1,isToken2022:s=!1}){if(e===Ce.toBase58()||e instanceof Ci&&Ce.equals(e)){this.decimals=Re.decimals,this.symbol=Re.symbol,this.name=Re.name,this.mint=new Ci(Re.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=o?Ci.default:Bi({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},he=Ri;he.WSOL=new Ri(D(N({},Re),{mint:Re.address}));import Cr from"big.js";import Vc from"bn.js";import Ec from"decimal.js-light";import Mc from"toformat";var _c=Mc,Sn=_c;var Kr=ae("module/fraction"),Li=Sn(Cr),Kn=Sn(Ec),Fc={[0]:Kn.ROUND_DOWN,[1]:Kn.ROUND_HALF_UP,[2]:Kn.ROUND_UP},vc={[0]:Cr.roundDown,[1]:Cr.roundHalfUp,[2]:Cr.roundUp},le=class{constructor(e,t=new Vc(1)){this.numerator=X(e),this.denominator=X(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new le(this.denominator,this.numerator)}add(e){let t=e instanceof le?e:new le(X(e));return this.denominator.eq(t.denominator)?new le(this.numerator.add(t.numerator),this.denominator):new le(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof le?e:new le(X(e));return this.denominator.eq(t.denominator)?new le(this.numerator.sub(t.numerator),this.denominator):new le(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof le?e:new le(X(e));return new le(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof le?e:new le(X(e));return new le(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Kr.logWithError(`${e} is not an integer.`),e<=0&&Kr.logWithError(`${e} is not positive.`),Kn.set({precision:e+1,rounding:Fc[n]});let i=new Kn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Kr.logWithError(`${e} is not an integer.`),e<0&&Kr.logWithError(`${e} is negative.`),Li.DP=e,Li.RM=vc[n]||1,new Li(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Dc=ae("Raydium_price"),st=class extends le{constructor(t){let{baseToken:n,quoteToken:i,numerator:o,denominator:s}=t;super(o,s);this.baseToken=n,this.quoteToken=i,this.scalar=new le(Oi(n.decimals),Oi(i.decimals))}get raw(){return new le(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new st({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Dc.logWithError("mul token not equals");let n=super.mul(t);return new st({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};var Ni=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Rr=Ni;Rr.SOL=new Ni(ht);import qc from"bn.js";var Ps=new le(new qc(100)),tt=class extends le{toSignificant(e=5,t,n){return this.mul(Ps).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Ps).toFixed(e,t,n)}};var ze=new Ze(0),hs=new Ze(1),Wp=new Ze(2),Dp=new Ze(3),qp=new Ze(5),Mi=new Ze(10),Up=new Ze(100),Gp=new Ze(1e3),Xp=new Ze(1e4),ks=9007199254740991;function X(r){let e=ae("Raydium_parseBigNumberish");if(r instanceof Ze)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Ze(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=ks||r<=-ks)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Ze(String(r))):typeof r=="bigint"?new Ze(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Ze(0))}function Oi(r){return Mi.pow(X(r))}function Lr(r,e){let t=r.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}var Gc=ae("Raydium_amount"),Is=Sn(Uc);function Xc(r,e){let t="0",n="0";if(r.includes(".")){let i=r.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):Gc.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var xe=class extends le{constructor(t,n,i=!0,o){let s=new Or(0),a=Mi.pow(new Or(t.decimals));if(i)s=X(n);else{let u=new Or(0),c=new Or(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=Xc(n.toString(),t.decimals);u=X(l),c=X(m)}u=u.mul(a),s=u.add(c)}super(s,a);this.logger=ae(o||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new xe(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new xe(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Is.DP=this.token.decimals,new Is(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};function Ts(r){return typeof r=="object"&&r!==null&&![he,xe,zc,le,Yc,st,tt].some(e=>typeof e=="object"&&r instanceof e)}function pe(r){return typeof r=="string"?Si(r):Array.isArray(r)?r.map(e=>pe(e)):Ts(r)?Object.fromEntries(Object.entries(r).map(([e,t])=>[e,pe(t)])):r}import{PublicKey as On,sendAndConfirmTransaction as Fi,Transaction as Nn,TransactionMessage as Mn,VersionedTransaction as _n}from"@solana/web3.js";import Jc from"axios";var V={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut"};import{PublicKey as Bs,ComputeBudgetProgram as xs,Transaction as Nr,TransactionMessage as Qc,Keypair as Ss,VersionedTransaction as Ks}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Hc}from"@solana/spl-token";var Lt=ae("Raydium_txUtil"),Cs=1644;function Mr(r){let e=[],t=[];return r.microLamports&&(e.push(xs.setComputeUnitPrice({microLamports:r.microLamports})),t.push(V.SetComputeUnitPrice)),r.units&&(e.push(xs.setComputeUnitLimit({units:r.units})),t.push(V.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function fn(r){var e,t;try{return((t=await((e=r.getLatestBlockhash)==null?void 0:e.call(r)))==null?void 0:t.blockhash)||(await r.getRecentBlockhash()).blockhash}catch{return(await r.getRecentBlockhash()).blockhash}}function _r(r,e){r.length<1&&Lt.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Lt.logWithError(`no signers provided:, ${e.toString()}`);let t=new Nr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Cs}catch{return!1}}async function Rs(r,e,t,n=!0){let i=new Bs("RaydiumSimuLateTransaction11111111111111111"),o=[],s=new Nr;s.feePayer=i;for(let c of e)_r([...s.instructions,c],[i])||(o.push(s),s=new Nr,s.feePayer=i),s.add(c);s.instructions.length>0&&o.push(s);let a=[];try{if(a=await jc(r,o,n),a.find(c=>c.err!==null))throw Error("rpc simulateTransaction error")}catch(c){c instanceof Error&&Lt.logWithError("failed to simulate for instructions","RPC_ERROR",{message:c.message})}let u=[];for(let c of a)if(Lt.debug("simulate result:",c),c.logs){let l=c.logs.filter(m=>m&&m.includes(t));Lt.debug("filteredLog:",u),l.length||Lt.logWithError("simulate log not match keyword","keyword",t),u.push(...l)}return u}function Ls(r,e){let t=r.match(/{["\w:,]+}/g);return!t||t.length!==1?Lt.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Ot(r,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(r);return!n||n.length!==2?Lt.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function ie(r,e){let[t,n]=Bs.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}async function jc(r,e,t){let n=[];if(t){let i=await r.getLatestBlockhash(),o=[];for(let c of e){c.recentBlockhash=i.blockhash,c.lastValidBlockHeight=i.lastValidBlockHeight;let m=c._compile().serialize(),d=c._serialize(m).toString("base64");o.push(d)}let s=o.map(c=>{let l=r._buildArgs([c],void 0,"base64");return{methodName:"simulateTransaction",args:l}}),a=[],u=20;for(let c=0;c<Math.ceil(s.length/u);c++)a.push(s.slice(c*u,(c+1)*u));n=await(await Promise.all(a.map(async c=>(await r._rpcBatchRequest(c)).map(l=>l.result.value)))).flat()}else try{n=await Promise.all(e.map(async i=>await(await r.simulateTransaction(i)).value))}catch(i){i instanceof Error&&Lt.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:i.message})}return n}function Cn({instructions:r,payer:e,signers:t}){return _r(r,[e,...t])}function Rn({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Ss.generate().publicKey.toString()}){let o=new Qc({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Ks(o).serialize()).toString("base64").length<Cs}catch{return!1}}var Zc=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r);function jt(r){let e=[];return r.forEach(t=>{t instanceof Nr&&(t.recentBlockhash||(t.recentBlockhash=Hc.toBase58()),t.feePayer||(t.feePayer=Ss.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Ks&&(n=Zc(n));let i=n.toString("base64");e.push(i)}),console.log("simulate tx string:",e),e}import{PublicKey as Os,AddressLookupTableAccount as Vr}from"@solana/web3.js";import{PublicKey as $c}from"@solana/web3.js";import{getTransferFeeConfig as Nf,unpackMint as Mf}from"@solana/spl-token";var _i=ae("Raydium_accountInfo_util");async function Tt(r,e,t){let{batchRequest:n,commitment:i="confirmed"}=N({batchRequest:!1},t),o=Vi(e,100),s=new Array(o.length).fill([]);if(n){let a=o.map(l=>{let m=r._buildArgs([l.map(p=>p.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=Vi(a,10);s=(await(await Promise.all(u.map(async l=>await r._rpcBatchRequest(l)))).flat()).map(l=>(l.error&&_i.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.error.message}`),l.result.value.map(m=>{if(m){let{data:p,executable:d,lamports:y,owner:f,rentEpoch:b}=m;return p.length!==2&&p[1]!=="base64"&&_i.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:d,lamports:y,owner:new $c(f),rentEpoch:b}}return null})))}else try{s=await Promise.all(o.map(a=>r.getMultipleAccountsInfo(a,i)))}catch(a){a instanceof Error&&_i.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${a.message}`)}return s.flat()}async function Ln(r,e,t){let n=await Tt(r,e.map(i=>i.pubkey),t);return e.map((i,o)=>D(N({},i),{accountInfo:n[o]}))}async function Ei({connection:r,address:e}){let t=await Tt(r,[...new Set(e.map(i=>i.toString()))].map(i=>new Os(i))),n={};for(let i=0;i<e.length;i++){let o=t[i],s=e[i];if(!o)continue;let a=new Vr({key:s,state:Vr.deserialize(o.data)});n[s.toString()]=a,Er[s.toString()]=a}return n}var Er={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new Vr({key:new Os("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:Vr.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};var Fr=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await Jc.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=Mr(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:o=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...o),this.lookupTableAddress.push(...s.filter(a=>a!==On.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(N({},t||{})):this.build(t)}build(e){let t=new Nn;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async n=>{var a;let{recentBlockHash:i,skipPreflight:o=!0}=n||{},s=i!=null?i:await fn(this.connection);if(t.recentBlockhash=s,this.signers.length&&t.sign(...this.signers),jt([t]),(a=this.owner)!=null&&a.isKeyPair)return{txId:await Fi(this.connection,t,this.signers.find(u=>u.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:o}),signedTx:t};if(this.signAllTransactions){let u=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(u[0].serialize(),{skipPreflight:o}),signedTx:u[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),o=t.filter(c=>c.transaction.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return{builder:this,transactions:s,signers:a,instructionTypes:u,execute:async c=>{var f;let{sequentially:l,onTxUpdate:m,recentBlockHash:p,skipPreflight:d=!0}=c||{},y=p!=null?p:await fn(this.connection);if((f=this.owner)!=null&&f.isKeyPair)return{txIds:await await Promise.all(s.map(async(b,g)=>(b.recentBlockhash=y,await Fi(this.connection,b,a[g].find(P=>P.publicKey.equals(this.owner.publicKey))?a[g]:[...a[g],this.owner.signer],{skipPreflight:d})))),signedTxs:s};if(this.signAllTransactions){let b=s.map((P,A)=>(P.recentBlockhash=y,a[A].length&&P.sign(...a[A]),P));jt(b);let g=await this.signAllTransactions(b);if(l){let P=0,A=[],h=async()=>{if(!g[P])return;let T=await this.connection.sendRawTransaction(g[P].serialize(),{skipPreflight:d});A.push({txId:T,status:"sent",signedTx:g[P]}),m==null||m([...A]),P++,this.connection.onSignature(T,I=>{let B=A.findIndex(x=>x.txId===T);B>-1&&(A[B].status=I.err?"error":"success"),m==null||m([...A]),I.err||h()},"processed"),this.connection.getSignatureStatus(T)};return await h(),{txIds:A.map(T=>T.txId),signedTxs:g}}else{let P=[];for(let A=0;A<g.length;A+=1){let h=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:d});P.push(h)}return{txIds:P,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){let p=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i}=p,o=Pe(p,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=N(N({},this.cluster==="devnet"?{}:Er),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let d of a)s[d]===void 0&&u.push(new On(d));let c=await Ei({connection:this.connection,address:u});for(let[d,y]of Object.entries(c))s[d]=y;let l=new Mn({payerKey:this.feePayer,recentBlockhash:i?On.default.toBase58():await fn(this.connection),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s)),m=new _n(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async d=>{var b;let{recentBlockHash:y,skipPreflight:f=!0}=d||{};if(y&&(m.message.recentBlockhash=y),jt([m]),(b=this.owner)!=null&&b.isKeyPair){this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))||m.sign([this.owner.signer]);let g=await this.connection.sendTransaction(m,{skipPreflight:f}),{lastValidBlockHeight:P,blockhash:A}=await this.connection.getLatestBlockhash();return await this.connection.confirmTransaction({blockhash:A,lastValidBlockHeight:P,signature:g},"confirmed"),{txId:g,signedTx:m}}if(this.signAllTransactions){let g=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(g[0],{skipPreflight:f}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async buildV0MultiTx(e){let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),o=t.filter(c=>c.builder.instructions.length>0),s=[i,...o.map(c=>c.transaction)],a=[this.signers,...o.map(c=>c.signers)],u=[...this.instructionTypes,...o.map(c=>c.instructionTypes).flat()];return s.forEach(async(c,l)=>{c.sign(a[l])}),{builder:this,transactions:s,signers:a,instructionTypes:u,buildProps:n,execute:async c=>{var y;let{sequentially:l,onTxUpdate:m,recentBlockHash:p,skipPreflight:d=!0}=c||{};if(p&&s.forEach(f=>f.message.recentBlockhash=p),jt(s),(y=this.owner)!=null&&y.isKeyPair){let{lastValidBlockHeight:f,blockhash:b}=await this.connection.getLatestBlockhash();return s.forEach((g,P)=>{a[P].find(A=>A.publicKey.equals(this.owner.publicKey))||g.sign([this.owner.signer])}),{txIds:await Promise.all(s.map(async g=>{let P=await this.connection.sendTransaction(g,{skipPreflight:d});return await this.connection.confirmTransaction({blockhash:b,lastValidBlockHeight:f,signature:P},"confirmed"),P})),signedTxs:s}}if(this.signAllTransactions){let f=await this.signAllTransactions(s);if(l){let b=0,g=[],P=async()=>{if(!f[b])return;let A=await this.connection.sendTransaction(f[b],{skipPreflight:d});g.push({txId:A,status:"sent",signedTx:f[b]}),m==null||m([...g]),b++,this.connection.onSignature(A,h=>{let T=g.findIndex(I=>I.txId===A);T>-1&&(g[T].status=h.err?"error":"success"),m==null||m([...g]),h.err||P()},"processed"),this.connection.getSignatureStatus(A)};return P(),{txIds:[],signedTxs:f}}else{let b=[];for(let g=0;g<f.length;g+=1){let P=await this.connection.sendTransaction(f[g],{skipPreflight:d});b.push(P)}return{txIds:b,signedTxs:f}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){let c=e||{},{computeBudgetConfig:t}=c,n=Pe(c,["computeBudgetConfig"]),i=t?Mr(t):{instructions:[],instructionTypes:[]},o=this.signers.reduce((l,m)=>D(N({},l),{[m.publicKey.toBase58()]:m}),{}),s=[],a=[],u=[];if(this.allInstructions.forEach(l=>{let m=[...u,l],p=t?[...i.instructions,...m]:m,y=[...new Set(m.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(f=>new On(f));if(u.length<12&&Cn({instructions:p,payer:this.feePayer,signers:y})||Cn({instructions:m,payer:this.feePayer,signers:y}))u.push(l);else{if(u.length===0)throw Error("item ins too big");Cn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:y})?s.push(new Nn().add(...i.instructions,...u)):s.push(new Nn().add(...u)),a.push(Array.from(new Set(u.map(f=>f.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat())).map(f=>o[f]).filter(f=>f!==void 0)),u=[l]}}),u.length>0){let m=[...new Set(u.map(p=>p.keys.filter(d=>d.isSigner).map(d=>d.pubkey.toString())).flat()).values()].map(p=>o[p]).filter(p=>p!==void 0);Cn({instructions:t?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:m.map(p=>p.publicKey)})?s.push(new Nn().add(...i.instructions,...u)):s.push(new Nn().add(...u)),a.push(m)}return s.forEach(l=>l.feePayer=this.feePayer),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async l=>{var b;let{sequentially:m,onTxUpdate:p,recentBlockHash:d,skipPreflight:y=!0}=l||{},f=d!=null?d:await fn(this.connection);if(s.forEach(async(g,P)=>{g.recentBlockhash=f,a[P].length&&g.sign(...a[P])}),jt(s),(b=this.owner)!=null&&b.isKeyPair)return{txIds:await Promise.all(s.map(async(g,P)=>await Fi(this.connection,g,a[P].find(A=>A.publicKey.equals(this.owner.publicKey))?a[P]:[...a[P],this.owner.signer],{skipPreflight:y}))),signedTxs:s};if(this.signAllTransactions){let g=await this.signAllTransactions(s);if(m){let P=0,A=[],h=async()=>{if(!g[P])return;let T=await this.connection.sendRawTransaction(g[P].serialize(),{skipPreflight:y});A.push({txId:T,status:"sent",signedTx:g[P]}),p==null||p([...A]),P++,this.connection.onSignature(T,I=>{let B=A.findIndex(x=>x.txId===T);B>-1&&(A[B].status=I.err?"error":"success"),p==null||p([...A]),I.err||h()},"processed"),this.connection.getSignatureStatus(T)};return await h(),{txIds:A.map(T=>T.txId),signedTxs:g}}else{let P=[];for(let A=0;A<g.length;A+=1){let h=await this.connection.sendRawTransaction(g[A].serialize(),{skipPreflight:y});P.push(h)}return{txIds:P,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:i=[]}=b,o=Pe(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=N(N({},this.cluster==="devnet"?{}:Er),n),a=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let g of a)s[g]===void 0&&u.push(new On(g));let c=await Ei({connection:this.connection,address:u});for(let[g,P]of Object.entries(c))s[g]=P;let l=t?Mr(t):{instructions:[],instructionTypes:[]},m=await fn(this.connection),p=this.signers.reduce((g,P)=>D(N({},g),{[P.publicKey.toBase58()]:P}),{}),d=[],y=[],f=[];if(this.allInstructions.forEach(g=>{let P=[...f,g],A=t?[...l.instructions,...P]:P;if(f.length<12&&Rn({instructions:A,payer:this.feePayer,lookupTableAddressAccount:s})||Rn({instructions:P,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(g);else{if(f.length===0)throw Error("item ins too big");let h={};for(let T of[...new Set(a)])s[T]!==void 0&&(h[T]=s[T]);if(t&&Rn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let T=new Mn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new _n(T))}else{let T=new Mn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new _n(T))}y.push(Array.from(new Set(f.map(T=>T.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(T=>p[T]).filter(T=>T!==void 0)),f=[g]}}),f.length>0){let P=[...new Set(f.map(A=>A.keys.filter(h=>h.isSigner).map(h=>h.pubkey.toString())).flat()).values()].map(A=>p[A]).filter(A=>A!==void 0);if(t&&Rn({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let A=new Mn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));d.push(new _n(A))}else{let A=new Mn({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));d.push(new _n(A))}y.push(P)}return{builder:this,transactions:d,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async g=>{var I;let{sequentially:P,onTxUpdate:A,recentBlockHash:h,skipPreflight:T=!0}=g||{};if(d.map(async(B,x)=>{y[x].length&&B.sign(y[x]),h&&(B.message.recentBlockhash=h)}),jt(d),(I=this.owner)!=null&&I.isKeyPair){let{lastValidBlockHeight:B,blockhash:x}=await this.connection.getLatestBlockhash();return d.forEach((K,M)=>{y[M].find(F=>F.publicKey.equals(this.owner.publicKey))||K.sign([this.owner.signer])}),{txIds:await Promise.all(d.map(async K=>{let M=await this.connection.sendTransaction(K,{skipPreflight:T});return await this.connection.confirmTransaction({blockhash:x,lastValidBlockHeight:B,signature:M},"confirmed"),M})),signedTxs:d}}if(this.signAllTransactions){let B=await this.signAllTransactions(d);if(P){let x=0,K=[],M=async()=>{if(!B[x])return;let F=await this.connection.sendTransaction(B[x],{skipPreflight:T});K.push({txId:F,status:"sent",signedTx:B[x]}),A==null||A([...K]),x++,this.connection.onSignature(F,j=>{let W=K.findIndex(H=>H.txId===F);W>-1&&(K[W].status=j.err?"error":"success"),A==null||A([...K]),j.err||M()},"processed"),this.connection.getSignatureStatus(F)};return M(),{txIds:[],signedTxs:B}}else{let x=[];for(let K=0;K<B.length;K+=1){let M=await this.connection.sendTransaction(B[K],{skipPreflight:T});x.push(M)}return{txIds:x,signedTxs:B}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}};var yt=class{constructor(e){this._owner=e}get publicKey(){return yt.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return yt.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return yt.isKeyPair(this._owner)}get isPublicKey(){return yt.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!yt.isKeyPair(e)}};function Vi(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var Ns=r=>typeof r=="number";function Ms(r,e,t){let n=Ns(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()<=n}function _s(r,e,t){let n=Ns(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(r).getTime()>n}import{PublicKey as Se}from"@solana/web3.js";var Vs=new Se("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Es=new Se("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Vn=new Se("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),ny=new Se("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),ry=new Se("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),vi=new Se("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Fs=new Se("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),iy=new Se("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),oy=new Se("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),sy=new Se("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),el=new Se("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),tl=new Se("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),nl=new Se("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),rl=new Se("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),ay=new Se("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),uy=new Se("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),cy=new Se("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ly=new Se("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),my=new Se("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),dy=new Se("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),En={IDO_PROGRAM_ID_V1:el,IDO_PROGRAM_ID_V2:tl,IDO_PROGRAM_ID_V3:nl,IDO_PROGRAM_ID_V4:rl};import{PublicKey as il}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ol}from"@solana/spl-token";function fe(r,e,t){return ie([r.toBuffer(),(t!=null?t:ol).toBuffer(),e.toBuffer()],new il("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import bt from"bn.js";var Fn=1e4;function we(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let i=D(N({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),o=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new bt(o.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(o.transferFeeBasisPoints===Fn){let u=new bt(o.maximumFee.toString());return{amount:r.add(u),fee:u,expirationTime:a}}else{let u=vn(r.mul(new bt(Fn)),new bt(Fn-o.transferFeeBasisPoints)),c=new bt(o.maximumFee.toString()),l=u.sub(r).gt(c)?r.add(c):u,m=vn(l.mul(new bt(o.transferFeeBasisPoints)),new bt(Fn)),p=m.gt(s)?s:m;return{amount:l,fee:p,expirationTime:a}}else{let u=vn(r.mul(new bt(o.transferFeeBasisPoints)),new bt(Fn)),c=u.gt(s)?s:u;return{amount:r,fee:c,expirationTime:a}}}function Zt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function vn(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new bt(0))?t.add(new bt(1)):t}var _e={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://token.jup.ag/{type}",POOL_LIST:"/pools/info/list",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/mint",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",IDO_KEYS:"/ido/key/ids",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee"},Fy=N({},_e);var vs="ray_tab_hash",Wi="ray_req_hash",sl=()=>{if(typeof window===void 0)return"";let r=sessionStorage.getItem(vs);return r||(r=`ray-${Date.now()}`,sessionStorage.setItem(vs,r)),r},Wr=async n=>{var i=n,{logCount:r=1e3,removeLastLog:e}=i,t=Pe(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let o=JSON.parse(localStorage.getItem(Wi)||"[]").slice(0,r-1);e&&o.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),o.unshift(D(N({},t),{time:Date.now(),session:sl()}));try{localStorage.setItem(Wi,JSON.stringify(o))}catch{if(e){let s=!1,a=JSON.stringify(t.data).substring(0,100);for(o[0].data=a+(a.length>100?"...":"");!s;){o.pop();let u=JSON.stringify(t.data).substring(0,100);o[0].data=u+(u.length>100?"...":"");try{localStorage.setItem(Wi,JSON.stringify(o)),s=!0}catch{s=!1}}return new Promise(u=>u())}return Wr(D(N({},t),{logCount:r,removeLastLog:!0}))}};var Dr=ae("Raydium_Api"),Di=new Map;var qr=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:o}){this.cluster=e,this.urlConfigs=o||{},this.logCount=i||1e3,this.api=ul.create({baseURL:this.urlConfigs.BASE_HOST||_e.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:u,url:c}=s;return Dr.debug(`${a==null?void 0:a.toUpperCase()} ${u}${c}`),s},s=>(Dr.error("Request failed"),Promise.reject(s))),this.api.interceptors.response.use(s=>{let{config:a,data:u,status:c}=s,{method:l,baseURL:m,url:p}=a;return n&&Wr({status:c,url:`${m}${p}`,params:a.params,data:u,logCount:this.logCount}),Dr.debug(`${l==null?void 0:l.toUpperCase()} ${m}${p} ${c}`),u},s=>{let{config:a,response:u={}}=s,{status:c}=u,{method:l,baseURL:m,url:p}=a;return n&&Wr({status:c,url:`${m}${p}`,params:a.params,data:s.message,logCount:this.logCount}),Dr.error(`${l.toUpperCase()} ${m}${p} ${c||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||_e.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||_e.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await this.api.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(i=>i.numSlots);return n.reduce((i,o)=>i+o,0)/n.length/60}async getChainTimeOffset(){return(await this.api.get(this.urlConfigs.CHAIN_TIME||_e.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||_e.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||_e.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||_e.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||_e.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:i="desc",page:o=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||_e.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${i}&page=${o}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||_e.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(s=>Di.has(s)?(n.push(Di.get(s)),!1):!0),o=[];return i.length&&(o=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||_e.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),o.forEach(a=>{Di.set(a.id,a)})),n.concat(o)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:i="all",sort:o="default",order:s="desc",page:a=1}=e,[u,c]=[t&&pn(t).toBase58(),n&&n!=="undefined"?pn(n).toBase58():""],[l,m]=c&&u>c?[c,u]:[u,c];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||_e.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${i}&poolSortField=${o}&sortType=${s}&pageSize=100&page=${a}`)).data}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||_e.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||_e.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||_e.CHECK_AVAILABILITY)).data}};var Ur="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",Ws="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as $i,TOKEN_PROGRAM_ID as Xt,AccountLayout as bn,TOKEN_2022_PROGRAM_ID as El}from"@solana/spl-token";import{PublicKey as Zr,SystemProgram as Fl}from"@solana/web3.js";var qi=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Te=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ae(t)}createTxBuilder(e){return this.scope.checkOwner(),new Fr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(qi(e))}logInfo(...e){this.logger.info(qi(e))}logAndCreateError(...e){let t=qi(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as Ll,createCloseAccountInstruction as Ol,createTransferInstruction as Nl,TOKEN_PROGRAM_ID as yn}from"@solana/spl-token";import{PublicKey as Ml,SystemProgram as _l}from"@solana/web3.js";import Vl from"bn.js";import{PublicKey as ea,Keypair as Sl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Kl}from"@solana/spl-token";import Cl from"bn.js";import{PublicKey as Pl}from"@solana/web3.js";import Xs,{isBN as zs}from"bn.js";import{bits as cl,BitStructure as wb,blob as ll,Blob as Ab,cstr as Pb,f32 as kb,f32be as hb,f64 as Tb,f64be as Ib,greedy as xb,Layout as ml,ns64 as Bb,ns64be as Sb,nu64 as dl,nu64be as Kb,offset as Cb,s16 as Rb,s16be as Lb,s24 as Ob,s24be as Nb,s32 as pl,s32be as Mb,s40 as _b,s40be as Vb,s48 as Eb,s48be as Fb,s8 as vb,seq as fl,struct as Wb,Structure as yl,u16 as bl,u16be as Db,u24 as qb,u24be as Ub,u32 as gl,u32be as Gb,u40 as Xb,u40be as zb,u48 as Yb,u48be as Qb,u8 as wl,UInt as Al,union as Hb,Union as jb,unionLayoutDiscriminator as Zb,utf8 as $b}from"@solana/buffer-layout";var Gr=ml,Ds=yl;var Ui=Al;var qs=wl,It=bl;var Gi=gl;var Us=dl;var Ve=pl;var Gs=fl;var de=ll;var Xi=cl;var $t=class extends Gr{constructor(t,n,i){super(t,i);this.blob=de(t),this.signed=n}decode(t,n=0){let i=new Xs(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new Xs(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},Xr=class extends Gr{constructor(t){super(8,t);this._lower=Xi(Gi(),!1),this._upper=Xi(Gi(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let i=this._lower.decode(t,n),o=this._upper.decode(t,n+this._lower.span);return N(N({},i),o)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function _(r){return new Ui(1,r)}function We(r){return new Ui(4,r)}function w(r){return new $t(8,!1,r)}function z(r){return new $t(16,!1,r)}function Ys(r){return new $t(1,!0,r)}function Yr(r){return new $t(8,!0,r)}function Qs(r){return new $t(16,!0,r)}var zr=class extends Gr{constructor(t,n,i,o){super(t.span,o);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function S(r){return new zr(de(32),e=>new Pl(e),e=>e.toBuffer(),r)}function Ee(r){return new zr(qs(),kl,hl,r)}function kl(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function hl(r){return r?1:0}var zi=class extends Ds{decode(e,t){return super.decode(e,t)}};function O(r,e,t){return new zi(r,e,t)}function q(r,e,t){let n,i=typeof e=="number"?e:zs(e)?e.toNumber():new Proxy(e,{get(o,s){if(!n){let a=Reflect.get(o,"count");n=zs(a)?a.toNumber():a,Reflect.set(o,"count",n)}return Reflect.get(o,s)},set(o,s,a){return s==="count"&&(n=a),Reflect.set(o,s,a)}});return Gs(r,i,t)}var qt=O([S("mint"),S("owner"),w("amount"),We("delegateOption"),S("delegate"),_("state"),We("isNativeOption"),w("isNative"),w("delegatedAmount"),We("closeAuthorityOption"),S("closeAuthority")]);function Tl(r){return r instanceof Uint8Array||r!=null&&typeof r=="object"&&r.constructor.name==="Uint8Array"}function Yi(r,...e){if(!Tl(r))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(r.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${r.length}`)}function Qi(r,e=!0){if(r.destroyed)throw new Error("Hash instance has been destroyed");if(e&&r.finished)throw new Error("Hash#digest() has already been called")}function Hs(r,e){Yi(r);let t=e.outputLen;if(r.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Hr=r=>new DataView(r.buffer,r.byteOffset,r.byteLength),gt=(r,e)=>r<<32-e|r>>>e;var pg=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Il(r){if(typeof r!="string")throw new Error(`utf8ToBytes expected string, got ${typeof r}`);return new Uint8Array(new TextEncoder().encode(r))}function Hi(r){return typeof r=="string"&&(r=Il(r)),Yi(r),r}var Qr=class{clone(){return this._cloneInto()}},fg={}.toString;function js(r){let e=n=>r().update(Hi(n)).digest(),t=r();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>r(),e}function xl(r,e,t,n){if(typeof r.setBigUint64=="function")return r.setBigUint64(e,t,n);let i=BigInt(32),o=BigInt(4294967295),s=Number(t>>i&o),a=Number(t&o),u=n?4:0,c=n?0:4;r.setUint32(e+u,s,n),r.setUint32(e+c,a,n)}var Zs=(r,e,t)=>r&e^~r&t,$s=(r,e,t)=>r&e^r&t^e&t,jr=class extends Qr{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Hr(this.buffer)}update(e){Qi(this);let{view:t,buffer:n,blockLen:i}=this;e=Hi(e);let o=e.length;for(let s=0;s<o;){let a=Math.min(i-this.pos,o-s);if(a===i){let u=Hr(e);for(;i<=o-s;s+=i)this.process(u,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Qi(this),Hs(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:o}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>i-s&&(this.process(n,0),s=0);for(let m=s;m<i;m++)t[m]=0;xl(n,i-8,BigInt(this.length*8),o),this.process(n,0);let a=Hr(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<c;m++)a.setUint32(4*m,l[m],o)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:o,destroyed:s,pos:a}=this;return e.length=i,e.pos=a,e.finished=o,e.destroyed=s,i%t&&e.buffer.set(n),e}};var Bl=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ut=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Gt=new Uint32Array(64),ji=class extends jr{constructor(){super(64,32,8,!1),this.A=Ut[0]|0,this.B=Ut[1]|0,this.C=Ut[2]|0,this.D=Ut[3]|0,this.E=Ut[4]|0,this.F=Ut[5]|0,this.G=Ut[6]|0,this.H=Ut[7]|0}get(){let{A:e,B:t,C:n,D:i,E:o,F:s,G:a,H:u}=this;return[e,t,n,i,o,s,a,u]}set(e,t,n,i,o,s,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=o|0,this.F=s|0,this.G=a|0,this.H=u|0}process(e,t){for(let m=0;m<16;m++,t+=4)Gt[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let p=Gt[m-15],d=Gt[m-2],y=gt(p,7)^gt(p,18)^p>>>3,f=gt(d,17)^gt(d,19)^d>>>10;Gt[m]=f+Gt[m-7]+y+Gt[m-16]|0}let{A:n,B:i,C:o,D:s,E:a,F:u,G:c,H:l}=this;for(let m=0;m<64;m++){let p=gt(a,6)^gt(a,11)^gt(a,25),d=l+p+Zs(a,u,c)+Bl[m]+Gt[m]|0,f=(gt(n,2)^gt(n,13)^gt(n,22))+$s(n,i,o)|0;l=c,c=u,u=a,a=s+d|0,s=o,o=i,i=n,n=d+f|0}n=n+this.A|0,i=i+this.B|0,o=o+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,i,o,s,a,u,c,l)}roundClean(){Gt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Js=js(()=>new ji);var Lg=ae("Raydium_Util");function ta({owner:r,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:o,account:s}of t.value){let a=qt.decode(s.data),{mint:u,amount:c}=a;n.push({publicKey:o,mint:u,amount:c,isAssociated:fe(r,u,s.owner).publicKey.equals(o),isNative:!1,programId:s.owner}),i.push({pubkey:o,accountInfo:a,programId:s.owner})}return e&&n.push({mint:ea.default,amount:new Cl(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function De({fromPublicKey:r,programId:e=Kl}){let t=Sl.generate().publicKey.toBase58().slice(0,32);return{publicKey:Rl(r,t,e),seed:t}}function Rl(r,e,t){let n=Buffer.concat([r.toBuffer(),Buffer.from(e),t.toBuffer()]),i=Js(n);return new ea(i)}function Zi(r){let{mint:e,tokenAccount:t,owner:n,programId:i=yn}=r;return Ll(t,e,n,i)}function Nt(r){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:o=yn}=r;return Ol(e,t,i,n,o)}async function xt(r){let{connection:e,amount:t,commitment:n,payer:i,owner:o,skipCloseAccount:s}=r,a=await e.getMinimumBalanceForRentExemption(qt.span,n),u=X(t).add(new Vl(a)),c=De({fromPublicKey:i,programId:yn});return{addresses:{newAccount:c.publicKey},signers:[],instructions:[_l.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:c.seed,newAccountPubkey:c.publicKey,lamports:u.toNumber(),space:qt.span,programId:yn}),Zi({mint:new Ml(Re.address),tokenAccount:c.publicKey,owner:o,programId:yn})],instructionTypes:[V.CreateAccount,V.InitAccount],endInstructionTypes:s?[]:[V.CloseAccount],endInstructions:s?[]:[Nt({tokenAccount:c.publicKey,payer:i,owner:o})]}}function Wn({source:r,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:o=yn}){return Nl(r,e,t,BigInt(String(n)),i,o)}var Dn=class extends Te{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:i}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=i||[],this._clientOwnedToken=!!(n||i)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}updateTokenAccount({tokenAccounts:t,tokenAccountRawInfos:n}){return t&&(this._tokenAccounts=t),n&&(this._tokenAccountRawInfos=n),this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=void 0,this._clientOwnedToken=!0,this}addAccountChangeListener(t){return this._accountListener.push(t),this}removeAccountChangeListener(t){return this._accountListener=this._accountListener.filter(n=>n!==t),this}getAssociatedTokenAccount(t,n){return fe(this.scope.ownerPubKey,t,n).publicKey}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length)return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let i=N(N({},{}),t),[o,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Xt},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:El},i.commitment)]),{tokenAccounts:u,tokenAccountRawInfos:c}=ta({owner:this.scope.ownerPubKey,solAccountResp:o,tokenAccountResp:{context:s.context,value:[...s.value,...a.value]}});return this._tokenAccounts=u,this._tokenAccountRawInfos=c,this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>this.fetchWalletTokenAccounts({forceUpdate:!0}),"confirmed"),{tokenAccounts:u,tokenAccountRawInfos:c}}async getCreatedTokenAccount({mint:t,programId:n=Xt,associatedOnly:i=!0}){await this.fetchWalletTokenAccounts();let o=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,u)=>a.amount.lt(u.amount)?1:-1),s=this.getAssociatedTokenAccount(t,n);for(let a of o){let{publicKey:u}=a;if(u&&(!i||i&&s.equals(u)))return u}}async getOrCreateTokenAccount(t){var y,f,b;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:i,associatedOnly:o,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:u=!1,checkCreateATAOwner:c=!1}=t,l=new Zr(t.tokenProgram||Xt),m=this.getAssociatedTokenAccount(n,new Zr(l)),p=(a?[]:this.tokenAccountRawInfos).filter(g=>g.accountInfo.mint.equals(n)&&(!o||g.pubkey.equals(m))).sort((g,P)=>g.accountInfo.amount.lt(P.accountInfo.amount)?1:-1);if(i===void 0||p.length>0)return p.length>0?{account:p[0].pubkey}:{};let d={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(o){let g=$i(s,m,s,n,l);if(c){let P=await this.scope.connection.getAccountInfo(m);if(P===null)(y=d.instructions)==null||y.push(g),d.instructionTypes.push(V.CreateATA);else if(!(P.owner.equals(l)&&bn.decode(P.data).mint.equals(n)&&bn.decode(P.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else d.instructions.push(g),d.instructionTypes.push(V.CreateATA);if(n.equals(te)&&i.amount){let P=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(f=i.amount)!=null?f:0,skipCloseAccount:u});d.instructions.push(...P.instructions||[]),d.endInstructions.push(...P.endInstructions||[]),d.instructionTypes.push(...P.instructionTypes||[]),d.endInstructionTypes.push(...P.endInstructionTypes||[]),i.amount&&(d.instructions.push(Wn({source:P.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:Xt})),d.instructionTypes.push(V.TransferAmount))}return u||(d.endInstructions.push(Nt({owner:s,payer:i.payer||s,tokenAccount:m,programId:l})),d.endInstructionTypes.push(V.CloseAccount)),{account:m,instructionParams:d}}else if(n.equals(te)){let g=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(b=i.amount)!=null?b:0,skipCloseAccount:u});return d.instructions.push(...g.instructions||[]),d.endInstructions.push(...g.endInstructions||[]),d.signers.push(...g.signers||[]),d.instructionTypes.push(...g.instructionTypes||[]),d.endInstructionTypes.push(...g.endInstructionTypes||[]),{account:g.addresses.newAccount,instructionParams:d}}else{let g=De({fromPublicKey:s,programId:l}),P=await this.scope.connection.getMinimumBalanceForRentExemption(bn.span),A=Fl.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:g.seed,newAccountPubkey:g.publicKey,lamports:P,space:bn.span,programId:l});return d.instructions.push(A,Zi({mint:n,tokenAccount:g.publicKey,owner:this.scope.ownerPubKey,programId:l})),d.instructionTypes.push(V.CreateAccount),d.instructionTypes.push(V.InitAccount),u||(d.endInstructions.push(Nt({owner:s,payer:i.payer||s,tokenAccount:g.publicKey,programId:l})),d.endInstructionTypes.push(V.CloseAccount)),{account:g.publicKey,instructionParams:d}}}async checkOrCreateAta({mint:t,programId:n=Xt,autoUnwrapWSOLToSOL:i}){var u;await this.fetchWalletTokenAccounts();let o=(u=this.scope.account.tokenAccounts.find(({mint:c})=>(c==null?void 0:c.toBase58())===t.toBase58()))==null?void 0:u.publicKey,s=this.scope.ownerPubKey,a={};if(!o){let c=this.getAssociatedTokenAccount(t,n),l=await $i(s,c,s,t,n);a.instructions=[l],a.instructionTypes=[V.CreateATA],o=c}return i&&te.toBase58()===t.toBase58()&&(a.endInstructions=[Nt({owner:s,payer:s,tokenAccount:o,programId:n})],a.endInstructionTypes=[V.CloseAccount]),{pubKey:o,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:i,mint:o,programId:s=Xt,tokenAccount:a,payer:u=this.scope.ownerPubKey,bypassAssociatedCheck:c,skipCloseAccount:l,checkCreateATAOwner:m}=t,p=this.getAssociatedTokenAccount(o,s);if(new Zr(te).equals(o)){let d=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:u,amount:i,skipCloseAccount:l});return N({tokenAccount:d.addresses.newAccount},d)}else if(!a||n==="out"&&!p.equals(a)&&!c){let d=[],y=$i(this.scope.ownerPubKey,p,this.scope.ownerPubKey,o,s);if(m){let f=await this.scope.connection.getAccountInfo(p);if(f===null)d.push(y);else if(!(f.owner.equals(Xt)&&bn.decode(f.data).mint.equals(o)&&bn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${o.toString()}, ata: ${p.toString()}`)}else d.push(y);return{tokenAccount:p,instructions:d,instructionTypes:[V.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:i=Xt,amount:o,useSOLBalance:s,handleTokenAccount:a}=t,u,c=this.createTxBuilder();if(n.equals(new Zr(te))&&s){let l=await this.handleTokenAccount({side:"in",amount:o||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=l,d=Pe(l,["tokenAccount"]);u=p,c.addInstruction(d)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:i}),!u&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=m,d=Pe(m,["tokenAccount"]);u=p,c.addInstruction(d)}return N({tokenAccount:u},c.AllTxData)}};import{createAssociatedTokenAccountInstruction as om}from"@solana/spl-token";import{PublicKey as Ae,SystemProgram as sm}from"@solana/web3.js";import{PublicKey as ua}from"@solana/web3.js";var Ji=O([_("instruction")]),eo=O([_("instruction")]),vl=O([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),z("accRewardPerShare"),S("rewardVault"),S("rewardMint"),S("rewardSender"),w("rewardType"),q(w(),15,"padding")]),Wl=O([w("state"),w("nonce"),S("lpVault"),S("rewardVault"),S(),S(),w(),w(),w("totalReward"),z("perShareReward"),w("lastSlot"),w("perSlotReward")]),Dl=O([w("state"),w("nonce"),S("lpVault"),S("rewardVaultA"),w("totalRewardA"),z("perShareRewardA"),w("perSlotRewardA"),_("option"),S("rewardVaultB"),de(7),w("totalRewardB"),z("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),S()]),ql=O([w(),w("state"),w("nonce"),w("validRewardTokenNum"),z("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),S("lpMint"),S("lpVault"),q(vl,5,"rewardInfos"),S("creator"),S(),q(w(),32,"padding")]),na=new Proxy(Wl,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(N({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),ra=new Proxy(Dl,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(N({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),qn=new Proxy(ql,{get(r,e,t){return e==="decode"?(...n)=>{let i=r.decode(...n);return D(N({},i),{version:6,rewardInfos:i.rewardInfos.map(o=>{var s;return D(N({},o),{rewardType:((s=Object.entries(zt).find(a=>String(a[1])===o.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),Ul=O([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),to=O([_("instruction"),w("nonce"),q(Ul,5,"rewardTimeInfo")]),no=O([_("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),ro=O([_("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),cw=O([w("state"),S("id"),S("owner"),w("deposited"),q(w(),1,"rewardDebts")]),Un=O([w("state"),S("id"),S("owner"),w("deposited"),q(z(),1,"rewardDebts"),w(""),w("voteLockedBalance"),q(w(),15)]),lw=O([w("state"),S("id"),S("owner"),w("deposited"),q(w(),2,"rewardDebts")]),ia=O([w("state"),S("id"),S("owner"),w("deposited"),q(z(),2,"rewardDebts"),q(w(),17)]),oa=O([w(),w("state"),S("id"),S("owner"),w("deposited"),q(z(),5,"rewardDebts"),q(w(),16)]),Ye=O([_("instruction"),w("amount")]),Gl=O([S("mint"),S("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),Ys("digitShift"),q(_(),7,"reserved1"),q(w(),7,"reserved2")]),sa=O([de(8),S("governanceProgramId"),S("realm"),S("realmGoverningTokenMint"),S("realmAuthority"),q(_(),32,"reserved1"),q(Gl,4,"votingMints"),Yr("timeOffset"),_("bump"),q(_(),7,"reserved2"),q(w(),11,"reserved3")]),Xl=O([Yr("startTime"),Yr("endTime"),_("kind"),q(_(),15,"reserved")]),zl=O([q(Xl,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),Ee("isUsed"),Ee("allowClawback"),_("votingMintConfigIdx"),q(_(),29,"reserved")]),aa=O([de(8),S("voterAuthority"),S("registrar"),q(zl,32,"deposits"),_("voterBump"),_("voterWweightRecordBump"),q(_(),94,"reserved")]);var ww=ae("Raydium_farm_config"),ca=new ua("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),la=new ua("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),ma={3:na,5:ra,6:qn},da={3:Un,5:ia,6:oa},io=r=>[3,5,6].indexOf(r)!==-1,oo=r=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=r,i=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,o={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${i}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${i}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${i}`}};return(s=o[e])==null?void 0:s.call(o)},zt={"Standard SPL":0,"Option tokens":1},wt={[Vs.toString()]:3,[Es.toString()]:5,[Vn.toString()]:6};import{PublicKey as re,SystemProgram as Jt,SYSVAR_RENT_PUBKEY as Hl,SYSVAR_CLOCK_PUBKEY as zn,TransactionInstruction as Oe}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as jl,TOKEN_PROGRAM_ID as nt,ASSOCIATED_TOKEN_PROGRAM_ID as Zl}from"@solana/spl-token";import Jr from"bn.js";function so(r,e,t){return ie([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],r)}function ao(r,e){return ie([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],r)}function uo(r,e){return ie([e.toBuffer()],r)}function co(r,e,t){return ie([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],r)}function lo(r,e,t){return ie([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],r)}function mo(r,e,t,n){return ie([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}import $e from"bn.js";var Gn=ae("Raydium.farm.util");function Xn({programId:r,poolId:e,mint:t,type:n}){let{publicKey:i}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],r);return i}function Je({programId:r,poolId:e,owner:t,version:n}){let{publicKey:i}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],r);return i}var pa=({programId:r,poolId:e})=>ie([e.toBuffer()],r);function fa(r){return{isSet:new $e(1),rewardPerSecond:X(r.perSecond),rewardOpenTime:X(r.openTime),rewardEndTime:X(r.endTime),rewardType:X(zt[r.rewardType])}}function po(r){return X(r.endTime).sub(X(r.openTime)).mul(X(r.perSecond))}function $r(r){let e=da[r];return e||Gn.logWithError("invalid version",r),e}function Yl(r){let e=ma[r];return e||Gn.logWithError("invalid version",r),e}function Ql(r,e,t,n){if(r.version===3||r.version===5){if(r.lastSlot.gte(new $e(t)))return r;let i=new $e(t).sub(r.lastSlot);r.lastSlot=new $e(t);for(let o of r.rewardInfos){if(e.amount.eq(new $e(0)))continue;let s=o.perSlotReward.mul(i);o.perShareReward=o.perShareReward.add(s.mul(new $e(10).pow(new $e(r.version===3?9:15))).div(e.amount)),o.totalReward=o.totalReward.add(s)}}else if(r.version===6)for(let i of r.rewardInfos){if(i.rewardState.eq(new $e(0)))continue;let o=$e.min(new $e(n),i.rewardEndTime);if(i.rewardOpenTime.gte(o))continue;let a=o.sub(i.rewardLastUpdateTime).mul(i.rewardPerSecond),u=i.totalReward.sub(i.totalRewardEmissioned);u.lt(a)?(a=u,i.rewardLastUpdateTime=i.rewardLastUpdateTime.add(u.div(i.rewardPerSecond))):i.rewardLastUpdateTime=o,!e.amount.eq(new $e(0))&&(i.accRewardPerShare=i.accRewardPerShare.add(a.mul(r.rewardMultiplier).div(e.amount)),i.totalRewardEmissioned=i.totalRewardEmissioned.add(a))}return r}async function _w({connection:r,farmPools:e,owner:t,config:n,chainTime:i}){let o=!1,s=!1,a=new $e(10),u=[];for(let p of e){let d=pe(p);d.version===6?s=!0:o=!0,u.push({pubkey:d.id,version:d.version,key:"state",poolId:d.id},{pubkey:d.lpVault,version:d.version,key:"lpVault",poolId:d.id}),t&&u.push({pubkey:Je({programId:d.programId,poolId:d.id,owner:t,version:p.version}),version:d.version,key:"ledger",poolId:d.id})}let c={},l=await Ln(r,u,n);for(let{pubkey:p,version:d,key:y,poolId:f,accountInfo:b}of l){let g=f.toBase58();if(c[g]=N({},c[g]),y==="state"){let P=Yl(d);(!b||!b.data||b.data.length!==P.span)&&Gn.logWithError(`invalid farm state account info, pools.id, ${p}`),c[g].state=P.decode(b.data)}else if(y==="lpVault")(!b||!b.data||b.data.length!==qt.span)&&Gn.logWithError(`invalid farm lp vault account info, pools.lpVault, ${p}`),c[g].lpVault=qt.decode(b.data);else if(y==="ledger"){let P=$r(d);b&&b.data&&(b.data.length!==P.span&&Gn.logWithError(`invalid farm ledger account info, ledger, ${p}`),c[g].ledger=P.decode(b.data))}}let m=s||o?await r.getSlot():0;for(let p of Object.keys(c))c[p]!==void 0&&(c[p].state=Ql(c[p].state,c[p].lpVault,m,i));for(let[p,{state:d,ledger:y}]of Object.entries(c))if(y){let f=d.version===6?d.rewardMultiplier:d.rewardInfos.length===1?a.pow(new $e(9)):a.pow(new $e(15)),b=d.rewardInfos.map((g,P)=>{let A=y.rewardDebts[P];return y.deposited.mul(d.version===6?g.accRewardPerShare:g.perShareReward).div(f).sub(A)});c[p].wrapped=D(N({},c[p].wrapped),{pendingRewards:b})}return c}function Vw(r,e=Date.now()){if(r.version===6){let t=r.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>Ms(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>_s(e,n.toNumber(),{unit:"s"})))return"closed pool"}else{let t=r.state.rewardInfos.map(({perSlotReward:n})=>n);if(t.length===2){if(String(t[0])==="0"&&String(t[1])!=="0")return"normal fusion pool";if(String(t[0])!=="0"&&String(t[1])!=="0")return"dual fusion pool";if(String(t[0])==="0"&&String(t[1])==="0")return"closed pool"}else if(t.length===1&&String(t[0])==="0")return"closed pool"}}async function fo(r,e,t,n){let i=await r.getAccountInfo(e);if(i===null)throw Error("registrar info check error");let s=sa.decode(i.data).votingMints.findIndex(l=>l.mint.equals(n));if(s===-1)throw Error("find voter mint error");let a=await r.getAccountInfo(t);if(a===null)return{index:s,isInit:!1};let c=aa.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return c===-1?{index:s,isInit:!1}:{index:c,isInit:!0}}var $l=ae("Raydium_farm_instruction"),Yn={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};function ya(r){let{version:e,id:t,ledger:n,programId:i,owner:o}=r,s={3:9,5:10}[e];s||$l.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Ji.span);Ji.encode({instruction:s},a);let u=[k({pubkey:t}),k({pubkey:n}),k({pubkey:o,isWritable:!1}),k({pubkey:Jt.programId,isWritable:!1}),k({pubkey:Hl,isWritable:!1})];return{instruction:new Oe({programId:i,keys:u,data:a}),instructionType:V.FarmV3CreateLedger}}function ba(r){var n;let e=Buffer.alloc(to.span);to.encode({instruction:0,nonce:new Jr(r.nonce),rewardTimeInfo:r.rewardInfoConfig},e);let t=[...xi,k({pubkey:r.farmId}),k({pubkey:r.farmAuthority,isWritable:!1}),k({pubkey:r.lpVault}),k({pubkey:r.lpMint,isWritable:!1}),k({pubkey:r.lockVault}),k({pubkey:r.lockMint,isWritable:!1}),k({pubkey:(n=r.lockUserAccount)!=null?n:Ce}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];for(let i of r.rewardInfo)t.push(k({pubkey:i.rewardMint,isWritable:!1}),k({pubkey:i.rewardVault}),k({pubkey:i.userRewardToken}));return{instruction:new Oe({programId:r.programId,keys:t,data:e}),instructionType:V.FarmV6Create}}function ga(r){let e=Buffer.alloc(eo.span);eo.encode({instruction:5},e);let t=[k({pubkey:nt,isWritable:!1}),k({pubkey:r.id}),k({pubkey:r.authority,isWritable:!1}),k({pubkey:r.lpVault,isWritable:!1}),k({pubkey:r.rewardVault}),k({pubkey:r.userRewardToken}),k({pubkey:r.owner,isWritable:!1,isSigner:!0})];return{instruction:new Oe({programId:r.programId,keys:t,data:e}),instructionType:V.FarmV6CreatorWithdraw}}function Jl(r,e,t,n,i,o,s,a,u,c,l,m,p){let d=O([_("depositEntryIndex"),w("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:Sr,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({depositEntryIndex:m,amount:p},f);let b=Buffer.from([...Yn.voterStakeRegistryDeposit,...f]);return new Oe({keys:y,programId:r,data:b})}function em(r,e,t,n){let i=O([]),o=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:Jt.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([...Yn.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new Oe({keys:o,programId:r,data:a})}function tm(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=O([_("depositEntryIndex"),w("amount")]),b=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:Sr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:d,amount:y},g);let P=Buffer.from([...Yn.voterStakeRegistryWithdraw,...g]);return new Oe({keys:b,programId:r,data:P})}function nm(r,e,t,n,i,o){let s=O([_("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:Jt.programId,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);return s.encode({ins:23},u),new Oe({keys:a,programId:r,data:u})}function rm(r,e,t,n,i,o,s,a){let u=O([_("voterBump"),_("voterWeightRecordBump")]),c=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:Jt.programId,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:Sr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({voterBump:s,voterWeightRecordBump:a},l);let m=Buffer.from([...Yn.voterStakeRegistryCreateVoter,...l]);return new Oe({keys:c,programId:r,data:m})}function im(r,e,t,n,i,o,s,a,u,c,l,m){let p=O([_("depositEntryIndex"),_("kind"),_("option"),w("startTs"),We("periods"),Ee("allowClawback")]),d=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Jt.programId,isSigner:!1,isWritable:!1},{pubkey:nt,isSigner:!1,isWritable:!1},{pubkey:Zl,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1}],y=Buffer.alloc(p.span);p.encode({depositEntryIndex:a,kind:u,option:c===void 0?0:1,startTs:c,periods:l,allowClawback:m},y);let f=Buffer.from([...Yn.voterStakeRegistryCreateDepositEntry,...y]);return new Oe({keys:d,programId:r,data:f})}async function Jw({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=so(n,i,o).publicKey,l=Je({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let p=Un.decode(m.data),d=p.deposited.sub(p.voteLockedBalance);if(console.log("amount",d.toString()),d.eq(new Jr(0)))throw Error("user do not has new stake amount");let y=ao(e,a).publicKey,f=uo(e,a).publicKey,{publicKey:b,nonce:g}=co(n,c,s),P=fe(b,y,u).publicKey,{publicKey:A,nonce:h}=lo(n,c,s),T=mo(t,i,o,s).publicKey,I=[],B=fe(s,y,u).publicKey;if(await r.getAccountInfo(B)===null&&I.push(jl(s,B,s,y)),await r.getAccountInfo(b)===null){let j=nm(t,i,s,o,s,T);I.push(j,rm(n,c,b,A,s,s,g,h))}let{index:M,isInit:F}=await fo(r,c,b,y);return F||I.push(im(n,c,b,P,s,s,y,M,0,void 0,0,!1)),I.push(Jl(n,c,b,P,B,s,l,a,y,f,e,M,d),em(n,c,b,A)),I}async function eA({connection:r,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:o,owner:s,poolId:a,tokenProgram:u}){let c=so(n,i,o).publicKey,l=Je({programId:e,poolId:a,owner:s,version:3}),m=await r.getAccountInfo(l);if(m===null)throw Error("user is not staker");let p=Un.decode(m.data);if(p.voteLockedBalance.eq(new Jr(0)))throw Error("user has vote locked balance = 0");let d=ao(e,a).publicKey,y=uo(e,a).publicKey,{publicKey:f}=co(n,c,s),b=fe(f,d,u).publicKey,{publicKey:g}=lo(n,c,s),P=mo(t,i,o,s).publicKey,A=[],{index:h,isInit:T}=await fo(r,c,f,d);if(!T)throw Error("deposit entry index check error");return A.push(tm(n,c,f,s,P,g,b,fe(s,d,u).publicKey,l,a,d,y,e,h,p.voteLockedBalance)),A}function yo({payer:r,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let o=Buffer.alloc(no.span);no.encode({instruction:3,rewardReopenTime:X(i.openTime),rewardEndTime:X(i.endTime),rewardPerSecond:X(i.perSecond)},o);let s=[k({pubkey:nt,isWritable:!1}),k({pubkey:n.id}),k({pubkey:n.lpVault,isWritable:!1}),k({pubkey:e}),k({pubkey:t}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new Oe({programId:n.programId,keys:s,data:o})}function bo({payer:r,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let o=Buffer.alloc(ro.span);ro.encode({instruction:4,isSet:new Jr(1),rewardPerSecond:X(i.perSecond),rewardOpenTime:X(i.openTime),rewardEndTime:X(i.endTime),rewardType:X(zt[i.rewardType])},o);let s=[...xi,k({pubkey:t.id}),k({pubkey:t.authority,isWritable:!1}),k({pubkey:i.mint,isWritable:!1}),k({pubkey:n}),k({pubkey:e}),k({pubkey:r,isWritable:!1,isSigner:!0})];return new Oe({programId:t.programId,keys:s,data:o})}function tA(r){let{farmInfo:e,farmKeys:t,version:n,lpAccount:i,rewardAccounts:o,owner:s,instruction:a,amount:u,deposit:c}=r,[l,m]=[new re(e.programId),new re(e.id)],p=Je({programId:l,poolId:m,owner:s,version:n}),d=Buffer.alloc(Ye.span);Ye.encode({instruction:a,amount:u},d);let y=n===6?[k({pubkey:nt,isWritable:!1}),...c?[k({pubkey:Jt.programId,isWritable:!1})]:[],k({pubkey:m}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:new re(t.lpVault)}),k({pubkey:p}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:i})]:[k({pubkey:m}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:p}),k({pubkey:s,isWritable:!1,isSigner:!0}),k({pubkey:i}),k({pubkey:new re(t.lpVault)}),k({pubkey:o[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:zn,isWritable:!1}),k({pubkey:nt,isWritable:!1})];if(n===5)for(let f=1;f<t.rewardInfos.length;f++)y.push(k({pubkey:o[f]})),y.push(k({pubkey:new re(t.rewardInfos[f].vault)}));if(n===6)for(let f=0;f<t.rewardInfos.length;f++)y.push(k({pubkey:new re(t.rewardInfos[f].vault)})),y.push(k({pubkey:o[f]}));return new Oe({programId:l,keys:y,data:d})}function Qn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new re(e.programId),new re(e.id)],c=Je({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ye.span);Ye.encode({instruction:2,amount:X(s)},l);let m=[k({pubkey:nt,isWritable:!1}),k({pubkey:u}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:new re(t.lpVault)}),k({pubkey:c}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let p=0;p<t.rewardInfos.length;p++)m.push(k({pubkey:new re(t.rewardInfos[p].vault)})),m.push(k({pubkey:i[p]}));return new Oe({programId:a,keys:m,data:l})}function Hn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:12,amount:X(s)},m);let p=[k({pubkey:c}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new re(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:zn,isWritable:!1}),k({pubkey:nt,isWritable:!1})];for(let d=1;d<t.rewardInfos.length;d++)p.push(k({pubkey:i[d]})),p.push(k({pubkey:new re(t.rewardInfos[d].vault)}));if(a)for(let d of a)p.push(k({pubkey:d}));return new Oe({programId:u,keys:p,data:m})}function jn(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:11,amount:X(s)},m);let p=[k({pubkey:c}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new re(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:zn,isWritable:!1}),k({pubkey:nt,isWritable:!1})];if(a)for(let d of a)p.push(k({pubkey:d}));return new Oe({programId:u,keys:p,data:m})}function wa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:3}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:10,amount:X(s)},m);let p=[k({pubkey:c}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new re(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:zn,isWritable:!1}),k({pubkey:nt,isWritable:!1})];if(a)for(let d of a)p.push(k({pubkey:d}));return new Oe({programId:u,keys:p,data:m})}function Aa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s,userAuxiliaryLedgers:a}=r,[u,c]=[new re(e.programId),new re(e.id)],l=Je({programId:u,poolId:c,owner:o,version:5}),m=Buffer.alloc(Ye.span);Ye.encode({instruction:11,amount:X(s)},m);let p=[k({pubkey:c}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:l}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n}),k({pubkey:new re(t.lpVault)}),k({pubkey:i[0]}),k({pubkey:new re(t.rewardInfos[0].vault)}),k({pubkey:zn,isWritable:!1}),k({pubkey:nt,isWritable:!1})];for(let d=1;d<t.rewardInfos.length;d++)p.push(k({pubkey:i[d]})),p.push(k({pubkey:new re(t.rewardInfos[d].vault)}));if(a)for(let d of a)p.push(k({pubkey:d}));return new Oe({programId:u,keys:p,data:m})}function Pa(r){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:o,amount:s}=r,[a,u]=[new re(e.programId),new re(e.id)],c=Je({programId:a,poolId:u,owner:o,version:6}),l=Buffer.alloc(Ye.span);Ye.encode({instruction:1,amount:X(s)},l);let m=[k({pubkey:nt,isWritable:!1}),k({pubkey:Jt.programId,isWritable:!1}),k({pubkey:u}),k({pubkey:new re(t.authority),isWritable:!1}),k({pubkey:new re(t.lpVault)}),k({pubkey:c}),k({pubkey:o,isWritable:!1,isSigner:!0}),k({pubkey:n})];for(let p=0;p<t.rewardInfos.length;p++)m.push(k({pubkey:new re(t.rewardInfos[p].vault)})),m.push(k({pubkey:i[p]}));return new Oe({programId:a,keys:m,data:l})}var Zn=class extends Te{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ce)){let n=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:po(D(N({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:n,programId:i=Vn,txVersion:o}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new Ae(e.lpMint.address),lockInfo:{lockMint:ca,lockVault:la},version:6,rewardInfos:t,programId:i},u=this.createTxBuilder(),c=n!=null?n:this.scope.ownerPubKey,l=De({fromPublicKey:c,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(qn.span);u.addInstruction({instructions:[sm.createAccountWithSeed({fromPubkey:c,basePubkey:c,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:qn.span,programId:a.programId})]});let{publicKey:p,nonce:d}=pa({programId:new Ae(a.programId),poolId:l.publicKey}),y=Xn({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let h of a.rewardInfos){h.openTime>=h.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",h.openTime.toString()),isNaN(zt[h.rewardType])&&this.logAndCreateError("rewardType error",h.rewardType),Number(h.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",h.perSecond),f.push(fa(h));let{rewardPubKey:T,newInstruction:I}=await this._getUserRewardInfo({rewardInfo:h,payer:c});I&&u.addInstruction(I),T||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let B=h.mint.equals(Ce)?new Ae(Re.address):h.mint;b.push({rewardMint:B,rewardVault:Xn({programId:a.programId,poolId:l.publicKey,mint:B,type:"rewardVault"}),userRewardToken:T})}let g=await this.scope.account.getCreatedTokenAccount({mint:a.lockInfo.lockMint});g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:P,instructionType:A}=ba({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:p,lpVault:y,lpMint:a.lpMint,lockVault:a.lockInfo.lockVault,lockMint:a.lockInfo.lockMint,lockUserAccount:g,programId:a.programId,rewardInfo:b,rewardInfoConfig:f,nonce:d});return u.addInstruction({instructions:[P],instructionTypes:[A]}).versionBuild({txVersion:o,extInfo:{farmId:l.publicKey,farmAuthority:p,lpVault:y,lockUserAccount:g,nonce:d}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:i}){var b;let o=wt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=pe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=t||this.scope.ownerPubKey,c=n.mint.equals(Ce)?new Ae(Re.address):n.mint,l=a.rewardInfos.findIndex(g=>new Ae(g.mint.address).equals(c)),m=s.rewardInfos[l];m||this.logAndCreateError("configuration does not exist","rewardMint",c);let p=(b=m.vault)!=null?b:Ce,d=this.createTxBuilder(),{rewardPubKey:y,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:n,payer:u});return f&&d.addInstruction(f),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),d.addInstruction({instructions:[yo({payer:this.scope.ownerPubKey,rewardVault:p,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[V.FarmV6Restart]}).versionBuild({txVersion:i})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:i}){var l;let o=wt[e.programId];o!==6&&this.logAndCreateError("invalid farm version ",o);let s=pe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.forEach(m=>{m.openTime>=m.endTime&&this.logAndCreateError("start time error","newRewardInfo",m)});let u=t||this.scope.ownerPubKey,c=this.createTxBuilder();for(let m of n){let p=m.mint.equals(Ce)?new Ae(Re.address):m.mint,d=a.rewardInfos.findIndex(A=>new Ae(A.mint.address).equals(p)),y=s.rewardInfos[d];y||this.logAndCreateError("configuration does not exist","rewardMint",p);let f=(l=y.vault)!=null?l:Ce,{rewardPubKey:b,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:m,payer:u});g&&c.addInstruction(g),b||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let P=yo({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});c.addInstruction({instructions:[P],instructionTypes:[V.FarmV6Restart]})}return c.versionBuild({txVersion:i})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:i,payer:o}=e,s=wt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=pe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder(),l=i.mint.equals(Ce)?new Ae(Re.address):i.mint,m=Xn({programId:new Ae(n.programId),poolId:new Ae(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:p,newInstruction:d}=await this._getUserRewardInfo({rewardInfo:i,payer:u});return d&&c.addInstruction(d),p||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),i.mint=l,c.addInstruction({instructions:[bo({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:m,rewardInfo:i})],instructionTypes:[V.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:i,payer:o}=e,s=wt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=pe((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=o!=null?o:this.scope.ownerPubKey,c=this.createTxBuilder();for(let l of i){let m=l.mint.equals(Ce)?new Ae(Re.address):l.mint,p=Xn({programId:new Ae(n.programId),poolId:new Ae(n.id),mint:m,type:"rewardVault"}),{rewardPubKey:d,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:l,payer:u});y&&c.addInstruction(y),d||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let f=bo({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:p,rewardInfo:D(N({},l),{mint:m})});c.addInstruction({instructions:[f],instructionTypes:[V.FarmV6CreatorAddReward]})}return c.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:i,feePayer:o,useSOLBalance:s,associatedOnly:a=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:c,computeBudgetConfig:l}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:m,programId:p}=n,d=wt[p];io(d)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new Ae(n.programId),new Ae(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=Je({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:d}),P=this.createTxBuilder();P.addCustomComputeBudget(l);let A={};for(let W of this.scope.account.tokenAccounts)if(a){let H=fe(this.scope.ownerPubKey,W.mint,W.programId).publicKey;W.publicKey&&H.equals(W.publicKey)&&(A[W.mint.toString()]=W.publicKey)}else A[W.mint.toString()]=W.publicKey;let h=b.lpMint,T=A[h.address];T||this.logAndCreateError("you don't have any lp","lp zero",A);let I=[];for(let W of m){let H=s&&W.mint.address===te.toString(),ee=A[W.mint.address];if(!ee){let{account:oe,instructionParams:dt}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:W.mint.programId,mint:new Ae(W.mint.address),notUseTokenAccount:H,createInfo:{payer:o||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!H,associatedOnly:H?!1:a,checkCreateATAOwner:u});ee=oe,dt&&P.addInstruction(dt)}A[W.mint.address]=ee,I.push(ee)}let B,x=await this.scope.connection.getAccountInfo(g);if(x&&(B=$r(d).decode(x.data)),n.programId!==Vn.toString()&&!B){let{instruction:W,instructionType:H}=ya({id:f,programId:y,version:d,ledger:g,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[W],instructionTypes:[H]})}let K=oo({version:d,rewardInfos:m,rewardTokenAccountsPublicKeys:I});K&&this.logAndCreateError(K);let M={amount:X(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:T,rewardAccounts:I,userAuxiliaryLedgers:c==null?void 0:c.map(W=>new Ae(W))},F=d===6?Pa(M):d===5?Aa(M):wa(M),j={3:V.FarmV3Deposit,5:V.FarmV5Deposit,6:V.FarmV6Deposit};return P.addInstruction({instructions:[F],instructionTypes:[j[d]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:i,deposited:o,useSOLBalance:s,feePayer:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:l,computeBudgetConfig:m}=e,{rewardInfos:p}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let d=wt[n.programId];io(d)||this.logAndCreateError("invalid farm program:",n.programId);let y=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],f=this.createTxBuilder();f.addCustomComputeBudget(m);let b={};for(let K of this.scope.account.tokenAccounts)if(u){let M=fe(this.scope.ownerPubKey,K.mint).publicKey;K.publicKey&&M.equals(K.publicKey)&&(b[K.mint.toString()]=K.publicKey)}else b[K.mint.toString()]=K.publicKey;if(o)o.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let K=Je({programId:new Ae(n.programId),poolId:new Ae(n.id),owner:this.scope.ownerPubKey,version:d}),M=await this.scope.connection.getAccountInfo(K);M||this.logAndCreateError("no lp data",{farmId:n.id,version:d,ledgerData:M}),$r(d).decode(M.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,P=s&&g===te.toString(),A=b[g.toString()];if(!A){let{account:K,instructionParams:M}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new Ae(g),notUseTokenAccount:P,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:P?!1:u,checkCreateATAOwner:c});A=K,M&&f.addInstruction(M)}b[g.toString()]=A;let h=[];for(let K of p){let M=s&&K.mint.address===te.toString(),F=b[K.mint.address];if(!F){let{account:j,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:K.mint.programId,mint:new Ae(K.mint.address),notUseTokenAccount:M,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!M,associatedOnly:M?!1:u,checkCreateATAOwner:c});F=j,W&&f.addInstruction(W)}b[K.mint.address]=F,h.push(F)}let T=oo({version:d,rewardInfos:p,rewardTokenAccountsPublicKeys:h});T&&this.logAndCreateError(T);let I={amount:X(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:A,rewardAccounts:h,userAuxiliaryLedgers:l==null?void 0:l.map(K=>new Ae(K))},B=d===6?Qn(I):d===5?Hn(I):jn(I),x={3:V.FarmV3Withdraw,5:V.FarmV5Withdraw,6:V.FarmV6Withdraw};return f.addInstruction({instructions:[B],instructionTypes:[x[d]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var d;this.scope.checkOwner();let i=pe((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),o=wt[e.programId];o!==6&&this.logAndCreateError("invalid farm version",o);let s=e.rewardInfos.findIndex(y=>y.mint.address===Ce.toString()?new Ae(Re.address):t),a=i.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let u=(d=a==null?void 0:a.vault)!=null?d:Ce,c=this.createTxBuilder(),l;if(t.equals(Ce)){let y=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:po(D(N({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new E(a.perSecond).mul(10**a.mint.decimals).toString()}))});l=y.addresses.newAccount,c.addInstruction(y)}else{let y=await this.scope.account.getCreatedTokenAccount({mint:t});y===null?(l=await this.scope.account.getAssociatedTokenAccount(t),c.addInstruction({instructions:[om(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[V.CreateATA]})):l=y}let{instruction:m,instructionType:p}=ga({programId:i.programId,id:i.id,authority:i.authority,lpVault:i.lpVault,rewardVault:u,userRewardToken:l,owner:this.scope.ownerPubKey});return c.addInstruction({instructions:[m],instructionTypes:[p]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:i,associatedOnly:o=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:u,computeBudgetConfig:c}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(o){let f=fe(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(m[y.mint.toString()]=y.publicKey)}else m[y.mint.toString()]=y.publicKey;let d=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>D(N({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:P}=y,A=wt[f],h=b.address,T=n&&h===te.toString(),I=m[h];if(!I){let{account:j,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new Ae(h),notUseTokenAccount:T,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:T?!1:o,checkCreateATAOwner:s});I=j,W&&l.addInstruction(W)}m[h.toString()]=I;let B=[];for(let j of g){let W=n&&j.mint.address===te.toString(),H=m[j.mint.address];if(!H){let{account:ee,instructionParams:oe}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:j.mint.programId,mint:new Ae(j.mint.address),notUseTokenAccount:W,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!W,associatedOnly:W?!1:o,checkCreateATAOwner:s});H=ee,oe&&l.addInstruction(oe)}m[j.mint.address]=H,B.push(H)}let x=d[P],K={amount:ze,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:I,rewardAccounts:B,userAuxiliaryLedgers:a==null?void 0:a.map(j=>new Ae(j))},M=A===6?Qn(K):A===5?Hn(K):jn(K),F={3:V.FarmV3Withdraw,5:V.FarmV5Withdraw,6:V.FarmV6Withdraw};l.addInstruction({instructions:[M],instructionTypes:[F[A]]})}return u===1?l.sizeCheckBuild({computeBudgetConfig:c}):l.sizeCheckBuildV0({computeBudgetConfig:c})}};import{PublicKey as et}from"@solana/web3.js";import{NATIVE_MINT as nu,TOKEN_PROGRAM_ID as ai}from"@solana/spl-token";var IA=O([We("mintAuthorityOption"),S("mintAuthority"),w("supply"),_("decimals"),_("isInitialized"),We("freezeAuthorityOption"),S("freezeAuthority")]);import{PublicKey as am}from"@solana/web3.js";import{MintLayout as ka,TOKEN_PROGRAM_ID as um}from"@solana/spl-token";var OA=async({connection:r,mint:e})=>{let t=await r.getAccountInfo(new am(e));return!t||t.data.length!==ka.span?void 0:ka.decode(t.data)},NA=({mint:r,decimals:e,programId:t=um,logoURI:n="",priority:i=3})=>{let o=r.toBase58().substring(0,6);return{address:r.toBase58(),decimals:e,symbol:o,logoURI:n,extensions:{},chainId:101,programId:t.toString(),name:o,tags:[],priority:i}},ha=r=>new he({mint:r.address,decimals:r.decimals,symbol:r.symbol,name:r.name}),MA=i=>{var o=i,{amount:r,isRaw:e,name:t}=o,n=Pe(o,["amount","isRaw","name"]);return new xe(new he({mint:n.address,decimals:n.decimals,symbol:n.symbol,name:t}),r,e,t)};function _A(r){return r.address===ht.address?Re:r}function VA(r){return r.address===Re.address?ht:r}import{TOKEN_PROGRAM_ID as $n,ASSOCIATED_TOKEN_PROGRAM_ID as Tm}from"@solana/spl-token";import{PublicKey as ye,TransactionInstruction as Mt,SystemProgram as To,SYSVAR_RENT_PUBKEY as Im}from"@solana/web3.js";var go=O([_("instruction"),w("amountIn"),w("minAmountOut")]),wo=O([_("instruction"),w("maxAmountIn"),w("amountOut")]),QA=O([_("instruction"),_("nonce")]),Ao=O([_("instruction"),_("nonce"),w("startTime")]),cm=O([w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalValue"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),w("swapBase2QuoteFee"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("withdrawQueue"),S("lpVault"),S("owner"),w("lpReserve"),q(w(),3,"padding")]),lm=O([w("accountType"),w("status"),w("nonce"),w("maxOrder"),w("depth"),w("baseDecimal"),w("quoteDecimal"),w("state"),w("resetFlag"),w("minSize"),w("volMaxCutRatio"),w("amountWaveRatio"),w("baseLotSize"),w("quoteLotSize"),w("minPriceMultiplier"),w("maxPriceMultiplier"),w("systemDecimalsValue"),w("abortTradeFactor"),w("priceTickMultiplier"),w("priceTick"),w("minSeparateNumerator"),w("minSeparateDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("pnlNumerator"),w("pnlDenominator"),w("swapFeeNumerator"),w("swapFeeDenominator"),w("baseNeedTakePnl"),w("quoteNeedTakePnl"),w("quoteTotalPnl"),w("baseTotalPnl"),w("poolOpenTime"),w("punishPcAmount"),w("punishCoinAmount"),w("orderbookToInitTime"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),z("swapQuoteInAmount"),z("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),S("baseVault"),S("quoteVault"),S("baseMint"),S("quoteMint"),S("lpMint"),S("modelDataAccount"),S("openOrders"),S("marketId"),S("marketProgramId"),S("targetOrders"),S("owner"),q(w(),64,"padding")]),Po=O([_("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),ko=O([_("instruction"),w("amountIn")]),HA={4:cm,5:lm},Ta=O([w("fee")]);import{PublicKey as mm}from"@solana/web3.js";var wn=new mm("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),tn=5e4,dm=O([w("x"),w("y"),w("price")]),pm=O([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),q(dm,tn,"DataElement")]);function fm(r,e){return[0,tn-2]}function ym(r){return[0,tn-2]}function bm(r){return[0,tn-2]}function gm(r,e,t){let[n,i]=fm(e,t),o=n,s=i,a=0,u=e*r.multiplier/t;for(;o<=s;){if(a=Math.floor((s+o)/2),a===0||a>=tn-2)return[a,a,!1];let c=r.DataElement[a].x*r.multiplier/r.DataElement[a].y,l=r.DataElement[a-1].x*r.multiplier/r.DataElement[a-1].y,m=r.DataElement[a+1].x*r.multiplier/r.DataElement[a+1].y;if(u===c)return[a,a,!0];if(u===l)return[a-1,a-1,!0];if(u===m)return[a+1,a+1,!0];if(u<l)s=a-1;else{if(u>l&&u<c)return[a-1,a,!0];if(u>c&&u<m)return[a,a+1,!0];o=a+1}}return[a,a,!1]}function ho(r,e,t){let[n,i,o]=gm(r,e,t);if(!o)return 0;if(n===i){let s=r.DataElement[n].x;return e*r.multiplier/s}else{let s=r.DataElement[n].x,a=r.DataElement[n].y,u=r.DataElement[i].x,c=r.DataElement[i].y,l=t*(u*a-s*c),m=s*l,p=(u-s)*(e*a-s*t)*c,d=m+p;return e*r.multiplier*l/d}}function en(r,e,t){return e*r.multiplier/t}function Ia(r,e,t){return e*t/r.multiplier}function wm(r,e){let[t,n]=ym(e),i=t,o=n,s=0,a=e;for(;i<o;){if(s=Math.floor((o+i)/2),s<=0||s>tn-2)return[s,s,!1];let u=r.DataElement[s].x,c=r.DataElement[s-1].x,l=r.DataElement[s+1].x;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<c)o=s-1;else{if(a>c&&a<u)return[s-1,s,!0];if(a>u&&a<l)return[s,s+1,!0];i=s+1}}return[s,s,!1]}function Am(r,e){let[t,n]=bm(e),i=t,o=n,s=0,a=e;for(;i<=o;){if(s=Math.floor((o+i)/2),s<=0||s>=tn-2)return[s,s,!1];let u=r.DataElement[s].y,c=r.DataElement[s-1].y,l=r.DataElement[s+1].y;if(a===u)return[s,s,!0];if(a===c)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)i=s+1;else{if(a<c&&a>u)return[s-1,s,!0];if(a<u&&a>l)return[s,s+1,!0];o=s-1}}return[s,s,!1]}function xa(r,e,t,n){let i=n?e+t:e-t,[o,s,a]=wm(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].y,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,p=r.DataElement[o].y,d=r.DataElement[s].y;if(e>=u&&e<=c)return n?[m,d,!0,a]:[l,p,!0,a];{let y,f;return n?(y=l+(m-l)*(e-u)/(c-u),f=p-(i-u)*r.multiplier/m):(y=l+(m-l)*(e-u)/(c-u),f=d+(c-i)*r.multiplier/l),[y,f,!1,a]}}}function Pm(r,e,t,n){let i=n?e-t:e+t,[o,s,a]=Am(r,i);if(!a)return[0,0,!1,a];if(o===s)return[r.DataElement[s].price,r.DataElement[s].x,!1,a];{let u=r.DataElement[o].x,c=r.DataElement[s].x,l=r.DataElement[o].price,m=r.DataElement[s].price,p=r.DataElement[o].y,d=r.DataElement[s].y;if(e>=d&&e<=p)return n?[m,c,!0,a]:[l,u,!0,a];{let y,f;return n?(y=l+(m-l)*(p-e)/(p-d),f=u+m*(p-i)/r.multiplier):(y=l+(m-l)*(p-e)/(p-d),f=c-l*(i-d)/r.multiplier),[y,f,!1,a]}}}function km(r,e){let t=xa(r,e,0,!1);return t[3]?t[0]:0}function Ba(r,e,t,n){let i=ho(r,e,t),o=en(r,e,i),s=en(r,t,i),a=en(r,n,i),u=!0,[c,l,m,p]=xa(r,o,a,u);if(!p)return 0;if(m)return n*r.multiplier/c;{let d=s-l;return Ia(r,d,i)}}function Sa(r,e,t,n){let i=ho(r,e,t),o=en(r,e,i),s=en(r,t,i),a=en(r,n,i),u=!1,[c,l,m,p]=Pm(r,s,a,u);if(!p)return 0;if(m)return n*c/r.multiplier;{let d=o-l;return Ia(r,d,i)}}function hm(r){let e=pm.decode(r);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function Ka(r,e,t,n){let i=km(r,en(r,e,ho(r,e,t)))/r.multiplier;return n?i:1/i}var gn=class{constructor({connection:e}){this._layoutData={accountType:0,status:0,multiplier:0,validDataCount:0,DataElement:[]};this.connection=e}get stableModelData(){return this._layoutData}async initStableModelLayout(){if(this._layoutData.validDataCount===0&&this.connection){let e=await this.connection.getAccountInfo(wn);e&&(this._layoutData=hm(e==null?void 0:e.data))}}};var Ca=ae("Raydium_liquidity_instruction");function Ra(r){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:o,fixedSide:s}=r,a=Buffer.alloc(Po.span);Po.encode({instruction:3,baseAmountIn:X(i),quoteAmountIn:X(o),fixedSide:s==="base"?ze:hs},a);let u=[k({pubkey:$n,isWritable:!1}),k({pubkey:new ye(e.id)}),k({pubkey:new ye(t.authority),isWritable:!1}),k({pubkey:new ye(t.openOrders),isWritable:!1}),k({pubkey:new ye(t.targetOrders)}),k({pubkey:new ye(e.lpMint.address)}),k({pubkey:new ye(t.vault.A)}),k({pubkey:new ye(t.vault.B)})];return e.pooltype.includes("StablePool")&&u.push(k({pubkey:wn})),u.push(k({pubkey:new ye(e.marketId),isWritable:!1}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:new ye(t.marketEventQueue),isWritable:!1})),new Mt({programId:new ye(e.programId),keys:u,data:a})}function Io(r){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:i}=r,o=pe(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(ko.span);ko.encode({instruction:4,amountIn:X(i)},a);let u=[k({pubkey:$n,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.authority,isWritable:!1}),k({pubkey:o.openOrders}),k({pubkey:o.targetOrders}),k({pubkey:o.mintLp.address}),k({pubkey:o.vault.A}),k({pubkey:o.vault.B})];return s===5?u.push(k({pubkey:wn})):(u.push(k({pubkey:o.id})),u.push(k({pubkey:o.id}))),u.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:n.lpTokenAccount}),k({pubkey:n.baseTokenAccount}),k({pubkey:n.quoteTokenAccount}),k({pubkey:n.owner,isWritable:!1,isSigner:!0}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks})),new Mt({programId:o.programId,keys:u,data:a})}return new Mt({programId:o.programId,keys:[]})}function La({programId:r,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:o,pcMint:s,coinVault:a,pcVault:u,withdrawQueue:c,ammTargetOrders:l,poolTempLp:m,marketProgramId:p,marketId:d,userWallet:y,userCoinVault:f,userPcVault:b,userLpVault:g,nonce:P,openTime:A,coinAmount:h,pcAmount:T,ammConfigId:I,feeDestinationId:B}){let x=O([_("instruction"),_("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),K=[{pubkey:$n,isSigner:!1,isWritable:!1},{pubkey:Tm,isSigner:!1,isWritable:!1},{pubkey:To.programId,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:I,isSigner:!1,isWritable:!1},{pubkey:B,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0}],M=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:P,openTime:A,coinAmount:h,pcAmount:T},M),{instruction:new Mt({keys:K,programId:r,data:M}),instructionType:V.AmmV4CreatePool}}function mP(r){let e=O([_("instruction"),_("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new ye(r.id),isWritable:!1}),k({pubkey:new ye(r.authority),isWritable:!1}),k({pubkey:new ye(r.openOrders),isWritable:!1}),k({pubkey:new ye(r.vault.A),isWritable:!1}),k({pubkey:new ye(r.vault.B),isWritable:!1}),k({pubkey:new ye(r.mintLp.address),isWritable:!1}),k({pubkey:new ye(r.marketId),isWritable:!1}),k({pubkey:new ye(r.marketEventQueue),isWritable:!1})];return new Mt({programId:new ye(r.programId),keys:n,data:t})}function xm({poolKeys:r,userKeys:e,amountIn:t,minAmountOut:n},i){let o=pe(r),s=Buffer.alloc(go.span);go.encode({instruction:9,amountIn:X(t),minAmountOut:X(n)},s);let a=[k({pubkey:$n,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.authority,isWritable:!1}),k({pubkey:o.openOrders})];return i===4&&a.push(k({pubkey:o.targetOrders})),a.push(k({pubkey:o.vault.A}),k({pubkey:o.vault.B})),i===5&&a.push(k({pubkey:wn})),a.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1})),new Mt({programId:o.programId,keys:a,data:s})}function Bm({poolKeys:r,userKeys:e,maxAmountIn:t,amountOut:n},i){let o=pe(r),s=Buffer.alloc(wo.span);wo.encode({instruction:11,maxAmountIn:X(t),amountOut:X(n)},s);let a=[k({pubkey:To.programId,isWritable:!1}),k({pubkey:o.id}),k({pubkey:o.authority,isWritable:!1}),k({pubkey:o.openOrders}),k({pubkey:o.targetOrders}),k({pubkey:o.vault.A}),k({pubkey:o.vault.B})];return i===5&&a.push(k({pubkey:wn})),a.push(k({pubkey:o.marketProgramId,isWritable:!1}),k({pubkey:o.marketId}),k({pubkey:o.marketBids}),k({pubkey:o.marketAsks}),k({pubkey:o.marketEventQueue}),k({pubkey:o.marketBaseVault}),k({pubkey:o.marketQuoteVault}),k({pubkey:o.marketAuthority,isWritable:!1}),k({pubkey:e.tokenAccountIn}),k({pubkey:e.tokenAccountOut}),k({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Mt({programId:o.programId,keys:a,data:s})}function ei(r){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:o,fixedSide:s}=r;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return xm(D(N({},a),{amountIn:i,minAmountOut:o}),t);if(s==="out")return Bm(D(N({},a),{maxAmountIn:i,amountOut:o}),t);Ca.logWithError("invalid params","params",r)}throw Ca.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function dP({poolKeys:r,userKeys:e,startTime:t}){let n=Buffer.alloc(Ao.span);Ao.encode({instruction:0,nonce:5,startTime:X(t)},n);let i=pe(r),o=[k({pubkey:$n,isWritable:!1}),k({pubkey:To.programId,isWritable:!1}),k({pubkey:Im,isWritable:!1}),k({pubkey:i.id}),k({pubkey:i.authority,isWritable:!1}),k({pubkey:i.openOrders}),k({pubkey:i.mintLp.address}),k({pubkey:i.mintA.address,isWritable:!1}),k({pubkey:i.mintB.address,isWritable:!1}),k({pubkey:i.vault.A,isWritable:!1}),k({pubkey:i.vault.B,isWritable:!1}),k({pubkey:i.id}),k({pubkey:i.targetOrders}),k({pubkey:e.lpTokenAccount}),k({pubkey:i.id,isWritable:!1}),k({pubkey:i.marketProgramId,isWritable:!1}),k({pubkey:i.marketId,isWritable:!1}),k({pubkey:e.payer,isSigner:!0})];return new Mt({programId:i.programId,keys:o,data:n})}function Oa({poolKeys:r}){let e=O([_("instruction"),_("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[k({pubkey:new ye(r.id),isWritable:!1}),k({pubkey:new ye(r.authority),isWritable:!1}),k({pubkey:new ye(r.openOrders),isWritable:!1}),k({pubkey:new ye(r.vault.A),isWritable:!1}),k({pubkey:new ye(r.vault.B),isWritable:!1}),k({pubkey:new ye(r.mintLp.address),isWritable:!1}),k({pubkey:new ye(r.marketId),isWritable:!1}),k({pubkey:new ye(r.marketEventQueue),isWritable:!1})];return{instruction:new Mt({programId:new ye(r.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as Fe,TOKEN_2022_PROGRAM_ID as Qt,ASSOCIATED_TOKEN_PROGRAM_ID as Qa}from"@solana/spl-token";import{PublicKey as v,TransactionInstruction as At,SystemProgram as An,Keypair as Oo}from"@solana/web3.js";import Ha from"bn.js";import Em from"bn.js";function Na(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function fP(r){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,r,!1),new Uint8Array(e)}function yP(r){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,r,!1),new Uint8Array(e)}function ti(r){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,r,!1),new Uint8Array(e)}function xo(r,e){let t=0;for(let n=r-1;n>=0&&!e.testn(n);n--)t++;return t}function Bo(r,e){let t=0;for(let n=0;n<r&&!e.testn(n);n++)t++;return t}function Jn(r,e){for(let t=0;t<r;t++)if(e.testn(t))return!1;return!0}function Ma(r,e){return Jn(r,e)?null:xo(r,e)}function _a(r,e){return Jn(r,e)?null:Bo(r,e)}var Sm=Buffer.from("amm_config","utf8"),Km=Buffer.from("pool","utf8"),Cm=Buffer.from("pool_vault","utf8"),Rm=Buffer.from("pool_reward_vault","utf8"),Va=Buffer.from("position","utf8"),Lm=Buffer.from("tick_array","utf8"),Om=Buffer.from("operation","utf8"),Nm=Buffer.from("pool_tick_array_bitmap_extension","utf8");function AP(r,e){return ie([Sm,Na(e)],r)}function Ea(r,e,t,n){return ie([Km,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function So(r,e,t){return ie([Cm,e.toBuffer(),t.toBuffer()],r)}function Fa(r,e,t){return ie([Rm,e.toBuffer(),t.toBuffer()],r)}function be(r,e,t){return ie([Lm,e.toBuffer(),ti(t)],r)}function nn(r,e,t,n){return ie([Va,e.toBuffer(),ti(t),ti(n)],r)}function at(r,e){return ie([Va,e.toBuffer()],r)}function ni(r){return ie([Buffer.from("metadata","utf8"),dn.toBuffer(),r.toBuffer()],dn)}function er(r){return ie([Om],r)}function ut(r,e){return ie([Nm,e.toBuffer()],r)}import Bt from"bn.js";var me=new Bt(0),rt=new Bt(1),_t=new Bt(-1),it=new Bt(1).shln(64),ri=new Bt(1).shln(128),Ko=it.sub(rt),tr=64,va=ri.subn(1),qe=-443636,Qe=-qe,St=new Bt("4295048016"),Kt=new Bt("79226673521066979257578248091"),Wa=16,Da="59543866431248",qa="184467440737095516",Ua="15793534762490258745",ii=new Bt(10).pow(new Bt(6)),Mm=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(Mm||{}),hP={[500]:10,[3e3]:60,[1e4]:200},TP={version:6,liquidity:me,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:me,feeGrowthGlobalX64B:me,protocolFeesTokenA:me,protocolFeesTokenB:me,swapInAmountTokenA:me,swapOutAmountTokenB:me,swapInAmountTokenB:me,swapOutAmountTokenA:me,tickArrayBitmap:[],rewardInfos:[],day:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},week:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},month:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},tvl:0},Ga={tvl:0,volumeQuote:0,mintAmountA:0,mintAmountB:0,rewardDefaultInfos:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,day:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},week:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},month:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},pooltype:[]},IP=new Bt("18446744073700000000");var _m=15,ce=class{static async getTickArrays(e,t,n,i,o,s,a){let u=[],c=U.getTickArrayStartIndexByTick(i,o),l=U.getInitializedTickArrayInRange(s,a,o,c,Math.floor(_m/2));for(let d=0;d<l.length;d++){let{publicKey:y}=be(t,n,l[d]);u.push(y)}let m=(await Tt(e,u)).map(d=>d!==null?nr.decode(d.data):null),p={};for(let d=0;d<u.length;d++){let y=m[d];y!==null&&(p[y.startTickIndex]=D(N({},y),{address:u[d]}))}return p}static nextInitializedTick(e,t,n,i,o,s){let{initializedTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}=this.nextInitializedTickInOneArray(e,t,n,i,o,s);for(;a==null||a.liquidityGross.lten(0);){if(c=U.getNextTickArrayStartIndex(c,o,s),this.checkIsValidStartIndex(c,o))throw new Error("No enough initialized tickArray");let l=n[c];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:p,tickArrayStartTickIndex:d}=this.firstInitializedTickInOneArray(e,t,l,s);[a,u,c]=[m,p,d]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:u,tickArrayStartTickIndex:c}}static nextInitializedTickArray(e,t,n,i,o){let s=Math.floor(e/ce.tickCount(t)),a=n?U.searchLowBitFromStart(i,o,s-1,1,t):U.searchHightBitFromStart(i,o,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let o;if(i){let a=Le-1;for(;a>=0;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a-1}}else{let a=0;for(;a<Le;){let u=n.ticks[a];if(u.liquidityGross.gtn(0)){o=u;break}a=a+1}}let{publicKey:s}=be(e,t,n.startTickIndex);return{nextTick:o,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,o,s){let a=U.getTickArrayStartIndexByTick(i,o),u=Math.floor((i-a)/o),c=n[a];if(c==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;u>=0;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u-1}else for(u=u+1;u<Le;){let p=c.ticks[u];if(p.liquidityGross.gtn(0)){l=p;break}u=u+1}let{publicKey:m}=be(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:c.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(U.checkIsOutOfBoundary(e)){if(e>Qe)return!1;let n=U.getTickArrayStartIndexByTick(qe,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return Le*e}};import ne from"bn.js";import{PublicKey as Yt}from"@solana/web3.js";import Be from"bn.js";var Co=14,Vt=class{static maxTickInTickarrayBitmap(e){return e*Le*rn}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let o=n*i;return e<0?{minValue:-o,maxValue:-o+n}:{minValue:o,maxValue:o+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!ce.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let o=this.maxTickInTickarrayBitmap(n),s=i?t-ce.tickCount(n):t+ce.tickCount(n);if(s<-o||s>=o)return{isInit:!1,tickIndex:t};let a=n*Le,u=s/a+512;s<0&&s%a!=0&&u--;let c=Math.abs(u);if(i){let l=e.shln(1024-c-1),m=Ma(1024,l);if(m!==null){let p=(c-m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:-o}}else{let l=e.shrn(c),m=_a(1024,l);if(m!==null){let p=(c+m-512)*a;return{isInit:!0,tickIndex:p}}else return{isInit:!1,tickIndex:o-ce.tickCount(n)}}}},rr=class{static getBitmapOffset(e,t){if(!ce.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Vt.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=Vt.maxTickInTickarrayBitmap(e),n=-t;if(Qe<=t)throw Error(`extensionTickBoundary check error: ${Qe}, ${t}`);if(n<=qe)throw Error(`extensionTickBoundary check error: ${n}, ${qe}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),o=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:U.mergeTickArrayBitmap(i).testn(o),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let o=ce.tickCount(t),s=n?e-o:e+o,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:o,maxValue:s}=Vt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let u=U.mergeTickArrayBitmap(e).shln(rn-1-a),c=Jn(512,u)?null:xo(512,u);if(c!==null){let l=t-c*ce.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:o}}else{let u=U.mergeTickArrayBitmap(e).shrn(a),c=Jn(512,u)?null:Bo(512,u);if(c!==null){let l=t+c*ce.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-ce.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Vt.maxTickInTickarrayBitmap(t),i=Math.floor(n/ce.tickCount(t));return e<0&&n!=0&&(i=rn-i),i}};import Ct from"bn.js";var ir=class{static getfeeGrowthInside(e,t,n){let i=new Ct(0),o=new Ct(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,o=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),o=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new Ct(0),a=new Ct(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let u=$.wrappingSubU128($.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),c=$.wrappingSubU128($.wrappingSubU128(e.feeGrowthGlobalX64B,o),a);return{feeGrowthInsideX64A:u,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,it),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,it),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:o,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=$.mulDivFloor($.wrappingSubU128(o,t.feeGrowthInsideLastX64A),t.liquidity,it),u=t.tokenFeesOwedA.add(a),c=$.mulDivFloor($.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,it),l=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:u,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let o=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.mulDivFloor(l,t.liquidity,it),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static GetPositionRewards(e,t,n,i){let o=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let u=s[a],c=t.rewardInfos[a],l=$.wrappingSubU128(u,c.growthInsideLastX64),m=$.mulDivFloor(l,t.liquidity,it),p=c.rewardAmountOwed.add(m);o.push(p)}return o}static getRewardGrowthInside(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Ct(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ct(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push($.wrappingSubU128($.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getRewardGrowthInsideV2(e,t,n,i){let o=[];for(let s=0;s<i.length;s++){let a=new Ct(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let u=new Ct(0);n.liquidityGross.eqn(0)||(e<n.tick?u=n.rewardGrowthsOutsideX64[s]:u=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),o.push($.wrappingSubU128($.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),u))}return o}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:o,epochInfo:s}){var b,g,P,A;let a=Z.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),u=Z.getSqrtPriceX64FromTick(t.tickLower),c=Z.getSqrtPriceX64FromTick(t.tickUpper),l=o?1+i:1-i,m=ue.getAmountsFromLiquidity(a,u,c,n,o),[p,d]=[we(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),we(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[we(new Ct(new E(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),we(new Ct(new E(m.amountB.toString()).mul(l).toFixed(0)),(A=e.mintB.extensions)==null?void 0:A.feeConfig,s,!0)];return{liquidity:n,amountA:p,amountB:d,amountSlippageA:y,amountSlippageB:f,expirationTime:Zt(p.expirationTime,d.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Xa}from"@solana/spl-token";var Ue=class{static getOutputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintA.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:y}=on.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,c,o);return a.push(...p),{expectedAmountOut:m.mul(_t),remainingAccounts:a,executionPrice:d,feeAmount:y}}static getInputAmountAndRemainAccounts(e,t,n,i,o){let s=n.toBase58()===e.mintB.address,a=[],{isExist:u,startIndex:c,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!u||c===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=be(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:p,sqrtPriceX64:d,feeAmount:y}=on.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(_t),c,o);return a.push(...p),{expectedAmountIn:m,remainingAccounts:a,executionPrice:d,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=Ue.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?rr.checkTickArrayIsInit(ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):U.checkTickArrayIsInitialized(U.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=be(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:o,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(o){let{publicKey:a}=be(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/ce.tickCount(e.tickSpacing)),i=t?U.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):U.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=ce.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:o}=Vt.nextInitializedTickArrayStartIndex(U.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:o};t=o;let{isInit:s,tickIndex:a}=rr.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<qe||t>Qe)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:o}){var a,u,c;let s=[];for(let l=0;l<o.length;l++){let m=o[l],p=(c=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?c:(u=await e.getAccountInfo(m.tokenMint))==null?void 0:u.owner;if(p===void 0)throw Error("get new reward mint info error");let d=D(N({},m),{perSecond:$.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Yt(p)});if(d.tokenMint.equals(Yt.default))continue;if(n<=d.openTime.toNumber()||i.eq(me)){s.push(d);continue}let y=new Be(Math.min(d.endTime.toNumber(),n)),f=y.sub(d.lastUpdateTime),b=$.mulDivFloor(f,d.emissionsPerSecondX64,i),g=d.rewardGrowthGlobalX64.add(b),P=$.mulDivFloor(f,d.emissionsPerSecondX64,it),A=d.rewardTotalEmissioned.add(P);s.push(D(N({},d),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:A,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let o of t){let s=U.getTickArrayStartIndexByTick(o,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=Vt.maxTickInTickarrayBitmap(e),n=-t;return t>Qe&&(t=ce.getArrayStartIndex(Qe,e)+ce.tickCount(e)),n<qe&&(n=ce.getArrayStartIndex(qe,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!ce.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/ce.tickCount(t)*rn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await Ln(e,t.map(s=>({pubkey:s})),{batchRequest:n}),o={};for(let s of i)s.accountInfo!==null&&(o[s.pubkey.toString()]=za.decode(s.accountInfo.data));return o}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},o=[];for(let u of t){let c=U.getTickArrayStartIndexByTick(u.tickCurrent,u.tickSpacing),l=U.getInitializedTickArrayInRange(u.tickArrayBitmap,u.exBitmapInfo,u.tickSpacing,c,7);for(let m of l){let{publicKey:p}=be(u.programId,u.id,m);o.push({pubkey:p}),i[p.toString()]=u.id}}let s=await Ln(e,o,{batchRequest:n}),a={};for(let u of s){if(!u.accountInfo)continue;let c=i[u.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let l=nr.decode(u.accountInfo.data);a[c.toString()][l.startTickIndex]=D(N({},l),{address:u.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:o=!0}){var a;let s=[];for(let u=0;u<e.length;u++){let c=e[u];c!==null&&(s.find(l=>l.equals(c.state.programId))||s.push(c.state.programId))}if(n){let u=n.tokenAccounts.map(p=>p.accountInfo.mint),c=[];for(let p of u)for(let d of s)c.push(at(d,p).publicKey);let l=await Tt(t,c,{batchRequest:i}),m={};for(let p of l){if(p===null)continue;let d=si.decode(p.data),y=d.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=U._getTickPriceLegacy({poolInfo:b,tick:d.tickLower,baseIn:!0}),P=U._getTickPriceLegacy({poolInfo:b,tick:d.tickUpper,baseIn:!0}),{amountA:A,amountB:h}=ue.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,P.tickSqrtPriceX64,d.liquidity,!1),T=1/(1-Math.sqrt(Math.sqrt(g.price.div(P.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:d.poolId,nftMint:d.nftMint,priceLower:g.price,priceUpper:P.price,amountA:A,amountB:h,tickLower:d.tickLower,tickUpper:d.tickUpper,liquidity:d.liquidity,feeGrowthInsideLastX64A:d.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:d.feeGrowthInsideLastX64B,tokenFeesOwedA:d.tokenFeesOwedA,tokenFeesOwedB:d.tokenFeesOwedB,rewardInfos:d.rewardInfos.map(x=>D(N({},x),{pendingReward:new Be(0)})),leverage:T,tokenFeeAmountA:new Be(0),tokenFeeAmountB:new Be(0)}];let I=await U.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickLower,f.state.tickSpacing),B=await U.getTickArrayAddressByTick(f.state.programId,d.poolId,d.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickLower}`]=I,m[`${f.state.programId.toString()}-${d.poolId.toString()}-${d.tickUpper}`]=B}if(o){let p=Object.values(m),d=await Tt(t,p,{batchRequest:i}),y={};for(let f=0;f<p.length;f++){let b=d[f];if(b===null)continue;let g=p[f].toString();y[g]=nr.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let g of b){let P=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,A=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,h=y[m[P].toString()],T=y[m[A].toString()],I=h.ticks[U.getTickOffsetInArray(g.tickLower,f.tickSpacing)],B=T.ticks[U.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:K}=await ir.GetPositionFees(f,g,I,B),M=await ir.GetPositionRewards(f,g,I,B);g.tokenFeeAmountA=x.gte(new Be(0))?x:new Be(0),g.tokenFeeAmountB=K.gte(new Be(0))?K:new Be(0);for(let F=0;F<M.length;F++)g.rewardInfos[F].pendingReward=M[F].gte(new Be(0))?M[F]:new Be(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:o,slippage:s,priceLimit:a=new E(0)}){var M;let u,c=n.toBase58()===e.mintA.address,[l,m]=c?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new E(0))?u=c?St.add(new Be(1)):Kt.sub(new Be(1)):u=Z.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=we(o,l,i,!1),{expectedAmountOut:d,remainingAccounts:y,executionPrice:f,feeAmount:b}=Ue.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((M=p.fee)!=null?M:me),u),g=we(d,m,i,!1),P=Z.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),A=c?P:new E(1).div(P),h=d.mul(new Be(Math.floor((1-s)*1e10))).div(new Be(1e10)),T=we(h,m,i,!1),I=c?e.currentPrice:new E(1).div(e.currentPrice),B=new E(A).sub(I).abs(),x=I,K=new tt(new E(B).mul(10**15).toFixed(0),new E(x).mul(10**15).toFixed(0));return{realAmountIn:p,amountOut:g,minAmountOut:T,expirationTime:Zt(p.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:A,priceImpact:K,fee:b,remainingAccounts:y}}static async computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:o,epochInfo:s}){let a=i.address===e.mintB.address,[u,c]=a?[e.mintA,e.mintB]:[e.mintB,e.mintA],[l,m]=[new he(D(N({},u),{mint:u.address,isToken2022:u.programId===Xa.toBase58()})),new he(D(N({},c),{mint:c.address,isToken2022:c.programId===Xa.toBase58()}))],{realAmountIn:p,amountOut:d,minAmountOut:y,expirationTime:f,currentPrice:b,executionPrice:g,priceImpact:P,fee:A,remainingAccounts:h}=await Ue.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new Yt(u.address),amountIn:n,slippage:o,epochInfo:s}),T=D(N({},p),{amount:new xe(l,p.amount),fee:p.fee===void 0?void 0:new xe(l,p.fee)}),I=D(N({},d),{amount:new xe(m,d.amount),fee:d.fee===void 0?void 0:new xe(m,d.fee)}),B=D(N({},y),{amount:new xe(m,y.amount),fee:y.fee===void 0?void 0:new xe(m,y.fee)}),x=new st({baseToken:l,denominator:new Be(10).pow(new Be(20+l.decimals)),quoteToken:m,numerator:b.mul(new E(10**(20+m.decimals))).toFixed(0)}),K=new st({baseToken:l,denominator:new Be(10).pow(new Be(20+l.decimals)),quoteToken:m,numerator:g.mul(new E(10**(20+m.decimals))).toFixed(0)}),M=new xe(l,A);return{realAmountIn:T,amountOut:I,minAmountOut:B,expirationTime:f,currentPrice:x,executionPrice:K,priceImpact:P,fee:M,remainingAccounts:h}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var y,f,b;let o=e[t],s=U.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=U.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),u=Math.max(s,o.priceMin),l=Math.min(a,o.priceMax)-u,m=a-s,p=o.priceMax-o.priceMin,d;return l<=0?d=0:m===l?d=p/l:p===l?d=l/m:d=l/p*(l/m),{feeApr:o.feeApr*d,rewardsApr:[(y=o.rewardApr[0])!=null?y:0*d,(f=o.rewardApr[1])!=null?f:0*d,(b=o.rewardApr[2])!=null?b:0*d],apr:o.apr*d}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:o,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:u}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[pn(e.mintA.address).toString()],p=i[pn(e.mintB.address).toString()],d=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!p)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=Z.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),b=Z.getSqrtPriceX64FromTick(s),g=Z.getSqrtPriceX64FromTick(a),{amountSlippageA:P,amountSlippageB:A}=ue.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:h,amountSlippageB:T}=ue.getAmountsFromLiquidityWithSlippage(f,b,g,o,!1,!1,0),I=new E(P.toString()).div(new E(10).pow(d)).mul(m.value).add(new E(A.toString()).div(new E(10).pow(y)).mul(p.value)),B=new E(h.toString()).div(new E(10).pow(d)).mul(m.value).add(new E(T.toString()).div(new E(10).pow(y)).mul(p.value)),x=B.div(I.add(B)).div(B),M=new E(l.volumeFee).mul(365).div(c).mul(x).mul(100).toNumber(),F=3600*24*365,j=e.rewardDefaultInfos.map(W=>{var oe,dt;let H=W.mint.decimals,ee=i[W.mint.address];return u<((oe=W.startTime)!=null?oe:0)||u>((dt=W.endTime)!=null?dt:0)||!W.perSecond||!ee||H===void 0?0:new E(ee.value).mul(new E(W.perSecond).mul(F)).div(new E(10).pow(H)).mul(x).mul(100).toNumber()});return{feeApr:M,rewardsApr:j,apr:M+j.reduce((W,H)=>W+H,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:o,slippage:s,add:a,epochInfo:u,amountHasFee:c}){var g,P;let l=Z.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),m=Z.getSqrtPriceX64FromTick(n),p=Z.getSqrtPriceX64FromTick(i),d=a?1-s:1+s,y=we(o,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,u,!c),f=new Be(new E(y.amount.sub((P=y.fee)!=null?P:me).toString()).mul(d).toFixed(0)),b;if(l.lte(m))b=t?ue.getLiquidityFromTokenAmountA(m,p,f,!a):new Be(0);else if(l.lte(p)){let A=ue.getLiquidityFromTokenAmountA(l,p,f,!a),h=ue.getLiquidityFromTokenAmountB(m,l,f);b=t?A:h}else b=t?new Be(0):ue.getLiquidityFromTokenAmountB(m,p,f);return Ue.getAmountsFromLiquidity({epochInfo:u,poolInfo:e,tickLower:n,tickUpper:i,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:o,slippage:s,add:a}){var b,g,P,A;let u=Z.getSqrtPriceX64FromTick(n),c=Z.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=ue.getAmountsFromLiquidity(Z.priceToSqrtPriceX64(new E(t.price),t.mintA.decimals,t.mintB.decimals),u,c,o,a),[p,d]=[we(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),we(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[we(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),we(m.amountB.muln(l),(A=t.mintB.extensions)==null?void 0:A.feeConfig,e,!0)];return{liquidity:o,amountA:p,amountB:d,amountSlippageA:y,amountSlippageB:f,expirationTime:Zt(p.expirationTime,d.expirationTime)}}static async fetchComputeClmmInfo({owner:e,connection:t,poolInfo:n}){let i=await t.getAccountInfo(new Yt(n.id));if(!i)throw new Error(`pool not found ${n.id}`);let o=oi.decode(i.data),s=ut(e,new Yt(n.id)).publicKey,a=await Ue.fetchExBitmaps({connection:t,exBitmapAddress:[s],batchRequest:!1});return D(N({},o),{id:new Yt(n.id),programId:new Yt(n.programId),mintA:n.mintA,mintB:n.mintB,ammConfig:D(N({},n.config),{id:new Yt(n.config.id),fundOwner:""}),currentPrice:new E(n.price),exBitmapInfo:a[s.toBase58()],startTime:o.startTime.toNumber()})}};function ck({poolInfo:r,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:o,add:s,epochInfo:a,amountHasFee:u}){var A,h,T,I;let[c,l,m,p]=e<t?[e,t,n,i]:[t,e,i,n],d=Z.priceToSqrtPriceX64(new E(r.price),r.mintA.decimals,r.mintB.decimals),y=Z.getSqrtPriceX64FromTick(c),f=Z.getSqrtPriceX64FromTick(l),[b,g]=[we(m,(A=r.mintA.extensions)==null?void 0:A.feeConfig,a,!u),we(p,(h=r.mintB.extensions)==null?void 0:h.feeConfig,a,!u)],P=ue.getLiquidityFromTokenAmounts(d,y,f,b.amount.sub((T=b.fee)!=null?T:me),g.amount.sub((I=g.fee)!=null?I:me));return ue.getAmountsOutFromLiquidity({poolInfo:r,tickLower:e,tickUpper:t,liquidity:P,slippage:o,add:s,epochInfo:a,amountAddFee:!u})}var $=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),o=i.div(n);return i.mod(n).eq(me)||(o=o.add(rt)),o}static mulDivFloor(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(me))throw new Error("division by 0");return e.mul(t).add(n.sub(rt)).div(n)}static x64ToDecimal(e,t){return new E(e.toString()).div(E.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ne(e.mul(E.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(ri).sub(t).mod(ri)}};function Ne(r,e){return Ro(r.mul(e),64,256)}function Vm(r,e,t){let n=r.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Ro(r,e,t){let n=r.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var Z=class{static sqrtPriceX64ToPrice(e,t,n){return $.x64ToDecimal(e).pow(2).mul(E.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return $.decimalToX64(e.mul(E.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt(me))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(me))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(me))return e;let o=t.shln(tr);if(i){let s=o,a=o.add(n.mul(e));return a.gte(s)?$.mulDivCeil(s,e,a):$.mulDivRoundingUp(s,rt,s.div(e).add(n))}else{let s=n.mul(e);if(!o.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=o.sub(s);return $.mulDivCeil(o,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let o=n.shln(tr);if(i)return e.add(o.div(t));{let s=$.mulDivRoundingUp(o,rt,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<qe||e>Qe)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new ne("18445821805675395072"):new ne("18446744073709551616");return(t&2)!=0&&(n=Ne(n,new ne("18444899583751176192"))),(t&4)!=0&&(n=Ne(n,new ne("18443055278223355904"))),(t&8)!=0&&(n=Ne(n,new ne("18439367220385607680"))),(t&16)!=0&&(n=Ne(n,new ne("18431993317065453568"))),(t&32)!=0&&(n=Ne(n,new ne("18417254355718170624"))),(t&64)!=0&&(n=Ne(n,new ne("18387811781193609216"))),(t&128)!=0&&(n=Ne(n,new ne("18329067761203558400"))),(t&256)!=0&&(n=Ne(n,new ne("18212142134806163456"))),(t&512)!=0&&(n=Ne(n,new ne("17980523815641700352"))),(t&1024)!=0&&(n=Ne(n,new ne("17526086738831433728"))),(t&2048)!=0&&(n=Ne(n,new ne("16651378430235570176"))),(t&4096)!=0&&(n=Ne(n,new ne("15030750278694412288"))),(t&8192)!=0&&(n=Ne(n,new ne("12247334978884435968"))),(t&16384)!=0&&(n=Ne(n,new ne("8131365268886854656"))),(t&32768)!=0&&(n=Ne(n,new ne("3584323654725218816"))),(t&65536)!=0&&(n=Ne(n,new ne("696457651848324352"))),(t&131072)!=0&&(n=Ne(n,new ne("26294789957507116"))),(t&262144)!=0&&(n=Ne(n,new ne("37481735321082"))),e>0&&(n=va.div(n)),n}static getTickFromPrice(e,t,n){return Z.getTickFromSqrtPriceX64(Z.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Kt)||e.lt(St))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ne(t-64),i=Vm(n,32,128),o=new ne("8000000000000000","hex"),s=0,a=new ne(0),u=t>=64?e.shrn(t-63):e.shln(63-t);for(;o.gt(new ne(0))&&s<Wa;){u=u.mul(u);let y=u.shrn(127);u=u.shrn(63+y.toNumber()),a=a.add(o.mul(y)),o=o.shrn(1),s+=1}let c=a.shrn(32),m=i.add(c).mul(new ne(Da)),p=Ro(m.sub(new ne(qa)),64,128).toNumber(),d=Ro(m.add(new ne(Ua)),64,128).toNumber();return p==d?p:Z.getSqrtPriceX64FromTick(d).lte(e)?d:p}},sn=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=Z.getTickFromSqrtPriceX64(Z.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let o=sn.getTickWithPriceAndTickspacing(e,t,n,i),s=Z.getSqrtPriceX64FromTick(o);return Z.sqrtPriceX64ToPrice(s,n,i)}},ue=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");let o=n.ushln(tr),s=t.sub(e);return i?$.mulDivRoundingUp($.mulDivCeil(o,s,t),rt,e):$.mulDivFloor(o,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(me))throw new Error("sqrtPriceX64A must greater than 0");return i?$.mulDivCeil(n,t.sub(e),it):$.mulDivFloor(n,t.sub(e),it)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let o=n.mul(e).mul(t),s=t.sub(e),a=o.div(s);return i?$.mulDivRoundingUp(a,rt,Ko):a.shrn(tr)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),$.mulDivFloor(n,Ko,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ue.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=ue.getLiquidityFromTokenAmountA(e,n,i,!1),a=ue.getLiquidityFromTokenAmountB(t,e,o);return s.lt(a)?s:a}else return ue.getLiquidityFromTokenAmountB(t,n,o)}static getAmountsFromLiquidity(e,t,n,i,o){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:ue.getTokenAmountAFromLiquidity(t,n,i,o),amountB:new ne(0)};if(e.lt(n)){let s=ue.getTokenAmountAFromLiquidity(e,n,i,o),a=ue.getTokenAmountBFromLiquidity(t,e,i,o);return{amountA:s,amountB:a}}else return{amountA:new ne(0),amountB:ue.getTokenAmountBFromLiquidity(t,n,i,o)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,o,s,a){let{amountA:u,amountB:c}=ue.getAmountsFromLiquidity(e,t,n,i,s),l=o?1+a:1-a,m=new ne(new E(u.toString()).mul(l).toFixed(0)),p=new ne(new E(c.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:p}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:o,add:s,epochInfo:a,amountAddFee:u}){var P,A,h,T;let c=Z.priceToSqrtPriceX64(new E(e.price),e.mintA.decimals,e.mintB.decimals),l=Z.getSqrtPriceX64FromTick(t),m=Z.getSqrtPriceX64FromTick(n),p=s?1+o:1-o,d=ue.getAmountsFromLiquidity(c,l,m,i,s),[y,f]=[we(d.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,u),we(d.amountB,(A=e.mintB.extensions)==null?void 0:A.feeConfig,a,u)],[b,g]=[we(new ne(new E(d.amountA.toString()).mul(p).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,u),we(new ne(new E(d.amountB.toString()).mul(p).toFixed(0)),(T=e.mintB.extensions)==null?void 0:T.feeConfig,a,u)];return{liquidity:i,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:Zt(y.expirationTime,f.expirationTime)}}},on=class{static swapCompute(e,t,n,i,o,s,a,u,c,l,m,p,d,y){if(p.eq(me))throw new Error("amountSpecified must not be 0");if(y||(y=s?St.add(rt):Kt.sub(rt)),s){if(y.lt(St))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(y.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(y.gt(Kt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let f=p.gt(me),b={amountSpecifiedRemaining:p,amountCalculated:me,sqrtPriceX64:m,tick:c>d?Math.min(d+ce.tickCount(l)-1,c):d,accounts:[],liquidity:u,feeAmount:new ne(0)},g=d,P=n[d],A=0,h=!s&&P.startTickIndex===b.tick;for(;!b.amountSpecifiedRemaining.eq(me)&&!b.sqrtPriceX64.eq(y);){if(A>10)throw Error("liquidity limit");let T={};T.sqrtPriceStartX64=b.sqrtPriceX64;let I=U.nextInitTick(P,b.tick,l,s,h),B=I||null,x=null;if(!(B!=null&&B.liquidityGross.gtn(0))){let M=Ue.nextInitializedTickArrayStartIndex({tickCurrent:b.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:o},g,s);if(!M.isExist)throw Error("swapCompute LiquidityInsufficient");g=M.nextStartIndex;let{publicKey:F}=be(e,t,g);x=F,P=n[g],B=U.firstInitializedTick(P,s)}T.tickNext=B.tick,T.initialized=B.liquidityGross.gtn(0),d!==g&&x&&(b.accounts.push(x),d=g),T.tickNext<qe?T.tickNext=qe:T.tickNext>Qe&&(T.tickNext=Qe),T.sqrtPriceNextX64=Z.getSqrtPriceX64FromTick(T.tickNext);let K;if(s&&T.sqrtPriceNextX64.lt(y)||!s&&T.sqrtPriceNextX64.gt(y)?K=y:K=T.sqrtPriceNextX64,[b.sqrtPriceX64,T.amountIn,T.amountOut,T.feeAmount]=on.swapStepCompute(b.sqrtPriceX64,K,b.liquidity,b.amountSpecifiedRemaining,a),b.feeAmount=b.feeAmount.add(T.feeAmount),f?(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.sub(T.amountIn.add(T.feeAmount)),b.amountCalculated=b.amountCalculated.sub(T.amountOut)):(b.amountSpecifiedRemaining=b.amountSpecifiedRemaining.add(T.amountOut),b.amountCalculated=b.amountCalculated.add(T.amountIn.add(T.feeAmount))),b.sqrtPriceX64.eq(T.sqrtPriceNextX64)){if(T.initialized){let M=B.liquidityNet;s&&(M=M.mul(_t)),b.liquidity=ue.addDelta(b.liquidity,M)}h=T.tickNext!=b.tick&&!s&&P.startTickIndex===T.tickNext,b.tick=s?T.tickNext-1:T.tickNext}else if(b.sqrtPriceX64!=T.sqrtPriceStartX64){let M=Z.getTickFromSqrtPriceX64(b.sqrtPriceX64);h=M!=b.tick&&!s&&P.startTickIndex===M,b.tick=M}++A}try{let{nextStartIndex:T,isExist:I}=ce.nextInitializedTickArray(b.tick,l,s,i,o);I&&d!==T&&(b.accounts.push(be(e,t,T).publicKey),d=T)}catch{}return{amountCalculated:b.amountCalculated,feeAmount:b.feeAmount,sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:b.accounts}}static swapStepCompute(e,t,n,i,o){let s={sqrtPriceX64Next:new ne(0),amountIn:new ne(0),amountOut:new ne(0),feeAmount:new ne(0)},a=e.gte(t),u=i.gte(me);if(u){let l=$.mulDivFloor(i,ii.sub(new ne(o.toString())),ii);s.amountIn=a?ue.getTokenAmountAFromLiquidity(t,e,n,!0):ue.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Z.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?ue.getTokenAmountBFromLiquidity(t,e,n,!1):ue.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(_t).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=Z.getNextSqrtPriceX64FromOutput(e,n,i.mul(_t),a);let c=t.eq(s.sqrtPriceX64Next);return a?(c&&u||(s.amountIn=ue.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),c&&!u||(s.amountOut=ue.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=c&&u?s.amountIn:ue.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=c&&!u?s.amountOut:ue.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!u&&s.amountOut.gt(i.mul(_t))&&(s.amountOut=i.mul(_t)),u&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=i.sub(s.amountIn):s.feeAmount=$.mulDivCeil(s.amountIn,new ne(o),ii.sub(new ne(o))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var Le=60,rn=512,U=class{static getTickArrayAddressByTick(e,t,n,i){let o=U.getTickArrayStartIndexByTick(n,i),{publicKey:s}=be(e,t,o);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=U.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=Le)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=ce.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*ce.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*Le,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*Le,o=Math.floor(t/i)+512,s=Math.abs(o);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*Le:e+t*Le}static mergeTickArrayBitmap(e){let t=new Em(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,o){let s=Math.floor(i/(n*Le));return[...U.searchLowBitFromStart(e,t,s-1,o,n),...U.searchHightBitFromStart(e,t,s,o,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return U.searchHightBitFromStart(e,t,0,rn,n)}static getAllInitializedTickArrayInfo(e,t,n,i,o){let s=[],a=U.getAllInitializedTickArrayStartIndex(n,i,o);for(let u of a){let{publicKey:c}=be(e,t,u);s.push({tickArrayStartIndex:u,tickArrayAddress:c})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>U.mergeTickArrayBitmap(c)),a=[];for(;n>=-7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n--,a.length===i)break}let u=ce.tickCount(o);return a.map(c=>c*u)}static searchHightBitFromStart(e,t,n,i,o){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(c=>U.mergeTickArrayBitmap(c)),a=[];for(;n<7680;){let c=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[c].testn(l)&&a.push(n),n++,a.length===i)break}let u=ce.tickCount(o);return a.map(c=>c*u)}static checkIsOutOfBoundary(e){return e<qe||e>Qe}static nextInitTick(e,t,n,i,o){if(ce.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(o||(a=a+1);a<Le;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=Le-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<Le;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=Z.getSqrtPriceX64FromTick(t),o=Z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new E(1).div(o),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new E(1).div(t),o=sn.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=Z.getSqrtPriceX64FromTick(o),a=Z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new E(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=Z.getSqrtPriceX64FromTick(t),o=Z.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:o,tickSqrtPriceX64:i}:{tick:t,price:new E(1).div(o),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new E(1).div(t),o=sn.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=Z.getSqrtPriceX64FromTick(o),a=Z.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:o,price:a}:{tick:o,price:new E(1).div(a)}}};var Nk=O([de(8),_("bump"),It("index"),S(""),We("protocolFeeRate"),We("tradeFeeRate"),It("tickSpacing"),q(w(),8,"")]),Fm=O([We("blockTimestamp"),z("sqrtPriceX64"),z("cumulativeTimePriceX64"),q(z(),1,"")]),Lo=O([de(8),Ee("initialized"),S("poolId"),q(Fm,1e3,"observations"),q(z(),5,"")]),vm=O([_("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),z("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),S("tokenMint"),S("tokenVault"),S("creator"),z("rewardGrowthGlobalX64")]),oi=O([de(8),_("bump"),S("ammConfig"),S("creator"),S("mintA"),S("mintB"),S("vaultA"),S("vaultB"),S("observationId"),_("mintDecimalsA"),_("mintDecimalsB"),It("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),Ve("tickCurrent"),It("observationIndex"),It("observationUpdateDuration"),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),z("swapInAmountTokenA"),z("swapOutAmountTokenB"),z("swapInAmountTokenB"),z("swapOutAmountTokenA"),_("status"),q(_(),7,""),q(vm,3,"rewardInfos"),q(w(),16,"tickArrayBitmap"),w("totalFeesTokenA"),w("totalFeesClaimedTokenA"),w("totalFeesTokenB"),w("totalFeesClaimedTokenB"),w("fundFeesTokenA"),w("fundFeesTokenB"),w("startTime"),q(w(),15*4-3,"padding")]),Wm=O([z("growthInsideLastX64"),w("rewardAmountOwed")]),si=O([de(8),_("bump"),S("nftMint"),S("poolId"),Ve("tickLower"),Ve("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(Wm,3,"rewardInfos"),q(w(),8,"")]),Mk=O([de(8),_("bump"),S("poolId"),Ve("tickLowerIndex"),Ve("tickUpperIndex"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),q(z(),3,"rewardGrowthInside"),q(w(),8,"")]),Dm=O([Ve("tick"),Qs("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),q(z(),3,"rewardGrowthsOutsideX64"),q(We(),13,"")]),nr=O([de(8),S("poolId"),Ve("startTickIndex"),q(Dm,Le,"ticks"),_("initializedTickCount"),q(_(),115,"")]),Ya=O([de(329),q(S(),100,"whitelistMints")]),za=O([de(8),S("poolId"),q(q(w(),8),Co,"positiveTickArrayBitmap"),q(q(w(),8),Co,"negativeTickArrayBitmap")]);var ja=ae("Raydium_Clmm"),Pt={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},Ie=class{static createPoolInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=O([z("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:d,startTime:y},g);let P=Buffer.from([...Pt.createPool,...g]);return new At({keys:b,programId:e,data:P})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:i,mintA:o,mintB:s,ammConfigId:a,initialPriceX64:u,startTime:c,forerunCreate:l}=e,m=De({fromPublicKey:i,programId:n}),[p,d]=[new v(o.address),new v(s.address)],y=[An.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(Lo.span),space:Lo.span,programId:n})],{publicKey:f}=Ea(n,a,p,d),{publicKey:b}=So(n,f,p),{publicKey:g}=So(n,f,d);return y.push(this.createPoolInstruction(n,f,i,a,m.publicKey,p,b,new v(o.programId||Fe),d,g,new v(s.programId||Fe),ut(n,f).publicKey,u,c)),{signers:[],instructions:y,instructionTypes:[V.CreateAccount,V.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:b,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A,h,T,I,B,x,K,M){let F=O([Ve("tickLowerIndex"),Ve("tickUpperIndex"),Ve("tickArrayLowerStartIndex"),Ve("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ee("withMetadata"),_("optionBaseFlag"),Ee("baseFlag")]),j=[...M?[{pubkey:M,isSigner:!1,isWritable:!0}]:[]],W=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:Fe,isSigner:!1,isWritable:!1},{pubkey:Qa,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...j],H=Buffer.alloc(F.span);F.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:T,liquidity:I,amountMaxA:B,amountMaxB:x,withMetadata:K==="create",baseFlag:!1,optionBaseFlag:0},H);let ee=Buffer.from([...Pt.openPosition,...H]);return new At({keys:W,programId:e,data:ee})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=Oo.generate();m.push(x),y=x.publicKey}let f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=be(p,d,f),{publicKey:P}=be(p,d,b),{publicKey:A}=fe(n.wallet,y,Fe),{publicKey:h}=ni(y),{publicKey:T}=at(p,y),{publicKey:I}=nn(p,d,i,o),B=this.openPositionFromLiquidityInstruction(p,n.feePayer,d,n.wallet,y,A,h,I,g,P,T,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,o,f,b,s,a,u,c);return{signers:m,instructions:[B],instructionTypes:[V.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:T,protocolPosition:I}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:c,getEphemeralSigners:l}){let m=[],[p,d]=[new v(e.programId),new v(e.id)],y;if(l)y=new v((await l(1))[0]);else{let x=Oo.generate();m.push(x),y=x.publicKey}let f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=be(p,d,f),{publicKey:P}=be(p,d,b),{publicKey:A}=fe(n.wallet,y,Fe),{publicKey:h}=ni(y),{publicKey:T}=at(p,y),{publicKey:I}=nn(p,d,i,o),B=this.openPositionFromBaseInstruction(p,n.feePayer,d,n.wallet,y,A,h,I,g,P,T,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),i,o,f,b,c,s,a,u,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ut(p,d).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:T,protocolPosition:I},instructions:[B],signers:m,instructionTypes:[V.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A,h,T,I,B,x,K,M){let F=O([Ve("tickLowerIndex"),Ve("tickUpperIndex"),Ve("tickArrayLowerStartIndex"),Ve("tickArrayUpperStartIndex"),z("liquidity"),w("amountMaxA"),w("amountMaxB"),Ee("withMetadata"),_("optionBaseFlag"),Ee("baseFlag")]),j=[...M?[{pubkey:M,isSigner:!1,isWritable:!0}]:[]],W=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:Fe,isSigner:!1,isWritable:!1},{pubkey:Qa,isSigner:!1,isWritable:!1},{pubkey:dn,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...j],H=Buffer.alloc(F.span);F.encode({tickLowerIndex:P,tickUpperIndex:A,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:T,liquidity:new Ha(0),amountMaxA:B==="MintA"?x:K,amountMaxB:B==="MintA"?K:x,withMetadata:I==="create",baseFlag:B==="MintA",optionBaseFlag:1},H);let ee=Buffer.from([...Pt.openPosition,...H]);return new At({keys:W,programId:e,data:ee})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,liquidity:s,amountMaxA:a,amountMaxB:u,withMetadata:c,getEphemeralSigners:l}){let m,p=[];if(l)m=new v((await l(1))[0]);else{let x=Oo.generate();p.push(x),m=x.publicKey}let[d,y]=[new v(e.programId),new v(e.id)],f=U.getTickArrayStartIndexByTick(i,e.config.tickSpacing),b=U.getTickArrayStartIndexByTick(o,e.config.tickSpacing),{publicKey:g}=be(d,y,f),{publicKey:P}=be(d,y,b),{publicKey:A}=fe(n.wallet,m,Fe),{publicKey:h}=ni(m),{publicKey:T}=at(d,m),{publicKey:I}=nn(d,y,i,o),B=this.openPositionFromLiquidityInstruction(d,n.wallet,y,n.wallet,m,A,h,I,g,P,T,n.tokenAccountA,n.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(t.mintA.address),new v(t.mintB.address),i,o,f,b,s,a,u,c,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?ut(d,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:P,positionNftAccount:A,metadataAccount:h,personalPosition:T,protocolPosition:I},instructions:[B],signers:p,instructionTypes:[V.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,o){let s=O([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:Fe,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({},u);let c=Buffer.from([...Pt.closePosition,...u]);return new At({keys:a,programId:e,data:c})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i}){let o=new v(e.programId),{publicKey:s}=fe(n.wallet,i.nftMint,Fe),{publicKey:a}=at(o,i.nftMint),u=[];return u.push(this.closePositionInstruction(o,n.wallet,i.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:u,instructionTypes:[V.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P){let A=O([z("liquidity"),w("amountMaxA"),w("amountMaxB"),_("optionBaseFlag"),Ee("baseFlag")]),h=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:Fe,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],I=Buffer.alloc(A.span);A.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},I);let B=Buffer.from([...Pt.increaseLiquidity,...I]);return new At({keys:T,programId:e,data:B})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMaxA:s,amountMaxB:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=be(u,c,l),{publicKey:d}=be(u,c,m),{publicKey:y}=fe(i.wallet,n.nftMint,Fe),{publicKey:f}=at(u,n.nftMint),{publicKey:b}=nn(u,c,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(u,i.wallet,y,f,c,b,p,d,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ut(u,c).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:y,personalPosition:f,protocolPosition:b},signers:[],instructions:[g],instructionTypes:[V.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:o,baseAmount:s,otherAmountMax:a}){let[u,c]=[new v(e.programId),new v(e.id)],l=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=be(u,c,l),{publicKey:d}=be(u,c,m),{publicKey:y}=fe(i.wallet,n.nftMint,Fe),{publicKey:f}=at(u,n.nftMint),{publicKey:b}=nn(u,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:d,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,f,c,b,p,d,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),o,s,a,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?ut(u,c).publicKey:void 0)],signers:[],instructionTypes:[V.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P){let A=O([z("liquidity"),w("amountMaxA"),w("amountMaxB"),_("optionBaseFlag"),Ee("baseFlag")]),h=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:Fe,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...h],I=Buffer.alloc(A.span);A.encode({liquidity:new Ha(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},I);let B=Buffer.from([...Pt.increaseLiquidity,...I]);return new At({keys:T,programId:e,data:B})}static decreaseLiquidityInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A){let h=O([z("liquidity"),w("amountMinA"),w("amountMinB")]),T=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(K=>[{pubkey:K.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.rewardMint,isSigner:!1,isWritable:!1}]).flat()],I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Fe,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...T],B=Buffer.alloc(h.span);h.encode({liquidity:b,amountMinA:g,amountMinB:P},B);let x=Buffer.from([...Pt.decreaseLiquidity,...B]);return new At({keys:I,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:o,amountMinA:s,amountMinB:a,programId:u}){let[c,l]=[new v(e.programId),new v(e.id)],m=U.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=U.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=be(c,l,m),{publicKey:y}=be(c,l,p),{publicKey:f}=fe(i.wallet,n.nftMint,u),{publicKey:b}=at(c,n.nftMint),{publicKey:g}=nn(c,l,n.tickLower,n.tickUpper),P=[];for(let h=0;h<e.rewardDefaultInfos.length;h++)P.push({poolRewardVault:new v(t.rewardInfos[h].vault),ownerRewardVault:i.rewardAccounts[h],rewardMint:new v(e.rewardDefaultInfos[h].mint.address)});let A=[];return A.push(this.decreaseLiquidityInstruction(c,i.wallet,f,b,l,g,d,y,i.tokenAccountA,i.tokenAccountB,new v(t.vault.A),new v(t.vault.B),new v(e.mintA.address),new v(e.mintB.address),P,o,s,a,Ue.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,p])?ut(c,l).publicKey:void 0)),{address:{tickArrayLower:d,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:A,instructionTypes:[V.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g){let P=O([w("amount"),w("otherAmountThreshold"),z("sqrtPriceLimitX64"),Ee("isBaseInput")]),A=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(B=>({pubkey:B,isSigner:!1,isWritable:!0}))],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:Fe,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...A],T=Buffer.alloc(P.span);P.encode({amount:d,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},T);let I=Buffer.from([...Pt.swap,...T]);return new At({keys:h,programId:e,data:I})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,inputMint:i,amountIn:o,amountOutMin:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new v(e.programId),new v(e.id)],[m,p]=[new v(t.vault.A),new v(t.vault.B)],[d,y]=[new v(e.mintA.address),new v(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new v(e.config.id),f?n.tokenAccountA:n.tokenAccountB,f?n.tokenAccountB:n.tokenAccountA,f?m:p,f?p:m,f?d:y,f?y:d,u,m,o,s,a,!0,ut(c,l).publicKey)];return{signers:[],instructions:b,instructionTypes:[V.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,p){let d=O([w("openTime"),w("endTime"),z("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({openTime:X(l),endTime:X(m),emissionsPerSecondX64:p},f);let b=Buffer.from([...Pt.initReward,...f]);return new At({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new v(e.programId),new v(e.id)],a=Fa(o,s,i.mint).publicKey,u=er(o).publicKey,c=[this.initRewardInstruction(o,n.wallet,s,u,new v(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:u},signers:[],instructions:c,instructionTypes:[V.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,o,s,a,u,c,l,m,p){let d=O([_("rewardIndex"),z("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:Fe,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0}],f=Buffer.alloc(d.span);d.encode({rewardIndex:c,emissionsPerSecondX64:p,openTime:X(l),endTime:X(m)},f);let b=Buffer.from([...Pt.setRewardEmissions,...f]);return new At({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[o,s]=[new v(e.programId),new v(e.id)],a,u,c;for(let p=0;p<e.rewardDefaultInfos.length;p++)e.rewardDefaultInfos[p].mint.address===i.mint.toString()&&(a=p,u=new v(t.rewardInfos[p].vault),c=new v(t.rewardInfos[p].mint.address));(a===void 0||u===void 0)&&ja.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=er(o).publicKey,m=[this.setRewardInstruction(o,n.wallet,s,l,new v(e.config.id),n.tokenAccount,u,c,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:u,operationId:l},signers:[],instructions:m,instructionTypes:[V.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,o,s,a){let u=O([_("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Fe,isSigner:!1,isWritable:!1},{pubkey:Qt,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1}],l=Buffer.alloc(u.span);u.encode({rewardIndex:a},l);let m=Buffer.from([...Pt.collectReward,...l]);return new At({keys:c,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[o,s]=[new v(e.programId),new v(e.id)],a,u;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,u=new v(t.rewardInfos[l].vault));(a===void 0||u===void 0)&&ja.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRewardInstruction(o,n.wallet,s,n.tokenAccount,u,i,a)];return{address:{rewardVault:u},signers:[],instructions:c,instructionTypes:[V.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:i,amountOut:o,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:u}){let[c,l]=[new v(e.programId),new v(e.id)],[m,p]=[new v(t.vault.A),new v(t.vault.B)],[d,y]=[new v(e.mintA.address),new v(e.mintB.address)],f=e.mintA.address===i.toString(),b=[this.swapInstruction(c,n.wallet,l,new v(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?p:m,f?m:p,f?d:y,f?y:d,u,m,o,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[V.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as Xm}from"@solana/web3.js";import{PublicKey as Um}from"@solana/web3.js";import Za from"bn.js";var $a=new Za(25),Ja=new Za(1e4),qm={4:3,5:3};var Gm=ae("Raydium_liquidity_serum");function eu({programId:r,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let o=t.concat(Buffer.from([n]),Buffer.alloc(7));i=Um.createProgramAddressSync(o,r)}catch(o){if(o instanceof TypeError)throw o;n++;continue}return{publicKey:i,nonce:n}}throw Gm.logWithError("unable to find a viable program address nonce","params",{programId:r,marketId:e}),new Error("unable to find a viable program address nonce")}import or from"bn.js";function Mo({programId:r}){let{publicKey:e}=ie([Buffer.from("amm_config_account_seed","utf-8")],r);return e}function an({name:r,programId:e,marketId:t}){let{publicKey:n}=ie([e.toBuffer(),t.toBuffer(),Buffer.from(r,"utf-8")],e);return n}function zm({programId:r,marketId:e}){let{publicKey:t}=ie([r.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],r);return t}function Ym({programId:r}){return ie([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],r)}function tu({version:r,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:o,quoteDecimals:s,programId:a,marketProgramId:u}){let c=an({name:"amm_associated_seed",programId:a,marketId:t}),l=an({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:p}=Ym({programId:a}),d=an({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=an({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=an({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=zm({programId:a,marketId:t}),g=an({name:"target_associated_seed",programId:a,marketId:t}),P=an({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:A}=eu({programId:u,marketId:t});return{id:c,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:o,quoteDecimals:s,lpDecimals:o,version:r,programId:a,authority:m,nonce:p,baseVault:d,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:P,marketVersion:e,marketProgramId:u,marketId:t,marketAuthority:A,lookupTableAccount:Xm.default,configId:Mo({programId:a})}}var No;async function lh({connection:r,poolKeysList:e,config:t}){No||(No=new gn({connection:r}),await No.initStableModelLayout());let n=e.map(s=>Oa({poolKeys:s}));return(await Rs(r,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=Ls(s,"GetPoolData"),u=new or(Ot(a,"status")),c=Number(Ot(a,"coin_decimals")),l=Number(Ot(a,"pc_decimals")),m=Number(Ot(a,"lp_decimals")),p=new or(Ot(a,"pool_coin_amount")),d=new or(Ot(a,"pool_pc_amount")),y=new or(Ot(a,"pool_lp_supply")),f="0";try{f=Ot(a,"pool_open_time")}catch{}return{status:u,baseDecimals:c,quoteDecimals:l,lpDecimals:m,baseReserve:p,quoteReserve:d,lpSupply:y,startTime:new or(f)}})}import ot from"bn.js";var sr=class extends Te{constructor(t){super(t);this.stableLayout=new gn({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:i,baseIn:o}){let s=new ot(new E(n).mul(10**t[o?"mintA":"mintB"].decimals).toFixed(0)),a=ha(t[o?"mintB":"mintA"]),[u,c]=[new ot(new E(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new ot(new E(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new ot(new E(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,E.ROUND_DOWN));this.logDebug("baseReserve:",u.toString(),"quoteReserve:",c.toString()),this.logDebug("tokenIn:",o?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",o?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`,"baseReserve",u.toString(),"quoteReserve",c.toString());let m=o?"base":"quote";this.logDebug("input side:",m);let p=ze;s.isZero()||(p=m==="base"?Lr(s.mul(c),u):Lr(s.mul(u),c)),this.logDebug("amountRaw:",p.toString(),"lpAmount:",l.toString());let d=Lr(s.mul(l),m==="base"?u:c);this.logDebug("liquidity:",d.toString());let f=new tt(new ot(1)).add(i).mul(p).quotient,b=new xe(a,p),g=new xe(a,f);return this.logDebug("anotherAmount:",b.toFixed(),"maxAnotherAmount:",g.toFixed()),{anotherAmount:b,maxAnotherAmount:g,liquidity:d}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,amountInA:i,amountInB:o,fixedSide:s,config:a,txVersion:u,computeBudgetConfig:c}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",o),(i.isZero()||o.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:o.toFixed()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:p}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},a),[d,y]=[i.token,o.token],f=await l.getCreatedTokenAccount({mint:d.mint,associatedOnly:!1}),b=await l.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1});!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let g=await l.getCreatedTokenAccount({mint:new et(n.lpMint.address)}),P=[d,y],A=[f,b],h=[i.raw,o.raw],T=i.token.mint.toBase58()===n.mintA.address?"base":"quote",I="base";["quote","base"].includes(T)||this.logAndCreateError("invalid fixedSide","fixedSide",s),T==="quote"?(P.reverse(),A.reverse(),h.reverse(),I=s==="a"?"quote":"base"):T==="base"&&(I=s==="a"?"base":"quote");let[B,x]=P,[K,M]=A,[F,j]=h,W=await this.getAmmPoolKeys(n.id),H=this.createTxBuilder(),Et=await l.handleTokenAccount({side:"in",amount:F,mint:B.mint,tokenAccount:K,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:ee}=Et,oe=Pe(Et,["tokenAccount"]);H.addInstruction(oe);let wr=await l.handleTokenAccount({side:"in",amount:j,mint:x.mint,tokenAccount:M,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:dt}=wr,Tn=Pe(wr,["tokenAccount"]);H.addInstruction(Tn);let In=await l.handleTokenAccount({side:"out",amount:0,mint:new et(n.lpMint.address),tokenAccount:g,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:bi}=In,gi=Pe(In,["tokenAccount"]);return H.addInstruction(gi),H.addInstruction({instructions:[Ra({poolInfo:n,poolKeys:W,userKeys:{baseTokenAccount:ee,quoteTokenAccount:dt,lpTokenAccount:bi,owner:this.scope.ownerPubKey},baseAmountIn:F,quoteAmountIn:j,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?V.AmmV5AddLiquidity:V.AmmV4AddLiquidity],lookupTableAddress:W.lookupTableAccount?[W.lookupTableAccount]:[]}),H.addCustomComputeBudget(c),u===0&&await H.buildV0(),H.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,amountIn:i,config:o,txVersion:s,computeBudgetConfig:a}=t,u=await this.getAmmPoolKeys(n.id),[c,l,m]=[new et(n.mintA.address),new et(n.mintB.address),new et(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.toString());let{account:p}=this.scope,d=await p.getCreatedTokenAccount({mint:m,associatedOnly:!1});d||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",p.tokenAccounts);let y=await p.getCreatedTokenAccount({mint:c}),f=await p.getCreatedTokenAccount({mint:l}),b=this.createTxBuilder(),{bypassAssociatedCheck:g,checkCreateATAOwner:P}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),B=await p.handleTokenAccount({side:"out",amount:0,mint:c,tokenAccount:y,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:A}=B,h=Pe(B,["tokenAccount"]);b.addInstruction(h);let x=await p.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:g,checkCreateATAOwner:P}),{tokenAccount:T}=x,I=Pe(x,["tokenAccount"]);return b.addInstruction(I),b.addInstruction({instructions:[Io({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:d,baseTokenAccount:A,quoteTokenAccount:T,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?V.AmmV5RemoveLiquidity:V.AmmV4RemoveLiquidity]}),b.addCustomComputeBudget(a),s===0?await b.buildV0():b.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:o,farmInfo:s,userFarmLpAmount:a,base:u,computeBudgetConfig:c,payer:l,tokenProgram:m=ai,checkCreateATAOwner:p=!0,getEphemeralSigners:d,txVersion:y}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let f=this.createTxBuilder();f.addCustomComputeBudget(c);let b={};for(let ee of this.scope.account.tokenAccountRawInfos)(b[ee.accountInfo.mint.toString()]===void 0||fe(this.scope.ownerPubKey,ee.accountInfo.mint,ai).publicKey.equals(ee.pubkey))&&(b[ee.accountInfo.mint.toString()]=ee.pubkey);let g=b[t.lpMint.address];if(g===void 0)throw Error("find lp account error in trade accounts");let P=i.add(a!=null?a:new ot(0)),A=t.mintA.address===he.WSOL.mint.toString(),h=t.mintB.address===he.WSOL.mint.toString(),{account:T,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:ai,mint:new et(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:A?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!0,checkCreateATAOwner:p});if(f.addInstruction(I||{}),T===void 0)throw new Error("base token account not found");let{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:ai,mint:new et(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!0,checkCreateATAOwner:p});if(f.addInstruction(x||{}),B===void 0)throw new Error("quote token account not found");if(b[t.mintA.address]=T,b[t.mintB.address]=B,s!==void 0&&!(a!=null&&a.isZero())){let ee=[];for(let Et of s.rewardInfos){let wr=Et.mint.address===he.WSOL.mint.toString();if(b[Et.mint.address])ee.push(b[Et.mint.address]);else{let{account:In,instructionParams:Ho}=await this.scope.account.getOrCreateTokenAccount({mint:new et(Et.mint.address),tokenProgram:m,owner:this.scope.ownerPubKey,skipCloseAccount:!wr,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});In||this.logAndCreateError("farm reward account not found:",Et.mint.address),Ho&&f.addInstruction(Ho),ee.push(In)}}let oe=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],dt={amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:oe,lpAccount:g,rewardAccounts:ee},Tn=wt[s.programId],bi=Tn===6?Qn(dt):Tn===5?Hn(dt):jn(dt),gi={3:V.FarmV3Withdraw,5:V.FarmV5Withdraw,6:V.FarmV6Withdraw};f.addInstruction({instructions:[bi],instructionTypes:[gi[Tn]]})}let K=await this.getAmmPoolKeys(t.id),M=Io({poolInfo:t,poolKeys:K,userKeys:{lpTokenAccount:g,baseTokenAccount:T,quoteTokenAccount:B,owner:this.scope.ownerPubKey},amountIn:P});f.addInstruction({instructions:[M],instructionTypes:[t.pooltype.includes("StablePool")?V.AmmV5RemoveLiquidity:V.AmmV4RemoveLiquidity],lookupTableAddress:K.lookupTableAccount?[K.lookupTableAccount]:[]});let[F,j]=t.mintA.address===n.mintA.address?[T,B]:[B,T],W=await this.scope.clmm.getClmmPoolKeys(t.id),H=await Ie.openPositionFromBaseInstructions(D(N({poolInfo:n,poolKeys:W,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:F,tokenAccountB:j},withMetadata:"create"},o),{base:u,getEphemeralSigners:d}));return f.addInstruction({instructions:[...H.instructions],signers:H.signers,instructionTypes:[...H.instructionTypes],lookupTableAddress:W.lookupTableAccount?[W.lookupTableAccount]:[]}),y===0?f.sizeCheckBuildV0():f.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:i,quoteMintInfo:o,baseAmount:s,quoteAmount:a,startTime:u,ownerInfo:c,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:p,txVersion:d,feeDestinationId:y,computeBudgetConfig:f}){var j;let b=c.feePayer||((j=this.scope.owner)==null?void 0:j.publicKey),g=c.useSOLBalance&&i.mint.equals(nu),P=c.useSOLBalance&&o.mint.equals(nu),A=this.createTxBuilder(),{account:h,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:g?{payer:b,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:l,checkCreateATAOwner:m});A.addInstruction(T||{});let{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:P?{payer:b,amount:a}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:l,checkCreateATAOwner:m});if(A.addInstruction(B||{}),h===void 0||I===void 0)throw Error("you don't has some token account");let x=tu({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:o.mint,baseDecimals:i.decimals,quoteDecimals:o.decimals,programId:t,marketProgramId:n.programId}),K={programId:t,ammId:x.id,ammAuthority:x.authority,ammOpenOrders:x.openOrders,lpMint:x.lpMint,coinMint:x.baseMint,pcMint:x.quoteMint,coinVault:x.baseVault,pcVault:x.quoteVault,withdrawQueue:x.withdrawQueue,ammTargetOrders:x.targetOrders,poolTempLp:x.lpVault,marketProgramId:x.marketProgramId,marketId:x.marketId,ammConfigId:x.configId,feeDestinationId:y},{instruction:M,instructionType:F}=La(D(N({},K),{userWallet:this.scope.ownerPubKey,userCoinVault:h,userPcVault:I,userLpVault:fe(this.scope.ownerPubKey,x.lpMint,p).publicKey,nonce:x.nonce,openTime:u,coinAmount:s,pcAmount:a}));return A.addInstruction({instructions:[M],instructionTypes:[F]}),A.addCustomComputeBudget(f),A.versionBuild({txVersion:d,extInfo:{address:K}})}async getCreatePoolFee({programId:t}){let n=Mo({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Ta.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:o,slippage:s}){if(i!==t.mintA.address&&i!==t.mintA.address)throw new Error("toke not match");if(o!==t.mintB.address&&o!==t.mintB.address)throw new Error("toke not match");let{baseReserve:a,quoteReserve:u}=t,c=[a,u],l=i==t.mintA.address?"base":"quote";l==="quote"&&c.reverse();let[m,p]=c,d=t.programId===Fs.toBase58(),y;if(d)y=new E(p.toString()).div(m.toString());else{let x=Ka(this.stableLayout.stableModelData,a.toNumber(),u.toNumber(),!1);l==="quote"?y=new E(1e6).div(x*1e6):y=new E(x*1e6).div(1e6)}let f=n,b=new ot(0),g=new ot(0);if(!f.isZero())if(d){g=vn(f.mul($a),Ja);let x=f.sub(g),K=m.add(x);b=p.mul(x).div(K)}else{g=f.mul(new ot(2)).div(new ot(1e4));let x=f.sub(g);l==="quote"?b=new ot(Ba(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber())):b=new ot(Sa(this.stableLayout.stableModelData,u.toNumber(),a.toNumber(),x.toNumber()))}let P=new ot(new E(b.toString()).mul(1-s).toFixed(0)),A=b,h=P,T=new E(b.toString()).div(new E(f.sub(g).toString()).toFixed(0));!f.isZero()&&!b.isZero()&&(T=new E(b.toString()).div(f.sub(g).toString()));let I=y.sub(T).div(y).mul(100);return{amountOut:A,minAmountOut:h,currentPrice:y,executionPrice:T,priceImpact:I,fee:g}}async swap({poolInfo:t,amountIn:n,amountOut:i,inputMint:o,fixedSide:s,txVersion:a,computeBudgetConfig:u}){let c=this.createTxBuilder(),[l,m]=o===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],p=await this.scope.account.getCreatedTokenAccount({mint:new et(l.address),programId:new et(l.programId),associatedOnly:!1}),d=await this.scope.account.getCreatedTokenAccount({mint:new et(m.address),programId:new et(m.programId),associatedOnly:!1}),h=await this.scope.account.handleTokenAccount({side:"in",amount:n,mint:new et(l.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:y}=h,f=Pe(h,["tokenAccount"]);c.addInstruction(f);let T=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new et(m.address),tokenAccount:d,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:b}=T,g=Pe(T,["tokenAccount"]);c.addInstruction(g);let P=await this.getAmmPoolKeys(t.id),A=4;return t.pooltype.includes("StablePool")&&(A=5),c.addInstruction({instructions:[ei({version:A,poolKeys:P,userKeys:{tokenAccountIn:y,tokenAccountOut:b,owner:this.scope.ownerPubKey},amountIn:n,amountOut:i,fixedSide:s})],instructionTypes:[A===4?V.AmmV4SwapBaseIn:V.AmmV5SwapBaseIn]}),c.addCustomComputeBudget(u),c.versionBuild({txVersion:a})}};import{PublicKey as se}from"@solana/web3.js";import ct from"bn.js";var ar=class extends Te{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var P;let{programId:t,owner:n=((P=this.scope.owner)==null?void 0:P.publicKey)||se.default,mint1:i,mint2:o,ammConfig:s,initialPrice:a,startTime:u,computeBudgetConfig:c,forerunCreate:l,txVersion:m}=e,p=this.createTxBuilder(),[d,y,f]=new ct(new se(i.address).toBuffer()).gt(new ct(new se(o.address).toBuffer()))?[o,i,new E(1).div(a)]:[i,o,a],b=Z.priceToSqrtPriceX64(f,d.decimals,y.decimals),g=await Ie.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:d,mintB:y,ammConfigId:s.id,initialPriceX64:b,startTime:u,forerunCreate:l});return p.addInstruction(g),p.addCustomComputeBudget(c),p.versionBuild({txVersion:m,extInfo:{address:D(N({},g.address),{programId:t.toString(),id:g.address.poolId.toString(),mintA:d,mintB:y,openTime:u.toString(),vault:{A:g.address.mintAVault.toString(),B:g.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:N({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:g.address.poolId.toString(),mintA:d,mintB:y,feeRate:s.tradeFeeRate,openTime:u.toString(),programId:t.toString(),price:f.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}},Ga),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:p,computeBudgetConfig:d,txVersion:y}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),b=null,g=null,P=n.useSOLBalance&&e.mintA.address===te.toString(),A=n.useSOLBalance&&e.mintB.address===te.toString(),[h,T]=s==="MintA"?[a,u]:[u,a],{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new se(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||h.isZero()?{payer:this.scope.ownerPubKey,amount:h}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});I&&(b=I),f.addInstruction(B||{});let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new se(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||T.isZero()?{payer:this.scope.ownerPubKey,amount:T}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:A?!1:c,checkCreateATAOwner:l});x&&(g=x),f.addInstruction(K||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let M=t||await this.getClmmPoolKeys(e.id),F=await Ie.openPositionFromBaseInstructions({poolInfo:e,poolKeys:M,ownerInfo:D(N({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:i,tickUpper:o,base:s,baseAmount:a,otherAmountMax:u,withMetadata:m,getEphemeralSigners:p});return f.addInstruction(F),f.addCustomComputeBudget(d),f.versionBuild({txVersion:y,extInfo:F.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:i,amountMaxB:o,tickLower:s,tickUpper:a,liquidity:u,associatedOnly:c=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:p,getEphemeralSigners:d}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let y=this.createTxBuilder(),f=null,b=null,g=n.useSOLBalance&&e.mintA.address===te.toBase58(),P=n.useSOLBalance&&e.mintB.address===te.toBase58(),{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new se(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:c,checkCreateATAOwner:l});A&&(f=A),y.addInstruction(h||{});let{account:T,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new se(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:P?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:c,checkCreateATAOwner:l});T&&(b=T),y.addInstruction(I||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let B=t||await this.getClmmPoolKeys(e.id),x=await Ie.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:B,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:u,amountMaxA:i,amountMaxB:o,withMetadata:m,getEphemeralSigners:d});return y.addInstruction(x),y.versionBuild({txVersion:p,extInfo:{address:x.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,ownerPosition:n,amountMaxA:i,amountMaxB:o,liquidity:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,p=this.createTxBuilder(),d,y,f=a.useSOLBalance&&t.mintA.address===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new se(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(d=g),p.addInstruction(P||{});let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new se(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),p.addInstruction(h||{}),!d&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=await this.getClmmPoolKeys(t.id),I=Ie.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:T,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:d,tokenAccountB:y},liquidity:s,amountMaxA:i,amountMaxB:o});return p.addInstruction(I),p.addCustomComputeBudget(l),p.versionBuild({txVersion:m,extInfo:{address:I.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:i,baseAmount:o,otherAmountMax:s,ownerInfo:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e,p=this.createTxBuilder(),d,y,f=a.useSOLBalance&&t.mintA.address===te.toString(),b=a.useSOLBalance&&t.mintB.address===te.toString(),{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new se(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:i==="MintA"?o:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:c});g&&(d=g),p.addInstruction(P||{});let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new se(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:o}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:c});A&&(y=A),p.addInstruction(h||{}),!d&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=await this.getClmmPoolKeys(t.id),I=Ie.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:T,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:d,tokenAccountB:y},base:i,baseAmount:o,otherAmountMax:s});return p.addInstruction(I),p.addCustomComputeBudget(l),p.versionBuild({txVersion:m,extInfo:{address:I.address}})}async decreaseLiquidity(e){let{poolInfo:t,ownerPosition:n,ownerInfo:i,amountMinA:o,amountMinB:s,liquidity:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:l,txVersion:m}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let p=this.createTxBuilder(),d=i.useSOLBalance&&t.mintA.address===te.toString(),y=i.useSOLBalance&&t.mintB.address===te.toString(),f,b,{account:g,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new se(t.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!d,associatedOnly:d?!1:u,checkCreateATAOwner:c});f=g,P&&p.addInstruction(P);let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new se(t.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:c});b=A,h&&p.addInstruction(h);let T=[];for(let K of t.rewardDefaultInfos){let M=i.useSOLBalance&&K.mint.address===te.toString(),F;if(K.mint.address===t.mintA.address)F=f;else if(K.mint.address===t.mintB.address)F=b;else{let{account:j,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(K.mint.programId),mint:new se(K.mint.address),notUseTokenAccount:M,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!M,associatedOnly:M?!1:u,checkCreateATAOwner:c});F=j,W&&p.addInstruction(W)}T.push(F)}!f&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let I=await this.getClmmPoolKeys(t.id),B=await Ie.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:T},liquidity:a,amountMinA:o,amountMinB:s});p.addInstruction({instructions:B.instructions,instructionTypes:[V.ClmmDecreasePosition]});let x=N({},B.address);if(i.closePosition){let K=await Ie.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});p.addInstruction({endInstructions:K.instructions,endInstructionTypes:K.instructionTypes}),x=N(N({},x),K.address)}return p.addCustomComputeBudget(l),p.versionBuild({txVersion:m,extInfo:{address:x}})}async closePosition({poolInfo:e,ownerPosition:t,txVersion:n}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let i=this.createTxBuilder(),o=await this.getClmmPoolKeys(e.id),s=Ie.closePositionInstructions({poolInfo:e,poolKeys:o,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:t});return i.addInstruction(s).versionBuild({txVersion:n,extInfo:{address:s.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.address.toString()===te.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(n.mint.address),mint:new se(n.mint.address),notUseTokenAccount:!!c,skipCloseAccount:!c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ct(new E(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:o});p&&u.addInstruction(p),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),y=Ie.initRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new se(n.mint.programId),mint:new se(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:$.decimalToX64(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){for(let l of n)l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let u=this.createTxBuilder(),c={};for(let l of n){let m=t.useSOLBalance&&l.mint.address===te.toString(),p=l.perSecond.mul(l.endTime-l.openTime),{account:d,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(l.mint.programId),mint:new se(l.mint.address),notUseTokenAccount:!!m,skipCloseAccount:!m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ct(new E(p.toFixed(0)).gte(p)?p.toFixed(0):p.add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});y&&u.addInstruction(y),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),b=Ie.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{programId:new se(l.mint.programId),mint:new se(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:$.decimalToX64(l.perSecond)}});c=N(N({},c),b.address),u.addInstruction(b)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(),c=t.useSOLBalance&&n.mint.equals(te),{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:c,owner:this.scope.ownerPubKey,createInfo:c?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ct(new E(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:c?!1:i,checkCreateATAOwner:o});m&&u.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),d=Ie.setRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:$.decimalToX64(n.perSecond)}});return u.addInstruction(d),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:d.address}})}async setRewards({poolInfo:e,ownerInfo:t,rewardInfos:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,computeBudgetConfig:s,txVersion:a}){let u=this.createTxBuilder(),c={};for(let l of n){l.endTime<=l.openTime&&this.logAndCreateError("reward time error","rewardInfo",l);let m=t.useSOLBalance&&l.mint.address===te.toString(),{account:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(l.mint.programId),mint:new se(l.mint.address),notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ct(new E(l.perSecond.sub(l.endTime-l.openTime).toFixed(0)).gte(l.perSecond.sub(l.endTime-l.openTime))?l.perSecond.sub(l.endTime-l.openTime).toFixed(0):l.perSecond.sub(l.endTime-l.openTime).add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:o});d&&u.addInstruction(d),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),f=Ie.setRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{mint:new se(l.mint.address),openTime:l.openTime,endTime:l.endTime,emissionsPerSecondX64:$.decimalToX64(l.perSecond)}});u.addInstruction(f),c=N(N({},c),f.address)}return u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:c}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=e.rewardDefaultInfos.find(d=>d.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),u=t.useSOLBalance&&n.equals(te),{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(s.mint.programId),mint:n,notUseTokenAccount:u,owner:this.scope.ownerPubKey,skipCloseAccount:!u,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:u?!1:i,checkCreateATAOwner:o});l&&a.addInstruction(l),c||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),p=Ie.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:c},rewardMint:n});return a.addInstruction(p),a.build({address:p.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1}){let s=this.createTxBuilder(),a={};for(let u of n){let c=e.rewardDefaultInfos.find(f=>f.mint.address===u.toString());if(!c){this.logAndCreateError("reward mint error","not found reward mint",u);continue}let l=t.useSOLBalance&&u.equals(te),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(c.mint.programId),mint:u,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:i,checkCreateATAOwner:o});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),p&&s.addInstruction(p);let d=await this.getClmmPoolKeys(e.id),y=Ie.collectRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:u});s.addInstruction(y),a=N(N({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,inputMint:t,amountIn:n,amountOutMin:i,priceLimit:o,ownerInfo:s,remainingAccounts:a,associatedOnly:u=!0,checkCreateATAOwner:c=!1,txVersion:l}){let m=this.createTxBuilder(),p=s.useSOLBalance&&e.mintA.address===te.toBase58(),d=s.useSOLBalance&&e.mintB.address===te.toBase58(),y;!o||o.equals(new E(0))?y=t.toString()===e.mintA.address?St.add(new ct(1)):Kt.sub(new ct(1)):y=Z.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let f;if(!f){let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new se(e.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:u,checkCreateATAOwner:c});f=P,A&&m.addInstruction(A)}let b;if(!b){let{account:P,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new se(e.mintB.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:s.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:u,checkCreateATAOwner:c});b=P,A&&m.addInstruction(A)}(!f||!b)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let g=await this.getClmmPoolKeys(e.id);return m.addInstruction(Ie.makeSwapBaseInInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},inputMint:new se(t),amountIn:n,amountOutMin:i,sqrtPriceLimitX64:y,remainingAccounts:a})),m.versionBuild({txVersion:l})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:i=!0,checkCreateATAOwner:o=!1,programId:s,txVersion:a,computeBudgetConfig:u}){let c={};for(let m of this.scope.account.tokenAccountRawInfos)i?fe(this.scope.ownerPubKey,m.accountInfo.mint,s).publicKey.equals(m.pubkey)&&(c[m.accountInfo.mint.toString()]=m.pubkey):c[m.accountInfo.mint.toString()]=m.pubkey;let l=this.createTxBuilder();for(let m of Object.values(e)){if(t[m.id]===void 0||!t[m.id].find(A=>!A.liquidity.isZero()||A.rewardInfos.find(h=>!h.rewardAmountOwed.isZero())))continue;let p=m,d=n.useSOLBalance&&p.mintA.address===te.toString(),y=n.useSOLBalance&&p.mintB.address===te.toString(),f=c[p.mintA.address];if(!f){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintA.programId,mint:new se(p.mintA.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:i,checkCreateATAOwner:o});f=A,h&&l.addInstruction(h)}let b=c[p.mintB.address];if(!b){let{account:A,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintB.programId,mint:new se(p.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:i,checkCreateATAOwner:o});b=A,h&&l.addInstruction(h)}c[p.mintA.address]=f,c[p.mintB.address]=b;let g=[];for(let A of p.rewardDefaultInfos){let h=n.useSOLBalance&&A.mint.address===te.toString(),T=c[A.mint.address];if(!T){let{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new se(A.mint.programId),mint:new se(A.mint.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,skipCloseAccount:!h,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:h?!1:i});T=I,B&&l.addInstruction(B)}c[A.mint.address]=T,g.push(T)}let P=await this.getClmmPoolKeys(p.id);for(let A of t[m.id]){let h=Ie.decreaseLiquidityInstructions({poolInfo:p,poolKeys:P,ownerPosition:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new ct(0),amountMinA:new ct(0),amountMinB:new ct(0)});l.addInstruction(h)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:u}):l.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(er(e).publicKey);return t?Ya.decode(t.data).whitelistMints.filter(i=>!i.equals(se.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new ct(1))).map(s=>at(new se(e),s.accountInfo.mint).publicKey),i=await this.scope.connection.getMultipleAccountsInfo(n),o=[];return i.forEach(s=>{if(!s)return;let a=si.decode(s.data);o.push(a)}),o}async getRpcClmmPoolInfo({poolId:e}){let t=await this.scope.connection.getAccountInfo(new se(e)),n=oi.decode(t.data),i=Z.sqrtPriceX64ToPrice(n.sqrtPriceX64,n.mintDecimalsA,n.mintDecimalsB).toNumber();return D(N({},n),{currentPrice:i})}};import{PublicKey as Y}from"@solana/web3.js";import{NATIVE_MINT as ci,TOKEN_PROGRAM_ID as Ht,AccountLayout as pu}from"@solana/spl-token";var Qm=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Hm=Buffer.from("amm_config","utf8"),jm=Buffer.from("pool","utf8"),Zm=Buffer.from("pool_lp_mint","utf8"),$m=Buffer.from("pool_vault","utf8"),Jm=Buffer.from("observation","utf8");function ed(r){return ie([Qm],r)}function td(r,e){return ie([Hm,id(e)],r)}function nd(r,e,t,n){return ie([jm,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function rd(r,e){return ie([Zm,e.toBuffer()],r)}function ru(r,e,t){return ie([$m,e.toBuffer(),t.toBuffer()],r)}function ui(r,e){return ie([Jm,e.toBuffer()],r)}function id(r){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,r,!1),new Uint8Array(e)}function iu({programId:r,mintA:e,mintB:t}){let n=td(r,0).publicKey,i=ed(r).publicKey,o=nd(r,n,e,t).publicKey,s=rd(r,o).publicKey,a=ru(r,o,e).publicKey,u=ru(r,o,t).publicKey,c=ui(r,o).publicKey;return{poolId:o,configId:n,authority:i,lpMint:s,vaultA:a,vaultB:u,observationId:c}}import{TransactionInstruction as ur}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as _o,TOKEN_2022_PROGRAM_ID as ou,ASSOCIATED_TOKEN_PROGRAM_ID as od}from"@solana/spl-token";var sd=ae("Raydium_cpmm"),cr={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173]};function su(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f,b,g,P,A){let h=O([w("amountMaxA"),w("amountMaxB"),w("openTime")]),T=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:_o,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:od,isSigner:!1,isWritable:!1},{pubkey:ws,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1}],I=Buffer.alloc(h.span);return h.encode({amountMaxA:g,amountMaxB:P,openTime:A},I),new ur({keys:T,programId:r,data:Buffer.from([...cr.initialize,...I])})}function au(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=O([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:_o,isSigner:!1,isWritable:!1},{pubkey:ou,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],g=Buffer.alloc(f.span);return sd.debug("cpmm deposit data",{lpAmount:p.toString(),amountMaxA:d.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:p,amountMaxA:d,amountMaxB:y},g),new ur({keys:b,programId:r,data:Buffer.from([...cr.deposit,...g])})}function uu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y){let f=O([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:_o,isSigner:!1,isWritable:!1},{pubkey:ou,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:gs,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:p,amountMinA:d,amountMinB:y},g),new ur({keys:b,programId:r,data:Buffer.from([...cr.withdraw,...g])})}function cu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=O([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},P),new ur({keys:g,programId:r,data:Buffer.from([...cr.swapBaseInput,...P])})}function lu(r,e,t,n,i,o,s,a,u,c,l,m,p,d,y,f){let b=O([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0}],P=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},P),new ur({keys:g,programId:r,data:Buffer.from([...cr.swapBaseOutput,...P])})}import Ge from"bn.js";var mu=O([de(8),_("bump"),Ee("disableCreatePool"),It("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),S("protocolOwner"),S("fundOwner"),q(w(),16)]),du=O([de(8),S("configId"),S("poolCreator"),S("vaultA"),S("vaultB"),S("mintLp"),S("mintA"),S("mintB"),S("mintProgramA"),S("mintProgramB"),S("observationId"),_("bump"),_("status"),_("lpDecimals"),_("mintDecimalA"),_("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),q(w(),32)]);var lr=class extends Te{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){let n=await this.scope.connection.getAccountInfo(new Y(e));if(!n)throw new Error(`pool not found: ${e}`);let i=du.decode(n.data),[o,s]=await this.scope.connection.getMultipleAccountsInfo([i.vaultA,i.vaultB]);if(!o)throw new Error(`pool vaultA info not found: ${i.vaultA.toBase58()}`);if(!s)throw new Error(`pool vaultB info not found: ${i.vaultB.toBase58()}`);let a;if(t){let u=await this.scope.connection.getAccountInfo(i.configId);u&&(a=mu.decode(u.data))}return D(N({},i),{baseReserve:new Ge(pu.decode(o.data).amount.toString()).sub(i.protocolFeesMintA).sub(i.fundFeesMintA),quoteReserve:new Ge(pu.decode(s.data).amount.toString()).sub(i.protocolFeesMintB).sub(i.fundFeesMintB),configInfo:a})}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:i,associatedOnly:o=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:u}=m,c=Pe(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var j,W,H;let p=i.feePayer||((j=this.scope.owner)==null?void 0:j.publicKey),d=new Ge(new Y(c.mintA.address).toBuffer()).lte(new Ge(new Y(c.mintB.address).toBuffer())),[y,f]=d?[c.mintA,c.mintB]:[c.mintB,c.mintA],[b,g]=d?[c.mintAAmount,c.mintBAmount]:[c.mintBAmount,c.mintAAmount],P=i.useSOLBalance&&y.address===ci.toBase58(),A=i.useSOLBalance&&f.address===ci.toBase58(),[h,T]=[new Y(y.address),new Y(f.address)],I=this.createTxBuilder(),{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:h,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:P?{payer:p,amount:b}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:o,checkCreateATAOwner:s});I.addInstruction(x||{});let{account:K,instructionParams:M}=await this.scope.account.getOrCreateTokenAccount({mint:new Y(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:A?{payer:p,amount:g}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:o,checkCreateATAOwner:s});if(I.addInstruction(M||{}),B===void 0||K===void 0)throw Error("you don't has some token account");let F=iu({programId:e,mintA:h,mintB:T});return I.addInstruction({instructions:[su(e,this.scope.ownerPubKey,F.configId,F.authority,F.poolId,h,T,F.lpMint,B,K,fe(this.scope.ownerPubKey,F.lpMint).publicKey,F.vaultA,F.vaultB,t,new Y((W=y.programId)!=null?W:Ht),new Y((H=f.programId)!=null?H:Ht),F.observationId,b,g,n)],instructionTypes:[V.CpmmCreatePool]}),I.addCustomComputeBudget(u),I.versionBuild({txVersion:a,extInfo:{address:D(N({},F),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,inputAmount:n,baseIn:i,slippage:o,computeResult:s,computeBudgetConfig:a,config:u,txVersion:c}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),n.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:n.toString()});let{account:l}=this.scope,{bypassAssociatedCheck:m,checkCreateATAOwner:p}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),d=await this.getRpcPoolInfo(t.id),{liquidity:y,inputAmountFee:f,anotherAmount:b}=s||this.computePairAmount({poolInfo:D(N({},t),{mintAmountA:new E(d.baseReserve.toString()).div(10**t.mintA.decimals).toNumber(),mintAmountB:new E(d.quoteReserve.toString()).div(10**t.mintB.decimals).toNumber(),lpAmount:new E(d.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),slippage:o,baseIn:i,epochInfo:await this.scope.fetchEpochInfo(),amount:new E(n.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),g=b.amount,P=t.mintA.address===ci.toString(),A=t.mintB.address===ci.toString(),h=this.createTxBuilder(),[T,I]=[new Y(t.mintA.address),new Y(t.mintB.address)],{account:B,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||(i?n:g).isZero()?{payer:this.scope.ownerPubKey,amount:i?n:g}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!1,checkCreateATAOwner:p});h.addInstruction(x||{});let{account:K,instructionParams:M}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||(i?g:n).isZero()?{payer:this.scope.ownerPubKey,amount:i?g:n}:void 0,skipCloseAccount:!A,notUseTokenAccount:A,associatedOnly:!1,checkCreateATAOwner:p});h.addInstruction(M||{}),!B&&!K&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",l.tokenAccounts);let F=await l.getCreatedTokenAccount({mint:new Y(t.lpMint.address)}),ee=await l.handleTokenAccount({side:"out",amount:0,mint:new Y(t.lpMint.address),tokenAccount:F,bypassAssociatedCheck:m,checkCreateATAOwner:p}),{tokenAccount:j}=ee,W=Pe(ee,["tokenAccount"]);h.addInstruction(W);let H=await this.getCpmmPoolKeys(t.id);return h.addInstruction({instructions:[au(new Y(t.programId),this.scope.ownerPubKey,new Y(H.authority),new Y(t.id),j,B,K,new Y(H.vault.A),new Y(H.vault.B),T,I,new Y(t.lpMint.address),y,i?f.amount:g,i?g:f.amount)],instructionTypes:[V.CpmmAddLiquidity],lookupTableAddress:H.lookupTableAccount?[H.lookupTableAccount]:[]}),h.addCustomComputeBudget(a),h.versionBuild({txVersion:c})}async withdrawLiquidity(e){var j,W;let{poolInfo:t,lpAmount:n,slippage:i,computeBudgetConfig:o,txVersion:s}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let a=new tt(new Ge(1)).sub(i),u=await this.getRpcPoolInfo(t.id),[c,l]=[a.mul(n.mul(u.baseReserve).div(u.lpAmount)).quotient,a.mul(n.mul(u.quoteReserve).div(u.lpAmount)).quotient],m=await this.scope.fetchEpochInfo(),[p,d]=[we(c,t.mintA.extensions.feeConfig,m,!0),we(l,t.mintB.extensions.feeConfig,m,!0)],{account:y}=this.scope,f=this.createTxBuilder(),[b,g]=[new Y(t.mintA.address),new Y(t.mintB.address)],P=b.equals(te),A=g.equals(te),h,T,{account:I,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Y(t.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!P,associatedOnly:!P,checkCreateATAOwner:!1});h=I,B&&f.addInstruction(B);let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Y(t.mintB.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:!A,checkCreateATAOwner:!1});T=x,K&&f.addInstruction(K),(!h||!T)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let M=await y.getCreatedTokenAccount({mint:new Y(t.lpMint.address)});M||this.logAndCreateError("cannot found lp token account","tokenAccounts",y.tokenAccounts);let F=await this.getCpmmPoolKeys(t.id);return f.addInstruction({instructions:[uu(new Y(t.programId),this.scope.ownerPubKey,new Y(F.authority),new Y(t.id),M,h,T,new Y(F.vault.A),new Y(F.vault.B),b,g,new Y(t.lpMint.address),n,c.sub((j=p.fee)!=null?j:new Ge(0)),l.sub((W=d.fee)!=null?W:new Ge(0)))],instructionTypes:[V.CpmmWithdrawLiquidity],lookupTableAddress:F.lookupTableAccount?[F.lookupTableAccount]:[]}),f.addCustomComputeBudget(o),f.versionBuild({txVersion:s})}async swap(e){var h,T,x,K,M,F;let{poolInfo:t,baseIn:n,swapResult:i,config:o,computeBudgetConfig:s,txVersion:a}=e,{bypassAssociatedCheck:u,checkCreateATAOwner:c}=N({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},o),l=this.createTxBuilder(),[m,p]=[new Y(t.mintA.address),new Y(t.mintB.address)],d=await this.scope.account.getCreatedTokenAccount({programId:new Y((h=t.mintA.programId)!=null?h:Ht),mint:m,associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({programId:new Y((T=t.mintB.programId)!=null?T:Ht),mint:p,associatedOnly:!1}),I=await this.scope.account.handleTokenAccount({side:n?"in":"out",amount:n?i.sourceAmountSwapped:i.destinationAmountSwapped,mint:m,tokenAccount:d,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:f}=I,b=Pe(I,["tokenAccount"]);l.addInstruction(b);let B=await this.scope.account.handleTokenAccount({side:n?"out":"in",amount:n?i.destinationAmountSwapped:i.sourceAmountSwapped,mint:p,tokenAccount:y,bypassAssociatedCheck:u,checkCreateATAOwner:c}),{tokenAccount:g}=B,P=Pe(B,["tokenAccount"]);l.addInstruction(P),!f&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let A=await this.getCpmmPoolKeys(t.id);return l.addInstruction({instructions:[n?cu(new Y(t.programId),this.scope.ownerPubKey,new Y(A.authority),new Y(A.config.id),new Y(t.id),f,g,new Y(A.vault.A),new Y(A.vault.B),new Y((x=t.mintA.programId)!=null?x:Ht),new Y((K=t.mintB.programId)!=null?K:Ht),m,p,ui(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):lu(new Y(t.programId),this.scope.ownerPubKey,new Y(A.authority),new Y(A.config.id),new Y(t.id),g,f,new Y(A.vault.B),new Y(A.vault.A),new Y((M=t.mintB.programId)!=null?M:Ht),new Y((F=t.mintA.programId)!=null?F:Ht),p,m,ui(new Y(t.programId),new Y(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[n?V.CpmmSwapBaseIn:V.CpmmSwapBaseOut]}),l.addCustomComputeBudget(s),l.versionBuild({txVersion:a})}computePairAmount({poolInfo:e,amount:t,slippage:n,epochInfo:i,baseIn:o}){var P,A,h,T,I,B,x,K;let s=1-Number(n.toSignificant())/100,a=new Ge(new E(t).mul(10**e[o?"mintA":"mintB"].decimals).mul(s).toFixed(0)),u=we(a,e[o?"mintA":"mintB"].extensions.feeConfig,i,!1),c=a.sub((P=u.fee)!=null?P:new Ge(0)),[l,m]=[new Ge(new E(e.mintAmountA).mul(10**e.mintA.decimals).toString()),new Ge(new E(e.mintAmountB).mul(10**e.mintB.decimals).toString())],p=new Ge(new E(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,E.ROUND_DOWN));this.logDebug("baseReserve:",l.toString(),"quoteReserve:",m.toString()),this.logDebug("tokenIn:",o?e.mintA.symbol:e.mintB.symbol,"amountIn:",a.toString(),"amountInFee:",(h=(A=u.fee)==null?void 0:A.toString())!=null?h:0,"anotherToken:",o?e.mintB.symbol:e.mintA.symbol,"slippage:",`${n.toSignificant()}%`);let d=o?"base":"quote";this.logDebug("input side:",d);let y=c.mul(p).div(d==="base"?l:m),f={amount:ze,fee:void 0,expirationTime:void 0};c.isZero()||(f=we(ad(y,l,m,p)[o?"amountB":"amountA"],e[o?"mintB":"mintA"].extensions.feeConfig,i,!0));let b=new tt(new Ge(1)).add(n),g=we(b.mul(f.amount.sub((T=f.fee)!=null?T:new Ge(0))).quotient,e[o?"mintB":"mintA"].extensions.feeConfig,i,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(B=(I=f.fee)==null?void 0:I.toString())!=null?B:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(K=(x=g.fee)==null?void 0:x.toString())!=null?K:0),{inputAmountFee:u,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function ad(r,e,t,n){let i=r.mul(e).div(n);!i.isZero()&&!r.mul(e).mod(n).isZero()&&(i=i.add(new Ge(1)));let o=r.mul(t).div(n);return!o.isZero()&&!r.mul(t).mod(n).isZero()&&(o=o.add(new Ge(1))),{amountA:i,amountB:o}}var mr=class extends Te{constructor(e){super(e)}static getAddLiquidityDefaultPool({addLiquidityPools:e,poolInfosCache:t}){if(e.length===0)return;if(e.length===1||(e.sort((i,o)=>o.version-i.version),e[0].version!==e[1].version))return e[0];let n=e.filter(i=>i.version===e[0].version);return n.sort((i,o)=>this.comparePoolSize(i,o,t)),n[0]}static comparePoolSize(e,t,n){let i=n[e.id],o=n[t.id];return i===void 0?1:o===void 0?-1:e.baseMint===t.baseMint?i.baseReserve.sub(o.baseReserve).gte(ze)?-1:1:i.baseReserve.sub(o.quoteReserve).gte(ze)?-1:1}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(te));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n}=e,i=await this.getWSolAccounts(),o=this.createTxBuilder();o.addCustomComputeBudget(e.computeBudgetConfig);let s=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});o.addInstruction(s);let a=X(t);for(let u=0;u<i.length;u++)a.gte(i[u].amount)?(o.addInstruction({instructions:[Nt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),a.sub(i[u].amount)):(o.addInstruction({instructions:[Nt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),Wn({destination:s.addresses.newAccount,source:i[u].publicKey,amount:a,owner:this.scope.ownerPubKey,tokenProgram:n}));return o.build()}async wrapWSol(e,t){let n=await this.getWSolAccounts(),i=this.createTxBuilder(),o=await xt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return i.addInstruction(o),n.length&&i.addInstruction({instructions:[Wn({destination:n[0].publicKey,source:o.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Nt({tokenAccount:o.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),i.build()}};import{TOKEN_PROGRAM_ID as ud}from"@solana/spl-token";import{PublicKey as cd,Transaction as Vo,TransactionInstruction as ld}from"@solana/web3.js";import fu from"bn.js";var Xe=class extends Te{static getPdaPoolId(e,t){return ie([Xe.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return ie([Xe.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new fu(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:i,chainTime:o}){if(n.length===0)return[];let s=n.map(l=>Xe.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<Xe.VERSION_PROJECT.length;l++)a.push(...s.map(m=>Xe.getPdaOwnerId(t,m,i,l).publicKey));let u=await Tt(e,[...s,...a]),c=[];for(let l=0;l<u.length;l++){let m=Math.floor(l/n.length),p=l%n.length,d=s[p],y=a[l],f=u[p],b=u[n.length+l];if(!(f&&b)||f.data.length!==Xe.POOL_LAYOUT.span||b.data.length!==Xe.OWNER_LAYOUT.span)continue;let g=Xe.POOL_LAYOUT.decode(f.data),P=Xe.OWNER_LAYOUT.decode(b.data),A=g.openTime.toNumber(),h=g.endTime.toNumber(),T=P.tokenInfo.map(x=>x.debtAmount.gt(new fu(0))).filter(x=>!x).length!==3,I=o>A&&o<h&&g.status===1,B=T&&I;c.push({programId:t,poolId:d,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:P.lpAmount,project:Xe.VERSION_PROJECT[m],openTime:A,endTime:h,canClaim:B,canClaimErrorType:T?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,K)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:P.tokenInfo[K].debtAmount.add(P.tokenInfo[K].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o=[];for(let u of e.tokenInfo){let{account:c,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({mint:u.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:u.mintAddress.equals(he.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!u.mintAddress.equals(he.WSOL.mint),associatedOnly:u.mintAddress.equals(he.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),o.push(c)}n.addInstruction({instructions:[Xe.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:i,ownerPda:e.ownerAccountId,claimAddress:o}})]});let{transaction:s,signers:a}=n.build();return[{transaction:s,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),i=t.wallet||this.scope.ownerPubKey,o={};for(let c of e){let l=[];for(let m of c.tokenInfo){let{account:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(he.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!m.mintAddress.equals(he.WSOL.mint),associatedOnly:m.mintAddress.equals(he.WSOL.mint)?!1:t.associatedOnly});d&&n.addInstruction(d),p&&(o[m.mintAddress.toString()]=p,l.push(p))}n.addInstruction({instructions:[Xe.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:i,ownerPda:c.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),u=n.allInstructions;return _r(u,[i,...a.map(c=>c.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new Vo().add(...u.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new Vo().add(...u.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new Vo().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=O([]),o=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(u=>({pubkey:u,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:u})=>({pubkey:u,isSigner:!1,isWritable:!0})),{pubkey:ud,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new ld({keys:o,programId:e,data:a})}},lt=Xe;lt.CLAIMED_NUM=3,lt.POOL_LAYOUT=O([de(8),_("bump"),_("status"),w("openTime"),w("endTime"),S("ammId"),q(O([_("mintDecimals"),S("mintAddress"),S("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),Xe.CLAIMED_NUM,"tokenInfo"),q(w(),10,"padding")]),lt.OWNER_LAYOUT=O([de(8),_("bump"),_("version"),S("poolId"),S("owner"),w("lpAmount"),q(O([S("mintAddress"),w("debtAmount"),w("claimedAmount")]),Xe.CLAIMED_NUM,"tokenInfo"),q(w(),4,"padding")]),lt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new cd(e)),lt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},lt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as dr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Au}from"@solana/spl-token";import pr from"bn.js";import{TransactionInstruction as dd,SYSVAR_RENT_PUBKEY as pd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as yu}from"@solana/spl-token";import{createInitializeAccountInstruction as bu}from"@solana/spl-token";import{SystemProgram as un,Transaction as gu}from"@solana/web3.js";function md(r="accountFlags"){let e=new Xr(r);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var Eo=O([de(5),md("accountFlags"),S("ownAddress"),w("vaultSignerNonce"),S("baseMint"),S("quoteMint"),S("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),S("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),S("requestQueue"),S("eventQueue"),S("bids"),S("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),de(7)]);function fd({programId:r,marketInfo:e}){let t=O([_("version"),We("instruction"),w("baseLotSize"),w("quoteLotSize"),It("feeRateBps"),w("vaultSignerNonce"),w("quoteDustThreshold")]),n=[{pubkey:e.id,isSigner:!1,isWritable:!0},{pubkey:e.requestQueue,isSigner:!1,isWritable:!0},{pubkey:e.eventQueue,isSigner:!1,isWritable:!0},{pubkey:e.bids,isSigner:!1,isWritable:!0},{pubkey:e.asks,isSigner:!1,isWritable:!0},{pubkey:e.baseVault,isSigner:!1,isWritable:!0},{pubkey:e.quoteVault,isSigner:!1,isWritable:!0},{pubkey:e.baseMint,isSigner:!1,isWritable:!1},{pubkey:e.quoteMint,isSigner:!1,isWritable:!1},{pubkey:e.authority?e.quoteMint:pd,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),i=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},i),new dd({keys:n,programId:r,data:i})}async function wu({connection:r,wallet:e,marketInfo:t}){let n=new gu,i=await r.getMinimumBalanceForRentExemption(165);n.add(un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:i,space:165,programId:yu}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:yu}),bu(t.baseVault.publicKey,t.baseMint,t.vaultOwner),bu(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let o=new gu;return o.add(un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await r.getMinimumBalanceForRentExemption(Eo.span),space:Eo.span,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await r.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),un.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await r.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),fd({programId:t.programId,marketInfo:{id:t.id.publicKey,requestQueue:t.requestQueue.publicKey,eventQueue:t.eventQueue.publicKey,bids:t.bids.publicKey,asks:t.asks.publicKey,baseVault:t.baseVault.publicKey,quoteVault:t.quoteVault.publicKey,baseMint:t.baseMint,quoteMint:t.quoteMint,baseLotSize:t.baseLotSize,quoteLotSize:t.quoteLotSize,feeRateBps:t.feeRateBps,vaultSignerNonce:t.vaultSignerNonce,quoteDustThreshold:t.quoteDustThreshold}})),[{transaction:n,signer:[],instructionTypes:[V.CreateAccount,V.CreateAccount,V.InitAccount,V.InitAccount]},{transaction:o,signer:[],instructionTypes:[V.CreateAccount,V.CreateAccount,V.CreateAccount,V.CreateAccount,V.CreateAccount,V.InitMarket]}]}var Pn=class extends Te{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:i,dexProgramId:o,txVersion:s,computeBudgetConfig:a}){let u=this.scope.ownerPubKey,c=De({fromPublicKey:u,programId:o}),l=De({fromPublicKey:u,programId:o}),m=De({fromPublicKey:u,programId:o}),p=De({fromPublicKey:u,programId:o}),d=De({fromPublicKey:u,programId:o}),y=De({fromPublicKey:u,programId:Au}),f=De({fromPublicKey:u,programId:Au}),b=0,g=new pr(100);function P(){let K=new pr(0);for(;;)try{return{vaultOwner:dr.createProgramAddressSync([c.publicKey.toBuffer(),K.toArrayLike(Buffer,"le",8)],o),vaultSignerNonce:K}}catch{if(K.iaddn(1),K.gt(new pr(25555)))throw Error("find vault owner error")}}let{vaultOwner:A,vaultSignerNonce:h}=P(),T=new pr(Math.round(10**e.decimals*n)),I=new pr(Math.round(n*10**t.decimals*i));if(T.eq(ze))throw Error("lot size is too small");if(I.eq(ze))throw Error("tick size or lot size is too small");let B=await wu({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:o,id:c,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:A,requestQueue:l,eventQueue:m,bids:p,asks:d,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:h,baseLotSize:T,quoteLotSize:I}}),x=this.createTxBuilder();x.addInstruction({instructions:B[0].transaction.instructions,signers:B[0].signer});for await(let K of B.slice(1,B.length))x.addInstruction({instructions:K.transaction.instructions,signers:K.signer,instructionTypes:K.instructionTypes});return s===0?x.sizeCheckBuildV0({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:p.publicKey,asks:d.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new dr(e.mint),quoteMin:new dr(t.mint)}}):x.sizeCheckBuild({computeBudgetConfig:a,address:{marketId:c.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:p.publicKey,asks:d.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new dr(e.mint),quoteMin:new dr(t.mint)}})}};import{PublicKey as yr}from"@solana/web3.js";import{PublicKey as yd,TransactionInstruction as vo,SYSVAR_CLOCK_PUBKEY as bd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Wo}from"@solana/spl-token";var Fo=O([_("instruction"),Us("amount")]),fr=O([_("instruction")]);function ex({programId:r,amount:e,instructionKeys:t}){let n=[{pubkey:new yd("11111111111111111111111111111111"),isSigner:!1,isWritable:!1},{pubkey:Wo,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:Ki,isSigner:!1,isWritable:!1},...Object.entries(t).map(([o,s])=>({pubkey:s,isSigner:o==="userOwner",isWritable:!["authority","userOwner","userIdoCheck","userStakeInfo"].includes(o)}))],i=Buffer.alloc(Fo.span);return Fo.encode({instruction:1,amount:Number(e)},i),new vo({keys:n,programId:r,data:i})}function li({programId:r},e){let t=[{pubkey:Wo,isSigner:!1,isWritable:!1},{pubkey:Ki,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,o])=>({pubkey:o,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(fr.span);return fr.encode({instruction:2},n),new vo({keys:t,programId:r,data:n})}function Do(r){let{poolConfig:e,userKeys:t,side:n}=r,i=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,o=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(fr.span);fr.encode({instruction:2},s);let a=[{pubkey:Wo,isWritable:!1,isSigner:!1},{pubkey:bd,isWritable:!1,isSigner:!1},{pubkey:e.id,isWritable:!0,isSigner:!1},{pubkey:e.authority,isWritable:!1,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new vo({programId:e.programId,keys:a,data:s})}import Pu from"bn.js";var gd={[En.IDO_PROGRAM_ID_V1.toString()]:1,[En.IDO_PROGRAM_ID_V2.toString()]:2,[En.IDO_PROGRAM_ID_V3.toString()]:3,[En.IDO_PROGRAM_ID_V4.toString()]:4},kn=class extends Te{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:o}){let s=this.createTxBuilder(),a=gd[t.programId];a||this.logAndCreateError("invalid version",a);let u=pe(t),[c,l]=[!new Pu(e.coin).isZero(),!new Pu(e.pc).isZero()],m=u.projectInfo.mint.address.equals(te),{account:p,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.projectInfo.mint.programId,mint:u.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!m,notUseTokenAccount:m,associatedOnly:m?!1:n,checkCreateATAOwner:i});!p&&c&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),c&&d&&s.addInstruction(d);let y=u.buyInfo.mint.address.equals(te),{account:f,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.buyInfo.mint.programId,mint:u.buyInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:n,checkCreateATAOwner:i});if(!p&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&b&&s.addInstruction(b),(!p||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return s.addInstruction({instructions:[...c?[li({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:p,userIdoInfo:new yr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[li({programId:new yr(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:f,userIdoInfo:new yr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:o});if(a<3)return!c&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[li({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:p,userIdoInfo:new yr(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:o});let g={poolConfig:{id:u.id,programId:u.programId,authority:u.authority,baseVault:u.projectInfo.vault,quoteVault:u.buyInfo.vault,baseToken:t.projectInfo.mint,quoteToken:t.buyInfo.mint},userKeys:{baseTokenAccount:p,quoteTokenAccount:f,ledgerAccount:new yr(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...c?[Do(D(N({},g),{side:"base"}))]:[],...l?[Do(D(N({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:o})}};import{PublicKey as wd}from"@solana/web3.js";import{MintLayout as Ad,TOKEN_2022_PROGRAM_ID as qo,TOKEN_PROGRAM_ID as Uo}from"@solana/spl-token";var br=class extends Te{constructor(t){super(t);this._tokenList=[];this._tokenMap=new Map;this._blackTokenMap=new Map;this._mintGroup={official:new Set,jup:new Set,extra:new Set};this._whiteMap=new Set;this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:i="strict"}=t||{},{mintList:o,blacklist:s,whiteList:a}=await this.scope.fetchV3TokenList(n),u=await this.scope.fetchJupTokenList(i,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._whiteMap=new Set(a),this._tokenMap.set(ht.address,ht),this._mintGroup.official.add(ht.address),s.forEach(c=>{this._blackTokenMap.set(c.address,D(N({},c),{priority:-1}))}),o.forEach(c=>{var l;this._blackTokenMap.has(c.address)||(this._tokenMap.set(c.address,D(N({},c),{type:"raydium",priority:2,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?qo.toBase58():Uo.toBase58()})),this._mintGroup.official.add(c.address))}),u.forEach(c=>{var l;this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,D(N({},c),{type:"jupiter",priority:1,programId:(l=c.programId)!=null?l:c.tags.includes("token-2022")?qo.toBase58():Uo.toBase58()})),this._mintGroup.jup.add(c.address))}),this._extraTokenList.forEach(c=>{this._blackTokenMap.has(c.address)||this._tokenMap.has(c.address)||(this._tokenMap.set(c.address,D(N({},c),{type:"extra",priority:1,programId:c.programId||c.tags.includes("token-2022")?qo.toBase58():Uo.toBase58()})),this._mintGroup.extra.add(c.address))}),this._tokenList=Array.from(this._tokenMap).map(c=>c[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}get whiteListMap(){return this._whiteMap}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),i=this._tokenMap.get(n);if(i)return i;if(n.toLocaleUpperCase()==="SOL")return ht;let o=(await this.scope.api.getTokenInfo([n]))[0];if(o)return this._mintGroup.extra.add(n),this._tokenMap.set(n,D(N({},o),{priority:2})),o;let s=await this.scope.connection.getAccountInfo(new wd(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=Ad.decode(s.data),u=n.toString().substring(0,6),c={chainId:101,address:n,programId:s.owner.toBase58(),logoURI:"",symbol:u,name:u,decimals:a.decimals,tags:[],extensions:{},priority:0,type:"unknown"};return this._mintGroup.extra.add(n),this._tokenMap.set(n,c),c}};var mi=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:i,api:o,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:u}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=i?new yt(i):void 0,this._signAllTransactions=e.signAllTransactions,this.api=o,this._apiCacheTime=u||5*60*1e3,this.logger=ae("Raydium"),this.farm=new Zn({scope:this,moduleName:"Raydium_Farm"}),this.account=new Dn({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new sr({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new br({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new mr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new ar({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new lr({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new lt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new Pn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new kn({scope:this,moduleName:"Raydium_ido"}),this.availability={};let c=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:c,value:{chainTime:s||Date.now()-a,offset:a}})}static async load(e){var l;let t=Pd({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:o,logRequests:s,urlConfigs:a}=t,u=new qr({cluster:n,timeout:i,urlConfigs:a,logCount:o,logRequests:s}),c=new mi(D(N({},t),{api:u}));return await c.fetchAvailabilityStatus((l=e.disableFeatureCheck)!=null?l:!0),e.disableLoadToken||await c.token.load({type:e.jupTokenType}),c}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(Ur);return this._owner.publicKey}setOwner(e){return this._owner=e?new yt(e):void 0,this}get connection(){if(!this._connection)throw new Error(Ws);return this._connection}setConnection(e){return this._connection=e,this}get signAllTransactions(){return this._signAllTransactions}setSignAllTransactions(e){return this._signAllTransactions=e,this}checkOwner(){if(!this.owner)throw this.logger.error(Ur),new Error(Ur)}isCacheInvalidate(e){return new Date().getTime()-e>this._apiCacheTime}async fetchChainTime(){try{let e=await this.api.getChainTimeOffset();this._chainTime={fetched:Date.now(),value:{chainTime:Date.now()+e.offset*1e3,offset:e.offset*1e3}}}catch{this._chainTime=void 0}}async fetchV3TokenList(e){if(this.apiData.tokenList&&!this.isCacheInvalidate(this.apiData.tokenList.fetched)&&!e)return this.apiData.tokenList.data;let t=await this.api.getTokenList(),n={fetched:Date.now(),data:t};return this.apiData.tokenList=n,n.data}async fetchJupTokenList(e,t){var o;let n=(o=this.apiData.jupTokenList)==null?void 0:o[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let i=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=D(N({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:i}}),this.apiData.jupTokenList[e].data}get chainTimeData(){var e;return(e=this._chainTime)==null?void 0:e.value}async chainTimeOffset(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.offset:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.offset)||0)}async currentBlockChainTime(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.chainTime:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.chainTime)||Date.now())}async fetchEpochInfo(){return this._epochInfo&&Date.now()-this._epochInfo.fetched<=1e3*30?this._epochInfo.value:(this._epochInfo={fetched:Date.now(),value:await this.connection.getEpochInfo()},this._epochInfo.value)}async fetchAvailabilityStatus(e){if(e)return{};try{let t=await this.api.fetchAvailabilityStatus(),n=t.all===!1;return this.availability={all:t.all,swap:n?!1:t.swap,createConcentratedPosition:n?!1:t.createConcentratedPosition,addConcentratedPosition:n?!1:t.addConcentratedPosition,addStandardPosition:n?!1:t.addStandardPosition,removeConcentratedPosition:n?!1:t.removeConcentratedPosition,removeStandardPosition:n?!1:t.removeStandardPosition,addFarm:n?!1:t.addFarm,removeFarm:n?!1:t.removeFarm},t}catch{return{}}}};import{TOKEN_PROGRAM_ID as zo,TOKEN_2022_PROGRAM_ID as Go}from"@solana/spl-token";import{PublicKey as mt,TransactionInstruction as Yo,SystemProgram as hu}from"@solana/web3.js";import Xo from"bn.js";function sB(r,e,t,n,i,o,s,a,u,c,l,m){let p=O([_("instruction"),w("amountIn"),w("amountOut")]),d=[{pubkey:hu.programId,isSigner:!1,isWritable:!1},{pubkey:zo,isSigner:!1,isWritable:!1},{pubkey:new mt(t.programId),isSigner:!1,isWritable:!1},{pubkey:new mt(t.id),isSigner:!1,isWritable:!0},{pubkey:new mt(n.id),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=pe(t);d.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(u)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=pe(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new mt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=pe(t);d.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let y=Buffer.alloc(p.span);return p.encode({instruction:4,amountIn:c,amountOut:l},y),new Yo({keys:d,programId:r,data:y})}function aB(r,e,t,n,i,o,s,a,u,c){let l=O([_("instruction")]),m=[{pubkey:hu.programId,isSigner:!1,isWritable:!1},{pubkey:zo,isSigner:!1,isWritable:!1},{pubkey:new mt(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new mt(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new mt(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let d=pe(n);m.push({pubkey:d.config.id,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.A:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(u)?d.vault.B:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},...c.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let d=pe(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:new mt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0})}else{let d=pe(n);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},...d.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:d.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:d.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0}])}let p=Buffer.alloc(l.span);return l.encode({instruction:5},p),new Yo({keys:m,programId:r,data:p})}function ku(r,e,t,n,i,o){if(r.pooltype.includes("StablePool")){let s=pe(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:new mt("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]}else if(r.type==="Concentrated"){let s=r,a=pe(e),u=s.mintA.address===t;return[{pubkey:new mt(String(r.programId)),isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a.config.id,isSigner:!1,isWritable:!1},{pubkey:a.id,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.A:a.vault.B,isSigner:!1,isWritable:!0},{pubkey:u?a.vault.B:a.vault.A,isSigner:!1,isWritable:!0},{pubkey:a.id,isSigner:!1,isWritable:!0},...a.mintA.programId.equals(Go)||a.mintB.programId.equals(Go)?[{pubkey:Go,isSigner:!1,isWritable:!1},{pubkey:mn,isSigner:!1,isWritable:!1},{pubkey:u?a.mintA.address:a.mintB.address,isSigner:!1,isWritable:!1},{pubkey:u?a.mintB.address:a.mintA.address,isSigner:!1,isWritable:!1}]:[],...(o!=null?o:[]).map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:ut(new mt(String(r.programId)),new mt(r.id)).publicKey,isSigner:!1,isWritable:!0}]}else{let s=pe(e);return[{pubkey:s.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.authority,isSigner:!1,isWritable:!1},{pubkey:s.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:s.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:s.openOrders,isSigner:!1,isWritable:!0},{pubkey:s.vault.A,isSigner:!1,isWritable:!0},{pubkey:s.vault.B,isSigner:!1,isWritable:!0},{pubkey:s.marketId,isSigner:!1,isWritable:!0},{pubkey:s.marketBids,isSigner:!1,isWritable:!0},{pubkey:s.marketAsks,isSigner:!1,isWritable:!0},{pubkey:s.marketEventQueue,isSigner:!1,isWritable:!0},...s.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:s.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:s.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:s.id,isSigner:!1,isWritable:!0},{pubkey:s.id,isSigner:!1,isWritable:!0}]]}}function kd(r,e,t,n,i,o,s,a,u,c,l,m,p,d){let y=O([_("instruction"),w("amountIn"),w("amountOut")]),f=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:zo,isSigner:!1,isWritable:!1}];f.push(...ku(a,c,o,t,n,d[0])),f.push(...ku(u,l,s,n,i,d[1]));let b=Buffer.alloc(y.span);return y.encode({instruction:8,amountIn:m,amountOut:p},b),new Yo({keys:f,programId:r,data:b})}async function uB({routeProgram:r,ownerInfo:e,inputMint:t,swapInfo:n}){var i,o,s,a,u,c;if(n.routeType==="amm")if(n.poolInfo[0].type==="Concentrated"){let l=pe(n.poolKey[0]),m=t.equals(l.mintA.address)?St.add(rt):Kt.sub(rt);return await Ie.makeSwapBaseInInstructions({poolInfo:l,poolKeys:l,ownerInfo:{wallet:e.wallet,tokenAccountA:l.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:l.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((o=(i=n.minAmountOut.fee)==null?void 0:i.raw)!=null?o:new Xo(0)),sqrtPriceLimitX64:m,remainingAccounts:n.remainingAccounts[0]})}else{let l=n.poolKey[0];return{signers:[],instructions:[ei({poolKeys:l,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((a=(s=n.minAmountOut.fee)==null?void 0:s.raw)!=null?a:new Xo(0)),fixedSide:"in"})],lookupTableAddress:l.lookupTableAccount?[l.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?V.AmmV5SwapBaseIn:V.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let l=n.poolInfo[0],m=n.poolInfo[1],p=n.poolKey[0],d=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[kd(r,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.minMiddleAmountFee.token.mint.toString(),l,m,p,d,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((c=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?c:new Xo(0)),n.remainingAccounts)],instructionTypes:[V.RouteSwap],lookupTableAddress:[p.lookupTableAccount,d.lookupTableAccount].filter(y=>y!==void 0),address:{}}}else throw Error("route type error")}import Iu from"bn.js";var Qo=new Iu(1e6);function hd(r,e,t){return r.mul(e).add(t).sub(new Iu(1)).div(t)}function Tu(r,e,t){return r.mul(e).div(t)}var di=class{static tradingFee(e,t){return hd(e,t,Qo)}static protocolFee(e,t){return Tu(e,t,Qo)}static fundFee(e,t){return Tu(e,t,Qo)}};import gr from"bn.js";function pi(r,e){if(e.isZero())throw Error("divisor is zero");return r.mod(e)}function Td(r,e){if(e.isZero())throw Error("rhs is zero");let t=r.div(e);if(t.isZero())throw Error("quotient is zero");let n=pi(r,e);if(n.gt(hn)){t=t.add(new gr(1));let i=r.div(t);n=pi(r,t),n.gt(hn)&&(i=i.add(new gr(1)))}return[t,e]}var hn=new gr(0),fi=class{static swapWithoutFees(e,t,n){let i=t.mul(n),o=t.add(e),[s,a]=Td(i,o),u=a.sub(t),c=n.sub(s);if(c.isZero())throw Error("destinationAmountSwapped is zero");return{sourceAmountSwapped:u,destinationAmountSwapped:c}}static lpTokensToTradingTokens(e,t,n,i,o){let s=e.mul(n).div(t),a=e.mul(i).div(t);if(o===0)return{tokenAmount0:s,tokenAmount1:a};if(o===1)return pi(e.mul(n),t).gt(hn)&&s.gt(hn)&&(s=s.add(new gr(1))),pi(e.mul(i),t).gt(hn)&&a.gt(hn)&&(a=a.add(new gr(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var xu=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(xu||{}),Bu=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swap(e,t,n,i){let o=di.tradingFee(e,i),s=e.sub(o),{sourceAmountSwapped:a,destinationAmountSwapped:u}=fi.swapWithoutFees(s,t,n),c=a.add(o);return{newSwapSourceAmount:t.add(c),newSwapDestinationAmount:n.sub(u),sourceAmountSwapped:c,destinationAmountSwapped:u,tradeFee:o}}};var Su={[vi.toBase58()]:3},Ku={3:vi};var Id=O([de(5),de(8),S("ownAddress"),w("vaultSignerNonce"),S("baseMint"),S("quoteMint"),S("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),S("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),S("requestQueue"),S("eventQueue"),S("bids"),S("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),de(7)]),Cu={3:Id};import{PublicKey as Ru}from"@solana/web3.js";var yi=ae("Serum"),Lu=class{static getProgramId(e){let t=Ku[e];return t||yi.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=Su[t];return n||yi.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=Cu[e];return t||yi.logWithError(!!t,"invalid version","version",e),t}static getLayouts(e){return{state:this.getStateLayout(e)}}static getAssociatedAuthority({programId:e,marketId:t}){let n=[t.toBuffer()],i=0,o;for(;i<100;){try{let s=n.concat(Buffer.from([i]),Buffer.alloc(7));o=Ru.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;i++;continue}return{publicKey:o,nonce:i}}return yi.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:Ru.default,nonce:i}}};var nS=r=>r;export{Sm as AMM_CONFIG_SEED,Nk as AmmConfigLayout,Wa as BIT_PRECISION,ar as Clmm,Ie as ClmmInstrument,fi as ConstantProductCurve,mu as CpmmConfigInfoLayout,di as CpmmFee,du as CpmmPoolInfoLayout,Bu as CurveCalculator,dm as DataElement,Co as EXTENSION_TICKARRAY_BITMAP_SIZE,ca as FARM_LOCK_MINT,la as FARM_LOCK_VAULT,wt as FARM_PROGRAM_TO_VERSION,da as FARM_VERSION_TO_LEDGER_LAYOUT,ma as FARM_VERSION_TO_STATE_LAYOUT,ii as FEE_RATE_DENOMINATOR,Qo as FEE_RATE_DENOMINATOR_VALUE,_m as FETCH_TICKARRAY_COUNT,Mm as Fee,Ja as LIQUIDITY_FEES_DENOMINATOR,$a as LIQUIDITY_FEES_NUMERATOR,qm as LIQUIDITY_VERSION_TO_SERUM_VERSION,HA as LIQUIDITY_VERSION_TO_STATE_LAYOUT,Da as LOG_B_2_X32,qa as LOG_B_P_ERR_MARGIN_LOWER_X64,Ua as LOG_B_P_ERR_MARGIN_UPPER_X64,ue as LiquidityMath,Eo as MARKET_STATE_LAYOUT_V2,Id as MARKET_STATE_LAYOUT_V3,Cu as MARKET_VERSION_TO_STATE_LAYOUT,Kt as MAX_SQRT_PRICE_X64,Qe as MAX_TICK,St as MIN_SQRT_PRICE_X64,qe as MIN_TICK,wn as MODEL_DATA_PUBKEY,Lu as Market,$ as MathUtil,Ko as MaxU64,va as MaxUint128,_t as NEGATIVE_ONE,rt as ONE,Om as OPERATION_SEED,Lo as ObservationInfoLayout,Fm as ObservationLayout,Ya as OperationLayout,Rm as POOL_REWARD_VAULT_SEED,Km as POOL_SEED,Nm as POOL_TICK_ARRAY_BITMAP_SEED,Cm as POOL_VAULT_SEED,Va as POSITION_SEED,oi as PoolInfoLayout,Ue as PoolUtils,si as PositionInfoLayout,Wm as PositionRewardInfoLayout,ir as PositionUtils,Mk as ProtocolPositionLayout,ri as Q128,it as Q64,mi as Raydium,vm as RewardInfo,xu as RoundDirection,Su as SERUM_PROGRAMID_TO_VERSION,Ku as SERUM_VERSION_TO_PROGRAMID,ht as SOL_INFO,IA as SPL_MINT_LAYOUT,Z as SqrtPriceMath,gn as StableLayout,on as SwapMath,rn as TICK_ARRAY_BITMAP_SIZE,Lm as TICK_ARRAY_SEED,Le as TICK_ARRAY_SIZE,hP as TICK_SPACINGS,Re as TOKEN_WSOL,Vt as TickArrayBitmap,za as TickArrayBitmapExtensionLayout,rr as TickArrayBitmapExtensionUtils,nr as TickArrayLayout,Dm as TickLayout,sn as TickMath,ce as TickQuery,U as TickUtils,tr as U64Resolution,IP as U64_IGNORE_RANGE,aa as Voter,zl as VoterDepositEntry,Xl as VoterLockup,sa as VoterRegistrar,Gl as VoterVotingMintConfig,me as ZERO,Po as addLiquidityLayout,Ji as associatedLedgerAccountLayout,po as calFarmRewardAmount,hd as ceilDiv,fr as claimLayout,Nt as closeAccountInstruction,ya as createAssociatedLedgerAccountInstruction,Ta as createPoolFeeLayout,La as createPoolV4InstructionV2,QA as createPoolV4Layout,xt as createWSolAccountInstructions,Ye as dwLayout,ro as farmAddRewardLayout,cw as farmLedgerLayoutV3_1,Un as farmLedgerLayoutV3_2,lw as farmLedgerLayoutV5_1,ia as farmLedgerLayoutV5_2,oa as farmLedgerLayoutV6_1,fa as farmRewardInfoToConfig,to as farmRewardLayout,no as farmRewardRestartLayout,Ul as farmRewardTimeInfoLayout,na as farmStateV3Layout,ra as farmStateV5Layout,qn as farmStateV6Layout,_w as fetchMultipleFarmInfoAndUpdate,lh as fetchMultipleInfo,go as fixedSwapInLayout,wo as fixedSwapOutLayout,Tu as floorDiv,hm as formatLayout,De as generatePubKey,pa as getAssociatedAuthority,Mo as getAssociatedConfigId,Je as getAssociatedLedgerAccount,Xn as getAssociatedLedgerPoolAccount,zm as getAssociatedOpenOrders,tu as getAssociatedPoolKeys,td as getCpmmPdaAmmConfigId,nd as getCpmmPdaPoolId,iu as getCreatePoolKeys,fo as getDepositEntryIndex,Sa as getDxByDyBaseIn,Ba as getDyByDxBaseIn,$r as getFarmLedgerLayout,Yl as getFarmStateLayout,Ym as getLiquidityAssociatedAuthority,an as getLiquidityAssociatedId,ck as getLiquidityFromAmounts,AP as getPdaAmmConfigId,ut as getPdaExBitmapAccount,rd as getPdaLpMint,ni as getPdaMetadataKey,ui as getPdaObservationId,er as getPdaOperationAccount,at as getPdaPersonalPositionAddress,ed as getPdaPoolAuthority,Ea as getPdaPoolId,Fa as getPdaPoolRewardVaulId,So as getPdaPoolVaultId,nn as getPdaProtocolPositionAddress,be as getPdaTickArrayAddress,ru as getPdaVault,so as getRegistrarAddress,Ka as getStablePrice,mo as getTokenOwnerRecordAddress,co as getVoterAddress,lo as getVoterWeightRecordAddress,uo as getVotingMintAuthority,ao as getVotingTokenMint,nm as governanceCreateTokenOwnerRecord,fP as i16ToBytes,ti as i32ToBytes,Ao as initPoolLayout,Zi as initTokenAccountInstruction,fd as initializeMarket,io as isValidFarmVersion,Jn as isZero,Vw as judgeFarmType,xo as leadingZeros,_a as leastSignificantBit,cm as liquidityStateV4Layout,lm as liquidityStateV5Layout,ei as makeAMMSwapInstruction,Ra as makeAddLiquidityInstruction,bo as makeAddNewRewardInstruction,li as makeClaimInstruction,Do as makeClaimInstructionV4,su as makeCreateCpmmPoolInInstruction,ba as makeCreateFarmInstruction,wu as makeCreateMarketInstruction,ga as makeCreatorWithdrawFarmRewardInstruction,au as makeDepositCpmmInInstruction,wa as makeDepositInstructionV3,Aa as makeDepositInstructionV5,Pa as makeDepositInstructionV6,Jw as makeDepositTokenInstruction,tA as makeDepositWithdrawInstruction,dP as makeInitPoolInstructionV4,ex as makePurchaseInstruction,yo as makeRestartRewardInstruction,Oa as makeSimulatePoolInfoInstruction,cu as makeSwapCpmmBaseInInInstruction,lu as makeSwapCpmmBaseOutInInstruction,xm as makeSwapFixedInInstruction,Bm as makeSwapFixedOutInstruction,uB as makeSwapInstruction,Wn as makeTransferInstruction,uu as makeWithdrawCpmmInInstruction,jn as makeWithdrawInstructionV3,Hn as makeWithdrawInstructionV5,Qn as makeWithdrawInstructionV6,eA as makeWithdrawTokenInstruction,TP as mockCreatePoolInfo,Ga as mockV3CreatePoolInfo,pm as modelDataInfoLayout,Ma as mostSignificantBit,ta as parseTokenAccountResp,OA as parseTokenInfo,zt as poolTypeV6,Fo as purchaseLayout,Wl as realFarmStateV3Layout,Dl as realFarmStateV5Layout,ql as realFarmV6Layout,Io as removeLiquidityInstruction,ko as removeLiquidityLayout,sB as route1Instruction,aB as route2Instruction,kd as routeInstruction,mP as simulatePoolInfoInstruction,_A as solToWSolToken,qt as splAccountLayout,ha as toToken,MA as toTokenAmount,NA as toTokenInfo,Bo as trailingZeros,Na as u16ToBytes,yP as u32ToBytes,nS as unionArr,Ql as updateFarmPoolInfo,oo as validateFarmRewards,im as voterStakeRegistryCreateDepositEntry,rm as voterStakeRegistryCreateVoter,Jl as voterStakeRegistryDeposit,em as voterStakeRegistryUpdateVoterWeightRecord,tm as voterStakeRegistryWithdraw,VA as wSolToSolToken,eo as withdrawRewardLayout};
|
|
2
2
|
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
3
3
|
//# sourceMappingURL=index.mjs.map
|