@raydium-io/raydium-sdk-v2 0.1.29-alpha → 0.1.30-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/api.d.ts +1 -1
- package/lib/api/index.d.ts +1 -1
- package/lib/api/type.d.ts +1 -1
- package/lib/common/accountInfo.d.ts +1 -1
- package/lib/common/bignumber.d.ts +1 -1
- package/lib/common/fractionUtil.d.ts +1 -1
- package/lib/common/index.d.ts +1 -1
- package/lib/common/transfer.d.ts +1 -1
- package/lib/common/txTool/txTool.d.ts +1 -1
- package/lib/common/txTool/txUtils.d.ts +1 -1
- package/lib/common/utility.d.ts +1 -1
- package/lib/index.d.ts +3 -3
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +1 -1
- package/lib/index.mjs.map +1 -1
- package/lib/module/amount.d.ts +1 -1
- package/lib/module/fraction.d.ts +1 -1
- package/lib/module/index.d.ts +1 -1
- package/lib/module/percent.d.ts +1 -1
- package/lib/module/price.d.ts +1 -1
- package/lib/raydium/account/account.d.ts +3 -3
- package/lib/raydium/account/index.d.ts +1 -1
- package/lib/raydium/account/instruction.d.ts +1 -1
- package/lib/raydium/account/types.d.ts +1 -1
- package/lib/raydium/account/util.d.ts +1 -1
- package/lib/raydium/clmm/clmm.d.ts +3 -3
- package/lib/raydium/clmm/index.d.ts +3 -3
- package/lib/raydium/clmm/instrument.d.ts +2 -2
- package/lib/raydium/clmm/layout.d.ts +1 -1
- package/lib/raydium/clmm/type.d.ts +2 -2
- package/lib/raydium/clmm/utils/math.d.ts +2 -2
- package/lib/raydium/clmm/utils/pool.d.ts +2 -2
- package/lib/raydium/clmm/utils/position.d.ts +2 -2
- package/lib/raydium/clmm/utils/tick.d.ts +2 -2
- package/lib/raydium/clmm/utils/tickQuery.d.ts +2 -2
- package/lib/raydium/clmm/utils/tickarrayBitmap.d.ts +2 -2
- package/lib/raydium/cpmm/cpmm.d.ts +3 -3
- package/lib/raydium/cpmm/index.d.ts +1 -1
- package/lib/raydium/cpmm/layout.d.ts +1 -1
- package/lib/raydium/cpmm/type.d.ts +1 -1
- package/lib/raydium/farm/config.d.ts +1 -1
- package/lib/raydium/farm/farm.d.ts +3 -3
- package/lib/raydium/farm/index.d.ts +1 -1
- package/lib/raydium/farm/instruction.d.ts +1 -1
- package/lib/raydium/farm/layout.d.ts +1 -1
- package/lib/raydium/farm/type.d.ts +1 -1
- package/lib/raydium/farm/util.d.ts +1 -1
- package/lib/raydium/ido/ido.d.ts +3 -3
- package/lib/raydium/ido/index.d.ts +3 -3
- package/lib/raydium/ido/instruction.d.ts +1 -1
- package/lib/raydium/ido/type.d.ts +1 -1
- package/lib/raydium/index.d.ts +3 -3
- package/lib/raydium/index.js +1 -1
- package/lib/raydium/index.js.map +1 -1
- package/lib/raydium/index.mjs +1 -1
- package/lib/raydium/index.mjs.map +1 -1
- package/lib/raydium/liquidity/index.d.ts +1 -1
- package/lib/raydium/liquidity/instruction.d.ts +1 -1
- package/lib/raydium/liquidity/layout.d.ts +6 -6
- package/lib/raydium/liquidity/liquidity.d.ts +3 -3
- package/lib/raydium/liquidity/liquidity.js +1 -1
- package/lib/raydium/liquidity/liquidity.js.map +1 -1
- package/lib/raydium/liquidity/liquidity.mjs +1 -1
- package/lib/raydium/liquidity/liquidity.mjs.map +1 -1
- package/lib/raydium/liquidity/type.d.ts +6 -2
- package/lib/raydium/liquidity/type.js.map +1 -1
- package/lib/raydium/liquidity/utils.d.ts +1 -1
- package/lib/raydium/marketV2/createMarket.d.ts +3 -3
- package/lib/raydium/marketV2/index.d.ts +3 -3
- package/lib/raydium/moduleBase.d.ts +3 -3
- package/lib/raydium/raydium.d.ts +3 -3
- package/lib/raydium/raydium.js +1 -1
- package/lib/raydium/raydium.js.map +1 -1
- package/lib/raydium/raydium.mjs +1 -1
- package/lib/raydium/raydium.mjs.map +1 -1
- package/lib/raydium/token/constant.d.ts +1 -1
- package/lib/raydium/token/index.d.ts +1 -1
- package/lib/raydium/token/token.d.ts +3 -3
- package/lib/raydium/token/type.d.ts +1 -1
- package/lib/raydium/token/utils.d.ts +1 -1
- package/lib/raydium/tradeV2/index.d.ts +2 -2
- package/lib/raydium/tradeV2/instrument.d.ts +2 -2
- package/lib/raydium/tradeV2/trade.d.ts +3 -3
- package/lib/raydium/tradeV2/type.d.ts +2 -2
- package/lib/raydium/type.d.ts +1 -1
- package/lib/raydium/utils1216/index.d.ts +3 -3
- package/lib/raydium/utils1216/utils1216.d.ts +3 -3
- package/lib/{raydium-1e9cad89.d.ts → raydium-8871c9e8.d.ts} +4 -4
- package/lib/{type-b95eb35d.d.ts → type-0de39dab.d.ts} +1 -1
- package/package.json +1 -1
- package/src/raydium/liquidity/liquidity.ts +76 -30
- package/src/raydium/liquidity/type.ts +5 -1
- package/lib/{type-60acc172.d.ts → type-2596119f.d.ts} +5 -5
package/lib/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var Nc=Object.defineProperty,Mc=Object.defineProperties;var _c=Object.getOwnPropertyDescriptors;var zo=Object.getOwnPropertySymbols;var js=Object.prototype.hasOwnProperty,Hs=Object.prototype.propertyIsEnumerable;var Qs=(o,e,t)=>e in o?Nc(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,C=(o,e)=>{for(var t in e||(e={}))js.call(e,t)&&Qs(o,t,e[t]);if(zo)for(var t of zo(e))Hs.call(e,t)&&Qs(o,t,e[t]);return o},F=(o,e)=>Mc(o,_c(e));var xe=(o,e)=>{var t={};for(var n in o)js.call(o,n)&&e.indexOf(n)<0&&(t[n]=o[n]);if(o!=null&&zo)for(var n of zo(o))e.indexOf(n)<0&&Hs.call(o,n)&&(t[n]=o[n]);return t};import Da from"axios";import{get as ni,set as Zs}from"lodash";import $s from"dayjs";import Vc from"dayjs/plugin/utc";$s.extend(Vc);var vc=(r=>(r[r.Error=0]="Error",r[r.Warning=1]="Warning",r[r.Info=2]="Info",r[r.Debug=3]="Debug",r))(vc||{}),oi=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 $s().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}},ri={},Js={};function ce(o){let e=ni(ri,o);if(!e){let t=ni(Js,o);e=new oi({name:o,logLevel:t}),Zs(ri,o,e)}return e}function Kf(o,e){Zs(Js,o,e);let t=ni(ri,o);t&&(t.level=e)}import{PublicKey as Hl}from"@solana/web3.js";import Zl from"bn.js";import Ql from"big.js";import tn from"bn.js";import Te from"bn.js";var Nn=9e15,en=1e9,ii="0123456789abcdef",Qo="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",jo="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",si={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Nn,maxE:Nn,crypto:!1},oa,Et,oe=!0,Zo="[DecimalError] ",Jt=Zo+"Invalid argument: ",ra=Zo+"Precision limit exceeded",ia=Zo+"crypto unavailable",sa="[object Decimal]",Ze=Math.floor,_e=Math.pow,Fc=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Ec=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Dc=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,aa=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,kt=1e7,ee=7,Wc=9007199254740991,qc=Qo.length-1,ai=jo.length-1,_={toStringTag:sa};_.absoluteValue=_.abs=function(){var o=new this.constructor(this);return o.s<0&&(o.s=1),Z(o)};_.ceil=function(){return Z(new this.constructor(this),this.e+1,2)};_.clampedTo=_.clamp=function(o,e){var t,n=this,r=n.constructor;if(o=new r(o),e=new r(e),!o.s||!e.s)return new r(NaN);if(o.gt(e))throw Error(Jt+e);return t=n.cmp(o),t<0?o:n.cmp(e)>0?e:new r(n)};_.comparedTo=_.cmp=function(o){var e,t,n,r,i=this,s=i.d,a=(o=new i.constructor(o)).d,c=i.s,u=o.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(i.e!==o.e)return i.e>o.e^c<0?1:-1;for(n=s.length,r=a.length,e=0,t=n<r?n:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^c<0?1:-1;return n===r?0:n>r^c<0?1:-1};_.cosine=_.cos=function(){var o,e,t=this,n=t.constructor;return t.d?t.d[0]?(o=n.precision,e=n.rounding,n.precision=o+Math.max(t.e,t.sd())+ee,n.rounding=1,t=Uc(n,da(n,t)),n.precision=o,n.rounding=e,Z(Et==2||Et==3?t.neg():t,o,e,!0)):new n(1):new n(NaN)};_.cubeRoot=_.cbrt=function(){var o,e,t,n,r,i,s,a,c,u,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(oe=!1,i=l.s*_e(l.s*l,1/3),!i||Math.abs(i)==1/0?(t=ze(l.d),o=l.e,(i=(o-t.length+1)%3)&&(t+=i==1||i==-2?"0":"00"),i=_e(t,1/3),o=Ze((o+1)/3)-(o%3==(o<0?-1:2)),i==1/0?t="5e"+o:(t=i.toExponential(),t=t.slice(0,t.indexOf("e")+1)+o),n=new m(t),n.s=l.s):n=new m(i.toString()),s=(o=m.precision)+3;;)if(a=n,c=a.times(a).times(a),u=c.plus(l),n=Pe(u.plus(l).times(a),u.plus(c),s+2,1),ze(a.d).slice(0,s)===(t=ze(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(Z(a,o+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(Z(n,o+1,1),e=!n.times(n).times(n).eq(l));break}return oe=!0,Z(n,o,m.rounding,e)};_.decimalPlaces=_.dp=function(){var o,e=this.d,t=NaN;if(e){if(o=e.length-1,t=(o-Ze(this.e/ee))*ee,o=e[o],o)for(;o%10==0;o/=10)t--;t<0&&(t=0)}return t};_.dividedBy=_.div=function(o){return Pe(this,new this.constructor(o))};_.dividedToIntegerBy=_.divToInt=function(o){var e=this,t=e.constructor;return Z(Pe(e,new t(o),0,1,1),t.precision,t.rounding)};_.equals=_.eq=function(o){return this.cmp(o)===0};_.floor=function(){return Z(new this.constructor(this),this.e+1,3)};_.greaterThan=_.gt=function(o){return this.cmp(o)>0};_.greaterThanOrEqualTo=_.gte=function(o){var e=this.cmp(o);return e==1||e===0};_.hyperbolicCosine=_.cosh=function(){var o,e,t,n,r,i=this,s=i.constructor,a=new s(1);if(!i.isFinite())return new s(i.s?1/0:NaN);if(i.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(i.e,i.sd())+4,s.rounding=1,r=i.d.length,r<32?(o=Math.ceil(r/3),e=(1/Jo(4,o)).toString()):(o=16,e="2.3283064365386962890625e-10"),i=Mn(s,1,i.times(e),new s(1),!0);for(var c,u=o,l=new s(8);u--;)c=i.times(i),i=a.minus(c.times(l.minus(c.times(l))));return Z(i,s.precision=t,s.rounding=n,!0)};_.hyperbolicSine=_.sinh=function(){var o,e,t,n,r=this,i=r.constructor;if(!r.isFinite()||r.isZero())return new i(r);if(e=i.precision,t=i.rounding,i.precision=e+Math.max(r.e,r.sd())+4,i.rounding=1,n=r.d.length,n<3)r=Mn(i,2,r,r,!0);else{o=1.4*Math.sqrt(n),o=o>16?16:o|0,r=r.times(1/Jo(5,o)),r=Mn(i,2,r,r,!0);for(var s,a=new i(5),c=new i(16),u=new i(20);o--;)s=r.times(r),r=r.times(a.plus(s.times(c.times(s).plus(u))))}return i.precision=e,i.rounding=t,Z(r,e,t,!0)};_.hyperbolicTangent=_.tanh=function(){var o,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(o=n.precision,e=n.rounding,n.precision=o+7,n.rounding=1,Pe(t.sinh(),t.cosh(),n.precision=o,n.rounding=e)):new n(t.s)};_.inverseCosine=_.acos=function(){var o,e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,i=t.rounding;return n!==-1?n===0?e.isNeg()?ht(t,r,i):new t(0):new t(NaN):e.isZero()?ht(t,r+4,i).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),o=ht(t,r+4,i).times(.5),t.precision=r,t.rounding=i,o.minus(e))};_.inverseHyperbolicCosine=_.acosh=function(){var o,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(o=n.precision,e=n.rounding,n.precision=o+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,oe=!1,t=t.times(t).minus(1).sqrt().plus(t),oe=!0,n.precision=o,n.rounding=e,t.ln()):new n(t)};_.inverseHyperbolicSine=_.asinh=function(){var o,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(o=n.precision,e=n.rounding,n.precision=o+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,oe=!1,t=t.times(t).plus(1).sqrt().plus(t),oe=!0,n.precision=o,n.rounding=e,t.ln())};_.inverseHyperbolicTangent=_.atanh=function(){var o,e,t,n,r=this,i=r.constructor;return r.isFinite()?r.e>=0?new i(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(o=i.precision,e=i.rounding,n=r.sd(),Math.max(n,o)<2*-r.e-1?Z(new i(r),o,e,!0):(i.precision=t=n-r.e,r=Pe(r.plus(1),new i(1).minus(r),t+o,1),i.precision=o+4,i.rounding=1,r=r.ln(),i.precision=o,i.rounding=e,r.times(.5))):new i(NaN)};_.inverseSine=_.asin=function(){var o,e,t,n,r=this,i=r.constructor;return r.isZero()?new i(r):(e=r.abs().cmp(1),t=i.precision,n=i.rounding,e!==-1?e===0?(o=ht(i,t+4,n).times(.5),o.s=r.s,o):new i(NaN):(i.precision=t+6,i.rounding=1,r=r.div(new i(1).minus(r.times(r)).sqrt().plus(1)).atan(),i.precision=t,i.rounding=n,r.times(2)))};_.inverseTangent=_.atan=function(){var o,e,t,n,r,i,s,a,c,u=this,l=u.constructor,m=l.precision,d=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&m+4<=ai)return s=ht(l,m+4,d).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(m+4<=ai)return s=ht(l,m+4,d).times(.5),s.s=u.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/ee+2|0),o=t;o;--o)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(oe=!1,e=Math.ceil(a/ee),n=1,c=u.times(u),s=new l(u),r=u;o!==-1;)if(r=r.times(c),i=s.minus(r.div(n+=2)),r=r.times(c),s=i.plus(r.div(n+=2)),s.d[e]!==void 0)for(o=e;s.d[o]===i.d[o]&&o--;);return t&&(s=s.times(2<<t-1)),oe=!0,Z(s,l.precision=m,l.rounding=d,!0)};_.isFinite=function(){return!!this.d};_.isInteger=_.isInt=function(){return!!this.d&&Ze(this.e/ee)>this.d.length-2};_.isNaN=function(){return!this.s};_.isNegative=_.isNeg=function(){return this.s<0};_.isPositive=_.isPos=function(){return this.s>0};_.isZero=function(){return!!this.d&&this.d[0]===0};_.lessThan=_.lt=function(o){return this.cmp(o)<0};_.lessThanOrEqualTo=_.lte=function(o){return this.cmp(o)<1};_.logarithm=_.log=function(o){var e,t,n,r,i,s,a,c,u=this,l=u.constructor,m=l.precision,d=l.rounding,p=5;if(o==null)o=new l(10),e=!0;else{if(o=new l(o),t=o.d,o.s<0||!t||!t[0]||o.eq(1))return new l(NaN);e=o.eq(10)}if(t=u.d,u.s<0||!t||!t[0]||u.eq(1))return new l(t&&!t[0]?-1/0:u.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)i=!0;else{for(r=t[0];r%10===0;)r/=10;i=r!==1}if(oe=!1,a=m+p,s=$t(u,a),n=e?Ho(l,a+10):$t(o,a),c=Pe(s,n,a,1),Zn(c.d,r=m,d))do if(a+=10,s=$t(u,a),n=e?Ho(l,a+10):$t(o,a),c=Pe(s,n,a,1),!i){+ze(c.d).slice(r+1,r+15)+1==1e14&&(c=Z(c,m+1,0));break}while(Zn(c.d,r+=10,d));return oe=!0,Z(c,m,d)};_.minus=_.sub=function(o){var e,t,n,r,i,s,a,c,u,l,m,d,p=this,y=p.constructor;if(o=new y(o),!p.d||!o.d)return!p.s||!o.s?o=new y(NaN):p.d?o.s=-o.s:o=new y(o.d||p.s!==o.s?p:NaN),o;if(p.s!=o.s)return o.s=-o.s,p.plus(o);if(u=p.d,d=o.d,a=y.precision,c=y.rounding,!u[0]||!d[0]){if(d[0])o.s=-o.s;else if(u[0])o=new y(p);else return new y(c===3?-0:0);return oe?Z(o,a,c):o}if(t=Ze(o.e/ee),l=Ze(p.e/ee),u=u.slice(),i=l-t,i){for(m=i<0,m?(e=u,i=-i,s=d.length):(e=d,t=l,s=u.length),n=Math.max(Math.ceil(a/ee),s)+2,i>n&&(i=n,e.length=1),e.reverse(),n=i;n--;)e.push(0);e.reverse()}else{for(n=u.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(u[n]!=d[n]){m=u[n]<d[n];break}i=0}for(m&&(e=u,u=d,d=e,o.s=-o.s),s=u.length,n=d.length-s;n>0;--n)u[s++]=0;for(n=d.length;n>i;){if(u[--n]<d[n]){for(r=n;r&&u[--r]===0;)u[r]=kt-1;--u[r],u[n]+=kt}u[n]-=d[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(o.d=u,o.e=$o(u,t),oe?Z(o,a,c):o):new y(c===3?-0:0)};_.modulo=_.mod=function(o){var e,t=this,n=t.constructor;return o=new n(o),!t.d||!o.s||o.d&&!o.d[0]?new n(NaN):!o.d||t.d&&!t.d[0]?Z(new n(t),n.precision,n.rounding):(oe=!1,n.modulo==9?(e=Pe(t,o.abs(),0,3,1),e.s*=o.s):e=Pe(t,o,0,n.modulo,1),e=e.times(o),oe=!0,t.minus(e))};_.naturalExponential=_.exp=function(){return ui(this)};_.naturalLogarithm=_.ln=function(){return $t(this)};_.negated=_.neg=function(){var o=new this.constructor(this);return o.s=-o.s,Z(o)};_.plus=_.add=function(o){var e,t,n,r,i,s,a,c,u,l,m=this,d=m.constructor;if(o=new d(o),!m.d||!o.d)return!m.s||!o.s?o=new d(NaN):m.d||(o=new d(o.d||m.s===o.s?m:NaN)),o;if(m.s!=o.s)return o.s=-o.s,m.minus(o);if(u=m.d,l=o.d,a=d.precision,c=d.rounding,!u[0]||!l[0])return l[0]||(o=new d(m)),oe?Z(o,a,c):o;if(i=Ze(m.e/ee),n=Ze(o.e/ee),u=u.slice(),r=i-n,r){for(r<0?(t=u,r=-r,s=l.length):(t=l,n=i,s=u.length),i=Math.ceil(a/ee),s=i>s?i+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=u.length,r=l.length,s-r<0&&(r=s,t=l,l=u,u=t),e=0;r;)e=(u[--r]=u[r]+l[r]+e)/kt|0,u[r]%=kt;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return o.d=u,o.e=$o(u,n),oe?Z(o,a,c):o};_.precision=_.sd=function(o){var e,t=this;if(o!==void 0&&o!==!!o&&o!==1&&o!==0)throw Error(Jt+o);return t.d?(e=ua(t.d),o&&t.e+1>e&&(e=t.e+1)):e=NaN,e};_.round=function(){var o=this,e=o.constructor;return Z(new e(o),o.e+1,e.rounding)};_.sine=_.sin=function(){var o,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(o=n.precision,e=n.rounding,n.precision=o+Math.max(t.e,t.sd())+ee,n.rounding=1,t=Xc(n,da(n,t)),n.precision=o,n.rounding=e,Z(Et>2?t.neg():t,o,e,!0)):new n(NaN)};_.squareRoot=_.sqrt=function(){var o,e,t,n,r,i,s=this,a=s.d,c=s.e,u=s.s,l=s.constructor;if(u!==1||!a||!a[0])return new l(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(oe=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=ze(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=Ze((c+1)/2)-(c<0||c%2),u==1/0?e="5e"+c:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+c),n=new l(e)):n=new l(u.toString()),t=(c=l.precision)+3;;)if(i=n,n=i.plus(Pe(s,i,t+2,1)).times(.5),ze(i.d).slice(0,t)===(e=ze(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(Z(i,c+1,0),i.times(i).eq(s))){n=i;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(Z(n,c+1,1),o=!n.times(n).eq(s));break}return oe=!0,Z(n,c,l.rounding,o)};_.tangent=_.tan=function(){var o,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(o=n.precision,e=n.rounding,n.precision=o+10,n.rounding=1,t=t.sin(),t.s=1,t=Pe(t,new n(1).minus(t.times(t)).sqrt(),o+10,0),n.precision=o,n.rounding=e,Z(Et==2||Et==4?t.neg():t,o,e,!0)):new n(NaN)};_.times=_.mul=function(o){var e,t,n,r,i,s,a,c,u,l=this,m=l.constructor,d=l.d,p=(o=new m(o)).d;if(o.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!o.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?o.s/0:o.s*0);for(t=Ze(l.e/ee)+Ze(o.e/ee),c=d.length,u=p.length,c<u&&(i=d,d=p,p=i,s=c,c=u,u=s),i=[],s=c+u,n=s;n--;)i.push(0);for(n=u;--n>=0;){for(e=0,r=c+n;r>n;)a=i[r]+p[n]*d[r-n-1]+e,i[r--]=a%kt|0,e=a/kt|0;i[r]=(i[r]+e)%kt|0}for(;!i[--s];)i.pop();return e?++t:i.shift(),o.d=i,o.e=$o(i,t),oe?Z(o,m.precision,m.rounding):o};_.toBinary=function(o,e){return li(this,2,o,e)};_.toDecimalPlaces=_.toDP=function(o,e){var t=this,n=t.constructor;return t=new n(t),o===void 0?t:(at(o,0,en),e===void 0?e=n.rounding:at(e,0,8),Z(t,o+t.e+1,e))};_.toExponential=function(o,e){var t,n=this,r=n.constructor;return o===void 0?t=Ct(n,!0):(at(o,0,en),e===void 0?e=r.rounding:at(e,0,8),n=Z(new r(n),o+1,e),t=Ct(n,!0,o+1)),n.isNeg()&&!n.isZero()?"-"+t:t};_.toFixed=function(o,e){var t,n,r=this,i=r.constructor;return o===void 0?t=Ct(r):(at(o,0,en),e===void 0?e=i.rounding:at(e,0,8),n=Z(new i(r),o+r.e+1,e),t=Ct(n,!1,o+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};_.toFraction=function(o){var e,t,n,r,i,s,a,c,u,l,m,d,p=this,y=p.d,f=p.constructor;if(!y)return new f(p);if(u=t=new f(1),n=c=new f(0),e=new f(n),i=e.e=ua(y)-p.e-1,s=i%ee,e.d[0]=_e(10,s<0?ee+s:s),o==null)o=i>0?e:u;else{if(a=new f(o),!a.isInt()||a.lt(u))throw Error(Jt+a);o=a.gt(e)?i>0?e:u:a}for(oe=!1,a=new f(ze(y)),l=f.precision,f.precision=i=y.length*ee*2;m=Pe(a,e,0,1,1),r=t.plus(m.times(n)),r.cmp(o)!=1;)t=n,n=r,r=u,u=c.plus(m.times(r)),c=r,r=e,e=a.minus(m.times(r)),a=r;return r=Pe(o.minus(t),n,0,1,1),c=c.plus(r.times(u)),t=t.plus(r.times(n)),c.s=u.s=p.s,d=Pe(u,n,i,1).minus(p).abs().cmp(Pe(c,t,i,1).minus(p).abs())<1?[u,n]:[c,t],f.precision=l,oe=!0,d};_.toHexadecimal=_.toHex=function(o,e){return li(this,16,o,e)};_.toNearest=function(o,e){var t=this,n=t.constructor;if(t=new n(t),o==null){if(!t.d)return t;o=new n(1),e=n.rounding}else{if(o=new n(o),e===void 0?e=n.rounding:at(e,0,8),!t.d)return o.s?t:o;if(!o.d)return o.s&&(o.s=t.s),o}return o.d[0]?(oe=!1,t=Pe(t,o,0,e,1).times(o),oe=!0,Z(t)):(o.s=t.s,t=o),t};_.toNumber=function(){return+this};_.toOctal=function(o,e){return li(this,8,o,e)};_.toPower=_.pow=function(o){var e,t,n,r,i,s,a=this,c=a.constructor,u=+(o=new c(o));if(!a.d||!o.d||!a.d[0]||!o.d[0])return new c(_e(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,i=c.rounding,o.eq(1))return Z(a,n,i);if(e=Ze(o.e/ee),e>=o.d.length-1&&(t=u<0?-u:u)<=Wc)return r=ca(c,a,t,n),o.s<0?new c(1).div(r):Z(r,n,i);if(s=a.s,s<0){if(e<o.d.length-1)return new c(NaN);if((o.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=_e(+a,u),e=t==0||!isFinite(t)?Ze(u*(Math.log("0."+ze(a.d))/Math.LN10+a.e+1)):new c(t+"").e,e>c.maxE+1||e<c.minE-1?new c(e>0?s/0:0):(oe=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),r=ui(o.times($t(a,n+t)),n),r.d&&(r=Z(r,n+5,1),Zn(r.d,n,i)&&(e=n+10,r=Z(ui(o.times($t(a,e+t)),e),e+5,1),+ze(r.d).slice(n+1,n+15)+1==1e14&&(r=Z(r,n+1,0)))),r.s=s,oe=!0,c.rounding=i,Z(r,n,i))};_.toPrecision=function(o,e){var t,n=this,r=n.constructor;return o===void 0?t=Ct(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(at(o,1,en),e===void 0?e=r.rounding:at(e,0,8),n=Z(new r(n),o,e),t=Ct(n,o<=n.e||n.e<=r.toExpNeg,o)),n.isNeg()&&!n.isZero()?"-"+t:t};_.toSignificantDigits=_.toSD=function(o,e){var t=this,n=t.constructor;return o===void 0?(o=n.precision,e=n.rounding):(at(o,1,en),e===void 0?e=n.rounding:at(e,0,8)),Z(new n(t),o,e)};_.toString=function(){var o=this,e=o.constructor,t=Ct(o,o.e<=e.toExpNeg||o.e>=e.toExpPos);return o.isNeg()&&!o.isZero()?"-"+t:t};_.truncated=_.trunc=function(){return Z(new this.constructor(this),this.e+1,1)};_.valueOf=_.toJSON=function(){var o=this,e=o.constructor,t=Ct(o,o.e<=e.toExpNeg||o.e>=e.toExpPos);return o.isNeg()?"-"+t:t};function ze(o){var e,t,n,r=o.length-1,i="",s=o[0];if(r>0){for(i+=s,e=1;e<r;e++)n=o[e]+"",t=ee-n.length,t&&(i+=Zt(t)),i+=n;s=o[e],n=s+"",t=ee-n.length,t&&(i+=Zt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return i+s}function at(o,e,t){if(o!==~~o||o<e||o>t)throw Error(Jt+o)}function Zn(o,e,t,n){var r,i,s,a;for(i=o[0];i>=10;i/=10)--e;return--e<0?(e+=ee,r=0):(r=Math.ceil((e+1)/ee),e%=ee),i=_e(10,ee-e),a=o[r]%i|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==i||t>3&&a+1==i/2)&&(o[r+1]/i/100|0)==_e(10,e-2)-1||(a==i/2||a==0)&&(o[r+1]/i/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==i||!n&&t>3&&a+1==i/2)&&(o[r+1]/i/1e3|0)==_e(10,e-3)-1,s}function Yo(o,e,t){for(var n,r=[0],i,s=0,a=o.length;s<a;){for(i=r.length;i--;)r[i]*=e;for(r[0]+=ii.indexOf(o.charAt(s++)),n=0;n<r.length;n++)r[n]>t-1&&(r[n+1]===void 0&&(r[n+1]=0),r[n+1]+=r[n]/t|0,r[n]%=t)}return r.reverse()}function Uc(o,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/Jo(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),o.precision+=t,e=Mn(o,1,e.times(r),new o(1));for(var i=t;i--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return o.precision-=t,e}var Pe=function(){function o(n,r,i){var s,a=0,c=n.length;for(n=n.slice();c--;)s=n[c]*r+a,n[c]=s%i|0,a=s/i|0;return a&&n.unshift(a),n}function e(n,r,i,s){var a,c;if(i!=s)c=i>s?1:-1;else for(a=c=0;a<i;a++)if(n[a]!=r[a]){c=n[a]>r[a]?1:-1;break}return c}function t(n,r,i,s){for(var a=0;i--;)n[i]-=a,a=n[i]<r[i]?1:0,n[i]=a*s+n[i]-r[i];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,i,s,a,c){var u,l,m,d,p,y,f,b,g,h,P,k,B,T,S,x,R,I,N,q,D=n.constructor,J=n.s==r.s?1:-1,G=n.d,W=r.d;if(!G||!G[0]||!W||!W[0])return new D(!n.s||!r.s||(G?W&&G[0]==W[0]:!W)?NaN:G&&G[0]==0||!W?J*0:J/0);for(c?(p=1,l=n.e-r.e):(c=kt,p=ee,l=Ze(n.e/p)-Ze(r.e/p)),N=W.length,R=G.length,g=new D(J),h=g.d=[],m=0;W[m]==(G[m]||0);m++);if(W[m]>(G[m]||0)&&l--,i==null?(T=i=D.precision,s=D.rounding):a?T=i+(n.e-r.e)+1:T=i,T<0)h.push(1),y=!0;else{if(T=T/p+2|0,m=0,N==1){for(d=0,W=W[0],T++;(m<R||d)&&T--;m++)S=d*c+(G[m]||0),h[m]=S/W|0,d=S%W|0;y=d||m<R}else{for(d=c/(W[0]+1)|0,d>1&&(W=o(W,d,c),G=o(G,d,c),N=W.length,R=G.length),x=N,P=G.slice(0,N),k=P.length;k<N;)P[k++]=0;q=W.slice(),q.unshift(0),I=W[0],W[1]>=c/2&&++I;do d=0,u=e(W,P,N,k),u<0?(B=P[0],N!=k&&(B=B*c+(P[1]||0)),d=B/I|0,d>1?(d>=c&&(d=c-1),f=o(W,d,c),b=f.length,k=P.length,u=e(f,P,b,k),u==1&&(d--,t(f,N<b?q:W,b,c))):(d==0&&(u=d=1),f=W.slice()),b=f.length,b<k&&f.unshift(0),t(P,f,k,c),u==-1&&(k=P.length,u=e(W,P,N,k),u<1&&(d++,t(P,N<k?q:W,k,c))),k=P.length):u===0&&(d++,P=[0]),h[m++]=d,u&&P[0]?P[k++]=G[x]||0:(P=[G[x]],k=1);while((x++<R||P[0]!==void 0)&&T--);y=P[0]!==void 0}h[0]||h.shift()}if(p==1)g.e=l,oa=y;else{for(m=1,d=h[0];d>=10;d/=10)m++;g.e=m+l*p-1,Z(g,a?i+g.e+1:i,s,y)}return g}}();function Z(o,e,t,n){var r,i,s,a,c,u,l,m,d,p=o.constructor;e:if(e!=null){if(m=o.d,!m)return o;for(r=1,a=m[0];a>=10;a/=10)r++;if(i=e-r,i<0)i+=ee,s=e,l=m[d=0],c=l/_e(10,r-s-1)%10|0;else if(d=Math.ceil((i+1)/ee),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=c=0,r=1,i%=ee,s=i-ee+1}else break e;else{for(l=a=m[d],r=1;a>=10;a/=10)r++;i%=ee,s=i-ee+r,c=s<0?0:l/_e(10,r-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%_e(10,r-s-1)),u=t<4?(c||n)&&(t==0||t==(o.s<0?3:2)):c>5||c==5&&(t==4||n||t==6&&(i>0?s>0?l/_e(10,r-s):0:m[d-1])%10&1||t==(o.s<0?8:7)),e<1||!m[0])return m.length=0,u?(e-=o.e+1,m[0]=_e(10,(ee-e%ee)%ee),o.e=-e||0):m[0]=o.e=0,o;if(i==0?(m.length=d,a=1,d--):(m.length=d+1,a=_e(10,ee-i),m[d]=s>0?(l/_e(10,r-s)%_e(10,s)|0)*a:0),u)for(;;)if(d==0){for(i=1,s=m[0];s>=10;s/=10)i++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;i!=a&&(o.e++,m[0]==kt&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=kt)break;m[d--]=0,a=1}for(i=m.length;m[--i]===0;)m.pop()}return oe&&(o.e>p.maxE?(o.d=null,o.e=NaN):o.e<p.minE&&(o.e=0,o.d=[0])),o}function Ct(o,e,t){if(!o.isFinite())return ma(o);var n,r=o.e,i=ze(o.d),s=i.length;return e?(t&&(n=t-s)>0?i=i.charAt(0)+"."+i.slice(1)+Zt(n):s>1&&(i=i.charAt(0)+"."+i.slice(1)),i=i+(o.e<0?"e":"e+")+o.e):r<0?(i="0."+Zt(-r-1)+i,t&&(n=t-s)>0&&(i+=Zt(n))):r>=s?(i+=Zt(r+1-s),t&&(n=t-r-1)>0&&(i=i+"."+Zt(n))):((n=r+1)<s&&(i=i.slice(0,n)+"."+i.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(i+="."),i+=Zt(n))),i}function $o(o,e){var t=o[0];for(e*=ee;t>=10;t/=10)e++;return e}function Ho(o,e,t){if(e>qc)throw oe=!0,t&&(o.precision=t),Error(ra);return Z(new o(Qo),e,1,!0)}function ht(o,e,t){if(e>ai)throw Error(ra);return Z(new o(jo),e,t,!0)}function ua(o){var e=o.length-1,t=e*ee+1;if(e=o[e],e){for(;e%10==0;e/=10)t--;for(e=o[0];e>=10;e/=10)t++}return t}function Zt(o){for(var e="";o--;)e+="0";return e}function ca(o,e,t,n){var r,i=new o(1),s=Math.ceil(n/ee+4);for(oe=!1;;){if(t%2&&(i=i.times(e),ta(i.d,s)&&(r=!0)),t=Ze(t/2),t===0){t=i.d.length-1,r&&i.d[t]===0&&++i.d[t];break}e=e.times(e),ta(e.d,s)}return oe=!0,i}function ea(o){return o.d[o.d.length-1]&1}function la(o,e,t){for(var n,r=new o(e[0]),i=0;++i<e.length;)if(n=new o(e[i]),n.s)r[t](n)&&(r=n);else{r=n;break}return r}function ui(o,e){var t,n,r,i,s,a,c,u=0,l=0,m=0,d=o.constructor,p=d.rounding,y=d.precision;if(!o.d||!o.d[0]||o.e>17)return new d(o.d?o.d[0]?o.s<0?0:1/0:1:o.s?o.s<0?0:o:0/0);for(e==null?(oe=!1,c=y):c=e,a=new d(.03125);o.e>-2;)o=o.times(a),m+=5;for(n=Math.log(_e(2,m))/Math.LN10*2+5|0,c+=n,t=i=s=new d(1),d.precision=c;;){if(i=Z(i.times(o),c,1),t=t.times(++l),a=s.plus(Pe(i,t,c,1)),ze(a.d).slice(0,c)===ze(s.d).slice(0,c)){for(r=m;r--;)s=Z(s.times(s),c,1);if(e==null)if(u<3&&Zn(s.d,c-n,p,u))d.precision=c+=10,t=i=a=new d(1),l=0,u++;else return Z(s,d.precision=y,p,oe=!0);else return d.precision=y,s}s=a}}function $t(o,e){var t,n,r,i,s,a,c,u,l,m,d,p=1,y=10,f=o,b=f.d,g=f.constructor,h=g.rounding,P=g.precision;if(f.s<0||!b||!b[0]||!f.e&&b[0]==1&&b.length==1)return new g(b&&!b[0]?-1/0:f.s!=1?NaN:b?0:f);if(e==null?(oe=!1,l=P):l=e,g.precision=l+=y,t=ze(b),n=t.charAt(0),Math.abs(i=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(o),t=ze(f.d),n=t.charAt(0),p++;i=f.e,n>1?(f=new g("0."+t),i++):f=new g(n+"."+t.slice(1))}else return u=Ho(g,l+2,P).times(i+""),f=$t(new g(n+"."+t.slice(1)),l-y).plus(u),g.precision=P,e==null?Z(f,P,h,oe=!0):f;for(m=f,c=s=f=Pe(f.minus(1),f.plus(1),l,1),d=Z(f.times(f),l,1),r=3;;){if(s=Z(s.times(d),l,1),u=c.plus(Pe(s,new g(r),l,1)),ze(u.d).slice(0,l)===ze(c.d).slice(0,l))if(c=c.times(2),i!==0&&(c=c.plus(Ho(g,l+2,P).times(i+""))),c=Pe(c,new g(p),l,1),e==null)if(Zn(c.d,l-y,h,a))g.precision=l+=y,u=s=f=Pe(m.minus(1),m.plus(1),l,1),d=Z(f.times(f),l,1),r=a=1;else return Z(c,g.precision=P,h,oe=!0);else return g.precision=P,c;c=u,r+=2}}function ma(o){return String(o.s*o.s/0)}function ci(o,e){var t,n,r;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(n,r),e){if(r-=n,o.e=t=t-n-1,o.d=[],n=(t+1)%ee,t<0&&(n+=ee),n<r){for(n&&o.d.push(+e.slice(0,n)),r-=ee;n<r;)o.d.push(+e.slice(n,n+=ee));e=e.slice(n),n=ee-e.length}else n-=r;for(;n--;)e+="0";o.d.push(+e),oe&&(o.e>o.constructor.maxE?(o.d=null,o.e=NaN):o.e<o.constructor.minE&&(o.e=0,o.d=[0]))}else o.e=0,o.d=[0];return o}function Gc(o,e){var t,n,r,i,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),aa.test(e))return ci(o,e)}else if(e==="Infinity"||e==="NaN")return+e||(o.s=NaN),o.e=NaN,o.d=null,o;if(Ec.test(e))t=16,e=e.toLowerCase();else if(Fc.test(e))t=2;else if(Dc.test(e))t=8;else throw Error(Jt+e);for(i=e.search(/p/i),i>0?(c=+e.slice(i+1),e=e.substring(2,i)):e=e.slice(2),i=e.indexOf("."),s=i>=0,n=o.constructor,s&&(e=e.replace(".",""),a=e.length,i=a-i,r=ca(n,new n(t),i,i*2)),u=Yo(e,t,kt),l=u.length-1,i=l;u[i]===0;--i)u.pop();return i<0?new n(o.s*0):(o.e=$o(u,l),o.d=u,oe=!1,s&&(o=Pe(o,r,a*4)),c&&(o=o.times(Math.abs(c)<54?_e(2,c):$n.pow(2,c))),oe=!0,o)}function Xc(o,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Mn(o,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/Jo(5,t)),e=Mn(o,2,e,e);for(var r,i=new o(5),s=new o(16),a=new o(20);t--;)r=e.times(e),e=e.times(i.plus(r.times(s.times(r).minus(a))));return e}function Mn(o,e,t,n,r){var i,s,a,c,u=1,l=o.precision,m=Math.ceil(l/ee);for(oe=!1,c=t.times(t),a=new o(n);;){if(s=Pe(a.times(c),new o(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=Pe(s.times(c),new o(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(i=m;s.d[i]===a.d[i]&&i--;);if(i==-1)break}i=a,a=n,n=s,s=i,u++}return oe=!0,s.d.length=m+1,s}function Jo(o,e){for(var t=o;--e;)t*=o;return t}function da(o,e){var t,n=e.s<0,r=ht(o,o.precision,1),i=r.times(.5);if(e=e.abs(),e.lte(i))return Et=n?4:1,e;if(t=e.divToInt(r),t.isZero())Et=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(i))return Et=ea(t)?n?2:3:n?4:1,e;Et=ea(t)?n?1:4:n?3:2}return e.minus(r).abs()}function li(o,e,t,n){var r,i,s,a,c,u,l,m,d,p=o.constructor,y=t!==void 0;if(y?(at(t,1,en),n===void 0?n=p.rounding:at(n,0,8)):(t=p.precision,n=p.rounding),!o.isFinite())l=ma(o);else{for(l=Ct(o),s=l.indexOf("."),y?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=Yo(Ct(d),10,r),d.e=d.d.length),m=Yo(l,10,r),i=c=m.length;m[--c]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?i--:(o=new p(o),o.d=m,o.e=i,o=Pe(o,d,t,n,0,r),m=o.d,i=o.e,u=oa),s=m[t],a=r/2,u=u||m[t+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(o.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&m[t-1]&1||n===(o.s<0?8:7)),m.length=t,u)for(;++m[--t]>r-1;)m[t]=0,t||(++i,m.unshift(1));for(c=m.length;!m[c-1];--c);for(s=0,l="";s<c;s++)l+=ii.charAt(m[s]);if(y){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(m=Yo(l,r,e),c=m.length;!m[c-1];--c);for(s=1,l="1.";s<c;s++)l+=ii.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(i<0?"p":"p+")+i}else if(i<0){for(;++i;)l="0"+l;l="0."+l}else if(++i>c)for(i-=c;i--;)l+="0";else i<c&&(l=l.slice(0,i)+"."+l.slice(i))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return o.s<0?"-"+l:l}function ta(o,e){if(o.length>e)return o.length=e,!0}function zc(o){return new this(o).abs()}function Yc(o){return new this(o).acos()}function Qc(o){return new this(o).acosh()}function jc(o,e){return new this(o).plus(e)}function Hc(o){return new this(o).asin()}function Zc(o){return new this(o).asinh()}function $c(o){return new this(o).atan()}function Jc(o){return new this(o).atanh()}function el(o,e){o=new this(o),e=new this(e);var t,n=this.precision,r=this.rounding,i=n+4;return!o.s||!e.s?t=new this(NaN):!o.d&&!e.d?(t=ht(this,i,1).times(e.s>0?.25:.75),t.s=o.s):!e.d||o.isZero()?(t=e.s<0?ht(this,n,r):new this(0),t.s=o.s):!o.d||e.isZero()?(t=ht(this,i,1).times(.5),t.s=o.s):e.s<0?(this.precision=i,this.rounding=1,t=this.atan(Pe(o,e,i,1)),e=ht(this,i,1),this.precision=n,this.rounding=r,t=o.s<0?t.minus(e):t.plus(e)):t=this.atan(Pe(o,e,i,1)),t}function tl(o){return new this(o).cbrt()}function nl(o){return Z(o=new this(o),o.e+1,2)}function ol(o,e,t){return new this(o).clamp(e,t)}function rl(o){if(!o||typeof o!="object")throw Error(Zo+"Object expected");var e,t,n,r=o.defaults===!0,i=["precision",1,en,"rounding",0,8,"toExpNeg",-Nn,0,"toExpPos",0,Nn,"maxE",0,Nn,"minE",-Nn,0,"modulo",0,9];for(e=0;e<i.length;e+=3)if(t=i[e],r&&(this[t]=si[t]),(n=o[t])!==void 0)if(Ze(n)===n&&n>=i[e+1]&&n<=i[e+2])this[t]=n;else throw Error(Jt+t+": "+n);if(t="crypto",r&&(this[t]=si[t]),(n=o[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(ia);else this[t]=!1;else throw Error(Jt+t+": "+n);return this}function il(o){return new this(o).cos()}function sl(o){return new this(o).cosh()}function pa(o){var e,t,n;function r(i){var s,a,c,u=this;if(!(u instanceof r))return new r(i);if(u.constructor=r,na(i)){u.s=i.s,oe?!i.d||i.e>r.maxE?(u.e=NaN,u.d=null):i.e<r.minE?(u.e=0,u.d=[0]):(u.e=i.e,u.d=i.d.slice()):(u.e=i.e,u.d=i.d?i.d.slice():i.d);return}if(c=typeof i,c==="number"){if(i===0){u.s=1/i<0?-1:1,u.e=0,u.d=[0];return}if(i<0?(i=-i,u.s=-1):u.s=1,i===~~i&&i<1e7){for(s=0,a=i;a>=10;a/=10)s++;oe?s>r.maxE?(u.e=NaN,u.d=null):s<r.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[i]):(u.e=s,u.d=[i]);return}else if(i*0!==0){i||(u.s=NaN),u.e=NaN,u.d=null;return}return ci(u,i.toString())}else if(c!=="string")throw Error(Jt+i);return(a=i.charCodeAt(0))===45?(i=i.slice(1),u.s=-1):(a===43&&(i=i.slice(1)),u.s=1),aa.test(i)?ci(u,i):Gc(u,i)}if(r.prototype=_,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=rl,r.clone=pa,r.isDecimal=na,r.abs=zc,r.acos=Yc,r.acosh=Qc,r.add=jc,r.asin=Hc,r.asinh=Zc,r.atan=$c,r.atanh=Jc,r.atan2=el,r.cbrt=tl,r.ceil=nl,r.clamp=ol,r.cos=il,r.cosh=sl,r.div=al,r.exp=ul,r.floor=cl,r.hypot=ll,r.ln=ml,r.log=dl,r.log10=fl,r.log2=pl,r.max=yl,r.min=bl,r.mod=gl,r.mul=Al,r.pow=wl,r.random=Pl,r.round=hl,r.sign=kl,r.sin=Tl,r.sinh=Il,r.sqrt=Bl,r.sub=xl,r.sum=Sl,r.tan=Kl,r.tanh=Cl,r.trunc=Rl,o===void 0&&(o={}),o&&o.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)o.hasOwnProperty(t=n[e++])||(o[t]=this[t]);return r.config(o),r}function al(o,e){return new this(o).div(e)}function ul(o){return new this(o).exp()}function cl(o){return Z(o=new this(o),o.e+1,3)}function ll(){var o,e,t=new this(0);for(oe=!1,o=0;o<arguments.length;)if(e=new this(arguments[o++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return oe=!0,new this(1/0);t=e}return oe=!0,t.sqrt()}function na(o){return o instanceof $n||o&&o.toStringTag===sa||!1}function ml(o){return new this(o).ln()}function dl(o,e){return new this(o).log(e)}function pl(o){return new this(o).log(2)}function fl(o){return new this(o).log(10)}function yl(){return la(this,arguments,"lt")}function bl(){return la(this,arguments,"gt")}function gl(o,e){return new this(o).mod(e)}function Al(o,e){return new this(o).mul(e)}function wl(o,e){return new this(o).pow(e)}function Pl(o){var e,t,n,r,i=0,s=new this(1),a=[];if(o===void 0?o=this.precision:at(o,1,en),n=Math.ceil(o/ee),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));i<n;)r=e[i],r>=429e7?e[i]=crypto.getRandomValues(new Uint32Array(1))[0]:a[i++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);i<n;)r=e[i]+(e[i+1]<<8)+(e[i+2]<<16)+((e[i+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,i):(a.push(r%1e7),i+=4);i=n/4}else throw Error(ia);else for(;i<n;)a[i++]=Math.random()*1e7|0;for(n=a[--i],o%=ee,n&&o&&(r=_e(10,ee-o),a[i]=(n/r|0)*r);a[i]===0;i--)a.pop();if(i<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=ee)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<ee&&(t-=ee-n)}return s.e=t,s.d=a,s}function hl(o){return Z(o=new this(o),o.e+1,this.rounding)}function kl(o){return o=new this(o),o.d?o.d[0]?o.s:0*o.s:o.s||NaN}function Tl(o){return new this(o).sin()}function Il(o){return new this(o).sinh()}function Bl(o){return new this(o).sqrt()}function xl(o,e){return new this(o).sub(e)}function Sl(){var o=0,e=arguments,t=new this(e[o]);for(oe=!1;t.s&&++o<e.length;)t=t.plus(e[o]);return oe=!0,Z(t,this.precision,this.rounding)}function Kl(o){return new this(o).tan()}function Cl(o){return new this(o).tanh()}function Rl(o){return Z(o=new this(o),o.e+1,1)}_[Symbol.for("nodejs.util.inspect.custom")]=_.toString;_[Symbol.toStringTag]="Decimal";var $n=_.constructor=pa(si);Qo=new $n(Qo);jo=new $n(jo);var V=$n;import{PublicKey as yi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ll}from"@solana/spl-token";import{PublicKey as Be,SystemProgram as fa,SYSVAR_RENT_PUBKEY as Ol}from"@solana/web3.js";function A({pubkey:o,isSigner:e=!1,isWritable:t=!0}){return{pubkey:o,isWritable:t,isSigner:e}}var mi=[A({pubkey:Ll,isWritable:!1}),A({pubkey:fa.programId,isWritable:!1}),A({pubkey:Ol,isWritable:!1})];function di({publicKey:o,transformSol:e}){let t=pi(o.toString());if(t instanceof Be)return e&&t.equals(Ve)?$:t;if(e&&t.toString()===Ve.toBase58())return $;if(typeof t=="string"){if(t===Be.default.toBase58())return Be.default;try{return new Be(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function pi(o){try{return new Be(o)}catch{return o}}var er=new Be("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),tr=new Be("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ut=new Be("SysvarRent111111111111111111111111111111111"),fi=new Be("SysvarC1ock11111111111111111111111111111111"),_n=new Be("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),nr=new Be("Sysvar1nstructions1111111111111111111111111"),or=fa.programId,Mf=new Be("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),_f=new Be("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Vf=new Be("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),vf=new Be("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Ff=new Be("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ef=new Be("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Df=new Be("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Wf=new Be("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),qf=new Be("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Uf=new Be("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Gf=new Be("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),$=new Be("So11111111111111111111111111111111111111112"),Ve=Be.default;function mt(o){return di({publicKey:o,transformSol:!0})}import{PublicKey as Nl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ya}from"@solana/spl-token";var Rt={chainId:101,address:Nl.default.toBase58(),programId:ya.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ve={chainId:101,address:"So11111111111111111111111111111111111111112",programId:ya.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 bi=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:i=!1,isToken2022:s=!1}){if(e===Ve.toBase58()||e instanceof yi&&Ve.equals(e)){this.decimals=ve.decimals,this.symbol=ve.symbol,this.name=ve.name,this.mint=new yi(ve.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=r||e.toString().substring(0,6),this.mint=i?yi.default:di({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ye=bi;ye.WSOL=new bi(F(C({},ve),{mint:ve.address}));import ir from"big.js";import Vl from"bn.js";import vl from"decimal.js-light";import Ml from"toformat";var _l=Ml,Jn=_l;var rr=ce("module/fraction"),gi=Jn(ir),eo=Jn(vl),Fl={[0]:eo.ROUND_DOWN,[1]:eo.ROUND_HALF_UP,[2]:eo.ROUND_UP},El={[0]:ir.roundDown,[1]:ir.roundHalfUp,[2]:ir.roundUp},re=class{constructor(e,t=new Vl(1)){this.numerator=Y(e),this.denominator=Y(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new re(this.denominator,this.numerator)}add(e){let t=e instanceof re?e:new re(Y(e));return this.denominator.eq(t.denominator)?new re(this.numerator.add(t.numerator),this.denominator):new re(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof re?e:new re(Y(e));return this.denominator.eq(t.denominator)?new re(this.numerator.sub(t.numerator),this.denominator):new re(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof re?e:new re(Y(e));return new re(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof re?e:new re(Y(e));return new re(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||rr.logWithError(`${e} is not an integer.`),e<=0&&rr.logWithError(`${e} is not positive.`),eo.set({precision:e+1,rounding:Fl[n]});let r=new eo(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||rr.logWithError(`${e} is not an integer.`),e<0&&rr.logWithError(`${e} is negative.`),gi.DP=e,gi.RM=El[n]||1,new gi(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Dl=ce("Raydium_price"),qe=class extends re{constructor(t){let{baseToken:n,quoteToken:r,numerator:i,denominator:s}=t;super(i,s);this.baseToken=n,this.quoteToken=r,this.scalar=new re(wi(n.decimals),wi(r.decimals))}get raw(){return new re(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new qe({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Dl.logWithError("mul token not equals");let n=super.mul(t);return new qe({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};var Pi=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},to=Pi;to.SOL=new Pi(Rt);function wy(o,e){return o instanceof ye&&e instanceof ye?o.equals(e):o instanceof ye||e instanceof ye?!1:o===e}import Wl from"bn.js";var ba=new re(new Wl(100)),Fe=class extends re{toSignificant(e=5,t,n){return this.mul(ba).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(ba).toFixed(e,t,n)}};function Ce(o){if(o instanceof Fe)return new re(o.numerator,o.denominator);if(o instanceof qe)return o.adjusted;if(o instanceof fe)try{return Ce(o.toExact())}catch{return new re(Ee)}if(o instanceof re)return o;let e=String(o),t=dn(e);return new re(t.numerator,t.denominator)}function Sy(o){var n;if(o instanceof Fe)return{fr:new re(o.numerator,o.denominator)};if(o instanceof qe)return{fr:o.adjusted};if(o instanceof fe)return{fr:Ce(o.toExact()),decimals:o.token.decimals};if(o instanceof re)return{fr:o};let e=String(o),t=dn(e);return{fr:new re(t.numerator,t.denominator),decimals:(n=t.dec)==null?void 0:n.length}}function Ky(o,e){if(o==null||e==null)return!1;let t=Ce(o),n=Ce(e);return t.sub(n).numerator,t.sub(n).numerator.lt(Ee)}function ql(o,e){if(o==null||e==null)return!1;let t=Ce(o),n=Ce(e);return t.sub(n).numerator.gt(Ee)}function Cy(o,e){if(o==null||e==null)return!1;let t=Ce(o),n=Ce(e);return t.sub(n).numerator.lte(Ee)}function Ry(o,e){if(o==null||e==null)return!1;let t=Ce(o),n=Ce(e);return t.sub(n).numerator.gte(Ee)}function Ul(o,e){if(o==null||e==null)return!1;let t=Ce(o),n=Ce(e);return t.sub(n).numerator.eq(Ee)}function Ly(o,e){if(o==null||e==null)return;let t=Ce(o),n=Ce(e);try{return t.div(n)}catch{return t}}function Oy(o,e){if(o==null||e==null)return;let t=Ce(o),n=Ce(e);return t.sub(n)}function Ny(o){return o==null?!1:!Ul(o,0)}function My(o,e){return ql(e,o)?e:o}function hi(o,e){if(o==null||e==null)return;let t=Ce(o),n=Ce(e);return t.mul(n)}function _y(o,e){if(o==null||e==null)return;let t=Ce(o),n=Ce(e);return t.add(n)}var Ai=(n=>(n[n.ROUND_DOWN=0]="ROUND_DOWN",n[n.ROUND_HALF_UP=1]="ROUND_HALF_UP",n[n.ROUND_UP=2]="ROUND_UP",n))(Ai||{}),Ee=new Te(0),Pa=new Te(1),Qy=new Te(2),jy=new Te(3),Hy=new Te(5),pn=new Te(10),Zy=new Te(100),$y=new Te(1e3),Jy=new Te(1e4),ga=9007199254740991;function Y(o){let e=ce("Raydium_parseBigNumberish");if(o instanceof Te)return o;if(typeof o=="string"){if(o.match(/^-?[0-9]+$/))return new Te(o);e.logWithError(`invalid BigNumberish string: ${o}`)}return typeof o=="number"?(o%1&&e.logWithError(`BigNumberish number underflow: ${o}`),(o>=ga||o<=-ga)&&e.logWithError(`BigNumberish number overflow: ${o}`),new Te(String(o))):typeof o=="bigint"?new Te(o.toString()):(e.error(`invalid BigNumberish value: ${o}`),new Te(0))}function wi(o){return pn.pow(Y(o))}function dn(o){var a;if(o===void 0)return{denominator:"1",numerator:"0"};if(o instanceof Te)return{numerator:o.toString(),denominator:"1"};if(o instanceof re)return{denominator:o.denominator.toString(),numerator:o.numerator.toString()};let e=String(o),[,t="",n="",r=""]=(a=e.replace(",","").match(/(-?)(\d*)\.?(\d*)/))!=null?a:[],i="1"+"0".repeat(r.length),s=t+(n==="0"?"":n)+r||"0";return{denominator:i,numerator:s,sign:t,int:n,dec:r}}function sr(o,e){let t=o.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}function Gl(o){var n;let[,e="",t=""]=(n=o.toFixed(2).match(/(-?)(\d*)\.?(\d*)/))!=null?n:[];return`${e}${t}`}function Xl(o,e=0){return o instanceof Te?o:new Te(Gl(ha(o).mul(pn.pow(new Te(String(e))))))}function ha(o){if(o instanceof Fe)return new re(o.numerator,o.denominator);if(o instanceof qe)return o.adjusted;if(o instanceof fe)try{return ha(o.toExact())}catch{return new re(Ee)}if(o instanceof re)return o;let e=String(o),t=dn(e);return new re(t.numerator,t.denominator)}function eb(o,e){let{numerator:t,denominator:n}=dn(o);return new Fe(new Te(t),new Te(n).mul(e!=null&&e.alreadyDecimaled?new Te(100):new Te(1)))}function tb(o){let{token:e,numberPrice:t,decimalDone:n}=o,r=new ye({mint:"",decimals:6,symbol:"usd",name:"usd",skipMint:!0}),{numerator:i,denominator:s}=dn(t),a=n?new Te(i).mul(pn.pow(new Te(e.decimals))):i,c=new Te(s).mul(pn.pow(new Te(r.decimals)));return new qe({baseToken:r,denominator:c.toString(),quoteToken:new ye(F(C({},e),{skipMint:!0,mint:""})),numerator:a.toString()})}function Aa(o){let e=new to({decimals:6,symbol:"usd",name:"usd"}),t=Xl(hi(o,10**e.decimals));return new fn(e,t)}function nb(o,e){return Aa(!e||!o?0:hi(o,e))}function zl(o){if(o==null)return;let{numerator:e,denominator:t}=dn(o.toString());return new re(e,t)}function Yl(o){return o instanceof V}function wa(o){return Yl(o)?zl(o):Array.isArray(o)?o.map(e=>wa(e)):ki(o)?Object.fromEntries(Object.entries(o).map(([e,t])=>[e,wa(t)])):o}var jl=ce("Raydium_amount"),ar=Jn(Ql);function ka(o,e){let t="0",n="0";if(o.includes(".")){let r=o.split(".");r.length===2?([t,n]=r,n=n.padEnd(e,"0")):jl.logWithError(`invalid number string, num: ${o}`)}else t=o;return[t,n.slice(0,e)||n]}var fe=class extends re{constructor(t,n,r=!0,i){let s=new tn(0),a=pn.pow(new tn(t.decimals));if(r)s=Y(n);else{let c=new tn(0),u=new tn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=ka(n.toString(),t.decimals);c=Y(l),u=Y(m)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=ce(i||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new fe(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new fe(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,r=0){return super.toSignificant(t,n,r)}toFixed(t=this.token.decimals,n,r=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,r)}toExact(t={groupSeparator:""}){return ar.DP=this.token.decimals,new ar(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}},fn=class extends re{constructor(t,n,r=!0,i){let s=new tn(0),a=pn.pow(new tn(t.decimals));if(r)s=Y(n);else{let c=new tn(0),u=new tn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=ka(n.toString(),t.decimals);c=Y(l),u=Y(m)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=ce(i||"TokenAmount"),this.currency=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.currency.equals(t.currency)||this.logger.logWithError("gt currency not equals"),this.raw.gt(t.raw)}lt(t){return this.currency.equals(t.currency)||this.logger.logWithError("lt currency not equals"),this.raw.lt(t.raw)}add(t){return this.currency.equals(t.currency)||this.logger.logWithError("add currency not equals"),new fn(this.currency,this.raw.add(t.raw))}sub(t){return this.currency.equals(t.currency)||this.logger.logWithError("sub currency not equals"),new fn(this.currency,this.raw.sub(t.raw))}toSignificant(t=this.currency.decimals,n,r=0){return super.toSignificant(t,n,r)}toFixed(t=this.currency.decimals,n,r=0){return t>this.currency.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,r)}toExact(t={groupSeparator:""}){return ar.DP=this.currency.decimals,new ar(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};async function Ta(o){new Promise(e=>setTimeout(e,o))}function xb(){return new Date().getTime()}function ki(o){return typeof o=="object"&&o!==null&&![ye,fe,Hl,re,Zl,qe,Fe].some(e=>typeof e=="object"&&o instanceof e)}function Ie(o){return typeof o=="string"?pi(o):Array.isArray(o)?o.map(e=>Ie(e)):ki(o)?Object.fromEntries(Object.entries(o).map(([e,t])=>[e,Ie(t)])):o}import{PublicKey as ro,sendAndConfirmTransaction as xi,Transaction as io,TransactionMessage as so,VersionedTransaction as ao}from"@solana/web3.js";import am from"axios";var yn=(t=>(t[t.V0=0]="V0",t[t.LEGACY=1]="LEGACY",t))(yn||{}),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 Ba,ComputeBudgetProgram as Ia,Transaction as cr,TransactionMessage as $l,Keypair as xa,VersionedTransaction as Sa}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Jl}from"@solana/spl-token";var Dt=ce("Raydium_txUtil"),Ka=1644;function lr(o){let e=[],t=[];return o.microLamports&&(e.push(Ia.setComputeUnitPrice({microLamports:o.microLamports})),t.push(v.SetComputeUnitPrice)),o.units&&(e.push(Ia.setComputeUnitLimit({units:o.units})),t.push(v.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Vn(o,e){var n,r;let t=e!=null?e:"confirmed";try{return((r=await((n=o.getLatestBlockhash)==null?void 0:n.call(o,{commitment:t})))==null?void 0:r.blockhash)||(await o.getRecentBlockhash(t)).blockhash}catch{return(await o.getRecentBlockhash(t)).blockhash}}function mr(o,e){o.length<1&&Dt.logWithError(`no instructions provided: ${o.toString()}`),e.length<1&&Dt.logWithError(`no signers provided:, ${e.toString()}`);let t=new cr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...o);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Ka}catch{return!1}}async function Ca(o,e,t,n=!0){let r=new Ba("RaydiumSimuLateTransaction11111111111111111"),i=[],s=new cr;s.feePayer=r;for(let u of e)mr([...s.instructions,u],[r])||(i.push(s),s=new cr,s.feePayer=r),s.add(u);s.instructions.length>0&&i.push(s);let a=[];try{if(a=await em(o,i,n),a.find(u=>u.err!==null))throw Error("rpc simulateTransaction error")}catch(u){u instanceof Error&&Dt.logWithError("failed to simulate for instructions","RPC_ERROR",{message:u.message})}let c=[];for(let u of a)if(Dt.debug("simulate result:",u),u.logs){let l=u.logs.filter(m=>m&&m.includes(t));Dt.debug("filteredLog:",c),l.length||Dt.logWithError("simulate log not match keyword","keyword",t),c.push(...l)}return c}function Ra(o,e){let t=o.match(/{["\w:,]+}/g);return!t||t.length!==1?Dt.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Wt(o,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(o);return!n||n.length!==2?Dt.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function ue(o,e){let[t,n]=Ba.findProgramAddressSync(o,e);return{publicKey:t,nonce:n}}async function em(o,e,t){let n=[];if(t){let r=await o.getLatestBlockhash(),i=[];for(let u of e){u.recentBlockhash=r.blockhash,u.lastValidBlockHeight=r.lastValidBlockHeight;let m=u._compile().serialize(),p=u._serialize(m).toString("base64");i.push(p)}let s=i.map(u=>{let l=o._buildArgs([u],void 0,"base64");return{methodName:"simulateTransaction",args:l}}),a=[],c=20;for(let u=0;u<Math.ceil(s.length/c);u++)a.push(s.slice(u*c,(u+1)*c));n=await(await Promise.all(a.map(async u=>(await o._rpcBatchRequest(u)).map(l=>l.result.value)))).flat()}else try{n=await Promise.all(e.map(async r=>await(await o.simulateTransaction(r)).value))}catch(r){r instanceof Error&&Dt.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:r.message})}return n}function no({instructions:o,payer:e,signers:t}){return mr(o,[e,...t])}function oo({instructions:o,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=xa.generate().publicKey.toString()}){let i=new $l({payerKey:e,recentBlockhash:n,instructions:o}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Sa(i).serialize()).toString("base64").length<Ka}catch{return!1}}var ur={time:0,data:void 0};async function Fb(o){if(!ur.data||(Date.now()-ur.time)/1e3>30){let e=await o.getEpochInfo();return ur={time:Date.now(),data:e},e}else return ur.data}var tm=o=>Buffer.isBuffer(o)?o:o instanceof Uint8Array?Buffer.from(o.buffer,o.byteOffset,o.byteLength):Buffer.from(o);function bn(o){let e=[];return o.forEach(t=>{t instanceof cr&&(t.recentBlockhash||(t.recentBlockhash=Jl.toBase58()),t.feePayer||(t.feePayer=xa.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Sa&&(n=tm(n));let r=n.toString("base64");e.push(r)}),console.log("simulate tx string:",e),e}import{PublicKey as Oa,AddressLookupTableAccount as dr}from"@solana/web3.js";import{PublicKey as La}from"@solana/web3.js";import{MINT_SIZE as nm,TOKEN_PROGRAM_ID as om,getTransferFeeConfig as rm,unpackMint as im}from"@solana/spl-token";var Ti=ce("Raydium_accountInfo_util");async function Tt(o,e,t){let{batchRequest:n,commitment:r="confirmed",chunkCount:i=100}=C({batchRequest:!1},t),s=Ii(e,i),a=new Array(s.length).fill([]);if(n){let c=s.map(m=>{let d=o._buildArgs([m.map(p=>p.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:d}}),u=Ii(c,10);a=(await(await Promise.all(u.map(async m=>await o._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&Ti.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:p,executable:y,lamports:f,owner:b,rentEpoch:g}=d;return p.length!==2&&p[1]!=="base64"&&Ti.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:y,lamports:f,owner:new La(b),rentEpoch:g}}return null})))}else try{a=await Promise.all(s.map(c=>o.getMultipleAccountsInfo(c,r)))}catch(c){c instanceof Error&&Ti.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function De(o,e,t){let n=await Tt(o,e.map(r=>r.pubkey),t);return e.map((r,i)=>F(C({},r),{accountInfo:n[i]}))}var sm=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",n))(sm||{}),Yb=1;async function vn({connection:o,mints:e,config:t}){var i,s,a;if(e.length===0)return{};let n=await De(o,e.map(c=>({pubkey:mt(c)})),t),r={};for(let c of n){if(!c.accountInfo||c.accountInfo.data.length<nm){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=im(c.pubkey,c.accountInfo,(i=c.accountInfo)==null?void 0:i.owner);r[c.pubkey.toString()]=F(C({},u),{programId:((s=c.accountInfo)==null?void 0:s.owner)||om,feeConfig:(a=rm(u))!=null?a:void 0})}return r[La.default.toBase58()]=r[$.toBase58()],r}async function Bi({connection:o,address:e}){let t=await Tt(o,[...new Set(e.map(r=>r.toString()))].map(r=>new Oa(r))),n={};for(let r=0;r<e.length;r++){let i=t[r],s=e[r];if(!i)continue;let a=new dr({key:s,state:dr.deserialize(i.data)});n[s.toString()]=a,pr[s.toString()]=a}return n}var pr={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new dr({key:new Oa("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:dr.deserialize(Buffer.from("AQAAAP//////////d49+DAAAAAAAAQZMWvw7GUNJdaccNBVnb57OKakxL2BHLYvhRwVILRsgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGRm/lIRcy/+ytunLDm+e8jOW7xfcSayxDmzpAAAAABt324ddloZPZy+FGzut5rBy0he1fWzeROoz1hX7/AKkG3fbh7nWP3hhCXbzkbM3athr8TYO5DSf+vfko2KGL/AVKU1D4XciC1hSlVnJ4iilt3x6rq9CmBniISTL07vagBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvDQdRqCgtphMF/imcN7mY5YRx2xE1A3MQ+L4QRaYK9u4GRfZP3LsAd00a+IkCpA22UNQMKdq5BFbJuwuOLqc8zxCTDlqxBG8J0HcxtfogQHDK06ukzfaXiNDKAob1MqBHS9lJxDYCwz8gd5DtFqNSTKG5l1zxIaKpDP/sffi2is1H9aKveyXSu5StXElYRl9SD5As0DHE4N0GLnf84/siiKXVyp4Ez121kLcUui/jLLFZEz/BwZK3Ilf9B9OcsEAeDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu9N9LMnrw/JNO0hqMVB4rk/2ou4AB1loQ7FZoPwut2o4KZB+0p9xnbrQKw038qjpHar+PyDwvxBRcu5hpHw3dguezeWv+IwvgW5icu8EGkhGa9AkFPPJT7VMSFb8xowveU=","base64"))})};var 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,this.blockhashCommitment=e.blockhashCommitment}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await am.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}=lr(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:r=[],endInstructionTypes:i=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...r),this.endInstructionTypes.push(...i),this.lookupTableAddress.push(...s.filter(a=>a!==ro.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(C({},t||{})):this.build(t)}build(e){var n;let t=new io;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(r=>r.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async r=>{var u;let{recentBlockHash:i,skipPreflight:s=!0,sendAndConfirm:a}=r||{},c=i!=null?i:await Vn(this.connection,this.blockhashCommitment);if(t.recentBlockhash=c,this.signers.length&&t.sign(...this.signers),bn([t]),(u=this.owner)!=null&&u.isKeyPair)return{txId:a?await xi(this.connection,t,this.signers.find(m=>m.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let l=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(l[0].serialize(),{skipPreflight:s}),signedTx:l[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var u;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:r}=this.build(n),i=t.filter(l=>l.transaction.instructions.length>0),s=[r,...i.map(l=>l.transaction)],a=[this.signers,...i.map(l=>l.signers)],c=[...this.instructionTypes,...i.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async l=>{var b;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:y=!0}=l||{},f=p!=null?p:await Vn(this.connection,this.blockhashCommitment);if((b=this.owner)!=null&&b.isKeyPair){if(m){let g=[];for(let h of s){let P=await xi(this.connection,h,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});g.push(P)}return{txIds:g,signedTxs:s}}return{txIds:await await Promise.all(s.map(async(g,h)=>(g.recentBlockhash=f,await this.connection.sendRawTransaction(g.serialize(),{skipPreflight:y})))),signedTxs:s}}if(this.signAllTransactions){let g=s.map((P,k)=>(P.recentBlockhash=f,a[k].length&&P.sign(...a[k]),P));bn(g);let h=await this.signAllTransactions(g);if(m){let P=0,k=[],B=async()=>{if(!h[P])return;let T=await this.connection.sendRawTransaction(h[P].serialize(),{skipPreflight:y});k.push({txId:T,status:"sent",signedTx:h[P]}),d==null||d([...k]),P++,this.connection.onSignature(T,S=>{let x=k.findIndex(R=>R.txId===T);x>-1&&(k[x].status=S.err?"error":"success"),d==null||d([...k]),S.err||B()},"processed"),this.connection.getSignatureStatus(T)};return await B(),{txIds:k.map(T=>T.txId),signedTxs:h}}else{let P=[];for(let k=0;k<h.length;k+=1){let B=await this.connection.sendRawTransaction(h[k].serialize(),{skipPreflight:y});P.push(B)}return{txIds:P,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){var p;let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:r}=d,i=xe(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=C(C({},this.cluster==="devnet"?{}:pr),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let y of a)s[y]===void 0&&c.push(new ro(y));let u=await Bi({connection:this.connection,address:c});for(let[y,f]of Object.entries(u))s[y]=f;let l=new so({payerKey:this.feePayer,recentBlockhash:r?ro.default.toBase58():await Vn(this.connection,this.blockhashCommitment),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s));((p=this.owner)==null?void 0:p.signer)&&!this.signers.some(y=>y.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let m=new ao(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async y=>{var h;let{recentBlockHash:f,skipPreflight:b=!0,sendAndConfirm:g}=y||{};if(f&&(m.message.recentBlockhash=f),bn([m]),(h=this.owner)!=null&&h.isKeyPair){let P=await this.connection.sendTransaction(m,{skipPreflight:b});if(g){let{lastValidBlockHeight:k,blockhash:B}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:B,lastValidBlockHeight:k,signature:P},"confirmed")}return{txId:P,signedTx:m}}if(this.signAllTransactions){let P=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(P[0],{skipPreflight:b}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async buildV0MultiTx(e){var u;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:r}=await this.buildV0(n),i=t.filter(l=>l.builder.instructions.length>0),s=[r,...i.map(l=>l.transaction)],a=[this.signers,...i.map(l=>l.signers)],c=[...this.instructionTypes,...i.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(l,m)=>{l.sign(a[m])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:n,execute:async l=>{var f;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:y=!0}=l||{};if(p&&s.forEach(b=>b.message.recentBlockhash=p),bn(s),(f=this.owner)!=null&&f.isKeyPair){if(m){let b=[];for(let g of s){let h=await this.connection.sendTransaction(g,{skipPreflight:y}),{lastValidBlockHeight:P,blockhash:k}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:k,lastValidBlockHeight:P,signature:h},"confirmed"),b.push(h)}return{txIds:b,signedTxs:s}}return{txIds:await Promise.all(s.map(async b=>await this.connection.sendTransaction(b,{skipPreflight:y}))),signedTxs:s}}if(this.signAllTransactions){let b=await this.signAllTransactions(s);if(m){let g=0,h=[],P=async()=>{if(!b[g])return;let k=await this.connection.sendTransaction(b[g],{skipPreflight:y});h.push({txId:k,status:"sent",signedTx:b[g]}),d==null||d([...h]),g++,this.connection.onSignature(k,B=>{let T=h.findIndex(S=>S.txId===k);T>-1&&(h[T].status=B.err?"error":"success"),d==null||d([...h]),B.err||P()},"processed"),this.connection.getSignatureStatus(k)};return P(),{txIds:[],signedTxs:b}}else{let g=[];for(let h=0;h<b.length;h+=1){let P=await this.connection.sendTransaction(b[h],{skipPreflight:y});g.push(P)}return{txIds:g,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var l;let u=e||{},{computeBudgetConfig:t}=u,n=xe(u,["computeBudgetConfig"]),r=t?lr(t):{instructions:[],instructionTypes:[]},i=this.signers.reduce((m,d)=>F(C({},m),{[d.publicKey.toBase58()]:d}),{}),s=[],a=[],c=[];if(this.allInstructions.forEach(m=>{let d=[...c,m],p=t?[...r.instructions,...d]:d,f=[...new Set(d.map(b=>b.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(b=>new ro(b));if(c.length<12&&no({instructions:p,payer:this.feePayer,signers:f})||no({instructions:d,payer:this.feePayer,signers:f}))c.push(m);else{if(c.length===0)throw Error("item ins too big");no({instructions:t?[...r.instructions,...c]:[...c],payer:this.feePayer,signers:f})?s.push(new io().add(...r.instructions,...c)):s.push(new io().add(...c)),a.push(Array.from(new Set(c.map(b=>b.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat())).map(b=>i[b]).filter(b=>b!==void 0)),c=[m]}}),c.length>0){let d=[...new Set(c.map(p=>p.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat()).values()].map(p=>i[p]).filter(p=>p!==void 0);no({instructions:t?[...r.instructions,...c]:[...c],payer:this.feePayer,signers:d.map(p=>p.publicKey)})?s.push(new io().add(...r.instructions,...c)):s.push(new io().add(...c)),a.push(d)}return s.forEach(m=>m.feePayer=this.feePayer),(l=this.owner)!=null&&l.signer&&a.forEach(m=>{m.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async m=>{var g;let{sequentially:d,onTxUpdate:p,recentBlockHash:y,skipPreflight:f=!0}=m||{},b=y!=null?y:await Vn(this.connection,this.blockhashCommitment);if(s.forEach(async(h,P)=>{h.recentBlockhash=b,a[P].length&&h.sign(...a[P])}),bn(s),(g=this.owner)!=null&&g.isKeyPair){if(d){let h=[];for(let P of s){let k=await xi(this.connection,P,this.signers.find(B=>B.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:f});h.push(k)}return{txIds:h,signedTxs:s}}return{txIds:await Promise.all(s.map(async h=>await this.connection.sendRawTransaction(h.serialize(),{skipPreflight:f}))),signedTxs:s}}if(this.signAllTransactions){let h=await this.signAllTransactions(s);if(d){let P=0,k=[],B=async()=>{if(!h[P])return;let T=await this.connection.sendRawTransaction(h[P].serialize(),{skipPreflight:f});k.push({txId:T,status:"sent",signedTx:h[P]}),p==null||p([...k]),P++,this.connection.onSignature(T,S=>{let x=k.findIndex(R=>R.txId===T);x>-1&&(k[x].status=S.err?"error":"success"),p==null||p([...k]),S.err||B()},"processed"),this.connection.getSignatureStatus(T)};return await B(),{txIds:k.map(T=>T.txId),signedTxs:h}}else{let P=[];for(let k=0;k<h.length;k+=1){let B=await this.connection.sendRawTransaction(h[k].serialize(),{skipPreflight:f});P.push(B)}return{txIds:P,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){var g;let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:r=[]}=b,i=xe(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=C(C({},this.cluster==="devnet"?{}:pr),n),a=Array.from(new Set([...this.lookupTableAddress,...r])),c=[];for(let h of a)s[h]===void 0&&c.push(new ro(h));let u=await Bi({connection:this.connection,address:c});for(let[h,P]of Object.entries(u))s[h]=P;let l=t?lr(t):{instructions:[],instructionTypes:[]},m=await Vn(this.connection,this.blockhashCommitment),d=this.signers.reduce((h,P)=>F(C({},h),{[P.publicKey.toBase58()]:P}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(h=>{let P=[...f,h],k=t?[...l.instructions,...P]:P;if(f.length<12&&oo({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s})||oo({instructions:P,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(h);else{if(f.length===0)throw Error("item ins too big");let B={};for(let T of[...new Set(a)])s[T]!==void 0&&(B[T]=s[T]);if(t&&oo({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let T=new so({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new ao(T))}else{let T=new so({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new ao(T))}y.push(Array.from(new Set(f.map(T=>T.keys.filter(S=>S.isSigner).map(S=>S.pubkey.toString())).flat())).map(T=>d[T]).filter(T=>T!==void 0)),f=[h]}}),f.length>0){let P=[...new Set(f.map(k=>k.keys.filter(B=>B.isSigner).map(B=>B.pubkey.toString())).flat()).values()].map(k=>d[k]).filter(k=>k!==void 0);if(t&&oo({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let k=new so({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new ao(k))}else{let k=new so({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new ao(k))}y.push(P)}return(g=this.owner)!=null&&g.signer&&y.forEach(h=>{h.some(P=>P.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async h=>{var S;let{sequentially:P,onTxUpdate:k,recentBlockHash:B,skipPreflight:T=!0}=h||{};if(p.map(async(x,R)=>{y[R].length&&x.sign(y[R]),B&&(x.message.recentBlockhash=B)}),bn(p),(S=this.owner)!=null&&S.isKeyPair){if(P){let x=[];for(let R of p){let I=await this.connection.sendTransaction(R,{skipPreflight:T}),{lastValidBlockHeight:N,blockhash:q}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:q,lastValidBlockHeight:N,signature:I},"confirmed"),x.push(I)}return{txIds:x,signedTxs:p}}return{txIds:await Promise.all(p.map(async x=>await this.connection.sendTransaction(x,{skipPreflight:T}))),signedTxs:p}}if(this.signAllTransactions){let x=await this.signAllTransactions(p);if(P){let R=0,I=[],N=async()=>{if(!x[R])return;let q=await this.connection.sendTransaction(x[R],{skipPreflight:T});I.push({txId:q,status:"sent",signedTx:x[R]}),k==null||k([...I]),R++,this.connection.onSignature(q,D=>{let J=I.findIndex(G=>G.txId===q);J>-1&&(I[J].status=D.err?"error":"success"),k==null||k([...I]),D.err||N()},"processed"),this.connection.getSignatureStatus(q)};return N(),{txIds:[],signedTxs:x}}else{let R=[];for(let I=0;I<x.length;I+=1){let N=await this.connection.sendTransaction(x[I],{skipPreflight:T});R.push(N)}return{txIds:R,signedTxs:x}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}};var It=class{constructor(e){this._owner=e}get publicKey(){return It.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return It.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return It.isKeyPair(this._owner)}get isPublicKey(){return It.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!It.isKeyPair(e)}};function Ii(o,e=1,t=[]){let n=[...o];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}function mg(o,...e){return o.filter(t=>e.every(n=>n.includes(t)))}function dg(o,...e){return o.filter(t=>e.every(n=>!n.includes(t)))}function pg(o){return[...new Set(o)]}var Na=o=>typeof o=="number",Ma=o=>o?new Date(o):new Date,um=o=>Ma(o).getTime();function _a(o,e,t){let n=Na(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(o).getTime()<=n}function Va(o,e,t){let n=Na(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(o).getTime()>n}function yg(o,e){let n=um(o)+(e.days?e.days*24*60*60*1e3:0)+(e.hours?e.hours*60*60*1e3:0)+(e.minutes?e.minutes*60*1e3:0)+(e.seconds?e.seconds*1e3:0)+(e.milliseconds?e.milliseconds:0);return Ma(n)}import{PublicKey as de}from"@solana/web3.js";var Si=new de("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ki=new de("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Fn=new de("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),cm=new de("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),lm=new de("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),yr=new de("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Ci=new de("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),mm=new de("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),va=new de("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Ri=new de("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),dm=new de("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Ag=new de("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),pm=new de("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),fm=new de("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),ym=new de("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),bm=new de("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Li=new de("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),gm=new de("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Am=new de("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),wm=new de("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Pm=new de("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),hm=new de("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),uo={IDO_PROGRAM_ID_V1:pm,IDO_PROGRAM_ID_V2:fm,IDO_PROGRAM_ID_V3:ym,IDO_PROGRAM_ID_V4:bm},wg={AMM_V4:Ci,AMM_STABLE:mm,CLMM_PROGRAM_ID:Ri,FARM_PROGRAM_ID_V3:Si,FARM_PROGRAM_ID_V5:Ki,FARM_PROGRAM_ID_V6:Fn,OPEN_BOOK_PROGRAM:lm,SERUM_PROGRAM_ID_V3:yr,UTIL1216:cm,Router:dm,CREATE_CPMM_POOL_PROGRAM:Li,CREATE_CPMM_POOL_AUTH:gm,CREATE_CPMM_POOL_FEE_ACC:Am},br={SERUM_MARKET:de.default,OPENBOOK_MARKET:new de("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:de.default,FarmV3:new de("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new de("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new de("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new de("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new de("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new de("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new de("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:wm,CREATE_CPMM_POOL_AUTH:Pm,CREATE_CPMM_POOL_FEE_ACC:hm,FEE_DESTINATION_ID:new de("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as km}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Tm}from"@solana/spl-token";function ge(o,e,t){return ue([o.toBuffer(),(t!=null?t:Tm).toBuffer(),e.toBuffer()],new km("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Ne from"bn.js";var Lt=1e4;function xg(o,e,t,n){if(e===void 0)return{amount:o,fee:void 0,expirationTime:void 0};let r=t.epoch<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,i=new Ne(r.maximumFee.toString()),s=t.epoch<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(r.transferFeeBasisPoints===Lt){let a=new Ne(r.maximumFee.toString());return{amount:o.add(a),fee:a,expirationTime:s}}else{let a=nn(o.mul(new Ne(Lt)),new Ne(Lt-r.transferFeeBasisPoints)),c=new Ne(r.maximumFee.toString()),u=a.sub(o).gt(c)?o.add(c):a,l=nn(u.mul(new Ne(r.transferFeeBasisPoints)),new Ne(Lt)),m=l.gt(i)?i:l;return{amount:u,fee:m,expirationTime:s}}else{let a=nn(o.mul(new Ne(r.transferFeeBasisPoints)),new Ne(Lt)),c=a.gt(i)?i:a;return{amount:o,fee:c,expirationTime:s}}}function he(o,e,t,n){if(e===void 0)return{amount:o,fee:void 0,expirationTime:void 0};let r=F(C({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),i=t.epoch<r.newerTransferFee.epoch?r.olderTransferFee:r.newerTransferFee,s=new Ne(i.maximumFee.toString()),a=t.epoch<r.newerTransferFee.epoch?(Number(r.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(i.transferFeeBasisPoints===Lt){let c=new Ne(i.maximumFee.toString());return{amount:o.add(c),fee:c,expirationTime:a}}else{let c=nn(o.mul(new Ne(Lt)),new Ne(Lt-i.transferFeeBasisPoints)),u=new Ne(i.maximumFee.toString()),l=c.sub(o).gt(u)?o.add(u):c,m=nn(l.mul(new Ne(i.transferFeeBasisPoints)),new Ne(Lt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let c=nn(o.mul(new Ne(i.transferFeeBasisPoints)),new Ne(Lt)),u=c.gt(s)?s:c;return{amount:o,fee:u,expirationTime:a}}}function Ot(o,e){return o===void 0?e:e===void 0?o:Math.min(o,e)}function nn(o,e){let{div:t,mod:n}=o.divmod(e);return n.gt(new Ne(0))?t.add(new Ne(1)):t}var Oi=(t=>(t.ALL="all",t.Strict="strict",t))(Oi||{}),Fa=(s=>(s.All="all",s.Standard="standard",s.Concentrated="concentrated",s.AllFarm="allFarm",s.StandardFarm="standardFarm",s.ConcentratedFarm="concentratedFarm",s))(Fa||{});var Ye={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://token.jup.ag/{type}",POOL_LIST:"/pools/info/list",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/mint",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",IDO_KEYS:"/ido/key/ids",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee"},zg=C({},Ye);var Ea="ray_tab_hash",Ni="ray_req_hash",Im=()=>{if(typeof window===void 0)return"";let o=sessionStorage.getItem(Ea);return o||(o=`ray-${Date.now()}`,sessionStorage.setItem(Ea,o)),o},gr=async n=>{var r=n,{logCount:o=1e3,removeLastLog:e}=r,t=xe(r,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let i=JSON.parse(localStorage.getItem(Ni)||"[]").slice(0,o-1);e&&i.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),i.unshift(F(C({},t),{time:Date.now(),session:Im()}));try{localStorage.setItem(Ni,JSON.stringify(i))}catch{if(e){let s=!1,a=JSON.stringify(t.data).substring(0,100);for(i[0].data=a+(a.length>100?"...":"");!s;){i.pop();let c=JSON.stringify(t.data).substring(0,100);i[0].data=c+(c.length>100?"...":"");try{localStorage.setItem(Ni,JSON.stringify(i)),s=!0}catch{s=!1}}return new Promise(c=>c())}return gr(F(C({},t),{logCount:o,removeLastLog:!0}))}};var En=ce("Raydium_Api"),Mi=new Map;async function dA(o,e,t=1e3){let n;for(;n==null;)try{En.debug(`Request ${o} through endlessRetry`),n=await e()}catch(r){En.error(`Request ${o} failed, retry after ${t} ms`,r),await Ta(t)}return n}var Ar=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:r,urlConfigs:i}){this.cluster=e,this.urlConfigs=i||{},this.logCount=r||1e3,this.api=Da.create({baseURL:this.urlConfigs.BASE_HOST||Ye.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:c,url:u}=s;return En.debug(`${a==null?void 0:a.toUpperCase()} ${c}${u}`),s},s=>(En.error("Request failed"),Promise.reject(s))),this.api.interceptors.response.use(s=>{let{config:a,data:c,status:u}=s,{method:l,baseURL:m,url:d}=a;return n&&gr({status:u,url:`${m}${d}`,params:a.params,data:c,logCount:this.logCount}),En.debug(`${l==null?void 0:l.toUpperCase()} ${m}${d} ${u}`),c},s=>{let{config:a,response:c={}}=s,{status:u}=c,{method:l,baseURL:m,url:d}=a;return n&&gr({status:u,url:`${m}${d}`,params:a.params,data:s.message,logCount:this.logCount}),En.error(`${l.toUpperCase()} ${m}${d} ${u||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||Ye.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||Ye.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await Da.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(r=>r.numSlots);return n.reduce((r,i)=>r+i,0)/n.length/60}async getChainTimeOffset(){return(await this.api.get(this.urlConfigs.CHAIN_TIME||Ye.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||Ye.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||Ye.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||Ye.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||Ye.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:r="desc",page:i=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||Ye.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${r}&page=${i}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||Ye.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],r=t.filter(s=>Mi.has(s)?(n.push(Mi.get(s)),!1):!0),i=[];return r.length&&(i=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||Ye.POOL_KEY_BY_ID)+`?ids=${r.join(",")}`)).data.filter(Boolean),i.forEach(a=>{Mi.set(a.id,a)})),n.concat(i)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:r="all",sort:i="default",order:s="desc",page:a=1}=e,[c,u]=[t&&mt(t).toBase58(),n&&n!=="undefined"?mt(n).toBase58():""],[l,m]=u&&c>u?[u,c]:[c,u];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||Ye.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${r}&poolSortField=${i}&sortType=${s}&pageSize=100&page=${a}`)).data}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||Ye.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||Ye.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||Ye.CHECK_AVAILABILITY)).data}};import{merge as Tf}from"lodash";var wr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",Wa="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as Qi,TOKEN_PROGRAM_ID as an,AccountLayout as Wn,TOKEN_2022_PROGRAM_ID as Md}from"@solana/spl-token";import{PublicKey as xr,SystemProgram as _d}from"@solana/web3.js";var _i=(...o)=>o.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Se=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ce(t)}createTxBuilder(e){return this.scope.checkOwner(),new fr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(_i(e))}logInfo(...e){this.logger.info(_i(e))}logAndCreateError(...e){let t=_i(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as Kd,createCloseAccountInstruction as Cd,createTransferInstruction as Rd,TOKEN_PROGRAM_ID as Dn}from"@solana/spl-token";import{PublicKey as Ld,SystemProgram as Od}from"@solana/web3.js";import Nd from"bn.js";import{PublicKey as ou,Keypair as Id}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Bd}from"@solana/spl-token";import xd from"bn.js";import{PublicKey as bd}from"@solana/web3.js";import Qa,{isBN as ja}from"bn.js";import{bits as Bm,BitStructure as xm,blob as Sm,Blob as Km,cstr as Cm,f32 as Rm,f32be as Lm,f64 as Om,f64be as Nm,greedy as Mm,Layout as _m,ns64 as Vm,ns64be as vm,nu64 as Fm,nu64be as Em,offset as Dm,s16 as Wm,s16be as qm,s24 as Um,s24be as Gm,s32 as Xm,s32be as zm,s40 as Ym,s40be as Qm,s48 as jm,s48be as Hm,s8 as Zm,seq as $m,struct as BA,Structure as Jm,u16 as ed,u16be as td,u24 as nd,u24be as od,u32 as rd,u32be as id,u40 as sd,u40be as ad,u48 as ud,u48be as cd,u8 as ld,UInt as md,union as dd,Union as pd,unionLayoutDiscriminator as fd,utf8 as yd}from"@solana/buffer-layout";var co=_m,qa=Jm,Ua=pd,xA=xm,Vi=md,Ga=Km,SA=Mm,Pr=ld,Nt=ed,KA=nd,lo=rd,CA=sd,RA=ud,Xa=Fm,LA=td,OA=od,NA=id,MA=ad,_A=cd,VA=Em,vA=Zm,FA=Wm,EA=Um,Qe=Xm,DA=Ym,WA=jm,qA=Vm,UA=qm,GA=Gm,XA=zm,zA=Qm,YA=Hm,QA=vm,jA=Rm,HA=Lm,ZA=Om,$A=Nm;var za=$m,Ya=dd,JA=fd,be=Sm,ew=Cm,tw=yd,vi=Bm,Fi=Dm;var gn=class extends co{constructor(t,n,r){super(t,r);this.blob=be(t),this.signed=n}decode(t,n=0){let r=new Qa(this.blob.decode(t,n),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,n,r=0){return typeof t=="number"&&(t=new Qa(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}},hr=class extends co{constructor(t){super(8,t);this._lower=vi(lo(),!1),this._upper=vi(lo(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let r=this._lower.decode(t,n),i=this._upper.decode(t,n+this._lower.span);return C(C({},r),i)}encode(t,n,r=0){return this._lower.encode(t,n,r)+this._upper.encode(t,n,r+this._lower.span)}};function E(o){return new Vi(1,o)}function $e(o){return new Vi(4,o)}function w(o){return new gn(8,!1,o)}function j(o){return new gn(16,!1,o)}function Ha(o){return new gn(1,!0,o)}function kr(o){return new gn(8,!0,o)}function Za(o){return new gn(16,!0,o)}var qt=class extends co{constructor(t,n,r,i){super(t.span,i);this.layout=t,this.decoder=n,this.encoder=r}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,r){return this.layout.encode(this.encoder(t),n,r)}getSpan(t,n){return this.layout.getSpan(t,n)}};function K(o){return new qt(be(32),e=>new bd(e),e=>e.toBuffer(),o)}var Ei=class extends co{constructor(t,n){super(-1,n);this.layout=t,this.discriminator=Pr()}encode(t,n,r=0){return t==null?this.discriminator.encode(0,n,r):(this.discriminator.encode(1,n,r),this.layout.encode(t,n,r+1)+1)}decode(t,n=0){let r=this.discriminator.decode(t,n);if(r===0)return null;if(r===1)return this.layout.decode(t,n+1);throw new Error("Invalid option "+this.property)}getSpan(t,n=0){let r=this.discriminator.decode(t,n);if(r===0)return 1;if(r===1)return this.layout.getSpan(t,n+1)+1;throw new Error("Invalid option "+this.property)}};function sw(o,e){return new Ei(o,e)}function je(o){return new qt(Pr(),gd,Ad,o)}function gd(o){if(o===0)return!1;if(o===1)return!0;throw new Error("Invalid bool: "+o)}function Ad(o){return o?1:0}function aw(o,e){let t=lo("length"),n=M([t,X(o,Fi(t,-t.span),"values")]);return new qt(n,({values:r})=>r,r=>({values:r}),e)}function uw(o,e,t){let n=M([w("tag"),e.replicate("data")]);function r({tag:i,data:s}){if(!i.eq(o))throw new Error("Invalid tag, expected: "+o.toString("hex")+", got: "+i.toString("hex"));return s}return new qt(n,r,i=>({tag:o,data:i}),t)}function wd(o){let e=lo("length"),t=M([e,be(Fi(e,-e.span),"data")]);return new qt(t,({data:n})=>n,n=>({data:n}),o)}function cw(o){return new qt(wd(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),o)}function lw(o,e){let t=Ya(Pr(),e);return o.forEach((n,r)=>t.addVariant(r,n,n.property)),t}function mw(o,e,t){let n=M([X(o,e,"values")]);return new qt(n,({values:r})=>r,r=>({values:r}),t)}var Di=class extends qa{decode(e,t){return super.decode(e,t)}};function M(o,e,t){return new Di(o,e,t)}var Wi=class extends Ua{encodeInstruction(e){let t=Math.max(...Object.values(this.registry).map(r=>r.span)),n=Buffer.alloc(t);return n.slice(0,this.encode(e,n))}decodeInstruction(e){return this.decode(e)}};function dw(o,e,t){return new Wi(o,e,t)}var qi=class extends Ga{decode(e,t){let n=super.decode(e,t);if(!n.every(r=>r===0))throw new Error("nonzero padding bytes");return n}};function pw(o){return new qi(o)}function X(o,e,t){let n,r=typeof e=="number"?e:ja(e)?e.toNumber():new Proxy(e,{get(i,s){if(!n){let a=Reflect.get(i,"count");n=ja(a)?a.toNumber():a,Reflect.set(i,"count",n)}return Reflect.get(i,s)},set(i,s,a){return s==="count"&&(n=a),Reflect.set(i,s,a)}});return za(o,r,t)}var on=M([K("mint"),K("owner"),w("amount"),$e("delegateOption"),K("delegate"),E("state"),$e("isNativeOption"),w("isNative"),w("delegatedAmount"),$e("closeAuthorityOption"),K("closeAuthority")]);function Pd(o){return o instanceof Uint8Array||o!=null&&typeof o=="object"&&o.constructor.name==="Uint8Array"}function Ui(o,...e){if(!Pd(o))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(o.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${o.length}`)}function Gi(o,e=!0){if(o.destroyed)throw new Error("Hash instance has been destroyed");if(e&&o.finished)throw new Error("Hash#digest() has already been called")}function $a(o,e){Ui(o);let t=e.outputLen;if(o.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Ir=o=>new DataView(o.buffer,o.byteOffset,o.byteLength),Bt=(o,e)=>o<<32-e|o>>>e;var Pw=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function hd(o){if(typeof o!="string")throw new Error(`utf8ToBytes expected string, got ${typeof o}`);return new Uint8Array(new TextEncoder().encode(o))}function Xi(o){return typeof o=="string"&&(o=hd(o)),Ui(o),o}var Tr=class{clone(){return this._cloneInto()}},hw={}.toString;function Ja(o){let e=n=>o().update(Xi(n)).digest(),t=o();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>o(),e}function kd(o,e,t,n){if(typeof o.setBigUint64=="function")return o.setBigUint64(e,t,n);let r=BigInt(32),i=BigInt(4294967295),s=Number(t>>r&i),a=Number(t&i),c=n?4:0,u=n?0:4;o.setUint32(e+c,s,n),o.setUint32(e+u,a,n)}var eu=(o,e,t)=>o&e^~o&t,tu=(o,e,t)=>o&e^o&t^e&t,Br=class extends Tr{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Ir(this.buffer)}update(e){Gi(this);let{view:t,buffer:n,blockLen:r}=this;e=Xi(e);let i=e.length;for(let s=0;s<i;){let a=Math.min(r-this.pos,i-s);if(a===r){let c=Ir(e);for(;r<=i-s;s+=r)this.process(c,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Gi(this),$a(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:i}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(n,0),s=0);for(let m=s;m<r;m++)t[m]=0;kd(n,r-8,BigInt(this.length*8),i),this.process(n,0);let a=Ir(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,l=this.get();if(u>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<u;m++)a.setUint32(4*m,l[m],i)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:r,finished:i,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=i,e.destroyed=s,r%t&&e.buffer.set(n),e}};var Td=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),rn=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),sn=new Uint32Array(64),zi=class extends Br{constructor(){super(64,32,8,!1),this.A=rn[0]|0,this.B=rn[1]|0,this.C=rn[2]|0,this.D=rn[3]|0,this.E=rn[4]|0,this.F=rn[5]|0,this.G=rn[6]|0,this.H=rn[7]|0}get(){let{A:e,B:t,C:n,D:r,E:i,F:s,G:a,H:c}=this;return[e,t,n,r,i,s,a,c]}set(e,t,n,r,i,s,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=i|0,this.F=s|0,this.G=a|0,this.H=c|0}process(e,t){for(let m=0;m<16;m++,t+=4)sn[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=sn[m-15],p=sn[m-2],y=Bt(d,7)^Bt(d,18)^d>>>3,f=Bt(p,17)^Bt(p,19)^p>>>10;sn[m]=f+sn[m-7]+y+sn[m-16]|0}let{A:n,B:r,C:i,D:s,E:a,F:c,G:u,H:l}=this;for(let m=0;m<64;m++){let d=Bt(a,6)^Bt(a,11)^Bt(a,25),p=l+d+eu(a,c,u)+Td[m]+sn[m]|0,f=(Bt(n,2)^Bt(n,13)^Bt(n,22))+tu(n,r,i)|0;l=u,u=c,c=a,a=s+p|0,s=i,i=r,r=n,n=p+f|0}n=n+this.A|0,r=r+this.B|0,i=i+this.C|0,s=s+this.D|0,a=a+this.E|0,c=c+this.F|0,u=u+this.G|0,l=l+this.H|0,this.set(n,r,i,s,a,c,u,l)}roundClean(){sn.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var nu=Ja(()=>new zi);var Fw=ce("Raydium_Util");function ru({owner:o,solAccountResp:e,tokenAccountResp:t}){let n=[],r=[];for(let{pubkey:i,account:s}of t.value){let a=on.decode(s.data),{mint:c,amount:u}=a;n.push({publicKey:i,mint:c,amount:u,isAssociated:ge(o,c,s.owner).publicKey.equals(i),isNative:!1,programId:s.owner}),r.push({pubkey:i,accountInfo:a,programId:s.owner})}return e&&n.push({mint:ou.default,amount:new xd(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:r}}function Je({fromPublicKey:o,programId:e=Bd}){let t=Id.generate().publicKey.toBase58().slice(0,32);return{publicKey:Sd(o,t,e),seed:t}}function Sd(o,e,t){let n=Buffer.concat([o.toBuffer(),Buffer.from(e),t.toBuffer()]),r=nu(n);return new ou(r)}function Yi(o){let{mint:e,tokenAccount:t,owner:n,programId:r=Dn}=o;return Kd(t,e,n,r)}function Mt(o){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:r,programId:i=Dn}=o;return Cd(e,t,r,n,i)}async function Ut(o){let{connection:e,amount:t,commitment:n,payer:r,owner:i,skipCloseAccount:s}=o,a=await e.getMinimumBalanceForRentExemption(on.span,n),c=Y(t).add(new Nd(a)),u=Je({fromPublicKey:r,programId:Dn});return{addresses:{newAccount:u.publicKey},signers:[],instructions:[Od.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:u.seed,newAccountPubkey:u.publicKey,lamports:c.toNumber(),space:on.span,programId:Dn}),Yi({mint:new Ld(ve.address),tokenAccount:u.publicKey,owner:i,programId:Dn})],instructionTypes:[v.CreateAccount,v.InitAccount],endInstructionTypes:s?[]:[v.CloseAccount],endInstructions:s?[]:[Mt({tokenAccount:u.publicKey,payer:r,owner:i})]}}function mo({source:o,destination:e,owner:t,amount:n,multiSigners:r=[],tokenProgram:i=Dn}){return Rd(o,e,t,BigInt(String(n)),r,i)}var po=class extends Se{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:r}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=r||[],this._clientOwnedToken=!!(n||r)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}updateTokenAccount({tokenAccounts:t,tokenAccountRawInfos:n}){return t&&(this._tokenAccounts=t),n&&(this._tokenAccountRawInfos=n),this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=void 0,this._clientOwnedToken=!0,this}addAccountChangeListener(t){return this._accountListener.push(t),this}removeAccountChangeListener(t){return this._accountListener=this._accountListener.filter(n=>n!==t),this}getAssociatedTokenAccount(t,n){return ge(this.scope.ownerPubKey,t,n).publicKey}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length)return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let r=C(C({},{}),t),[i,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,r.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:an},r.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Md},r.commitment)]),{tokenAccounts:c,tokenAccountRawInfos:u}=ru({owner:this.scope.ownerPubKey,solAccountResp:i,tokenAccountResp:{context:s.context,value:[...s.value,...a.value]}});return this._tokenAccounts=c,this._tokenAccountRawInfos=u,this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>this.fetchWalletTokenAccounts({forceUpdate:!0}),t==null?void 0:t.commitment),{tokenAccounts:c,tokenAccountRawInfos:u}}async getCreatedTokenAccount({mint:t,programId:n=an,associatedOnly:r=!0}){await this.fetchWalletTokenAccounts();let i=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,c)=>a.amount.lt(c.amount)?1:-1),s=this.getAssociatedTokenAccount(t,n);for(let a of i){let{publicKey:c}=a;if(c&&(!r||r&&s.equals(c)))return c}}async getOrCreateTokenAccount(t){var y,f,b,g;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:r,associatedOnly:i,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:c=!1,checkCreateATAOwner:u=!1}=t,l=new xr(t.tokenProgram||an),m=this.getAssociatedTokenAccount(n,new xr(l)),d=(a?[]:this.tokenAccountRawInfos).filter(h=>h.accountInfo.mint.equals(n)&&(!i||h.pubkey.equals(m))).sort((h,P)=>h.accountInfo.amount.lt(P.accountInfo.amount)?1:-1);if(r===void 0||d.length>0)return d.length>0?{account:d[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(i){let h=Qi(s,m,s,n,l);if(u){let P=await this.scope.connection.getAccountInfo(m);if(P===null)(y=p.instructions)==null||y.push(h),p.instructionTypes.push(v.CreateATA);else if(!(P.owner.equals(l)&&Wn.decode(P.data).mint.equals(n)&&Wn.decode(P.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else p.instructions.push(h),p.instructionTypes.push(v.CreateATA);if(n.equals($)&&r.amount){let P=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:r.payer||this.scope.ownerPubKey,amount:(f=r.amount)!=null?f:0,skipCloseAccount:c});p.instructions.push(...P.instructions||[]),p.endInstructions.push(...P.endInstructions||[]),p.instructionTypes.push(...P.instructionTypes||[]),p.endInstructionTypes.push(...P.endInstructionTypes||[]),r.amount&&(p.instructions.push(mo({source:P.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:r.amount,tokenProgram:an})),p.instructionTypes.push(v.TransferAmount))}return c||(p.endInstructions.push(Mt({owner:s,payer:r.payer||s,tokenAccount:m,programId:l})),p.endInstructionTypes.push(v.CloseAccount)),{account:m,instructionParams:p}}else{let h=Je({fromPublicKey:s,programId:l}),P=await this.scope.connection.getMinimumBalanceForRentExemption(Wn.span),k=_d.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:h.seed,newAccountPubkey:h.publicKey,lamports:P+Number((g=(b=r.amount)==null?void 0:b.toString())!=null?g:0),space:Wn.span,programId:l});return p.instructions.push(k,Yi({mint:n,tokenAccount:h.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(v.CreateAccount),p.instructionTypes.push(v.InitAccount),c||(p.endInstructions.push(Mt({owner:s,payer:r.payer||s,tokenAccount:h.publicKey,programId:l})),p.endInstructionTypes.push(v.CloseAccount)),{account:h.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=an,autoUnwrapWSOLToSOL:r}){var c;await this.fetchWalletTokenAccounts();let i=(c=this.scope.account.tokenAccounts.find(({mint:u})=>(u==null?void 0:u.toBase58())===t.toBase58()))==null?void 0:c.publicKey,s=this.scope.ownerPubKey,a={};if(!i){let u=this.getAssociatedTokenAccount(t,n),l=await Qi(s,u,s,t,n);a.instructions=[l],a.instructionTypes=[v.CreateATA],i=u}return r&&$.toBase58()===t.toBase58()&&(a.endInstructions=[Mt({owner:s,payer:s,tokenAccount:i,programId:n})],a.endInstructionTypes=[v.CloseAccount]),{pubKey:i,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:r,mint:i,programId:s=an,tokenAccount:a,payer:c=this.scope.ownerPubKey,bypassAssociatedCheck:u,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(i,s);if(new xr($).equals(i)){let p=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:c,amount:r,skipCloseAccount:l});return C({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!u){let p=[],y=Qi(this.scope.ownerPubKey,d,this.scope.ownerPubKey,i,s);if(m){let f=await this.scope.connection.getAccountInfo(d);if(f===null)p.push(y);else if(!(f.owner.equals(an)&&Wn.decode(f.data).mint.equals(i)&&Wn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${i.toString()}, ata: ${d.toString()}`)}else p.push(y);return{tokenAccount:d,instructions:p,instructionTypes:[v.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:r=an,amount:i,useSOLBalance:s,handleTokenAccount:a}=t,c,u=this.createTxBuilder();if(n.equals(new xr($))&&s){let l=await this.handleTokenAccount({side:"in",amount:i||0,mint:n,bypassAssociatedCheck:!0,programId:r}),{tokenAccount:d}=l,p=xe(l,["tokenAccount"]);c=d,u.addInstruction(p)}else if(c=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:r}),!c&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:r}),{tokenAccount:d}=m,p=xe(m,["tokenAccount"]);c=d,u.addInstruction(p)}return C({tokenAccount:c},u.AllTxData)}};import{createAssociatedTokenAccountInstruction as np}from"@solana/spl-token";import{PublicKey as ke,SystemProgram as op}from"@solana/web3.js";import{PublicKey as mu}from"@solana/web3.js";var ji=M([E("instruction")]),Hi=M([E("instruction")]),Vd=M([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),j("accRewardPerShare"),K("rewardVault"),K("rewardMint"),K("rewardSender"),w("rewardType"),X(w(),15,"padding")]),vd=M([w("state"),w("nonce"),K("lpVault"),K("rewardVault"),K(),K(),w(),w(),w("totalReward"),j("perShareReward"),w("lastSlot"),w("perSlotReward")]),Fd=M([w("state"),w("nonce"),K("lpVault"),K("rewardVaultA"),w("totalRewardA"),j("perShareRewardA"),w("perSlotRewardA"),E("option"),K("rewardVaultB"),be(7),w("totalRewardB"),j("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),K()]),Ed=M([w(),w("state"),w("nonce"),w("validRewardTokenNum"),j("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),K("lpMint"),K("lpVault"),X(Vd,5,"rewardInfos"),K("creator"),K(),X(w(),32,"padding")]),iu=new Proxy(vd,{get(o,e,t){return e==="decode"?(...n)=>{let r=o.decode(...n);return F(C({},r),{version:3,rewardInfos:[{rewardVault:r.rewardVault,totalReward:r.totalReward,perSlotReward:r.perSlotReward,perShareReward:r.perShareReward}]})}:Reflect.get(o,e,t)}}),su=new Proxy(Fd,{get(o,e,t){return e==="decode"?(...n)=>{let r=o.decode(...n);return F(C({},r),{version:5,rewardInfos:[{rewardVault:r.rewardVaultA,totalReward:r.totalRewardA,perSlotReward:r.perSlotRewardA,perShareReward:r.perShareRewardA},{rewardVault:r.rewardVaultB,totalReward:r.totalRewardB,perSlotReward:r.perSlotRewardB,perShareReward:r.perShareRewardB}]})}:Reflect.get(o,e,t)}}),fo=new Proxy(Ed,{get(o,e,t){return e==="decode"?(...n)=>{let r=o.decode(...n);return F(C({},r),{version:6,rewardInfos:r.rewardInfos.map(i=>{var s;return F(C({},i),{rewardType:((s=Object.entries(un).find(a=>String(a[1])===i.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(o,e,t)}}),Dd=M([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Zi=M([E("instruction"),w("nonce"),X(Dd,5,"rewardTimeInfo")]),$i=M([E("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),Ji=M([E("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),bP=M([w("state"),K("id"),K("owner"),w("deposited"),X(w(),1,"rewardDebts")]),yo=M([w("state"),K("id"),K("owner"),w("deposited"),X(j(),1,"rewardDebts"),w(""),w("voteLockedBalance"),X(w(),15)]),gP=M([w("state"),K("id"),K("owner"),w("deposited"),X(w(),2,"rewardDebts")]),au=M([w("state"),K("id"),K("owner"),w("deposited"),X(j(),2,"rewardDebts"),X(w(),17)]),uu=M([w(),w("state"),K("id"),K("owner"),w("deposited"),X(j(),5,"rewardDebts"),X(w(),16)]),rt=M([E("instruction"),w("amount")]),Wd=M([K("mint"),K("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),Ha("digitShift"),X(E(),7,"reserved1"),X(w(),7,"reserved2")]),cu=M([be(8),K("governanceProgramId"),K("realm"),K("realmGoverningTokenMint"),K("realmAuthority"),X(E(),32,"reserved1"),X(Wd,4,"votingMints"),kr("timeOffset"),E("bump"),X(E(),7,"reserved2"),X(w(),11,"reserved3")]),qd=M([kr("startTime"),kr("endTime"),E("kind"),X(E(),15,"reserved")]),Ud=M([X(qd,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),je("isUsed"),je("allowClawback"),E("votingMintConfigIdx"),X(E(),29,"reserved")]),lu=M([be(8),K("voterAuthority"),K("registrar"),X(Ud,32,"deposits"),E("voterBump"),E("voterWweightRecordBump"),X(E(),94,"reserved")]);var du=new mu("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),pu=new mu("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),fu={3:iu,5:su,6:fo},yu={3:yo,5:au,6:uu},es=o=>[3,5,6].indexOf(o)!==-1,ts=o=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=o,r=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,i={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${r}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${r}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${r}`}};return(s=i[e])==null?void 0:s.call(i)},un={"Standard SPL":0,"Option tokens":1},bt={[Si.toString()]:3,[Ki.toString()]:5,[Fn.toString()]:6,[br.FarmV3.toString()]:3,[br.FarmV5.toString()]:5,[br.FarmV6.toString()]:6};import{PublicKey as se,SystemProgram as An,SYSVAR_RENT_PUBKEY as zd,SYSVAR_CLOCK_PUBKEY as Ao,TransactionInstruction as Ue}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Yd,TOKEN_PROGRAM_ID as dt,ASSOCIATED_TOKEN_PROGRAM_ID as Qd}from"@solana/spl-token";import Sr from"bn.js";function ns(o,e,t){return ue([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],o)}function os(o,e){return ue([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],o)}function rs(o,e){return ue([e.toBuffer()],o)}function is(o,e,t){return ue([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],o)}function ss(o,e,t){return ue([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],o)}function as(o,e,t,n){return ue([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],o)}import ct from"bn.js";var bo=ce("Raydium.farm.util");function go({programId:o,poolId:e,mint:t,type:n}){let{publicKey:r}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],o);return r}function et({programId:o,poolId:e,owner:t,version:n}){let{publicKey:r}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],o);return r}var bu=({programId:o,poolId:e})=>ue([e.toBuffer()],o);function gu(o){return{isSet:new ct(1),rewardPerSecond:Y(o.perSecond),rewardOpenTime:Y(o.openTime),rewardEndTime:Y(o.endTime),rewardType:Y(un[o.rewardType])}}function us(o){return Y(o.endTime).sub(Y(o.openTime)).mul(Y(o.perSecond))}function qn(o){let e=yu[o];return e||bo.logWithError("invalid version",o),e}function Gd(o){let e=fu[o];return e||bo.logWithError("invalid version",o),e}function Xd(o,e,t,n){if(o.version===3||o.version===5){if(o.lastSlot.gte(new ct(t)))return o;let r=new ct(t).sub(o.lastSlot);o.lastSlot=new ct(t);for(let i of o.rewardInfos){if(e.amount.eq(new ct(0)))continue;let s=i.perSlotReward.mul(r);i.perShareReward=i.perShareReward.add(s.mul(new ct(10).pow(new ct(o.version===3?9:15))).div(e.amount)),i.totalReward=i.totalReward.add(s)}}else if(o.version===6)for(let r of o.rewardInfos){if(r.rewardState.eq(new ct(0)))continue;let i=ct.min(new ct(n),r.rewardEndTime);if(r.rewardOpenTime.gte(i))continue;let a=i.sub(r.rewardLastUpdateTime).mul(r.rewardPerSecond),c=r.totalReward.sub(r.totalRewardEmissioned);c.lt(a)?(a=c,r.rewardLastUpdateTime=r.rewardLastUpdateTime.add(c.div(r.rewardPerSecond))):r.rewardLastUpdateTime=i,!e.amount.eq(new ct(0))&&(r.accRewardPerShare=r.accRewardPerShare.add(a.mul(o.rewardMultiplier).div(e.amount)),r.totalRewardEmissioned=r.totalRewardEmissioned.add(a))}return o}async function DP({connection:o,farmPools:e,owner:t,config:n,chainTime:r}){let i=!1,s=!1,a=new ct(10),c=[];for(let d of e){let p=Ie(d);p.version===6?s=!0:i=!0,c.push({pubkey:p.id,version:p.version,key:"state",poolId:p.id},{pubkey:p.lpVault,version:p.version,key:"lpVault",poolId:p.id}),t&&c.push({pubkey:et({programId:p.programId,poolId:p.id,owner:t,version:d.version}),version:p.version,key:"ledger",poolId:p.id})}let u={},l=await De(o,c,n);for(let{pubkey:d,version:p,key:y,poolId:f,accountInfo:b}of l){let g=f.toBase58();if(u[g]=C({},u[g]),y==="state"){let h=Gd(p);(!b||!b.data||b.data.length!==h.span)&&bo.logWithError(`invalid farm state account info, pools.id, ${d}`),u[g].state=h.decode(b.data)}else if(y==="lpVault")(!b||!b.data||b.data.length!==on.span)&&bo.logWithError(`invalid farm lp vault account info, pools.lpVault, ${d}`),u[g].lpVault=on.decode(b.data);else if(y==="ledger"){let h=qn(p);b&&b.data&&(b.data.length!==h.span&&bo.logWithError(`invalid farm ledger account info, ledger, ${d}`),u[g].ledger=h.decode(b.data))}}let m=s||i?await o.getSlot():0;for(let d of Object.keys(u))u[d]!==void 0&&(u[d].state=Xd(u[d].state,u[d].lpVault,m,r));for(let[d,{state:p,ledger:y}]of Object.entries(u))if(y){let f=p.version===6?p.rewardMultiplier:p.rewardInfos.length===1?a.pow(new ct(9)):a.pow(new ct(15)),b=p.rewardInfos.map((g,h)=>{let P=y.rewardDebts[h];return y.deposited.mul(p.version===6?g.accRewardPerShare:g.perShareReward).div(f).sub(P)});u[d].wrapped=F(C({},u[d].wrapped),{pendingRewards:b})}return u}function WP(o,e=Date.now()){if(o.version===6){let t=o.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>_a(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>Va(e,n.toNumber(),{unit:"s"})))return"closed pool"}else{let t=o.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 cs(o,e,t,n){let r=await o.getAccountInfo(e);if(r===null)throw Error("registrar info check error");let s=cu.decode(r.data).votingMints.findIndex(l=>l.mint.equals(n));if(s===-1)throw Error("find voter mint error");let a=await o.getAccountInfo(t);if(a===null)return{index:s,isInit:!1};let u=lu.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return u===-1?{index:s,isInit:!1}:{index:u,isInit:!0}}var jd=ce("Raydium_farm_instruction"),wo={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 Kr(o){let{version:e,id:t,ledger:n,programId:r,owner:i}=o,s={3:9,5:10}[e];s||jd.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(ji.span);ji.encode({instruction:s},a);let c=[A({pubkey:t}),A({pubkey:n}),A({pubkey:i,isWritable:!1}),A({pubkey:An.programId,isWritable:!1}),A({pubkey:zd,isWritable:!1})];return{instruction:new Ue({programId:r,keys:c,data:a}),instructionType:v.FarmV3CreateLedger}}function Au(o){var n;let e=Buffer.alloc(Zi.span);Zi.encode({instruction:0,nonce:new Sr(o.nonce),rewardTimeInfo:o.rewardInfoConfig},e);let t=[...mi,A({pubkey:o.farmId}),A({pubkey:o.farmAuthority,isWritable:!1}),A({pubkey:o.lpVault}),A({pubkey:o.lpMint,isWritable:!1}),A({pubkey:o.lockVault}),A({pubkey:o.lockMint,isWritable:!1}),A({pubkey:(n=o.lockUserAccount)!=null?n:Ve}),A({pubkey:o.owner,isWritable:!1,isSigner:!0})];for(let r of o.rewardInfo)t.push(A({pubkey:r.rewardMint,isWritable:!1}),A({pubkey:r.rewardVault}),A({pubkey:r.userRewardToken}));return{instruction:new Ue({programId:o.programId,keys:t,data:e}),instructionType:v.FarmV6Create}}function wu(o){let e=Buffer.alloc(Hi.span);Hi.encode({instruction:5},e);let t=[A({pubkey:dt,isWritable:!1}),A({pubkey:o.id}),A({pubkey:o.authority,isWritable:!1}),A({pubkey:o.lpVault,isWritable:!1}),A({pubkey:o.rewardVault}),A({pubkey:o.userRewardToken}),A({pubkey:o.owner,isWritable:!1,isSigner:!0})];return{instruction:new Ue({programId:o.programId,keys:t,data:e}),instructionType:v.FarmV6CreatorWithdraw}}function Hd(o,e,t,n,r,i,s,a,c,u,l,m,d){let p=M([E("depositEntryIndex"),w("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:nr,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({depositEntryIndex:m,amount:d},f);let b=Buffer.from([...wo.voterStakeRegistryDeposit,...f]);return new Ue({keys:y,programId:o,data:b})}function Zd(o,e,t,n){let r=M([]),i=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:An.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(r.span);r.encode({},s);let a=Buffer.from([...wo.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new Ue({keys:i,programId:o,data:a})}function $d(o,e,t,n,r,i,s,a,c,u,l,m,d,p,y){let f=M([E("depositEntryIndex"),w("amount")]),b=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:nr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:p,amount:y},g);let h=Buffer.from([...wo.voterStakeRegistryWithdraw,...g]);return new Ue({keys:b,programId:o,data:h})}function Jd(o,e,t,n,r,i){let s=M([E("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!0,isWritable:!0},{pubkey:An.programId,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);return s.encode({ins:23},c),new Ue({keys:a,programId:o,data:c})}function ep(o,e,t,n,r,i,s,a){let c=M([E("voterBump"),E("voterWeightRecordBump")]),u=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:nr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({voterBump:s,voterWeightRecordBump:a},l);let m=Buffer.from([...wo.voterStakeRegistryCreateVoter,...l]);return new Ue({keys:u,programId:o,data:m})}function tp(o,e,t,n,r,i,s,a,c,u,l,m){let d=M([E("depositEntryIndex"),E("kind"),E("option"),w("startTs"),$e("periods"),je("allowClawback")]),p=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:Qd,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1}],y=Buffer.alloc(d.span);d.encode({depositEntryIndex:a,kind:c,option:u===void 0?0:1,startTs:u,periods:l,allowClawback:m},y);let f=Buffer.from([...wo.voterStakeRegistryCreateDepositEntry,...y]);return new Ue({keys:p,programId:o,data:f})}async function rh({connection:o,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:r,communityTokenMint:i,owner:s,poolId:a,tokenProgram:c}){let u=ns(n,r,i).publicKey,l=et({programId:e,poolId:a,owner:s,version:3}),m=await o.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=yo.decode(m.data),p=d.deposited.sub(d.voteLockedBalance);if(console.log("amount",p.toString()),p.eq(new Sr(0)))throw Error("user do not has new stake amount");let y=os(e,a).publicKey,f=rs(e,a).publicKey,{publicKey:b,nonce:g}=is(n,u,s),h=ge(b,y,c).publicKey,{publicKey:P,nonce:k}=ss(n,u,s),B=as(t,r,i,s).publicKey,T=[],S=ge(s,y,c).publicKey;if(await o.getAccountInfo(S)===null&&T.push(Yd(s,S,s,y)),await o.getAccountInfo(b)===null){let q=Jd(t,r,s,i,s,B);T.push(q,ep(n,u,b,P,s,s,g,k))}let{index:I,isInit:N}=await cs(o,u,b,y);return N||T.push(tp(n,u,b,h,s,s,y,I,0,void 0,0,!1)),T.push(Hd(n,u,b,h,S,s,l,a,y,f,e,I,p),Zd(n,u,b,P)),T}async function ih({connection:o,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:r,communityTokenMint:i,owner:s,poolId:a,tokenProgram:c}){let u=ns(n,r,i).publicKey,l=et({programId:e,poolId:a,owner:s,version:3}),m=await o.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=yo.decode(m.data);if(d.voteLockedBalance.eq(new Sr(0)))throw Error("user has vote locked balance = 0");let p=os(e,a).publicKey,y=rs(e,a).publicKey,{publicKey:f}=is(n,u,s),b=ge(f,p,c).publicKey,{publicKey:g}=ss(n,u,s),h=as(t,r,i,s).publicKey,P=[],{index:k,isInit:B}=await cs(o,u,f,p);if(!B)throw Error("deposit entry index check error");return P.push($d(n,u,f,s,h,g,b,ge(s,p,c).publicKey,l,a,p,y,e,k,d.voteLockedBalance)),P}function ls({payer:o,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:r}){let i=Buffer.alloc($i.span);$i.encode({instruction:3,rewardReopenTime:Y(r.openTime),rewardEndTime:Y(r.endTime),rewardPerSecond:Y(r.perSecond)},i);let s=[A({pubkey:dt,isWritable:!1}),A({pubkey:n.id}),A({pubkey:n.lpVault,isWritable:!1}),A({pubkey:e}),A({pubkey:t}),A({pubkey:o,isWritable:!1,isSigner:!0})];return new Ue({programId:n.programId,keys:s,data:i})}function ms({payer:o,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:r}){let i=Buffer.alloc(Ji.span);Ji.encode({instruction:4,isSet:new Sr(1),rewardPerSecond:Y(r.perSecond),rewardOpenTime:Y(r.openTime),rewardEndTime:Y(r.endTime),rewardType:Y(un[r.rewardType])},i);let s=[...mi,A({pubkey:t.id}),A({pubkey:t.authority,isWritable:!1}),A({pubkey:r.mint,isWritable:!1}),A({pubkey:n}),A({pubkey:e}),A({pubkey:o,isWritable:!1,isSigner:!0})];return new Ue({programId:t.programId,keys:s,data:i})}function sh(o){let{farmInfo:e,farmKeys:t,version:n,lpAccount:r,rewardAccounts:i,owner:s,instruction:a,amount:c,deposit:u}=o,[l,m]=[new se(e.programId),new se(e.id)],d=et({programId:l,poolId:m,owner:s,version:n}),p=Buffer.alloc(rt.span);rt.encode({instruction:a,amount:c},p);let y=n===6?[A({pubkey:dt,isWritable:!1}),...u?[A({pubkey:An.programId,isWritable:!1})]:[],A({pubkey:m}),A({pubkey:new se(t.authority),isWritable:!1}),A({pubkey:new se(t.lpVault)}),A({pubkey:d}),A({pubkey:s,isWritable:!1,isSigner:!0}),A({pubkey:r})]:[A({pubkey:m}),A({pubkey:new se(t.authority),isWritable:!1}),A({pubkey:d}),A({pubkey:s,isWritable:!1,isSigner:!0}),A({pubkey:r}),A({pubkey:new se(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new se(t.rewardInfos[0].vault)}),A({pubkey:Ao,isWritable:!1}),A({pubkey:dt,isWritable:!1})];if(n===5)for(let f=1;f<t.rewardInfos.length;f++)y.push(A({pubkey:i[f]})),y.push(A({pubkey:new se(t.rewardInfos[f].vault)}));if(n===6)for(let f=0;f<t.rewardInfos.length;f++)y.push(A({pubkey:new se(t.rewardInfos[f].vault)})),y.push(A({pubkey:i[f]}));return new Ue({programId:l,keys:y,data:p})}function Po(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:i,amount:s}=o,[a,c]=[new se(e.programId),new se(e.id)],u=et({programId:a,poolId:c,owner:i,version:6}),l=Buffer.alloc(rt.span);rt.encode({instruction:2,amount:Y(s)},l);let m=[A({pubkey:dt,isWritable:!1}),A({pubkey:c}),A({pubkey:new se(t.authority),isWritable:!1}),A({pubkey:new se(t.lpVault)}),A({pubkey:u}),A({pubkey:i,isWritable:!1,isSigner:!0}),A({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(A({pubkey:new se(t.rewardInfos[d].vault)})),m.push(A({pubkey:r[d]}));return new Ue({programId:a,keys:m,data:l})}function ho(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:i,amount:s,userAuxiliaryLedgers:a}=o,[c,u]=[new se(e.programId),new se(e.id)],l=et({programId:c,poolId:u,owner:i,version:5}),m=Buffer.alloc(rt.span);rt.encode({instruction:12,amount:Y(s)},m);let d=[A({pubkey:u}),A({pubkey:new se(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:i,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new se(t.lpVault)}),A({pubkey:r[0]}),A({pubkey:new se(t.rewardInfos[0].vault)}),A({pubkey:Ao,isWritable:!1}),A({pubkey:dt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(A({pubkey:r[p]})),d.push(A({pubkey:new se(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(A({pubkey:p}));return new Ue({programId:c,keys:d,data:m})}function ko(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:i,amount:s,userAuxiliaryLedgers:a}=o,[c,u]=[new se(e.programId),new se(e.id)],l=et({programId:c,poolId:u,owner:i,version:3}),m=Buffer.alloc(rt.span);rt.encode({instruction:11,amount:Y(s)},m);let d=[A({pubkey:u}),A({pubkey:new se(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:i,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new se(t.lpVault)}),A({pubkey:r[0]}),A({pubkey:new se(t.rewardInfos[0].vault)}),A({pubkey:Ao,isWritable:!1}),A({pubkey:dt,isWritable:!1})];if(a)for(let p of a)d.push(A({pubkey:p}));return new Ue({programId:c,keys:d,data:m})}function Pu(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:i,amount:s,userAuxiliaryLedgers:a}=o,[c,u]=[new se(e.programId),new se(e.id)],l=et({programId:c,poolId:u,owner:i,version:3}),m=Buffer.alloc(rt.span);rt.encode({instruction:10,amount:Y(s)},m);let d=[A({pubkey:u}),A({pubkey:new se(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:i,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new se(t.lpVault)}),A({pubkey:r[0]}),A({pubkey:new se(t.rewardInfos[0].vault)}),A({pubkey:Ao,isWritable:!1}),A({pubkey:dt,isWritable:!1})];if(a)for(let p of a)d.push(A({pubkey:p}));return new Ue({programId:c,keys:d,data:m})}function hu(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:i,amount:s,userAuxiliaryLedgers:a}=o,[c,u]=[new se(e.programId),new se(e.id)],l=et({programId:c,poolId:u,owner:i,version:5}),m=Buffer.alloc(rt.span);rt.encode({instruction:11,amount:Y(s)},m);let d=[A({pubkey:u}),A({pubkey:new se(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:i,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new se(t.lpVault)}),A({pubkey:r[0]}),A({pubkey:new se(t.rewardInfos[0].vault)}),A({pubkey:Ao,isWritable:!1}),A({pubkey:dt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(A({pubkey:r[p]})),d.push(A({pubkey:new se(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(A({pubkey:p}));return new Ue({programId:c,keys:d,data:m})}function ku(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:i,amount:s}=o,[a,c]=[new se(e.programId),new se(e.id)],u=et({programId:a,poolId:c,owner:i,version:6}),l=Buffer.alloc(rt.span);rt.encode({instruction:1,amount:Y(s)},l);let m=[A({pubkey:dt,isWritable:!1}),A({pubkey:An.programId,isWritable:!1}),A({pubkey:c}),A({pubkey:new se(t.authority),isWritable:!1}),A({pubkey:new se(t.lpVault)}),A({pubkey:u}),A({pubkey:i,isWritable:!1,isSigner:!0}),A({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(A({pubkey:new se(t.rewardInfos[d].vault)})),m.push(A({pubkey:r[d]}));return new Ue({programId:a,keys:m,data:l})}var To=class extends Se{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(Ve)){let n=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:us(F(C({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:n,programId:r=Fn,txVersion:i}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new ke(e.lpMint.address),lockInfo:{lockMint:du,lockVault:pu},version:6,rewardInfos:t,programId:r},c=this.createTxBuilder(),u=n!=null?n:this.scope.ownerPubKey,l=Je({fromPublicKey:u,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(fo.span);c.addInstruction({instructions:[op.createAccountWithSeed({fromPubkey:u,basePubkey:u,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:fo.span,programId:a.programId})]});let{publicKey:d,nonce:p}=bu({programId:new ke(a.programId),poolId:l.publicKey}),y=go({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let B of a.rewardInfos){B.openTime>=B.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",B.openTime.toString()),isNaN(un[B.rewardType])&&this.logAndCreateError("rewardType error",B.rewardType),Number(B.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",B.perSecond),f.push(gu(B));let{rewardPubKey:T,newInstruction:S}=await this._getUserRewardInfo({rewardInfo:B,payer:u});S&&c.addInstruction(S),T||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let x=B.mint.equals(Ve)?new ke(ve.address):B.mint;b.push({rewardMint:x,rewardVault:go({programId:a.programId,poolId:l.publicKey,mint:x,type:"rewardVault"}),userRewardToken:T})}let{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:new ke(a.lockInfo.lockMint),owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1});h&&c.addInstruction(h),g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:P,instructionType:k}=Au({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:d,lpVault:y,lpMint:a.lpMint,lockVault:a.lockInfo.lockVault,lockMint:a.lockInfo.lockMint,lockUserAccount:g,programId:a.programId,rewardInfo:b,rewardInfoConfig:f,nonce:p});return c.addInstruction({instructions:[P],instructionTypes:[k]}).versionBuild({txVersion:i,extInfo:{farmId:l.publicKey,farmAuthority:d,lpVault:y,lockUserAccount:g,nonce:p}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:r}){var b;let i=bt[e.programId];i!==6&&this.logAndCreateError("invalid farm version ",i);let s=Ie((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let c=t||this.scope.ownerPubKey,u=n.mint.equals(Ve)?new ke(ve.address):n.mint,l=a.rewardInfos.findIndex(g=>new ke(g.mint.address).equals(u)),m=s.rewardInfos[l];m||this.logAndCreateError("configuration does not exist","rewardMint",u);let d=(b=m.vault)!=null?b:Ve,p=this.createTxBuilder(),{rewardPubKey:y,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:n,payer:c});return f&&p.addInstruction(f),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),p.addInstruction({instructions:[ls({payer:this.scope.ownerPubKey,rewardVault:d,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[v.FarmV6Restart]}).versionBuild({txVersion:r})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:r}){var l;let i=bt[e.programId];i!==6&&this.logAndCreateError("invalid farm version ",i);let s=Ie((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.forEach(m=>{m.openTime>=m.endTime&&this.logAndCreateError("start time error","newRewardInfo",m)});let c=t||this.scope.ownerPubKey,u=this.createTxBuilder();for(let m of n){let d=m.mint.equals(Ve)?new ke(ve.address):m.mint,p=a.rewardInfos.findIndex(P=>new ke(P.mint.address).equals(d)),y=s.rewardInfos[p];y||this.logAndCreateError("configuration does not exist","rewardMint",d);let f=(l=y.vault)!=null?l:Ve,{rewardPubKey:b,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:m,payer:c});g&&u.addInstruction(g),b||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let h=ls({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});u.addInstruction({instructions:[h],instructionTypes:[v.FarmV6Restart]})}return u.versionBuild({txVersion:r})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:r,payer:i}=e,s=bt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ie((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),c=i!=null?i:this.scope.ownerPubKey,u=this.createTxBuilder(),l=r.mint.equals(Ve)?new ke(ve.address):r.mint,m=go({programId:new ke(n.programId),poolId:new ke(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:d,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:r,payer:c});return p&&u.addInstruction(p),d||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),r.mint=l,u.addInstruction({instructions:[ms({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:m,rewardInfo:r})],instructionTypes:[v.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:r,payer:i}=e,s=bt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ie((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),c=i!=null?i:this.scope.ownerPubKey,u=this.createTxBuilder();for(let l of r){let m=l.mint.equals(Ve)?new ke(ve.address):l.mint,d=go({programId:new ke(n.programId),poolId:new ke(n.id),mint:m,type:"rewardVault"}),{rewardPubKey:p,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:l,payer:c});y&&u.addInstruction(y),p||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let f=ms({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:d,rewardInfo:F(C({},l),{mint:m})});u.addInstruction({instructions:[f],instructionTypes:[v.FarmV6CreatorAddReward]})}return u.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:r,feePayer:i,useSOLBalance:s,associatedOnly:a=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:u,computeBudgetConfig:l}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:m,programId:d}=n,p=bt[d];es(p)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new ke(n.programId),new ke(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=et({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:p}),h=this.createTxBuilder();h.addCustomComputeBudget(l);let P={};for(let D of this.scope.account.tokenAccounts)if(a){let J=ge(this.scope.ownerPubKey,D.mint,D.programId).publicKey;D.publicKey&&J.equals(D.publicKey)&&(P[D.mint.toString()]=D.publicKey)}else P[D.mint.toString()]=D.publicKey;let k=b.lpMint,B=P[k.address];B||this.logAndCreateError("you don't have any lp","lp zero",P);let T=[];for(let D of m){let J=s&&D.mint.address===$.toString(),G=P[D.mint.address];if(!G){let{account:W,instructionParams:ot}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:D.mint.programId,mint:new ke(D.mint.address),notUseTokenAccount:J,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!J,associatedOnly:J?!1:a,checkCreateATAOwner:c});G=W,ot&&h.addInstruction(ot)}P[D.mint.address]=G,T.push(G)}let S,x=await this.scope.connection.getAccountInfo(g);if(x&&(S=qn(p).decode(x.data)),n.programId!==Fn.toString()&&!S){let{instruction:D,instructionType:J}=Kr({id:f,programId:y,version:p,ledger:g,owner:this.scope.ownerPubKey});h.addInstruction({instructions:[D],instructionTypes:[J]})}let R=ts({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:T});R&&this.logAndCreateError(R);let I={amount:Y(r),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:B,rewardAccounts:T,userAuxiliaryLedgers:u==null?void 0:u.map(D=>new ke(D))},N=p===6?ku(I):p===5?hu(I):Pu(I),q={3:v.FarmV3Deposit,5:v.FarmV5Deposit,6:v.FarmV6Deposit};return h.addInstruction({instructions:[N],instructionTypes:[q[p]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:r,deposited:i,useSOLBalance:s,feePayer:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:l,computeBudgetConfig:m}=e,{rewardInfos:d}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let p=bt[n.programId];es(p)||this.logAndCreateError("invalid farm program:",n.programId);let y=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],f=this.createTxBuilder();f.addCustomComputeBudget(m);let b={};for(let R of this.scope.account.tokenAccounts)if(c){let I=ge(this.scope.ownerPubKey,R.mint).publicKey;R.publicKey&&I.equals(R.publicKey)&&(b[R.mint.toString()]=R.publicKey)}else b[R.mint.toString()]=R.publicKey;if(i)i.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let R=et({programId:new ke(n.programId),poolId:new ke(n.id),owner:this.scope.ownerPubKey,version:p}),I=await this.scope.connection.getAccountInfo(R);I||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:I}),qn(p).decode(I.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,h=s&&g===$.toString(),P=b[g.toString()];if(!P){let{account:R,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new ke(g),notUseTokenAccount:h,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:c,checkCreateATAOwner:u});P=R,I&&f.addInstruction(I)}b[g.toString()]=P;let k=[];for(let R of d){let I=s&&R.mint.address===$.toString(),N=b[R.mint.address];if(!N){let{account:q,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:R.mint.programId,mint:new ke(R.mint.address),notUseTokenAccount:I,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!I,associatedOnly:I?!1:c,checkCreateATAOwner:u});N=q,D&&f.addInstruction(D)}b[R.mint.address]=N,k.push(N)}let B=ts({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:k});B&&this.logAndCreateError(B);let T={amount:Y(r),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:P,rewardAccounts:k,userAuxiliaryLedgers:l==null?void 0:l.map(R=>new ke(R))},S=p===6?Po(T):p===5?ho(T):ko(T),x={3:v.FarmV3Withdraw,5:v.FarmV5Withdraw,6:v.FarmV6Withdraw};return f.addInstruction({instructions:[S],instructionTypes:[x[p]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var p;this.scope.checkOwner();let r=Ie((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),i=bt[e.programId];i!==6&&this.logAndCreateError("invalid farm version",i);let s=e.rewardInfos.findIndex(y=>y.mint.address===Ve.toString()?new ke(ve.address):t),a=r.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let c=(p=a==null?void 0:a.vault)!=null?p:Ve,u=this.createTxBuilder(),l;if(t.equals(Ve)){let y=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:us(F(C({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new V(a.perSecond).mul(10**a.mint.decimals).toString()}))});l=y.addresses.newAccount,u.addInstruction(y)}else{let y=await this.scope.account.getCreatedTokenAccount({mint:t});y===null?(l=await this.scope.account.getAssociatedTokenAccount(t),u.addInstruction({instructions:[np(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[v.CreateATA]})):l=y}let{instruction:m,instructionType:d}=wu({programId:r.programId,id:r.id,authority:r.authority,lpVault:r.lpVault,rewardVault:c,userRewardToken:l,owner:this.scope.ownerPubKey});return u.addInstruction({instructions:[m],instructionTypes:[d]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:r,associatedOnly:i=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:c,computeBudgetConfig:u}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(i){let f=ge(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(m[y.mint.toString()]=y.publicKey)}else m[y.mint.toString()]=y.publicKey;let p=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>F(C({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:h}=y,P=bt[f],k=b.address,B=n&&k===$.toString(),T=m[k];if(!T){let{account:q,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new ke(k),notUseTokenAccount:B,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:B?!1:i,checkCreateATAOwner:s});T=q,D&&l.addInstruction(D)}m[k.toString()]=T;let S=[];for(let q of g){let D=n&&q.mint.address===$.toString(),J=m[q.mint.address];if(!J){let{account:G,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:q.mint.programId,mint:new ke(q.mint.address),notUseTokenAccount:D,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!D,associatedOnly:D?!1:i,checkCreateATAOwner:s});J=G,W&&l.addInstruction(W)}m[q.mint.address]=J,S.push(J)}let x=p[h],R={amount:Ee,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:T,rewardAccounts:S,userAuxiliaryLedgers:a==null?void 0:a.map(q=>new ke(q))},I=P===6?Po(R):P===5?ho(R):ko(R),N={3:v.FarmV3Withdraw,5:v.FarmV5Withdraw,6:v.FarmV6Withdraw};l.addInstruction({instructions:[I],instructionTypes:[N[P]]})}return c===1?l.sizeCheckBuild({computeBudgetConfig:u}):l.sizeCheckBuildV0({computeBudgetConfig:u})}};import{PublicKey as Me}from"@solana/web3.js";import{AccountLayout as Gp,NATIVE_MINT as sc,TOKEN_PROGRAM_ID as Dr}from"@solana/spl-token";var Rh=M([$e("mintAuthorityOption"),K("mintAuthority"),w("supply"),E("decimals"),E("isInitialized"),$e("freezeAuthorityOption"),K("freezeAuthority")]);import{PublicKey as rp}from"@solana/web3.js";import{MintLayout as Tu,TOKEN_PROGRAM_ID as ip}from"@solana/spl-token";var Dh=async({connection:o,mint:e})=>{let t=await o.getAccountInfo(new rp(e));return!t||t.data.length!==Tu.span?void 0:Tu.decode(t.data)},Wh=({mint:o,decimals:e,programId:t=ip,logoURI:n="",priority:r=3})=>{let i=o.toBase58().substring(0,6);return{address:o.toBase58(),decimals:e,symbol:i,logoURI:n,extensions:{},chainId:101,programId:t.toString(),name:i,tags:[],priority:r}},Cr=o=>new ye({mint:o.address,decimals:o.decimals,symbol:o.symbol,name:o.name}),Io=r=>{var i=r,{amount:o,isRaw:e,name:t}=i,n=xe(i,["amount","isRaw","name"]);return new fe(new ye({mint:mt(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),o,e,t)};function qh(o){return o.address===Rt.address?ve:o}function Uh(o){return o.address===ve.address?Rt:o}var it=r=>{var i=r,{address:o,programId:e,decimals:t}=i,n=xe(i,["address","programId","decimals"]);return C({chainId:101,address:mt(o).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)},cn=o=>o?F(C({},o),{transferFeeConfigAuthority:o.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:o.withdrawWithheldAuthority.toBase58(),withheldAmount:o.withheldAmount.toString(),olderTransferFee:F(C({},o.olderTransferFee),{epoch:o.olderTransferFee.epoch.toString(),maximumFee:o.olderTransferFee.maximumFee.toString()}),newerTransferFee:F(C({},o.newerTransferFee),{epoch:o.newerTransferFee.epoch.toString(),maximumFee:o.newerTransferFee.maximumFee.toString()})}):void 0;import{TOKEN_PROGRAM_ID as Xn,ASSOCIATED_TOKEN_PROGRAM_ID as wp}from"@solana/spl-token";import{PublicKey as Ae,TransactionInstruction as Gt,SystemProgram as Lu,SYSVAR_RENT_PUBKEY as Pp}from"@solana/web3.js";var ds=M([E("instruction"),w("amountIn"),w("minAmountOut")]),ps=M([E("instruction"),w("maxAmountIn"),w("amountOut")]),tk=M([E("instruction"),E("nonce")]),fs=M([E("instruction"),E("nonce"),w("startTime")]),Bo=M([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"),j("swapBaseInAmount"),j("swapQuoteOutAmount"),w("swapBase2QuoteFee"),j("swapQuoteInAmount"),j("swapBaseOutAmount"),w("swapQuote2BaseFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("withdrawQueue"),K("lpVault"),K("owner"),w("lpReserve"),X(w(),3,"padding")]),sp=M([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"),j("swapBaseInAmount"),j("swapQuoteOutAmount"),j("swapQuoteInAmount"),j("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("modelDataAccount"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("owner"),X(w(),64,"padding")]),ys=M([E("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),bs=M([E("instruction"),w("amountIn")]),nk={4:Bo,5:sp},Iu=M([w("fee")]);import{PublicKey as ap}from"@solana/web3.js";var Gn=new ap("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Pn=5e4,up=M([w("x"),w("y"),w("price")]),cp=M([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),X(up,Pn,"DataElement")]);function lp(o,e){return[0,Pn-2]}function mp(o){return[0,Pn-2]}function dp(o){return[0,Pn-2]}function pp(o,e,t){let[n,r]=lp(e,t),i=n,s=r,a=0,c=e*o.multiplier/t;for(;i<=s;){if(a=Math.floor((s+i)/2),a===0||a>=Pn-2)return[a,a,!1];let u=o.DataElement[a].x*o.multiplier/o.DataElement[a].y,l=o.DataElement[a-1].x*o.multiplier/o.DataElement[a-1].y,m=o.DataElement[a+1].x*o.multiplier/o.DataElement[a+1].y;if(c===u)return[a,a,!0];if(c===l)return[a-1,a-1,!0];if(c===m)return[a+1,a+1,!0];if(c<l)s=a-1;else{if(c>l&&c<u)return[a-1,a,!0];if(c>u&&c<m)return[a,a+1,!0];i=a+1}}return[a,a,!1]}function gs(o,e,t){let[n,r,i]=pp(o,e,t);if(!i)return 0;if(n===r){let s=o.DataElement[n].x;return e*o.multiplier/s}else{let s=o.DataElement[n].x,a=o.DataElement[n].y,c=o.DataElement[r].x,u=o.DataElement[r].y,l=t*(c*a-s*u),m=s*l,d=(c-s)*(e*a-s*t)*u,p=m+d;return e*o.multiplier*l/p}}function wn(o,e,t){return e*o.multiplier/t}function Bu(o,e,t){return e*t/o.multiplier}function fp(o,e){let[t,n]=mp(e),r=t,i=n,s=0,a=e;for(;r<i;){if(s=Math.floor((i+r)/2),s<=0||s>Pn-2)return[s,s,!1];let c=o.DataElement[s].x,u=o.DataElement[s-1].x,l=o.DataElement[s+1].x;if(a===c)return[s,s,!0];if(a===u)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<u)i=s-1;else{if(a>u&&a<c)return[s-1,s,!0];if(a>c&&a<l)return[s,s+1,!0];r=s+1}}return[s,s,!1]}function yp(o,e){let[t,n]=dp(e),r=t,i=n,s=0,a=e;for(;r<=i;){if(s=Math.floor((i+r)/2),s<=0||s>=Pn-2)return[s,s,!1];let c=o.DataElement[s].y,u=o.DataElement[s-1].y,l=o.DataElement[s+1].y;if(a===c)return[s,s,!0];if(a===u)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)r=s+1;else{if(a<u&&a>c)return[s-1,s,!0];if(a<c&&a>l)return[s,s+1,!0];i=s-1}}return[s,s,!1]}function xu(o,e,t,n){let r=n?e+t:e-t,[i,s,a]=fp(o,r);if(!a)return[0,0,!1,a];if(i===s)return[o.DataElement[s].price,o.DataElement[s].y,!1,a];{let c=o.DataElement[i].x,u=o.DataElement[s].x,l=o.DataElement[i].price,m=o.DataElement[s].price,d=o.DataElement[i].y,p=o.DataElement[s].y;if(e>=c&&e<=u)return n?[m,p,!0,a]:[l,d,!0,a];{let y,f;return n?(y=l+(m-l)*(e-c)/(u-c),f=d-(r-c)*o.multiplier/m):(y=l+(m-l)*(e-c)/(u-c),f=p+(u-r)*o.multiplier/l),[y,f,!1,a]}}}function bp(o,e,t,n){let r=n?e-t:e+t,[i,s,a]=yp(o,r);if(!a)return[0,0,!1,a];if(i===s)return[o.DataElement[s].price,o.DataElement[s].x,!1,a];{let c=o.DataElement[i].x,u=o.DataElement[s].x,l=o.DataElement[i].price,m=o.DataElement[s].price,d=o.DataElement[i].y,p=o.DataElement[s].y;if(e>=p&&e<=d)return n?[m,u,!0,a]:[l,c,!0,a];{let y,f;return n?(y=l+(m-l)*(d-e)/(d-p),f=c+m*(d-r)/o.multiplier):(y=l+(m-l)*(d-e)/(d-p),f=u-l*(r-p)/o.multiplier),[y,f,!1,a]}}}function gp(o,e){let t=xu(o,e,0,!1);return t[3]?t[0]:0}function Su(o,e,t,n){let r=gs(o,e,t),i=wn(o,e,r),s=wn(o,t,r),a=wn(o,n,r),c=!0,[u,l,m,d]=xu(o,i,a,c);if(!d)return 0;if(m)return n*o.multiplier/u;{let p=s-l;return Bu(o,p,r)}}function Ku(o,e,t,n){let r=gs(o,e,t),i=wn(o,e,r),s=wn(o,t,r),a=wn(o,n,r),c=!1,[u,l,m,d]=bp(o,s,a,c);if(!d)return 0;if(m)return n*u/o.multiplier;{let p=i-l;return Bu(o,p,r)}}function Ap(o){let e=cp.decode(o);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function Cu(o,e,t,n){let r=gp(o,wn(o,e,gs(o,e,t)))/o.multiplier;return n?r:1/r}var Un=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(Gn);e&&(this._layoutData=Ap(e==null?void 0:e.data))}}};var Ru=ce("Raydium_liquidity_instruction");function Ou(o){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:r,quoteAmountIn:i,fixedSide:s}=o,a=Buffer.alloc(ys.span);ys.encode({instruction:3,baseAmountIn:Y(r),quoteAmountIn:Y(i),fixedSide:s==="base"?Ee:Pa},a);let c=[A({pubkey:Xn,isWritable:!1}),A({pubkey:new Ae(e.id)}),A({pubkey:new Ae(t.authority),isWritable:!1}),A({pubkey:new Ae(t.openOrders),isWritable:!1}),A({pubkey:new Ae(t.targetOrders)}),A({pubkey:new Ae(e.lpMint.address)}),A({pubkey:new Ae(t.vault.A)}),A({pubkey:new Ae(t.vault.B)})];return e.pooltype.includes("StablePool")&&c.push(A({pubkey:Gn})),c.push(A({pubkey:new Ae(e.marketId),isWritable:!1}),A({pubkey:n.baseTokenAccount}),A({pubkey:n.quoteTokenAccount}),A({pubkey:n.lpTokenAccount}),A({pubkey:n.owner,isWritable:!1,isSigner:!0}),A({pubkey:new Ae(t.marketEventQueue),isWritable:!1})),new Gt({programId:new Ae(e.programId),keys:c,data:a})}function As(o){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:r}=o,i=Ie(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(bs.span);bs.encode({instruction:4,amountIn:Y(r)},a);let c=[A({pubkey:Xn,isWritable:!1}),A({pubkey:i.id}),A({pubkey:i.authority,isWritable:!1}),A({pubkey:i.openOrders}),A({pubkey:i.targetOrders}),A({pubkey:i.mintLp.address}),A({pubkey:i.vault.A}),A({pubkey:i.vault.B})];return s===5?c.push(A({pubkey:Gn})):(c.push(A({pubkey:i.id})),c.push(A({pubkey:i.id}))),c.push(A({pubkey:i.marketProgramId,isWritable:!1}),A({pubkey:i.marketId}),A({pubkey:i.marketBaseVault}),A({pubkey:i.marketQuoteVault}),A({pubkey:i.marketAuthority,isWritable:!1}),A({pubkey:n.lpTokenAccount}),A({pubkey:n.baseTokenAccount}),A({pubkey:n.quoteTokenAccount}),A({pubkey:n.owner,isWritable:!1,isSigner:!0}),A({pubkey:i.marketEventQueue}),A({pubkey:i.marketBids}),A({pubkey:i.marketAsks})),new Gt({programId:i.programId,keys:c,data:a})}return new Gt({programId:i.programId,keys:[]})}function Nu({programId:o,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:r,coinMint:i,pcMint:s,coinVault:a,pcVault:c,withdrawQueue:u,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:y,userCoinVault:f,userPcVault:b,userLpVault:g,nonce:h,openTime:P,coinAmount:k,pcAmount:B,ammConfigId:T,feeDestinationId:S}){let x=M([E("instruction"),E("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),R=[{pubkey:Xn,isSigner:!1,isWritable:!1},{pubkey:wp,isSigner:!1,isWritable:!1},{pubkey:Lu.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:T,isSigner:!1,isWritable:!1},{pubkey:S,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0}],I=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:h,openTime:P,coinAmount:k,pcAmount:B},I),{instruction:new Gt({keys:R,programId:o,data:I}),instructionType:v.AmmV4CreatePool}}function Ak(o){let e=M([E("instruction"),E("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[A({pubkey:new Ae(o.id),isWritable:!1}),A({pubkey:new Ae(o.authority),isWritable:!1}),A({pubkey:new Ae(o.openOrders),isWritable:!1}),A({pubkey:new Ae(o.vault.A),isWritable:!1}),A({pubkey:new Ae(o.vault.B),isWritable:!1}),A({pubkey:new Ae(o.mintLp.address),isWritable:!1}),A({pubkey:new Ae(o.marketId),isWritable:!1}),A({pubkey:new Ae(o.marketEventQueue),isWritable:!1})];return new Gt({programId:new Ae(o.programId),keys:n,data:t})}function hp({poolKeys:o,userKeys:e,amountIn:t,minAmountOut:n},r){let i=Ie(o),s=Buffer.alloc(ds.span);ds.encode({instruction:9,amountIn:Y(t),minAmountOut:Y(n)},s);let a=[A({pubkey:Xn,isWritable:!1}),A({pubkey:i.id}),A({pubkey:i.authority,isWritable:!1}),A({pubkey:i.openOrders})];return r===4&&a.push(A({pubkey:i.targetOrders})),a.push(A({pubkey:i.vault.A}),A({pubkey:i.vault.B})),r===5&&a.push(A({pubkey:Gn})),a.push(A({pubkey:i.marketProgramId,isWritable:!1}),A({pubkey:i.marketId}),A({pubkey:i.marketBids}),A({pubkey:i.marketAsks}),A({pubkey:i.marketEventQueue}),A({pubkey:i.marketBaseVault}),A({pubkey:i.marketQuoteVault}),A({pubkey:i.marketAuthority,isWritable:!1}),A({pubkey:e.tokenAccountIn}),A({pubkey:e.tokenAccountOut}),A({pubkey:e.owner,isWritable:!1})),new Gt({programId:i.programId,keys:a,data:s})}function kp({poolKeys:o,userKeys:e,maxAmountIn:t,amountOut:n},r){let i=Ie(o),s=Buffer.alloc(ps.span);ps.encode({instruction:11,maxAmountIn:Y(t),amountOut:Y(n)},s);let a=[A({pubkey:Xn,isWritable:!1}),A({pubkey:i.id}),A({pubkey:i.authority,isWritable:!1}),A({pubkey:i.openOrders}),A({pubkey:i.targetOrders}),A({pubkey:i.vault.A}),A({pubkey:i.vault.B})];return r===5&&a.push(A({pubkey:Gn})),a.push(A({pubkey:i.marketProgramId,isWritable:!1}),A({pubkey:i.marketId}),A({pubkey:i.marketBids}),A({pubkey:i.marketAsks}),A({pubkey:i.marketEventQueue}),A({pubkey:i.marketBaseVault}),A({pubkey:i.marketQuoteVault}),A({pubkey:i.marketAuthority,isWritable:!1}),A({pubkey:e.tokenAccountIn}),A({pubkey:e.tokenAccountOut}),A({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Gt({programId:i.programId,keys:a,data:s})}function Rr(o){let{poolKeys:e,version:t,userKeys:n,amountIn:r,amountOut:i,fixedSide:s}=o;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return hp(F(C({},a),{amountIn:r,minAmountOut:i}),t);if(s==="out")return kp(F(C({},a),{maxAmountIn:r,amountOut:i}),t);Ru.logWithError("invalid params","params",o)}throw Ru.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function wk({poolKeys:o,userKeys:e,startTime:t}){let n=Buffer.alloc(fs.span);fs.encode({instruction:0,nonce:5,startTime:Y(t)},n);let r=Ie(o),i=[A({pubkey:Xn,isWritable:!1}),A({pubkey:Lu.programId,isWritable:!1}),A({pubkey:Pp,isWritable:!1}),A({pubkey:r.id}),A({pubkey:r.authority,isWritable:!1}),A({pubkey:r.openOrders}),A({pubkey:r.mintLp.address}),A({pubkey:r.mintA.address,isWritable:!1}),A({pubkey:r.mintB.address,isWritable:!1}),A({pubkey:r.vault.A,isWritable:!1}),A({pubkey:r.vault.B,isWritable:!1}),A({pubkey:r.id}),A({pubkey:r.targetOrders}),A({pubkey:e.lpTokenAccount}),A({pubkey:r.id,isWritable:!1}),A({pubkey:r.marketProgramId,isWritable:!1}),A({pubkey:r.marketId,isWritable:!1}),A({pubkey:e.payer,isSigner:!0})];return new Gt({programId:r.programId,keys:i,data:n})}function Mu({poolKeys:o}){let e=M([E("instruction"),E("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[A({pubkey:new Ae(o.id),isWritable:!1}),A({pubkey:new Ae(o.authority),isWritable:!1}),A({pubkey:new Ae(o.openOrders),isWritable:!1}),A({pubkey:new Ae(o.vault.A),isWritable:!1}),A({pubkey:new Ae(o.vault.B),isWritable:!1}),A({pubkey:new Ae(o.mintLp.address),isWritable:!1}),A({pubkey:new Ae(o.marketId),isWritable:!1}),A({pubkey:new Ae(o.marketEventQueue),isWritable:!1})];return{instruction:new Gt({programId:new Ae(o.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as He,TOKEN_2022_PROGRAM_ID as ln,ASSOCIATED_TOKEN_PROGRAM_ID as $u}from"@solana/spl-token";import{PublicKey as U,TransactionInstruction as St,SystemProgram as zn,Keypair as Ss}from"@solana/web3.js";import Ju from"bn.js";import Np from"bn.js";function _u(o){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,o,!1),new Uint8Array(e)}function hk(o){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,o,!1),new Uint8Array(e)}function kk(o){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,o,!1),new Uint8Array(e)}function Lr(o){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,o,!1),new Uint8Array(e)}function ws(o,e){let t=0;for(let n=o-1;n>=0&&!e.testn(n);n--)t++;return t}function Ps(o,e){let t=0;for(let n=0;n<o&&!e.testn(n);n++)t++;return t}function xo(o,e){for(let t=0;t<o;t++)if(e.testn(t))return!1;return!0}function Vu(o,e){return xo(o,e)?null:ws(o,e)}function vu(o,e){return xo(o,e)?null:Ps(o,e)}var Tp=Buffer.from("amm_config","utf8"),Ip=Buffer.from("pool","utf8"),Bp=Buffer.from("pool_vault","utf8"),xp=Buffer.from("pool_reward_vault","utf8"),Fu=Buffer.from("position","utf8"),Sp=Buffer.from("tick_array","utf8"),Kp=Buffer.from("operation","utf8"),Cp=Buffer.from("pool_tick_array_bitmap_extension","utf8");function xk(o,e){return ue([Tp,_u(e)],o)}function Eu(o,e,t,n){return ue([Ip,e.toBuffer(),t.toBuffer(),n.toBuffer()],o)}function hs(o,e,t){return ue([Bp,e.toBuffer(),t.toBuffer()],o)}function Du(o,e,t){return ue([xp,e.toBuffer(),t.toBuffer()],o)}function we(o,e,t){return ue([Sp,e.toBuffer(),Lr(t)],o)}function hn(o,e,t,n){return ue([Fu,e.toBuffer(),Lr(t),Lr(n)],o)}function gt(o,e){return ue([Fu,e.toBuffer()],o)}function Or(o){return ue([Buffer.from("metadata","utf8"),_n.toBuffer(),o.toBuffer()],_n)}function So(o){return ue([Kp],o)}function pt(o,e){return ue([Cp,e.toBuffer()],o)}import At from"bn.js";var pe=new At(0),ft=new At(1),Xt=new At(-1),yt=new At(1).shln(64),Nr=new At(1).shln(128),ks=yt.sub(ft),Ko=64,Wu=Nr.subn(1),tt=-443636,st=-tt,_t=new At("4295048016"),Vt=new At("79226673521066979257578248091"),Mr=new At("4295048017"),_r=new At("79226673521066979257578248090"),qu=16,Uu="59543866431248",Gu="184467440737095516",Xu="15793534762490258745",Vr=new At(10).pow(new At(6)),Rp=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(Rp||{}),Ck={[500]:10,[3e3]:60,[1e4]:200},Rk={version:6,liquidity:pe,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:pe,feeGrowthGlobalX64B:pe,protocolFeesTokenA:pe,protocolFeesTokenB:pe,swapInAmountTokenA:pe,swapOutAmountTokenB:pe,swapInAmountTokenB:pe,swapOutAmountTokenA:pe,tickArrayBitmap:[],rewardInfos:[],day:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},week:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},month:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},tvl:0},zu={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:[]},Lk=new At("18446744073700000000");var Lp=15,me=class{static async getTickArrays(e,t,n,r,i,s,a){let c=[],u=H.getTickArrayStartIndexByTick(r,i),l=H.getInitializedTickArrayInRange(s,a,i,u,Math.floor(Lp/2));for(let p=0;p<l.length;p++){let{publicKey:y}=we(t,n,l[p]);c.push(y)}let m=(await Tt(e,c)).map(p=>p!==null?Co.decode(p.data):null),d={};for(let p=0;p<c.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=F(C({},y),{address:c[p]}))}return d}static nextInitializedTick(e,t,n,r,i,s){let{initializedTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}=this.nextInitializedTickInOneArray(e,t,n,r,i,s);for(;a==null||a.liquidityGross.lten(0);){if(u=H.getNextTickArrayStartIndex(u,i,s),this.checkIsValidStartIndex(u,i))throw new Error("No enough initialized tickArray");let l=n[u];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,c,u]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}}static nextInitializedTickArray(e,t,n,r,i){let s=Math.floor(e/me.tickCount(t)),a=n?H.searchLowBitFromStart(r,i,s-1,1,t):H.searchHightBitFromStart(r,i,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,r){let i;if(r){let a=We-1;for(;a>=0;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){i=c;break}a=a-1}}else{let a=0;for(;a<We;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){i=c;break}a=a+1}}let{publicKey:s}=we(e,t,n.startTickIndex);return{nextTick:i,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,i,s){let a=H.getTickArrayStartIndexByTick(r,i),c=Math.floor((r-a)/i),u=n[a];if(u==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;c>=0;){let d=u.ticks[c];if(d.liquidityGross.gtn(0)){l=d;break}c=c-1}else for(c=c+1;c<We;){let d=u.ticks[c];if(d.liquidityGross.gtn(0)){l=d;break}c=c+1}let{publicKey:m}=we(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:u.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(H.checkIsOutOfBoundary(e)){if(e>st)return!1;let n=H.getTickArrayStartIndexByTick(tt,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return We*e}};import ie from"bn.js";import{PublicKey as xt}from"@solana/web3.js";import Re from"bn.js";var Ts=14,zt=class{static maxTickInTickarrayBitmap(e){return e*We*kn}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(r+=1);let i=n*r;return e<0?{minValue:-i,maxValue:-i+n}:{minValue:i,maxValue:i+n}}static nextInitializedTickArrayStartIndex(e,t,n,r){if(!me.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let i=this.maxTickInTickarrayBitmap(n),s=r?t-me.tickCount(n):t+me.tickCount(n);if(s<-i||s>=i)return{isInit:!1,tickIndex:t};let a=n*We,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(r){let l=e.shln(1024-u-1),m=Vu(1024,l);if(m!==null){let d=(u-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-i}}else{let l=e.shrn(u),m=vu(1024,l);if(m!==null){let d=(u+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:i-me.tickCount(n)}}}},Ro=class{static getBitmapOffset(e,t){if(!me.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=zt.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&r--,r}static getBitmap(e,t,n){let r=this.getBitmapOffset(e,t);return e<0?{offset:r,tickarrayBitmap:n.negativeTickArrayBitmap[r]}:{offset:r,tickarrayBitmap:n.positiveTickArrayBitmap[r]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:r}=this.extensionTickBoundary(t);if(e>=r&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=zt.maxTickInTickarrayBitmap(e),n=-t;if(st<=t)throw Error(`extensionTickBoundary check error: ${st}, ${t}`);if(n<=tt)throw Error(`extensionTickBoundary check error: ${n}, ${tt}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:r}=this.getBitmap(e,t,n),i=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:H.mergeTickArrayBitmap(r).testn(i),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let i=me.tickCount(t),s=n?e-i:e+i,{tickarrayBitmap:a}=this.getBitmap(s,t,r);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,r){let{minValue:i,maxValue:s}=zt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let c=H.mergeTickArrayBitmap(e).shln(kn-1-a),u=xo(512,c)?null:ws(512,c);if(u!==null){let l=t-u*me.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:i}}else{let c=H.mergeTickArrayBitmap(e).shrn(a),u=xo(512,c)?null:Ps(512,c);if(u!==null){let l=t+u*me.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-me.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%zt.maxTickInTickarrayBitmap(t),r=Math.floor(n/me.tickCount(t));return e<0&&n!=0&&(r=kn-r),r}};import vt from"bn.js";var Lo=class{static getfeeGrowthInside(e,t,n){let r=new vt(0),i=new vt(0);e.tickCurrent>=t.tick?(r=t.feeGrowthOutsideX64A,i=t.feeGrowthOutsideX64B):(r=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),i=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new vt(0),a=new vt(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let c=ne.wrappingSubU128(ne.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),u=ne.wrappingSubU128(ne.wrappingSubU128(e.feeGrowthGlobalX64B,i),a);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:u}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:i,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=ne.mulDivFloor(ne.wrappingSubU128(i,t.feeGrowthInsideLastX64A),t.liquidity,yt),c=t.tokenFeesOwedA.add(a),u=ne.mulDivFloor(ne.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,yt),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:i,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=ne.mulDivFloor(ne.wrappingSubU128(i,t.feeGrowthInsideLastX64A),t.liquidity,yt),c=t.tokenFeesOwedA.add(a),u=ne.mulDivFloor(ne.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,yt),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let i=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let c=s[a],u=t.rewardInfos[a],l=ne.wrappingSubU128(c,u.growthInsideLastX64),m=ne.mulDivFloor(l,t.liquidity,yt),d=u.rewardAmountOwed.add(m);i.push(d)}return i}static GetPositionRewards(e,t,n,r){let i=[],s=this.getRewardGrowthInside(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let c=s[a],u=t.rewardInfos[a],l=ne.wrappingSubU128(c,u.growthInsideLastX64),m=ne.mulDivFloor(l,t.liquidity,yt),d=u.rewardAmountOwed.add(m);i.push(d)}return i}static getRewardGrowthInside(e,t,n,r){let i=[];for(let s=0;s<r.length;s++){let a=new vt(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let c=new vt(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),i.push(ne.wrappingSubU128(ne.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return i}static getRewardGrowthInsideV2(e,t,n,r){let i=[];for(let s=0;s<r.length;s++){let a=new vt(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let c=new vt(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),i.push(ne.wrappingSubU128(ne.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return i}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:i,epochInfo:s}){var b,g,h,P;let a=te.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),c=te.getSqrtPriceX64FromTick(t.tickLower),u=te.getSqrtPriceX64FromTick(t.tickUpper),l=i?1+r:1-r,m=le.getAmountsFromLiquidity(a,c,u,n,i),[d,p]=[he(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),he(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[he(new vt(new V(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),he(new vt(new V(m.amountB.toString()).mul(l).toFixed(0)),(P=e.mintB.extensions)==null?void 0:P.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Ot(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Yu}from"@solana/spl-token";var Le=class{static getOutputAmountAndRemainAccounts(e,t,n,r,i,s=!1){let a=n.toBase58()===e.mintA.address,c=[],{isExist:u,startIndex:l,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,a);if(!u||l===void 0||!m)throw new Error("Invalid tick array");c.push(m);let{allTrade:d,amountCalculated:p,accounts:y,sqrtPriceX64:f,feeAmount:b}=Tn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,l,i,s);return c.push(...y),{allTrade:d,expectedAmountOut:p.mul(Xt),remainingAccounts:c,executionPrice:f,feeAmount:b}}static getInputAmountAndRemainAccounts(e,t,n,r,i){let s=n.toBase58()===e.mintB.address,a=[],{isExist:c,startIndex:u,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!c||u===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=we(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=Tn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(Xt),u,i);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=Le.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Ro.checkTickArrayIsInit(me.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):H.checkTickArrayIsInitialized(H.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=we(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:i,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,me.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(i){let{publicKey:a}=we(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/me.tickCount(e.tickSpacing)),r=t?H.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):H.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return r.length>0?{isExist:!0,nextStartIndex:r[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=me.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:i}=zt.nextInitializedTickArrayStartIndex(H.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:i};t=i;let{isInit:s,tickIndex:a}=Ro.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<tt||t>st)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:i}){var a,c,u;let s=[];for(let l=0;l<i.length;l++){let m=i[l],d=(u=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(m.tokenMint))==null?void 0:c.owner;if(d===void 0)throw Error("get new reward mint info error");let p=F(C({},m),{perSecond:ne.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new xt(d)});if(p.tokenMint.equals(xt.default))continue;if(n<=p.openTime.toNumber()||r.eq(pe)){s.push(p);continue}let y=new Re(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),b=ne.mulDivFloor(f,p.emissionsPerSecondX64,r),g=p.rewardGrowthGlobalX64.add(b),h=ne.mulDivFloor(f,p.emissionsPerSecondX64,yt),P=p.rewardTotalEmissioned.add(h);s.push(F(C({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:P,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let i of t){let s=H.getTickArrayStartIndexByTick(i,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=zt.maxTickInTickarrayBitmap(e),n=-t;return t>st&&(t=me.getArrayStartIndex(st,e)+me.tickCount(e)),n<tt&&(n=me.getArrayStartIndex(tt,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!me.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/me.tickCount(t)*kn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await De(e,t.map(s=>({pubkey:s})),{batchRequest:n}),i={};for(let s of r)s.accountInfo!==null&&(i[s.pubkey.toString()]=ju.decode(s.accountInfo.data));return i}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},i=[];for(let c of t){let u=H.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),l=H.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let m of l){let{publicKey:d}=we(c.programId,c.id,m);i.push({pubkey:d}),r[d.toString()]=c.id}}let s=await De(e,i,{batchRequest:n}),a={};for(let c of s){if(!c.accountInfo)continue;let u=r[c.pubkey.toString()];if(!u)continue;a[u.toString()]===void 0&&(a[u.toString()]={});let l=Co.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]=F(C({},l),{address:c.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:i=!0}){var a;let s=[];for(let c=0;c<e.length;c++){let u=e[c];u!==null&&(s.find(l=>l.equals(u.state.programId))||s.push(u.state.programId))}if(n){let c=n.tokenAccounts.map(d=>d.accountInfo.mint),u=[];for(let d of c)for(let p of s)u.push(gt(p,d).publicKey);let l=await Tt(t,u,{batchRequest:r}),m={};for(let d of l){if(d===null)continue;let p=vr.decode(d.data),y=p.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=H._getTickPriceLegacy({poolInfo:b,tick:p.tickLower,baseIn:!0}),h=H._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:P,amountB:k}=le.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),B=1/(1-Math.sqrt(Math.sqrt(g.price.div(h.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:g.price,priceUpper:h.price,amountA:P,amountB:k,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(x=>F(C({},x),{pendingReward:new Re(0)})),leverage:B,tokenFeeAmountA:new Re(0),tokenFeeAmountB:new Re(0)}];let T=await H.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),S=await H.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=T,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(i){let d=Object.values(m),p=await Tt(t,d,{batchRequest:r}),y={};for(let f=0;f<d.length;f++){let b=p[f];if(b===null)continue;let g=d[f].toString();y[g]=Co.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let g of b){let h=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,P=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,k=y[m[h].toString()],B=y[m[P].toString()],T=k.ticks[H.getTickOffsetInArray(g.tickLower,f.tickSpacing)],S=B.ticks[H.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:R}=await Lo.GetPositionFees(f,g,T,S),I=await Lo.GetPositionRewards(f,g,T,S);g.tokenFeeAmountA=x.gte(new Re(0))?x:new Re(0),g.tokenFeeAmountB=R.gte(new Re(0))?R:new Re(0);for(let N=0;N<I.length;N++)g.rewardInfos[N].pendingReward=I[N].gte(new Re(0))?I[N]:new Re(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:i,slippage:s,priceLimit:a=new V(0),catchLiquidityInsufficient:c=!1}){var q;let u,l=n.toBase58()===e.mintA.address,[m,d]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new V(0))?u=l?_t.add(new Re(1)):Vt.sub(new Re(1)):u=te.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=he(i,m,r,!1),{allTrade:y,expectedAmountOut:f,remainingAccounts:b,executionPrice:g,feeAmount:h}=Le.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((q=p.fee)!=null?q:pe),u,c),P=he(f,d,r,!1),k=te.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),B=l?k:new V(1).div(k),T=f.mul(new Re(Math.floor((1-s)*1e10))).div(new Re(1e10)),S=he(T,d,r,!1),x=l?e.currentPrice:new V(1).div(e.currentPrice),R=new V(B).sub(x).abs(),I=x,N=new Fe(new V(R).mul(10**15).toFixed(0),new V(I).mul(10**15).toFixed(0));return{allTrade:y,realAmountIn:p,amountOut:P,minAmountOut:S,expirationTime:Ot(p.expirationTime,P.expirationTime),currentPrice:e.currentPrice,executionPrice:B,priceImpact:N,fee:h,remainingAccounts:b,executionPriceX64:g}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:i,epochInfo:s,catchLiquidityInsufficient:a=!1}){let c=r.address===e.mintB.address,[u,l]=c?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,d]=[new ye(F(C({},u),{mint:u.address,isToken2022:u.programId===Yu.toBase58()})),new ye(F(C({},l),{mint:l.address,isToken2022:l.programId===Yu.toBase58()}))],{allTrade:p,realAmountIn:y,amountOut:f,minAmountOut:b,expirationTime:g,currentPrice:h,executionPrice:P,priceImpact:k,fee:B,remainingAccounts:T,executionPriceX64:S}=Le.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new xt(u.address),amountIn:n,slippage:i,epochInfo:s,catchLiquidityInsufficient:a}),x=F(C({},y),{amount:new fe(m,y.amount),fee:y.fee===void 0?void 0:new fe(m,y.fee)}),R=F(C({},f),{amount:new fe(d,f.amount),fee:f.fee===void 0?void 0:new fe(d,f.fee)}),I=F(C({},b),{amount:new fe(d,b.amount),fee:b.fee===void 0?void 0:new fe(d,b.fee)}),N=new qe({baseToken:m,denominator:new Re(10).pow(new Re(20+m.decimals)),quoteToken:d,numerator:h.mul(new V(10**(20+d.decimals))).toFixed(0)}),q=new qe({baseToken:m,denominator:new Re(10).pow(new Re(20+m.decimals)),quoteToken:d,numerator:P.mul(new V(10**(20+d.decimals))).toFixed(0)}),D=new fe(m,B);return{allTrade:p,realAmountIn:x,amountOut:R,minAmountOut:I,expirationTime:g,currentPrice:N,executionPrice:q,priceImpact:k,fee:D,remainingAccounts:T,executionPriceX64:S}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var y,f,b;let i=e[t],s=H.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=H.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),c=Math.max(s,i.priceMin),l=Math.min(a,i.priceMax)-c,m=a-s,d=i.priceMax-i.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:i.feeApr*p,rewardsApr:[((y=i.rewardApr[0])!=null?y:0)*p,((f=i.rewardApr[1])!=null?f:0)*p,((b=i.rewardApr[2])!=null?b:0)*p],apr:i.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:i,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:c}){let u=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=r[mt(e.mintA.address).toString()],d=r[mt(e.mintB.address).toString()],p=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=te.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),b=te.getSqrtPriceX64FromTick(s),g=te.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:P}=le.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:k,amountSlippageB:B}=le.getAmountsFromLiquidityWithSlippage(f,b,g,i,!1,!1,0),T=new V(h.toString()).div(new V(10).pow(p)).mul(m.value).add(new V(P.toString()).div(new V(10).pow(y)).mul(d.value)),S=new V(k.toString()).div(new V(10).pow(p)).mul(m.value).add(new V(B.toString()).div(new V(10).pow(y)).mul(d.value)),x=new V(1).div(T.add(S)),I=new V(l.volumeFee).mul(365).div(u).mul(x).mul(100).toNumber(),N=3600*24*365,q=e.rewardDefaultInfos.map(D=>{var W,ot;let J=D.mint.decimals,G=r[D.mint.address];return c<((W=D.startTime)!=null?W:0)||c>((ot=D.endTime)!=null?ot:0)||!D.perSecond||!G||J===void 0?0:new V(G.value).mul(new V(D.perSecond).mul(N)).div(new V(10).pow(J)).mul(x).mul(100).toNumber()});return{feeApr:I,rewardsApr:q,apr:I+q.reduce((D,J)=>D+J,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:i,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var g,h;let l=te.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),m=te.getSqrtPriceX64FromTick(n),d=te.getSqrtPriceX64FromTick(r),p=a?1-s:1+s,y=he(i,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,c,!u),f=new Re(new V(y.amount.sub((h=y.fee)!=null?h:pe).toString()).mul(p).toFixed(0)),b;if(l.lte(m))b=t?le.getLiquidityFromTokenAmountA(m,d,f,!a):new Re(0);else if(l.lte(d)){let P=le.getLiquidityFromTokenAmountA(l,d,f,!a),k=le.getLiquidityFromTokenAmountB(m,l,f);b=t?P:k}else b=t?new Re(0):le.getLiquidityFromTokenAmountB(m,d,f);return Le.getAmountsFromLiquidity({epochInfo:c,poolInfo:e,tickLower:n,tickUpper:r,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:i,slippage:s,add:a}){var b,g,h,P;let c=te.getSqrtPriceX64FromTick(n),u=te.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=le.getAmountsFromLiquidity(te.priceToSqrtPriceX64(new V(t.price),t.mintA.decimals,t.mintB.decimals),c,u,i,a),[d,p]=[he(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),he(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[he(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),he(m.amountB.muln(l),(P=t.mintB.extensions)==null?void 0:P.feeConfig,e,!0)];return{liquidity:i,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Ot(d.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let r=t.filter(c=>!n[c.id]).map(c=>new xt(c.id));(await Tt(e,r)).forEach((c,u)=>{!c||(n[r[u].toBase58()]=In.decode(c.data))});let s=t.map(c=>pt(new xt(c.programId),new xt(c.id)).publicKey),a=await Le.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((c,u)=>F(C({},c),{[u.id]:F(C({},n[u.id]),{id:new xt(u.id),version:6,programId:new xt(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:F(C({},u.config),{id:new xt(u.config.id),fundOwner:""}),currentPrice:new V(u.price),exBitmapInfo:a[pt(new xt(u.programId),new xt(u.id)).publicKey.toBase58()],startTime:n[u.id].startTime.toNumber()})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};function bT({poolInfo:o,tickLower:e,tickUpper:t,amountA:n,amountB:r,slippage:i,add:s,epochInfo:a,amountHasFee:c}){var P,k,B,T;let[u,l,m,d]=e<t?[e,t,n,r]:[t,e,r,n],p=te.priceToSqrtPriceX64(new V(o.price),o.mintA.decimals,o.mintB.decimals),y=te.getSqrtPriceX64FromTick(u),f=te.getSqrtPriceX64FromTick(l),[b,g]=[he(m,(P=o.mintA.extensions)==null?void 0:P.feeConfig,a,!c),he(d,(k=o.mintB.extensions)==null?void 0:k.feeConfig,a,!c)],h=le.getLiquidityFromTokenAmounts(p,y,f,b.amount.sub((B=b.fee)!=null?B:pe),g.amount.sub((T=g.fee)!=null?T:pe));return le.getAmountsOutFromLiquidity({poolInfo:o,tickLower:e,tickUpper:t,liquidity:h,slippage:i,add:s,epochInfo:a,amountAddFee:!c})}var Is={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};function Qu(o){return F(C({},o),{type:"Concentrated",programId:o.programId.toString(),id:o.id.toString(),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Clmm",price:o.currentPrice.toNumber(),mintAmountA:0,mintAmountB:0,feeRate:o.ammConfig.tradeFeeRate,openTime:o.startTime.toString(),tvl:0,day:Is,week:Is,month:Is,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,config:F(C({},o.ammConfig),{id:o.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]})})}var ne=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),i=r.div(n);return r.mod(n).eq(pe)||(i=i.add(ft)),i}static mulDivFloor(e,t,n){if(n.eq(pe))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(pe))throw new Error("division by 0");return e.mul(t).add(n.sub(ft)).div(n)}static x64ToDecimal(e,t){return new V(e.toString()).div(V.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ie(e.mul(V.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Nr).sub(t).mod(Nr)}};function Ge(o,e){return Bs(o.mul(e),64,256)}function Op(o,e,t){let n=o.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Bs(o,e,t){let n=o.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var te=class{static sqrtPriceX64ToPrice(e,t,n){return ne.x64ToDecimal(e).pow(2).mul(V.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return ne.decimalToX64(e.mul(V.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(pe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(pe))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,r){if(!e.gt(pe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(pe))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,r){if(n.eq(pe))return e;let i=t.shln(Ko);if(r){let s=i,a=i.add(n.mul(e));return a.gte(s)?ne.mulDivCeil(s,e,a):ne.mulDivRoundingUp(s,ft,s.div(e).add(n))}else{let s=n.mul(e);if(!i.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=i.sub(s);return ne.mulDivCeil(i,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let i=n.shln(Ko);if(r)return e.add(i.div(t));{let s=ne.mulDivRoundingUp(i,ft,t);if(!e.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountBRoundingDown sqrtPriceX64 must gt amountDivLiquidity");return e.sub(s)}}static getSqrtPriceX64FromTick(e){if(!Number.isInteger(e))throw new Error("tick must be integer");if(e<tt||e>st)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new ie("18445821805675395072"):new ie("18446744073709551616");return(t&2)!=0&&(n=Ge(n,new ie("18444899583751176192"))),(t&4)!=0&&(n=Ge(n,new ie("18443055278223355904"))),(t&8)!=0&&(n=Ge(n,new ie("18439367220385607680"))),(t&16)!=0&&(n=Ge(n,new ie("18431993317065453568"))),(t&32)!=0&&(n=Ge(n,new ie("18417254355718170624"))),(t&64)!=0&&(n=Ge(n,new ie("18387811781193609216"))),(t&128)!=0&&(n=Ge(n,new ie("18329067761203558400"))),(t&256)!=0&&(n=Ge(n,new ie("18212142134806163456"))),(t&512)!=0&&(n=Ge(n,new ie("17980523815641700352"))),(t&1024)!=0&&(n=Ge(n,new ie("17526086738831433728"))),(t&2048)!=0&&(n=Ge(n,new ie("16651378430235570176"))),(t&4096)!=0&&(n=Ge(n,new ie("15030750278694412288"))),(t&8192)!=0&&(n=Ge(n,new ie("12247334978884435968"))),(t&16384)!=0&&(n=Ge(n,new ie("8131365268886854656"))),(t&32768)!=0&&(n=Ge(n,new ie("3584323654725218816"))),(t&65536)!=0&&(n=Ge(n,new ie("696457651848324352"))),(t&131072)!=0&&(n=Ge(n,new ie("26294789957507116"))),(t&262144)!=0&&(n=Ge(n,new ie("37481735321082"))),e>0&&(n=Wu.div(n)),n}static getTickFromPrice(e,t,n){return te.getTickFromSqrtPriceX64(te.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Vt)||e.lt(_t))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ie(t-64),r=Op(n,32,128),i=new ie("8000000000000000","hex"),s=0,a=new ie(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;i.gt(new ie(0))&&s<qu;){c=c.mul(c);let y=c.shrn(127);c=c.shrn(63+y.toNumber()),a=a.add(i.mul(y)),i=i.shrn(1),s+=1}let u=a.shrn(32),m=r.add(u).mul(new ie(Uu)),d=Bs(m.sub(new ie(Gu)),64,128).toNumber(),p=Bs(m.add(new ie(Xu)),64,128).toNumber();return d==p?d:te.getSqrtPriceX64FromTick(p).lte(e)?p:d}},Bn=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=te.getTickFromSqrtPriceX64(te.priceToSqrtPriceX64(e,n,r))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,r){let i=Bn.getTickWithPriceAndTickspacing(e,t,n,r),s=te.getSqrtPriceX64FromTick(i);return te.sqrtPriceX64ToPrice(s,n,r)}},le=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(pe))throw new Error("sqrtPriceX64A must greater than 0");let i=n.ushln(Ko),s=t.sub(e);return r?ne.mulDivRoundingUp(ne.mulDivCeil(i,s,t),ft,e):ne.mulDivFloor(i,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(pe))throw new Error("sqrtPriceX64A must greater than 0");return r?ne.mulDivCeil(n,t.sub(e),yt):ne.mulDivFloor(n,t.sub(e),yt)}static getLiquidityFromTokenAmountA(e,t,n,r){e.gt(t)&&([e,t]=[t,e]);let i=n.mul(e).mul(t),s=t.sub(e),a=i.div(s);return r?ne.mulDivRoundingUp(a,ft,ks):a.shrn(Ko)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),ne.mulDivFloor(n,ks,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,i){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return le.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=le.getLiquidityFromTokenAmountA(e,n,r,!1),a=le.getLiquidityFromTokenAmountB(t,e,i);return s.lt(a)?s:a}else return le.getLiquidityFromTokenAmountB(t,n,i)}static getAmountsFromLiquidity(e,t,n,r,i){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:le.getTokenAmountAFromLiquidity(t,n,r,i),amountB:new ie(0)};if(e.lt(n)){let s=le.getTokenAmountAFromLiquidity(e,n,r,i),a=le.getTokenAmountBFromLiquidity(t,e,r,i);return{amountA:s,amountB:a}}else return{amountA:new ie(0),amountB:le.getTokenAmountBFromLiquidity(t,n,r,i)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,i,s,a){let{amountA:c,amountB:u}=le.getAmountsFromLiquidity(e,t,n,r,s),l=i?1+a:1-a,m=new ie(new V(c.toString()).mul(l).toFixed(0)),d=new ie(new V(u.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:i,add:s,epochInfo:a,amountAddFee:c}){var h,P,k,B;let u=te.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),l=te.getSqrtPriceX64FromTick(t),m=te.getSqrtPriceX64FromTick(n),d=s?1+i:1-i,p=le.getAmountsFromLiquidity(u,l,m,r,s),[y,f]=[he(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,c),he(p.amountB,(P=e.mintB.extensions)==null?void 0:P.feeConfig,a,c)],[b,g]=[he(new ie(new V(p.amountA.toString()).mul(d).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,c),he(new ie(new V(p.amountB.toString()).mul(d).toFixed(0)),(B=e.mintB.extensions)==null?void 0:B.feeConfig,a,c)];return{liquidity:r,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:Ot(y.expirationTime,f.expirationTime)}}},Tn=class{static swapCompute(e,t,n,r,i,s,a,c,u,l,m,d,p,y,f=!1){if(d.eq(pe))throw new Error("amountSpecified must not be 0");if(y||(y=s?_t.add(ft):Vt.sub(ft)),s){if(y.lt(_t))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(Vt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let b=d.gt(pe),g={amountSpecifiedRemaining:d,amountCalculated:pe,sqrtPriceX64:m,tick:u>p?Math.min(p+me.tickCount(l)-1,u):p,accounts:[],liquidity:c,feeAmount:new ie(0)},h=p,P=n[p],k=0,B=!s&&P.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(pe)&&!g.sqrtPriceX64.eq(y);){k>10;let T={};T.sqrtPriceStartX64=g.sqrtPriceX64;let S=H.nextInitTick(P,g.tick,l,s,B),x=S||null,R=null;if(!(x!=null&&x.liquidityGross.gtn(0))){let N=Le.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:i},h,s);if(!N.isExist){if(f)return{allTrade:!1,amountSpecifiedRemaining:g.amountSpecifiedRemaining,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts};throw Error("swapCompute LiquidityInsufficient")}h=N.nextStartIndex;let{publicKey:q}=we(e,t,h);R=q,P=n[h];try{x=H.firstInitializedTick(P,s)}catch{throw Error("not found next tick info")}}T.tickNext=x.tick,T.initialized=x.liquidityGross.gtn(0),p!==h&&R&&(g.accounts.push(R),p=h),T.tickNext<tt?T.tickNext=tt:T.tickNext>st&&(T.tickNext=st),T.sqrtPriceNextX64=te.getSqrtPriceX64FromTick(T.tickNext);let I;if(s&&T.sqrtPriceNextX64.lt(y)||!s&&T.sqrtPriceNextX64.gt(y)?I=y:I=T.sqrtPriceNextX64,[g.sqrtPriceX64,T.amountIn,T.amountOut,T.feeAmount]=Tn.swapStepCompute(g.sqrtPriceX64,I,g.liquidity,g.amountSpecifiedRemaining,a),g.feeAmount=g.feeAmount.add(T.feeAmount),b?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(T.amountIn.add(T.feeAmount)),g.amountCalculated=g.amountCalculated.sub(T.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(T.amountOut),g.amountCalculated=g.amountCalculated.add(T.amountIn.add(T.feeAmount))),g.sqrtPriceX64.eq(T.sqrtPriceNextX64)){if(T.initialized){let N=x.liquidityNet;s&&(N=N.mul(Xt)),g.liquidity=le.addDelta(g.liquidity,N)}B=T.tickNext!=g.tick&&!s&&P.startTickIndex===T.tickNext,g.tick=s?T.tickNext-1:T.tickNext}else if(g.sqrtPriceX64!=T.sqrtPriceStartX64){let N=te.getTickFromSqrtPriceX64(g.sqrtPriceX64);B=N!=g.tick&&!s&&P.startTickIndex===N,g.tick=N}++k}try{let{nextStartIndex:T,isExist:S}=me.nextInitializedTickArray(g.tick,l,s,r,i);S&&p!==T&&(g.accounts.push(we(e,t,T).publicKey),p=T)}catch{}return{allTrade:!0,amountSpecifiedRemaining:pe,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,r,i){let s={sqrtPriceX64Next:new ie(0),amountIn:new ie(0),amountOut:new ie(0),feeAmount:new ie(0)},a=e.gte(t),c=r.gte(pe);if(c){let l=ne.mulDivFloor(r,Vr.sub(new ie(i.toString())),Vr);s.amountIn=a?le.getTokenAmountAFromLiquidity(t,e,n,!0):le.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=te.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?le.getTokenAmountBFromLiquidity(t,e,n,!1):le.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Xt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=te.getNextSqrtPriceX64FromOutput(e,n,r.mul(Xt),a);let u=t.eq(s.sqrtPriceX64Next);return a?(u&&c||(s.amountIn=le.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),u&&!c||(s.amountOut=le.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=u&&c?s.amountIn:le.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=u&&!c?s.amountOut:le.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!c&&s.amountOut.gt(r.mul(Xt))&&(s.amountOut=r.mul(Xt)),c&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=ne.mulDivCeil(s.amountIn,new ie(i),Vr.sub(new ie(i))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var We=60,kn=512,H=class{static getTickArrayAddressByTick(e,t,n,r){let i=H.getTickArrayStartIndexByTick(n,r),{publicKey:s}=we(e,t,i);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=H.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=We)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=me.tickCount(t),r=e/n;return e<0&&e%n!=0?r=Math.ceil(r)-1:r=Math.floor(r),r}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*me.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*We,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*We,i=Math.floor(t/r)+512,s=Math.abs(i);return{isInitialized:e.testn(s),startIndex:(s-512)*r}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*We:e+t*We}static mergeTickArrayBitmap(e){let t=new Np(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,r,i){let s=Math.floor(r/(n*We));return[...H.searchLowBitFromStart(e,t,s-1,i,n),...H.searchHightBitFromStart(e,t,s,i,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return H.searchHightBitFromStart(e,t,0,kn,n)}static getAllInitializedTickArrayInfo(e,t,n,r,i){let s=[],a=H.getAllInitializedTickArrayStartIndex(n,r,i);for(let c of a){let{publicKey:u}=we(e,t,c);s.push({tickArrayStartIndex:c,tickArrayAddress:u})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,i){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>H.mergeTickArrayBitmap(u)),a=[];for(;n>=-7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n--,a.length===r)break}let c=me.tickCount(i);return a.map(u=>u*c)}static searchHightBitFromStart(e,t,n,r,i){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>H.mergeTickArrayBitmap(u)),a=[];for(;n<7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n++,a.length===r)break}let c=me.tickCount(i);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<tt||e>st}static nextInitTick(e,t,n,r,i){if(me.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(r)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(i||(a=a+1);a<We;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=We-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<We;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let r=te.getSqrtPriceX64FromTick(t),i=te.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:i,tickSqrtPriceX64:r}:{tick:t,price:new V(1).div(i),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new V(1).div(t),i=Bn.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=te.getSqrtPriceX64FromTick(i),a=te.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:i,price:a}:{tick:i,price:new V(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=te.getSqrtPriceX64FromTick(t),i=te.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:i,tickSqrtPriceX64:r}:{tick:t,price:new V(1).div(i),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new V(1).div(t),i=Bn.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=te.getSqrtPriceX64FromTick(i),a=te.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:i,price:a}:{tick:i,price:new V(1).div(a)}}};var Hu=M([be(8),E("bump"),Nt("index"),K(""),$e("protocolFeeRate"),$e("tradeFeeRate"),Nt("tickSpacing"),X(w(),8,"")]),Mp=M([$e("blockTimestamp"),j("sqrtPriceX64"),j("cumulativeTimePriceX64"),X(j(),1,"")]),xs=M([be(8),je("initialized"),K("poolId"),X(Mp,1e3,"observations"),X(j(),5,"")]),_p=M([E("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),j("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),K("tokenMint"),K("tokenVault"),K("creator"),j("rewardGrowthGlobalX64")]),In=M([be(8),E("bump"),K("ammConfig"),K("creator"),K("mintA"),K("mintB"),K("vaultA"),K("vaultB"),K("observationId"),E("mintDecimalsA"),E("mintDecimalsB"),Nt("tickSpacing"),j("liquidity"),j("sqrtPriceX64"),Qe("tickCurrent"),Nt("observationIndex"),Nt("observationUpdateDuration"),j("feeGrowthGlobalX64A"),j("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),j("swapInAmountTokenA"),j("swapOutAmountTokenB"),j("swapInAmountTokenB"),j("swapOutAmountTokenA"),E("status"),X(E(),7,""),X(_p,3,"rewardInfos"),X(w(),16,"tickArrayBitmap"),w("totalFeesTokenA"),w("totalFeesClaimedTokenA"),w("totalFeesTokenB"),w("totalFeesClaimedTokenB"),w("fundFeesTokenA"),w("fundFeesTokenB"),w("startTime"),X(w(),15*4-3,"padding")]),Vp=M([j("growthInsideLastX64"),w("rewardAmountOwed")]),vr=M([be(8),E("bump"),K("nftMint"),K("poolId"),Qe("tickLower"),Qe("tickUpper"),j("liquidity"),j("feeGrowthInsideLastX64A"),j("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),X(Vp,3,"rewardInfos"),X(w(),8,"")]),DT=M([be(8),E("bump"),K("poolId"),Qe("tickLowerIndex"),Qe("tickUpperIndex"),j("liquidity"),j("feeGrowthInsideLastX64A"),j("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),X(j(),3,"rewardGrowthInside"),X(w(),8,"")]),vp=M([Qe("tick"),Za("liquidityNet"),j("liquidityGross"),j("feeGrowthOutsideX64A"),j("feeGrowthOutsideX64B"),X(j(),3,"rewardGrowthsOutsideX64"),X($e(),13,"")]),Co=M([be(8),K("poolId"),Qe("startTickIndex"),X(vp,We,"ticks"),E("initializedTickCount"),X(E(),115,"")]),Zu=M([be(329),X(K(),100,"whitelistMints")]),ju=M([be(8),K("poolId"),X(X(w(),8),Ts,"positiveTickArrayBitmap"),X(X(w(),8),Ts,"negativeTickArrayBitmap")]);var ec=ce("Raydium_Clmm"),Kt={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},Ke=class{static createPoolInstruction(e,t,n,r,i,s,a,c,u,l,m,d,p,y){let f=M([j("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:zn.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},g);let h=Buffer.from([...Kt.createPool,...g]);return new St({keys:b,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:i,mintB:s,ammConfigId:a,initialPriceX64:c,startTime:u,forerunCreate:l}=e,m=Je({fromPublicKey:r,programId:n}),[d,p]=[new U(i.address),new U(s.address)],y=[zn.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(xs.span),space:xs.span,programId:n})],{publicKey:f}=Eu(n,a,d,p),{publicKey:b}=hs(n,f,d),{publicKey:g}=hs(n,f,p);return y.push(this.createPoolInstruction(n,f,r,a,m.publicKey,d,b,new U(i.programId||He),p,g,new U(s.programId||He),pt(n,f).publicKey,c,u)),{signers:[],instructions:y,instructionTypes:[v.CreateAccount,v.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:b,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,i,s,a,c,u,l,m,d,p,y,f,b,g,h,P,k,B,T,S,x,R,I){let N=M([Qe("tickLowerIndex"),Qe("tickUpperIndex"),Qe("tickArrayLowerStartIndex"),Qe("tickArrayUpperStartIndex"),j("liquidity"),w("amountMaxA"),w("amountMaxB"),je("withMetadata"),E("optionBaseFlag"),je("baseFlag")]),q=[...I?[{pubkey:I,isSigner:!1,isWritable:!0}]:[]],D=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:zn.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:$u,isSigner:!1,isWritable:!1},{pubkey:_n,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...q],J=Buffer.alloc(N.span);N.encode({tickLowerIndex:h,tickUpperIndex:P,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:B,liquidity:T,amountMaxA:S,amountMaxB:x,withMetadata:R==="create",baseFlag:!1,optionBaseFlag:0},J);let G=Buffer.from([...Kt.openPosition,...J]);return new St({keys:D,programId:e,data:G})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:i,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let m=[],[d,p]=[new U(e.programId),new U(e.id)],y;if(l)y=new U((await l(1))[0]);else{let x=Ss.generate();m.push(x),y=x.publicKey}let f=H.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=H.getTickArrayStartIndexByTick(i,e.config.tickSpacing),{publicKey:g}=we(d,p,f),{publicKey:h}=we(d,p,b),{publicKey:P}=ge(n.wallet,y,He),{publicKey:k}=Or(y),{publicKey:B}=gt(d,y),{publicKey:T}=hn(d,p,r,i),S=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,P,k,T,g,h,B,n.tokenAccountA,n.tokenAccountB,new U(t.vault.A),new U(t.vault.B),new U(e.mintA.address),new U(e.mintB.address),r,i,f,b,s,a,c,u);return{signers:m,instructions:[S],instructionTypes:[v.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:P,metadataAccount:k,personalPosition:B,protocolPosition:T}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:i,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:l}){let m=[],[d,p]=[new U(e.programId),new U(e.id)],y;if(l)y=new U((await l(1))[0]);else{let x=Ss.generate();m.push(x),y=x.publicKey}let f=H.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=H.getTickArrayStartIndexByTick(i,e.config.tickSpacing),{publicKey:g}=we(d,p,f),{publicKey:h}=we(d,p,b),{publicKey:P}=ge(n.wallet,y,He),{publicKey:k}=Or(y),{publicKey:B}=gt(d,y),{publicKey:T}=hn(d,p,r,i),S=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,P,k,T,g,h,B,n.tokenAccountA,n.tokenAccountB,new U(t.vault.A),new U(t.vault.B),new U(e.mintA.address),new U(e.mintB.address),r,i,f,b,u,s,a,c,Le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?pt(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:P,metadataAccount:k,personalPosition:B,protocolPosition:T},instructions:[S],signers:m,instructionTypes:[v.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,i,s,a,c,u,l,m,d,p,y,f,b,g,h,P,k,B,T,S,x,R,I){let N=M([Qe("tickLowerIndex"),Qe("tickUpperIndex"),Qe("tickArrayLowerStartIndex"),Qe("tickArrayUpperStartIndex"),j("liquidity"),w("amountMaxA"),w("amountMaxB"),je("withMetadata"),E("optionBaseFlag"),je("baseFlag")]),q=[...I?[{pubkey:I,isSigner:!1,isWritable:!0}]:[]],D=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:zn.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:$u,isSigner:!1,isWritable:!1},{pubkey:_n,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...q],J=Buffer.alloc(N.span);N.encode({tickLowerIndex:h,tickUpperIndex:P,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:B,liquidity:new Ju(0),amountMaxA:S==="MintA"?x:R,amountMaxB:S==="MintA"?R:x,withMetadata:T==="create",baseFlag:S==="MintA",optionBaseFlag:1},J);let G=Buffer.from([...Kt.openPosition,...J]);return new St({keys:D,programId:e,data:G})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:i,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let m,d=[];if(l)m=new U((await l(1))[0]);else{let x=Ss.generate();d.push(x),m=x.publicKey}let[p,y]=[new U(e.programId),new U(e.id)],f=H.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=H.getTickArrayStartIndexByTick(i,e.config.tickSpacing),{publicKey:g}=we(p,y,f),{publicKey:h}=we(p,y,b),{publicKey:P}=ge(n.wallet,m,He),{publicKey:k}=Or(m),{publicKey:B}=gt(p,m),{publicKey:T}=hn(p,y,r,i),S=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,P,k,T,g,h,B,n.tokenAccountA,n.tokenAccountB,new U(t.vault.A),new U(t.vault.B),new U(t.mintA.address),new U(t.mintB.address),r,i,f,b,s,a,c,u,Le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?pt(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:P,metadataAccount:k,personalPosition:B,protocolPosition:T},instructions:[S],signers:d,instructionTypes:[v.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,i){let s=M([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:zn.programId,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);s.encode({},c);let u=Buffer.from([...Kt.closePosition,...c]);return new St({keys:a,programId:e,data:u})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let i=new U(e.programId),{publicKey:s}=ge(n.wallet,r.nftMint,He),{publicKey:a}=gt(i,r.nftMint),c=[];return c.push(this.closePositionInstruction(i,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:c,instructionTypes:[v.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,i,s,a,c,u,l,m,d,p,y,f,b,g,h){let P=M([j("liquidity"),w("amountMaxA"),w("amountMaxB"),E("optionBaseFlag"),je("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],B=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],T=Buffer.alloc(P.span);P.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},T);let S=Buffer.from([...Kt.increaseLiquidity,...T]);return new St({keys:B,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:i,amountMaxA:s,amountMaxB:a}){let[c,u]=[new U(e.programId),new U(e.id)],l=H.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=H.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=we(c,u,l),{publicKey:p}=we(c,u,m),{publicKey:y}=ge(r.wallet,n.nftMint,He),{publicKey:f}=gt(c,n.nftMint),{publicKey:b}=hn(c,u,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(c,r.wallet,y,f,u,b,d,p,r.tokenAccountA,r.tokenAccountB,new U(t.vault.A),new U(t.vault.B),new U(e.mintA.address),new U(e.mintB.address),i,s,a,Le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?pt(c,u).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},signers:[],instructions:[g],instructionTypes:[v.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,base:i,baseAmount:s,otherAmountMax:a}){let[c,u]=[new U(e.programId),new U(e.id)],l=H.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=H.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=we(c,u,l),{publicKey:p}=we(c,u,m),{publicKey:y}=ge(r.wallet,n.nftMint,He),{publicKey:f}=gt(c,n.nftMint),{publicKey:b}=hn(c,u,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(c,r.wallet,y,f,u,b,d,p,r.tokenAccountA,r.tokenAccountB,new U(t.vault.A),new U(t.vault.B),new U(e.mintA.address),new U(e.mintB.address),i,s,a,Le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?pt(c,u).publicKey:void 0)],signers:[],instructionTypes:[v.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,i,s,a,c,u,l,m,d,p,y,f,b,g,h){let P=M([j("liquidity"),w("amountMaxA"),w("amountMaxB"),E("optionBaseFlag"),je("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],B=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],T=Buffer.alloc(P.span);P.encode({liquidity:new Ju(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},T);let S=Buffer.from([...Kt.increaseLiquidity,...T]);return new St({keys:B,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,r,i,s,a,c,u,l,m,d,p,y,f,b,g,h,P){let k=M([j("liquidity"),w("amountMinA"),w("amountMinB")]),B=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[],...f.map(R=>[{pubkey:R.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:R.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:R.rewardMint,isSigner:!1,isWritable:!1}]).flat()],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:er,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...B],S=Buffer.alloc(k.span);k.encode({liquidity:b,amountMinA:g,amountMinB:h},S);let x=Buffer.from([...Kt.decreaseLiquidity,...S]);return new St({keys:T,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:i,amountMinA:s,amountMinB:a,programId:c}){let[u,l]=[new U(e.programId),new U(e.id)],m=H.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=H.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=we(u,l,m),{publicKey:y}=we(u,l,d),{publicKey:f}=ge(r.wallet,n.nftMint,c),{publicKey:b}=gt(u,n.nftMint),{publicKey:g}=hn(u,l,n.tickLower,n.tickUpper),h=[];for(let k=0;k<e.rewardDefaultInfos.length;k++)h.push({poolRewardVault:new U(t.rewardInfos[k].vault),ownerRewardVault:r.rewardAccounts[k],rewardMint:new U(e.rewardDefaultInfos[k].mint.address)});let P=[];return P.push(this.decreaseLiquidityInstruction(u,r.wallet,f,b,l,g,p,y,r.tokenAccountA,r.tokenAccountB,new U(t.vault.A),new U(t.vault.B),new U(e.mintA.address),new U(e.mintB.address),h,i,s,a,Le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?pt(u,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:P,instructionTypes:[v.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,i,s,a,c,u,l,m,d,p,y,f,b,g){let h=M([w("amount"),w("otherAmountThreshold"),j("sqrtPriceLimitX64"),je("isBaseInput")]),P=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:er,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...P],B=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},B);let T=Buffer.from([...Kt.swap,...B]);return new St({keys:k,programId:e,data:T})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:i,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,m]=[new U(e.programId),new U(e.id)],[d,p]=[new U(t.vault.A),new U(t.vault.B)],[y,f]=[new U(e.mintA.address),new U(e.mintB.address)],b=e.mintA.address===i.toString(),g=[this.swapInstruction(l,r.wallet,m,new U(e.config.id),b?r.tokenAccountA:r.tokenAccountB,b?r.tokenAccountB:r.tokenAccountA,b?d:p,b?p:d,b?y:f,b?f:y,u,n,s,a,c,!0,pt(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[v.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,i,s,a,c,u,l,m,d){let p=M([w("openTime"),w("endTime"),j("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:zn.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:Y(l),endTime:Y(m),emissionsPerSecondX64:d},f);let b=Buffer.from([...Kt.initReward,...f]);return new St({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[i,s]=[new U(e.programId),new U(e.id)],a=Du(i,s,r.mint).publicKey,c=So(i).publicKey,u=[this.initRewardInstruction(i,n.wallet,s,c,new U(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:u,instructionTypes:[v.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,i,s,a,c,u,l,m,d){let p=M([E("rewardIndex"),j("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:u,emissionsPerSecondX64:d,openTime:Y(l),endTime:Y(m)},f);let b=Buffer.from([...Kt.setRewardEmissions,...f]);return new St({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[i,s]=[new U(e.programId),new U(e.id)],a,c,u;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===r.mint.toString()&&(a=d,c=new U(t.rewardInfos[d].vault),u=new U(t.rewardInfos[d].mint.address));(a===void 0||c===void 0)&&ec.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=So(i).publicKey,m=[this.setRewardInstruction(i,n.wallet,s,l,new U(e.config.id),n.tokenAccount,c,u,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:m,instructionTypes:[v.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,i,s,a){let c=M([E("rewardIndex")]),u=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:He,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:er,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let m=Buffer.from([...Kt.collectReward,...l]);return new St({keys:u,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[i,s]=[new U(e.programId),new U(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,c=new U(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&ec.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=[this.collectRewardInstruction(i,n.wallet,s,n.tokenAccount,c,r,a)];return{address:{rewardVault:c},signers:[],instructions:u,instructionTypes:[v.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:i,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:c}){let[u,l]=[new U(e.programId),new U(e.id)],[m,d]=[new U(t.vault.A),new U(t.vault.B)],[p,y]=[new U(e.mintA.address),new U(e.mintB.address)],f=e.mintA.address===r.toString(),b=[this.swapInstruction(u,n.wallet,l,new U(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:y,f?y:p,c,m,i,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[v.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as Wp}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as qp}from"@solana/spl-token";import{PublicKey as Ep}from"@solana/web3.js";import tc from"bn.js";var nc=new tc(25),oc=new tc(1e4),Fp={4:3,5:3};var Dp=ce("Raydium_liquidity_serum");function rc({programId:o,marketId:e}){let t=[e.toBuffer()],n=0,r;for(;n<100;){try{let i=t.concat(Buffer.from([n]),Buffer.alloc(7));r=Ep.createProgramAddressSync(i,o)}catch(i){if(i instanceof TypeError)throw i;n++;continue}return{publicKey:r,nonce:n}}throw Dp.logWithError("unable to find a viable program address nonce","params",{programId:o,marketId:e}),new Error("unable to find a viable program address nonce")}import Oo from"bn.js";function Fr({programId:o}){let{publicKey:e}=ue([Buffer.from("amm_config_account_seed","utf-8")],o);return e}function xn({name:o,programId:e,marketId:t}){let{publicKey:n}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(o,"utf-8")],e);return n}function Up({programId:o,marketId:e}){let{publicKey:t}=ue([o.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],o);return t}function Rs({programId:o}){return ue([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],o)}function ic({version:o,marketVersion:e,marketId:t,baseMint:n,quoteMint:r,baseDecimals:i,quoteDecimals:s,programId:a,marketProgramId:c}){let u=xn({name:"amm_associated_seed",programId:a,marketId:t}),l=xn({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=Rs({programId:a}),p=xn({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=xn({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=xn({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=Up({programId:a,marketId:t}),g=xn({name:"target_associated_seed",programId:a,marketId:t}),h=xn({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:P}=rc({programId:c,marketId:t});return{id:u,baseMint:n,quoteMint:r,lpMint:l,baseDecimals:i,quoteDecimals:s,lpDecimals:i,version:o,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:h,marketVersion:e,marketProgramId:c,marketId:t,marketAuthority:P,lookupTableAccount:Wp.default,configId:Fr({programId:a})}}var Ks;async function AI({connection:o,poolKeysList:e,config:t}){Ks||(Ks=new Un({connection:o}),await Ks.initStableModelLayout());let n=e.map(s=>Mu({poolKeys:s}));return(await Ca(o,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=Ra(s,"GetPoolData"),c=new Oo(Wt(a,"status")),u=Number(Wt(a,"coin_decimals")),l=Number(Wt(a,"pc_decimals")),m=Number(Wt(a,"lp_decimals")),d=new Oo(Wt(a,"pool_coin_amount")),p=new Oo(Wt(a,"pool_pc_amount")),y=new Oo(Wt(a,"pool_lp_supply")),f="0";try{f=Wt(a,"pool_open_time")}catch{}return{status:c,baseDecimals:u,quoteDecimals:l,lpDecimals:m,baseReserve:d,quoteReserve:p,lpSupply:y,startTime:new Oo(f)}})}var Cs={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},Er=o=>{let e={},t=qp.toBase58();return Object.keys(o).map(n=>{let r=o[n],[i,s]=[r.baseMint.toBase58(),r.quoteMint.toBase58()];e[n]={id:n,version:4,status:r.status.toNumber(),programId:r.programId.toBase58(),mintA:it({address:i,programId:t,decimals:r.baseDecimal.toNumber()}),mintB:it({address:s,programId:t,decimals:r.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:r.poolPrice.toNumber(),mintAmountA:new V(r.mintAAmount.toString()).div(10**r.baseDecimal.toNumber()).toNumber(),mintAmountB:new V(r.mintBAmount.toString()).div(10**r.quoteDecimal.toNumber()).toNumber(),baseReserve:r.baseReserve,quoteReserve:r.quoteReserve,feeRate:new V(r.tradeFeeNumerator.toString()).div(r.tradeFeeDenominator.toString()).toNumber(),openTime:r.poolOpenTime.toString(),tvl:0,day:Cs,week:Cs,month:Cs,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:r.marketId.toBase58(),configId:Fr({programId:r.programId}).toBase58(),lpPrice:0,lpAmount:0,lpMint:it({address:r.lpMint.toBase58(),programId:t,decimals:Math.min(r.baseDecimal.toNumber(),r.quoteDecimal.toNumber())})}}),e};import lt from"bn.js";var No=class extends Se{constructor(t){super(t);this.stableLayout=new Un({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:r,baseIn:i}){let s=new lt(new V(n).mul(10**t[i?"mintA":"mintB"].decimals).toFixed(0)),a=Cr(t[i?"mintB":"mintA"]),[c,u]=[new lt(new V(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new lt(new V(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new lt(new V(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,V.ROUND_DOWN));this.logDebug("baseReserve:",c.toString(),"quoteReserve:",u.toString()),this.logDebug("tokenIn:",i?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",i?t.mintB.symbol:t.mintA.symbol,"slippage:",`${r.toSignificant()}%`,"baseReserve",c.toString(),"quoteReserve",u.toString());let m=i?"base":"quote";this.logDebug("input side:",m);let d=Ee;s.isZero()||(d=m==="base"?sr(s.mul(u),c):sr(s.mul(c),u)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=sr(s.mul(l),m==="base"?c:u);this.logDebug("liquidity:",p.toString());let f=new Fe(new lt(1)).add(r).mul(d).quotient,b=new fe(a,d),g=new fe(a,f);return this.logDebug("anotherAmount:",b.toFixed(),"maxAnotherAmount:",g.toFixed()),{anotherAmount:b,maxAnotherAmount:g,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,poolKeys:r,amountInA:i,amountInB:s,fixedSide:a,config:c,txVersion:u,computeBudgetConfig:l}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",s),(i.isZero()||s.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:s.toFixed()});let{account:m}=this.scope,{bypassAssociatedCheck:d,checkCreateATAOwner:p}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},c),[y,f]=[i.token,s.token],b=await m.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1}),g=await m.getCreatedTokenAccount({mint:f.mint,associatedOnly:!1});!b&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",m.tokenAccounts);let h=await m.getCreatedTokenAccount({mint:new Me(n.lpMint.address)}),P=[y,f],k=[b,g],B=[i.raw,s.raw],T=i.token.mint.toBase58()===n.mintA.address?"base":"quote",S="base";["quote","base"].includes(T)||this.logAndCreateError("invalid fixedSide","fixedSide",a),T==="quote"?(P.reverse(),k.reverse(),B.reverse(),S=a==="a"?"quote":"base"):T==="base"&&(S=a==="a"?"base":"quote");let[x,R]=P,[I,N]=k,[q,D]=B,J=r!=null?r:await this.getAmmPoolKeys(n.id),G=this.createTxBuilder(),Ft=await m.handleTokenAccount({side:"in",amount:q,mint:x.mint,tokenAccount:I,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:W}=Ft,ot=xe(Ft,["tokenAccount"]);G.addInstruction(ot);let On=await m.handleTokenAccount({side:"in",amount:D,mint:R.mint,tokenAccount:N,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:Rn}=On,mn=xe(On,["tokenAccount"]);G.addInstruction(mn);let Xo=await m.handleTokenAccount({side:"out",amount:0,mint:new Me(n.lpMint.address),tokenAccount:h,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:jt}=Xo,Ln=xe(Xo,["tokenAccount"]);return G.addInstruction(Ln),G.addInstruction({instructions:[Ou({poolInfo:n,poolKeys:J,userKeys:{baseTokenAccount:W,quoteTokenAccount:Rn,lpTokenAccount:jt,owner:this.scope.ownerPubKey},baseAmountIn:q,quoteAmountIn:D,fixedSide:S})],instructionTypes:[n.pooltype.includes("StablePool")?v.AmmV5AddLiquidity:v.AmmV4AddLiquidity],lookupTableAddress:J.lookupTableAccount?[J.lookupTableAccount]:[]}),G.addCustomComputeBudget(l),u===0&&await G.buildV0(),G.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,poolKeys:r,amountIn:i,config:s,txVersion:a,computeBudgetConfig:c}=t,u=r!=null?r:await this.getAmmPoolKeys(n.id),[l,m,d]=[new Me(n.mintA.address),new Me(n.mintB.address),new Me(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.toString());let{account:p}=this.scope,y=await p.getCreatedTokenAccount({mint:d,associatedOnly:!1});y||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",p.tokenAccounts);let f=await p.getCreatedTokenAccount({mint:l}),b=await p.getCreatedTokenAccount({mint:m}),g=this.createTxBuilder(),{bypassAssociatedCheck:h,checkCreateATAOwner:P}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},s),x=await p.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:h,checkCreateATAOwner:P}),{tokenAccount:k}=x,B=xe(x,["tokenAccount"]);g.addInstruction(B);let R=await p.handleTokenAccount({side:"out",amount:0,mint:m,tokenAccount:b,bypassAssociatedCheck:h,checkCreateATAOwner:P}),{tokenAccount:T}=R,S=xe(R,["tokenAccount"]);return g.addInstruction(S),g.addInstruction({instructions:[As({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:y,baseTokenAccount:k,quoteTokenAccount:T,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?v.AmmV5RemoveLiquidity:v.AmmV4RemoveLiquidity]}),g.addCustomComputeBudget(c),a===0?await g.buildV0():g.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:r,createPositionInfo:i,farmInfo:s,userFarmLpAmount:a,base:c,computeBudgetConfig:u,payer:l,userAuxiliaryLedgers:m,tokenProgram:d=Dr,checkCreateATAOwner:p=!0,getEphemeralSigners:y,txVersion:f}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let b=this.createTxBuilder();b.addCustomComputeBudget(u);let g={};for(let W of this.scope.account.tokenAccountRawInfos)(g[W.accountInfo.mint.toString()]===void 0||ge(this.scope.ownerPubKey,W.accountInfo.mint,Dr).publicKey.equals(W.pubkey))&&(g[W.accountInfo.mint.toString()]=W.pubkey);let h=g[t.lpMint.address];if(h===void 0)throw Error("find lp account error in trade accounts");let P=r.add(a!=null?a:new lt(0)),k=t.mintA.address===ye.WSOL.mint.toString(),B=t.mintB.address===ye.WSOL.mint.toString(),{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Dr,mint:new Me(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!0,checkCreateATAOwner:p});if(b.addInstruction(S||{}),T===void 0)throw new Error("base token account not found");let{account:x,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Dr,mint:new Me(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:B?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!B,notUseTokenAccount:B,associatedOnly:!0,checkCreateATAOwner:p});if(b.addInstruction(R||{}),x===void 0)throw new Error("quote token account not found");if(g[t.mintA.address]=T,g[t.mintB.address]=x,s!==void 0&&!(a!=null&&a.isZero())){let W=bt[s.programId],ot=et({programId:new Me(s.programId),poolId:new Me(s.id),owner:this.scope.ownerPubKey,version:W}),Rn,mn=await this.scope.connection.getAccountInfo(ot);if(mn&&(Rn=qn(W).decode(mn.data)),W!==6&&!Rn){let{instruction:Ht,instructionType:ti}=Kr({id:new Me(s.id),programId:new Me(s.programId),version:W,ledger:ot,owner:this.scope.ownerPubKey});b.addInstruction({instructions:[Ht],instructionTypes:[ti]})}let jt=[];for(let Ht of s.rewardInfos){let ti=Ht.mint.address===ye.WSOL.mint.toString();if(g[Ht.mint.address])jt.push(g[Ht.mint.address]);else{let{account:zs,instructionParams:Ys}=await this.scope.account.getOrCreateTokenAccount({mint:new Me(Ht.mint.address),tokenProgram:d,owner:this.scope.ownerPubKey,skipCloseAccount:!ti,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});zs||this.logAndCreateError("farm reward account not found:",Ht.mint.address),Ys&&b.addInstruction(Ys),jt.push(zs)}}let Ln=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],Ft={userAuxiliaryLedgers:m,amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:Ln,lpAccount:h,rewardAccounts:jt},On=bt[s.programId],Xo=On===6?Po(Ft):On===5?ho(Ft):ko(Ft),Oc={3:v.FarmV3Withdraw,5:v.FarmV5Withdraw,6:v.FarmV6Withdraw};b.addInstruction({instructions:[Xo],instructionTypes:[Oc[On]]})}let I=await this.getAmmPoolKeys(t.id),N=As({poolInfo:t,poolKeys:I,userKeys:{lpTokenAccount:h,baseTokenAccount:T,quoteTokenAccount:x,owner:this.scope.ownerPubKey},amountIn:P});b.addInstruction({instructions:[N],instructionTypes:[t.pooltype.includes("StablePool")?v.AmmV5RemoveLiquidity:v.AmmV4RemoveLiquidity],lookupTableAddress:I.lookupTableAccount?[I.lookupTableAccount]:[]});let[q,D]=t.mintA.address===n.mintA.address?[T,x]:[x,T],J=await this.scope.clmm.getClmmPoolKeys(t.id),G=await Ke.openPositionFromBaseInstructions(F(C({poolInfo:n,poolKeys:J,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:q,tokenAccountB:D},withMetadata:"create"},i),{base:c,getEphemeralSigners:y}));return b.addInstruction({instructions:[...G.instructions],signers:G.signers,instructionTypes:[...G.instructionTypes],lookupTableAddress:J.lookupTableAccount?[J.lookupTableAccount]:[]}),f===0?b.sizeCheckBuildV0():b.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:r,quoteMintInfo:i,baseAmount:s,quoteAmount:a,startTime:c,ownerInfo:u,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:y,computeBudgetConfig:f}){var q;let b=u.feePayer||((q=this.scope.owner)==null?void 0:q.publicKey),g=u.useSOLBalance&&r.mint.equals(sc),h=u.useSOLBalance&&i.mint.equals(sc),P=this.createTxBuilder(),{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:r.mint,owner:this.scope.ownerPubKey,createInfo:g?{payer:b,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:l,checkCreateATAOwner:m});P.addInstruction(B||{});let{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:h?{payer:b,amount:a}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:l,checkCreateATAOwner:m});if(P.addInstruction(S||{}),k===void 0||T===void 0)throw Error("you don't has some token account");let x=ic({version:4,marketVersion:3,marketId:n.marketId,baseMint:r.mint,quoteMint:i.mint,baseDecimals:r.decimals,quoteDecimals:i.decimals,programId:t,marketProgramId:n.programId}),R={programId:t,ammId:x.id,ammAuthority:x.authority,ammOpenOrders:x.openOrders,lpMint:x.lpMint,coinMint:x.baseMint,pcMint:x.quoteMint,coinVault:x.baseVault,pcVault:x.quoteVault,withdrawQueue:x.withdrawQueue,ammTargetOrders:x.targetOrders,poolTempLp:x.lpVault,marketProgramId:x.marketProgramId,marketId:x.marketId,ammConfigId:x.configId,feeDestinationId:y},{instruction:I,instructionType:N}=Nu(F(C({},R),{userWallet:this.scope.ownerPubKey,userCoinVault:k,userPcVault:T,userLpVault:ge(this.scope.ownerPubKey,x.lpMint,d).publicKey,nonce:x.nonce,openTime:c,coinAmount:s,pcAmount:a}));return P.addInstruction({instructions:[I],instructionTypes:[N]}),P.addCustomComputeBudget(f),P.versionBuild({txVersion:p,extInfo:{address:R}})}async getCreatePoolFee({programId:t}){let n=Fr({programId:t}),r=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(r===null)throw Error("get config account error");return Iu.decode(r.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:r,mintOut:i,slippage:s}){let[a,c]=[r.toString(),i.toString()];if(a!==t.mintA.address&&a!==t.mintB.address)throw new Error("toke not match");if(c!==t.mintA.address&&c!==t.mintB.address)throw new Error("toke not match");let{baseReserve:u,quoteReserve:l}=t,m=[u,l],d=a==t.mintA.address?"base":"quote";d==="quote"&&m.reverse();let[p,y]=m,f=t.version===4,b;if(f)b=new V(y.toString()).div(p.toString());else{let I=Cu(this.stableLayout.stableModelData,u.toNumber(),l.toNumber(),!1);d==="quote"?b=new V(1e6).div(I*1e6):b=new V(I*1e6).div(1e6)}let g=n,h=new lt(0),P=new lt(0);if(!g.isZero())if(f){P=nn(g.mul(nc),oc);let I=g.sub(P),N=p.add(I);h=y.mul(I).div(N)}else{P=g.mul(new lt(2)).div(new lt(1e4));let I=g.sub(P);d==="quote"?h=new lt(Su(this.stableLayout.stableModelData,l.toNumber(),u.toNumber(),I.toNumber())):h=new lt(Ku(this.stableLayout.stableModelData,l.toNumber(),u.toNumber(),I.toNumber()))}let k=new lt(new V(h.toString()).mul(1-s).toFixed(0)),B=h,T=k,S=new V(h.toString()).div(new V(g.sub(P).toString()).toFixed(0));!g.isZero()&&!h.isZero()&&(S=new V(h.toString()).div(g.sub(P).toString()));let x=b.sub(S).div(b).mul(100);return{amountOut:B,minAmountOut:T,currentPrice:b,executionPrice:S,priceImpact:x,fee:P}}async swap({poolInfo:t,poolKeys:n,amountIn:r,amountOut:i,inputMint:s,fixedSide:a,txVersion:c,computeBudgetConfig:u}){let l=this.createTxBuilder(),[m,d]=s===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],p=await this.scope.account.getCreatedTokenAccount({mint:new Me(m.address),programId:new Me(m.programId),associatedOnly:!1}),y=await this.scope.account.getCreatedTokenAccount({mint:new Me(d.address),programId:new Me(d.programId),associatedOnly:!1}),B=await this.scope.account.handleTokenAccount({side:"in",amount:r,mint:new Me(m.address),tokenAccount:p,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:f}=B,b=xe(B,["tokenAccount"]);l.addInstruction(b);let T=await this.scope.account.handleTokenAccount({side:"out",amount:0,mint:new Me(d.address),tokenAccount:y,bypassAssociatedCheck:!1,checkCreateATAOwner:!1}),{tokenAccount:g}=T,h=xe(T,["tokenAccount"]);l.addInstruction(h);let P=n||await this.getAmmPoolKeys(t.id),k=4;return t.pooltype.includes("StablePool")&&(k=5),l.addInstruction({instructions:[Rr({version:k,poolKeys:P,userKeys:{tokenAccountIn:f,tokenAccountOut:g,owner:this.scope.ownerPubKey},amountIn:r,amountOut:i,fixedSide:a})],instructionTypes:[k===4?v.AmmV4SwapBaseIn:v.AmmV5SwapBaseIn]}),l.addCustomComputeBudget(u),l.versionBuild({txVersion:c})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t,n){let r=await De(this.scope.connection,t.map(l=>({pubkey:new Me(l)})),n),i={},s=[];for(let l=0;l<t.length;l++){let m=r[l];if(m===null||!m.accountInfo)throw Error("fetch pool info error: "+String(t[l]));let d=Bo.decode(m.accountInfo.data);i[String(t[l])]=F(C({},d),{programId:m.accountInfo.owner}),s.push(d.baseVault,d.quoteVault)}let a={},c=await De(this.scope.connection,s.map(l=>({pubkey:new Me(l)})),n);for(let l=0;l<s.length;l++){let m=c[l].accountInfo;if(m===null)throw Error("fetch vault info error: "+s[l]);a[String(s[l])]=new lt(Gp.decode(m.data).amount.toString())}let u={};for(let[l,m]of Object.entries(i)){let d=a[m.baseVault.toString()].sub(m.baseNeedTakePnl),p=a[m.quoteVault.toString()].sub(m.quoteNeedTakePnl);u[l]=F(C({},m),{baseReserve:d,mintAAmount:a[m.baseVault.toString()],mintBAmount:a[m.quoteVault.toString()],quoteReserve:p,poolPrice:new V(p.toString()).div(new V(10).pow(m.quoteDecimal.toString())).div(new V(d.toString()).div(new V(10).pow(m.baseDecimal.toString())))})}return u}async getPoolInfoFromRpc({poolId:t}){let n=await this.getRpcPoolInfo(t),r=Er({[t]:n}),i=r[t],s=await this.scope.tradeV2.computePoolToPoolKeys({pools:[r[t]],ammRpcData:{[t]:n}});return{poolRpcData:n,poolInfo:i,poolKeys:s[0]}}};import{PublicKey as ae}from"@solana/web3.js";import wt from"bn.js";import{AccountLayout as ac,TOKEN_PROGRAM_ID as uc}from"@solana/spl-token";var Mo=class extends Se{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var h;let{programId:t,owner:n=((h=this.scope.owner)==null?void 0:h.publicKey)||ae.default,mint1:r,mint2:i,ammConfig:s,initialPrice:a,startTime:c,computeBudgetConfig:u,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,y,f]=new wt(new ae(r.address).toBuffer()).gt(new wt(new ae(i.address).toBuffer()))?[i,r,new V(1).div(a)]:[r,i,a],b=te.priceToSqrtPriceX64(f,p.decimals,y.decimals),g=await Ke.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:y,ammConfigId:s.id,initialPriceX64:b,startTime:c,forerunCreate:l});return d.addInstruction(g),d.addCustomComputeBudget(u),d.versionBuild({txVersion:m,extInfo:{address:F(C({},g.address),{programId:t.toString(),id:g.address.poolId.toString(),mintA:p,mintB:y,openTime:c.toString(),vault:{A:g.address.mintAVault.toString(),B:g.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:C({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:g.address.poolId.toString(),mintA:p,mintB:y,feeRate:s.tradeFeeRate,openTime:c.toString(),programId:t.toString(),price:f.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}},zu),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:i,base:s,baseAmount:a,otherAmountMax:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:d,computeBudgetConfig:p,txVersion:y}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),b=null,g=null,h=n.useSOLBalance&&e.mintA.address===$.toString(),P=n.useSOLBalance&&e.mintB.address===$.toString(),[k,B]=s==="MintA"?[a,c]:[c,a],{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ae(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||k.isZero()?{payer:this.scope.ownerPubKey,amount:k}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:l});T&&(b=T),f.addInstruction(S||{});let{account:x,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ae(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:P||B.isZero()?{payer:this.scope.ownerPubKey,amount:B}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:u,checkCreateATAOwner:l});x&&(g=x),f.addInstruction(R||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",{ownerTokenAccountA:b==null?void 0:b.toBase58(),ownerTokenAccountB:g==null?void 0:g.toBase58()});let I=t||await this.getClmmPoolKeys(e.id),N=await Ke.openPositionFromBaseInstructions({poolInfo:e,poolKeys:I,ownerInfo:F(C({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:r,tickUpper:i,base:s,baseAmount:a,otherAmountMax:c,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(N),f.addCustomComputeBudget(p),f.versionBuild({txVersion:y,extInfo:N.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:r,amountMaxB:i,tickLower:s,tickUpper:a,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:d,getEphemeralSigners:p}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let y=this.createTxBuilder(),f=null,b=null,g=n.useSOLBalance&&e.mintA.address===$.toBase58(),h=n.useSOLBalance&&e.mintB.address===$.toBase58(),{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ae(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g||r.isZero()?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:u,checkCreateATAOwner:l});P&&(f=P),y.addInstruction(k||{});let{account:B,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ae(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:l});B&&(b=B),y.addInstruction(T||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=t||await this.getClmmPoolKeys(e.id),x=await Ke.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:c,amountMaxA:r,amountMaxB:i,withMetadata:m,getEphemeralSigners:p});return y.addInstruction(x),y.versionBuild({txVersion:d,extInfo:{address:x.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,poolKeys:n,ownerPosition:r,amountMaxA:i,amountMaxB:s,liquidity:a,ownerInfo:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,computeBudgetConfig:m,txVersion:d}=e,p=this.createTxBuilder(),y,f,b=c.useSOLBalance&&t.mintA.address===$.toString(),g=c.useSOLBalance&&t.mintB.address===$.toString(),{account:h,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ae(t.mintA.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:b||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:l});h&&(y=h),p.addInstruction(P||{});let{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ae(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:g||s.isZero()?{payer:this.scope.ownerPubKey,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:u,checkCreateATAOwner:l});k&&(f=k),p.addInstruction(B||{}),!y&&!f&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=n!=null?n:await this.getClmmPoolKeys(t.id),S=Ke.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:T,ownerPosition:r,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:y,tokenAccountB:f},liquidity:a,amountMaxA:i,amountMaxB:s});return p.addInstruction(S),p.addCustomComputeBudget(m),p.versionBuild({txVersion:d,extInfo:{address:S.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:r,baseAmount:i,otherAmountMax:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===$.toString(),b=a.useSOLBalance&&t.mintB.address===$.toString(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ae(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||(r==="MintA"?i:s).isZero()?{payer:this.scope.ownerPubKey,amount:r==="MintA"?i:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:c,checkCreateATAOwner:u});g&&(p=g),d.addInstruction(h||{});let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ae(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b||(r==="MintA"?s:i).isZero()?{payer:this.scope.ownerPubKey,amount:r==="MintA"?s:i}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:c,checkCreateATAOwner:u});P&&(y=P),d.addInstruction(k||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let B=await this.getClmmPoolKeys(t.id),T=Ke.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:B,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:r,baseAmount:i,otherAmountMax:s});return d.addInstruction(T),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:T.address}})}async decreaseLiquidity(e){let{poolInfo:t,poolKeys:n,ownerPosition:r,ownerInfo:i,amountMinA:s,amountMinB:a,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,computeBudgetConfig:m,txVersion:d}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let p=this.createTxBuilder(),y=i.useSOLBalance&&t.mintA.address===$.toString(),f=i.useSOLBalance&&t.mintB.address===$.toString(),b,g,{account:h,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ae(t.mintA.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:l});b=h,P&&p.addInstruction(P);let{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ae(t.mintB.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:l});g=k,B&&p.addInstruction(B);let T=[];for(let I of t.rewardDefaultInfos){let N=i.useSOLBalance&&I.mint.address===$.toString(),q;if(I.mint.address===t.mintA.address)q=b;else if(I.mint.address===t.mintB.address)q=g;else{let{account:D,instructionParams:J}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(I.mint.programId),mint:new ae(I.mint.address),notUseTokenAccount:N,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!N,associatedOnly:N?!1:u,checkCreateATAOwner:l});q=D,J&&p.addInstruction(J)}T.push(q)}!b&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let S=n!=null?n:await this.getClmmPoolKeys(t.id),x=await Ke.decreaseLiquidityInstructions({poolInfo:t,poolKeys:S,ownerPosition:r,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g,rewardAccounts:T},liquidity:c,amountMinA:s,amountMinB:a});p.addInstruction({instructions:x.instructions,instructionTypes:[v.ClmmDecreasePosition]});let R=C({},x.address);if(i.closePosition){let I=await Ke.closePositionInstructions({poolInfo:t,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:r});p.addInstruction({endInstructions:I.instructions,endInstructionTypes:I.instructionTypes}),R=C(C({},R),I.address)}return p.addCustomComputeBudget(m),p.versionBuild({txVersion:d,extInfo:{address:R}})}async closePosition({poolInfo:e,poolKeys:t,ownerPosition:n,txVersion:r}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let i=this.createTxBuilder(),s=t!=null?t:await this.getClmmPoolKeys(e.id),a=Ke.closePositionInstructions({poolInfo:e,poolKeys:s,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});return i.addInstruction(a).versionBuild({txVersion:r,extInfo:{address:a.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:r=!0,checkCreateATAOwner:i=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let c=this.createTxBuilder(),u=t.useSOLBalance&&n.mint.address.toString()===$.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(n.mint.address),mint:new ae(n.mint.address),notUseTokenAccount:!!u,skipCloseAccount:!u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new wt(new V(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:u?!1:r,checkCreateATAOwner:i});d&&c.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=Ke.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new ae(n.mint.programId),mint:new ae(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:ne.decimalToX64(n.perSecond)}});return c.addInstruction(y),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:r,associatedOnly:i=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txVersion:c}){for(let m of r)m.endTime<=m.openTime&&this.logAndCreateError("reward time error","rewardInfo",m);let u=this.createTxBuilder(),l={};for(let m of r){let d=n.useSOLBalance&&m.mint.address===$.toString(),p=m.perSecond.mul(m.endTime-m.openTime),{account:y,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(m.mint.programId),mint:new ae(m.mint.address),notUseTokenAccount:!!d,skipCloseAccount:!d,owner:this.scope.ownerPubKey,createInfo:d?{payer:n.feePayer||this.scope.ownerPubKey,amount:new wt(new V(p.toFixed(0)).gte(p)?p.toFixed(0):p.add(1).toFixed(0))}:void 0,associatedOnly:d?!1:i,checkCreateATAOwner:s});f&&u.addInstruction(f),y||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let b=t!=null?t:await this.getClmmPoolKeys(e.id),g=Ke.initRewardInstructions({poolInfo:e,poolKeys:b,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:y},rewardInfo:{programId:new ae(m.mint.programId),mint:new ae(m.mint.address),openTime:m.openTime,endTime:m.endTime,emissionsPerSecondX64:ne.decimalToX64(m.perSecond)}});l=C(C({},l),g.address),u.addInstruction(g)}return u.addCustomComputeBudget(a),u.versionBuild({txVersion:c,extInfo:{address:l}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:r=!0,checkCreateATAOwner:i=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let c=this.createTxBuilder(),u=t.useSOLBalance&&n.mint.equals($),{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new wt(new V(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:u?!1:r,checkCreateATAOwner:i});m&&c.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=Ke.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:ne.decimalToX64(n.perSecond)}});return c.addInstruction(p),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:p.address}})}async setRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:r,associatedOnly:i=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txVersion:c}){let u=this.createTxBuilder(),l={};for(let m of r){m.endTime<=m.openTime&&this.logAndCreateError("reward time error","rewardInfo",m);let d=n.useSOLBalance&&m.mint.address===$.toString(),{account:p,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(m.mint.programId),mint:new ae(m.mint.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,createInfo:d?{payer:n.feePayer||this.scope.ownerPubKey,amount:new wt(new V(m.perSecond.sub(m.endTime-m.openTime).toFixed(0)).gte(m.perSecond.sub(m.endTime-m.openTime))?m.perSecond.sub(m.endTime-m.openTime).toFixed(0):m.perSecond.sub(m.endTime-m.openTime).add(1).toFixed(0))}:void 0,associatedOnly:d?!1:i,checkCreateATAOwner:s});y&&u.addInstruction(y),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=t!=null?t:await this.getClmmPoolKeys(e.id),b=Ke.setRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{mint:new ae(m.mint.address),openTime:m.openTime,endTime:m.endTime,emissionsPerSecondX64:ne.decimalToX64(m.perSecond)}});u.addInstruction(b),l=C(C({},l),b.address)}return u.addCustomComputeBudget(a),u.versionBuild({txVersion:c,extInfo:{address:l}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:r=!0,checkCreateATAOwner:i=!1}){let s=e.rewardDefaultInfos.find(p=>p.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),c=t.useSOLBalance&&n.equals($),{account:u,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(s.mint.programId),mint:n,notUseTokenAccount:c,owner:this.scope.ownerPubKey,skipCloseAccount:!c,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:c?!1:r,checkCreateATAOwner:i});l&&a.addInstruction(l),u||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),d=Ke.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:u},rewardMint:n});return a.addInstruction(d),a.build({address:d.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:r=!0,checkCreateATAOwner:i=!1}){let s=this.createTxBuilder(),a={};for(let c of n){let u=e.rewardDefaultInfos.find(f=>f.mint.address===c.toString());if(!u){this.logAndCreateError("reward mint error","not found reward mint",c);continue}let l=t.useSOLBalance&&c.equals($),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(u.mint.programId),mint:c,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:r,checkCreateATAOwner:i});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&s.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),y=Ke.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:c});s.addInstruction(y),a=C(C({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,poolKeys:t,inputMint:n,amountIn:r,amountOutMin:i,priceLimit:s,observationId:a,ownerInfo:c,remainingAccounts:u,associatedOnly:l=!0,checkCreateATAOwner:m=!1,txVersion:d}){let p=this.createTxBuilder(),y=n.toString()===e.mintA.address,f=c.useSOLBalance&&e.mintA.address===$.toBase58(),b=c.useSOLBalance&&e.mintB.address===$.toBase58(),g;!s||s.equals(new V(0))?g=y?_t.add(new wt(1)):Vt.sub(new wt(1)):g=te.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let h;if(!h){let{account:B,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ae(e.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,skipCloseAccount:!f,createInfo:f||!y?{payer:c.feePayer||this.scope.ownerPubKey,amount:f?r:0}:void 0,associatedOnly:f?!1:l,checkCreateATAOwner:m});h=B,T&&p.addInstruction(T)}let P;if(!P){let{account:B,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ae(e.mintB.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,skipCloseAccount:!b,createInfo:b||y?{payer:c.feePayer||this.scope.ownerPubKey,amount:y?0:r}:void 0,associatedOnly:b?!1:l,checkCreateATAOwner:m});P=B,T&&p.addInstruction(T)}(!h||!P)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let k=t!=null?t:await this.getClmmPoolKeys(e.id);return p.addInstruction(Ke.makeSwapBaseInInstructions({poolInfo:e,poolKeys:k,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:h,tokenAccountB:P},inputMint:new ae(n),amountIn:r,amountOutMin:i,sqrtPriceLimitX64:g,remainingAccounts:u})),p.versionBuild({txVersion:d})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:r=!0,checkCreateATAOwner:i=!1,programId:s,txVersion:a,computeBudgetConfig:c}){let u={};for(let m of this.scope.account.tokenAccountRawInfos)r?ge(this.scope.ownerPubKey,m.accountInfo.mint,s).publicKey.equals(m.pubkey)&&(u[m.accountInfo.mint.toString()]=m.pubkey):u[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(P=>!P.liquidity.isZero()||P.rewardInfos.find(k=>!k.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===$.toString(),y=n.useSOLBalance&&d.mintB.address===$.toString(),f=u[d.mintA.address];if(!f){let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new ae(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:r,checkCreateATAOwner:i});f=P,k&&l.addInstruction(k)}let b=u[d.mintB.address];if(!b){let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new ae(d.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:r,checkCreateATAOwner:i});b=P,k&&l.addInstruction(k)}u[d.mintA.address]=f,u[d.mintB.address]=b;let g=[];for(let P of d.rewardDefaultInfos){let k=n.useSOLBalance&&P.mint.address===$.toString(),B=u[P.mint.address];if(!B){let{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(P.mint.programId),mint:new ae(P.mint.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,skipCloseAccount:!k,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:k?!1:r});B=T,S&&l.addInstruction(S)}u[P.mint.address]=B,g.push(B)}let h=await this.getClmmPoolKeys(d.id);for(let P of t[m.id]){let k=Ke.decreaseLiquidityInstructions({poolInfo:d,poolKeys:h,ownerPosition:P,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new wt(0),amountMinA:new wt(0),amountMinB:new wt(0)});l.addInstruction(k)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:c}):l.sizeCheckBuild({computeBudgetConfig:c})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(So(e).publicKey);return t?Zu.decode(t.data).whitelistMints.filter(r=>!r.equals(ae.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new wt(1))).map(s=>gt(new ae(e),s.accountInfo.mint).publicKey),r=await this.scope.connection.getMultipleAccountsInfo(n),i=[];return r.forEach(s=>{if(!s)return;let a=vr.decode(s.data);i.push(a)}),i}async getRpcClmmPoolInfo({poolId:e}){return(await this.getRpcClmmPoolInfos({poolIds:[e]}))[String(e)]}async getRpcClmmPoolInfos({poolIds:e,config:t}){let n=await De(this.scope.connection,e.map(i=>({pubkey:new ae(i)})),t),r={};for(let i=0;i<e.length;i++){let s=n[i];if(s===null||!s.accountInfo)throw Error("fetch pool info error: "+String(e[i]));let a=In.decode(s.accountInfo.data),c=te.sqrtPriceX64ToPrice(a.sqrtPriceX64,a.mintDecimalsA,a.mintDecimalsB).toNumber();r[String(e[i])]=F(C({},a),{currentPrice:c,programId:s.accountInfo.owner})}return r}async getComputeClmmPoolInfos({clmmPoolsRpcInfo:e,mintInfos:t}){let n=new Set(Object.keys(e).map(c=>e[c].ammConfig.toBase58())),r=await De(this.scope.connection,Array.from(n).map(c=>({pubkey:new ae(c)}))),i={};r.forEach(c=>{!c.accountInfo||(i[c.pubkey.toBase58()]=Hu.decode(c.accountInfo.data))});let s=await Le.fetchComputeMultipleClmmInfo({connection:this.scope.connection,rpcDataMap:e,poolList:Object.keys(e).map(c=>{var m,d,p,y;let[u,l]=[e[c].mintA.toBase58(),e[c].mintB.toBase58()];return{id:c,programId:e[c].programId.toBase58(),mintA:it({address:u,decimals:e[c].mintDecimalsA,programId:t[u].programId.toBase58()||uc.toBase58(),extensions:{feeConfig:(m=t[u])!=null&&m.feeConfig?cn((d=t[u])==null?void 0:d.feeConfig):void 0}}),mintB:it({address:l,decimals:e[c].mintDecimalsB,programId:t[l].programId.toBase58()||uc.toBase58(),extensions:{feeConfig:(p=t[l])!=null&&p.feeConfig?cn((y=t[l])==null?void 0:y.feeConfig):void 0}}),price:e[c].currentPrice,config:F(C({},i[e[c].ammConfig.toBase58()]),{id:e[c].ammConfig.toBase58(),fundFeeRate:0,description:"",defaultRange:0,defaultRangePoint:[]})}})}),a=await Le.fetchMultiplePoolTickArrays({connection:this.scope.connection,poolKeys:Object.values(s)});return{computeClmmPoolInfo:s,computePoolTickData:a}}async getPoolInfoFromRpc(e){var l;let t=await this.getRpcClmmPoolInfo({poolId:e}),n=new Set([t.mintA.toBase58(),t.mintB.toBase58()]),r=await vn({connection:this.scope.connection,mints:Array.from(n).map(m=>new ae(m))}),{computeClmmPoolInfo:i,computePoolTickData:s}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:{[e]:t},mintInfos:r}),a=await De(this.scope.connection,[{pubkey:t.vaultA},{pubkey:t.vaultB}]),c=Qu(i[e]);if(!a[0].accountInfo||!a[1].accountInfo)throw new Error("pool vault data not found");c.mintAmountA=Number(ac.decode(a[0].accountInfo.data).amount.toString()),c.mintAmountB=Number(ac.decode((l=a[1].accountInfo)==null?void 0:l.data).amount.toString());let u=F(C({},i[e]),{id:e,programId:t.programId.toBase58(),openTime:t.startTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},rewardInfos:[],config:c.config});return{poolInfo:c,poolKeys:u,computePoolInfo:i[e],tickData:s}}};import{PublicKey as Q}from"@solana/web3.js";import{NATIVE_MINT as jr,TOKEN_PROGRAM_ID as Yt,AccountLayout as sf}from"@solana/spl-token";import lc from"bn.js";var Ls=new lc(1e6);function Xp(o,e,t){return o.mul(e).add(t).sub(new lc(1)).div(t)}function cc(o,e,t){return o.mul(e).div(t)}var Wr=class{static tradingFee(e,t){return Xp(e,t,Ls)}static protocolFee(e,t){return cc(e,t,Ls)}static fundFee(e,t){return cc(e,t,Ls)}};import _o from"bn.js";function qr(o,e){if(e.isZero())throw Error("divisor is zero");return o.mod(e)}function zp(o,e){if(e.isZero())throw Error("rhs is zero");let t=o.div(e);if(t.isZero())throw Error("quotient is zero");let n=qr(o,e);return n.gt(Yn)&&(t=t.add(new _o(1)),e=o.div(t),n=qr(o,t),n.gt(Yn)&&(e=e.add(new _o(1)))),[t,e]}var Yn=new _o(0),Ur=class{static swapWithoutFees(e,t,n){let r=t.mul(n),i=t.add(e),[s,a]=zp(r,i),c=a.sub(t),u=n.sub(s);if(u.isZero())throw Error("destinationAmountSwapped is zero");return{sourceAmountSwapped:c,destinationAmountSwapped:u}}static lpTokensToTradingTokens(e,t,n,r,i){let s=e.mul(n).div(t),a=e.mul(r).div(t);if(i===0)return{tokenAmount0:s,tokenAmount1:a};if(i===1)return qr(e.mul(n),t).gt(Yn)&&s.gt(Yn)&&(s=s.add(new _o(1))),qr(e.mul(r),t).gt(Yn)&&a.gt(Yn)&&(a=a.add(new _o(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var mc=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(mc||{}),Gr=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swap(e,t,n,r){let i=Wr.tradingFee(e,r),s=e.sub(i),{sourceAmountSwapped:a,destinationAmountSwapped:c}=Ur.swapWithoutFees(s,t,n),u=a.add(i);return{newSwapSourceAmount:t.add(u),newSwapDestinationAmount:n.sub(c),sourceAmountSwapped:u,destinationAmountSwapped:c,tradeFee:i}}};var Yp=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Qp=Buffer.from("amm_config","utf8"),jp=Buffer.from("pool","utf8"),Hp=Buffer.from("pool_lp_mint","utf8"),Zp=Buffer.from("pool_vault","utf8"),$p=Buffer.from("observation","utf8");function Qn(o){return ue([Yp],o)}function Jp(o,e){return ue([Qp,nf(e)],o)}function ef(o,e,t,n){return ue([jp,e.toBuffer(),t.toBuffer(),n.toBuffer()],o)}function tf(o,e){return ue([Hp,e.toBuffer()],o)}function dc(o,e,t){return ue([Zp,e.toBuffer(),t.toBuffer()],o)}function Xr(o,e){return ue([$p,e.toBuffer()],o)}function nf(o){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,o,!1),new Uint8Array(e)}function pc({programId:o,mintA:e,mintB:t}){let n=Jp(o,0).publicKey,r=Qn(o).publicKey,i=ef(o,n,e,t).publicKey,s=tf(o,i).publicKey,a=dc(o,i,e).publicKey,c=dc(o,i,t).publicKey,u=Xr(o,i).publicKey;return{poolId:i,configId:n,authority:r,lpMint:s,vaultA:a,vaultB:c,observationId:u}}import{TransactionInstruction as Vo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Os,TOKEN_2022_PROGRAM_ID as fc,ASSOCIATED_TOKEN_PROGRAM_ID as of}from"@solana/spl-token";var rf=ce("Raydium_cpmm"),vo={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 yc(o,e,t,n,r,i,s,a,c,u,l,m,d,p,y,f,b,g,h,P){let k=M([w("amountMaxA"),w("amountMaxB"),w("openTime")]),B=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:Os,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:of,isSigner:!1,isWritable:!1},{pubkey:or,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1}],T=Buffer.alloc(k.span);return k.encode({amountMaxA:g,amountMaxB:h,openTime:P},T),new Vo({keys:B,programId:o,data:Buffer.from([...vo.initialize,...T])})}function bc(o,e,t,n,r,i,s,a,c,u,l,m,d,p,y){let f=M([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:Os,isSigner:!1,isWritable:!1},{pubkey:fc,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],g=Buffer.alloc(f.span);return rf.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:y},g),new Vo({keys:b,programId:o,data:Buffer.from([...vo.deposit,...g])})}function gc(o,e,t,n,r,i,s,a,c,u,l,m,d,p,y){let f=M([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:Os,isSigner:!1,isWritable:!1},{pubkey:fc,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:tr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:y},g),new Vo({keys:b,programId:o,data:Buffer.from([...vo.withdraw,...g])})}function zr(o,e,t,n,r,i,s,a,c,u,l,m,d,p,y,f){let b=M([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],h=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},h),new Vo({keys:g,programId:o,data:Buffer.from([...vo.swapBaseInput,...h])})}function Yr(o,e,t,n,r,i,s,a,c,u,l,m,d,p,y,f){let b=M([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],h=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},h),new Vo({keys:g,programId:o,data:Buffer.from([...vo.swapBaseOutput,...h])})}import Xe from"bn.js";var Ac=M([be(8),E("bump"),je("disableCreatePool"),Nt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),K("protocolOwner"),K("fundOwner"),X(w(),16)]),Qr=M([be(8),K("configId"),K("poolCreator"),K("vaultA"),K("vaultB"),K("mintLp"),K("mintA"),K("mintB"),K("mintProgramA"),K("mintProgramB"),K("observationId"),E("bump"),E("status"),E("lpDecimals"),E("mintDecimalA"),E("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),X(w(),32)]);var Fo=class extends Se{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){return(await this.getRpcPoolInfos([e],t))[e]}async getRpcPoolInfos(e,t){let n=await De(this.scope.connection,e.map(m=>({pubkey:new Q(m)}))),r={},i=new Set,s=[];for(let m=0;m<e.length;m++){let d=n[m];if(d.accountInfo===null)throw Error("fetch pool info error: "+String(e[m]));let p=Qr.decode(d.accountInfo.data);r[String(e[m])]=F(C({},p),{programId:d.accountInfo.owner}),i.add(String(p.configId)),s.push(p.vaultA,p.vaultB)}let a={};if(t){let m=[...i],d=await De(this.scope.connection,m.map(p=>({pubkey:new Q(p)})));for(let p=0;p<m.length;p++){let y=d[p].accountInfo;if(y===null)throw Error("fetch pool config error: "+m[p]);a[m[p]]=Ac.decode(y.data)}}let c={},u=await De(this.scope.connection,s.map(m=>({pubkey:new Q(m)})));for(let m=0;m<s.length;m++){let d=u[m].accountInfo;if(d===null)throw Error("fetch vault info error: "+s[m]);c[String(s[m])]=new Xe(sf.decode(d.data).amount.toString())}let l={};for(let[m,d]of Object.entries(r)){let p=c[d.vaultA.toString()].sub(d.protocolFeesMintA).sub(d.fundFeesMintA),y=c[d.vaultB.toString()].sub(d.protocolFeesMintB).sub(d.fundFeesMintB);l[m]=F(C({},d),{baseReserve:p,quoteReserve:y,vaultAAmount:c[d.vaultA.toString()],vaultBAmount:c[d.vaultB.toString()],configInfo:a[d.configId.toString()],poolPrice:new V(y.toString()).div(new V(10).pow(d.mintDecimalB)).div(new V(p.toString()).div(new V(10).pow(d.mintDecimalA)))})}return l}toComputePoolInfos({pools:e,mintInfos:t}){return Object.keys(e).reduce((n,r)=>{var c,u,l,m;let i=e[r],[s,a]=[i.mintA.toBase58(),i.mintB.toBase58()];return F(C({},n),{[r]:F(C({},i),{id:new Q(r),configInfo:i.configInfo,version:7,authority:Qn(i.programId).publicKey,mintA:it({address:s,decimals:i.mintDecimalA,programId:i.mintProgramA.toBase58(),extensions:{feeConfig:(c=t[s])!=null&&c.feeConfig?cn((u=t[s])==null?void 0:u.feeConfig):void 0}}),mintB:it({address:a,decimals:i.mintDecimalB,programId:i.mintProgramB.toBase58(),extensions:{feeConfig:(l=t[a])!=null&&l.feeConfig?cn((m=t[a])==null?void 0:m.feeConfig):void 0}})})})},{})}async getPoolInfoFromRpc(e){let t=await this.getRpcPoolInfo(e,!0),n=await vn({connection:this.scope.connection,mints:[t.mintA,t.mintB]}),r=it({address:t.mintA.toBase58(),decimals:t.mintDecimalA,programId:t.mintProgramA.toBase58(),extensions:{feeConfig:n[t.mintA.toBase58()].feeConfig?cn(n[t.mintA.toBase58()].feeConfig):void 0}}),i=it({address:t.mintB.toBase58(),decimals:t.mintDecimalB,programId:t.mintProgramB.toBase58(),extensions:{feeConfig:n[t.mintB.toBase58()].feeConfig?cn(n[t.mintB.toBase58()].feeConfig):void 0}}),s=it({address:t.mintLp.toBase58(),decimals:t.lpDecimals,programId:Yt.toBase58()}),a={id:t.configId.toBase58(),index:t.configInfo.index,protocolFeeRate:t.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:t.configInfo.tradeFeeRate.toNumber(),fundFeeRate:t.configInfo.fundFeeRate.toNumber(),createPoolFee:t.configInfo.createPoolFee.toString()},c={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};return{poolInfo:{programId:t.programId.toBase58(),id:e,type:"Standard",lpMint:s,lpPrice:0,lpAmount:t.lpAmount.toNumber(),config:a,mintA:r,mintB:i,rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:t.poolPrice.toNumber(),mintAmountA:new V(t.vaultAAmount.toString()).div(10**r.decimals).toNumber(),mintAmountB:new V(t.vaultBAmount.toString()).div(10**i.decimals).toNumber(),feeRate:t.configInfo.tradeFeeRate.toNumber(),openTime:t.openTime.toString(),tvl:0,day:c,week:c,month:c,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0},poolKeys:{programId:t.programId.toBase58(),id:e,mintA:r,mintB:i,openTime:t.openTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},authority:Qn(t.programId).publicKey.toBase58(),mintLp:s,config:a},rpcData:t}}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:r,associatedOnly:i=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:c}=m,u=xe(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var q,D,J;let d=r.feePayer||((q=this.scope.owner)==null?void 0:q.publicKey),p=new Xe(new Q(u.mintA.address).toBuffer()).lte(new Xe(new Q(u.mintB.address).toBuffer())),[y,f]=p?[u.mintA,u.mintB]:[u.mintB,u.mintA],[b,g]=p?[u.mintAAmount,u.mintBAmount]:[u.mintBAmount,u.mintAAmount],h=r.useSOLBalance&&y.address===jr.toBase58(),P=r.useSOLBalance&&f.address===jr.toBase58(),[k,B]=[new Q(y.address),new Q(f.address)],T=this.createTxBuilder(),{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:k,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:h?{payer:d,amount:b}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:i,checkCreateATAOwner:s});T.addInstruction(x||{});let{account:R,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({mint:new Q(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:P?{payer:d,amount:g}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:i,checkCreateATAOwner:s});if(T.addInstruction(I||{}),S===void 0||R===void 0)throw Error("you don't has some token account");let N=pc({programId:e,mintA:k,mintB:B});return T.addInstruction({instructions:[yc(e,this.scope.ownerPubKey,N.configId,N.authority,N.poolId,k,B,N.lpMint,S,R,ge(this.scope.ownerPubKey,N.lpMint).publicKey,N.vaultA,N.vaultB,t,new Q((D=y.programId)!=null?D:Yt),new Q((J=f.programId)!=null?J:Yt),N.observationId,b,g,n)],instructionTypes:[v.CpmmCreatePool]}),T.addCustomComputeBudget(c),T.versionBuild({txVersion:a,extInfo:{address:F(C({},N),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,poolKeys:n,inputAmount:r,baseIn:i,slippage:s,computeResult:a,computeBudgetConfig:c,config:u,txVersion:l}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),r.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:r.toString()});let{account:m}=this.scope,{bypassAssociatedCheck:d,checkCreateATAOwner:p}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),y=a?void 0:await this.getRpcPoolInfo(t.id),{liquidity:f,inputAmountFee:b,anotherAmount:g}=a||this.computePairAmount({poolInfo:F(C({},t),{lpAmount:new V(y.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),baseReserve:y.baseReserve,quoteReserve:y.quoteReserve,slippage:new Fe(0),baseIn:i,epochInfo:await this.scope.fetchEpochInfo(),amount:new V(r.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),h=g.amount,P=t.mintA.address===jr.toString(),k=t.mintB.address===jr.toString(),B=this.createTxBuilder(),[T,S]=[new Q(t.mintA.address),new Q(t.mintB.address)],{account:x,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Q(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||(i?r:h).isZero()?{payer:this.scope.ownerPubKey,amount:i?r:h}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!1,checkCreateATAOwner:p});B.addInstruction(R||{});let{account:I,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Q(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:k||(i?h:r).isZero()?{payer:this.scope.ownerPubKey,amount:i?h:r}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!1,checkCreateATAOwner:p});B.addInstruction(N||{}),!x&&!I&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",m.tokenAccounts);let q=await m.getCreatedTokenAccount({mint:new Q(t.lpMint.address)}),ot=await m.handleTokenAccount({side:"out",amount:0,mint:new Q(t.lpMint.address),tokenAccount:q,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:D}=ot,J=xe(ot,["tokenAccount"]);B.addInstruction(J);let G=n!=null?n:await this.getCpmmPoolKeys(t.id),W=new Fe(new Xe(1)).sub(s);return B.addInstruction({instructions:[bc(new Q(t.programId),this.scope.ownerPubKey,new Q(G.authority),new Q(t.id),D,x,I,new Q(G.vault.A),new Q(G.vault.B),T,S,new Q(t.lpMint.address),a?a==null?void 0:a.liquidity:W.mul(f).quotient,i?b.amount:h,i?h:b.amount)],instructionTypes:[v.CpmmAddLiquidity],lookupTableAddress:G.lookupTableAccount?[G.lookupTableAccount]:[]}),B.addCustomComputeBudget(c),B.versionBuild({txVersion:l})}async withdrawLiquidity(e){var D,J;let{poolInfo:t,poolKeys:n,lpAmount:r,slippage:i,computeBudgetConfig:s,txVersion:a}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let c=new Fe(new Xe(1)).sub(i),u=await this.getRpcPoolInfo(t.id),[l,m]=[c.mul(r.mul(u.baseReserve).div(u.lpAmount)).quotient,c.mul(r.mul(u.quoteReserve).div(u.lpAmount)).quotient],d=await this.scope.fetchEpochInfo(),[p,y]=[he(l,t.mintA.extensions.feeConfig,d,!0),he(m,t.mintB.extensions.feeConfig,d,!0)],{account:f}=this.scope,b=this.createTxBuilder(),[g,h]=[new Q(t.mintA.address),new Q(t.mintB.address)],P=g.equals($),k=h.equals($),B,T,{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Q(t.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!P,associatedOnly:!P,checkCreateATAOwner:!1});B=S,x&&b.addInstruction(x);let{account:R,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Q(t.mintB.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!k,associatedOnly:!k,checkCreateATAOwner:!1});T=R,I&&b.addInstruction(I),(!B||!T)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",f.tokenAccounts);let N=await f.getCreatedTokenAccount({mint:new Q(t.lpMint.address)});N||this.logAndCreateError("cannot found lp token account","tokenAccounts",f.tokenAccounts);let q=n!=null?n:await this.getCpmmPoolKeys(t.id);return b.addInstruction({instructions:[gc(new Q(t.programId),this.scope.ownerPubKey,new Q(q.authority),new Q(t.id),N,B,T,new Q(q.vault.A),new Q(q.vault.B),g,h,new Q(t.lpMint.address),r,l.sub((D=p.fee)!=null?D:new Xe(0)),m.sub((J=y.fee)!=null?J:new Xe(0)))],instructionTypes:[v.CpmmWithdrawLiquidity],lookupTableAddress:q.lookupTableAccount?[q.lookupTableAccount]:[]}),b.addCustomComputeBudget(s),b.versionBuild({txVersion:a})}async swap(e){var S,x,R,I,N,q;let{poolInfo:t,poolKeys:n,baseIn:r,swapResult:i,slippage:s=0,config:a,computeBudgetConfig:c,txVersion:u}=e,{bypassAssociatedCheck:l,checkCreateATAOwner:m,associatedOnly:d}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1,associatedOnly:!0},a),p=this.createTxBuilder(),[y,f]=[new Q(t.mintA.address),new Q(t.mintB.address)];i.destinationAmountSwapped=i.destinationAmountSwapped.mul(new Xe((1-s)*1e4)).div(new Xe(1e4));let b=t.mintA.address===$.toBase58(),g=t.mintB.address===$.toBase58(),{account:h,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({mint:y,tokenProgram:new Q((S=t.mintA.programId)!=null?S:Yt),owner:this.scope.ownerPubKey,createInfo:b||!r?{payer:this.scope.ownerPubKey,amount:r?i.sourceAmountSwapped:0}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:d,checkCreateATAOwner:m});P&&p.addInstruction(P);let{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:f,tokenProgram:new Q((x=t.mintB.programId)!=null?x:Yt),owner:this.scope.ownerPubKey,createInfo:g||r?{payer:this.scope.ownerPubKey,amount:r?0:i.sourceAmountSwapped}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:d,checkCreateATAOwner:m});B&&p.addInstruction(B),!h&&!k&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=n!=null?n:await this.getCpmmPoolKeys(t.id);return p.addInstruction({instructions:[r?zr(new Q(t.programId),this.scope.ownerPubKey,new Q(T.authority),new Q(T.config.id),new Q(t.id),h,k,new Q(T.vault.A),new Q(T.vault.B),new Q((R=t.mintA.programId)!=null?R:Yt),new Q((I=t.mintB.programId)!=null?I:Yt),y,f,Xr(new Q(t.programId),new Q(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):Yr(new Q(t.programId),this.scope.ownerPubKey,new Q(T.authority),new Q(T.config.id),new Q(t.id),k,h,new Q(T.vault.B),new Q(T.vault.A),new Q((N=t.mintB.programId)!=null?N:Yt),new Q((q=t.mintA.programId)!=null?q:Yt),f,y,Xr(new Q(t.programId),new Q(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[r?v.CpmmSwapBaseIn:v.CpmmSwapBaseOut]}),p.addCustomComputeBudget(c),p.versionBuild({txVersion:u})}computeSwapAmount({pool:e,amountIn:t,outputMint:n,slippage:r}){let i=n.toString()===e.mintB.address,s=Gr.swap(t,i?e.baseReserve:e.quoteReserve,i?e.quoteReserve:e.baseReserve,e.configInfo.tradeFeeRate),a=new V(s.destinationAmountSwapped.toString()).div(s.sourceAmountSwapped.toString()),c=s.destinationAmountSwapped.mul(new Xe((1-r)*1e4)).div(new Xe(1e4));return{allTrade:s.sourceAmountSwapped.eq(t),amountIn:t,amountOut:s.destinationAmountSwapped,minAmountOut:c,executionPrice:a,fee:s.tradeFee,priceImpact:e.poolPrice.sub(a).div(e.poolPrice)}}computePairAmount({poolInfo:e,baseReserve:t,quoteReserve:n,amount:r,slippage:i,epochInfo:s,baseIn:a}){var h,P,k,B,T,S,x,R;let c=1-Number(i.toSignificant())/100,u=new Xe(new V(r).mul(10**e[a?"mintA":"mintB"].decimals).mul(c).toFixed(0)),l=he(u,e[a?"mintA":"mintB"].extensions.feeConfig,s,!1),m=u.sub((h=l.fee)!=null?h:new Xe(0)),d=new Xe(new V(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,V.ROUND_DOWN));this.logDebug("baseReserve:",t.toString(),"quoteReserve:",n.toString()),this.logDebug("tokenIn:",a?e.mintA.symbol:e.mintB.symbol,"amountIn:",u.toString(),"amountInFee:",(k=(P=l.fee)==null?void 0:P.toString())!=null?k:0,"anotherToken:",a?e.mintB.symbol:e.mintA.symbol,"slippage:",`${i.toSignificant()}%`);let p=a?"base":"quote";this.logDebug("input side:",p);let y=m.mul(d).div(p==="base"?t:n),f={amount:Ee,fee:void 0,expirationTime:void 0};if(!m.isZero()){let I=af(y,t,n,d);this.logDebug("lpAmountData:",{amountA:I.amountA.toString(),amountB:I.amountB.toString()}),f=he(I[a?"amountB":"amountA"],e[a?"mintB":"mintA"].extensions.feeConfig,s,!0)}let b=new Fe(new Xe(1)).add(i),g=he(b.mul(f.amount.sub((B=f.fee)!=null?B:new Xe(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,s,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(S=(T=f.fee)==null?void 0:T.toString())!=null?S:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(R=(x=g.fee)==null?void 0:x.toString())!=null?R:0),{inputAmountFee:l,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function af(o,e,t,n){let r=o.mul(e).div(n);!r.isZero()&&!o.mul(e).mod(n).isZero()&&(r=r.add(new Xe(1)));let i=o.mul(t).div(n);return!i.isZero()&&!o.mul(t).mod(n).isZero()&&(i=i.add(new Xe(1))),{amountA:r,amountB:i}}import{PublicKey as Kn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Oe,TOKEN_2022_PROGRAM_ID as vs,createTransferInstruction as Ic}from"@solana/spl-token";import $r from"bn.js";import{TOKEN_PROGRAM_ID as Ns,TOKEN_2022_PROGRAM_ID as uf,ASSOCIATED_TOKEN_PROGRAM_ID as cf}from"@solana/spl-token";import{PublicKey as z,TransactionInstruction as Ms,SystemProgram as _s}from"@solana/web3.js";import Sn from"bn.js";function Xx(o,e,t,n,r,i,s,a,c,u,l,m){let d=M([E("instruction"),w("amountIn"),w("amountOut")]),p=[{pubkey:_s.programId,isSigner:!1,isWritable:!1},{pubkey:Ns,isSigner:!1,isWritable:!1},{pubkey:new z(t.programId),isSigner:!1,isWritable:!1},{pubkey:new z(t.id),isSigner:!1,isWritable:!0},{pubkey:new z(n.id),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=Ie(t);p.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(c)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(c)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=Ie(t);p.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new z("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=Ie(t);p.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let y=Buffer.alloc(d.span);return d.encode({instruction:4,amountIn:u,amountOut:l},y),new Ms({keys:p,programId:o,data:y})}function zx(o,e,t,n,r,i,s,a,c,u){let l=M([E("instruction")]),m=[{pubkey:_s.programId,isSigner:!1,isWritable:!1},{pubkey:Ns,isSigner:!1,isWritable:!1},{pubkey:new z(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new z(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new z(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let p=Ie(n);m.push({pubkey:p.config.id,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(c)?p.vault.A:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(c)?p.vault.B:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},...u.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let p=Ie(n);m.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:new z("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0})}else{let p=Ie(n);m.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},...p.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:p.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:p.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0}])}let d=Buffer.alloc(l.span);return l.encode({instruction:5},d),new Ms({keys:m,programId:o,data:d})}function lf(o,e,t,n,r,i,s,a,c,u,l,m,d,p,y){var T;let f=[],b=[A({pubkey:Ns,isWritable:!1}),A({pubkey:uf,isWritable:!1}),A({pubkey:cf,isWritable:!1}),A({pubkey:_s.programId,isWritable:!1}),A({pubkey:e,isSigner:!0})];b.push(A({pubkey:t})),b.push(A({pubkey:r}));let g=[c,u],h=[l,m],P=[i,s,a];for(let S=0;S<g.length;S++){let x=g[S],R=P[S]===x.mintA.address;if(b.push(A({pubkey:new z(x.programId),isWritable:!1})),S===g.length-1?b.push(A({pubkey:r})):b.push(A({pubkey:n})),b.push(A({pubkey:new z(P[S])})),b.push(A({pubkey:new z(P[S+1])})),x.version===6){let I=h[S];b.push(A({pubkey:new z(I.config.id)})),b.push(A({pubkey:new z(I.id)})),b.push(A({pubkey:new z(R?I.vault.A:I.vault.B)})),b.push(A({pubkey:new z(R?I.vault.B:I.vault.A)})),b.push(A({pubkey:new z(x.observationId)})),b.push(A({pubkey:tr})),b.push(A({pubkey:pt(new z(x.programId),new z(x.id)).publicKey})),f.push(mf(x.sqrtPriceX64.toString(),R));for(let N of(T=y[S])!=null?T:[])b.push(A({pubkey:new z(N)}))}else if(x.version===5){let I=h[S];b.push(A({pubkey:new z(I.id)})),b.push(A({pubkey:new z(I.authority),isWritable:!1})),b.push(A({pubkey:new z(I.marketProgramId)})),b.push(A({pubkey:new z(I.marketAuthority)})),b.push(A({pubkey:va,isWritable:!1})),b.push(A({pubkey:new z(I.openOrders)})),b.push(A({pubkey:new z(I.vault.A)})),b.push(A({pubkey:new z(I.vault.B)})),b.push(A({pubkey:new z(I.id)})),b.push(A({pubkey:new z(I.id)})),b.push(A({pubkey:new z(I.id)})),b.push(A({pubkey:new z(I.id)})),b.push(A({pubkey:new z(I.id)})),b.push(A({pubkey:new z(I.id)})),b.push(A({pubkey:new z(I.marketId)})),b.push(A({pubkey:new z(I.marketBids)})),b.push(A({pubkey:new z(I.marketAsks)})),b.push(A({pubkey:new z(I.marketEventQueue)})),b.push(A({pubkey:new z(I.marketBaseVault)})),b.push(A({pubkey:new z(I.marketQuoteVault)}))}else if(x.version===4){let I=h[S],N=x.status!==1;b.push(A({pubkey:new z(I.id)})),b.push(A({pubkey:new z(I.authority),isWritable:!1})),b.push(A({pubkey:new z(N?I.id:I.marketProgramId)})),b.push(A({pubkey:new z(N?I.id:I.marketAuthority)})),b.push(A({pubkey:new z(N?I.id:I.openOrders)})),b.push(A({pubkey:new z(I.vault.A)})),b.push(A({pubkey:new z(I.vault.B)})),b.push(A({pubkey:new z(N?I.id:I.marketId)})),b.push(A({pubkey:new z(N?I.id:I.marketBids)})),b.push(A({pubkey:new z(N?I.id:I.marketAsks)})),b.push(A({pubkey:new z(N?I.id:I.marketEventQueue)})),b.push(A({pubkey:new z(N?I.id:I.marketBaseVault)})),b.push(A({pubkey:new z(N?I.id:I.marketQuoteVault)}))}else if(x.version===7){let I=h[S];b.push(A({pubkey:new z(I.authority)})),b.push(A({pubkey:new z(I.config.id)})),b.push(A({pubkey:new z(I.id)})),b.push(A({pubkey:new z(R?I.vault.A:I.vault.B)})),b.push(A({pubkey:new z(R?I.vault.B:I.vault.A)})),b.push(A({pubkey:new z(x.observationId)}))}else throw Error("pool type error")}let k=M([E("insId"),w("amountIn"),w("amountOut"),X(j(),f.length,"clmmPriceLimit")]),B=Buffer.alloc(k.span);return k.encode({insId:0,amountIn:d,amountOut:p,clmmPriceLimit:f},B),new Ms({keys:b,programId:o,data:B})}function mf(o,e){if(o)if(e){let t=new Sn(o).div(new Sn(25));return t.gt(Mr)?t:Mr}else{let t=new Sn(o).mul(new Sn(25));return t.lt(_r)?t:_r}else return e?Mr:_r}function wc({routeProgram:o,ownerInfo:e,inputMint:t,swapInfo:n}){var r,i,s,a,c,u,l;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let m=n.poolKey[0],d=Ie(m),p=t.equals(d.mintA.address)?_t.add(ft):Vt.sub(ft);return Ke.makeSwapBaseInInstructions({poolInfo:m,poolKeys:m,observationId:n.poolInfo[0].observationId,ownerInfo:{wallet:e.wallet,tokenAccountA:d.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:d.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((i=(r=n.minAmountOut.fee)==null?void 0:r.raw)!=null?i:new Sn(0)),sqrtPriceLimitX64:p,remainingAccounts:(s=n.remainingAccounts[0])!=null?s:[]})}else if(n.poolInfo[0].version===7){let m=n.poolInfo[0],d=t.toString()===n.poolInfo[0].mintA.address;return{signers:[],instructions:[d?zr(m.programId,e.wallet,m.authority,m.configId,m.id,e.sourceToken,e.destinationToken,m.vaultA,m.vaultB,m.mintProgramA,m.mintProgramA,new z(m.mintA.address),new z(m.mintB.address),m.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw):Yr(m.programId,e.wallet,m.authority,m.configId,m.id,e.destinationToken,e.sourceToken,m.vaultB,m.vaultA,m.mintProgramB,m.mintProgramA,new z(m.mintB.address),new z(m.mintA.address),m.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw)],lookupTableAddress:[],instructionTypes:[d?v.CpmmSwapBaseIn:v.CpmmSwapBaseOut],address:{}}}else{let m=n.poolKey[0];return{signers:[],instructions:[Rr({poolKeys:m,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((c=(a=n.minAmountOut.fee)==null?void 0:a.raw)!=null?c:new Sn(0)),fixedSide:"in"})],lookupTableAddress:m.lookupTableAccount?[m.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?v.AmmV5SwapBaseIn:v.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let m=n.poolInfo[0],d=n.poolInfo[1],p=n.poolKey[0],y=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[lf(o,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),n.outputMint.toString(),m,d,p,y,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((l=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?l:new Sn(0)),n.remainingAccounts)],instructionTypes:[v.RouteSwap],lookupTableAddress:[p.lookupTableAccount,y.lookupTableAccount].filter(f=>f!==void 0),address:{}}}else throw Error("route type error")}var Pc={[yr.toBase58()]:3},hc={3:yr};var Vs=M([be(5),be(8),K("ownAddress"),w("vaultSignerNonce"),K("baseMint"),K("quoteMint"),K("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),K("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),K("requestQueue"),K("eventQueue"),K("bids"),K("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),be(7)]),kc={3:Vs};import{PublicKey as Tc}from"@solana/web3.js";var Hr=ce("Serum"),Zr=class{static getProgramId(e){let t=hc[e];return t||Hr.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=Pc[t];return n||Hr.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=kc[e];return t||Hr.logWithError(!!t,"invalid version","version",e),t}static getLayouts(e){return{state:this.getStateLayout(e)}}static getAssociatedAuthority({programId:e,marketId:t}){let n=[t.toBuffer()],r=0,i;for(;r<100;){try{let s=n.concat(Buffer.from([r]),Buffer.alloc(7));i=Tc.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;r++;continue}return{publicKey:i,nonce:r}}return Hr.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:Tc.default,nonce:r}}};var Qt=new $r(0),Eo=class extends Se{constructor(e){super(e)}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals($));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n,txVersion:r=1}=e,i=await this.getWSolAccounts(),s=this.createTxBuilder();s.addCustomComputeBudget(e.computeBudgetConfig);let a=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});s.addInstruction(a);let c=Y(t);for(let u=0;u<i.length;u++)c.gte(i[u].amount)?(s.addInstruction({instructions:[Mt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),c.sub(i[u].amount)):(s.addInstruction({instructions:[Mt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),mo({destination:a.addresses.newAccount,source:i[u].publicKey,amount:c,owner:this.scope.ownerPubKey,tokenProgram:n}));return s.versionBuild({txVersion:r})}async wrapWSol(e,t,n){let r=await this.getWSolAccounts(),i=this.createTxBuilder(),s=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return i.addInstruction(s),r.length&&i.addInstruction({instructions:[mo({destination:r[0].publicKey,source:s.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Mt({tokenAccount:s.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),i.versionBuild({txVersion:n!=null?n:1})}async swap({swapInfo:e,swapPoolKeys:t,ownerInfo:n,computeBudgetConfig:r,routeProgram:i,txVersion:s}){let a=this.createTxBuilder(),c=e.amountIn,u=e.amountOut,l=c.amount.token.mint.equals($),m=u.amount.token.mint.equals($),d=c.amount.token.mint,p=u.amount.token.mint,{account:y,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:c.amount.token.isToken2022?vs:Oe,mint:d,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:l?{payer:this.scope.ownerPubKey,amount:c.amount.raw}:void 0,associatedOnly:l?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});if(f&&a.addInstruction(f),y===void 0)throw Error("input account check error");let b=this.scope.account.getAssociatedTokenAccount(p,u.amount.token.isToken2022?vs:Oe);m&&a.addInstruction({endInstructions:[Mt({owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,tokenAccount:b,programId:Oe})],endInstructionTypes:[v.CloseAccount]});let g;if(e.routeType==="route"){let k=e.middleToken;g=this.scope.account.getAssociatedTokenAccount(k.mint,k.isToken2022?vs:Oe)}let h=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),P=wc({routeProgram:i,inputMint:d,swapInfo:F(C({},e),{poolInfo:[...e.poolInfoList],poolKey:h,outputMint:p}),ownerInfo:{wallet:this.scope.ownerPubKey,sourceToken:y,routeToken:g,destinationToken:b}});if(e.feeConfig!==void 0){let k=this.createTxBuilder();k.addInstruction({instructions:[Ic(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[v.TransferAmount]}),k.addInstruction(P);let{transactions:B}=s===0?await k.sizeCheckBuildV0():await k.sizeCheckBuild();B.length<2&&a.addInstruction({instructions:[Ic(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[v.TransferAmount]})}return a.addInstruction(P),s===0?a.sizeCheckBuildV0({computeBudgetConfig:r,address:P.address}):a.sizeCheckBuild({computeBudgetConfig:r,address:P.address})}async fetchRoutePoolBasicInfo(e){let{amm:t=Ci,clmm:n=Ri,cpmm:r=Li}=e||{},i=await this.scope.connection.getProgramAccounts(t,{dataSlice:{offset:Bo.offsetOf("baseMint"),length:64}}),s=M([K("baseMint"),K("quoteMint")]),a=i.map(p=>({id:p.pubkey,version:4,mintA:s.decode(p.account.data).baseMint,mintB:s.decode(p.account.data).quoteMint})),c=M([K("mintA"),K("mintB")]),l=(await this.scope.connection.getProgramAccounts(n,{filters:[{dataSize:In.span}],dataSlice:{offset:In.offsetOf("mintA"),length:64}})).map(p=>{let y=c.decode(p.account.data);return{id:p.pubkey,version:6,mintA:y.mintA,mintB:y.mintB}}),d=(await this.scope.connection.getProgramAccounts(r,{dataSlice:{offset:Qr.offsetOf("mintA"),length:64}})).map(p=>{let y=c.decode(p.account.data);return{id:p.pubkey,version:7,mintA:y.mintA,mintB:y.mintB}});return{clmmPools:l,ammPools:a,cpmmPools:d}}getAllRoute({inputMint:e,outputMint:t,clmmPools:n,ammPools:r,cpmmPools:i}){e=e.toString()===Kn.default.toString()?$:e,t=t.toString()===Kn.default.toString()?$:t;let s={},a={},c={},u=[],l={};for(let d of n!=null?n:[]){if((d.mintA.equals(e)&&d.mintB.equals(t)||d.mintA.equals(t)&&d.mintB.equals(e))&&(u.push(d),a[d.id.toString()]=d),d.mintA.equals(e)){let p=d.mintB.toString();l[p]===void 0&&(l[p]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[p].in.push(d)}if(d.mintB.equals(e)){let p=d.mintA.toString();l[p]===void 0&&(l[p]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[p].in.push(d)}if(d.mintA.equals(t)){let p=d.mintB.toString();l[p]===void 0&&(l[p]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[p].out.push(d)}if(d.mintB.equals(t)){let p=d.mintA.toString();l[p]===void 0&&(l[p]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[p].out.push(d)}}let m=[];for(let d of r)(d.mintA.equals(e)&&d.mintB.equals(t)||d.mintA.equals(t)&&d.mintB.equals(e))&&(u.push(d),s[d.id.toBase58()]=d,m.push(d)),d.mintA.equals(e)&&(l[d.mintB.toBase58()]===void 0&&(l[d.mintB.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[d.mintB.toBase58()].in.push(d)),d.mintB.equals(e)&&(l[d.mintA.toBase58()]===void 0&&(l[d.mintA.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[d.mintA.toBase58()].in.push(d)),d.mintA.equals(t)&&(l[d.mintB.toBase58()]===void 0&&(l[d.mintB.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[d.mintB.toBase58()].out.push(d)),d.mintB.equals(t)&&(l[d.mintA.toBase58()]===void 0&&(l[d.mintA.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[d.mintA.toBase58()].out.push(d));for(let d of i)(d.mintA.equals(e)&&d.mintB.equals(t)||d.mintA.equals(t)&&d.mintB.equals(e))&&(u.push(d),c[d.id.toBase58()]=d),d.mintA.equals(e)&&(l[d.mintB.toBase58()]===void 0&&(l[d.mintB.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[d.mintB.toBase58()].in.push(d)),d.mintB.equals(e)&&(l[d.mintA.toBase58()]===void 0&&(l[d.mintA.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[d.mintA.toBase58()].in.push(d)),d.mintA.equals(t)&&(l[d.mintB.toBase58()]===void 0&&(l[d.mintB.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[d.mintB.toBase58()].out.push(d)),d.mintB.equals(t)&&(l[d.mintA.toBase58()]===void 0&&(l[d.mintA.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[d.mintA.toBase58()].out.push(d));for(let d of Object.keys(l)){if(l[d].in.length===1&&l[d].out.length===1&&l[d].in[0].id.equals(l[d].out[0].id)){delete l[d];continue}if(l[d].in.length===0||l[d].out.length===0){delete l[d];continue}let p=l[d];for(let y of p.in)for(let f of p.out)y.version===6&&a[y.id.toString()]===void 0?a[y.id.toString()]=y:y.version===7&&i[y.id.toString()]===void 0?c[y.id.toString()]=y:(y.version===4||y.version===5)&&s[y.id.toString()]===void 0&&(s[y.id.toString()]=y),f.version===6&&a[f.id.toString()]===void 0?a[f.id.toString()]=f:f.version===7&&i[f.id.toString()]===void 0?c[f.id.toString()]=f:(f.version===4||f.version===5)&&s[f.id.toString()]===void 0&&(s[f.id.toString()]=f)}return{directPath:u,addLiquidityPools:m,routePathDict:l,needSimulate:Object.values(s),needTickArray:Object.values(a),cpmmPoolList:Object.values(c)}}async fetchSwapRoutesData({routes:e,inputMint:t,outputMint:n}){let r=new Set([...e.needTickArray.map(f=>[f.mintA.toBase58(),f.mintB.toBase58()]).flat(),t.toString(),n.toString()]);console.log("fetching amm pools info, total: ",e.needSimulate.length);let i=await this.scope.liquidity.getRpcPoolInfos(e.needSimulate.map(f=>f.id)),s=Er(i),a={};Object.values(s).forEach(f=>{r.delete(f.mintA.address),a[f.mintA.address]={address:new Kn(f.mintA.address),programId:Oe,mintAuthority:null,supply:BigInt(0),decimals:f.mintA.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0},r.delete(f.mintB.address),a[f.mintB.address]={address:new Kn(f.mintB.address),programId:Oe,mintAuthority:null,supply:BigInt(0),decimals:f.mintB.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}}),console.log("fetching cpmm pools info, total: ",e.cpmmPoolList.length);let c=await this.scope.cpmm.getRpcPoolInfos(e.cpmmPoolList.map(f=>f.id.toBase58()),!0);Object.values(c).forEach(f=>{let[b,g]=[f.mintA.toBase58(),f.mintB.toBase58()];f.mintProgramA.equals(Oe)?(r.delete(b),a[b]={address:f.mintA,programId:f.mintProgramA,mintAuthority:null,supply:BigInt(0),decimals:f.mintDecimalA,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):r.add(b),f.mintProgramB.equals(Oe)?(r.delete(g),a[g]={address:f.mintB,programId:f.mintProgramB,mintAuthority:null,supply:BigInt(0),decimals:f.mintDecimalB,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):r.add(g)}),console.log("fetching mints info, total: ",r.size);let u=await vn({connection:this.scope.connection,mints:Array.from(r).map(f=>new Kn(f))});a=C(C({},a),u);let l=this.scope.cpmm.toComputePoolInfos({pools:c,mintInfos:a});console.log("fetching clmm pools info, total:",e.needTickArray.length);let m=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:e.needTickArray.map(f=>f.id)}),{computeClmmPoolInfo:d,computePoolTickData:p}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:m,mintInfos:a}),y=Object.keys(e.routePathDict).reduce((f,b)=>F(C({},f),{[b]:F(C({},e.routePathDict[b]),{mintProgram:a[b].programId,mDecimals:a[b].decimals,in:e.routePathDict[b].in.map(g=>s[g.id.toBase58()]||d[g.id.toBase58()]||l[g.id.toBase58()]),out:e.routePathDict[b].out.map(g=>s[g.id.toBase58()]||d[g.id.toBase58()]||l[g.id.toBase58()])})}),{});return{mintInfos:a,ammPoolsRpcInfo:i,ammSimulateCache:s,clmmPoolsRpcInfo:m,computeClmmPoolInfo:d,computePoolTickData:p,computeCpmmData:l,routePathDict:y}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:r,simulateCache:i,tickCache:s,slippage:a,chainTime:c,epochInfo:u,feeConfig:l}){var g,h,P,k,B,T,S,x,R;let m=l===void 0?new $r(0):e.raw.mul(new $r(l.feeBps.toNumber())).div(new $r(1e4)),d=e.raw.sub(m),p=new fe(e.token,d),y=l===void 0?void 0:{feeAmount:m,feeAccount:l.feeAccount},f=F(C({},t),{address:mt(t.address).toString()}),b=[];for(let I of n)try{b.push(F(C({},this.computeAmountOut({itemPool:I,tickCache:s,simulateCache:i,chainTime:c,epochInfo:u,slippage:a,outputToken:f,amountIn:p})),{feeConfig:y}))}catch(N){this.logDebug("direct error",I.version,I.id.toString(),N.message)}this.logDebug("direct done");for(let[I,N]of Object.entries(r)){let q={chainId:101,address:I,programId:N.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:N.mDecimals,tags:[],extensions:{}},D=N.in.map(G=>{try{return{pool:G,data:this.computeAmountOut({itemPool:G,tickCache:s,simulateCache:i,chainTime:c,epochInfo:u,slippage:a,outputToken:q,amountIn:p})}}catch(W){this.logDebug("route in error",G.version,G.id.toString(),W.message);return}}).sort((G,W)=>{var mn,jt,Ln,Ft;let ot=G===void 0?Qt:G.data.amountOut.amount.raw.sub((jt=(mn=G.data.amountOut.fee)==null?void 0:mn.raw)!=null?jt:Qt),Rn=W===void 0?Qt:W.data.amountOut.amount.raw.sub((Ft=(Ln=W.data.amountOut.fee)==null?void 0:Ln.raw)!=null?Ft:Qt);return ot.lt(Rn)?1:-1})[0];if(D===void 0)continue;let J=new fe(Cr(q),D.data.amountOut.amount.raw.sub((h=(g=D.data.amountOut.fee)==null?void 0:g.raw)!=null?h:Qt));for(let G of N.out)try{let W=this.computeAmountOut({itemPool:G,tickCache:s,simulateCache:i,chainTime:c,epochInfo:u,slippage:a,outputToken:f,amountIn:J});b.push(F(C({},W),{allTrade:!!(D.data.allTrade&&W.allTrade),amountIn:D.data.amountIn,amountOut:W.amountOut,minAmountOut:W.minAmountOut,currentPrice:void 0,executionPrice:new V(new qe({baseToken:D.data.amountIn.amount.token,denominator:D.data.amountIn.amount.raw,quoteToken:W.amountOut.amount.token,numerator:W.amountOut.amount.raw.sub((k=(P=W.amountOut.fee)==null?void 0:P.raw)!=null?k:Qt)}).toFixed()),priceImpact:new V(D.data.priceImpact.add(W.priceImpact).toFixed()),fee:[D.data.fee[0],W.fee[0]],routeType:"route",poolInfoList:[D.pool,G],remainingAccounts:[D.data.remainingAccounts[0],W.remainingAccounts[0]],minMiddleAmountFee:(B=W.amountOut.fee)!=null&&B.raw?new fe(D.data.amountOut.amount.token,((S=(T=D.data.amountOut.fee)==null?void 0:T.raw)!=null?S:Qt).add((R=(x=W.amountOut.fee)==null?void 0:x.raw)!=null?R:Qt)):void 0,middleToken:D.data.amountOut.amount.token,poolReady:D.data.poolReady&&W.poolReady,poolType:[D.data.poolType,W.poolType],feeConfig:y,expirationTime:Ot(D.data.expirationTime,W.expirationTime)}))}catch(W){this.logDebug("route out error",G.version,G.id.toString(),W.message)}}return b.filter(I=>I.allTrade).sort((I,N)=>I.amountOut.amount.raw.sub(N.amountOut.amount.raw).gt(Qt)?-1:1)}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:r,epochInfo:i,slippage:s,outputToken:a,amountIn:c}){if(e.version===6){let{allTrade:u,realAmountIn:l,amountOut:m,minAmountOut:d,expirationTime:p,currentPrice:y,executionPrice:f,priceImpact:b,fee:g,remainingAccounts:h,executionPriceX64:P}=Le.computeAmountOutFormat({poolInfo:e,tickArrayCache:t[e.id.toString()],amountIn:c.raw,tokenOut:a,slippage:s,epochInfo:i,catchLiquidityInsufficient:!0});return{allTrade:u,amountIn:l,amountOut:m,minAmountOut:d,currentPrice:new V(y.toFixed()),executionPrice:new V(f.toFixed()),priceImpact:new V(b.toFixed()),fee:[g],remainingAccounts:[h],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<r,poolType:"CLMM",slippage:s,clmmExPriceX64:[P],expirationTime:Ot(l.expirationTime,p)}}else if(e.version===7){let{allTrade:u,executionPrice:l,amountOut:m,minAmountOut:d,priceImpact:p,fee:y}=this.scope.cpmm.computeSwapAmount({pool:e,outputMint:a.address,amountIn:c.raw,slippage:s});return{allTrade:u,amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:Io(F(C({},a),{amount:m})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Io(F(C({},a),{amount:d})),fee:void 0,expirationTime:void 0},currentPrice:e.poolPrice,executionPrice:l,priceImpact:p,fee:[new fe(c.token,y)],remainingAccounts:[],routeType:"amm",poolInfoList:[e],poolReady:e.openTime.toNumber()<r,poolType:"CPMM",slippage:s,clmmExPriceX64:[void 0],expirationTime:void 0}}else{if(![1,6,7].includes(n[e.id.toString()].status))throw Error("swap error");let{amountOut:u,minAmountOut:l,currentPrice:m,executionPrice:d,priceImpact:p,fee:y}=this.scope.liquidity.computeAmountOut({poolInfo:n[e.id.toString()],amountIn:c.raw,mintIn:c.token.mint,mintOut:a.address,slippage:s});return{amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:Io(F(C({},a),{amount:u})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Io(F(C({},a),{amount:l})),fee:void 0,expirationTime:void 0},currentPrice:m,executionPrice:d,priceImpact:p,fee:[new fe(c.token,y)],routeType:"amm",poolInfoList:[e],remainingAccounts:[],poolReady:Number(n[e.id].openTime)<r,poolType:e.version===5?"STABLE":void 0,expirationTime:void 0,allTrade:!0,slippage:s,clmmExPriceX64:[void 0]}}}async computePoolToPoolKeys({pools:e,clmmRpcData:t={},ammRpcData:n={}}){let r=new Set(e.filter(u=>u.version===6&&!t[u.id.toString()]).map(u=>u.id.toString()));if(r.size>0){let u=this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(r)});Object.keys(u).forEach(l=>{t[l]=u[l]})}if(new Set(e.filter(u=>u.version===4&&!n[u.id.toString()]).map(u=>u.id.toString())).size>0){let u=this.scope.liquidity.getRpcPoolInfos(Array.from(r));Object.keys(u).forEach(l=>{n[l]=u[l]})}let s=new Set(e.filter(u=>u.version===4).map(u=>u.marketId)),a={};s.size>0&&(await De(this.scope.connection,Array.from(s).map(l=>({pubkey:new Kn(l)})))).forEach(l=>{if(!l.accountInfo)return;let m=Vs.decode(l.accountInfo.data);a[l.pubkey.toBase58()]={marketId:l.pubkey.toString(),marketProgramId:l.accountInfo.owner.toString(),marketAuthority:Zr.getAssociatedAuthority({programId:l.accountInfo.owner,marketId:l.pubkey}).publicKey.toString(),marketBaseVault:m.baseVault.toString(),marketQuoteVault:m.quoteVault.toString(),marketBids:m.bids.toString(),marketAsks:m.asks.toString(),marketEventQueue:m.eventQueue.toString()}});let c=[];return e.forEach(u=>{if(u.version===6){let l=t[u.id.toString()],m={programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.startTime),vault:{A:l.vaultA.toBase58(),B:l.vaultB.toBase58()},config:F(C({},u.ammConfig),{id:u.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),rewardInfos:[]};c.push(m)}else if(u.version===4){let l=n[u.id.toString()],m=C({programId:u.programId,id:u.id,mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),vault:{A:l.baseVault.toBase58(),B:l.quoteVault.toBase58()},authority:Rs({programId:new Kn(u.programId)}).publicKey.toString(),openOrders:l.openOrders.toBase58(),targetOrders:l.targetOrders.toBase58(),mintLp:u.lpMint},a[u.marketId]);c.push(m)}else u.version===7&&c.push({programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),authority:Qn(u.programId).publicKey.toBase58(),vault:{A:u.vaultA.toBase58(),B:u.vaultB.toBase58()},mintLp:it({address:u.mintLp.toBase58(),programId:Oe.toBase58(),decimals:u.lpDecimals}),config:F(C({id:u.configId.toBase58()},u.configInfo),{protocolFeeRate:u.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:u.configInfo.tradeFeeRate.toNumber(),fundFeeRate:u.configInfo.fundFeeRate.toNumber(),createPoolFee:u.configInfo.createPoolFee.toString()})})}),c}};import{TOKEN_PROGRAM_ID as df}from"@solana/spl-token";import{PublicKey as pf,Transaction as Fs,TransactionInstruction as ff}from"@solana/web3.js";import Bc from"bn.js";var nt=class extends Se{static getPdaPoolId(e,t){return ue([nt.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,r){return ue([nt.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Bc(r).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:r,chainTime:i}){if(n.length===0)return[];let s=n.map(l=>nt.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<nt.VERSION_PROJECT.length;l++)a.push(...s.map(m=>nt.getPdaOwnerId(t,m,r,l).publicKey));let c=await Tt(e,[...s,...a]),u=[];for(let l=0;l<c.length;l++){let m=Math.floor(l/n.length),d=l%n.length,p=s[d],y=a[l],f=c[d],b=c[n.length+l];if(!(f&&b)||f.data.length!==nt.POOL_LAYOUT.span||b.data.length!==nt.OWNER_LAYOUT.span)continue;let g=nt.POOL_LAYOUT.decode(f.data),h=nt.OWNER_LAYOUT.decode(b.data),P=g.openTime.toNumber(),k=g.endTime.toNumber(),B=h.tokenInfo.map(x=>x.debtAmount.gt(new Bc(0))).filter(x=>!x).length!==3,T=i>P&&i<k&&g.status===1,S=B&&T;u.push({programId:t,poolId:p,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:h.lpAmount,project:nt.VERSION_PROJECT[m],openTime:P,endTime:k,canClaim:S,canClaimErrorType:B?T?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,R)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:h.tokenInfo[R].debtAmount.add(h.tokenInfo[R].claimedAmount)}))})}return u}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),r=t.wallet||this.scope.ownerPubKey,i=[];for(let c of e.tokenInfo){let{account:u,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({mint:c.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:c.mintAddress.equals(ye.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!c.mintAddress.equals(ye.WSOL.mint),associatedOnly:c.mintAddress.equals(ye.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),i.push(u)}n.addInstruction({instructions:[nt.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:r,ownerPda:e.ownerAccountId,claimAddress:i}})]});let{transaction:s,signers:a}=n.build();return[{transaction:s,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),r=t.wallet||this.scope.ownerPubKey,i={};for(let u of e){let l=[];for(let m of u.tokenInfo){let{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(ye.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!m.mintAddress.equals(ye.WSOL.mint),associatedOnly:m.mintAddress.equals(ye.WSOL.mint)?!1:t.associatedOnly});p&&n.addInstruction(p),d&&(i[m.mintAddress.toString()]=d,l.push(d))}n.addInstruction({instructions:[nt.makeClaimInstruction({programId:u.programId,poolInfo:u,ownerInfo:{wallet:r,ownerPda:u.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),c=n.allInstructions;return mr(c,[r,...a.map(u=>u.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new Fs().add(...c.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new Fs().add(...c.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new Fs().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let r=M([]),i=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:c})=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:df,isSigner:!1,isWritable:!1}],s=Buffer.alloc(r.span);r.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new ff({keys:i,programId:e,data:a})}},Pt=nt;Pt.CLAIMED_NUM=3,Pt.POOL_LAYOUT=M([be(8),E("bump"),E("status"),w("openTime"),w("endTime"),K("ammId"),X(M([E("mintDecimals"),K("mintAddress"),K("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),nt.CLAIMED_NUM,"tokenInfo"),X(w(),10,"padding")]),Pt.OWNER_LAYOUT=M([be(8),E("bump"),E("version"),K("poolId"),K("owner"),w("lpAmount"),X(M([K("mintAddress"),w("debtAmount"),w("claimedAmount")]),nt.CLAIMED_NUM,"tokenInfo"),X(w(),4,"padding")]),Pt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new pf(e)),Pt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},Pt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as Do}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Rc}from"@solana/spl-token";import Wo from"bn.js";import{TransactionInstruction as bf,SYSVAR_RENT_PUBKEY as gf}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as xc}from"@solana/spl-token";import{createInitializeAccountInstruction as Sc}from"@solana/spl-token";import{SystemProgram as Cn,Transaction as Kc}from"@solana/web3.js";function yf(o="accountFlags"){let e=new hr(o);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var Es=M([be(5),yf("accountFlags"),K("ownAddress"),w("vaultSignerNonce"),K("baseMint"),K("quoteMint"),K("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),K("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),K("requestQueue"),K("eventQueue"),K("bids"),K("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),be(7)]);function Af({programId:o,marketInfo:e}){let t=M([E("version"),$e("instruction"),w("baseLotSize"),w("quoteLotSize"),Nt("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:gf,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),r=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},r),new bf({keys:n,programId:o,data:r})}async function Cc({connection:o,wallet:e,marketInfo:t}){let n=new Kc,r=await o.getMinimumBalanceForRentExemption(165);n.add(Cn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:r,space:165,programId:xc}),Cn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:r,space:165,programId:xc}),Sc(t.baseVault.publicKey,t.baseMint,t.vaultOwner),Sc(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let i=new Kc;return i.add(Cn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await o.getMinimumBalanceForRentExemption(Es.span),space:Es.span,programId:t.programId}),Cn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await o.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),Cn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await o.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),Cn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await o.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),Cn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await o.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),Af({programId:t.programId,marketInfo:{id:t.id.publicKey,requestQueue:t.requestQueue.publicKey,eventQueue:t.eventQueue.publicKey,bids:t.bids.publicKey,asks:t.asks.publicKey,baseVault:t.baseVault.publicKey,quoteVault:t.quoteVault.publicKey,baseMint:t.baseMint,quoteMint:t.quoteMint,baseLotSize:t.baseLotSize,quoteLotSize:t.quoteLotSize,feeRateBps:t.feeRateBps,vaultSignerNonce:t.vaultSignerNonce,quoteDustThreshold:t.quoteDustThreshold}})),[{transaction:n,signer:[],instructionTypes:[v.CreateAccount,v.CreateAccount,v.InitAccount,v.InitAccount]},{transaction:i,signer:[],instructionTypes:[v.CreateAccount,v.CreateAccount,v.CreateAccount,v.CreateAccount,v.CreateAccount,v.InitMarket]}]}var jn=class extends Se{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:r,dexProgramId:i,txVersion:s,computeBudgetConfig:a}){let c=this.scope.ownerPubKey,u=Je({fromPublicKey:c,programId:i}),l=Je({fromPublicKey:c,programId:i}),m=Je({fromPublicKey:c,programId:i}),d=Je({fromPublicKey:c,programId:i}),p=Je({fromPublicKey:c,programId:i}),y=Je({fromPublicKey:c,programId:Rc}),f=Je({fromPublicKey:c,programId:Rc}),b=0,g=new Wo(100);function h(){let R=new Wo(0);for(;;)try{return{vaultOwner:Do.createProgramAddressSync([u.publicKey.toBuffer(),R.toArrayLike(Buffer,"le",8)],i),vaultSignerNonce:R}}catch{if(R.iaddn(1),R.gt(new Wo(25555)))throw Error("find vault owner error")}}let{vaultOwner:P,vaultSignerNonce:k}=h(),B=new Wo(Math.round(10**e.decimals*n)),T=new Wo(Math.round(n*10**t.decimals*r));if(B.eq(Ee))throw Error("lot size is too small");if(T.eq(Ee))throw Error("tick size or lot size is too small");let S=await Cc({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:i,id:u,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:P,requestQueue:l,eventQueue:m,bids:d,asks:p,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:k,baseLotSize:B,quoteLotSize:T}}),x=this.createTxBuilder();x.addInstruction({instructions:S[0].transaction.instructions,signers:S[0].signer});for await(let R of S.slice(1,S.length))x.addInstruction({instructions:R.transaction.instructions,signers:R.signer,instructionTypes:R.instructionTypes});return s===0?x.sizeCheckBuildV0({computeBudgetConfig:a,address:{marketId:u.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Do(e.mint),quoteMin:new Do(t.mint)}}):x.sizeCheckBuild({computeBudgetConfig:a,address:{marketId:u.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Do(e.mint),quoteMin:new Do(t.mint)}})}};import{PublicKey as Uo}from"@solana/web3.js";import{TransactionInstruction as Ws,SYSVAR_CLOCK_PUBKEY as wf}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as qs}from"@solana/spl-token";var Ds=M([E("instruction"),Xa("amount")]),qo=M([E("instruction")]);function CK({programId:o,amount:e,instructionKeys:t}){let n=[{pubkey:or,isSigner:!1,isWritable:!1},{pubkey:qs,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:fi,isSigner:!1,isWritable:!1},...Object.entries(t).map(([i,s])=>({pubkey:s,isSigner:i==="userOwner",isWritable:!["authority","userOwner","userIdoCheck","userStakeInfo"].includes(i)}))],r=Buffer.alloc(Ds.span);return Ds.encode({instruction:1,amount:Number(e)},r),new Ws({keys:n,programId:o,data:r})}function Jr({programId:o},e){let t=[{pubkey:qs,isSigner:!1,isWritable:!1},{pubkey:fi,isSigner:!1,isWritable:!1},...Object.entries(e).map(([r,i])=>({pubkey:i,isSigner:r==="userOwner",isWritable:!["authority","userOwner"].includes(r)}))],n=Buffer.alloc(qo.span);return qo.encode({instruction:2},n),new Ws({keys:t,programId:o,data:n})}function Us(o){let{poolConfig:e,userKeys:t,side:n}=o,r=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,i=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(qo.span);qo.encode({instruction:2},s);let a=[{pubkey:qs,isWritable:!1,isSigner:!1},{pubkey:wf,isWritable:!1,isSigner:!1},{pubkey:e.id,isWritable:!0,isSigner:!1},{pubkey:e.authority,isWritable:!1,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:r,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new Ws({programId:e.programId,keys:a,data:s})}import Lc from"bn.js";var Pf={[uo.IDO_PROGRAM_ID_V1.toString()]:1,[uo.IDO_PROGRAM_ID_V2.toString()]:2,[uo.IDO_PROGRAM_ID_V3.toString()]:3,[uo.IDO_PROGRAM_ID_V4.toString()]:4},Hn=class extends Se{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:r=!1,txVersion:i}){let s=this.createTxBuilder(),a=Pf[t.programId];a||this.logAndCreateError("invalid version",a);let c=Ie(t),[u,l]=[!new Lc(e.coin).isZero(),!new Lc(e.pc).isZero()],m=c.projectInfo.mint.address.equals($),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:c.projectInfo.mint.programId,mint:c.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!m,notUseTokenAccount:m,associatedOnly:m?!1:n,checkCreateATAOwner:r});!d&&u&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),u&&p&&s.addInstruction(p);let y=c.buyInfo.mint.address.equals($),{account:f,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:c.buyInfo.mint.programId,mint:c.buyInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:n,checkCreateATAOwner:r});if(!d&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&b&&s.addInstruction(b),(!d||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return s.addInstruction({instructions:[...u?[Jr({programId:c.programId},{idoId:c.id,authority:c.authority,poolTokenAccount:c.projectInfo.vault,userTokenAccount:d,userIdoInfo:new Uo(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[Jr({programId:new Uo(t.programId)},{idoId:c.id,authority:c.authority,poolTokenAccount:c.buyInfo.vault,userTokenAccount:f,userIdoInfo:new Uo(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:i});if(a<3)return!u&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[Jr({programId:c.programId},{idoId:c.id,authority:c.authority,poolQuoteTokenAccount:c.buyInfo.vault,poolBaseTokenAccount:c.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:d,userIdoInfo:new Uo(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:i});let g={poolConfig:{id:c.id,programId:c.programId,authority:c.authority,baseVault:c.projectInfo.vault,quoteVault:c.buyInfo.vault,baseToken:t.projectInfo.mint,quoteToken:t.buyInfo.mint},userKeys:{baseTokenAccount:d,quoteTokenAccount:f,ledgerAccount:new Uo(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...u?[Us(F(C({},g),{side:"base"}))]:[],...l?[Us(F(C({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:i})}};import{PublicKey as hf}from"@solana/web3.js";import{MintLayout as kf,TOKEN_2022_PROGRAM_ID as Gs,TOKEN_PROGRAM_ID as Xs}from"@solana/spl-token";var Go=class extends Se{constructor(t){super(t);this._tokenList=[];this._tokenMap=new Map;this._blackTokenMap=new Map;this._mintGroup={official:new Set,jup:new Set,extra:new Set};this._whiteMap=new Set;this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:r="strict"}=t||{},{mintList:i,blacklist:s,whiteList:a}=await this.scope.fetchV3TokenList(n),c=await this.scope.fetchJupTokenList(r,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._whiteMap=new Set(a),this._tokenMap.set(Rt.address,Rt),this._mintGroup.official.add(Rt.address),s.forEach(u=>{this._blackTokenMap.set(u.address,F(C({},u),{priority:-1}))}),i.forEach(u=>{var l;this._blackTokenMap.has(u.address)||(this._tokenMap.set(u.address,F(C({},u),{type:"raydium",priority:2,programId:(l=u.programId)!=null?l:u.tags.includes("token-2022")?Gs.toBase58():Xs.toBase58()})),this._mintGroup.official.add(u.address))}),c.forEach(u=>{var l;this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,F(C({},u),{type:"jupiter",priority:1,programId:(l=u.programId)!=null?l:u.tags.includes("token-2022")?Gs.toBase58():Xs.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,F(C({},u),{type:"extra",priority:1,programId:u.programId||u.tags.includes("token-2022")?Gs.toBase58():Xs.toBase58()})),this._mintGroup.extra.add(u.address))}),this._tokenList=Array.from(this._tokenMap).map(u=>u[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}get whiteListMap(){return this._whiteMap}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),r=this._tokenMap.get(n);if(r)return r;if(n.toLocaleUpperCase()==="SOL")return Rt;let i=(await this.scope.api.getTokenInfo([n]))[0];if(i)return this._mintGroup.extra.add(n),this._tokenMap.set(n,F(C({},i),{priority:2})),i;let s=await this.scope.connection.getAccountInfo(new hf(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=kf.decode(s.data),c=n.toString().substring(0,6),u={chainId:101,address:n,programId:s.owner.toBase58(),logoURI:"",symbol:c,name:c,decimals:a.decimals,tags:[],extensions:{},priority:0,type:"unknown"};return this._mintGroup.extra.add(n),this._tokenMap.set(n,u),u}};var ei=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:r,api:i,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:c,blockhashCommitment:u="confirmed"}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=r?new It(r):void 0,this._signAllTransactions=e.signAllTransactions,this.blockhashCommitment=u,this.api=i,this._apiCacheTime=c||5*60*1e3,this.logger=ce("Raydium"),this.farm=new To({scope:this,moduleName:"Raydium_Farm"}),this.account=new po({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new No({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new Go({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new Eo({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new Mo({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new Fo({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new Pt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new jn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new Hn({scope:this,moduleName:"Raydium_ido"}),this.availability={};let l=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:l,value:{chainTime:s||Date.now()-a,offset:a}})}static async load(e){var l;let t=Tf({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:r,logCount:i,logRequests:s,urlConfigs:a}=t,c=new Ar({cluster:n,timeout:r,urlConfigs:a,logCount:i,logRequests:s}),u=new ei(F(C({},t),{api:c}));return await u.fetchAvailabilityStatus((l=e.disableFeatureCheck)!=null?l:!0),e.disableLoadToken||await u.token.load({type:e.jupTokenType}),u}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(wr);return this._owner.publicKey}setOwner(e){return this._owner=e?new It(e):void 0,this}get connection(){if(!this._connection)throw new Error(Wa);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(wr),new Error(wr)}isCacheInvalidate(e){return new Date().getTime()-e>this._apiCacheTime}async fetchChainTime(){try{let e=await this.api.getChainTimeOffset();this._chainTime={fetched:Date.now(),value:{chainTime:Date.now()+e.offset*1e3,offset:e.offset*1e3}}}catch{this._chainTime=void 0}}async fetchV3TokenList(e){if(this.apiData.tokenList&&!this.isCacheInvalidate(this.apiData.tokenList.fetched)&&!e)return this.apiData.tokenList.data;let t=await this.api.getTokenList(),n={fetched:Date.now(),data:t};return this.apiData.tokenList=n,n.data}async fetchJupTokenList(e,t){var i;let n=(i=this.apiData.jupTokenList)==null?void 0:i[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let r=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=F(C({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:r}}),this.apiData.jupTokenList[e].data}get chainTimeData(){var e;return(e=this._chainTime)==null?void 0:e.value}async chainTimeOffset(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.offset:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.offset)||0)}async currentBlockChainTime(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.chainTime:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.chainTime)||Date.now())}async fetchEpochInfo(){return this._epochInfo&&Date.now()-this._epochInfo.fetched<=1e3*30?this._epochInfo.value:(this._epochInfo={fetched:Date.now(),value:await this.connection.getEpochInfo()},this._epochInfo.value)}async fetchAvailabilityStatus(e){if(e)return{};try{let t=await this.api.fetchAvailabilityStatus(),n=t.all===!1;return this.availability={all:t.all,swap:n?!1:t.swap,createConcentratedPosition:n?!1:t.createConcentratedPosition,addConcentratedPosition:n?!1:t.addConcentratedPosition,addStandardPosition:n?!1:t.addStandardPosition,removeConcentratedPosition:n?!1:t.removeConcentratedPosition,removeStandardPosition:n?!1:t.removeStandardPosition,addFarm:n?!1:t.addFarm,removeFarm:n?!1:t.removeFarm},t}catch{return{}}}};var L0=o=>o;export{Yb as ACCOUNT_TYPE_SIZE,wg as ALL_PROGRAM_ID,Tp as AMM_CONFIG_SEED,mm as AMM_STABLE,Ci as AMM_V4,Uf as ANAMint,Ye as API_URLS,sm as AccountType,Ar as Api,qu as BIT_PRECISION,nn as BNDivCeil,gn as BNLayout,Zy as BN_100,$y as BN_1000,Jy as BN_10000,Hy as BN_FIVE,Pa as BN_ONE,pn as BN_TEN,jy as BN_THREE,Qy as BN_TWO,Ee as BN_ZERO,xA as BitStructure,Ga as Blob,Ri as CLMM_PROGRAM_ID,fi as CLOCK_PROGRAM_ID,gm as CREATE_CPMM_POOL_AUTH,Am as CREATE_CPMM_POOL_FEE_ACC,Li as CREATE_CPMM_POOL_PROGRAM,Mo as Clmm,Hu as ClmmConfigLayout,Ke as ClmmInstrument,Ur as ConstantProductCurve,Ac as CpmmConfigInfoLayout,Wr as CpmmFee,Qr as CpmmPoolInfoLayout,to as Currency,fn as CurrencyAmount,Gr as CurveCalculator,br as DEVNET_PROGRAM_ID,zg as DEV_API_URLS,Pm as DEV_CREATE_CPMM_POOL_AUTH,hm as DEV_CREATE_CPMM_POOL_FEE_ACC,wm as DEV_CREATE_CPMM_POOL_PROGRAM,up as DataElement,Gf as ETHMint,Ts as EXTENSION_TICKARRAY_BITMAP_SIZE,du as FARM_LOCK_MINT,pu as FARM_LOCK_VAULT,Si as FARM_PROGRAM_ID_V3,Ki as FARM_PROGRAM_ID_V5,Fn as FARM_PROGRAM_ID_V6,bt as FARM_PROGRAM_TO_VERSION,yu as FARM_VERSION_TO_LEDGER_LAYOUT,fu as FARM_VERSION_TO_STATE_LAYOUT,Ag as FEE_DESTINATION_ID,Vr as FEE_RATE_DENOMINATOR,Ls as FEE_RATE_DENOMINATOR_VALUE,Lp as FETCH_TICKARRAY_COUNT,Rp as Fee,re as Fraction,uo as IDO_ALL_PROGRAM,pm as IDO_PROGRAM_ID_V1,fm as IDO_PROGRAM_ID_V2,ym as IDO_PROGRAM_ID_V3,bm as IDO_PROGRAM_ID_V4,nr as INSTRUCTION_PROGRAM_ID,v as InstructionType,Oi as JupTokenType,oc as LIQUIDITY_FEES_DENOMINATOR,nc as LIQUIDITY_FEES_NUMERATOR,va as LIQUIDITY_POOL_PROGRAM_ID_V5_MODEL,Fp as LIQUIDITY_VERSION_TO_SERUM_VERSION,nk as LIQUIDITY_VERSION_TO_STATE_LAYOUT,Uu as LOG_B_2_X32,Gu as LOG_B_P_ERR_MARGIN_LOWER_X64,Xu as LOG_B_P_ERR_MARGIN_UPPER_X64,pr as LOOKUP_TABLE_CACHE,co as Layout,le as LiquidityMath,vc as LogLevel,oi as Logger,Es as MARKET_STATE_LAYOUT_V2,Vs as MARKET_STATE_LAYOUT_V3,kc as MARKET_VERSION_TO_STATE_LAYOUT,Ka as MAX_BASE64_SIZE,Vt as MAX_SQRT_PRICE_X64,_r as MAX_SQRT_PRICE_X64_SUB_ONE,st as MAX_TICK,er as MEMO_PROGRAM_ID,tr as MEMO_PROGRAM_ID2,_n as METADATA_PROGRAM_ID,_t as MIN_SQRT_PRICE_X64,Mr as MIN_SQRT_PRICE_X64_ADD_ONE,tt as MIN_TICK,Gn as MODEL_DATA_PUBKEY,Zr as Market,ne as MathUtil,ks as MaxU64,Wu as MaxUint128,Xt as NEGATIVE_ONE,qf as NRVMint,ft as ONE,lm as OPEN_BOOK_PROGRAM,Kp as OPERATION_SEED,xs as ObservationInfoLayout,Mp as ObservationLayout,Zu as OperationLayout,Ei as OptionLayout,It as Owner,_f as PAIMint,xp as POOL_REWARD_VAULT_SEED,Ip as POOL_SEED,Cp as POOL_TICK_ARRAY_BITMAP_SEED,Bp as POOL_VAULT_SEED,Fu as POSITION_SEED,Fe as Percent,Fa as PoolFetchType,In as PoolInfoLayout,Le as PoolUtils,vr as PositionInfoLayout,Vp as PositionRewardInfoLayout,Lo as PositionUtils,qe as Price,DT as ProtocolPositionLayout,Nr as Q128,yt as Q64,Mf as RAYMint,ut as RENT_PROGRAM_ID,ei as Raydium,_p as RewardInfo,mc as RoundDirection,Ai as Rounding,dm as Router,Pc as SERUM_PROGRAMID_TO_VERSION,yr as SERUM_PROGRAM_ID_V3,hc as SERUM_VERSION_TO_PROGRAMID,Ea as SESSION_KEY,Ve as SOLMint,Rt as SOL_INFO,Rh as SPL_MINT_LAYOUT,Vf as SRMMint,Ni as STORAGE_KEY,or as SYSTEM_PROGRAM_ID,te as SqrtPriceMath,Un as StableLayout,Di as Structure,Tn as SwapMath,kn as TICK_ARRAY_BITMAP_SIZE,Sp as TICK_ARRAY_SEED,We as TICK_ARRAY_SIZE,Ck as TICK_SPACINGS,ve as TOKEN_WSOL,zt as TickArrayBitmap,ju as TickArrayBitmapExtensionLayout,Ro as TickArrayBitmapExtensionUtils,Co as TickArrayLayout,vp as TickLayout,Bn as TickMath,me as TickQuery,H as TickUtils,ye as Token,fe as TokenAmount,fr as TxBuilder,yn as TxVersion,Ko as U64Resolution,Lk as U64_IGNORE_RANGE,Vi as UInt,vf as USDCMint,Wf as USDHMint,Ff as USDTMint,cm as UTIL1216,Wi as Union,lu as Voter,Ud as VoterDepositEntry,qd as VoterLockup,cu as VoterRegistrar,Wd as VoterVotingMintConfig,$ as WSOLMint,hr as WideBits,qt as WrappedLayout,pe as ZERO,ba as _100_PERCENT,A as accountMeta,_y as add,lr as addComputeBudget,ys as addLiquidityLayout,mw as array,ji as associatedLedgerAccountLayout,vi as bits,be as blob,je as bool,us as calFarmRewardAmount,Xp as ceilDiv,no as checkLegacyTxSize,oo as checkV0TxSize,Ii as chunkArray,qo as claimLayout,Qu as clmmComputeInfoToApiInfo,Mt as closeAccountInstruction,mi as commonSystemAccountMeta,Kr as createAssociatedLedgerAccountInstruction,ce as createLogger,Iu as createPoolFeeLayout,Nu as createPoolV4InstructionV2,tk as createPoolV4Layout,Ut as createWSolAccountInstructions,ew as cstr,wy as currencyEquals,zl as decimalToFraction,gd as decodeBool,Ly as div,sr as divCeil,rt as dwLayout,Ad as encodeBool,dA as endlessRetry,Ul as eq,jA as f32,HA as f32be,ZA as f64,$A as f64be,Ji as farmAddRewardLayout,bP as farmLedgerLayoutV3_1,yo as farmLedgerLayoutV3_2,gP as farmLedgerLayoutV5_1,au as farmLedgerLayoutV5_2,uu as farmLedgerLayoutV6_1,gu as farmRewardInfoToConfig,Zi as farmRewardLayout,$i as farmRewardRestartLayout,Dd as farmRewardTimeInfoLayout,iu as farmStateV3Layout,su as farmStateV5Layout,fo as farmStateV6Layout,DP as fetchMultipleFarmInfoAndUpdate,AI as fetchMultipleInfo,vn as fetchMultipleMintInfos,ue as findProgramAddress,ds as fixedSwapInLayout,ps as fixedSwapOutLayout,cc as floorDiv,mr as forecastTransactionSize,Ap as formatLayout,Je as generatePubKey,ge as getATAAddress,bu as getAssociatedAuthority,Fr as getAssociatedConfigId,et as getAssociatedLedgerAccount,go as getAssociatedLedgerPoolAccount,Up as getAssociatedOpenOrders,ic as getAssociatedPoolKeys,Jp as getCpmmPdaAmmConfigId,ef as getCpmmPdaPoolId,pc as getCreatePoolKeys,Ma as getDate,cs as getDepositEntryIndex,Ku as getDxByDyBaseIn,Su as getDyByDxBaseIn,Fb as getEpochInfo,qn as getFarmLedgerLayout,Gd as getFarmStateLayout,Rs as getLiquidityAssociatedAuthority,xn as getLiquidityAssociatedId,bT as getLiquidityFromAmounts,My as getMax,Tt as getMultipleAccountsInfo,De as getMultipleAccountsInfoWithCustomFlags,Bi as getMultipleLookupTableInfo,xk as getPdaAmmConfigId,pt as getPdaExBitmapAccount,tf as getPdaLpMint,Or as getPdaMetadataKey,Xr as getPdaObservationId,So as getPdaOperationAccount,gt as getPdaPersonalPositionAddress,Qn as getPdaPoolAuthority,Eu as getPdaPoolId,Du as getPdaPoolRewardVaulId,hs as getPdaPoolVaultId,hn as getPdaProtocolPositionAddress,we as getPdaTickArrayAddress,dc as getPdaVault,Vn as getRecentBlockHash,ns as getRegistrarAddress,Im as getSessionKey,Cu as getStablePrice,um as getTime,xb as getTimestamp,as as getTokenOwnerRecordAddress,xg as getTransferAmountFee,he as getTransferAmountFeeV2,is as getVoterAddress,ss as getVoterWeightRecordAddress,rs as getVotingMintAuthority,os as getVotingTokenMint,Jd as governanceCreateTokenOwnerRecord,SA as greedy,ql as gt,Ry as gte,Za as i128,hk as i16ToBytes,Lr as i32ToBytes,kr as i64,Ha as i8,fs as initPoolLayout,Yi as initTokenAccountInstruction,Af as initializeMarket,mg as intersection,Va as isDateAfter,_a as isDateBefore,Yl as isDecimal,Ny as isMeaningfulNumber,Na as isNumber,es as isValidFarmVersion,xo as isZero,Ie as jsonInfo2PoolKeys,WP as judgeFarmType,ws as leadingZeros,vu as leastSignificantBit,Bo as liquidityStateV4Layout,sp as liquidityStateV5Layout,Ky as lt,Cy as lte,Ef as mSOLMint,Rr as makeAMMSwapInstruction,Ou as makeAddLiquidityInstruction,ms as makeAddNewRewardInstruction,Jr as makeClaimInstruction,Us as makeClaimInstructionV4,yc as makeCreateCpmmPoolInInstruction,Au as makeCreateFarmInstruction,Cc as makeCreateMarketInstruction,wu as makeCreatorWithdrawFarmRewardInstruction,bc as makeDepositCpmmInInstruction,Pu as makeDepositInstructionV3,hu as makeDepositInstructionV5,ku as makeDepositInstructionV6,rh as makeDepositTokenInstruction,sh as makeDepositWithdrawInstruction,wk as makeInitPoolInstructionV4,CK as makePurchaseInstruction,ls as makeRestartRewardInstruction,Mu as makeSimulatePoolInfoInstruction,zr as makeSwapCpmmBaseInInInstruction,Yr as makeSwapCpmmBaseOutInInstruction,hp as makeSwapFixedInInstruction,kp as makeSwapFixedOutInstruction,wc as makeSwapInstruction,mo as makeTransferInstruction,gc as makeWithdrawCpmmInInstruction,ko as makeWithdrawInstructionV3,ho as makeWithdrawInstructionV5,Po as makeWithdrawInstructionV6,ih as makeWithdrawTokenInstruction,Ot as minExpirationTime,Rk as mockCreatePoolInfo,zu as mockV3CreatePoolInfo,cp as modelDataInfoLayout,Vu as mostSignificantBit,hi as mul,ki as notInnerObject,qA as ns64,QA as ns64be,Xa as nu64,VA as nu64be,Fi as offset,yg as offsetDateTime,sw as option,Y as parseBigNumberish,dn as parseNumberInfo,Ra as parseSimulateLogToJson,Wt as parseSimulateValue,ru as parseTokenAccountResp,Dh as parseTokenInfo,un as poolTypeV6,bn as printSimulate,K as publicKey,Ds as purchaseLayout,vd as realFarmStateV3Layout,Fd as realFarmStateV5Layout,Ed as realFarmV6Layout,wa as recursivelyDecimalToFraction,As as removeLiquidityInstruction,bs as removeLiquidityLayout,Xx as route1Instruction,zx as route2Instruction,lf as routeInstruction,lw as rustEnum,FA as s16,UA as s16be,EA as s24,GA as s24be,Qe as s32,XA as s32be,DA as s40,zA as s40be,WA as s48,YA as s48be,vA as s8,X as seq,Kf as setLoggerLevel,Gl as shakeFractionDecimal,Ca as simulateMultipleInstruction,Ak as simulatePoolInfoInstruction,em as simulateTransaction,Ta as sleep,mt as solToWSol,qh as solToWSolToken,on as splAccountLayout,ka as splitNumber,Df as stSOLMint,cw as str,M as struct,Oy as sub,uw as tagged,wi as tenExponential,Er as toAmmComputePoolInfo,it as toApiV3Token,Xl as toBN,tm as toBuffer,cn as toFeeConfig,ha as toFraction,Sy as toFractionWithDecimals,eb as toPercent,Cr as toToken,Io as toTokenAmount,Wh as toTokenInfo,tb as toTokenPrice,nb as toTotalPrice,Aa as toUsdCurrency,Ps as trailingZeros,pi as tryParsePublicKey,j as u128,Nt as u16,_u as u16ToBytes,LA as u16be,KA as u24,OA as u24be,$e as u32,kk as u32ToBytes,NA as u32be,CA as u40,MA as u40be,RA as u48,_A as u48be,w as u64,E as u8,dw as union,L0 as unionArr,JA as unionLayoutDiscriminator,pg as uniq,Xd as updateFarmPoolInfo,gr as updateReqHistory,tw as utf8,di as validateAndParsePublicKey,ts as validateFarmRewards,aw as vec,wd as vecU8,tp as voterStakeRegistryCreateDepositEntry,ep as voterStakeRegistryCreateVoter,Hd as voterStakeRegistryDeposit,Zd as voterStakeRegistryUpdateVoterWeightRecord,$d as voterStakeRegistryWithdraw,Uh as wSolToSolToken,Hi as withdrawRewardLayout,dg as xor,pw as zeros};
|
|
1
|
+
var Nc=Object.defineProperty,Mc=Object.defineProperties;var _c=Object.getOwnPropertyDescriptors;var Yo=Object.getOwnPropertySymbols;var js=Object.prototype.hasOwnProperty,Hs=Object.prototype.propertyIsEnumerable;var Qs=(o,e,t)=>e in o?Nc(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,C=(o,e)=>{for(var t in e||(e={}))js.call(e,t)&&Qs(o,t,e[t]);if(Yo)for(var t of Yo(e))Hs.call(e,t)&&Qs(o,t,e[t]);return o},F=(o,e)=>Mc(o,_c(e));var Ke=(o,e)=>{var t={};for(var n in o)js.call(o,n)&&e.indexOf(n)<0&&(t[n]=o[n]);if(o!=null&&Yo)for(var n of Yo(o))e.indexOf(n)<0&&Hs.call(o,n)&&(t[n]=o[n]);return t};import Da from"axios";import{get as ni,set as Zs}from"lodash";import $s from"dayjs";import Vc from"dayjs/plugin/utc";$s.extend(Vc);var vc=(r=>(r[r.Error=0]="Error",r[r.Warning=1]="Warning",r[r.Info=2]="Info",r[r.Debug=3]="Debug",r))(vc||{}),oi=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 $s().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}},ri={},Js={};function ce(o){let e=ni(ri,o);if(!e){let t=ni(Js,o);e=new oi({name:o,logLevel:t}),Zs(ri,o,e)}return e}function Kf(o,e){Zs(Js,o,e);let t=ni(ri,o);t&&(t.level=e)}import{PublicKey as Hl}from"@solana/web3.js";import Zl from"bn.js";import Ql from"big.js";import tn from"bn.js";import Te from"bn.js";var Nn=9e15,en=1e9,ii="0123456789abcdef",jo="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Ho="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",si={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Nn,maxE:Nn,crypto:!1},oa,Et,oe=!0,$o="[DecimalError] ",Jt=$o+"Invalid argument: ",ra=$o+"Precision limit exceeded",ia=$o+"crypto unavailable",sa="[object Decimal]",He=Math.floor,Me=Math.pow,Fc=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Ec=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,Dc=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,aa=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,kt=1e7,ee=7,Wc=9007199254740991,qc=jo.length-1,ai=Ho.length-1,_={toStringTag:sa};_.absoluteValue=_.abs=function(){var o=new this.constructor(this);return o.s<0&&(o.s=1),Z(o)};_.ceil=function(){return Z(new this.constructor(this),this.e+1,2)};_.clampedTo=_.clamp=function(o,e){var t,n=this,r=n.constructor;if(o=new r(o),e=new r(e),!o.s||!e.s)return new r(NaN);if(o.gt(e))throw Error(Jt+e);return t=n.cmp(o),t<0?o:n.cmp(e)>0?e:new r(n)};_.comparedTo=_.cmp=function(o){var e,t,n,r,i=this,s=i.d,a=(o=new i.constructor(o)).d,c=i.s,u=o.s;if(!s||!a)return!c||!u?NaN:c!==u?c:s===a?0:!s^c<0?1:-1;if(!s[0]||!a[0])return s[0]?c:a[0]?-u:0;if(c!==u)return c;if(i.e!==o.e)return i.e>o.e^c<0?1:-1;for(n=s.length,r=a.length,e=0,t=n<r?n:r;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^c<0?1:-1;return n===r?0:n>r^c<0?1:-1};_.cosine=_.cos=function(){var o,e,t=this,n=t.constructor;return t.d?t.d[0]?(o=n.precision,e=n.rounding,n.precision=o+Math.max(t.e,t.sd())+ee,n.rounding=1,t=Uc(n,da(n,t)),n.precision=o,n.rounding=e,Z(Et==2||Et==3?t.neg():t,o,e,!0)):new n(1):new n(NaN)};_.cubeRoot=_.cbrt=function(){var o,e,t,n,r,i,s,a,c,u,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(oe=!1,i=l.s*Me(l.s*l,1/3),!i||Math.abs(i)==1/0?(t=Xe(l.d),o=l.e,(i=(o-t.length+1)%3)&&(t+=i==1||i==-2?"0":"00"),i=Me(t,1/3),o=He((o+1)/3)-(o%3==(o<0?-1:2)),i==1/0?t="5e"+o:(t=i.toExponential(),t=t.slice(0,t.indexOf("e")+1)+o),n=new m(t),n.s=l.s):n=new m(i.toString()),s=(o=m.precision)+3;;)if(a=n,c=a.times(a).times(a),u=c.plus(l),n=Pe(u.plus(l).times(a),u.plus(c),s+2,1),Xe(a.d).slice(0,s)===(t=Xe(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!r&&t=="4999"){if(!r&&(Z(a,o+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,r=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(Z(n,o+1,1),e=!n.times(n).times(n).eq(l));break}return oe=!0,Z(n,o,m.rounding,e)};_.decimalPlaces=_.dp=function(){var o,e=this.d,t=NaN;if(e){if(o=e.length-1,t=(o-He(this.e/ee))*ee,o=e[o],o)for(;o%10==0;o/=10)t--;t<0&&(t=0)}return t};_.dividedBy=_.div=function(o){return Pe(this,new this.constructor(o))};_.dividedToIntegerBy=_.divToInt=function(o){var e=this,t=e.constructor;return Z(Pe(e,new t(o),0,1,1),t.precision,t.rounding)};_.equals=_.eq=function(o){return this.cmp(o)===0};_.floor=function(){return Z(new this.constructor(this),this.e+1,3)};_.greaterThan=_.gt=function(o){return this.cmp(o)>0};_.greaterThanOrEqualTo=_.gte=function(o){var e=this.cmp(o);return e==1||e===0};_.hyperbolicCosine=_.cosh=function(){var o,e,t,n,r,i=this,s=i.constructor,a=new s(1);if(!i.isFinite())return new s(i.s?1/0:NaN);if(i.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(i.e,i.sd())+4,s.rounding=1,r=i.d.length,r<32?(o=Math.ceil(r/3),e=(1/er(4,o)).toString()):(o=16,e="2.3283064365386962890625e-10"),i=Mn(s,1,i.times(e),new s(1),!0);for(var c,u=o,l=new s(8);u--;)c=i.times(i),i=a.minus(c.times(l.minus(c.times(l))));return Z(i,s.precision=t,s.rounding=n,!0)};_.hyperbolicSine=_.sinh=function(){var o,e,t,n,r=this,i=r.constructor;if(!r.isFinite()||r.isZero())return new i(r);if(e=i.precision,t=i.rounding,i.precision=e+Math.max(r.e,r.sd())+4,i.rounding=1,n=r.d.length,n<3)r=Mn(i,2,r,r,!0);else{o=1.4*Math.sqrt(n),o=o>16?16:o|0,r=r.times(1/er(5,o)),r=Mn(i,2,r,r,!0);for(var s,a=new i(5),c=new i(16),u=new i(20);o--;)s=r.times(r),r=r.times(a.plus(s.times(c.times(s).plus(u))))}return i.precision=e,i.rounding=t,Z(r,e,t,!0)};_.hyperbolicTangent=_.tanh=function(){var o,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(o=n.precision,e=n.rounding,n.precision=o+7,n.rounding=1,Pe(t.sinh(),t.cosh(),n.precision=o,n.rounding=e)):new n(t.s)};_.inverseCosine=_.acos=function(){var o,e=this,t=e.constructor,n=e.abs().cmp(1),r=t.precision,i=t.rounding;return n!==-1?n===0?e.isNeg()?ht(t,r,i):new t(0):new t(NaN):e.isZero()?ht(t,r+4,i).times(.5):(t.precision=r+6,t.rounding=1,e=e.asin(),o=ht(t,r+4,i).times(.5),t.precision=r,t.rounding=i,o.minus(e))};_.inverseHyperbolicCosine=_.acosh=function(){var o,e,t=this,n=t.constructor;return t.lte(1)?new n(t.eq(1)?0:NaN):t.isFinite()?(o=n.precision,e=n.rounding,n.precision=o+Math.max(Math.abs(t.e),t.sd())+4,n.rounding=1,oe=!1,t=t.times(t).minus(1).sqrt().plus(t),oe=!0,n.precision=o,n.rounding=e,t.ln()):new n(t)};_.inverseHyperbolicSine=_.asinh=function(){var o,e,t=this,n=t.constructor;return!t.isFinite()||t.isZero()?new n(t):(o=n.precision,e=n.rounding,n.precision=o+2*Math.max(Math.abs(t.e),t.sd())+6,n.rounding=1,oe=!1,t=t.times(t).plus(1).sqrt().plus(t),oe=!0,n.precision=o,n.rounding=e,t.ln())};_.inverseHyperbolicTangent=_.atanh=function(){var o,e,t,n,r=this,i=r.constructor;return r.isFinite()?r.e>=0?new i(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(o=i.precision,e=i.rounding,n=r.sd(),Math.max(n,o)<2*-r.e-1?Z(new i(r),o,e,!0):(i.precision=t=n-r.e,r=Pe(r.plus(1),new i(1).minus(r),t+o,1),i.precision=o+4,i.rounding=1,r=r.ln(),i.precision=o,i.rounding=e,r.times(.5))):new i(NaN)};_.inverseSine=_.asin=function(){var o,e,t,n,r=this,i=r.constructor;return r.isZero()?new i(r):(e=r.abs().cmp(1),t=i.precision,n=i.rounding,e!==-1?e===0?(o=ht(i,t+4,n).times(.5),o.s=r.s,o):new i(NaN):(i.precision=t+6,i.rounding=1,r=r.div(new i(1).minus(r.times(r)).sqrt().plus(1)).atan(),i.precision=t,i.rounding=n,r.times(2)))};_.inverseTangent=_.atan=function(){var o,e,t,n,r,i,s,a,c,u=this,l=u.constructor,m=l.precision,d=l.rounding;if(u.isFinite()){if(u.isZero())return new l(u);if(u.abs().eq(1)&&m+4<=ai)return s=ht(l,m+4,d).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(m+4<=ai)return s=ht(l,m+4,d).times(.5),s.s=u.s,s}for(l.precision=a=m+10,l.rounding=1,t=Math.min(28,a/ee+2|0),o=t;o;--o)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(oe=!1,e=Math.ceil(a/ee),n=1,c=u.times(u),s=new l(u),r=u;o!==-1;)if(r=r.times(c),i=s.minus(r.div(n+=2)),r=r.times(c),s=i.plus(r.div(n+=2)),s.d[e]!==void 0)for(o=e;s.d[o]===i.d[o]&&o--;);return t&&(s=s.times(2<<t-1)),oe=!0,Z(s,l.precision=m,l.rounding=d,!0)};_.isFinite=function(){return!!this.d};_.isInteger=_.isInt=function(){return!!this.d&&He(this.e/ee)>this.d.length-2};_.isNaN=function(){return!this.s};_.isNegative=_.isNeg=function(){return this.s<0};_.isPositive=_.isPos=function(){return this.s>0};_.isZero=function(){return!!this.d&&this.d[0]===0};_.lessThan=_.lt=function(o){return this.cmp(o)<0};_.lessThanOrEqualTo=_.lte=function(o){return this.cmp(o)<1};_.logarithm=_.log=function(o){var e,t,n,r,i,s,a,c,u=this,l=u.constructor,m=l.precision,d=l.rounding,p=5;if(o==null)o=new l(10),e=!0;else{if(o=new l(o),t=o.d,o.s<0||!t||!t[0]||o.eq(1))return new l(NaN);e=o.eq(10)}if(t=u.d,u.s<0||!t||!t[0]||u.eq(1))return new l(t&&!t[0]?-1/0:u.s!=1?NaN:t?0:1/0);if(e)if(t.length>1)i=!0;else{for(r=t[0];r%10===0;)r/=10;i=r!==1}if(oe=!1,a=m+p,s=$t(u,a),n=e?Zo(l,a+10):$t(o,a),c=Pe(s,n,a,1),$n(c.d,r=m,d))do if(a+=10,s=$t(u,a),n=e?Zo(l,a+10):$t(o,a),c=Pe(s,n,a,1),!i){+Xe(c.d).slice(r+1,r+15)+1==1e14&&(c=Z(c,m+1,0));break}while($n(c.d,r+=10,d));return oe=!0,Z(c,m,d)};_.minus=_.sub=function(o){var e,t,n,r,i,s,a,c,u,l,m,d,p=this,y=p.constructor;if(o=new y(o),!p.d||!o.d)return!p.s||!o.s?o=new y(NaN):p.d?o.s=-o.s:o=new y(o.d||p.s!==o.s?p:NaN),o;if(p.s!=o.s)return o.s=-o.s,p.plus(o);if(u=p.d,d=o.d,a=y.precision,c=y.rounding,!u[0]||!d[0]){if(d[0])o.s=-o.s;else if(u[0])o=new y(p);else return new y(c===3?-0:0);return oe?Z(o,a,c):o}if(t=He(o.e/ee),l=He(p.e/ee),u=u.slice(),i=l-t,i){for(m=i<0,m?(e=u,i=-i,s=d.length):(e=d,t=l,s=u.length),n=Math.max(Math.ceil(a/ee),s)+2,i>n&&(i=n,e.length=1),e.reverse(),n=i;n--;)e.push(0);e.reverse()}else{for(n=u.length,s=d.length,m=n<s,m&&(s=n),n=0;n<s;n++)if(u[n]!=d[n]){m=u[n]<d[n];break}i=0}for(m&&(e=u,u=d,d=e,o.s=-o.s),s=u.length,n=d.length-s;n>0;--n)u[s++]=0;for(n=d.length;n>i;){if(u[--n]<d[n]){for(r=n;r&&u[--r]===0;)u[r]=kt-1;--u[r],u[n]+=kt}u[n]-=d[n]}for(;u[--s]===0;)u.pop();for(;u[0]===0;u.shift())--t;return u[0]?(o.d=u,o.e=Jo(u,t),oe?Z(o,a,c):o):new y(c===3?-0:0)};_.modulo=_.mod=function(o){var e,t=this,n=t.constructor;return o=new n(o),!t.d||!o.s||o.d&&!o.d[0]?new n(NaN):!o.d||t.d&&!t.d[0]?Z(new n(t),n.precision,n.rounding):(oe=!1,n.modulo==9?(e=Pe(t,o.abs(),0,3,1),e.s*=o.s):e=Pe(t,o,0,n.modulo,1),e=e.times(o),oe=!0,t.minus(e))};_.naturalExponential=_.exp=function(){return ui(this)};_.naturalLogarithm=_.ln=function(){return $t(this)};_.negated=_.neg=function(){var o=new this.constructor(this);return o.s=-o.s,Z(o)};_.plus=_.add=function(o){var e,t,n,r,i,s,a,c,u,l,m=this,d=m.constructor;if(o=new d(o),!m.d||!o.d)return!m.s||!o.s?o=new d(NaN):m.d||(o=new d(o.d||m.s===o.s?m:NaN)),o;if(m.s!=o.s)return o.s=-o.s,m.minus(o);if(u=m.d,l=o.d,a=d.precision,c=d.rounding,!u[0]||!l[0])return l[0]||(o=new d(m)),oe?Z(o,a,c):o;if(i=He(m.e/ee),n=He(o.e/ee),u=u.slice(),r=i-n,r){for(r<0?(t=u,r=-r,s=l.length):(t=l,n=i,s=u.length),i=Math.ceil(a/ee),s=i>s?i+1:s+1,r>s&&(r=s,t.length=1),t.reverse();r--;)t.push(0);t.reverse()}for(s=u.length,r=l.length,s-r<0&&(r=s,t=l,l=u,u=t),e=0;r;)e=(u[--r]=u[r]+l[r]+e)/kt|0,u[r]%=kt;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return o.d=u,o.e=Jo(u,n),oe?Z(o,a,c):o};_.precision=_.sd=function(o){var e,t=this;if(o!==void 0&&o!==!!o&&o!==1&&o!==0)throw Error(Jt+o);return t.d?(e=ua(t.d),o&&t.e+1>e&&(e=t.e+1)):e=NaN,e};_.round=function(){var o=this,e=o.constructor;return Z(new e(o),o.e+1,e.rounding)};_.sine=_.sin=function(){var o,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(o=n.precision,e=n.rounding,n.precision=o+Math.max(t.e,t.sd())+ee,n.rounding=1,t=Xc(n,da(n,t)),n.precision=o,n.rounding=e,Z(Et>2?t.neg():t,o,e,!0)):new n(NaN)};_.squareRoot=_.sqrt=function(){var o,e,t,n,r,i,s=this,a=s.d,c=s.e,u=s.s,l=s.constructor;if(u!==1||!a||!a[0])return new l(!u||u<0&&(!a||a[0])?NaN:a?s:1/0);for(oe=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=Xe(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=He((c+1)/2)-(c<0||c%2),u==1/0?e="5e"+c:(e=u.toExponential(),e=e.slice(0,e.indexOf("e")+1)+c),n=new l(e)):n=new l(u.toString()),t=(c=l.precision)+3;;)if(i=n,n=i.plus(Pe(s,i,t+2,1)).times(.5),Xe(i.d).slice(0,t)===(e=Xe(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!r&&e=="4999"){if(!r&&(Z(i,c+1,0),i.times(i).eq(s))){n=i;break}t+=4,r=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(Z(n,c+1,1),o=!n.times(n).eq(s));break}return oe=!0,Z(n,c,l.rounding,o)};_.tangent=_.tan=function(){var o,e,t=this,n=t.constructor;return t.isFinite()?t.isZero()?new n(t):(o=n.precision,e=n.rounding,n.precision=o+10,n.rounding=1,t=t.sin(),t.s=1,t=Pe(t,new n(1).minus(t.times(t)).sqrt(),o+10,0),n.precision=o,n.rounding=e,Z(Et==2||Et==4?t.neg():t,o,e,!0)):new n(NaN)};_.times=_.mul=function(o){var e,t,n,r,i,s,a,c,u,l=this,m=l.constructor,d=l.d,p=(o=new m(o)).d;if(o.s*=l.s,!d||!d[0]||!p||!p[0])return new m(!o.s||d&&!d[0]&&!p||p&&!p[0]&&!d?NaN:!d||!p?o.s/0:o.s*0);for(t=He(l.e/ee)+He(o.e/ee),c=d.length,u=p.length,c<u&&(i=d,d=p,p=i,s=c,c=u,u=s),i=[],s=c+u,n=s;n--;)i.push(0);for(n=u;--n>=0;){for(e=0,r=c+n;r>n;)a=i[r]+p[n]*d[r-n-1]+e,i[r--]=a%kt|0,e=a/kt|0;i[r]=(i[r]+e)%kt|0}for(;!i[--s];)i.pop();return e?++t:i.shift(),o.d=i,o.e=Jo(i,t),oe?Z(o,m.precision,m.rounding):o};_.toBinary=function(o,e){return li(this,2,o,e)};_.toDecimalPlaces=_.toDP=function(o,e){var t=this,n=t.constructor;return t=new n(t),o===void 0?t:(at(o,0,en),e===void 0?e=n.rounding:at(e,0,8),Z(t,o+t.e+1,e))};_.toExponential=function(o,e){var t,n=this,r=n.constructor;return o===void 0?t=Ct(n,!0):(at(o,0,en),e===void 0?e=r.rounding:at(e,0,8),n=Z(new r(n),o+1,e),t=Ct(n,!0,o+1)),n.isNeg()&&!n.isZero()?"-"+t:t};_.toFixed=function(o,e){var t,n,r=this,i=r.constructor;return o===void 0?t=Ct(r):(at(o,0,en),e===void 0?e=i.rounding:at(e,0,8),n=Z(new i(r),o+r.e+1,e),t=Ct(n,!1,o+n.e+1)),r.isNeg()&&!r.isZero()?"-"+t:t};_.toFraction=function(o){var e,t,n,r,i,s,a,c,u,l,m,d,p=this,y=p.d,f=p.constructor;if(!y)return new f(p);if(u=t=new f(1),n=c=new f(0),e=new f(n),i=e.e=ua(y)-p.e-1,s=i%ee,e.d[0]=Me(10,s<0?ee+s:s),o==null)o=i>0?e:u;else{if(a=new f(o),!a.isInt()||a.lt(u))throw Error(Jt+a);o=a.gt(e)?i>0?e:u:a}for(oe=!1,a=new f(Xe(y)),l=f.precision,f.precision=i=y.length*ee*2;m=Pe(a,e,0,1,1),r=t.plus(m.times(n)),r.cmp(o)!=1;)t=n,n=r,r=u,u=c.plus(m.times(r)),c=r,r=e,e=a.minus(m.times(r)),a=r;return r=Pe(o.minus(t),n,0,1,1),c=c.plus(r.times(u)),t=t.plus(r.times(n)),c.s=u.s=p.s,d=Pe(u,n,i,1).minus(p).abs().cmp(Pe(c,t,i,1).minus(p).abs())<1?[u,n]:[c,t],f.precision=l,oe=!0,d};_.toHexadecimal=_.toHex=function(o,e){return li(this,16,o,e)};_.toNearest=function(o,e){var t=this,n=t.constructor;if(t=new n(t),o==null){if(!t.d)return t;o=new n(1),e=n.rounding}else{if(o=new n(o),e===void 0?e=n.rounding:at(e,0,8),!t.d)return o.s?t:o;if(!o.d)return o.s&&(o.s=t.s),o}return o.d[0]?(oe=!1,t=Pe(t,o,0,e,1).times(o),oe=!0,Z(t)):(o.s=t.s,t=o),t};_.toNumber=function(){return+this};_.toOctal=function(o,e){return li(this,8,o,e)};_.toPower=_.pow=function(o){var e,t,n,r,i,s,a=this,c=a.constructor,u=+(o=new c(o));if(!a.d||!o.d||!a.d[0]||!o.d[0])return new c(Me(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,i=c.rounding,o.eq(1))return Z(a,n,i);if(e=He(o.e/ee),e>=o.d.length-1&&(t=u<0?-u:u)<=Wc)return r=ca(c,a,t,n),o.s<0?new c(1).div(r):Z(r,n,i);if(s=a.s,s<0){if(e<o.d.length-1)return new c(NaN);if((o.d[e]&1)==0&&(s=1),a.e==0&&a.d[0]==1&&a.d.length==1)return a.s=s,a}return t=Me(+a,u),e=t==0||!isFinite(t)?He(u*(Math.log("0."+Xe(a.d))/Math.LN10+a.e+1)):new c(t+"").e,e>c.maxE+1||e<c.minE-1?new c(e>0?s/0:0):(oe=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),r=ui(o.times($t(a,n+t)),n),r.d&&(r=Z(r,n+5,1),$n(r.d,n,i)&&(e=n+10,r=Z(ui(o.times($t(a,e+t)),e),e+5,1),+Xe(r.d).slice(n+1,n+15)+1==1e14&&(r=Z(r,n+1,0)))),r.s=s,oe=!0,c.rounding=i,Z(r,n,i))};_.toPrecision=function(o,e){var t,n=this,r=n.constructor;return o===void 0?t=Ct(n,n.e<=r.toExpNeg||n.e>=r.toExpPos):(at(o,1,en),e===void 0?e=r.rounding:at(e,0,8),n=Z(new r(n),o,e),t=Ct(n,o<=n.e||n.e<=r.toExpNeg,o)),n.isNeg()&&!n.isZero()?"-"+t:t};_.toSignificantDigits=_.toSD=function(o,e){var t=this,n=t.constructor;return o===void 0?(o=n.precision,e=n.rounding):(at(o,1,en),e===void 0?e=n.rounding:at(e,0,8)),Z(new n(t),o,e)};_.toString=function(){var o=this,e=o.constructor,t=Ct(o,o.e<=e.toExpNeg||o.e>=e.toExpPos);return o.isNeg()&&!o.isZero()?"-"+t:t};_.truncated=_.trunc=function(){return Z(new this.constructor(this),this.e+1,1)};_.valueOf=_.toJSON=function(){var o=this,e=o.constructor,t=Ct(o,o.e<=e.toExpNeg||o.e>=e.toExpPos);return o.isNeg()?"-"+t:t};function Xe(o){var e,t,n,r=o.length-1,i="",s=o[0];if(r>0){for(i+=s,e=1;e<r;e++)n=o[e]+"",t=ee-n.length,t&&(i+=Zt(t)),i+=n;s=o[e],n=s+"",t=ee-n.length,t&&(i+=Zt(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return i+s}function at(o,e,t){if(o!==~~o||o<e||o>t)throw Error(Jt+o)}function $n(o,e,t,n){var r,i,s,a;for(i=o[0];i>=10;i/=10)--e;return--e<0?(e+=ee,r=0):(r=Math.ceil((e+1)/ee),e%=ee),i=Me(10,ee-e),a=o[r]%i|0,n==null?e<3?(e==0?a=a/100|0:e==1&&(a=a/10|0),s=t<4&&a==99999||t>3&&a==49999||a==5e4||a==0):s=(t<4&&a+1==i||t>3&&a+1==i/2)&&(o[r+1]/i/100|0)==Me(10,e-2)-1||(a==i/2||a==0)&&(o[r+1]/i/100|0)==0:e<4?(e==0?a=a/1e3|0:e==1?a=a/100|0:e==2&&(a=a/10|0),s=(n||t<4)&&a==9999||!n&&t>3&&a==4999):s=((n||t<4)&&a+1==i||!n&&t>3&&a+1==i/2)&&(o[r+1]/i/1e3|0)==Me(10,e-3)-1,s}function Qo(o,e,t){for(var n,r=[0],i,s=0,a=o.length;s<a;){for(i=r.length;i--;)r[i]*=e;for(r[0]+=ii.indexOf(o.charAt(s++)),n=0;n<r.length;n++)r[n]>t-1&&(r[n+1]===void 0&&(r[n+1]=0),r[n+1]+=r[n]/t|0,r[n]%=t)}return r.reverse()}function Uc(o,e){var t,n,r;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),r=(1/er(4,t)).toString()):(t=16,r="2.3283064365386962890625e-10"),o.precision+=t,e=Mn(o,1,e.times(r),new o(1));for(var i=t;i--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return o.precision-=t,e}var Pe=function(){function o(n,r,i){var s,a=0,c=n.length;for(n=n.slice();c--;)s=n[c]*r+a,n[c]=s%i|0,a=s/i|0;return a&&n.unshift(a),n}function e(n,r,i,s){var a,c;if(i!=s)c=i>s?1:-1;else for(a=c=0;a<i;a++)if(n[a]!=r[a]){c=n[a]>r[a]?1:-1;break}return c}function t(n,r,i,s){for(var a=0;i--;)n[i]-=a,a=n[i]<r[i]?1:0,n[i]=a*s+n[i]-r[i];for(;!n[0]&&n.length>1;)n.shift()}return function(n,r,i,s,a,c){var u,l,m,d,p,y,f,b,g,h,P,k,B,T,S,x,R,I,N,q,D=n.constructor,J=n.s==r.s?1:-1,G=n.d,W=r.d;if(!G||!G[0]||!W||!W[0])return new D(!n.s||!r.s||(G?W&&G[0]==W[0]:!W)?NaN:G&&G[0]==0||!W?J*0:J/0);for(c?(p=1,l=n.e-r.e):(c=kt,p=ee,l=He(n.e/p)-He(r.e/p)),N=W.length,R=G.length,g=new D(J),h=g.d=[],m=0;W[m]==(G[m]||0);m++);if(W[m]>(G[m]||0)&&l--,i==null?(T=i=D.precision,s=D.rounding):a?T=i+(n.e-r.e)+1:T=i,T<0)h.push(1),y=!0;else{if(T=T/p+2|0,m=0,N==1){for(d=0,W=W[0],T++;(m<R||d)&&T--;m++)S=d*c+(G[m]||0),h[m]=S/W|0,d=S%W|0;y=d||m<R}else{for(d=c/(W[0]+1)|0,d>1&&(W=o(W,d,c),G=o(G,d,c),N=W.length,R=G.length),x=N,P=G.slice(0,N),k=P.length;k<N;)P[k++]=0;q=W.slice(),q.unshift(0),I=W[0],W[1]>=c/2&&++I;do d=0,u=e(W,P,N,k),u<0?(B=P[0],N!=k&&(B=B*c+(P[1]||0)),d=B/I|0,d>1?(d>=c&&(d=c-1),f=o(W,d,c),b=f.length,k=P.length,u=e(f,P,b,k),u==1&&(d--,t(f,N<b?q:W,b,c))):(d==0&&(u=d=1),f=W.slice()),b=f.length,b<k&&f.unshift(0),t(P,f,k,c),u==-1&&(k=P.length,u=e(W,P,N,k),u<1&&(d++,t(P,N<k?q:W,k,c))),k=P.length):u===0&&(d++,P=[0]),h[m++]=d,u&&P[0]?P[k++]=G[x]||0:(P=[G[x]],k=1);while((x++<R||P[0]!==void 0)&&T--);y=P[0]!==void 0}h[0]||h.shift()}if(p==1)g.e=l,oa=y;else{for(m=1,d=h[0];d>=10;d/=10)m++;g.e=m+l*p-1,Z(g,a?i+g.e+1:i,s,y)}return g}}();function Z(o,e,t,n){var r,i,s,a,c,u,l,m,d,p=o.constructor;e:if(e!=null){if(m=o.d,!m)return o;for(r=1,a=m[0];a>=10;a/=10)r++;if(i=e-r,i<0)i+=ee,s=e,l=m[d=0],c=l/Me(10,r-s-1)%10|0;else if(d=Math.ceil((i+1)/ee),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=c=0,r=1,i%=ee,s=i-ee+1}else break e;else{for(l=a=m[d],r=1;a>=10;a/=10)r++;i%=ee,s=i-ee+r,c=s<0?0:l/Me(10,r-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%Me(10,r-s-1)),u=t<4?(c||n)&&(t==0||t==(o.s<0?3:2)):c>5||c==5&&(t==4||n||t==6&&(i>0?s>0?l/Me(10,r-s):0:m[d-1])%10&1||t==(o.s<0?8:7)),e<1||!m[0])return m.length=0,u?(e-=o.e+1,m[0]=Me(10,(ee-e%ee)%ee),o.e=-e||0):m[0]=o.e=0,o;if(i==0?(m.length=d,a=1,d--):(m.length=d+1,a=Me(10,ee-i),m[d]=s>0?(l/Me(10,r-s)%Me(10,s)|0)*a:0),u)for(;;)if(d==0){for(i=1,s=m[0];s>=10;s/=10)i++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;i!=a&&(o.e++,m[0]==kt&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=kt)break;m[d--]=0,a=1}for(i=m.length;m[--i]===0;)m.pop()}return oe&&(o.e>p.maxE?(o.d=null,o.e=NaN):o.e<p.minE&&(o.e=0,o.d=[0])),o}function Ct(o,e,t){if(!o.isFinite())return ma(o);var n,r=o.e,i=Xe(o.d),s=i.length;return e?(t&&(n=t-s)>0?i=i.charAt(0)+"."+i.slice(1)+Zt(n):s>1&&(i=i.charAt(0)+"."+i.slice(1)),i=i+(o.e<0?"e":"e+")+o.e):r<0?(i="0."+Zt(-r-1)+i,t&&(n=t-s)>0&&(i+=Zt(n))):r>=s?(i+=Zt(r+1-s),t&&(n=t-r-1)>0&&(i=i+"."+Zt(n))):((n=r+1)<s&&(i=i.slice(0,n)+"."+i.slice(n)),t&&(n=t-s)>0&&(r+1===s&&(i+="."),i+=Zt(n))),i}function Jo(o,e){var t=o[0];for(e*=ee;t>=10;t/=10)e++;return e}function Zo(o,e,t){if(e>qc)throw oe=!0,t&&(o.precision=t),Error(ra);return Z(new o(jo),e,1,!0)}function ht(o,e,t){if(e>ai)throw Error(ra);return Z(new o(Ho),e,t,!0)}function ua(o){var e=o.length-1,t=e*ee+1;if(e=o[e],e){for(;e%10==0;e/=10)t--;for(e=o[0];e>=10;e/=10)t++}return t}function Zt(o){for(var e="";o--;)e+="0";return e}function ca(o,e,t,n){var r,i=new o(1),s=Math.ceil(n/ee+4);for(oe=!1;;){if(t%2&&(i=i.times(e),ta(i.d,s)&&(r=!0)),t=He(t/2),t===0){t=i.d.length-1,r&&i.d[t]===0&&++i.d[t];break}e=e.times(e),ta(e.d,s)}return oe=!0,i}function ea(o){return o.d[o.d.length-1]&1}function la(o,e,t){for(var n,r=new o(e[0]),i=0;++i<e.length;)if(n=new o(e[i]),n.s)r[t](n)&&(r=n);else{r=n;break}return r}function ui(o,e){var t,n,r,i,s,a,c,u=0,l=0,m=0,d=o.constructor,p=d.rounding,y=d.precision;if(!o.d||!o.d[0]||o.e>17)return new d(o.d?o.d[0]?o.s<0?0:1/0:1:o.s?o.s<0?0:o:0/0);for(e==null?(oe=!1,c=y):c=e,a=new d(.03125);o.e>-2;)o=o.times(a),m+=5;for(n=Math.log(Me(2,m))/Math.LN10*2+5|0,c+=n,t=i=s=new d(1),d.precision=c;;){if(i=Z(i.times(o),c,1),t=t.times(++l),a=s.plus(Pe(i,t,c,1)),Xe(a.d).slice(0,c)===Xe(s.d).slice(0,c)){for(r=m;r--;)s=Z(s.times(s),c,1);if(e==null)if(u<3&&$n(s.d,c-n,p,u))d.precision=c+=10,t=i=a=new d(1),l=0,u++;else return Z(s,d.precision=y,p,oe=!0);else return d.precision=y,s}s=a}}function $t(o,e){var t,n,r,i,s,a,c,u,l,m,d,p=1,y=10,f=o,b=f.d,g=f.constructor,h=g.rounding,P=g.precision;if(f.s<0||!b||!b[0]||!f.e&&b[0]==1&&b.length==1)return new g(b&&!b[0]?-1/0:f.s!=1?NaN:b?0:f);if(e==null?(oe=!1,l=P):l=e,g.precision=l+=y,t=Xe(b),n=t.charAt(0),Math.abs(i=f.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)f=f.times(o),t=Xe(f.d),n=t.charAt(0),p++;i=f.e,n>1?(f=new g("0."+t),i++):f=new g(n+"."+t.slice(1))}else return u=Zo(g,l+2,P).times(i+""),f=$t(new g(n+"."+t.slice(1)),l-y).plus(u),g.precision=P,e==null?Z(f,P,h,oe=!0):f;for(m=f,c=s=f=Pe(f.minus(1),f.plus(1),l,1),d=Z(f.times(f),l,1),r=3;;){if(s=Z(s.times(d),l,1),u=c.plus(Pe(s,new g(r),l,1)),Xe(u.d).slice(0,l)===Xe(c.d).slice(0,l))if(c=c.times(2),i!==0&&(c=c.plus(Zo(g,l+2,P).times(i+""))),c=Pe(c,new g(p),l,1),e==null)if($n(c.d,l-y,h,a))g.precision=l+=y,u=s=f=Pe(m.minus(1),m.plus(1),l,1),d=Z(f.times(f),l,1),r=a=1;else return Z(c,g.precision=P,h,oe=!0);else return g.precision=P,c;c=u,r+=2}}function ma(o){return String(o.s*o.s/0)}function ci(o,e){var t,n,r;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(r=e.length;e.charCodeAt(r-1)===48;--r);if(e=e.slice(n,r),e){if(r-=n,o.e=t=t-n-1,o.d=[],n=(t+1)%ee,t<0&&(n+=ee),n<r){for(n&&o.d.push(+e.slice(0,n)),r-=ee;n<r;)o.d.push(+e.slice(n,n+=ee));e=e.slice(n),n=ee-e.length}else n-=r;for(;n--;)e+="0";o.d.push(+e),oe&&(o.e>o.constructor.maxE?(o.d=null,o.e=NaN):o.e<o.constructor.minE&&(o.e=0,o.d=[0]))}else o.e=0,o.d=[0];return o}function Gc(o,e){var t,n,r,i,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),aa.test(e))return ci(o,e)}else if(e==="Infinity"||e==="NaN")return+e||(o.s=NaN),o.e=NaN,o.d=null,o;if(Ec.test(e))t=16,e=e.toLowerCase();else if(Fc.test(e))t=2;else if(Dc.test(e))t=8;else throw Error(Jt+e);for(i=e.search(/p/i),i>0?(c=+e.slice(i+1),e=e.substring(2,i)):e=e.slice(2),i=e.indexOf("."),s=i>=0,n=o.constructor,s&&(e=e.replace(".",""),a=e.length,i=a-i,r=ca(n,new n(t),i,i*2)),u=Qo(e,t,kt),l=u.length-1,i=l;u[i]===0;--i)u.pop();return i<0?new n(o.s*0):(o.e=Jo(u,l),o.d=u,oe=!1,s&&(o=Pe(o,r,a*4)),c&&(o=o.times(Math.abs(c)<54?Me(2,c):Jn.pow(2,c))),oe=!0,o)}function Xc(o,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Mn(o,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/er(5,t)),e=Mn(o,2,e,e);for(var r,i=new o(5),s=new o(16),a=new o(20);t--;)r=e.times(e),e=e.times(i.plus(r.times(s.times(r).minus(a))));return e}function Mn(o,e,t,n,r){var i,s,a,c,u=1,l=o.precision,m=Math.ceil(l/ee);for(oe=!1,c=t.times(t),a=new o(n);;){if(s=Pe(a.times(c),new o(e++*e++),l,1),a=r?n.plus(s):n.minus(s),n=Pe(s.times(c),new o(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(i=m;s.d[i]===a.d[i]&&i--;);if(i==-1)break}i=a,a=n,n=s,s=i,u++}return oe=!0,s.d.length=m+1,s}function er(o,e){for(var t=o;--e;)t*=o;return t}function da(o,e){var t,n=e.s<0,r=ht(o,o.precision,1),i=r.times(.5);if(e=e.abs(),e.lte(i))return Et=n?4:1,e;if(t=e.divToInt(r),t.isZero())Et=n?3:2;else{if(e=e.minus(t.times(r)),e.lte(i))return Et=ea(t)?n?2:3:n?4:1,e;Et=ea(t)?n?1:4:n?3:2}return e.minus(r).abs()}function li(o,e,t,n){var r,i,s,a,c,u,l,m,d,p=o.constructor,y=t!==void 0;if(y?(at(t,1,en),n===void 0?n=p.rounding:at(n,0,8)):(t=p.precision,n=p.rounding),!o.isFinite())l=ma(o);else{for(l=Ct(o),s=l.indexOf("."),y?(r=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):r=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=Qo(Ct(d),10,r),d.e=d.d.length),m=Qo(l,10,r),i=c=m.length;m[--c]==0;)m.pop();if(!m[0])l=y?"0p+0":"0";else{if(s<0?i--:(o=new p(o),o.d=m,o.e=i,o=Pe(o,d,t,n,0,r),m=o.d,i=o.e,u=oa),s=m[t],a=r/2,u=u||m[t+1]!==void 0,u=n<4?(s!==void 0||u)&&(n===0||n===(o.s<0?3:2)):s>a||s===a&&(n===4||u||n===6&&m[t-1]&1||n===(o.s<0?8:7)),m.length=t,u)for(;++m[--t]>r-1;)m[t]=0,t||(++i,m.unshift(1));for(c=m.length;!m[c-1];--c);for(s=0,l="";s<c;s++)l+=ii.charAt(m[s]);if(y){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(m=Qo(l,r,e),c=m.length;!m[c-1];--c);for(s=1,l="1.";s<c;s++)l+=ii.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(i<0?"p":"p+")+i}else if(i<0){for(;++i;)l="0"+l;l="0."+l}else if(++i>c)for(i-=c;i--;)l+="0";else i<c&&(l=l.slice(0,i)+"."+l.slice(i))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return o.s<0?"-"+l:l}function ta(o,e){if(o.length>e)return o.length=e,!0}function zc(o){return new this(o).abs()}function Yc(o){return new this(o).acos()}function Qc(o){return new this(o).acosh()}function jc(o,e){return new this(o).plus(e)}function Hc(o){return new this(o).asin()}function Zc(o){return new this(o).asinh()}function $c(o){return new this(o).atan()}function Jc(o){return new this(o).atanh()}function el(o,e){o=new this(o),e=new this(e);var t,n=this.precision,r=this.rounding,i=n+4;return!o.s||!e.s?t=new this(NaN):!o.d&&!e.d?(t=ht(this,i,1).times(e.s>0?.25:.75),t.s=o.s):!e.d||o.isZero()?(t=e.s<0?ht(this,n,r):new this(0),t.s=o.s):!o.d||e.isZero()?(t=ht(this,i,1).times(.5),t.s=o.s):e.s<0?(this.precision=i,this.rounding=1,t=this.atan(Pe(o,e,i,1)),e=ht(this,i,1),this.precision=n,this.rounding=r,t=o.s<0?t.minus(e):t.plus(e)):t=this.atan(Pe(o,e,i,1)),t}function tl(o){return new this(o).cbrt()}function nl(o){return Z(o=new this(o),o.e+1,2)}function ol(o,e,t){return new this(o).clamp(e,t)}function rl(o){if(!o||typeof o!="object")throw Error($o+"Object expected");var e,t,n,r=o.defaults===!0,i=["precision",1,en,"rounding",0,8,"toExpNeg",-Nn,0,"toExpPos",0,Nn,"maxE",0,Nn,"minE",-Nn,0,"modulo",0,9];for(e=0;e<i.length;e+=3)if(t=i[e],r&&(this[t]=si[t]),(n=o[t])!==void 0)if(He(n)===n&&n>=i[e+1]&&n<=i[e+2])this[t]=n;else throw Error(Jt+t+": "+n);if(t="crypto",r&&(this[t]=si[t]),(n=o[t])!==void 0)if(n===!0||n===!1||n===0||n===1)if(n)if(typeof crypto<"u"&&crypto&&(crypto.getRandomValues||crypto.randomBytes))this[t]=!0;else throw Error(ia);else this[t]=!1;else throw Error(Jt+t+": "+n);return this}function il(o){return new this(o).cos()}function sl(o){return new this(o).cosh()}function pa(o){var e,t,n;function r(i){var s,a,c,u=this;if(!(u instanceof r))return new r(i);if(u.constructor=r,na(i)){u.s=i.s,oe?!i.d||i.e>r.maxE?(u.e=NaN,u.d=null):i.e<r.minE?(u.e=0,u.d=[0]):(u.e=i.e,u.d=i.d.slice()):(u.e=i.e,u.d=i.d?i.d.slice():i.d);return}if(c=typeof i,c==="number"){if(i===0){u.s=1/i<0?-1:1,u.e=0,u.d=[0];return}if(i<0?(i=-i,u.s=-1):u.s=1,i===~~i&&i<1e7){for(s=0,a=i;a>=10;a/=10)s++;oe?s>r.maxE?(u.e=NaN,u.d=null):s<r.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[i]):(u.e=s,u.d=[i]);return}else if(i*0!==0){i||(u.s=NaN),u.e=NaN,u.d=null;return}return ci(u,i.toString())}else if(c!=="string")throw Error(Jt+i);return(a=i.charCodeAt(0))===45?(i=i.slice(1),u.s=-1):(a===43&&(i=i.slice(1)),u.s=1),aa.test(i)?ci(u,i):Gc(u,i)}if(r.prototype=_,r.ROUND_UP=0,r.ROUND_DOWN=1,r.ROUND_CEIL=2,r.ROUND_FLOOR=3,r.ROUND_HALF_UP=4,r.ROUND_HALF_DOWN=5,r.ROUND_HALF_EVEN=6,r.ROUND_HALF_CEIL=7,r.ROUND_HALF_FLOOR=8,r.EUCLID=9,r.config=r.set=rl,r.clone=pa,r.isDecimal=na,r.abs=zc,r.acos=Yc,r.acosh=Qc,r.add=jc,r.asin=Hc,r.asinh=Zc,r.atan=$c,r.atanh=Jc,r.atan2=el,r.cbrt=tl,r.ceil=nl,r.clamp=ol,r.cos=il,r.cosh=sl,r.div=al,r.exp=ul,r.floor=cl,r.hypot=ll,r.ln=ml,r.log=dl,r.log10=fl,r.log2=pl,r.max=yl,r.min=bl,r.mod=gl,r.mul=Al,r.pow=wl,r.random=Pl,r.round=hl,r.sign=kl,r.sin=Tl,r.sinh=Il,r.sqrt=Bl,r.sub=xl,r.sum=Sl,r.tan=Kl,r.tanh=Cl,r.trunc=Rl,o===void 0&&(o={}),o&&o.defaults!==!0)for(n=["precision","rounding","toExpNeg","toExpPos","maxE","minE","modulo","crypto"],e=0;e<n.length;)o.hasOwnProperty(t=n[e++])||(o[t]=this[t]);return r.config(o),r}function al(o,e){return new this(o).div(e)}function ul(o){return new this(o).exp()}function cl(o){return Z(o=new this(o),o.e+1,3)}function ll(){var o,e,t=new this(0);for(oe=!1,o=0;o<arguments.length;)if(e=new this(arguments[o++]),e.d)t.d&&(t=t.plus(e.times(e)));else{if(e.s)return oe=!0,new this(1/0);t=e}return oe=!0,t.sqrt()}function na(o){return o instanceof Jn||o&&o.toStringTag===sa||!1}function ml(o){return new this(o).ln()}function dl(o,e){return new this(o).log(e)}function pl(o){return new this(o).log(2)}function fl(o){return new this(o).log(10)}function yl(){return la(this,arguments,"lt")}function bl(){return la(this,arguments,"gt")}function gl(o,e){return new this(o).mod(e)}function Al(o,e){return new this(o).mul(e)}function wl(o,e){return new this(o).pow(e)}function Pl(o){var e,t,n,r,i=0,s=new this(1),a=[];if(o===void 0?o=this.precision:at(o,1,en),n=Math.ceil(o/ee),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));i<n;)r=e[i],r>=429e7?e[i]=crypto.getRandomValues(new Uint32Array(1))[0]:a[i++]=r%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);i<n;)r=e[i]+(e[i+1]<<8)+(e[i+2]<<16)+((e[i+3]&127)<<24),r>=214e7?crypto.randomBytes(4).copy(e,i):(a.push(r%1e7),i+=4);i=n/4}else throw Error(ia);else for(;i<n;)a[i++]=Math.random()*1e7|0;for(n=a[--i],o%=ee,n&&o&&(r=Me(10,ee-o),a[i]=(n/r|0)*r);a[i]===0;i--)a.pop();if(i<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=ee)a.shift();for(n=1,r=a[0];r>=10;r/=10)n++;n<ee&&(t-=ee-n)}return s.e=t,s.d=a,s}function hl(o){return Z(o=new this(o),o.e+1,this.rounding)}function kl(o){return o=new this(o),o.d?o.d[0]?o.s:0*o.s:o.s||NaN}function Tl(o){return new this(o).sin()}function Il(o){return new this(o).sinh()}function Bl(o){return new this(o).sqrt()}function xl(o,e){return new this(o).sub(e)}function Sl(){var o=0,e=arguments,t=new this(e[o]);for(oe=!1;t.s&&++o<e.length;)t=t.plus(e[o]);return oe=!0,Z(t,this.precision,this.rounding)}function Kl(o){return new this(o).tan()}function Cl(o){return new this(o).tanh()}function Rl(o){return Z(o=new this(o),o.e+1,1)}_[Symbol.for("nodejs.util.inspect.custom")]=_.toString;_[Symbol.toStringTag]="Decimal";var Jn=_.constructor=pa(si);jo=new Jn(jo);Ho=new Jn(Ho);var V=Jn;import{PublicKey as yi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ll}from"@solana/spl-token";import{PublicKey as Be,SystemProgram as fa,SYSVAR_RENT_PUBKEY as Ol}from"@solana/web3.js";function A({pubkey:o,isSigner:e=!1,isWritable:t=!0}){return{pubkey:o,isWritable:t,isSigner:e}}var mi=[A({pubkey:Ll,isWritable:!1}),A({pubkey:fa.programId,isWritable:!1}),A({pubkey:Ol,isWritable:!1})];function di({publicKey:o,transformSol:e}){let t=pi(o.toString());if(t instanceof Be)return e&&t.equals(_e)?$:t;if(e&&t.toString()===_e.toBase58())return $;if(typeof t=="string"){if(t===Be.default.toBase58())return Be.default;try{return new Be(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function pi(o){try{return new Be(o)}catch{return o}}var tr=new Be("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),nr=new Be("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ut=new Be("SysvarRent111111111111111111111111111111111"),fi=new Be("SysvarC1ock11111111111111111111111111111111"),_n=new Be("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),or=new Be("Sysvar1nstructions1111111111111111111111111"),rr=fa.programId,Mf=new Be("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),_f=new Be("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Vf=new Be("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),vf=new Be("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Ff=new Be("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ef=new Be("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Df=new Be("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Wf=new Be("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),qf=new Be("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Uf=new Be("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Gf=new Be("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),$=new Be("So11111111111111111111111111111111111111112"),_e=Be.default;function mt(o){return di({publicKey:o,transformSol:!0})}import{PublicKey as Nl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ya}from"@solana/spl-token";var Rt={chainId:101,address:Nl.default.toBase58(),programId:ya.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Ve={chainId:101,address:"So11111111111111111111111111111111111111112",programId:ya.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 bi=class{constructor({mint:e,decimals:t,symbol:n,name:r,skipMint:i=!1,isToken2022:s=!1}){if(e===_e.toBase58()||e instanceof yi&&_e.equals(e)){this.decimals=Ve.decimals,this.symbol=Ve.symbol,this.name=Ve.name,this.mint=new yi(Ve.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=r||e.toString().substring(0,6),this.mint=i?yi.default:di({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ye=bi;ye.WSOL=new bi(F(C({},Ve),{mint:Ve.address}));import sr from"big.js";import Vl from"bn.js";import vl from"decimal.js-light";import Ml from"toformat";var _l=Ml,eo=_l;var ir=ce("module/fraction"),gi=eo(sr),to=eo(vl),Fl={[0]:to.ROUND_DOWN,[1]:to.ROUND_HALF_UP,[2]:to.ROUND_UP},El={[0]:sr.roundDown,[1]:sr.roundHalfUp,[2]:sr.roundUp},re=class{constructor(e,t=new Vl(1)){this.numerator=Y(e),this.denominator=Y(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new re(this.denominator,this.numerator)}add(e){let t=e instanceof re?e:new re(Y(e));return this.denominator.eq(t.denominator)?new re(this.numerator.add(t.numerator),this.denominator):new re(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof re?e:new re(Y(e));return this.denominator.eq(t.denominator)?new re(this.numerator.sub(t.numerator),this.denominator):new re(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof re?e:new re(Y(e));return new re(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof re?e:new re(Y(e));return new re(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||ir.logWithError(`${e} is not an integer.`),e<=0&&ir.logWithError(`${e} is not positive.`),to.set({precision:e+1,rounding:Fl[n]});let r=new to(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||ir.logWithError(`${e} is not an integer.`),e<0&&ir.logWithError(`${e} is negative.`),gi.DP=e,gi.RM=El[n]||1,new gi(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Dl=ce("Raydium_price"),We=class extends re{constructor(t){let{baseToken:n,quoteToken:r,numerator:i,denominator:s}=t;super(i,s);this.baseToken=n,this.quoteToken=r,this.scalar=new re(wi(n.decimals),wi(r.decimals))}get raw(){return new re(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new We({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Dl.logWithError("mul token not equals");let n=super.mul(t);return new We({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,r){return this.adjusted.toSignificant(t,n,r)}toFixed(t=this.quoteToken.decimals,n,r){return this.adjusted.toFixed(t,n,r)}};var Pi=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},no=Pi;no.SOL=new Pi(Rt);function wy(o,e){return o instanceof ye&&e instanceof ye?o.equals(e):o instanceof ye||e instanceof ye?!1:o===e}import Wl from"bn.js";var ba=new re(new Wl(100)),ve=class extends re{toSignificant(e=5,t,n){return this.mul(ba).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(ba).toFixed(e,t,n)}};function Ce(o){if(o instanceof ve)return new re(o.numerator,o.denominator);if(o instanceof We)return o.adjusted;if(o instanceof fe)try{return Ce(o.toExact())}catch{return new re(Fe)}if(o instanceof re)return o;let e=String(o),t=dn(e);return new re(t.numerator,t.denominator)}function Sy(o){var n;if(o instanceof ve)return{fr:new re(o.numerator,o.denominator)};if(o instanceof We)return{fr:o.adjusted};if(o instanceof fe)return{fr:Ce(o.toExact()),decimals:o.token.decimals};if(o instanceof re)return{fr:o};let e=String(o),t=dn(e);return{fr:new re(t.numerator,t.denominator),decimals:(n=t.dec)==null?void 0:n.length}}function Ky(o,e){if(o==null||e==null)return!1;let t=Ce(o),n=Ce(e);return t.sub(n).numerator,t.sub(n).numerator.lt(Fe)}function ql(o,e){if(o==null||e==null)return!1;let t=Ce(o),n=Ce(e);return t.sub(n).numerator.gt(Fe)}function Cy(o,e){if(o==null||e==null)return!1;let t=Ce(o),n=Ce(e);return t.sub(n).numerator.lte(Fe)}function Ry(o,e){if(o==null||e==null)return!1;let t=Ce(o),n=Ce(e);return t.sub(n).numerator.gte(Fe)}function Ul(o,e){if(o==null||e==null)return!1;let t=Ce(o),n=Ce(e);return t.sub(n).numerator.eq(Fe)}function Ly(o,e){if(o==null||e==null)return;let t=Ce(o),n=Ce(e);try{return t.div(n)}catch{return t}}function Oy(o,e){if(o==null||e==null)return;let t=Ce(o),n=Ce(e);return t.sub(n)}function Ny(o){return o==null?!1:!Ul(o,0)}function My(o,e){return ql(e,o)?e:o}function hi(o,e){if(o==null||e==null)return;let t=Ce(o),n=Ce(e);return t.mul(n)}function _y(o,e){if(o==null||e==null)return;let t=Ce(o),n=Ce(e);return t.add(n)}var Ai=(n=>(n[n.ROUND_DOWN=0]="ROUND_DOWN",n[n.ROUND_HALF_UP=1]="ROUND_HALF_UP",n[n.ROUND_UP=2]="ROUND_UP",n))(Ai||{}),Fe=new Te(0),Pa=new Te(1),Qy=new Te(2),jy=new Te(3),Hy=new Te(5),pn=new Te(10),Zy=new Te(100),$y=new Te(1e3),Jy=new Te(1e4),ga=9007199254740991;function Y(o){let e=ce("Raydium_parseBigNumberish");if(o instanceof Te)return o;if(typeof o=="string"){if(o.match(/^-?[0-9]+$/))return new Te(o);e.logWithError(`invalid BigNumberish string: ${o}`)}return typeof o=="number"?(o%1&&e.logWithError(`BigNumberish number underflow: ${o}`),(o>=ga||o<=-ga)&&e.logWithError(`BigNumberish number overflow: ${o}`),new Te(String(o))):typeof o=="bigint"?new Te(o.toString()):(e.error(`invalid BigNumberish value: ${o}`),new Te(0))}function wi(o){return pn.pow(Y(o))}function dn(o){var a;if(o===void 0)return{denominator:"1",numerator:"0"};if(o instanceof Te)return{numerator:o.toString(),denominator:"1"};if(o instanceof re)return{denominator:o.denominator.toString(),numerator:o.numerator.toString()};let e=String(o),[,t="",n="",r=""]=(a=e.replace(",","").match(/(-?)(\d*)\.?(\d*)/))!=null?a:[],i="1"+"0".repeat(r.length),s=t+(n==="0"?"":n)+r||"0";return{denominator:i,numerator:s,sign:t,int:n,dec:r}}function ar(o,e){let t=o.divmod(e);return t.mod.isZero()?t.div:t.div.isNeg()?t.div.isubn(1):t.div.iaddn(1)}function Gl(o){var n;let[,e="",t=""]=(n=o.toFixed(2).match(/(-?)(\d*)\.?(\d*)/))!=null?n:[];return`${e}${t}`}function Xl(o,e=0){return o instanceof Te?o:new Te(Gl(ha(o).mul(pn.pow(new Te(String(e))))))}function ha(o){if(o instanceof ve)return new re(o.numerator,o.denominator);if(o instanceof We)return o.adjusted;if(o instanceof fe)try{return ha(o.toExact())}catch{return new re(Fe)}if(o instanceof re)return o;let e=String(o),t=dn(e);return new re(t.numerator,t.denominator)}function eb(o,e){let{numerator:t,denominator:n}=dn(o);return new ve(new Te(t),new Te(n).mul(e!=null&&e.alreadyDecimaled?new Te(100):new Te(1)))}function tb(o){let{token:e,numberPrice:t,decimalDone:n}=o,r=new ye({mint:"",decimals:6,symbol:"usd",name:"usd",skipMint:!0}),{numerator:i,denominator:s}=dn(t),a=n?new Te(i).mul(pn.pow(new Te(e.decimals))):i,c=new Te(s).mul(pn.pow(new Te(r.decimals)));return new We({baseToken:r,denominator:c.toString(),quoteToken:new ye(F(C({},e),{skipMint:!0,mint:""})),numerator:a.toString()})}function Aa(o){let e=new no({decimals:6,symbol:"usd",name:"usd"}),t=Xl(hi(o,10**e.decimals));return new fn(e,t)}function nb(o,e){return Aa(!e||!o?0:hi(o,e))}function zl(o){if(o==null)return;let{numerator:e,denominator:t}=dn(o.toString());return new re(e,t)}function Yl(o){return o instanceof V}function wa(o){return Yl(o)?zl(o):Array.isArray(o)?o.map(e=>wa(e)):ki(o)?Object.fromEntries(Object.entries(o).map(([e,t])=>[e,wa(t)])):o}var jl=ce("Raydium_amount"),ur=eo(Ql);function ka(o,e){let t="0",n="0";if(o.includes(".")){let r=o.split(".");r.length===2?([t,n]=r,n=n.padEnd(e,"0")):jl.logWithError(`invalid number string, num: ${o}`)}else t=o;return[t,n.slice(0,e)||n]}var fe=class extends re{constructor(t,n,r=!0,i){let s=new tn(0),a=pn.pow(new tn(t.decimals));if(r)s=Y(n);else{let c=new tn(0),u=new tn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=ka(n.toString(),t.decimals);c=Y(l),u=Y(m)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=ce(i||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new fe(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new fe(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,r=0){return super.toSignificant(t,n,r)}toFixed(t=this.token.decimals,n,r=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,r)}toExact(t={groupSeparator:""}){return ur.DP=this.token.decimals,new ur(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}},fn=class extends re{constructor(t,n,r=!0,i){let s=new tn(0),a=pn.pow(new tn(t.decimals));if(r)s=Y(n);else{let c=new tn(0),u=new tn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=ka(n.toString(),t.decimals);c=Y(l),u=Y(m)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=ce(i||"TokenAmount"),this.currency=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.currency.equals(t.currency)||this.logger.logWithError("gt currency not equals"),this.raw.gt(t.raw)}lt(t){return this.currency.equals(t.currency)||this.logger.logWithError("lt currency not equals"),this.raw.lt(t.raw)}add(t){return this.currency.equals(t.currency)||this.logger.logWithError("add currency not equals"),new fn(this.currency,this.raw.add(t.raw))}sub(t){return this.currency.equals(t.currency)||this.logger.logWithError("sub currency not equals"),new fn(this.currency,this.raw.sub(t.raw))}toSignificant(t=this.currency.decimals,n,r=0){return super.toSignificant(t,n,r)}toFixed(t=this.currency.decimals,n,r=0){return t>this.currency.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,r)}toExact(t={groupSeparator:""}){return ur.DP=this.currency.decimals,new ur(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};async function Ta(o){new Promise(e=>setTimeout(e,o))}function xb(){return new Date().getTime()}function ki(o){return typeof o=="object"&&o!==null&&![ye,fe,Hl,re,Zl,We,ve].some(e=>typeof e=="object"&&o instanceof e)}function Ie(o){return typeof o=="string"?pi(o):Array.isArray(o)?o.map(e=>Ie(e)):ki(o)?Object.fromEntries(Object.entries(o).map(([e,t])=>[e,Ie(t)])):o}import{PublicKey as io,sendAndConfirmTransaction as xi,Transaction as so,TransactionMessage as ao,VersionedTransaction as uo}from"@solana/web3.js";import am from"axios";var yn=(t=>(t[t.V0=0]="V0",t[t.LEGACY=1]="LEGACY",t))(yn||{}),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 Ba,ComputeBudgetProgram as Ia,Transaction as lr,TransactionMessage as $l,Keypair as xa,VersionedTransaction as Sa}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Jl}from"@solana/spl-token";var Dt=ce("Raydium_txUtil"),Ka=1644;function mr(o){let e=[],t=[];return o.microLamports&&(e.push(Ia.setComputeUnitPrice({microLamports:o.microLamports})),t.push(v.SetComputeUnitPrice)),o.units&&(e.push(Ia.setComputeUnitLimit({units:o.units})),t.push(v.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Vn(o,e){var n,r;let t=e!=null?e:"confirmed";try{return((r=await((n=o.getLatestBlockhash)==null?void 0:n.call(o,{commitment:t})))==null?void 0:r.blockhash)||(await o.getRecentBlockhash(t)).blockhash}catch{return(await o.getRecentBlockhash(t)).blockhash}}function dr(o,e){o.length<1&&Dt.logWithError(`no instructions provided: ${o.toString()}`),e.length<1&&Dt.logWithError(`no signers provided:, ${e.toString()}`);let t=new lr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...o);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Ka}catch{return!1}}async function Ca(o,e,t,n=!0){let r=new Ba("RaydiumSimuLateTransaction11111111111111111"),i=[],s=new lr;s.feePayer=r;for(let u of e)dr([...s.instructions,u],[r])||(i.push(s),s=new lr,s.feePayer=r),s.add(u);s.instructions.length>0&&i.push(s);let a=[];try{if(a=await em(o,i,n),a.find(u=>u.err!==null))throw Error("rpc simulateTransaction error")}catch(u){u instanceof Error&&Dt.logWithError("failed to simulate for instructions","RPC_ERROR",{message:u.message})}let c=[];for(let u of a)if(Dt.debug("simulate result:",u),u.logs){let l=u.logs.filter(m=>m&&m.includes(t));Dt.debug("filteredLog:",c),l.length||Dt.logWithError("simulate log not match keyword","keyword",t),c.push(...l)}return c}function Ra(o,e){let t=o.match(/{["\w:,]+}/g);return!t||t.length!==1?Dt.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Wt(o,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(o);return!n||n.length!==2?Dt.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function ue(o,e){let[t,n]=Ba.findProgramAddressSync(o,e);return{publicKey:t,nonce:n}}async function em(o,e,t){let n=[];if(t){let r=await o.getLatestBlockhash(),i=[];for(let u of e){u.recentBlockhash=r.blockhash,u.lastValidBlockHeight=r.lastValidBlockHeight;let m=u._compile().serialize(),p=u._serialize(m).toString("base64");i.push(p)}let s=i.map(u=>{let l=o._buildArgs([u],void 0,"base64");return{methodName:"simulateTransaction",args:l}}),a=[],c=20;for(let u=0;u<Math.ceil(s.length/c);u++)a.push(s.slice(u*c,(u+1)*c));n=await(await Promise.all(a.map(async u=>(await o._rpcBatchRequest(u)).map(l=>l.result.value)))).flat()}else try{n=await Promise.all(e.map(async r=>await(await o.simulateTransaction(r)).value))}catch(r){r instanceof Error&&Dt.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:r.message})}return n}function oo({instructions:o,payer:e,signers:t}){return dr(o,[e,...t])}function ro({instructions:o,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=xa.generate().publicKey.toString()}){let i=new $l({payerKey:e,recentBlockhash:n,instructions:o}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Sa(i).serialize()).toString("base64").length<Ka}catch{return!1}}var cr={time:0,data:void 0};async function Fb(o){if(!cr.data||(Date.now()-cr.time)/1e3>30){let e=await o.getEpochInfo();return cr={time:Date.now(),data:e},e}else return cr.data}var tm=o=>Buffer.isBuffer(o)?o:o instanceof Uint8Array?Buffer.from(o.buffer,o.byteOffset,o.byteLength):Buffer.from(o);function bn(o){let e=[];return o.forEach(t=>{t instanceof lr&&(t.recentBlockhash||(t.recentBlockhash=Jl.toBase58()),t.feePayer||(t.feePayer=xa.generate().publicKey));let n=t.serialize({requireAllSignatures:!1,verifySignatures:!1});t instanceof Sa&&(n=tm(n));let r=n.toString("base64");e.push(r)}),console.log("simulate tx string:",e),e}import{PublicKey as Oa,AddressLookupTableAccount as pr}from"@solana/web3.js";import{PublicKey as La}from"@solana/web3.js";import{MINT_SIZE as nm,TOKEN_PROGRAM_ID as om,getTransferFeeConfig as rm,unpackMint as im}from"@solana/spl-token";var Ti=ce("Raydium_accountInfo_util");async function Tt(o,e,t){let{batchRequest:n,commitment:r="confirmed",chunkCount:i=100}=C({batchRequest:!1},t),s=Ii(e,i),a=new Array(s.length).fill([]);if(n){let c=s.map(m=>{let d=o._buildArgs([m.map(p=>p.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:d}}),u=Ii(c,10);a=(await(await Promise.all(u.map(async m=>await o._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&Ti.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:p,executable:y,lamports:f,owner:b,rentEpoch:g}=d;return p.length!==2&&p[1]!=="base64"&&Ti.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:y,lamports:f,owner:new La(b),rentEpoch:g}}return null})))}else try{a=await Promise.all(s.map(c=>o.getMultipleAccountsInfo(c,r)))}catch(c){c instanceof Error&&Ti.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function Ee(o,e,t){let n=await Tt(o,e.map(r=>r.pubkey),t);return e.map((r,i)=>F(C({},r),{accountInfo:n[i]}))}var sm=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",n))(sm||{}),Yb=1;async function vn({connection:o,mints:e,config:t}){var i,s,a;if(e.length===0)return{};let n=await Ee(o,e.map(c=>({pubkey:mt(c)})),t),r={};for(let c of n){if(!c.accountInfo||c.accountInfo.data.length<nm){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=im(c.pubkey,c.accountInfo,(i=c.accountInfo)==null?void 0:i.owner);r[c.pubkey.toString()]=F(C({},u),{programId:((s=c.accountInfo)==null?void 0:s.owner)||om,feeConfig:(a=rm(u))!=null?a:void 0})}return r[La.default.toBase58()]=r[$.toBase58()],r}async function Bi({connection:o,address:e}){let t=await Tt(o,[...new Set(e.map(r=>r.toString()))].map(r=>new Oa(r))),n={};for(let r=0;r<e.length;r++){let i=t[r],s=e[r];if(!i)continue;let a=new pr({key:s,state:pr.deserialize(i.data)});n[s.toString()]=a,fr[s.toString()]=a}return n}var fr={"2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17":new pr({key:new Oa("2immgwYNHBbyVQKVGCEkgWpi53bLwWNRMB5G2nbgYV17"),state:pr.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 yr=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await am.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:r=[],endInstructionTypes:i=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...r),this.endInstructionTypes.push(...i),this.lookupTableAddress.push(...s.filter(a=>a!==io.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(C({},t||{})):this.build(t)}build(e){var n;let t=new so;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(r=>r.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async r=>{var u;let{recentBlockHash:i,skipPreflight:s=!0,sendAndConfirm:a}=r||{},c=i!=null?i:await Vn(this.connection,this.blockhashCommitment);if(t.recentBlockhash=c,this.signers.length&&t.sign(...this.signers),bn([t]),(u=this.owner)!=null&&u.isKeyPair)return{txId:a?await xi(this.connection,t,this.signers.find(m=>m.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let l=await this.signAllTransactions([t]);return{txId:await this.connection.sendRawTransaction(l[0].serialize(),{skipPreflight:s}),signedTx:l[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var u;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:r}=this.build(n),i=t.filter(l=>l.transaction.instructions.length>0),s=[r,...i.map(l=>l.transaction)],a=[this.signers,...i.map(l=>l.signers)],c=[...this.instructionTypes,...i.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:c,execute:async l=>{var b;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:y=!0}=l||{},f=p!=null?p:await Vn(this.connection,this.blockhashCommitment);if((b=this.owner)!=null&&b.isKeyPair){if(m){let g=[];for(let h of s){let P=await xi(this.connection,h,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});g.push(P)}return{txIds:g,signedTxs:s}}return{txIds:await await Promise.all(s.map(async(g,h)=>(g.recentBlockhash=f,await this.connection.sendRawTransaction(g.serialize(),{skipPreflight:y})))),signedTxs:s}}if(this.signAllTransactions){let g=s.map((P,k)=>(P.recentBlockhash=f,a[k].length&&P.sign(...a[k]),P));bn(g);let h=await this.signAllTransactions(g);if(m){let P=0,k=[],B=async()=>{if(!h[P])return;let T=await this.connection.sendRawTransaction(h[P].serialize(),{skipPreflight:y});k.push({txId:T,status:"sent",signedTx:h[P]}),d==null||d([...k]),P++,this.connection.onSignature(T,S=>{let x=k.findIndex(R=>R.txId===T);x>-1&&(k[x].status=S.err?"error":"success"),d==null||d([...k]),S.err||B()},"processed"),this.connection.getSignatureStatus(T)};return await B(),{txIds:k.map(T=>T.txId),signedTxs:h}}else{let P=[];for(let k=0;k<h.length;k+=1){let B=await this.connection.sendRawTransaction(h[k].serialize(),{skipPreflight:y});P.push(B)}return{txIds:P,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){var p;let d=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:r}=d,i=Ke(d,["lookupTableCache","lookupTableAddress","forerunCreate"]),s=C(C({},this.cluster==="devnet"?{}:fr),t),a=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let y of a)s[y]===void 0&&c.push(new io(y));let u=await Bi({connection:this.connection,address:c});for(let[y,f]of Object.entries(u))s[y]=f;let l=new ao({payerKey:this.feePayer,recentBlockhash:r?io.default.toBase58():await Vn(this.connection,this.blockhashCommitment),instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s));((p=this.owner)==null?void 0:p.signer)&&!this.signers.some(y=>y.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let m=new uo(l);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async y=>{var h;let{recentBlockHash:f,skipPreflight:b=!0,sendAndConfirm:g}=y||{};if(f&&(m.message.recentBlockhash=f),bn([m]),(h=this.owner)!=null&&h.isKeyPair){let P=await this.connection.sendTransaction(m,{skipPreflight:b});if(g){let{lastValidBlockHeight:k,blockhash:B}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:B,lastValidBlockHeight:k,signature:P},"confirmed")}return{txId:P,signedTx:m}}if(this.signAllTransactions){let P=await this.signAllTransactions([m]);return{txId:await this.connection.sendTransaction(P[0],{skipPreflight:b}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async buildV0MultiTx(e){var u;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:r}=await this.buildV0(n),i=t.filter(l=>l.builder.instructions.length>0),s=[r,...i.map(l=>l.transaction)],a=[this.signers,...i.map(l=>l.signers)],c=[...this.instructionTypes,...i.map(l=>l.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(l,m)=>{l.sign(a[m])}),{builder:this,transactions:s,signers:a,instructionTypes:c,buildProps:n,execute:async l=>{var f;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:y=!0}=l||{};if(p&&s.forEach(b=>b.message.recentBlockhash=p),bn(s),(f=this.owner)!=null&&f.isKeyPair){if(m){let b=[];for(let g of s){let h=await this.connection.sendTransaction(g,{skipPreflight:y}),{lastValidBlockHeight:P,blockhash:k}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:k,lastValidBlockHeight:P,signature:h},"confirmed"),b.push(h)}return{txIds:b,signedTxs:s}}return{txIds:await Promise.all(s.map(async b=>await this.connection.sendTransaction(b,{skipPreflight:y}))),signedTxs:s}}if(this.signAllTransactions){let b=await this.signAllTransactions(s);if(m){let g=0,h=[],P=async()=>{if(!b[g])return;let k=await this.connection.sendTransaction(b[g],{skipPreflight:y});h.push({txId:k,status:"sent",signedTx:b[g]}),d==null||d([...h]),g++,this.connection.onSignature(k,B=>{let T=h.findIndex(S=>S.txId===k);T>-1&&(h[T].status=B.err?"error":"success"),d==null||d([...h]),B.err||P()},"processed"),this.connection.getSignatureStatus(k)};return P(),{txIds:[],signedTxs:b}}else{let g=[];for(let h=0;h<b.length;h+=1){let P=await this.connection.sendTransaction(b[h],{skipPreflight:y});g.push(P)}return{txIds:g,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var l;let u=e||{},{computeBudgetConfig:t}=u,n=Ke(u,["computeBudgetConfig"]),r=t?mr(t):{instructions:[],instructionTypes:[]},i=this.signers.reduce((m,d)=>F(C({},m),{[d.publicKey.toBase58()]:d}),{}),s=[],a=[],c=[];if(this.allInstructions.forEach(m=>{let d=[...c,m],p=t?[...r.instructions,...d]:d,f=[...new Set(d.map(b=>b.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(b=>new io(b));if(c.length<12&&oo({instructions:p,payer:this.feePayer,signers:f})||oo({instructions:d,payer:this.feePayer,signers:f}))c.push(m);else{if(c.length===0)throw Error("item ins too big");oo({instructions:t?[...r.instructions,...c]:[...c],payer:this.feePayer,signers:f})?s.push(new so().add(...r.instructions,...c)):s.push(new so().add(...c)),a.push(Array.from(new Set(c.map(b=>b.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat())).map(b=>i[b]).filter(b=>b!==void 0)),c=[m]}}),c.length>0){let d=[...new Set(c.map(p=>p.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat()).values()].map(p=>i[p]).filter(p=>p!==void 0);oo({instructions:t?[...r.instructions,...c]:[...c],payer:this.feePayer,signers:d.map(p=>p.publicKey)})?s.push(new so().add(...r.instructions,...c)):s.push(new so().add(...c)),a.push(d)}return s.forEach(m=>m.feePayer=this.feePayer),(l=this.owner)!=null&&l.signer&&a.forEach(m=>{m.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:a,instructionTypes:this.instructionTypes,execute:async m=>{var g;let{sequentially:d,onTxUpdate:p,recentBlockHash:y,skipPreflight:f=!0}=m||{},b=y!=null?y:await Vn(this.connection,this.blockhashCommitment);if(s.forEach(async(h,P)=>{h.recentBlockhash=b,a[P].length&&h.sign(...a[P])}),bn(s),(g=this.owner)!=null&&g.isKeyPair){if(d){let h=[];for(let P of s){let k=await xi(this.connection,P,this.signers.find(B=>B.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:f});h.push(k)}return{txIds:h,signedTxs:s}}return{txIds:await Promise.all(s.map(async h=>await this.connection.sendRawTransaction(h.serialize(),{skipPreflight:f}))),signedTxs:s}}if(this.signAllTransactions){let h=await this.signAllTransactions(s);if(d){let P=0,k=[],B=async()=>{if(!h[P])return;let T=await this.connection.sendRawTransaction(h[P].serialize(),{skipPreflight:f});k.push({txId:T,status:"sent",signedTx:h[P]}),p==null||p([...k]),P++,this.connection.onSignature(T,S=>{let x=k.findIndex(R=>R.txId===T);x>-1&&(k[x].status=S.err?"error":"success"),p==null||p([...k]),S.err||B()},"processed"),this.connection.getSignatureStatus(T)};return await B(),{txIds:k.map(T=>T.txId),signedTxs:h}}else{let P=[];for(let k=0;k<h.length;k+=1){let B=await this.connection.sendRawTransaction(h[k].serialize(),{skipPreflight:f});P.push(B)}return{txIds:P,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuildV0(e){var g;let b=e||{},{computeBudgetConfig:t,lookupTableCache:n={},lookupTableAddress:r=[]}=b,i=Ke(b,["computeBudgetConfig","lookupTableCache","lookupTableAddress"]),s=C(C({},this.cluster==="devnet"?{}:fr),n),a=Array.from(new Set([...this.lookupTableAddress,...r])),c=[];for(let h of a)s[h]===void 0&&c.push(new io(h));let u=await Bi({connection:this.connection,address:c});for(let[h,P]of Object.entries(u))s[h]=P;let l=t?mr(t):{instructions:[],instructionTypes:[]},m=await Vn(this.connection,this.blockhashCommitment),d=this.signers.reduce((h,P)=>F(C({},h),{[P.publicKey.toBase58()]:P}),{}),p=[],y=[],f=[];if(this.allInstructions.forEach(h=>{let P=[...f,h],k=t?[...l.instructions,...P]:P;if(f.length<12&&ro({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s})||ro({instructions:P,payer:this.feePayer,lookupTableAddressAccount:s}))f.push(h);else{if(f.length===0)throw Error("item ins too big");let B={};for(let T of[...new Set(a)])s[T]!==void 0&&(B[T]=s[T]);if(t&&ro({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let T=new ao({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new uo(T))}else{let T=new ao({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new uo(T))}y.push(Array.from(new Set(f.map(T=>T.keys.filter(S=>S.isSigner).map(S=>S.pubkey.toString())).flat())).map(T=>d[T]).filter(T=>T!==void 0)),f=[h]}}),f.length>0){let P=[...new Set(f.map(k=>k.keys.filter(B=>B.isSigner).map(B=>B.pubkey.toString())).flat()).values()].map(k=>d[k]).filter(k=>k!==void 0);if(t&&ro({instructions:[...l.instructions,...f],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let k=new ao({payerKey:this.feePayer,recentBlockhash:m,instructions:[...l.instructions,...f]}).compileToV0Message(Object.values(s));p.push(new uo(k))}else{let k=new ao({payerKey:this.feePayer,recentBlockhash:m,instructions:[...f]}).compileToV0Message(Object.values(s));p.push(new uo(k))}y.push(P)}return(g=this.owner)!=null&&g.signer&&y.forEach(h=>{h.some(P=>P.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:p,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async h=>{var S;let{sequentially:P,onTxUpdate:k,recentBlockHash:B,skipPreflight:T=!0}=h||{};if(p.map(async(x,R)=>{y[R].length&&x.sign(y[R]),B&&(x.message.recentBlockhash=B)}),bn(p),(S=this.owner)!=null&&S.isKeyPair){if(P){let x=[];for(let R of p){let I=await this.connection.sendTransaction(R,{skipPreflight:T}),{lastValidBlockHeight:N,blockhash:q}=await this.connection.getLatestBlockhash({commitment:this.blockhashCommitment});await this.connection.confirmTransaction({blockhash:q,lastValidBlockHeight:N,signature:I},"confirmed"),x.push(I)}return{txIds:x,signedTxs:p}}return{txIds:await Promise.all(p.map(async x=>await this.connection.sendTransaction(x,{skipPreflight:T}))),signedTxs:p}}if(this.signAllTransactions){let x=await this.signAllTransactions(p);if(P){let R=0,I=[],N=async()=>{if(!x[R])return;let q=await this.connection.sendTransaction(x[R],{skipPreflight:T});I.push({txId:q,status:"sent",signedTx:x[R]}),k==null||k([...I]),R++,this.connection.onSignature(q,D=>{let J=I.findIndex(G=>G.txId===q);J>-1&&(I[J].status=D.err?"error":"success"),k==null||k([...I]),D.err||N()},"processed"),this.connection.getSignatureStatus(q)};return N(),{txIds:[],signedTxs:x}}else{let R=[];for(let I=0;I<x.length;I+=1){let N=await this.connection.sendTransaction(x[I],{skipPreflight:T});R.push(N)}return{txIds:R,signedTxs:x}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}};var It=class{constructor(e){this._owner=e}get publicKey(){return It.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return It.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return It.isKeyPair(this._owner)}get isPublicKey(){return It.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!It.isKeyPair(e)}};function Ii(o,e=1,t=[]){let n=[...o];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}function mg(o,...e){return o.filter(t=>e.every(n=>n.includes(t)))}function dg(o,...e){return o.filter(t=>e.every(n=>!n.includes(t)))}function pg(o){return[...new Set(o)]}var Na=o=>typeof o=="number",Ma=o=>o?new Date(o):new Date,um=o=>Ma(o).getTime();function _a(o,e,t){let n=Na(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(o).getTime()<=n}function Va(o,e,t){let n=Na(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(o).getTime()>n}function yg(o,e){let n=um(o)+(e.days?e.days*24*60*60*1e3:0)+(e.hours?e.hours*60*60*1e3:0)+(e.minutes?e.minutes*60*1e3:0)+(e.seconds?e.seconds*1e3:0)+(e.milliseconds?e.milliseconds:0);return Ma(n)}import{PublicKey as de}from"@solana/web3.js";var Si=new de("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ki=new de("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Fn=new de("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),cm=new de("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),lm=new de("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),br=new de("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Ci=new de("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),mm=new de("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),va=new de("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Ri=new de("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),dm=new de("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Ag=new de("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),pm=new de("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),fm=new de("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),ym=new de("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),bm=new de("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Li=new de("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),gm=new de("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Am=new de("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),wm=new de("CPMDWBwJDtYax9qW7AyRuVC19Cc4L4Vcy4n2BHAbHkCW"),Pm=new de("7rQ1QFNosMkUCuh7Z7fPbTHvh73b68sQYdirycEzJVuw"),hm=new de("G11FKBRaAkHAKuLCgLM6K6NUc9rTjPAznRCjZifrTQe2"),co={IDO_PROGRAM_ID_V1:pm,IDO_PROGRAM_ID_V2:fm,IDO_PROGRAM_ID_V3:ym,IDO_PROGRAM_ID_V4:bm},wg={AMM_V4:Ci,AMM_STABLE:mm,CLMM_PROGRAM_ID:Ri,FARM_PROGRAM_ID_V3:Si,FARM_PROGRAM_ID_V5:Ki,FARM_PROGRAM_ID_V6:Fn,OPEN_BOOK_PROGRAM:lm,SERUM_PROGRAM_ID_V3:br,UTIL1216:cm,Router:dm,CREATE_CPMM_POOL_PROGRAM:Li,CREATE_CPMM_POOL_AUTH:gm,CREATE_CPMM_POOL_FEE_ACC:Am},gr={SERUM_MARKET:de.default,OPENBOOK_MARKET:new de("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),UTIL1216:de.default,FarmV3:new de("85BFyr98MbCUU9MVTEgzx1nbhWACbJqLzho6zd6DZcWL"),FarmV5:new de("EcLzTrNg9V7qhcdyXDe2qjtPkiGzDM2UbdRaeaadU5r2"),FarmV6:new de("Farm2hJLcqPtPg8M4rR6DMrsRNc5TPm5Cs4bVQrMe2T7"),AmmV4:new de("HWy1jotHpo6UqeQxx49dpYYdQB8wj9Qk9MdxwjLvDHB8"),AmmStable:new de("DDg4VmQaJV9ogWce7LpcjBA9bv22wRp5uaTPa5pGjijF"),CLMM:new de("devi51mZmdwUJGU9hjN27vEz64Gps7uUefqxg27EAtH"),Router:new de("BVChZ3XFEwTMUk1o9i3HAf91H6mFxSwa5X2wFAWhYPhU"),CREATE_CPMM_POOL_PROGRAM:wm,CREATE_CPMM_POOL_AUTH:Pm,CREATE_CPMM_POOL_FEE_ACC:hm,FEE_DESTINATION_ID:new de("3XMrhbv989VxAMi3DErLV9eJht1pHppW5LbKxe9fkEFR")};import{PublicKey as km}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Tm}from"@solana/spl-token";function ge(o,e,t){return ue([o.toBuffer(),(t!=null?t:Tm).toBuffer(),e.toBuffer()],new km("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import Ne from"bn.js";var Lt=1e4;function xg(o,e,t,n){if(e===void 0)return{amount:o,fee:void 0,expirationTime:void 0};let r=t.epoch<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,i=new Ne(r.maximumFee.toString()),s=t.epoch<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(r.transferFeeBasisPoints===Lt){let a=new Ne(r.maximumFee.toString());return{amount:o.add(a),fee:a,expirationTime:s}}else{let a=nn(o.mul(new Ne(Lt)),new Ne(Lt-r.transferFeeBasisPoints)),c=new Ne(r.maximumFee.toString()),u=a.sub(o).gt(c)?o.add(c):a,l=nn(u.mul(new Ne(r.transferFeeBasisPoints)),new Ne(Lt)),m=l.gt(i)?i:l;return{amount:u,fee:m,expirationTime:s}}else{let a=nn(o.mul(new Ne(r.transferFeeBasisPoints)),new Ne(Lt)),c=a.gt(i)?i:a;return{amount:o,fee:c,expirationTime:s}}}function he(o,e,t,n){if(e===void 0)return{amount:o,fee:void 0,expirationTime:void 0};let r=F(C({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),i=t.epoch<r.newerTransferFee.epoch?r.olderTransferFee:r.newerTransferFee,s=new Ne(i.maximumFee.toString()),a=t.epoch<r.newerTransferFee.epoch?(Number(r.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(i.transferFeeBasisPoints===Lt){let c=new Ne(i.maximumFee.toString());return{amount:o.add(c),fee:c,expirationTime:a}}else{let c=nn(o.mul(new Ne(Lt)),new Ne(Lt-i.transferFeeBasisPoints)),u=new Ne(i.maximumFee.toString()),l=c.sub(o).gt(u)?o.add(u):c,m=nn(l.mul(new Ne(i.transferFeeBasisPoints)),new Ne(Lt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let c=nn(o.mul(new Ne(i.transferFeeBasisPoints)),new Ne(Lt)),u=c.gt(s)?s:c;return{amount:o,fee:u,expirationTime:a}}}function Ot(o,e){return o===void 0?e:e===void 0?o:Math.min(o,e)}function nn(o,e){let{div:t,mod:n}=o.divmod(e);return n.gt(new Ne(0))?t.add(new Ne(1)):t}var Oi=(t=>(t.ALL="all",t.Strict="strict",t))(Oi||{}),Fa=(s=>(s.All="all",s.Standard="standard",s.Concentrated="concentrated",s.AllFarm="allFarm",s.StandardFarm="standardFarm",s.ConcentratedFarm="concentratedFarm",s))(Fa||{});var ze={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"},zg=C({},ze);var Ea="ray_tab_hash",Ni="ray_req_hash",Im=()=>{if(typeof window===void 0)return"";let o=sessionStorage.getItem(Ea);return o||(o=`ray-${Date.now()}`,sessionStorage.setItem(Ea,o)),o},Ar=async n=>{var r=n,{logCount:o=1e3,removeLastLog:e}=r,t=Ke(r,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let i=JSON.parse(localStorage.getItem(Ni)||"[]").slice(0,o-1);e&&i.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),i.unshift(F(C({},t),{time:Date.now(),session:Im()}));try{localStorage.setItem(Ni,JSON.stringify(i))}catch{if(e){let s=!1,a=JSON.stringify(t.data).substring(0,100);for(i[0].data=a+(a.length>100?"...":"");!s;){i.pop();let c=JSON.stringify(t.data).substring(0,100);i[0].data=c+(c.length>100?"...":"");try{localStorage.setItem(Ni,JSON.stringify(i)),s=!0}catch{s=!1}}return new Promise(c=>c())}return Ar(F(C({},t),{logCount:o,removeLastLog:!0}))}};var En=ce("Raydium_Api"),Mi=new Map;async function dA(o,e,t=1e3){let n;for(;n==null;)try{En.debug(`Request ${o} through endlessRetry`),n=await e()}catch(r){En.error(`Request ${o} failed, retry after ${t} ms`,r),await Ta(t)}return n}var wr=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:r,urlConfigs:i}){this.cluster=e,this.urlConfigs=i||{},this.logCount=r||1e3,this.api=Da.create({baseURL:this.urlConfigs.BASE_HOST||ze.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:c,url:u}=s;return En.debug(`${a==null?void 0:a.toUpperCase()} ${c}${u}`),s},s=>(En.error("Request failed"),Promise.reject(s))),this.api.interceptors.response.use(s=>{let{config:a,data:c,status:u}=s,{method:l,baseURL:m,url:d}=a;return n&&Ar({status:u,url:`${m}${d}`,params:a.params,data:c,logCount:this.logCount}),En.debug(`${l==null?void 0:l.toUpperCase()} ${m}${d} ${u}`),c},s=>{let{config:a,response:c={}}=s,{status:u}=c,{method:l,baseURL:m,url:d}=a;return n&&Ar({status:u,url:`${m}${d}`,params:a.params,data:s.message,logCount:this.logCount}),En.error(`${l.toUpperCase()} ${m}${d} ${u||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||ze.CLMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||ze.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await Da.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(r=>r.numSlots);return n.reduce((r,i)=>r+i,0)/n.length/60}async getChainTimeOffset(){return(await this.api.get(this.urlConfigs.CHAIN_TIME||ze.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||ze.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||ze.TOKEN_LIST)).data}async getJupTokenList(e){return this.api.get("/",{baseURL:(this.urlConfigs.JUP_TOKEN_LIST||ze.JUP_TOKEN_LIST).replace("{type}",e||"all")})}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||ze.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:r="desc",page:i=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||ze.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${r}&page=${i}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||ze.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],r=t.filter(s=>Mi.has(s)?(n.push(Mi.get(s)),!1):!0),i=[];return r.length&&(i=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||ze.POOL_KEY_BY_ID)+`?ids=${r.join(",")}`)).data.filter(Boolean),i.forEach(a=>{Mi.set(a.id,a)})),n.concat(i)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:r="all",sort:i="default",order:s="desc",page:a=1}=e,[c,u]=[t&&mt(t).toBase58(),n&&n!=="undefined"?mt(n).toBase58():""],[l,m]=u&&c>u?[u,c]:[c,u];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||ze.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${r}&poolSortField=${i}&sortType=${s}&pageSize=100&page=${a}`)).data}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||ze.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||ze.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||ze.CHECK_AVAILABILITY)).data}};import{merge as Tf}from"lodash";var Pr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",Wa="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{createAssociatedTokenAccountInstruction as Qi,TOKEN_PROGRAM_ID as an,AccountLayout as Wn,TOKEN_2022_PROGRAM_ID as Md}from"@solana/spl-token";import{PublicKey as Sr,SystemProgram as _d}from"@solana/web3.js";var _i=(...o)=>o.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),xe=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ce(t)}createTxBuilder(e){return this.scope.checkOwner(),new yr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(_i(e))}logInfo(...e){this.logger.info(_i(e))}logAndCreateError(...e){let t=_i(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{createInitializeAccountInstruction as Kd,createCloseAccountInstruction as Cd,createTransferInstruction as Rd,TOKEN_PROGRAM_ID as Dn}from"@solana/spl-token";import{PublicKey as Ld,SystemProgram as Od}from"@solana/web3.js";import Nd from"bn.js";import{PublicKey as ou,Keypair as Id}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Bd}from"@solana/spl-token";import xd from"bn.js";import{PublicKey as bd}from"@solana/web3.js";import Qa,{isBN as ja}from"bn.js";import{bits as Bm,BitStructure as xm,blob as Sm,Blob as Km,cstr as Cm,f32 as Rm,f32be as Lm,f64 as Om,f64be as Nm,greedy as Mm,Layout as _m,ns64 as Vm,ns64be as vm,nu64 as Fm,nu64be as Em,offset as Dm,s16 as Wm,s16be as qm,s24 as Um,s24be as Gm,s32 as Xm,s32be as zm,s40 as Ym,s40be as Qm,s48 as jm,s48be as Hm,s8 as Zm,seq as $m,struct as BA,Structure as Jm,u16 as ed,u16be as td,u24 as nd,u24be as od,u32 as rd,u32be as id,u40 as sd,u40be as ad,u48 as ud,u48be as cd,u8 as ld,UInt as md,union as dd,Union as pd,unionLayoutDiscriminator as fd,utf8 as yd}from"@solana/buffer-layout";var lo=_m,qa=Jm,Ua=pd,xA=xm,Vi=md,Ga=Km,SA=Mm,hr=ld,Nt=ed,KA=nd,mo=rd,CA=sd,RA=ud,Xa=Fm,LA=td,OA=od,NA=id,MA=ad,_A=cd,VA=Em,vA=Zm,FA=Wm,EA=Um,Ye=Xm,DA=Ym,WA=jm,qA=Vm,UA=qm,GA=Gm,XA=zm,zA=Qm,YA=Hm,QA=vm,jA=Rm,HA=Lm,ZA=Om,$A=Nm;var za=$m,Ya=dd,JA=fd,be=Sm,ew=Cm,tw=yd,vi=Bm,Fi=Dm;var gn=class extends lo{constructor(t,n,r){super(t,r);this.blob=be(t),this.signed=n}decode(t,n=0){let r=new Qa(this.blob.decode(t,n),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,n,r=0){return typeof t=="number"&&(t=new Qa(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,r)}},kr=class extends lo{constructor(t){super(8,t);this._lower=vi(mo(),!1),this._upper=vi(mo(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let r=this._lower.decode(t,n),i=this._upper.decode(t,n+this._lower.span);return C(C({},r),i)}encode(t,n,r=0){return this._lower.encode(t,n,r)+this._upper.encode(t,n,r+this._lower.span)}};function E(o){return new Vi(1,o)}function Ze(o){return new Vi(4,o)}function w(o){return new gn(8,!1,o)}function j(o){return new gn(16,!1,o)}function Ha(o){return new gn(1,!0,o)}function Tr(o){return new gn(8,!0,o)}function Za(o){return new gn(16,!0,o)}var qt=class extends lo{constructor(t,n,r,i){super(t.span,i);this.layout=t,this.decoder=n,this.encoder=r}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,r){return this.layout.encode(this.encoder(t),n,r)}getSpan(t,n){return this.layout.getSpan(t,n)}};function K(o){return new qt(be(32),e=>new bd(e),e=>e.toBuffer(),o)}var Ei=class extends lo{constructor(t,n){super(-1,n);this.layout=t,this.discriminator=hr()}encode(t,n,r=0){return t==null?this.discriminator.encode(0,n,r):(this.discriminator.encode(1,n,r),this.layout.encode(t,n,r+1)+1)}decode(t,n=0){let r=this.discriminator.decode(t,n);if(r===0)return null;if(r===1)return this.layout.decode(t,n+1);throw new Error("Invalid option "+this.property)}getSpan(t,n=0){let r=this.discriminator.decode(t,n);if(r===0)return 1;if(r===1)return this.layout.getSpan(t,n+1)+1;throw new Error("Invalid option "+this.property)}};function sw(o,e){return new Ei(o,e)}function Qe(o){return new qt(hr(),gd,Ad,o)}function gd(o){if(o===0)return!1;if(o===1)return!0;throw new Error("Invalid bool: "+o)}function Ad(o){return o?1:0}function aw(o,e){let t=mo("length"),n=M([t,X(o,Fi(t,-t.span),"values")]);return new qt(n,({values:r})=>r,r=>({values:r}),e)}function uw(o,e,t){let n=M([w("tag"),e.replicate("data")]);function r({tag:i,data:s}){if(!i.eq(o))throw new Error("Invalid tag, expected: "+o.toString("hex")+", got: "+i.toString("hex"));return s}return new qt(n,r,i=>({tag:o,data:i}),t)}function wd(o){let e=mo("length"),t=M([e,be(Fi(e,-e.span),"data")]);return new qt(t,({data:n})=>n,n=>({data:n}),o)}function cw(o){return new qt(wd(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),o)}function lw(o,e){let t=Ya(hr(),e);return o.forEach((n,r)=>t.addVariant(r,n,n.property)),t}function mw(o,e,t){let n=M([X(o,e,"values")]);return new qt(n,({values:r})=>r,r=>({values:r}),t)}var Di=class extends qa{decode(e,t){return super.decode(e,t)}};function M(o,e,t){return new Di(o,e,t)}var Wi=class extends Ua{encodeInstruction(e){let t=Math.max(...Object.values(this.registry).map(r=>r.span)),n=Buffer.alloc(t);return n.slice(0,this.encode(e,n))}decodeInstruction(e){return this.decode(e)}};function dw(o,e,t){return new Wi(o,e,t)}var qi=class extends Ga{decode(e,t){let n=super.decode(e,t);if(!n.every(r=>r===0))throw new Error("nonzero padding bytes");return n}};function pw(o){return new qi(o)}function X(o,e,t){let n,r=typeof e=="number"?e:ja(e)?e.toNumber():new Proxy(e,{get(i,s){if(!n){let a=Reflect.get(i,"count");n=ja(a)?a.toNumber():a,Reflect.set(i,"count",n)}return Reflect.get(i,s)},set(i,s,a){return s==="count"&&(n=a),Reflect.set(i,s,a)}});return za(o,r,t)}var on=M([K("mint"),K("owner"),w("amount"),Ze("delegateOption"),K("delegate"),E("state"),Ze("isNativeOption"),w("isNative"),w("delegatedAmount"),Ze("closeAuthorityOption"),K("closeAuthority")]);function Pd(o){return o instanceof Uint8Array||o!=null&&typeof o=="object"&&o.constructor.name==="Uint8Array"}function Ui(o,...e){if(!Pd(o))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(o.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${o.length}`)}function Gi(o,e=!0){if(o.destroyed)throw new Error("Hash instance has been destroyed");if(e&&o.finished)throw new Error("Hash#digest() has already been called")}function $a(o,e){Ui(o);let t=e.outputLen;if(o.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Br=o=>new DataView(o.buffer,o.byteOffset,o.byteLength),Bt=(o,e)=>o<<32-e|o>>>e;var Pw=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function hd(o){if(typeof o!="string")throw new Error(`utf8ToBytes expected string, got ${typeof o}`);return new Uint8Array(new TextEncoder().encode(o))}function Xi(o){return typeof o=="string"&&(o=hd(o)),Ui(o),o}var Ir=class{clone(){return this._cloneInto()}},hw={}.toString;function Ja(o){let e=n=>o().update(Xi(n)).digest(),t=o();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>o(),e}function kd(o,e,t,n){if(typeof o.setBigUint64=="function")return o.setBigUint64(e,t,n);let r=BigInt(32),i=BigInt(4294967295),s=Number(t>>r&i),a=Number(t&i),c=n?4:0,u=n?0:4;o.setUint32(e+c,s,n),o.setUint32(e+u,a,n)}var eu=(o,e,t)=>o&e^~o&t,tu=(o,e,t)=>o&e^o&t^e&t,xr=class extends Ir{constructor(e,t,n,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Br(this.buffer)}update(e){Gi(this);let{view:t,buffer:n,blockLen:r}=this;e=Xi(e);let i=e.length;for(let s=0;s<i;){let a=Math.min(r-this.pos,i-s);if(a===r){let c=Br(e);for(;r<=i-s;s+=r)this.process(c,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Gi(this),$a(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:r,isLE:i}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>r-s&&(this.process(n,0),s=0);for(let m=s;m<r;m++)t[m]=0;kd(n,r-8,BigInt(this.length*8),i),this.process(n,0);let a=Br(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,l=this.get();if(u>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<u;m++)a.setUint32(4*m,l[m],i)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:r,finished:i,destroyed:s,pos:a}=this;return e.length=r,e.pos=a,e.finished=i,e.destroyed=s,r%t&&e.buffer.set(n),e}};var Td=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),rn=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),sn=new Uint32Array(64),zi=class extends xr{constructor(){super(64,32,8,!1),this.A=rn[0]|0,this.B=rn[1]|0,this.C=rn[2]|0,this.D=rn[3]|0,this.E=rn[4]|0,this.F=rn[5]|0,this.G=rn[6]|0,this.H=rn[7]|0}get(){let{A:e,B:t,C:n,D:r,E:i,F:s,G:a,H:c}=this;return[e,t,n,r,i,s,a,c]}set(e,t,n,r,i,s,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=r|0,this.E=i|0,this.F=s|0,this.G=a|0,this.H=c|0}process(e,t){for(let m=0;m<16;m++,t+=4)sn[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=sn[m-15],p=sn[m-2],y=Bt(d,7)^Bt(d,18)^d>>>3,f=Bt(p,17)^Bt(p,19)^p>>>10;sn[m]=f+sn[m-7]+y+sn[m-16]|0}let{A:n,B:r,C:i,D:s,E:a,F:c,G:u,H:l}=this;for(let m=0;m<64;m++){let d=Bt(a,6)^Bt(a,11)^Bt(a,25),p=l+d+eu(a,c,u)+Td[m]+sn[m]|0,f=(Bt(n,2)^Bt(n,13)^Bt(n,22))+tu(n,r,i)|0;l=u,u=c,c=a,a=s+p|0,s=i,i=r,r=n,n=p+f|0}n=n+this.A|0,r=r+this.B|0,i=i+this.C|0,s=s+this.D|0,a=a+this.E|0,c=c+this.F|0,u=u+this.G|0,l=l+this.H|0,this.set(n,r,i,s,a,c,u,l)}roundClean(){sn.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var nu=Ja(()=>new zi);var Fw=ce("Raydium_Util");function ru({owner:o,solAccountResp:e,tokenAccountResp:t}){let n=[],r=[];for(let{pubkey:i,account:s}of t.value){let a=on.decode(s.data),{mint:c,amount:u}=a;n.push({publicKey:i,mint:c,amount:u,isAssociated:ge(o,c,s.owner).publicKey.equals(i),isNative:!1,programId:s.owner}),r.push({pubkey:i,accountInfo:a,programId:s.owner})}return e&&n.push({mint:ou.default,amount:new xd(e.lamports),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:r}}function $e({fromPublicKey:o,programId:e=Bd}){let t=Id.generate().publicKey.toBase58().slice(0,32);return{publicKey:Sd(o,t,e),seed:t}}function Sd(o,e,t){let n=Buffer.concat([o.toBuffer(),Buffer.from(e),t.toBuffer()]),r=nu(n);return new ou(r)}function Yi(o){let{mint:e,tokenAccount:t,owner:n,programId:r=Dn}=o;return Kd(t,e,n,r)}function Mt(o){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:r,programId:i=Dn}=o;return Cd(e,t,r,n,i)}async function Ut(o){let{connection:e,amount:t,commitment:n,payer:r,owner:i,skipCloseAccount:s}=o,a=await e.getMinimumBalanceForRentExemption(on.span,n),c=Y(t).add(new Nd(a)),u=$e({fromPublicKey:r,programId:Dn});return{addresses:{newAccount:u.publicKey},signers:[],instructions:[Od.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:u.seed,newAccountPubkey:u.publicKey,lamports:c.toNumber(),space:on.span,programId:Dn}),Yi({mint:new Ld(Ve.address),tokenAccount:u.publicKey,owner:i,programId:Dn})],instructionTypes:[v.CreateAccount,v.InitAccount],endInstructionTypes:s?[]:[v.CloseAccount],endInstructions:s?[]:[Mt({tokenAccount:u.publicKey,payer:r,owner:i})]}}function po({source:o,destination:e,owner:t,amount:n,multiSigners:r=[],tokenProgram:i=Dn}){return Rd(o,e,t,BigInt(String(n)),r,i)}var fo=class extends xe{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;let{tokenAccounts:n,tokenAccountRawInfos:r}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=r||[],this._clientOwnedToken=!!(n||r)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}updateTokenAccount({tokenAccounts:t,tokenAccountRawInfos:n}){return t&&(this._tokenAccounts=t),n&&(this._tokenAccountRawInfos=n),this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=void 0,this._clientOwnedToken=!0,this}addAccountChangeListener(t){return this._accountListener.push(t),this}removeAccountChangeListener(t){return this._accountListener=this._accountListener.filter(n=>n!==t),this}getAssociatedTokenAccount(t,n){return ge(this.scope.ownerPubKey,t,n).publicKey}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length)return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let r=C(C({},{}),t),[i,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,r.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:an},r.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Md},r.commitment)]),{tokenAccounts:c,tokenAccountRawInfos:u}=ru({owner:this.scope.ownerPubKey,solAccountResp:i,tokenAccountResp:{context:s.context,value:[...s.value,...a.value]}});return this._tokenAccounts=c,this._tokenAccountRawInfos=u,this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>this.fetchWalletTokenAccounts({forceUpdate:!0}),t==null?void 0:t.commitment),{tokenAccounts:c,tokenAccountRawInfos:u}}async getCreatedTokenAccount({mint:t,programId:n=an,associatedOnly:r=!0}){await this.fetchWalletTokenAccounts();let i=this._tokenAccounts.filter(({mint:a})=>a==null?void 0:a.equals(t)).sort((a,c)=>a.amount.lt(c.amount)?1:-1),s=this.getAssociatedTokenAccount(t,n);for(let a of i){let{publicKey:c}=a;if(c&&(!r||r&&s.equals(c)))return c}}async getOrCreateTokenAccount(t){var y,f,b,g;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:r,associatedOnly:i,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:c=!1,checkCreateATAOwner:u=!1}=t,l=new Sr(t.tokenProgram||an),m=this.getAssociatedTokenAccount(n,new Sr(l)),d=(a?[]:this.tokenAccountRawInfos).filter(h=>h.accountInfo.mint.equals(n)&&(!i||h.pubkey.equals(m))).sort((h,P)=>h.accountInfo.amount.lt(P.accountInfo.amount)?1:-1);if(r===void 0||d.length>0)return d.length>0?{account:d[0].pubkey}:{};let p={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(i){let h=Qi(s,m,s,n,l);if(u){let P=await this.scope.connection.getAccountInfo(m);if(P===null)(y=p.instructions)==null||y.push(h),p.instructionTypes.push(v.CreateATA);else if(!(P.owner.equals(l)&&Wn.decode(P.data).mint.equals(n)&&Wn.decode(P.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${m.toString()}`)}else p.instructions.push(h),p.instructionTypes.push(v.CreateATA);if(n.equals($)&&r.amount){let P=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:r.payer||this.scope.ownerPubKey,amount:(f=r.amount)!=null?f:0,skipCloseAccount:c});p.instructions.push(...P.instructions||[]),p.endInstructions.push(...P.endInstructions||[]),p.instructionTypes.push(...P.instructionTypes||[]),p.endInstructionTypes.push(...P.endInstructionTypes||[]),r.amount&&(p.instructions.push(po({source:P.addresses.newAccount,destination:m,owner:this.scope.ownerPubKey,amount:r.amount,tokenProgram:an})),p.instructionTypes.push(v.TransferAmount))}return c||(p.endInstructions.push(Mt({owner:s,payer:r.payer||s,tokenAccount:m,programId:l})),p.endInstructionTypes.push(v.CloseAccount)),{account:m,instructionParams:p}}else{let h=$e({fromPublicKey:s,programId:l}),P=await this.scope.connection.getMinimumBalanceForRentExemption(Wn.span),k=_d.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:h.seed,newAccountPubkey:h.publicKey,lamports:P+Number((g=(b=r.amount)==null?void 0:b.toString())!=null?g:0),space:Wn.span,programId:l});return p.instructions.push(k,Yi({mint:n,tokenAccount:h.publicKey,owner:this.scope.ownerPubKey,programId:l})),p.instructionTypes.push(v.CreateAccount),p.instructionTypes.push(v.InitAccount),c||(p.endInstructions.push(Mt({owner:s,payer:r.payer||s,tokenAccount:h.publicKey,programId:l})),p.endInstructionTypes.push(v.CloseAccount)),{account:h.publicKey,instructionParams:p}}}async checkOrCreateAta({mint:t,programId:n=an,autoUnwrapWSOLToSOL:r}){var c;await this.fetchWalletTokenAccounts();let i=(c=this.scope.account.tokenAccounts.find(({mint:u})=>(u==null?void 0:u.toBase58())===t.toBase58()))==null?void 0:c.publicKey,s=this.scope.ownerPubKey,a={};if(!i){let u=this.getAssociatedTokenAccount(t,n),l=await Qi(s,u,s,t,n);a.instructions=[l],a.instructionTypes=[v.CreateATA],i=u}return r&&$.toBase58()===t.toBase58()&&(a.endInstructions=[Mt({owner:s,payer:s,tokenAccount:i,programId:n})],a.endInstructionTypes=[v.CloseAccount]),{pubKey:i,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:r,mint:i,programId:s=an,tokenAccount:a,payer:c=this.scope.ownerPubKey,bypassAssociatedCheck:u,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(i,s);if(new Sr($).equals(i)){let p=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:c,amount:r,skipCloseAccount:l});return C({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!u){let p=[],y=Qi(this.scope.ownerPubKey,d,this.scope.ownerPubKey,i,s);if(m){let f=await this.scope.connection.getAccountInfo(d);if(f===null)p.push(y);else if(!(f.owner.equals(an)&&Wn.decode(f.data).mint.equals(i)&&Wn.decode(f.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${i.toString()}, ata: ${d.toString()}`)}else p.push(y);return{tokenAccount:d,instructions:p,instructionTypes:[v.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:r=an,amount:i,useSOLBalance:s,handleTokenAccount:a}=t,c,u=this.createTxBuilder();if(n.equals(new Sr($))&&s){let l=await this.handleTokenAccount({side:"in",amount:i||0,mint:n,bypassAssociatedCheck:!0,programId:r}),{tokenAccount:d}=l,p=Ke(l,["tokenAccount"]);c=d,u.addInstruction(p)}else if(c=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:r}),!c&&a){let m=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:r}),{tokenAccount:d}=m,p=Ke(m,["tokenAccount"]);c=d,u.addInstruction(p)}return C({tokenAccount:c},u.AllTxData)}};import{createAssociatedTokenAccountInstruction as np}from"@solana/spl-token";import{PublicKey as ke,SystemProgram as op}from"@solana/web3.js";import{PublicKey as mu}from"@solana/web3.js";var ji=M([E("instruction")]),Hi=M([E("instruction")]),Vd=M([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),j("accRewardPerShare"),K("rewardVault"),K("rewardMint"),K("rewardSender"),w("rewardType"),X(w(),15,"padding")]),vd=M([w("state"),w("nonce"),K("lpVault"),K("rewardVault"),K(),K(),w(),w(),w("totalReward"),j("perShareReward"),w("lastSlot"),w("perSlotReward")]),Fd=M([w("state"),w("nonce"),K("lpVault"),K("rewardVaultA"),w("totalRewardA"),j("perShareRewardA"),w("perSlotRewardA"),E("option"),K("rewardVaultB"),be(7),w("totalRewardB"),j("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),K()]),Ed=M([w(),w("state"),w("nonce"),w("validRewardTokenNum"),j("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),K("lpMint"),K("lpVault"),X(Vd,5,"rewardInfos"),K("creator"),K(),X(w(),32,"padding")]),iu=new Proxy(vd,{get(o,e,t){return e==="decode"?(...n)=>{let r=o.decode(...n);return F(C({},r),{version:3,rewardInfos:[{rewardVault:r.rewardVault,totalReward:r.totalReward,perSlotReward:r.perSlotReward,perShareReward:r.perShareReward}]})}:Reflect.get(o,e,t)}}),su=new Proxy(Fd,{get(o,e,t){return e==="decode"?(...n)=>{let r=o.decode(...n);return F(C({},r),{version:5,rewardInfos:[{rewardVault:r.rewardVaultA,totalReward:r.totalRewardA,perSlotReward:r.perSlotRewardA,perShareReward:r.perShareRewardA},{rewardVault:r.rewardVaultB,totalReward:r.totalRewardB,perSlotReward:r.perSlotRewardB,perShareReward:r.perShareRewardB}]})}:Reflect.get(o,e,t)}}),yo=new Proxy(Ed,{get(o,e,t){return e==="decode"?(...n)=>{let r=o.decode(...n);return F(C({},r),{version:6,rewardInfos:r.rewardInfos.map(i=>{var s;return F(C({},i),{rewardType:((s=Object.entries(un).find(a=>String(a[1])===i.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(o,e,t)}}),Dd=M([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Zi=M([E("instruction"),w("nonce"),X(Dd,5,"rewardTimeInfo")]),$i=M([E("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),Ji=M([E("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),bP=M([w("state"),K("id"),K("owner"),w("deposited"),X(w(),1,"rewardDebts")]),bo=M([w("state"),K("id"),K("owner"),w("deposited"),X(j(),1,"rewardDebts"),w(""),w("voteLockedBalance"),X(w(),15)]),gP=M([w("state"),K("id"),K("owner"),w("deposited"),X(w(),2,"rewardDebts")]),au=M([w("state"),K("id"),K("owner"),w("deposited"),X(j(),2,"rewardDebts"),X(w(),17)]),uu=M([w(),w("state"),K("id"),K("owner"),w("deposited"),X(j(),5,"rewardDebts"),X(w(),16)]),rt=M([E("instruction"),w("amount")]),Wd=M([K("mint"),K("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),Ha("digitShift"),X(E(),7,"reserved1"),X(w(),7,"reserved2")]),cu=M([be(8),K("governanceProgramId"),K("realm"),K("realmGoverningTokenMint"),K("realmAuthority"),X(E(),32,"reserved1"),X(Wd,4,"votingMints"),Tr("timeOffset"),E("bump"),X(E(),7,"reserved2"),X(w(),11,"reserved3")]),qd=M([Tr("startTime"),Tr("endTime"),E("kind"),X(E(),15,"reserved")]),Ud=M([X(qd,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),Qe("isUsed"),Qe("allowClawback"),E("votingMintConfigIdx"),X(E(),29,"reserved")]),lu=M([be(8),K("voterAuthority"),K("registrar"),X(Ud,32,"deposits"),E("voterBump"),E("voterWweightRecordBump"),X(E(),94,"reserved")]);var du=new mu("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),pu=new mu("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),fu={3:iu,5:su,6:yo},yu={3:bo,5:au,6:uu},es=o=>[3,5,6].indexOf(o)!==-1,ts=o=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=o,r=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,i={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${r}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${r}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${r}`}};return(s=i[e])==null?void 0:s.call(i)},un={"Standard SPL":0,"Option tokens":1},bt={[Si.toString()]:3,[Ki.toString()]:5,[Fn.toString()]:6,[gr.FarmV3.toString()]:3,[gr.FarmV5.toString()]:5,[gr.FarmV6.toString()]:6};import{PublicKey as se,SystemProgram as An,SYSVAR_RENT_PUBKEY as zd,SYSVAR_CLOCK_PUBKEY as wo,TransactionInstruction as qe}from"@solana/web3.js";import{createAssociatedTokenAccountInstruction as Yd,TOKEN_PROGRAM_ID as dt,ASSOCIATED_TOKEN_PROGRAM_ID as Qd}from"@solana/spl-token";import Kr from"bn.js";function ns(o,e,t){return ue([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],o)}function os(o,e){return ue([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],o)}function rs(o,e){return ue([e.toBuffer()],o)}function is(o,e,t){return ue([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],o)}function ss(o,e,t){return ue([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],o)}function as(o,e,t,n){return ue([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],o)}import ct from"bn.js";var go=ce("Raydium.farm.util");function Ao({programId:o,poolId:e,mint:t,type:n}){let{publicKey:r}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],o);return r}function Je({programId:o,poolId:e,owner:t,version:n}){let{publicKey:r}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],o);return r}var bu=({programId:o,poolId:e})=>ue([e.toBuffer()],o);function gu(o){return{isSet:new ct(1),rewardPerSecond:Y(o.perSecond),rewardOpenTime:Y(o.openTime),rewardEndTime:Y(o.endTime),rewardType:Y(un[o.rewardType])}}function us(o){return Y(o.endTime).sub(Y(o.openTime)).mul(Y(o.perSecond))}function qn(o){let e=yu[o];return e||go.logWithError("invalid version",o),e}function Gd(o){let e=fu[o];return e||go.logWithError("invalid version",o),e}function Xd(o,e,t,n){if(o.version===3||o.version===5){if(o.lastSlot.gte(new ct(t)))return o;let r=new ct(t).sub(o.lastSlot);o.lastSlot=new ct(t);for(let i of o.rewardInfos){if(e.amount.eq(new ct(0)))continue;let s=i.perSlotReward.mul(r);i.perShareReward=i.perShareReward.add(s.mul(new ct(10).pow(new ct(o.version===3?9:15))).div(e.amount)),i.totalReward=i.totalReward.add(s)}}else if(o.version===6)for(let r of o.rewardInfos){if(r.rewardState.eq(new ct(0)))continue;let i=ct.min(new ct(n),r.rewardEndTime);if(r.rewardOpenTime.gte(i))continue;let a=i.sub(r.rewardLastUpdateTime).mul(r.rewardPerSecond),c=r.totalReward.sub(r.totalRewardEmissioned);c.lt(a)?(a=c,r.rewardLastUpdateTime=r.rewardLastUpdateTime.add(c.div(r.rewardPerSecond))):r.rewardLastUpdateTime=i,!e.amount.eq(new ct(0))&&(r.accRewardPerShare=r.accRewardPerShare.add(a.mul(o.rewardMultiplier).div(e.amount)),r.totalRewardEmissioned=r.totalRewardEmissioned.add(a))}return o}async function DP({connection:o,farmPools:e,owner:t,config:n,chainTime:r}){let i=!1,s=!1,a=new ct(10),c=[];for(let d of e){let p=Ie(d);p.version===6?s=!0:i=!0,c.push({pubkey:p.id,version:p.version,key:"state",poolId:p.id},{pubkey:p.lpVault,version:p.version,key:"lpVault",poolId:p.id}),t&&c.push({pubkey:Je({programId:p.programId,poolId:p.id,owner:t,version:d.version}),version:p.version,key:"ledger",poolId:p.id})}let u={},l=await Ee(o,c,n);for(let{pubkey:d,version:p,key:y,poolId:f,accountInfo:b}of l){let g=f.toBase58();if(u[g]=C({},u[g]),y==="state"){let h=Gd(p);(!b||!b.data||b.data.length!==h.span)&&go.logWithError(`invalid farm state account info, pools.id, ${d}`),u[g].state=h.decode(b.data)}else if(y==="lpVault")(!b||!b.data||b.data.length!==on.span)&&go.logWithError(`invalid farm lp vault account info, pools.lpVault, ${d}`),u[g].lpVault=on.decode(b.data);else if(y==="ledger"){let h=qn(p);b&&b.data&&(b.data.length!==h.span&&go.logWithError(`invalid farm ledger account info, ledger, ${d}`),u[g].ledger=h.decode(b.data))}}let m=s||i?await o.getSlot():0;for(let d of Object.keys(u))u[d]!==void 0&&(u[d].state=Xd(u[d].state,u[d].lpVault,m,r));for(let[d,{state:p,ledger:y}]of Object.entries(u))if(y){let f=p.version===6?p.rewardMultiplier:p.rewardInfos.length===1?a.pow(new ct(9)):a.pow(new ct(15)),b=p.rewardInfos.map((g,h)=>{let P=y.rewardDebts[h];return y.deposited.mul(p.version===6?g.accRewardPerShare:g.perShareReward).div(f).sub(P)});u[d].wrapped=F(C({},u[d].wrapped),{pendingRewards:b})}return u}function WP(o,e=Date.now()){if(o.version===6){let t=o.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>_a(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>Va(e,n.toNumber(),{unit:"s"})))return"closed pool"}else{let t=o.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 cs(o,e,t,n){let r=await o.getAccountInfo(e);if(r===null)throw Error("registrar info check error");let s=cu.decode(r.data).votingMints.findIndex(l=>l.mint.equals(n));if(s===-1)throw Error("find voter mint error");let a=await o.getAccountInfo(t);if(a===null)return{index:s,isInit:!1};let u=lu.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return u===-1?{index:s,isInit:!1}:{index:u,isInit:!0}}var jd=ce("Raydium_farm_instruction"),Po={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 Cr(o){let{version:e,id:t,ledger:n,programId:r,owner:i}=o,s={3:9,5:10}[e];s||jd.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(ji.span);ji.encode({instruction:s},a);let c=[A({pubkey:t}),A({pubkey:n}),A({pubkey:i,isWritable:!1}),A({pubkey:An.programId,isWritable:!1}),A({pubkey:zd,isWritable:!1})];return{instruction:new qe({programId:r,keys:c,data:a}),instructionType:v.FarmV3CreateLedger}}function Au(o){var n;let e=Buffer.alloc(Zi.span);Zi.encode({instruction:0,nonce:new Kr(o.nonce),rewardTimeInfo:o.rewardInfoConfig},e);let t=[...mi,A({pubkey:o.farmId}),A({pubkey:o.farmAuthority,isWritable:!1}),A({pubkey:o.lpVault}),A({pubkey:o.lpMint,isWritable:!1}),A({pubkey:o.lockVault}),A({pubkey:o.lockMint,isWritable:!1}),A({pubkey:(n=o.lockUserAccount)!=null?n:_e}),A({pubkey:o.owner,isWritable:!1,isSigner:!0})];for(let r of o.rewardInfo)t.push(A({pubkey:r.rewardMint,isWritable:!1}),A({pubkey:r.rewardVault}),A({pubkey:r.userRewardToken}));return{instruction:new qe({programId:o.programId,keys:t,data:e}),instructionType:v.FarmV6Create}}function wu(o){let e=Buffer.alloc(Hi.span);Hi.encode({instruction:5},e);let t=[A({pubkey:dt,isWritable:!1}),A({pubkey:o.id}),A({pubkey:o.authority,isWritable:!1}),A({pubkey:o.lpVault,isWritable:!1}),A({pubkey:o.rewardVault}),A({pubkey:o.userRewardToken}),A({pubkey:o.owner,isWritable:!1,isSigner:!0})];return{instruction:new qe({programId:o.programId,keys:t,data:e}),instructionType:v.FarmV6CreatorWithdraw}}function Hd(o,e,t,n,r,i,s,a,c,u,l,m,d){let p=M([E("depositEntryIndex"),w("amount")]),y=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:or,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({depositEntryIndex:m,amount:d},f);let b=Buffer.from([...Po.voterStakeRegistryDeposit,...f]);return new qe({keys:y,programId:o,data:b})}function Zd(o,e,t,n){let r=M([]),i=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:An.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(r.span);r.encode({},s);let a=Buffer.from([...Po.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new qe({keys:i,programId:o,data:a})}function $d(o,e,t,n,r,i,s,a,c,u,l,m,d,p,y){let f=M([E("depositEntryIndex"),w("amount")]),b=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:or,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({depositEntryIndex:p,amount:y},g);let h=Buffer.from([...Po.voterStakeRegistryWithdraw,...g]);return new qe({keys:b,programId:o,data:h})}function Jd(o,e,t,n,r,i){let s=M([E("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!0,isWritable:!0},{pubkey:An.programId,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);return s.encode({ins:23},c),new qe({keys:a,programId:o,data:c})}function ep(o,e,t,n,r,i,s,a){let c=M([E("voterBump"),E("voterWeightRecordBump")]),u=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:or,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({voterBump:s,voterWeightRecordBump:a},l);let m=Buffer.from([...Po.voterStakeRegistryCreateVoter,...l]);return new qe({keys:u,programId:o,data:m})}function tp(o,e,t,n,r,i,s,a,c,u,l,m){let d=M([E("depositEntryIndex"),E("kind"),E("option"),w("startTs"),Ze("periods"),Qe("allowClawback")]),p=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:An.programId,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:Qd,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1}],y=Buffer.alloc(d.span);d.encode({depositEntryIndex:a,kind:c,option:u===void 0?0:1,startTs:u,periods:l,allowClawback:m},y);let f=Buffer.from([...Po.voterStakeRegistryCreateDepositEntry,...y]);return new qe({keys:p,programId:o,data:f})}async function rh({connection:o,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:r,communityTokenMint:i,owner:s,poolId:a,tokenProgram:c}){let u=ns(n,r,i).publicKey,l=Je({programId:e,poolId:a,owner:s,version:3}),m=await o.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=bo.decode(m.data),p=d.deposited.sub(d.voteLockedBalance);if(console.log("amount",p.toString()),p.eq(new Kr(0)))throw Error("user do not has new stake amount");let y=os(e,a).publicKey,f=rs(e,a).publicKey,{publicKey:b,nonce:g}=is(n,u,s),h=ge(b,y,c).publicKey,{publicKey:P,nonce:k}=ss(n,u,s),B=as(t,r,i,s).publicKey,T=[],S=ge(s,y,c).publicKey;if(await o.getAccountInfo(S)===null&&T.push(Yd(s,S,s,y)),await o.getAccountInfo(b)===null){let q=Jd(t,r,s,i,s,B);T.push(q,ep(n,u,b,P,s,s,g,k))}let{index:I,isInit:N}=await cs(o,u,b,y);return N||T.push(tp(n,u,b,h,s,s,y,I,0,void 0,0,!1)),T.push(Hd(n,u,b,h,S,s,l,a,y,f,e,I,p),Zd(n,u,b,P)),T}async function ih({connection:o,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:r,communityTokenMint:i,owner:s,poolId:a,tokenProgram:c}){let u=ns(n,r,i).publicKey,l=Je({programId:e,poolId:a,owner:s,version:3}),m=await o.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=bo.decode(m.data);if(d.voteLockedBalance.eq(new Kr(0)))throw Error("user has vote locked balance = 0");let p=os(e,a).publicKey,y=rs(e,a).publicKey,{publicKey:f}=is(n,u,s),b=ge(f,p,c).publicKey,{publicKey:g}=ss(n,u,s),h=as(t,r,i,s).publicKey,P=[],{index:k,isInit:B}=await cs(o,u,f,p);if(!B)throw Error("deposit entry index check error");return P.push($d(n,u,f,s,h,g,b,ge(s,p,c).publicKey,l,a,p,y,e,k,d.voteLockedBalance)),P}function ls({payer:o,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:r}){let i=Buffer.alloc($i.span);$i.encode({instruction:3,rewardReopenTime:Y(r.openTime),rewardEndTime:Y(r.endTime),rewardPerSecond:Y(r.perSecond)},i);let s=[A({pubkey:dt,isWritable:!1}),A({pubkey:n.id}),A({pubkey:n.lpVault,isWritable:!1}),A({pubkey:e}),A({pubkey:t}),A({pubkey:o,isWritable:!1,isSigner:!0})];return new qe({programId:n.programId,keys:s,data:i})}function ms({payer:o,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:r}){let i=Buffer.alloc(Ji.span);Ji.encode({instruction:4,isSet:new Kr(1),rewardPerSecond:Y(r.perSecond),rewardOpenTime:Y(r.openTime),rewardEndTime:Y(r.endTime),rewardType:Y(un[r.rewardType])},i);let s=[...mi,A({pubkey:t.id}),A({pubkey:t.authority,isWritable:!1}),A({pubkey:r.mint,isWritable:!1}),A({pubkey:n}),A({pubkey:e}),A({pubkey:o,isWritable:!1,isSigner:!0})];return new qe({programId:t.programId,keys:s,data:i})}function sh(o){let{farmInfo:e,farmKeys:t,version:n,lpAccount:r,rewardAccounts:i,owner:s,instruction:a,amount:c,deposit:u}=o,[l,m]=[new se(e.programId),new se(e.id)],d=Je({programId:l,poolId:m,owner:s,version:n}),p=Buffer.alloc(rt.span);rt.encode({instruction:a,amount:c},p);let y=n===6?[A({pubkey:dt,isWritable:!1}),...u?[A({pubkey:An.programId,isWritable:!1})]:[],A({pubkey:m}),A({pubkey:new se(t.authority),isWritable:!1}),A({pubkey:new se(t.lpVault)}),A({pubkey:d}),A({pubkey:s,isWritable:!1,isSigner:!0}),A({pubkey:r})]:[A({pubkey:m}),A({pubkey:new se(t.authority),isWritable:!1}),A({pubkey:d}),A({pubkey:s,isWritable:!1,isSigner:!0}),A({pubkey:r}),A({pubkey:new se(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new se(t.rewardInfos[0].vault)}),A({pubkey:wo,isWritable:!1}),A({pubkey:dt,isWritable:!1})];if(n===5)for(let f=1;f<t.rewardInfos.length;f++)y.push(A({pubkey:i[f]})),y.push(A({pubkey:new se(t.rewardInfos[f].vault)}));if(n===6)for(let f=0;f<t.rewardInfos.length;f++)y.push(A({pubkey:new se(t.rewardInfos[f].vault)})),y.push(A({pubkey:i[f]}));return new qe({programId:l,keys:y,data:p})}function ho(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:i,amount:s}=o,[a,c]=[new se(e.programId),new se(e.id)],u=Je({programId:a,poolId:c,owner:i,version:6}),l=Buffer.alloc(rt.span);rt.encode({instruction:2,amount:Y(s)},l);let m=[A({pubkey:dt,isWritable:!1}),A({pubkey:c}),A({pubkey:new se(t.authority),isWritable:!1}),A({pubkey:new se(t.lpVault)}),A({pubkey:u}),A({pubkey:i,isWritable:!1,isSigner:!0}),A({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(A({pubkey:new se(t.rewardInfos[d].vault)})),m.push(A({pubkey:r[d]}));return new qe({programId:a,keys:m,data:l})}function ko(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:i,amount:s,userAuxiliaryLedgers:a}=o,[c,u]=[new se(e.programId),new se(e.id)],l=Je({programId:c,poolId:u,owner:i,version:5}),m=Buffer.alloc(rt.span);rt.encode({instruction:12,amount:Y(s)},m);let d=[A({pubkey:u}),A({pubkey:new se(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:i,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new se(t.lpVault)}),A({pubkey:r[0]}),A({pubkey:new se(t.rewardInfos[0].vault)}),A({pubkey:wo,isWritable:!1}),A({pubkey:dt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(A({pubkey:r[p]})),d.push(A({pubkey:new se(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(A({pubkey:p}));return new qe({programId:c,keys:d,data:m})}function To(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:i,amount:s,userAuxiliaryLedgers:a}=o,[c,u]=[new se(e.programId),new se(e.id)],l=Je({programId:c,poolId:u,owner:i,version:3}),m=Buffer.alloc(rt.span);rt.encode({instruction:11,amount:Y(s)},m);let d=[A({pubkey:u}),A({pubkey:new se(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:i,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new se(t.lpVault)}),A({pubkey:r[0]}),A({pubkey:new se(t.rewardInfos[0].vault)}),A({pubkey:wo,isWritable:!1}),A({pubkey:dt,isWritable:!1})];if(a)for(let p of a)d.push(A({pubkey:p}));return new qe({programId:c,keys:d,data:m})}function Pu(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:i,amount:s,userAuxiliaryLedgers:a}=o,[c,u]=[new se(e.programId),new se(e.id)],l=Je({programId:c,poolId:u,owner:i,version:3}),m=Buffer.alloc(rt.span);rt.encode({instruction:10,amount:Y(s)},m);let d=[A({pubkey:u}),A({pubkey:new se(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:i,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new se(t.lpVault)}),A({pubkey:r[0]}),A({pubkey:new se(t.rewardInfos[0].vault)}),A({pubkey:wo,isWritable:!1}),A({pubkey:dt,isWritable:!1})];if(a)for(let p of a)d.push(A({pubkey:p}));return new qe({programId:c,keys:d,data:m})}function hu(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:i,amount:s,userAuxiliaryLedgers:a}=o,[c,u]=[new se(e.programId),new se(e.id)],l=Je({programId:c,poolId:u,owner:i,version:5}),m=Buffer.alloc(rt.span);rt.encode({instruction:11,amount:Y(s)},m);let d=[A({pubkey:u}),A({pubkey:new se(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:i,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new se(t.lpVault)}),A({pubkey:r[0]}),A({pubkey:new se(t.rewardInfos[0].vault)}),A({pubkey:wo,isWritable:!1}),A({pubkey:dt,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(A({pubkey:r[p]})),d.push(A({pubkey:new se(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(A({pubkey:p}));return new qe({programId:c,keys:d,data:m})}function ku(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:r,owner:i,amount:s}=o,[a,c]=[new se(e.programId),new se(e.id)],u=Je({programId:a,poolId:c,owner:i,version:6}),l=Buffer.alloc(rt.span);rt.encode({instruction:1,amount:Y(s)},l);let m=[A({pubkey:dt,isWritable:!1}),A({pubkey:An.programId,isWritable:!1}),A({pubkey:c}),A({pubkey:new se(t.authority),isWritable:!1}),A({pubkey:new se(t.lpVault)}),A({pubkey:u}),A({pubkey:i,isWritable:!1,isSigner:!0}),A({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(A({pubkey:new se(t.rewardInfos[d].vault)})),m.push(A({pubkey:r[d]}));return new qe({programId:a,keys:m,data:l})}var Io=class extends xe{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(_e)){let n=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:us(F(C({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:n,programId:r=Fn,txVersion:i}){this.checkDisabled(),this.scope.checkOwner();let a={lpMint:new ke(e.lpMint.address),lockInfo:{lockMint:du,lockVault:pu},version:6,rewardInfos:t,programId:r},c=this.createTxBuilder(),u=n!=null?n:this.scope.ownerPubKey,l=$e({fromPublicKey:u,programId:a.programId}),m=await this.scope.connection.getMinimumBalanceForRentExemption(yo.span);c.addInstruction({instructions:[op.createAccountWithSeed({fromPubkey:u,basePubkey:u,seed:l.seed,newAccountPubkey:l.publicKey,lamports:m,space:yo.span,programId:a.programId})]});let{publicKey:d,nonce:p}=bu({programId:new ke(a.programId),poolId:l.publicKey}),y=Ao({programId:a.programId,poolId:l.publicKey,mint:a.lpMint,type:"lpVault"}),f=[],b=[];for(let B of a.rewardInfos){B.openTime>=B.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",B.openTime.toString()),isNaN(un[B.rewardType])&&this.logAndCreateError("rewardType error",B.rewardType),Number(B.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",B.perSecond),f.push(gu(B));let{rewardPubKey:T,newInstruction:S}=await this._getUserRewardInfo({rewardInfo:B,payer:u});S&&c.addInstruction(S),T||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let x=B.mint.equals(_e)?new ke(Ve.address):B.mint;b.push({rewardMint:x,rewardVault:Ao({programId:a.programId,poolId:l.publicKey,mint:x,type:"rewardVault"}),userRewardToken:T})}let{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:new ke(a.lockInfo.lockMint),owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1});h&&c.addInstruction(h),g||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:P,instructionType:k}=Au({farmId:l.publicKey,owner:this.scope.ownerPubKey,farmAuthority:d,lpVault:y,lpMint:a.lpMint,lockVault:a.lockInfo.lockVault,lockMint:a.lockInfo.lockMint,lockUserAccount:g,programId:a.programId,rewardInfo:b,rewardInfoConfig:f,nonce:p});return c.addInstruction({instructions:[P],instructionTypes:[k]}).versionBuild({txVersion:i,extInfo:{farmId:l.publicKey,farmAuthority:d,lpVault:y,lockUserAccount:g,nonce:p}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:r}){var b;let i=bt[e.programId];i!==6&&this.logAndCreateError("invalid farm version ",i);let s=Ie((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let c=t||this.scope.ownerPubKey,u=n.mint.equals(_e)?new ke(Ve.address):n.mint,l=a.rewardInfos.findIndex(g=>new ke(g.mint.address).equals(u)),m=s.rewardInfos[l];m||this.logAndCreateError("configuration does not exist","rewardMint",u);let d=(b=m.vault)!=null?b:_e,p=this.createTxBuilder(),{rewardPubKey:y,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:n,payer:c});return f&&p.addInstruction(f),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),p.addInstruction({instructions:[ls({payer:this.scope.ownerPubKey,rewardVault:d,userRewardTokenPub:y,farmKeys:a,rewardInfo:n})],instructionTypes:[v.FarmV6Restart]}).versionBuild({txVersion:r})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:r}){var l;let i=bt[e.programId];i!==6&&this.logAndCreateError("invalid farm version ",i);let s=Ie((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),a={id:s.id,rewardInfos:e.rewardInfos,lpVault:s.lpVault,programId:s.programId};n.forEach(m=>{m.openTime>=m.endTime&&this.logAndCreateError("start time error","newRewardInfo",m)});let c=t||this.scope.ownerPubKey,u=this.createTxBuilder();for(let m of n){let d=m.mint.equals(_e)?new ke(Ve.address):m.mint,p=a.rewardInfos.findIndex(P=>new ke(P.mint.address).equals(d)),y=s.rewardInfos[p];y||this.logAndCreateError("configuration does not exist","rewardMint",d);let f=(l=y.vault)!=null?l:_e,{rewardPubKey:b,newInstruction:g}=await this._getUserRewardInfo({rewardInfo:m,payer:c});g&&u.addInstruction(g),b||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let h=ls({payer:this.scope.ownerPubKey,rewardVault:f,userRewardTokenPub:b,farmKeys:a,rewardInfo:m});u.addInstruction({instructions:[h],instructionTypes:[v.FarmV6Restart]})}return u.versionBuild({txVersion:r})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:r,payer:i}=e,s=bt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ie((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),c=i!=null?i:this.scope.ownerPubKey,u=this.createTxBuilder(),l=r.mint.equals(_e)?new ke(Ve.address):r.mint,m=Ao({programId:new ke(n.programId),poolId:new ke(n.id),mint:l,type:"rewardVault"}),{rewardPubKey:d,newInstruction:p}=await this._getUserRewardInfo({rewardInfo:r,payer:c});return p&&u.addInstruction(p),d||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),r.mint=l,u.addInstruction({instructions:[ms({payer:this.scope.ownerPubKey,userRewardTokenPub:d,farmKeys:a,rewardVault:m,rewardInfo:r})],instructionTypes:[v.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:r,payer:i}=e,s=bt[n.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ie((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),c=i!=null?i:this.scope.ownerPubKey,u=this.createTxBuilder();for(let l of r){let m=l.mint.equals(_e)?new ke(Ve.address):l.mint,d=Ao({programId:new ke(n.programId),poolId:new ke(n.id),mint:m,type:"rewardVault"}),{rewardPubKey:p,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:l,payer:c});y&&u.addInstruction(y),p||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let f=ms({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:a,rewardVault:d,rewardInfo:F(C({},l),{mint:m})});u.addInstruction({instructions:[f],instructionTypes:[v.FarmV6CreatorAddReward]})}return u.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:r,feePayer:i,useSOLBalance:s,associatedOnly:a=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:u,computeBudgetConfig:l}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:m,programId:d}=n,p=bt[d];es(p)||this.logAndCreateError("invalid farm program:",n.programId);let[y,f]=[new ke(n.programId),new ke(n.id)],b=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],g=Je({programId:y,poolId:f,owner:this.scope.ownerPubKey,version:p}),h=this.createTxBuilder();h.addCustomComputeBudget(l);let P={};for(let D of this.scope.account.tokenAccounts)if(a){let J=ge(this.scope.ownerPubKey,D.mint,D.programId).publicKey;D.publicKey&&J.equals(D.publicKey)&&(P[D.mint.toString()]=D.publicKey)}else P[D.mint.toString()]=D.publicKey;let k=b.lpMint,B=P[k.address];B||this.logAndCreateError("you don't have any lp","lp zero",P);let T=[];for(let D of m){let J=s&&D.mint.address===$.toString(),G=P[D.mint.address];if(!G){let{account:W,instructionParams:ot}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:D.mint.programId,mint:new ke(D.mint.address),notUseTokenAccount:J,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!J,associatedOnly:J?!1:a,checkCreateATAOwner:c});G=W,ot&&h.addInstruction(ot)}P[D.mint.address]=G,T.push(G)}let S,x=await this.scope.connection.getAccountInfo(g);if(x&&(S=qn(p).decode(x.data)),n.programId!==Fn.toString()&&!S){let{instruction:D,instructionType:J}=Cr({id:f,programId:y,version:p,ledger:g,owner:this.scope.ownerPubKey});h.addInstruction({instructions:[D],instructionTypes:[J]})}let R=ts({version:p,rewardInfos:m,rewardTokenAccountsPublicKeys:T});R&&this.logAndCreateError(R);let I={amount:Y(r),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:b,lpAccount:B,rewardAccounts:T,userAuxiliaryLedgers:u==null?void 0:u.map(D=>new ke(D))},N=p===6?ku(I):p===5?hu(I):Pu(I),q={3:v.FarmV3Deposit,5:v.FarmV5Deposit,6:v.FarmV6Deposit};return h.addInstruction({instructions:[N],instructionTypes:[q[p]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:r,deposited:i,useSOLBalance:s,feePayer:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:l,computeBudgetConfig:m}=e,{rewardInfos:d}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let p=bt[n.programId];es(p)||this.logAndCreateError("invalid farm program:",n.programId);let y=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],f=this.createTxBuilder();f.addCustomComputeBudget(m);let b={};for(let R of this.scope.account.tokenAccounts)if(c){let I=ge(this.scope.ownerPubKey,R.mint).publicKey;R.publicKey&&I.equals(R.publicKey)&&(b[R.mint.toString()]=R.publicKey)}else b[R.mint.toString()]=R.publicKey;if(i)i.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else{let R=Je({programId:new ke(n.programId),poolId:new ke(n.id),owner:this.scope.ownerPubKey,version:p}),I=await this.scope.connection.getAccountInfo(R);I||this.logAndCreateError("no lp data",{farmId:n.id,version:p,ledgerData:I}),qn(p).decode(I.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id})}let g=y.lpMint.address,h=s&&g===$.toString(),P=b[g.toString()];if(!P){let{account:R,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new ke(g),notUseTokenAccount:h,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:c,checkCreateATAOwner:u});P=R,I&&f.addInstruction(I)}b[g.toString()]=P;let k=[];for(let R of d){let I=s&&R.mint.address===$.toString(),N=b[R.mint.address];if(!N){let{account:q,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:R.mint.programId,mint:new ke(R.mint.address),notUseTokenAccount:I,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!I,associatedOnly:I?!1:c,checkCreateATAOwner:u});N=q,D&&f.addInstruction(D)}b[R.mint.address]=N,k.push(N)}let B=ts({version:p,rewardInfos:d,rewardTokenAccountsPublicKeys:k});B&&this.logAndCreateError(B);let T={amount:Y(r),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:P,rewardAccounts:k,userAuxiliaryLedgers:l==null?void 0:l.map(R=>new ke(R))},S=p===6?ho(T):p===5?ko(T):To(T),x={3:v.FarmV3Withdraw,5:v.FarmV5Withdraw,6:v.FarmV6Withdraw};return f.addInstruction({instructions:[S],instructionTypes:[x[p]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n}){var p;this.scope.checkOwner();let r=Ie((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),i=bt[e.programId];i!==6&&this.logAndCreateError("invalid farm version",i);let s=e.rewardInfos.findIndex(y=>y.mint.address===_e.toString()?new ke(Ve.address):t),a=r.rewardInfos[s];a||this.logAndCreateError("withdraw mint error","rewardInfos",e);let c=(p=a==null?void 0:a.vault)!=null?p:_e,u=this.createTxBuilder(),l;if(t.equals(_e)){let y=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:us(F(C({},a),{openTime:a.openTime,endTime:a.endTime,perSecond:new V(a.perSecond).mul(10**a.mint.decimals).toString()}))});l=y.addresses.newAccount,u.addInstruction(y)}else{let y=await this.scope.account.getCreatedTokenAccount({mint:t});y===null?(l=await this.scope.account.getAssociatedTokenAccount(t),u.addInstruction({instructions:[np(this.scope.ownerPubKey,l,this.scope.ownerPubKey,t)],instructionTypes:[v.CreateATA]})):l=y}let{instruction:m,instructionType:d}=wu({programId:r.programId,id:r.id,authority:r.authority,lpVault:r.lpVault,rewardVault:c,userRewardToken:l,owner:this.scope.ownerPubKey});return u.addInstruction({instructions:[m],instructionTypes:[d]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:r,associatedOnly:i=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:c,computeBudgetConfig:u}=e,l=this.createTxBuilder(),m={};for(let y of this.scope.account.tokenAccounts)if(i){let f=ge(this.scope.ownerPubKey,y.mint).publicKey;y.publicKey&&f.equals(y.publicKey)&&(m[y.mint.toString()]=y.publicKey)}else m[y.mint.toString()]=y.publicKey;let p=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(y=>y.id).join(",")})).reduce((y,f)=>F(C({},y),{[f.id]:f}),{});for(let y of Object.values(t)){let{programId:f,lpMint:b,rewardInfos:g,id:h}=y,P=bt[f],k=b.address,B=n&&k===$.toString(),T=m[k];if(!T){let{account:q,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new ke(k),notUseTokenAccount:B,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:B?!1:i,checkCreateATAOwner:s});T=q,D&&l.addInstruction(D)}m[k.toString()]=T;let S=[];for(let q of g){let D=n&&q.mint.address===$.toString(),J=m[q.mint.address];if(!J){let{account:G,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:q.mint.programId,mint:new ke(q.mint.address),notUseTokenAccount:D,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!D,associatedOnly:D?!1:i,checkCreateATAOwner:s});J=G,W&&l.addInstruction(W)}m[q.mint.address]=J,S.push(J)}let x=p[h],R={amount:Fe,owner:this.scope.ownerPubKey,farmInfo:y,farmKeys:x,lpAccount:T,rewardAccounts:S,userAuxiliaryLedgers:a==null?void 0:a.map(q=>new ke(q))},I=P===6?ho(R):P===5?ko(R):To(R),N={3:v.FarmV3Withdraw,5:v.FarmV5Withdraw,6:v.FarmV6Withdraw};l.addInstruction({instructions:[I],instructionTypes:[N[P]]})}return c===1?l.sizeCheckBuild({computeBudgetConfig:u}):l.sizeCheckBuildV0({computeBudgetConfig:u})}};import{PublicKey as tt}from"@solana/web3.js";import{AccountLayout as Gp,NATIVE_MINT as sc,TOKEN_PROGRAM_ID as Yn}from"@solana/spl-token";var Rh=M([Ze("mintAuthorityOption"),K("mintAuthority"),w("supply"),E("decimals"),E("isInitialized"),Ze("freezeAuthorityOption"),K("freezeAuthority")]);import{PublicKey as rp}from"@solana/web3.js";import{MintLayout as Tu,TOKEN_PROGRAM_ID as ip}from"@solana/spl-token";var Dh=async({connection:o,mint:e})=>{let t=await o.getAccountInfo(new rp(e));return!t||t.data.length!==Tu.span?void 0:Tu.decode(t.data)},Wh=({mint:o,decimals:e,programId:t=ip,logoURI:n="",priority:r=3})=>{let i=o.toBase58().substring(0,6);return{address:o.toBase58(),decimals:e,symbol:i,logoURI:n,extensions:{},chainId:101,programId:t.toString(),name:i,tags:[],priority:r}},Rr=o=>new ye({mint:o.address,decimals:o.decimals,symbol:o.symbol,name:o.name}),Bo=r=>{var i=r,{amount:o,isRaw:e,name:t}=i,n=Ke(i,["amount","isRaw","name"]);return new fe(new ye({mint:mt(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),o,e,t)};function qh(o){return o.address===Rt.address?Ve:o}function Uh(o){return o.address===Ve.address?Rt:o}var it=r=>{var i=r,{address:o,programId:e,decimals:t}=i,n=Ke(i,["address","programId","decimals"]);return C({chainId:101,address:mt(o).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)},cn=o=>o?F(C({},o),{transferFeeConfigAuthority:o.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:o.withdrawWithheldAuthority.toBase58(),withheldAmount:o.withheldAmount.toString(),olderTransferFee:F(C({},o.olderTransferFee),{epoch:o.olderTransferFee.epoch.toString(),maximumFee:o.olderTransferFee.maximumFee.toString()}),newerTransferFee:F(C({},o.newerTransferFee),{epoch:o.newerTransferFee.epoch.toString(),maximumFee:o.newerTransferFee.maximumFee.toString()})}):void 0;import{TOKEN_PROGRAM_ID as Xn,ASSOCIATED_TOKEN_PROGRAM_ID as wp}from"@solana/spl-token";import{PublicKey as Ae,TransactionInstruction as Gt,SystemProgram as Lu,SYSVAR_RENT_PUBKEY as Pp}from"@solana/web3.js";var ds=M([E("instruction"),w("amountIn"),w("minAmountOut")]),ps=M([E("instruction"),w("maxAmountIn"),w("amountOut")]),tk=M([E("instruction"),E("nonce")]),fs=M([E("instruction"),E("nonce"),w("startTime")]),xo=M([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"),j("swapBaseInAmount"),j("swapQuoteOutAmount"),w("swapBase2QuoteFee"),j("swapQuoteInAmount"),j("swapBaseOutAmount"),w("swapQuote2BaseFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("withdrawQueue"),K("lpVault"),K("owner"),w("lpReserve"),X(w(),3,"padding")]),sp=M([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"),j("swapBaseInAmount"),j("swapQuoteOutAmount"),j("swapQuoteInAmount"),j("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),K("baseVault"),K("quoteVault"),K("baseMint"),K("quoteMint"),K("lpMint"),K("modelDataAccount"),K("openOrders"),K("marketId"),K("marketProgramId"),K("targetOrders"),K("owner"),X(w(),64,"padding")]),ys=M([E("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide")]),bs=M([E("instruction"),w("amountIn")]),nk={4:xo,5:sp},Iu=M([w("fee")]);import{PublicKey as ap}from"@solana/web3.js";var Gn=new ap("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Pn=5e4,up=M([w("x"),w("y"),w("price")]),cp=M([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),X(up,Pn,"DataElement")]);function lp(o,e){return[0,Pn-2]}function mp(o){return[0,Pn-2]}function dp(o){return[0,Pn-2]}function pp(o,e,t){let[n,r]=lp(e,t),i=n,s=r,a=0,c=e*o.multiplier/t;for(;i<=s;){if(a=Math.floor((s+i)/2),a===0||a>=Pn-2)return[a,a,!1];let u=o.DataElement[a].x*o.multiplier/o.DataElement[a].y,l=o.DataElement[a-1].x*o.multiplier/o.DataElement[a-1].y,m=o.DataElement[a+1].x*o.multiplier/o.DataElement[a+1].y;if(c===u)return[a,a,!0];if(c===l)return[a-1,a-1,!0];if(c===m)return[a+1,a+1,!0];if(c<l)s=a-1;else{if(c>l&&c<u)return[a-1,a,!0];if(c>u&&c<m)return[a,a+1,!0];i=a+1}}return[a,a,!1]}function gs(o,e,t){let[n,r,i]=pp(o,e,t);if(!i)return 0;if(n===r){let s=o.DataElement[n].x;return e*o.multiplier/s}else{let s=o.DataElement[n].x,a=o.DataElement[n].y,c=o.DataElement[r].x,u=o.DataElement[r].y,l=t*(c*a-s*u),m=s*l,d=(c-s)*(e*a-s*t)*u,p=m+d;return e*o.multiplier*l/p}}function wn(o,e,t){return e*o.multiplier/t}function Bu(o,e,t){return e*t/o.multiplier}function fp(o,e){let[t,n]=mp(e),r=t,i=n,s=0,a=e;for(;r<i;){if(s=Math.floor((i+r)/2),s<=0||s>Pn-2)return[s,s,!1];let c=o.DataElement[s].x,u=o.DataElement[s-1].x,l=o.DataElement[s+1].x;if(a===c)return[s,s,!0];if(a===u)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<u)i=s-1;else{if(a>u&&a<c)return[s-1,s,!0];if(a>c&&a<l)return[s,s+1,!0];r=s+1}}return[s,s,!1]}function yp(o,e){let[t,n]=dp(e),r=t,i=n,s=0,a=e;for(;r<=i;){if(s=Math.floor((i+r)/2),s<=0||s>=Pn-2)return[s,s,!1];let c=o.DataElement[s].y,u=o.DataElement[s-1].y,l=o.DataElement[s+1].y;if(a===c)return[s,s,!0];if(a===u)return[s-1,s-1,!0];if(a===l)return[s+1,s+1,!0];if(a<l)r=s+1;else{if(a<u&&a>c)return[s-1,s,!0];if(a<c&&a>l)return[s,s+1,!0];i=s-1}}return[s,s,!1]}function xu(o,e,t,n){let r=n?e+t:e-t,[i,s,a]=fp(o,r);if(!a)return[0,0,!1,a];if(i===s)return[o.DataElement[s].price,o.DataElement[s].y,!1,a];{let c=o.DataElement[i].x,u=o.DataElement[s].x,l=o.DataElement[i].price,m=o.DataElement[s].price,d=o.DataElement[i].y,p=o.DataElement[s].y;if(e>=c&&e<=u)return n?[m,p,!0,a]:[l,d,!0,a];{let y,f;return n?(y=l+(m-l)*(e-c)/(u-c),f=d-(r-c)*o.multiplier/m):(y=l+(m-l)*(e-c)/(u-c),f=p+(u-r)*o.multiplier/l),[y,f,!1,a]}}}function bp(o,e,t,n){let r=n?e-t:e+t,[i,s,a]=yp(o,r);if(!a)return[0,0,!1,a];if(i===s)return[o.DataElement[s].price,o.DataElement[s].x,!1,a];{let c=o.DataElement[i].x,u=o.DataElement[s].x,l=o.DataElement[i].price,m=o.DataElement[s].price,d=o.DataElement[i].y,p=o.DataElement[s].y;if(e>=p&&e<=d)return n?[m,u,!0,a]:[l,c,!0,a];{let y,f;return n?(y=l+(m-l)*(d-e)/(d-p),f=c+m*(d-r)/o.multiplier):(y=l+(m-l)*(d-e)/(d-p),f=u-l*(r-p)/o.multiplier),[y,f,!1,a]}}}function gp(o,e){let t=xu(o,e,0,!1);return t[3]?t[0]:0}function Su(o,e,t,n){let r=gs(o,e,t),i=wn(o,e,r),s=wn(o,t,r),a=wn(o,n,r),c=!0,[u,l,m,d]=xu(o,i,a,c);if(!d)return 0;if(m)return n*o.multiplier/u;{let p=s-l;return Bu(o,p,r)}}function Ku(o,e,t,n){let r=gs(o,e,t),i=wn(o,e,r),s=wn(o,t,r),a=wn(o,n,r),c=!1,[u,l,m,d]=bp(o,s,a,c);if(!d)return 0;if(m)return n*u/o.multiplier;{let p=i-l;return Bu(o,p,r)}}function Ap(o){let e=cp.decode(o);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function Cu(o,e,t,n){let r=gp(o,wn(o,e,gs(o,e,t)))/o.multiplier;return n?r:1/r}var Un=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(Gn);e&&(this._layoutData=Ap(e==null?void 0:e.data))}}};var Ru=ce("Raydium_liquidity_instruction");function Ou(o){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:r,quoteAmountIn:i,fixedSide:s}=o,a=Buffer.alloc(ys.span);ys.encode({instruction:3,baseAmountIn:Y(r),quoteAmountIn:Y(i),fixedSide:s==="base"?Fe:Pa},a);let c=[A({pubkey:Xn,isWritable:!1}),A({pubkey:new Ae(e.id)}),A({pubkey:new Ae(t.authority),isWritable:!1}),A({pubkey:new Ae(t.openOrders),isWritable:!1}),A({pubkey:new Ae(t.targetOrders)}),A({pubkey:new Ae(e.lpMint.address)}),A({pubkey:new Ae(t.vault.A)}),A({pubkey:new Ae(t.vault.B)})];return e.pooltype.includes("StablePool")&&c.push(A({pubkey:Gn})),c.push(A({pubkey:new Ae(e.marketId),isWritable:!1}),A({pubkey:n.baseTokenAccount}),A({pubkey:n.quoteTokenAccount}),A({pubkey:n.lpTokenAccount}),A({pubkey:n.owner,isWritable:!1,isSigner:!0}),A({pubkey:new Ae(t.marketEventQueue),isWritable:!1})),new Gt({programId:new Ae(e.programId),keys:c,data:a})}function As(o){let{poolInfo:e,poolKeys:t,userKeys:n,amountIn:r}=o,i=Ie(t),s=4;if(e.pooltype.includes("StablePool")&&(s=5),s===4||s===5){let a=Buffer.alloc(bs.span);bs.encode({instruction:4,amountIn:Y(r)},a);let c=[A({pubkey:Xn,isWritable:!1}),A({pubkey:i.id}),A({pubkey:i.authority,isWritable:!1}),A({pubkey:i.openOrders}),A({pubkey:i.targetOrders}),A({pubkey:i.mintLp.address}),A({pubkey:i.vault.A}),A({pubkey:i.vault.B})];return s===5?c.push(A({pubkey:Gn})):(c.push(A({pubkey:i.id})),c.push(A({pubkey:i.id}))),c.push(A({pubkey:i.marketProgramId,isWritable:!1}),A({pubkey:i.marketId}),A({pubkey:i.marketBaseVault}),A({pubkey:i.marketQuoteVault}),A({pubkey:i.marketAuthority,isWritable:!1}),A({pubkey:n.lpTokenAccount}),A({pubkey:n.baseTokenAccount}),A({pubkey:n.quoteTokenAccount}),A({pubkey:n.owner,isWritable:!1,isSigner:!0}),A({pubkey:i.marketEventQueue}),A({pubkey:i.marketBids}),A({pubkey:i.marketAsks})),new Gt({programId:i.programId,keys:c,data:a})}return new Gt({programId:i.programId,keys:[]})}function Nu({programId:o,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:r,coinMint:i,pcMint:s,coinVault:a,pcVault:c,withdrawQueue:u,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:y,userCoinVault:f,userPcVault:b,userLpVault:g,nonce:h,openTime:P,coinAmount:k,pcAmount:B,ammConfigId:T,feeDestinationId:S}){let x=M([E("instruction"),E("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),R=[{pubkey:Xn,isSigner:!1,isWritable:!1},{pubkey:wp,isSigner:!1,isWritable:!1},{pubkey:Lu.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:T,isSigner:!1,isWritable:!1},{pubkey:S,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0}],I=Buffer.alloc(x.span);return x.encode({instruction:1,nonce:h,openTime:P,coinAmount:k,pcAmount:B},I),{instruction:new Gt({keys:R,programId:o,data:I}),instructionType:v.AmmV4CreatePool}}function Ak(o){let e=M([E("instruction"),E("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[A({pubkey:new Ae(o.id),isWritable:!1}),A({pubkey:new Ae(o.authority),isWritable:!1}),A({pubkey:new Ae(o.openOrders),isWritable:!1}),A({pubkey:new Ae(o.vault.A),isWritable:!1}),A({pubkey:new Ae(o.vault.B),isWritable:!1}),A({pubkey:new Ae(o.mintLp.address),isWritable:!1}),A({pubkey:new Ae(o.marketId),isWritable:!1}),A({pubkey:new Ae(o.marketEventQueue),isWritable:!1})];return new Gt({programId:new Ae(o.programId),keys:n,data:t})}function hp({poolKeys:o,userKeys:e,amountIn:t,minAmountOut:n},r){let i=Ie(o),s=Buffer.alloc(ds.span);ds.encode({instruction:9,amountIn:Y(t),minAmountOut:Y(n)},s);let a=[A({pubkey:Xn,isWritable:!1}),A({pubkey:i.id}),A({pubkey:i.authority,isWritable:!1}),A({pubkey:i.openOrders})];return r===4&&a.push(A({pubkey:i.targetOrders})),a.push(A({pubkey:i.vault.A}),A({pubkey:i.vault.B})),r===5&&a.push(A({pubkey:Gn})),a.push(A({pubkey:i.marketProgramId,isWritable:!1}),A({pubkey:i.marketId}),A({pubkey:i.marketBids}),A({pubkey:i.marketAsks}),A({pubkey:i.marketEventQueue}),A({pubkey:i.marketBaseVault}),A({pubkey:i.marketQuoteVault}),A({pubkey:i.marketAuthority,isWritable:!1}),A({pubkey:e.tokenAccountIn}),A({pubkey:e.tokenAccountOut}),A({pubkey:e.owner,isWritable:!1})),new Gt({programId:i.programId,keys:a,data:s})}function kp({poolKeys:o,userKeys:e,maxAmountIn:t,amountOut:n},r){let i=Ie(o),s=Buffer.alloc(ps.span);ps.encode({instruction:11,maxAmountIn:Y(t),amountOut:Y(n)},s);let a=[A({pubkey:Xn,isWritable:!1}),A({pubkey:i.id}),A({pubkey:i.authority,isWritable:!1}),A({pubkey:i.openOrders}),A({pubkey:i.targetOrders}),A({pubkey:i.vault.A}),A({pubkey:i.vault.B})];return r===5&&a.push(A({pubkey:Gn})),a.push(A({pubkey:i.marketProgramId,isWritable:!1}),A({pubkey:i.marketId}),A({pubkey:i.marketBids}),A({pubkey:i.marketAsks}),A({pubkey:i.marketEventQueue}),A({pubkey:i.marketBaseVault}),A({pubkey:i.marketQuoteVault}),A({pubkey:i.marketAuthority,isWritable:!1}),A({pubkey:e.tokenAccountIn}),A({pubkey:e.tokenAccountOut}),A({pubkey:e.owner,isWritable:!1,isSigner:!0})),new Gt({programId:i.programId,keys:a,data:s})}function Lr(o){let{poolKeys:e,version:t,userKeys:n,amountIn:r,amountOut:i,fixedSide:s}=o;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return hp(F(C({},a),{amountIn:r,minAmountOut:i}),t);if(s==="out")return kp(F(C({},a),{maxAmountIn:r,amountOut:i}),t);Ru.logWithError("invalid params","params",o)}throw Ru.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function wk({poolKeys:o,userKeys:e,startTime:t}){let n=Buffer.alloc(fs.span);fs.encode({instruction:0,nonce:5,startTime:Y(t)},n);let r=Ie(o),i=[A({pubkey:Xn,isWritable:!1}),A({pubkey:Lu.programId,isWritable:!1}),A({pubkey:Pp,isWritable:!1}),A({pubkey:r.id}),A({pubkey:r.authority,isWritable:!1}),A({pubkey:r.openOrders}),A({pubkey:r.mintLp.address}),A({pubkey:r.mintA.address,isWritable:!1}),A({pubkey:r.mintB.address,isWritable:!1}),A({pubkey:r.vault.A,isWritable:!1}),A({pubkey:r.vault.B,isWritable:!1}),A({pubkey:r.id}),A({pubkey:r.targetOrders}),A({pubkey:e.lpTokenAccount}),A({pubkey:r.id,isWritable:!1}),A({pubkey:r.marketProgramId,isWritable:!1}),A({pubkey:r.marketId,isWritable:!1}),A({pubkey:e.payer,isSigner:!0})];return new Gt({programId:r.programId,keys:i,data:n})}function Mu({poolKeys:o}){let e=M([E("instruction"),E("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[A({pubkey:new Ae(o.id),isWritable:!1}),A({pubkey:new Ae(o.authority),isWritable:!1}),A({pubkey:new Ae(o.openOrders),isWritable:!1}),A({pubkey:new Ae(o.vault.A),isWritable:!1}),A({pubkey:new Ae(o.vault.B),isWritable:!1}),A({pubkey:new Ae(o.mintLp.address),isWritable:!1}),A({pubkey:new Ae(o.marketId),isWritable:!1}),A({pubkey:new Ae(o.marketEventQueue),isWritable:!1})];return{instruction:new Gt({programId:new Ae(o.programId),keys:n,data:t})}}import{TOKEN_PROGRAM_ID as je,TOKEN_2022_PROGRAM_ID as ln,ASSOCIATED_TOKEN_PROGRAM_ID as $u}from"@solana/spl-token";import{PublicKey as U,TransactionInstruction as St,SystemProgram as zn,Keypair as Ss}from"@solana/web3.js";import Ju from"bn.js";import Np from"bn.js";function _u(o){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,o,!1),new Uint8Array(e)}function hk(o){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,o,!1),new Uint8Array(e)}function kk(o){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,o,!1),new Uint8Array(e)}function Or(o){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,o,!1),new Uint8Array(e)}function ws(o,e){let t=0;for(let n=o-1;n>=0&&!e.testn(n);n--)t++;return t}function Ps(o,e){let t=0;for(let n=0;n<o&&!e.testn(n);n++)t++;return t}function So(o,e){for(let t=0;t<o;t++)if(e.testn(t))return!1;return!0}function Vu(o,e){return So(o,e)?null:ws(o,e)}function vu(o,e){return So(o,e)?null:Ps(o,e)}var Tp=Buffer.from("amm_config","utf8"),Ip=Buffer.from("pool","utf8"),Bp=Buffer.from("pool_vault","utf8"),xp=Buffer.from("pool_reward_vault","utf8"),Fu=Buffer.from("position","utf8"),Sp=Buffer.from("tick_array","utf8"),Kp=Buffer.from("operation","utf8"),Cp=Buffer.from("pool_tick_array_bitmap_extension","utf8");function xk(o,e){return ue([Tp,_u(e)],o)}function Eu(o,e,t,n){return ue([Ip,e.toBuffer(),t.toBuffer(),n.toBuffer()],o)}function hs(o,e,t){return ue([Bp,e.toBuffer(),t.toBuffer()],o)}function Du(o,e,t){return ue([xp,e.toBuffer(),t.toBuffer()],o)}function we(o,e,t){return ue([Sp,e.toBuffer(),Or(t)],o)}function hn(o,e,t,n){return ue([Fu,e.toBuffer(),Or(t),Or(n)],o)}function gt(o,e){return ue([Fu,e.toBuffer()],o)}function Nr(o){return ue([Buffer.from("metadata","utf8"),_n.toBuffer(),o.toBuffer()],_n)}function Ko(o){return ue([Kp],o)}function pt(o,e){return ue([Cp,e.toBuffer()],o)}import At from"bn.js";var pe=new At(0),ft=new At(1),Xt=new At(-1),yt=new At(1).shln(64),Mr=new At(1).shln(128),ks=yt.sub(ft),Co=64,Wu=Mr.subn(1),et=-443636,st=-et,_t=new At("4295048016"),Vt=new At("79226673521066979257578248091"),_r=new At("4295048017"),Vr=new At("79226673521066979257578248090"),qu=16,Uu="59543866431248",Gu="184467440737095516",Xu="15793534762490258745",vr=new At(10).pow(new At(6)),Rp=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(Rp||{}),Ck={[500]:10,[3e3]:60,[1e4]:200},Rk={version:6,liquidity:pe,tickCurrent:0,observationIndex:0,observationUpdateDuration:0,feeGrowthGlobalX64A:pe,feeGrowthGlobalX64B:pe,protocolFeesTokenA:pe,protocolFeesTokenB:pe,swapInAmountTokenA:pe,swapOutAmountTokenB:pe,swapInAmountTokenB:pe,swapOutAmountTokenA:pe,tickArrayBitmap:[],rewardInfos:[],day:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},week:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},month:{volume:0,volumeFee:0,feeA:0,feeB:0,feeApr:0,rewardApr:{A:0,B:0,C:0},apr:0,priceMax:0,priceMin:0},tvl:0},zu={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:[]},Lk=new At("18446744073700000000");var Lp=15,me=class{static async getTickArrays(e,t,n,r,i,s,a){let c=[],u=H.getTickArrayStartIndexByTick(r,i),l=H.getInitializedTickArrayInRange(s,a,i,u,Math.floor(Lp/2));for(let p=0;p<l.length;p++){let{publicKey:y}=we(t,n,l[p]);c.push(y)}let m=(await Tt(e,c)).map(p=>p!==null?Ro.decode(p.data):null),d={};for(let p=0;p<c.length;p++){let y=m[p];y!==null&&(d[y.startTickIndex]=F(C({},y),{address:c[p]}))}return d}static nextInitializedTick(e,t,n,r,i,s){let{initializedTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}=this.nextInitializedTickInOneArray(e,t,n,r,i,s);for(;a==null||a.liquidityGross.lten(0);){if(u=H.getNextTickArrayStartIndex(u,i,s),this.checkIsValidStartIndex(u,i))throw new Error("No enough initialized tickArray");let l=n[u];if(l===void 0)continue;let{nextTick:m,tickArrayAddress:d,tickArrayStartTickIndex:p}=this.firstInitializedTickInOneArray(e,t,l,s);[a,c,u]=[m,d,p]}if(a==null)throw new Error("No invaild tickArray cache");return{nextTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}}static nextInitializedTickArray(e,t,n,r,i){let s=Math.floor(e/me.tickCount(t)),a=n?H.searchLowBitFromStart(r,i,s-1,1,t):H.searchHightBitFromStart(r,i,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,r){let i;if(r){let a=De-1;for(;a>=0;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){i=c;break}a=a-1}}else{let a=0;for(;a<De;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){i=c;break}a=a+1}}let{publicKey:s}=we(e,t,n.startTickIndex);return{nextTick:i,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,r,i,s){let a=H.getTickArrayStartIndexByTick(r,i),c=Math.floor((r-a)/i),u=n[a];if(u==null)return{initializedTick:void 0,tickArrayAddress:void 0,tickArrayStartTickIndex:a};let l;if(s)for(;c>=0;){let d=u.ticks[c];if(d.liquidityGross.gtn(0)){l=d;break}c=c-1}else for(c=c+1;c<De;){let d=u.ticks[c];if(d.liquidityGross.gtn(0)){l=d;break}c=c+1}let{publicKey:m}=we(e,t,a);return{initializedTick:l,tickArrayAddress:m,tickArrayStartTickIndex:u.startTickIndex}}static getArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static checkIsValidStartIndex(e,t){if(H.checkIsOutOfBoundary(e)){if(e>st)return!1;let n=H.getTickArrayStartIndexByTick(et,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return De*e}};import ie from"bn.js";import{PublicKey as xt}from"@solana/web3.js";import Re from"bn.js";var Ts=14,zt=class{static maxTickInTickarrayBitmap(e){return e*De*kn}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(r+=1);let i=n*r;return e<0?{minValue:-i,maxValue:-i+n}:{minValue:i,maxValue:i+n}}static nextInitializedTickArrayStartIndex(e,t,n,r){if(!me.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let i=this.maxTickInTickarrayBitmap(n),s=r?t-me.tickCount(n):t+me.tickCount(n);if(s<-i||s>=i)return{isInit:!1,tickIndex:t};let a=n*De,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(r){let l=e.shln(1024-u-1),m=Vu(1024,l);if(m!==null){let d=(u-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-i}}else{let l=e.shrn(u),m=vu(1024,l);if(m!==null){let d=(u+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:i-me.tickCount(n)}}}},Lo=class{static getBitmapOffset(e,t){if(!me.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=zt.maxTickInTickarrayBitmap(t),r=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&r--,r}static getBitmap(e,t,n){let r=this.getBitmapOffset(e,t);return e<0?{offset:r,tickarrayBitmap:n.negativeTickArrayBitmap[r]}:{offset:r,tickarrayBitmap:n.positiveTickArrayBitmap[r]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:r}=this.extensionTickBoundary(t);if(e>=r&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=zt.maxTickInTickarrayBitmap(e),n=-t;if(st<=t)throw Error(`extensionTickBoundary check error: ${st}, ${t}`);if(n<=et)throw Error(`extensionTickBoundary check error: ${n}, ${et}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:r}=this.getBitmap(e,t,n),i=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:H.mergeTickArrayBitmap(r).testn(i),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,r){let i=me.tickCount(t),s=n?e-i:e+i,{tickarrayBitmap:a}=this.getBitmap(s,t,r);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,r){let{minValue:i,maxValue:s}=zt.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(r){let c=H.mergeTickArrayBitmap(e).shln(kn-1-a),u=So(512,c)?null:ws(512,c);if(u!==null){let l=t-u*me.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:i}}else{let c=H.mergeTickArrayBitmap(e).shrn(a),u=So(512,c)?null:Ps(512,c);if(u!==null){let l=t+u*me.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-me.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%zt.maxTickInTickarrayBitmap(t),r=Math.floor(n/me.tickCount(t));return e<0&&n!=0&&(r=kn-r),r}};import vt from"bn.js";var Oo=class{static getfeeGrowthInside(e,t,n){let r=new vt(0),i=new vt(0);e.tickCurrent>=t.tick?(r=t.feeGrowthOutsideX64A,i=t.feeGrowthOutsideX64B):(r=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),i=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new vt(0),a=new vt(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(s=e.feeGrowthGlobalX64A.sub(n.feeGrowthOutsideX64A),a=e.feeGrowthGlobalX64B.sub(n.feeGrowthOutsideX64B));let c=ne.wrappingSubU128(ne.wrappingSubU128(e.feeGrowthGlobalX64A,r),s),u=ne.wrappingSubU128(ne.wrappingSubU128(e.feeGrowthGlobalX64B,i),a);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:u}}static GetPositionFees(e,t,n,r){let{feeGrowthInsideX64A:i,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=ne.mulDivFloor(ne.wrappingSubU128(i,t.feeGrowthInsideLastX64A),t.liquidity,yt),c=t.tokenFeesOwedA.add(a),u=ne.mulDivFloor(ne.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,yt),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,r){let{feeGrowthInsideX64A:i,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,r),a=ne.mulDivFloor(ne.wrappingSubU128(i,t.feeGrowthInsideLastX64A),t.liquidity,yt),c=t.tokenFeesOwedA.add(a),u=ne.mulDivFloor(ne.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,yt),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,r){let i=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let c=s[a],u=t.rewardInfos[a],l=ne.wrappingSubU128(c,u.growthInsideLastX64),m=ne.mulDivFloor(l,t.liquidity,yt),d=u.rewardAmountOwed.add(m);i.push(d)}return i}static GetPositionRewards(e,t,n,r){let i=[],s=this.getRewardGrowthInside(e.tickCurrent,n,r,e.rewardInfos);for(let a=0;a<s.length;a++){let c=s[a],u=t.rewardInfos[a],l=ne.wrappingSubU128(c,u.growthInsideLastX64),m=ne.mulDivFloor(l,t.liquidity,yt),d=u.rewardAmountOwed.add(m);i.push(d)}return i}static getRewardGrowthInside(e,t,n,r){let i=[];for(let s=0;s<r.length;s++){let a=new vt(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let c=new vt(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),i.push(ne.wrappingSubU128(ne.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return i}static getRewardGrowthInsideV2(e,t,n,r){let i=[];for(let s=0;s<r.length;s++){let a=new vt(0);t.liquidityGross.eqn(0)?a=r[s].rewardGrowthGlobalX64:e<t.tick?a=r[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let c=new vt(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=r[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),i.push(ne.wrappingSubU128(ne.wrappingSubU128(r[s].rewardGrowthGlobalX64,a),c))}return i}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:r,add:i,epochInfo:s}){var b,g,h,P;let a=te.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),c=te.getSqrtPriceX64FromTick(t.tickLower),u=te.getSqrtPriceX64FromTick(t.tickUpper),l=i?1+r:1-r,m=le.getAmountsFromLiquidity(a,c,u,n,i),[d,p]=[he(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),he(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[y,f]=[he(new vt(new V(m.amountA.toString()).mul(l).toFixed(0)),(h=e.mintA.extensions)==null?void 0:h.feeConfig,s,!0),he(new vt(new V(m.amountB.toString()).mul(l).toFixed(0)),(P=e.mintB.extensions)==null?void 0:P.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Ot(d.expirationTime,p.expirationTime)}}};import{TOKEN_2022_PROGRAM_ID as Yu}from"@solana/spl-token";var Le=class{static getOutputAmountAndRemainAccounts(e,t,n,r,i,s=!1){let a=n.toBase58()===e.mintA.address,c=[],{isExist:u,startIndex:l,nextAccountMeta:m}=this.getFirstInitializedTickArray(e,a);if(!u||l===void 0||!m)throw new Error("Invalid tick array");c.push(m);let{allTrade:d,amountCalculated:p,accounts:y,sqrtPriceX64:f,feeAmount:b}=Tn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r,l,i,s);return c.push(...y),{allTrade:d,expectedAmountOut:p.mul(Xt),remainingAccounts:c,executionPrice:f,feeAmount:b}}static getInputAmountAndRemainAccounts(e,t,n,r,i){let s=n.toBase58()===e.mintB.address,a=[],{isExist:c,startIndex:u,nextAccountMeta:l}=this.getFirstInitializedTickArray(e,s);if(!c||u===void 0||!l)throw new Error("Invalid tick array");try{let f=this.preInitializedTickArrayStartIndex(e,s);if(f.isExist){let{publicKey:b}=we(e.programId,e.id,f.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:y}=Tn.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,r.mul(Xt),u,i);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:y}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:r}=Le.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Lo.checkTickArrayIsInit(me.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):H.checkTickArrayIsInitialized(H.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=we(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:a}}let{isExist:i,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,me.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(i){let{publicKey:a}=we(e.programId,e.id,s);return{isExist:!0,startIndex:s,nextAccountMeta:a}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static preInitializedTickArrayStartIndex(e,t){let n=Math.floor(e.tickCurrent/me.tickCount(e.tickSpacing)),r=t?H.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):H.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return r.length>0?{isExist:!0,nextStartIndex:r[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=me.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:r,tickIndex:i}=zt.nextInitializedTickArrayStartIndex(H.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(r)return{isExist:!0,nextStartIndex:i};t=i;let{isInit:s,tickIndex:a}=Lo.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<et||t>st)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:r,rewardInfos:i}){var a,c,u;let s=[];for(let l=0;l<i.length;l++){let m=i[l],d=(u=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(m.tokenMint))==null?void 0:c.owner;if(d===void 0)throw Error("get new reward mint info error");let p=F(C({},m),{perSecond:ne.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new xt(d)});if(p.tokenMint.equals(xt.default))continue;if(n<=p.openTime.toNumber()||r.eq(pe)){s.push(p);continue}let y=new Re(Math.min(p.endTime.toNumber(),n)),f=y.sub(p.lastUpdateTime),b=ne.mulDivFloor(f,p.emissionsPerSecondX64,r),g=p.rewardGrowthGlobalX64.add(b),h=ne.mulDivFloor(f,p.emissionsPerSecondX64,yt),P=p.rewardTotalEmissioned.add(h);s.push(F(C({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:P,lastUpdateTime:y}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:r}=this.tickRange(e);for(let i of t){let s=H.getTickArrayStartIndexByTick(i,e);if(s>=n||s<r)return!0}return!1}static tickRange(e){let t=zt.maxTickInTickarrayBitmap(e),n=-t;return t>st&&(t=me.getArrayStartIndex(st,e)+me.tickCount(e)),n<et&&(n=me.getArrayStartIndex(et,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!me.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/me.tickCount(t)*kn}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let r=await Ee(e,t.map(s=>({pubkey:s})),{batchRequest:n}),i={};for(let s of r)s.accountInfo!==null&&(i[s.pubkey.toString()]=ju.decode(s.accountInfo.data));return i}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let r={},i=[];for(let c of t){let u=H.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),l=H.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let m of l){let{publicKey:d}=we(c.programId,c.id,m);i.push({pubkey:d}),r[d.toString()]=c.id}}let s=await Ee(e,i,{batchRequest:n}),a={};for(let c of s){if(!c.accountInfo)continue;let u=r[c.pubkey.toString()];if(!u)continue;a[u.toString()]===void 0&&(a[u.toString()]={});let l=Ro.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]=F(C({},l),{address:c.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:r=!1,updateOwnerRewardAndFee:i=!0}){var a;let s=[];for(let c=0;c<e.length;c++){let u=e[c];u!==null&&(s.find(l=>l.equals(u.state.programId))||s.push(u.state.programId))}if(n){let c=n.tokenAccounts.map(d=>d.accountInfo.mint),u=[];for(let d of c)for(let p of s)u.push(gt(p,d).publicKey);let l=await Tt(t,u,{batchRequest:r}),m={};for(let d of l){if(d===null)continue;let p=Fr.decode(d.data),y=p.poolId.toString(),f=e.find(x=>x.state.id.toBase58()===y);if(f===void 0)continue;let b=f.state,g=H._getTickPriceLegacy({poolInfo:b,tick:p.tickLower,baseIn:!0}),h=H._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:P,amountB:k}=le.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,h.tickSqrtPriceX64,p.liquidity,!1),B=1/(1-Math.sqrt(Math.sqrt(g.price.div(h.price).toNumber())));f.positionAccount=[...(a=f.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:g.price,priceUpper:h.price,amountA:P,amountB:k,tickLower:p.tickLower,tickUpper:p.tickUpper,liquidity:p.liquidity,feeGrowthInsideLastX64A:p.feeGrowthInsideLastX64A,feeGrowthInsideLastX64B:p.feeGrowthInsideLastX64B,tokenFeesOwedA:p.tokenFeesOwedA,tokenFeesOwedB:p.tokenFeesOwedB,rewardInfos:p.rewardInfos.map(x=>F(C({},x),{pendingReward:new Re(0)})),leverage:B,tokenFeeAmountA:new Re(0),tokenFeeAmountB:new Re(0)}];let T=await H.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickLower,f.state.tickSpacing),S=await H.getTickArrayAddressByTick(f.state.programId,p.poolId,p.tickUpper,f.state.tickSpacing);m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=T,m[`${f.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(i){let d=Object.values(m),p=await Tt(t,d,{batchRequest:r}),y={};for(let f=0;f<d.length;f++){let b=p[f];if(b===null)continue;let g=d[f].toString();y[g]=Ro.decode(b.data)}for(let{state:f,positionAccount:b}of e)if(!!b)for(let g of b){let h=`${f.programId.toString()}-${f.id.toString()}-${g.tickLower}`,P=`${f.programId.toString()}-${f.id.toString()}-${g.tickUpper}`,k=y[m[h].toString()],B=y[m[P].toString()],T=k.ticks[H.getTickOffsetInArray(g.tickLower,f.tickSpacing)],S=B.ticks[H.getTickOffsetInArray(g.tickUpper,f.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:R}=await Oo.GetPositionFees(f,g,T,S),I=await Oo.GetPositionRewards(f,g,T,S);g.tokenFeeAmountA=x.gte(new Re(0))?x:new Re(0),g.tokenFeeAmountB=R.gte(new Re(0))?R:new Re(0);for(let N=0;N<I.length;N++)g.rewardInfos[N].pendingReward=I[N].gte(new Re(0))?I[N]:new Re(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:r,amountIn:i,slippage:s,priceLimit:a=new V(0),catchLiquidityInsufficient:c=!1}){var q;let u,l=n.toBase58()===e.mintA.address,[m,d]=l?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];a.equals(new V(0))?u=l?_t.add(new Re(1)):Vt.sub(new Re(1)):u=te.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=he(i,m,r,!1),{allTrade:y,expectedAmountOut:f,remainingAccounts:b,executionPrice:g,feeAmount:h}=Le.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((q=p.fee)!=null?q:pe),u,c),P=he(f,d,r,!1),k=te.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),B=l?k:new V(1).div(k),T=f.mul(new Re(Math.floor((1-s)*1e10))).div(new Re(1e10)),S=he(T,d,r,!1),x=l?e.currentPrice:new V(1).div(e.currentPrice),R=new V(B).sub(x).abs(),I=x,N=new ve(new V(R).mul(10**15).toFixed(0),new V(I).mul(10**15).toFixed(0));return{allTrade:y,realAmountIn:p,amountOut:P,minAmountOut:S,expirationTime:Ot(p.expirationTime,P.expirationTime),currentPrice:e.currentPrice,executionPrice:B,priceImpact:N,fee:h,remainingAccounts:b,executionPriceX64:g}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:r,slippage:i,epochInfo:s,catchLiquidityInsufficient:a=!1}){let c=r.address===e.mintB.address,[u,l]=c?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,d]=[new ye(F(C({},u),{mint:u.address,isToken2022:u.programId===Yu.toBase58()})),new ye(F(C({},l),{mint:l.address,isToken2022:l.programId===Yu.toBase58()}))],{allTrade:p,realAmountIn:y,amountOut:f,minAmountOut:b,expirationTime:g,currentPrice:h,executionPrice:P,priceImpact:k,fee:B,remainingAccounts:T,executionPriceX64:S}=Le.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new xt(u.address),amountIn:n,slippage:i,epochInfo:s,catchLiquidityInsufficient:a}),x=F(C({},y),{amount:new fe(m,y.amount),fee:y.fee===void 0?void 0:new fe(m,y.fee)}),R=F(C({},f),{amount:new fe(d,f.amount),fee:f.fee===void 0?void 0:new fe(d,f.fee)}),I=F(C({},b),{amount:new fe(d,b.amount),fee:b.fee===void 0?void 0:new fe(d,b.fee)}),N=new We({baseToken:m,denominator:new Re(10).pow(new Re(20+m.decimals)),quoteToken:d,numerator:h.mul(new V(10**(20+d.decimals))).toFixed(0)}),q=new We({baseToken:m,denominator:new Re(10).pow(new Re(20+m.decimals)),quoteToken:d,numerator:P.mul(new V(10**(20+d.decimals))).toFixed(0)}),D=new fe(m,B);return{allTrade:p,realAmountIn:x,amountOut:R,minAmountOut:I,expirationTime:g,currentPrice:N,executionPrice:q,priceImpact:k,fee:D,remainingAccounts:T,executionPriceX64:S}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:r}){var y,f,b;let i=e[t],s=H.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=H.getTickPrice({poolInfo:e,tick:r,baseIn:!0}).price.toNumber(),c=Math.max(s,i.priceMin),l=Math.min(a,i.priceMax)-c,m=a-s,d=i.priceMax-i.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:i.feeApr*p,rewardsApr:[((y=i.rewardApr[0])!=null?y:0)*p,((f=i.rewardApr[1])!=null?f:0)*p,((b=i.rewardApr[2])!=null?b:0)*p],apr:i.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:r,liquidity:i,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:c}){let u=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=r[mt(e.mintA.address).toString()],d=r[mt(e.mintB.address).toString()],p=e.mintA.decimals,y=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let f=te.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),b=te.getSqrtPriceX64FromTick(s),g=te.getSqrtPriceX64FromTick(a),{amountSlippageA:h,amountSlippageB:P}=le.getAmountsFromLiquidityWithSlippage(f,b,g,t,!1,!1,0),{amountSlippageA:k,amountSlippageB:B}=le.getAmountsFromLiquidityWithSlippage(f,b,g,i,!1,!1,0),T=new V(h.toString()).div(new V(10).pow(p)).mul(m.value).add(new V(P.toString()).div(new V(10).pow(y)).mul(d.value)),S=new V(k.toString()).div(new V(10).pow(p)).mul(m.value).add(new V(B.toString()).div(new V(10).pow(y)).mul(d.value)),x=new V(1).div(T.add(S)),I=new V(l.volumeFee).mul(365).div(u).mul(x).mul(100).toNumber(),N=3600*24*365,q=e.rewardDefaultInfos.map(D=>{var W,ot;let J=D.mint.decimals,G=r[D.mint.address];return c<((W=D.startTime)!=null?W:0)||c>((ot=D.endTime)!=null?ot:0)||!D.perSecond||!G||J===void 0?0:new V(G.value).mul(new V(D.perSecond).mul(N)).div(new V(10).pow(J)).mul(x).mul(100).toNumber()});return{feeApr:I,rewardsApr:q,apr:I+q.reduce((D,J)=>D+J,0)}}static getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:r,amount:i,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var g,h;let l=te.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),m=te.getSqrtPriceX64FromTick(n),d=te.getSqrtPriceX64FromTick(r),p=a?1-s:1+s,y=he(i,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,c,!u),f=new Re(new V(y.amount.sub((h=y.fee)!=null?h:pe).toString()).mul(p).toFixed(0)),b;if(l.lte(m))b=t?le.getLiquidityFromTokenAmountA(m,d,f,!a):new Re(0);else if(l.lte(d)){let P=le.getLiquidityFromTokenAmountA(l,d,f,!a),k=le.getLiquidityFromTokenAmountB(m,l,f);b=t?P:k}else b=t?new Re(0):le.getLiquidityFromTokenAmountB(m,d,f);return Le.getAmountsFromLiquidity({epochInfo:c,poolInfo:e,tickLower:n,tickUpper:r,liquidity:b,slippage:s,add:a})}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:r,liquidity:i,slippage:s,add:a}){var b,g,h,P;let c=te.getSqrtPriceX64FromTick(n),u=te.getSqrtPriceX64FromTick(r),l=a?1+s:1-s,m=le.getAmountsFromLiquidity(te.priceToSqrtPriceX64(new V(t.price),t.mintA.decimals,t.mintB.decimals),c,u,i,a),[d,p]=[he(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),he(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[y,f]=[he(m.amountA.muln(l),(h=t.mintA.extensions)==null?void 0:h.feeConfig,e,!0),he(m.amountB.muln(l),(P=t.mintB.extensions)==null?void 0:P.feeConfig,e,!0)];return{liquidity:i,amountA:d,amountB:p,amountSlippageA:y,amountSlippageB:f,expirationTime:Ot(d.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let r=t.filter(c=>!n[c.id]).map(c=>new xt(c.id));(await Tt(e,r)).forEach((c,u)=>{!c||(n[r[u].toBase58()]=In.decode(c.data))});let s=t.map(c=>pt(new xt(c.programId),new xt(c.id)).publicKey),a=await Le.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((c,u)=>F(C({},c),{[u.id]:F(C({},n[u.id]),{id:new xt(u.id),version:6,programId:new xt(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:F(C({},u.config),{id:new xt(u.config.id),fundOwner:""}),currentPrice:new V(u.price),exBitmapInfo:a[pt(new xt(u.programId),new xt(u.id)).publicKey.toBase58()],startTime:n[u.id].startTime.toNumber()})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}};function bT({poolInfo:o,tickLower:e,tickUpper:t,amountA:n,amountB:r,slippage:i,add:s,epochInfo:a,amountHasFee:c}){var P,k,B,T;let[u,l,m,d]=e<t?[e,t,n,r]:[t,e,r,n],p=te.priceToSqrtPriceX64(new V(o.price),o.mintA.decimals,o.mintB.decimals),y=te.getSqrtPriceX64FromTick(u),f=te.getSqrtPriceX64FromTick(l),[b,g]=[he(m,(P=o.mintA.extensions)==null?void 0:P.feeConfig,a,!c),he(d,(k=o.mintB.extensions)==null?void 0:k.feeConfig,a,!c)],h=le.getLiquidityFromTokenAmounts(p,y,f,b.amount.sub((B=b.fee)!=null?B:pe),g.amount.sub((T=g.fee)!=null?T:pe));return le.getAmountsOutFromLiquidity({poolInfo:o,tickLower:e,tickUpper:t,liquidity:h,slippage:i,add:s,epochInfo:a,amountAddFee:!c})}var Is={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};function Qu(o){return F(C({},o),{type:"Concentrated",programId:o.programId.toString(),id:o.id.toString(),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Clmm",price:o.currentPrice.toNumber(),mintAmountA:0,mintAmountB:0,feeRate:o.ammConfig.tradeFeeRate,openTime:o.startTime.toString(),tvl:0,day:Is,week:Is,month:Is,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,config:F(C({},o.ammConfig),{id:o.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]})})}var ne=class{static mulDivRoundingUp(e,t,n){let r=e.mul(t),i=r.div(n);return r.mod(n).eq(pe)||(i=i.add(ft)),i}static mulDivFloor(e,t,n){if(n.eq(pe))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(pe))throw new Error("division by 0");return e.mul(t).add(n.sub(ft)).div(n)}static x64ToDecimal(e,t){return new V(e.toString()).div(V.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ie(e.mul(V.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Mr).sub(t).mod(Mr)}};function Ue(o,e){return Bs(o.mul(e),64,256)}function Op(o,e,t){let n=o.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function Bs(o,e,t){let n=o.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var te=class{static sqrtPriceX64ToPrice(e,t,n){return ne.x64ToDecimal(e).pow(2).mul(V.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return ne.decimalToX64(e.mul(V.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,r){if(!e.gt(pe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(pe))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,r){if(!e.gt(pe))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(pe))throw new Error("liquidity must greater than 0");return r?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,r){if(n.eq(pe))return e;let i=t.shln(Co);if(r){let s=i,a=i.add(n.mul(e));return a.gte(s)?ne.mulDivCeil(s,e,a):ne.mulDivRoundingUp(s,ft,s.div(e).add(n))}else{let s=n.mul(e);if(!i.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=i.sub(s);return ne.mulDivCeil(i,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,r){let i=n.shln(Co);if(r)return e.add(i.div(t));{let s=ne.mulDivRoundingUp(i,ft,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<et||e>st)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new ie("18445821805675395072"):new ie("18446744073709551616");return(t&2)!=0&&(n=Ue(n,new ie("18444899583751176192"))),(t&4)!=0&&(n=Ue(n,new ie("18443055278223355904"))),(t&8)!=0&&(n=Ue(n,new ie("18439367220385607680"))),(t&16)!=0&&(n=Ue(n,new ie("18431993317065453568"))),(t&32)!=0&&(n=Ue(n,new ie("18417254355718170624"))),(t&64)!=0&&(n=Ue(n,new ie("18387811781193609216"))),(t&128)!=0&&(n=Ue(n,new ie("18329067761203558400"))),(t&256)!=0&&(n=Ue(n,new ie("18212142134806163456"))),(t&512)!=0&&(n=Ue(n,new ie("17980523815641700352"))),(t&1024)!=0&&(n=Ue(n,new ie("17526086738831433728"))),(t&2048)!=0&&(n=Ue(n,new ie("16651378430235570176"))),(t&4096)!=0&&(n=Ue(n,new ie("15030750278694412288"))),(t&8192)!=0&&(n=Ue(n,new ie("12247334978884435968"))),(t&16384)!=0&&(n=Ue(n,new ie("8131365268886854656"))),(t&32768)!=0&&(n=Ue(n,new ie("3584323654725218816"))),(t&65536)!=0&&(n=Ue(n,new ie("696457651848324352"))),(t&131072)!=0&&(n=Ue(n,new ie("26294789957507116"))),(t&262144)!=0&&(n=Ue(n,new ie("37481735321082"))),e>0&&(n=Wu.div(n)),n}static getTickFromPrice(e,t,n){return te.getTickFromSqrtPriceX64(te.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(Vt)||e.lt(_t))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ie(t-64),r=Op(n,32,128),i=new ie("8000000000000000","hex"),s=0,a=new ie(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;i.gt(new ie(0))&&s<qu;){c=c.mul(c);let y=c.shrn(127);c=c.shrn(63+y.toNumber()),a=a.add(i.mul(y)),i=i.shrn(1),s+=1}let u=a.shrn(32),m=r.add(u).mul(new ie(Uu)),d=Bs(m.sub(new ie(Gu)),64,128).toNumber(),p=Bs(m.add(new ie(Xu)),64,128).toNumber();return d==p?d:te.getSqrtPriceX64FromTick(p).lte(e)?p:d}},Bn=class{static getTickWithPriceAndTickspacing(e,t,n,r){let s=te.getTickFromSqrtPriceX64(te.priceToSqrtPriceX64(e,n,r))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,r){let i=Bn.getTickWithPriceAndTickspacing(e,t,n,r),s=te.getSqrtPriceX64FromTick(i);return te.sqrtPriceX64ToPrice(s,n,r)}},le=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(pe))throw new Error("sqrtPriceX64A must greater than 0");let i=n.ushln(Co),s=t.sub(e);return r?ne.mulDivRoundingUp(ne.mulDivCeil(i,s,t),ft,e):ne.mulDivFloor(i,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,r){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(pe))throw new Error("sqrtPriceX64A must greater than 0");return r?ne.mulDivCeil(n,t.sub(e),yt):ne.mulDivFloor(n,t.sub(e),yt)}static getLiquidityFromTokenAmountA(e,t,n,r){e.gt(t)&&([e,t]=[t,e]);let i=n.mul(e).mul(t),s=t.sub(e),a=i.div(s);return r?ne.mulDivRoundingUp(a,ft,ks):a.shrn(Co)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),ne.mulDivFloor(n,ks,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,r,i){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return le.getLiquidityFromTokenAmountA(t,n,r,!1);if(e.lt(n)){let s=le.getLiquidityFromTokenAmountA(e,n,r,!1),a=le.getLiquidityFromTokenAmountB(t,e,i);return s.lt(a)?s:a}else return le.getLiquidityFromTokenAmountB(t,n,i)}static getAmountsFromLiquidity(e,t,n,r,i){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:le.getTokenAmountAFromLiquidity(t,n,r,i),amountB:new ie(0)};if(e.lt(n)){let s=le.getTokenAmountAFromLiquidity(e,n,r,i),a=le.getTokenAmountBFromLiquidity(t,e,r,i);return{amountA:s,amountB:a}}else return{amountA:new ie(0),amountB:le.getTokenAmountBFromLiquidity(t,n,r,i)}}static getAmountsFromLiquidityWithSlippage(e,t,n,r,i,s,a){let{amountA:c,amountB:u}=le.getAmountsFromLiquidity(e,t,n,r,s),l=i?1+a:1-a,m=new ie(new V(c.toString()).mul(l).toFixed(0)),d=new ie(new V(u.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:r,slippage:i,add:s,epochInfo:a,amountAddFee:c}){var h,P,k,B;let u=te.priceToSqrtPriceX64(new V(e.price),e.mintA.decimals,e.mintB.decimals),l=te.getSqrtPriceX64FromTick(t),m=te.getSqrtPriceX64FromTick(n),d=s?1+i:1-i,p=le.getAmountsFromLiquidity(u,l,m,r,s),[y,f]=[he(p.amountA,(h=e.mintA.extensions)==null?void 0:h.feeConfig,a,c),he(p.amountB,(P=e.mintB.extensions)==null?void 0:P.feeConfig,a,c)],[b,g]=[he(new ie(new V(p.amountA.toString()).mul(d).toFixed(0)),(k=e.mintA.extensions)==null?void 0:k.feeConfig,a,c),he(new ie(new V(p.amountB.toString()).mul(d).toFixed(0)),(B=e.mintB.extensions)==null?void 0:B.feeConfig,a,c)];return{liquidity:r,amountA:y,amountB:f,amountSlippageA:b,amountSlippageB:g,expirationTime:Ot(y.expirationTime,f.expirationTime)}}},Tn=class{static swapCompute(e,t,n,r,i,s,a,c,u,l,m,d,p,y,f=!1){if(d.eq(pe))throw new Error("amountSpecified must not be 0");if(y||(y=s?_t.add(ft):Vt.sub(ft)),s){if(y.lt(_t))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(Vt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(y.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let b=d.gt(pe),g={amountSpecifiedRemaining:d,amountCalculated:pe,sqrtPriceX64:m,tick:u>p?Math.min(p+me.tickCount(l)-1,u):p,accounts:[],liquidity:c,feeAmount:new ie(0)},h=p,P=n[p],k=0,B=!s&&P.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(pe)&&!g.sqrtPriceX64.eq(y);){k>10;let T={};T.sqrtPriceStartX64=g.sqrtPriceX64;let S=H.nextInitTick(P,g.tick,l,s,B),x=S||null,R=null;if(!(x!=null&&x.liquidityGross.gtn(0))){let N=Le.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:r,exBitmapInfo:i},h,s);if(!N.isExist){if(f)return{allTrade:!1,amountSpecifiedRemaining:g.amountSpecifiedRemaining,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts};throw Error("swapCompute LiquidityInsufficient")}h=N.nextStartIndex;let{publicKey:q}=we(e,t,h);R=q,P=n[h];try{x=H.firstInitializedTick(P,s)}catch{throw Error("not found next tick info")}}T.tickNext=x.tick,T.initialized=x.liquidityGross.gtn(0),p!==h&&R&&(g.accounts.push(R),p=h),T.tickNext<et?T.tickNext=et:T.tickNext>st&&(T.tickNext=st),T.sqrtPriceNextX64=te.getSqrtPriceX64FromTick(T.tickNext);let I;if(s&&T.sqrtPriceNextX64.lt(y)||!s&&T.sqrtPriceNextX64.gt(y)?I=y:I=T.sqrtPriceNextX64,[g.sqrtPriceX64,T.amountIn,T.amountOut,T.feeAmount]=Tn.swapStepCompute(g.sqrtPriceX64,I,g.liquidity,g.amountSpecifiedRemaining,a),g.feeAmount=g.feeAmount.add(T.feeAmount),b?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(T.amountIn.add(T.feeAmount)),g.amountCalculated=g.amountCalculated.sub(T.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(T.amountOut),g.amountCalculated=g.amountCalculated.add(T.amountIn.add(T.feeAmount))),g.sqrtPriceX64.eq(T.sqrtPriceNextX64)){if(T.initialized){let N=x.liquidityNet;s&&(N=N.mul(Xt)),g.liquidity=le.addDelta(g.liquidity,N)}B=T.tickNext!=g.tick&&!s&&P.startTickIndex===T.tickNext,g.tick=s?T.tickNext-1:T.tickNext}else if(g.sqrtPriceX64!=T.sqrtPriceStartX64){let N=te.getTickFromSqrtPriceX64(g.sqrtPriceX64);B=N!=g.tick&&!s&&P.startTickIndex===N,g.tick=N}++k}try{let{nextStartIndex:T,isExist:S}=me.nextInitializedTickArray(g.tick,l,s,r,i);S&&p!==T&&(g.accounts.push(we(e,t,T).publicKey),p=T)}catch{}return{allTrade:!0,amountSpecifiedRemaining:pe,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,r,i){let s={sqrtPriceX64Next:new ie(0),amountIn:new ie(0),amountOut:new ie(0),feeAmount:new ie(0)},a=e.gte(t),c=r.gte(pe);if(c){let l=ne.mulDivFloor(r,vr.sub(new ie(i.toString())),vr);s.amountIn=a?le.getTokenAmountAFromLiquidity(t,e,n,!0):le.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(s.amountIn)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=te.getNextSqrtPriceX64FromInput(e,n,l,a)}else s.amountOut=a?le.getTokenAmountBFromLiquidity(t,e,n,!1):le.getTokenAmountAFromLiquidity(e,t,n,!1),r.mul(Xt).gte(s.amountOut)?s.sqrtPriceX64Next=t:s.sqrtPriceX64Next=te.getNextSqrtPriceX64FromOutput(e,n,r.mul(Xt),a);let u=t.eq(s.sqrtPriceX64Next);return a?(u&&c||(s.amountIn=le.getTokenAmountAFromLiquidity(s.sqrtPriceX64Next,e,n,!0)),u&&!c||(s.amountOut=le.getTokenAmountBFromLiquidity(s.sqrtPriceX64Next,e,n,!1))):(s.amountIn=u&&c?s.amountIn:le.getTokenAmountBFromLiquidity(e,s.sqrtPriceX64Next,n,!0),s.amountOut=u&&!c?s.amountOut:le.getTokenAmountAFromLiquidity(e,s.sqrtPriceX64Next,n,!1)),!c&&s.amountOut.gt(r.mul(Xt))&&(s.amountOut=r.mul(Xt)),c&&!s.sqrtPriceX64Next.eq(t)?s.feeAmount=r.sub(s.amountIn):s.feeAmount=ne.mulDivCeil(s.amountIn,new ie(i),vr.sub(new ie(i))),[s.sqrtPriceX64Next,s.amountIn,s.amountOut,s.feeAmount]}};var De=60,kn=512,H=class{static getTickArrayAddressByTick(e,t,n,r){let i=H.getTickArrayStartIndexByTick(n,r),{publicKey:s}=we(e,t,i);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=H.getTickArrayStartIndexByTick(e,t),r=Math.floor((e-n)/t);if(r<0||r>=De)throw new Error("tick offset in array overflow");return r}static getTickArrayBitIndex(e,t){let n=me.tickCount(t),r=e/n;return e<0&&e%n!=0?r=Math.ceil(r)-1:r=Math.floor(r),r}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*me.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*De,r=Math.floor(e/n)+512;return Math.abs(r)}static checkTickArrayIsInitialized(e,t,n){let r=n*De,i=Math.floor(t/r)+512,s=Math.abs(i);return{isInitialized:e.testn(s),startIndex:(s-512)*r}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*De:e+t*De}static mergeTickArrayBitmap(e){let t=new Np(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,r,i){let s=Math.floor(r/(n*De));return[...H.searchLowBitFromStart(e,t,s-1,i,n),...H.searchHightBitFromStart(e,t,s,i,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return H.searchHightBitFromStart(e,t,0,kn,n)}static getAllInitializedTickArrayInfo(e,t,n,r,i){let s=[],a=H.getAllInitializedTickArrayStartIndex(n,r,i);for(let c of a){let{publicKey:u}=we(e,t,c);s.push({tickArrayStartIndex:c,tickArrayAddress:u})}return s}static getAllInitializedTickInTickArray(e){return e.ticks.filter(t=>t.liquidityGross.gtn(0))}static searchLowBitFromStart(e,t,n,r,i){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>H.mergeTickArrayBitmap(u)),a=[];for(;n>=-7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n--,a.length===r)break}let c=me.tickCount(i);return a.map(u=>u*c)}static searchHightBitFromStart(e,t,n,r,i){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>H.mergeTickArrayBitmap(u)),a=[];for(;n<7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n++,a.length===r)break}let c=me.tickCount(i);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<et||e>st}static nextInitTick(e,t,n,r,i){if(me.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(r)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(i||(a=a+1);a<De;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=De-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<De;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let r=te.getSqrtPriceX64FromTick(t),i=te.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:i,tickSqrtPriceX64:r}:{tick:t,price:new V(1).div(i),tickSqrtPriceX64:r}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let r=n?t:new V(1).div(t),i=Bn.getTickWithPriceAndTickspacing(r,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=te.getSqrtPriceX64FromTick(i),a=te.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:i,price:a}:{tick:i,price:new V(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let r=te.getSqrtPriceX64FromTick(t),i=te.sqrtPriceX64ToPrice(r,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:i,tickSqrtPriceX64:r}:{tick:t,price:new V(1).div(i),tickSqrtPriceX64:r}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let r=n?t:new V(1).div(t),i=Bn.getTickWithPriceAndTickspacing(r,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=te.getSqrtPriceX64FromTick(i),a=te.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:i,price:a}:{tick:i,price:new V(1).div(a)}}};var Hu=M([be(8),E("bump"),Nt("index"),K(""),Ze("protocolFeeRate"),Ze("tradeFeeRate"),Nt("tickSpacing"),X(w(),8,"")]),Mp=M([Ze("blockTimestamp"),j("sqrtPriceX64"),j("cumulativeTimePriceX64"),X(j(),1,"")]),xs=M([be(8),Qe("initialized"),K("poolId"),X(Mp,1e3,"observations"),X(j(),5,"")]),_p=M([E("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),j("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),K("tokenMint"),K("tokenVault"),K("creator"),j("rewardGrowthGlobalX64")]),In=M([be(8),E("bump"),K("ammConfig"),K("creator"),K("mintA"),K("mintB"),K("vaultA"),K("vaultB"),K("observationId"),E("mintDecimalsA"),E("mintDecimalsB"),Nt("tickSpacing"),j("liquidity"),j("sqrtPriceX64"),Ye("tickCurrent"),Nt("observationIndex"),Nt("observationUpdateDuration"),j("feeGrowthGlobalX64A"),j("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),j("swapInAmountTokenA"),j("swapOutAmountTokenB"),j("swapInAmountTokenB"),j("swapOutAmountTokenA"),E("status"),X(E(),7,""),X(_p,3,"rewardInfos"),X(w(),16,"tickArrayBitmap"),w("totalFeesTokenA"),w("totalFeesClaimedTokenA"),w("totalFeesTokenB"),w("totalFeesClaimedTokenB"),w("fundFeesTokenA"),w("fundFeesTokenB"),w("startTime"),X(w(),15*4-3,"padding")]),Vp=M([j("growthInsideLastX64"),w("rewardAmountOwed")]),Fr=M([be(8),E("bump"),K("nftMint"),K("poolId"),Ye("tickLower"),Ye("tickUpper"),j("liquidity"),j("feeGrowthInsideLastX64A"),j("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),X(Vp,3,"rewardInfos"),X(w(),8,"")]),DT=M([be(8),E("bump"),K("poolId"),Ye("tickLowerIndex"),Ye("tickUpperIndex"),j("liquidity"),j("feeGrowthInsideLastX64A"),j("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),X(j(),3,"rewardGrowthInside"),X(w(),8,"")]),vp=M([Ye("tick"),Za("liquidityNet"),j("liquidityGross"),j("feeGrowthOutsideX64A"),j("feeGrowthOutsideX64B"),X(j(),3,"rewardGrowthsOutsideX64"),X(Ze(),13,"")]),Ro=M([be(8),K("poolId"),Ye("startTickIndex"),X(vp,De,"ticks"),E("initializedTickCount"),X(E(),115,"")]),Zu=M([be(329),X(K(),100,"whitelistMints")]),ju=M([be(8),K("poolId"),X(X(w(),8),Ts,"positiveTickArrayBitmap"),X(X(w(),8),Ts,"negativeTickArrayBitmap")]);var ec=ce("Raydium_Clmm"),Kt={createPool:[233,146,209,142,207,104,64,188],initReward:[95,135,192,196,242,129,230,68],setRewardEmissions:[112,52,167,75,32,201,211,137],openPosition:[77,184,74,214,112,86,241,199],closePosition:[123,134,81,0,49,68,98,98],increaseLiquidity:[133,29,89,223,69,238,176,10],decreaseLiquidity:[58,127,188,62,79,82,196,96],swap:[43,4,237,11,26,201,30,98],collectReward:[18,237,166,197,34,16,213,144]},Se=class{static createPoolInstruction(e,t,n,r,i,s,a,c,u,l,m,d,p,y){let f=M([j("sqrtPriceX64"),w("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:zn.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);f.encode({sqrtPriceX64:p,startTime:y},g);let h=Buffer.from([...Kt.createPool,...g]);return new St({keys:b,programId:e,data:h})}static async createPoolInstructions(e){let{connection:t,programId:n,owner:r,mintA:i,mintB:s,ammConfigId:a,initialPriceX64:c,startTime:u,forerunCreate:l}=e,m=$e({fromPublicKey:r,programId:n}),[d,p]=[new U(i.address),new U(s.address)],y=[zn.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l?0:await t.getMinimumBalanceForRentExemption(xs.span),space:xs.span,programId:n})],{publicKey:f}=Eu(n,a,d,p),{publicKey:b}=hs(n,f,d),{publicKey:g}=hs(n,f,p);return y.push(this.createPoolInstruction(n,f,r,a,m.publicKey,d,b,new U(i.programId||je),p,g,new U(s.programId||je),pt(n,f).publicKey,c,u)),{signers:[],instructions:y,instructionTypes:[v.CreateAccount,v.ClmmCreatePool],address:{poolId:f,observationId:m.publicKey,mintAVault:b,mintBVault:g},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,r,i,s,a,c,u,l,m,d,p,y,f,b,g,h,P,k,B,T,S,x,R,I){let N=M([Ye("tickLowerIndex"),Ye("tickUpperIndex"),Ye("tickArrayLowerStartIndex"),Ye("tickArrayUpperStartIndex"),j("liquidity"),w("amountMaxA"),w("amountMaxB"),Qe("withMetadata"),E("optionBaseFlag"),Qe("baseFlag")]),q=[...I?[{pubkey:I,isSigner:!1,isWritable:!0}]:[]],D=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:zn.programId,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:$u,isSigner:!1,isWritable:!1},{pubkey:_n,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...q],J=Buffer.alloc(N.span);N.encode({tickLowerIndex:h,tickUpperIndex:P,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:B,liquidity:T,amountMaxA:S,amountMaxB:x,withMetadata:R==="create",baseFlag:!1,optionBaseFlag:0},J);let G=Buffer.from([...Kt.openPosition,...J]);return new St({keys:D,programId:e,data:G})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:i,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let m=[],[d,p]=[new U(e.programId),new U(e.id)],y;if(l)y=new U((await l(1))[0]);else{let x=Ss.generate();m.push(x),y=x.publicKey}let f=H.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=H.getTickArrayStartIndexByTick(i,e.config.tickSpacing),{publicKey:g}=we(d,p,f),{publicKey:h}=we(d,p,b),{publicKey:P}=ge(n.wallet,y,je),{publicKey:k}=Nr(y),{publicKey:B}=gt(d,y),{publicKey:T}=hn(d,p,r,i),S=this.openPositionFromLiquidityInstruction(d,n.feePayer,p,n.wallet,y,P,k,T,g,h,B,n.tokenAccountA,n.tokenAccountB,new U(t.vault.A),new U(t.vault.B),new U(e.mintA.address),new U(e.mintB.address),r,i,f,b,s,a,c,u);return{signers:m,instructions:[S],instructionTypes:[v.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:P,metadataAccount:k,personalPosition:B,protocolPosition:T}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:i,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:l}){let m=[],[d,p]=[new U(e.programId),new U(e.id)],y;if(l)y=new U((await l(1))[0]);else{let x=Ss.generate();m.push(x),y=x.publicKey}let f=H.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=H.getTickArrayStartIndexByTick(i,e.config.tickSpacing),{publicKey:g}=we(d,p,f),{publicKey:h}=we(d,p,b),{publicKey:P}=ge(n.wallet,y,je),{publicKey:k}=Nr(y),{publicKey:B}=gt(d,y),{publicKey:T}=hn(d,p,r,i),S=this.openPositionFromBaseInstruction(d,n.feePayer,p,n.wallet,y,P,k,T,g,h,B,n.tokenAccountA,n.tokenAccountB,new U(t.vault.A),new U(t.vault.B),new U(e.mintA.address),new U(e.mintB.address),r,i,f,b,u,s,a,c,Le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?pt(d,p).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:P,metadataAccount:k,personalPosition:B,protocolPosition:T},instructions:[S],signers:m,instructionTypes:[v.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,r,i,s,a,c,u,l,m,d,p,y,f,b,g,h,P,k,B,T,S,x,R,I){let N=M([Ye("tickLowerIndex"),Ye("tickUpperIndex"),Ye("tickArrayLowerStartIndex"),Ye("tickArrayUpperStartIndex"),j("liquidity"),w("amountMaxA"),w("amountMaxB"),Qe("withMetadata"),E("optionBaseFlag"),Qe("baseFlag")]),q=[...I?[{pubkey:I,isSigner:!1,isWritable:!0}]:[]],D=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:zn.programId,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:$u,isSigner:!1,isWritable:!1},{pubkey:_n,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...q],J=Buffer.alloc(N.span);N.encode({tickLowerIndex:h,tickUpperIndex:P,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:B,liquidity:new Ju(0),amountMaxA:S==="MintA"?x:R,amountMaxB:S==="MintA"?R:x,withMetadata:T==="create",baseFlag:S==="MintA",optionBaseFlag:1},J);let G=Buffer.from([...Kt.openPosition,...J]);return new St({keys:D,programId:e,data:G})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:i,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l}){let m,d=[];if(l)m=new U((await l(1))[0]);else{let x=Ss.generate();d.push(x),m=x.publicKey}let[p,y]=[new U(e.programId),new U(e.id)],f=H.getTickArrayStartIndexByTick(r,e.config.tickSpacing),b=H.getTickArrayStartIndexByTick(i,e.config.tickSpacing),{publicKey:g}=we(p,y,f),{publicKey:h}=we(p,y,b),{publicKey:P}=ge(n.wallet,m,je),{publicKey:k}=Nr(m),{publicKey:B}=gt(p,m),{publicKey:T}=hn(p,y,r,i),S=this.openPositionFromLiquidityInstruction(p,n.wallet,y,n.wallet,m,P,k,T,g,h,B,n.tokenAccountA,n.tokenAccountB,new U(t.vault.A),new U(t.vault.B),new U(t.mintA.address),new U(t.mintB.address),r,i,f,b,s,a,c,u,Le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[f,b])?pt(p,y).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:g,tickArrayUpper:h,positionNftAccount:P,metadataAccount:k,personalPosition:B,protocolPosition:T},instructions:[S],signers:d,instructionTypes:[v.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,r,i){let s=M([]),a=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:zn.programId,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);s.encode({},c);let u=Buffer.from([...Kt.closePosition,...c]);return new St({keys:a,programId:e,data:u})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:r}){let i=new U(e.programId),{publicKey:s}=ge(n.wallet,r.nftMint,je),{publicKey:a}=gt(i,r.nftMint),c=[];return c.push(this.closePositionInstruction(i,n.wallet,r.nftMint,s,a)),{address:{positionNftAccount:s,personalPosition:a},signers:[],instructions:c,instructionTypes:[v.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,r,i,s,a,c,u,l,m,d,p,y,f,b,g,h){let P=M([j("liquidity"),w("amountMaxA"),w("amountMaxB"),E("optionBaseFlag"),Qe("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],B=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],T=Buffer.alloc(P.span);P.encode({liquidity:f,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},T);let S=Buffer.from([...Kt.increaseLiquidity,...T]);return new St({keys:B,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:i,amountMaxA:s,amountMaxB:a}){let[c,u]=[new U(e.programId),new U(e.id)],l=H.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=H.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=we(c,u,l),{publicKey:p}=we(c,u,m),{publicKey:y}=ge(r.wallet,n.nftMint,je),{publicKey:f}=gt(c,n.nftMint),{publicKey:b}=hn(c,u,n.tickLower,n.tickUpper),g=this.increasePositionFromLiquidityInstruction(c,r.wallet,y,f,u,b,d,p,r.tokenAccountA,r.tokenAccountB,new U(t.vault.A),new U(t.vault.B),new U(e.mintA.address),new U(e.mintB.address),i,s,a,Le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?pt(c,u).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},signers:[],instructions:[g],instructionTypes:[v.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,base:i,baseAmount:s,otherAmountMax:a}){let[c,u]=[new U(e.programId),new U(e.id)],l=H.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),m=H.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:d}=we(c,u,l),{publicKey:p}=we(c,u,m),{publicKey:y}=ge(r.wallet,n.nftMint,je),{publicKey:f}=gt(c,n.nftMint),{publicKey:b}=hn(c,u,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:p,positionNftAccount:y,personalPosition:f,protocolPosition:b},instructions:[this.increasePositionFromBaseInstruction(c,r.wallet,y,f,u,b,d,p,r.tokenAccountA,r.tokenAccountB,new U(t.vault.A),new U(t.vault.B),new U(e.mintA.address),new U(e.mintB.address),i,s,a,Le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[l,m])?pt(c,u).publicKey:void 0)],signers:[],instructionTypes:[v.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,r,i,s,a,c,u,l,m,d,p,y,f,b,g,h){let P=M([j("liquidity"),w("amountMaxA"),w("amountMaxB"),E("optionBaseFlag"),Qe("baseFlag")]),k=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],B=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...k],T=Buffer.alloc(P.span);P.encode({liquidity:new Ju(0),amountMaxA:f==="MintA"?b:g,amountMaxB:f==="MintA"?g:b,baseFlag:f==="MintA",optionBaseFlag:1},T);let S=Buffer.from([...Kt.increaseLiquidity,...T]);return new St({keys:B,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,r,i,s,a,c,u,l,m,d,p,y,f,b,g,h,P){let k=M([j("liquidity"),w("amountMinA"),w("amountMinB")]),B=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[],...f.map(R=>[{pubkey:R.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:R.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:R.rewardMint,isSigner:!1,isWritable:!1}]).flat()],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:tr,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...B],S=Buffer.alloc(k.span);k.encode({liquidity:b,amountMinA:g,amountMinB:h},S);let x=Buffer.from([...Kt.decreaseLiquidity,...S]);return new St({keys:T,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:r,liquidity:i,amountMinA:s,amountMinB:a,programId:c}){let[u,l]=[new U(e.programId),new U(e.id)],m=H.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=H.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=we(u,l,m),{publicKey:y}=we(u,l,d),{publicKey:f}=ge(r.wallet,n.nftMint,c),{publicKey:b}=gt(u,n.nftMint),{publicKey:g}=hn(u,l,n.tickLower,n.tickUpper),h=[];for(let k=0;k<e.rewardDefaultInfos.length;k++)h.push({poolRewardVault:new U(t.rewardInfos[k].vault),ownerRewardVault:r.rewardAccounts[k],rewardMint:new U(e.rewardDefaultInfos[k].mint.address)});let P=[];return P.push(this.decreaseLiquidityInstruction(u,r.wallet,f,b,l,g,p,y,r.tokenAccountA,r.tokenAccountB,new U(t.vault.A),new U(t.vault.B),new U(e.mintA.address),new U(e.mintB.address),h,i,s,a,Le.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?pt(u,l).publicKey:void 0)),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:f,personalPosition:b,protocolPosition:g},signers:[],instructions:P,instructionTypes:[v.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,r,i,s,a,c,u,l,m,d,p,y,f,b,g){let h=M([w("amount"),w("otherAmountThreshold"),j("sqrtPriceLimitX64"),Qe("isBaseInput")]),P=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:tr,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...P],B=Buffer.alloc(h.span);h.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:f,isBaseInput:b},B);let T=Buffer.from([...Kt.swap,...B]);return new St({keys:k,programId:e,data:T})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:r,inputMint:i,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,m]=[new U(e.programId),new U(e.id)],[d,p]=[new U(t.vault.A),new U(t.vault.B)],[y,f]=[new U(e.mintA.address),new U(e.mintB.address)],b=e.mintA.address===i.toString(),g=[this.swapInstruction(l,r.wallet,m,new U(e.config.id),b?r.tokenAccountA:r.tokenAccountB,b?r.tokenAccountB:r.tokenAccountA,b?d:p,b?p:d,b?y:f,b?f:y,u,n,s,a,c,!0,pt(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[v.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,r,i,s,a,c,u,l,m,d){let p=M([w("openTime"),w("endTime"),j("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:zn.programId,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1}],f=Buffer.alloc(p.span);p.encode({openTime:Y(l),endTime:Y(m),emissionsPerSecondX64:d},f);let b=Buffer.from([...Kt.initReward,...f]);return new St({keys:y,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[i,s]=[new U(e.programId),new U(e.id)],a=Du(i,s,r.mint).publicKey,c=Ko(i).publicKey,u=[this.initRewardInstruction(i,n.wallet,s,c,new U(e.config.id),n.tokenAccount,r.programId,r.mint,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:u,instructionTypes:[v.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,r,i,s,a,c,u,l,m,d){let p=M([E("rewardIndex"),j("emissionsPerSecondX64"),w("openTime"),w("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],f=Buffer.alloc(p.span);p.encode({rewardIndex:u,emissionsPerSecondX64:d,openTime:Y(l),endTime:Y(m)},f);let b=Buffer.from([...Kt.setRewardEmissions,...f]);return new St({keys:y,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:r}){let[i,s]=[new U(e.programId),new U(e.id)],a,c,u;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===r.mint.toString()&&(a=d,c=new U(t.rewardInfos[d].vault),u=new U(t.rewardInfos[d].mint.address));(a===void 0||c===void 0)&&ec.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Ko(i).publicKey,m=[this.setRewardInstruction(i,n.wallet,s,l,new U(e.config.id),n.tokenAccount,c,u,a,r.openTime,r.endTime,r.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:m,instructionTypes:[v.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,r,i,s,a){let c=M([E("rewardIndex")]),u=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:ln,isSigner:!1,isWritable:!1},{pubkey:tr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let m=Buffer.from([...Kt.collectReward,...l]);return new St({keys:u,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:r}){let[i,s]=[new U(e.programId),new U(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===r.toString()&&(a=l,c=new U(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&ec.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=[this.collectRewardInstruction(i,n.wallet,s,n.tokenAccount,c,r,a)];return{address:{rewardVault:c},signers:[],instructions:u,instructionTypes:[v.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapBaseOutInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,outputMint:r,amountOut:i,amountInMax:s,sqrtPriceLimitX64:a,remainingAccounts:c}){let[u,l]=[new U(e.programId),new U(e.id)],[m,d]=[new U(t.vault.A),new U(t.vault.B)],[p,y]=[new U(e.mintA.address),new U(e.mintB.address)],f=e.mintA.address===r.toString(),b=[this.swapInstruction(u,n.wallet,l,new U(e.config.id),f?n.tokenAccountB:n.tokenAccountA,f?n.tokenAccountA:n.tokenAccountB,f?d:m,f?m:d,f?p:y,f?y:p,c,m,i,s,a,!1)];return{signers:[],instructions:b,instructionTypes:[v.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}};import{PublicKey as Wp}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as qp}from"@solana/spl-token";import{PublicKey as Ep}from"@solana/web3.js";import tc from"bn.js";var nc=new tc(25),oc=new tc(1e4),Fp={4:3,5:3};var Dp=ce("Raydium_liquidity_serum");function rc({programId:o,marketId:e}){let t=[e.toBuffer()],n=0,r;for(;n<100;){try{let i=t.concat(Buffer.from([n]),Buffer.alloc(7));r=Ep.createProgramAddressSync(i,o)}catch(i){if(i instanceof TypeError)throw i;n++;continue}return{publicKey:r,nonce:n}}throw Dp.logWithError("unable to find a viable program address nonce","params",{programId:o,marketId:e}),new Error("unable to find a viable program address nonce")}import No from"bn.js";function Er({programId:o}){let{publicKey:e}=ue([Buffer.from("amm_config_account_seed","utf-8")],o);return e}function xn({name:o,programId:e,marketId:t}){let{publicKey:n}=ue([e.toBuffer(),t.toBuffer(),Buffer.from(o,"utf-8")],e);return n}function Up({programId:o,marketId:e}){let{publicKey:t}=ue([o.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],o);return t}function Rs({programId:o}){return ue([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],o)}function ic({version:o,marketVersion:e,marketId:t,baseMint:n,quoteMint:r,baseDecimals:i,quoteDecimals:s,programId:a,marketProgramId:c}){let u=xn({name:"amm_associated_seed",programId:a,marketId:t}),l=xn({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=Rs({programId:a}),p=xn({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=xn({name:"pc_vault_associated_seed",programId:a,marketId:t}),f=xn({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=Up({programId:a,marketId:t}),g=xn({name:"target_associated_seed",programId:a,marketId:t}),h=xn({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:P}=rc({programId:c,marketId:t});return{id:u,baseMint:n,quoteMint:r,lpMint:l,baseDecimals:i,quoteDecimals:s,lpDecimals:i,version:o,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:y,lpVault:f,openOrders:b,targetOrders:g,withdrawQueue:h,marketVersion:e,marketProgramId:c,marketId:t,marketAuthority:P,lookupTableAccount:Wp.default,configId:Er({programId:a})}}var Ks;async function AI({connection:o,poolKeysList:e,config:t}){Ks||(Ks=new Un({connection:o}),await Ks.initStableModelLayout());let n=e.map(s=>Mu({poolKeys:s}));return(await Ca(o,n.map(s=>s.instruction),"GetPoolData")).map(s=>{let a=Ra(s,"GetPoolData"),c=new No(Wt(a,"status")),u=Number(Wt(a,"coin_decimals")),l=Number(Wt(a,"pc_decimals")),m=Number(Wt(a,"lp_decimals")),d=new No(Wt(a,"pool_coin_amount")),p=new No(Wt(a,"pool_pc_amount")),y=new No(Wt(a,"pool_lp_supply")),f="0";try{f=Wt(a,"pool_open_time")}catch{}return{status:c,baseDecimals:u,quoteDecimals:l,lpDecimals:m,baseReserve:d,quoteReserve:p,lpSupply:y,startTime:new No(f)}})}var Cs={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},Dr=o=>{let e={},t=qp.toBase58();return Object.keys(o).map(n=>{let r=o[n],[i,s]=[r.baseMint.toBase58(),r.quoteMint.toBase58()];e[n]={id:n,version:4,status:r.status.toNumber(),programId:r.programId.toBase58(),mintA:it({address:i,programId:t,decimals:r.baseDecimal.toNumber()}),mintB:it({address:s,programId:t,decimals:r.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:r.poolPrice.toNumber(),mintAmountA:new V(r.mintAAmount.toString()).div(10**r.baseDecimal.toNumber()).toNumber(),mintAmountB:new V(r.mintBAmount.toString()).div(10**r.quoteDecimal.toNumber()).toNumber(),baseReserve:r.baseReserve,quoteReserve:r.quoteReserve,feeRate:new V(r.tradeFeeNumerator.toString()).div(r.tradeFeeDenominator.toString()).toNumber(),openTime:r.poolOpenTime.toString(),tvl:0,day:Cs,week:Cs,month:Cs,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:r.marketId.toBase58(),configId:Er({programId:r.programId}).toBase58(),lpPrice:0,lpAmount:0,lpMint:it({address:r.lpMint.toBase58(),programId:t,decimals:Math.min(r.baseDecimal.toNumber(),r.quoteDecimal.toNumber())})}}),e};import lt from"bn.js";var Mo=class extends xe{constructor(t){super(t);this.stableLayout=new Un({connection:this.scope.connection})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:r,baseIn:i}){let s=new lt(new V(n).mul(10**t[i?"mintA":"mintB"].decimals).toFixed(0)),a=Rr(t[i?"mintB":"mintA"]),[c,u]=[new lt(new V(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new lt(new V(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new lt(new V(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,V.ROUND_DOWN));this.logDebug("baseReserve:",c.toString(),"quoteReserve:",u.toString()),this.logDebug("tokenIn:",i?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",i?t.mintB.symbol:t.mintA.symbol,"slippage:",`${r.toSignificant()}%`,"baseReserve",c.toString(),"quoteReserve",u.toString());let m=i?"base":"quote";this.logDebug("input side:",m);let d=Fe;s.isZero()||(d=m==="base"?ar(s.mul(u),c):ar(s.mul(c),u)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=ar(s.mul(l),m==="base"?c:u);this.logDebug("liquidity:",p.toString());let f=new ve(new lt(1)).add(r).mul(d).quotient,b=new fe(a,d),g=new fe(a,f);return this.logDebug("anotherAmount:",b.toFixed(),"maxAnotherAmount:",g.toFixed()),{anotherAmount:b,maxAnotherAmount:g,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,poolKeys:r,amountInA:i,amountInB:s,fixedSide:a,config:c,txVersion:u,computeBudgetConfig:l}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",i,"amountInB:",s),(i.isZero()||s.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:i.toFixed(),amountInB:s.toFixed()});let{account:m}=this.scope,{bypassAssociatedCheck:d,checkCreateATAOwner:p}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},c),[y,f]=[i.token,s.token],b=await m.getCreatedTokenAccount({mint:y.mint,associatedOnly:!1}),g=await m.getCreatedTokenAccount({mint:f.mint,associatedOnly:!1});!b&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",m.tokenAccounts);let h=await m.getCreatedTokenAccount({mint:new tt(n.lpMint.address)}),P=[y,f],k=[b,g],B=[i.raw,s.raw],T=i.token.mint.toBase58()===n.mintA.address?"base":"quote",S="base";["quote","base"].includes(T)||this.logAndCreateError("invalid fixedSide","fixedSide",a),T==="quote"?(P.reverse(),k.reverse(),B.reverse(),S=a==="a"?"quote":"base"):T==="base"&&(S=a==="a"?"base":"quote");let[x,R]=P,[I,N]=k,[q,D]=B,J=r!=null?r:await this.getAmmPoolKeys(n.id),G=this.createTxBuilder(),Ft=await m.handleTokenAccount({side:"in",amount:q,mint:x.mint,tokenAccount:I,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:W}=Ft,ot=Ke(Ft,["tokenAccount"]);G.addInstruction(ot);let On=await m.handleTokenAccount({side:"in",amount:D,mint:R.mint,tokenAccount:N,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:Rn}=On,mn=Ke(On,["tokenAccount"]);G.addInstruction(mn);let zo=await m.handleTokenAccount({side:"out",amount:0,mint:new tt(n.lpMint.address),tokenAccount:h,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:jt}=zo,Ln=Ke(zo,["tokenAccount"]);return G.addInstruction(Ln),G.addInstruction({instructions:[Ou({poolInfo:n,poolKeys:J,userKeys:{baseTokenAccount:W,quoteTokenAccount:Rn,lpTokenAccount:jt,owner:this.scope.ownerPubKey},baseAmountIn:q,quoteAmountIn:D,fixedSide:S})],instructionTypes:[n.pooltype.includes("StablePool")?v.AmmV5AddLiquidity:v.AmmV4AddLiquidity],lookupTableAddress:J.lookupTableAccount?[J.lookupTableAccount]:[]}),G.addCustomComputeBudget(l),u===0&&await G.buildV0(),G.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,poolKeys:r,amountIn:i,config:s,txVersion:a,computeBudgetConfig:c}=t,u=r!=null?r:await this.getAmmPoolKeys(n.id),[l,m,d]=[new tt(n.mintA.address),new tt(n.mintB.address),new tt(n.lpMint.address)];this.logDebug("amountIn:",i),i.isZero()&&this.logAndCreateError("amount must greater than zero","amountIn",i.toString());let{account:p}=this.scope,y=await p.getCreatedTokenAccount({mint:d,associatedOnly:!1});y||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",p.tokenAccounts);let f=await p.getCreatedTokenAccount({mint:l}),b=await p.getCreatedTokenAccount({mint:m}),g=this.createTxBuilder(),{bypassAssociatedCheck:h,checkCreateATAOwner:P}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},s),x=await p.handleTokenAccount({side:"out",amount:0,mint:l,tokenAccount:f,bypassAssociatedCheck:h,checkCreateATAOwner:P}),{tokenAccount:k}=x,B=Ke(x,["tokenAccount"]);g.addInstruction(B);let R=await p.handleTokenAccount({side:"out",amount:0,mint:m,tokenAccount:b,bypassAssociatedCheck:h,checkCreateATAOwner:P}),{tokenAccount:T}=R,S=Ke(R,["tokenAccount"]);return g.addInstruction(S),g.addInstruction({instructions:[As({poolInfo:n,poolKeys:u,userKeys:{lpTokenAccount:y,baseTokenAccount:k,quoteTokenAccount:T,owner:this.scope.ownerPubKey},amountIn:i})],lookupTableAddress:u.lookupTableAccount?[u.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?v.AmmV5RemoveLiquidity:v.AmmV4RemoveLiquidity]}),g.addCustomComputeBudget(c),a===0?await g.buildV0():g.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:r,createPositionInfo:i,farmInfo:s,userFarmLpAmount:a,base:c,computeBudgetConfig:u,payer:l,userAuxiliaryLedgers:m,tokenProgram:d=Yn,checkCreateATAOwner:p=!0,getEphemeralSigners:y,txVersion:f}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let b=this.createTxBuilder();b.addCustomComputeBudget(u);let g={};for(let W of this.scope.account.tokenAccountRawInfos)(g[W.accountInfo.mint.toString()]===void 0||ge(this.scope.ownerPubKey,W.accountInfo.mint,Yn).publicKey.equals(W.pubkey))&&(g[W.accountInfo.mint.toString()]=W.pubkey);let h=g[t.lpMint.address];if(h===void 0)throw Error("find lp account error in trade accounts");let P=r.add(a!=null?a:new lt(0)),k=t.mintA.address===ye.WSOL.mint.toString(),B=t.mintB.address===ye.WSOL.mint.toString(),{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Yn,mint:new tt(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!0,checkCreateATAOwner:p});if(b.addInstruction(S||{}),T===void 0)throw new Error("base token account not found");let{account:x,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Yn,mint:new tt(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:B?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!B,notUseTokenAccount:B,associatedOnly:!0,checkCreateATAOwner:p});if(b.addInstruction(R||{}),x===void 0)throw new Error("quote token account not found");if(g[t.mintA.address]=T,g[t.mintB.address]=x,s!==void 0&&!(a!=null&&a.isZero())){let W=bt[s.programId],ot=Je({programId:new tt(s.programId),poolId:new tt(s.id),owner:this.scope.ownerPubKey,version:W}),Rn,mn=await this.scope.connection.getAccountInfo(ot);if(mn&&(Rn=qn(W).decode(mn.data)),W!==6&&!Rn){let{instruction:Ht,instructionType:ti}=Cr({id:new tt(s.id),programId:new tt(s.programId),version:W,ledger:ot,owner:this.scope.ownerPubKey});b.addInstruction({instructions:[Ht],instructionTypes:[ti]})}let jt=[];for(let Ht of s.rewardInfos){let ti=Ht.mint.address===ye.WSOL.mint.toString();if(g[Ht.mint.address])jt.push(g[Ht.mint.address]);else{let{account:zs,instructionParams:Ys}=await this.scope.account.getOrCreateTokenAccount({mint:new tt(Ht.mint.address),tokenProgram:d,owner:this.scope.ownerPubKey,skipCloseAccount:!ti,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});zs||this.logAndCreateError("farm reward account not found:",Ht.mint.address),Ys&&b.addInstruction(Ys),jt.push(zs)}}let Ln=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],Ft={userAuxiliaryLedgers:m,amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:Ln,lpAccount:h,rewardAccounts:jt},On=bt[s.programId],zo=On===6?ho(Ft):On===5?ko(Ft):To(Ft),Oc={3:v.FarmV3Withdraw,5:v.FarmV5Withdraw,6:v.FarmV6Withdraw};b.addInstruction({instructions:[zo],instructionTypes:[Oc[On]]})}let I=await this.getAmmPoolKeys(t.id),N=As({poolInfo:t,poolKeys:I,userKeys:{lpTokenAccount:h,baseTokenAccount:T,quoteTokenAccount:x,owner:this.scope.ownerPubKey},amountIn:P});b.addInstruction({instructions:[N],instructionTypes:[t.pooltype.includes("StablePool")?v.AmmV5RemoveLiquidity:v.AmmV4RemoveLiquidity],lookupTableAddress:I.lookupTableAccount?[I.lookupTableAccount]:[]});let[q,D]=t.mintA.address===n.mintA.address?[T,x]:[x,T],J=await this.scope.clmm.getClmmPoolKeys(t.id),G=await Se.openPositionFromBaseInstructions(F(C({poolInfo:n,poolKeys:J,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:q,tokenAccountB:D},withMetadata:"create"},i),{base:c,getEphemeralSigners:y}));return b.addInstruction({instructions:[...G.instructions],signers:G.signers,instructionTypes:[...G.instructionTypes],lookupTableAddress:J.lookupTableAccount?[J.lookupTableAccount]:[]}),f===0?b.sizeCheckBuildV0():b.sizeCheckBuild()}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:r,quoteMintInfo:i,baseAmount:s,quoteAmount:a,startTime:c,ownerInfo:u,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:y,computeBudgetConfig:f}){var q;let b=u.feePayer||((q=this.scope.owner)==null?void 0:q.publicKey),g=u.useSOLBalance&&r.mint.equals(sc),h=u.useSOLBalance&&i.mint.equals(sc),P=this.createTxBuilder(),{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:r.mint,owner:this.scope.ownerPubKey,createInfo:g?{payer:b,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:l,checkCreateATAOwner:m});P.addInstruction(B||{});let{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:h?{payer:b,amount:a}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:l,checkCreateATAOwner:m});if(P.addInstruction(S||{}),k===void 0||T===void 0)throw Error("you don't has some token account");let x=ic({version:4,marketVersion:3,marketId:n.marketId,baseMint:r.mint,quoteMint:i.mint,baseDecimals:r.decimals,quoteDecimals:i.decimals,programId:t,marketProgramId:n.programId}),R={programId:t,ammId:x.id,ammAuthority:x.authority,ammOpenOrders:x.openOrders,lpMint:x.lpMint,coinMint:x.baseMint,pcMint:x.quoteMint,coinVault:x.baseVault,pcVault:x.quoteVault,withdrawQueue:x.withdrawQueue,ammTargetOrders:x.targetOrders,poolTempLp:x.lpVault,marketProgramId:x.marketProgramId,marketId:x.marketId,ammConfigId:x.configId,feeDestinationId:y},{instruction:I,instructionType:N}=Nu(F(C({},R),{userWallet:this.scope.ownerPubKey,userCoinVault:k,userPcVault:T,userLpVault:ge(this.scope.ownerPubKey,x.lpMint,d).publicKey,nonce:x.nonce,openTime:c,coinAmount:s,pcAmount:a}));return P.addInstruction({instructions:[I],instructionTypes:[N]}),P.addCustomComputeBudget(f),P.versionBuild({txVersion:p,extInfo:{address:R}})}async getCreatePoolFee({programId:t}){let n=Er({programId:t}),r=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(r===null)throw Error("get config account error");return Iu.decode(r.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:r,mintOut:i,slippage:s}){let[a,c]=[r.toString(),i.toString()];if(a!==t.mintA.address&&a!==t.mintB.address)throw new Error("toke not match");if(c!==t.mintA.address&&c!==t.mintB.address)throw new Error("toke not match");let{baseReserve:u,quoteReserve:l}=t,m=[u,l],d=a==t.mintA.address?"base":"quote";d==="quote"&&m.reverse();let[p,y]=m,f=t.version===4,b;if(f)b=new V(y.toString()).div(p.toString());else{let I=Cu(this.stableLayout.stableModelData,u.toNumber(),l.toNumber(),!1);d==="quote"?b=new V(1e6).div(I*1e6):b=new V(I*1e6).div(1e6)}let g=n,h=new lt(0),P=new lt(0);if(!g.isZero())if(f){P=nn(g.mul(nc),oc);let I=g.sub(P),N=p.add(I);h=y.mul(I).div(N)}else{P=g.mul(new lt(2)).div(new lt(1e4));let I=g.sub(P);d==="quote"?h=new lt(Su(this.stableLayout.stableModelData,l.toNumber(),u.toNumber(),I.toNumber())):h=new lt(Ku(this.stableLayout.stableModelData,l.toNumber(),u.toNumber(),I.toNumber()))}let k=new lt(new V(h.toString()).mul(1-s).toFixed(0)),B=h,T=k,S=new V(h.toString()).div(new V(g.sub(P).toString()).toFixed(0));!g.isZero()&&!h.isZero()&&(S=new V(h.toString()).div(g.sub(P).toString()));let x=b.sub(S).div(b).mul(100);return{amountOut:B,minAmountOut:T,currentPrice:b,executionPrice:S,priceImpact:x,fee:P}}async swap({poolInfo:t,poolKeys:n,amountIn:r,amountOut:i,inputMint:s,fixedSide:a,txVersion:c,config:u,computeBudgetConfig:l}){let m=this.createTxBuilder(),{associatedOnly:d=!1,inputUseSolBalance:p=!0,outputUseSolBalance:y=!0}=u||{},[f,b]=s===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],g=p&&f.address===$.toBase58(),h=y&&b.address===$.toBase58(),{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Yn,mint:new tt(f.address),owner:this.scope.ownerPubKey,createInfo:g?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:d});m.addInstruction(k||{}),P||this.logAndCreateError("input token account not found",f.address);let{account:B,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Yn,mint:new tt(b.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:d});if(m.addInstruction(T||{}),B===void 0)throw new Error("output token account not found");let S=n||await this.getAmmPoolKeys(t.id),x=4;return t.pooltype.includes("StablePool")&&(x=5),m.addInstruction({instructions:[Lr({version:x,poolKeys:S,userKeys:{tokenAccountIn:P,tokenAccountOut:B,owner:this.scope.ownerPubKey},amountIn:r,amountOut:i,fixedSide:a})],instructionTypes:[x===4?v.AmmV4SwapBaseIn:v.AmmV5SwapBaseIn]}),m.addCustomComputeBudget(l),m.versionBuild({txVersion:c})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t,n){let r=await Ee(this.scope.connection,t.map(l=>({pubkey:new tt(l)})),n),i={},s=[];for(let l=0;l<t.length;l++){let m=r[l];if(m===null||!m.accountInfo)throw Error("fetch pool info error: "+String(t[l]));let d=xo.decode(m.accountInfo.data);i[String(t[l])]=F(C({},d),{programId:m.accountInfo.owner}),s.push(d.baseVault,d.quoteVault)}let a={},c=await Ee(this.scope.connection,s.map(l=>({pubkey:new tt(l)})),n);for(let l=0;l<s.length;l++){let m=c[l].accountInfo;if(m===null)throw Error("fetch vault info error: "+s[l]);a[String(s[l])]=new lt(Gp.decode(m.data).amount.toString())}let u={};for(let[l,m]of Object.entries(i)){let d=a[m.baseVault.toString()].sub(m.baseNeedTakePnl),p=a[m.quoteVault.toString()].sub(m.quoteNeedTakePnl);u[l]=F(C({},m),{baseReserve:d,mintAAmount:a[m.baseVault.toString()],mintBAmount:a[m.quoteVault.toString()],quoteReserve:p,poolPrice:new V(p.toString()).div(new V(10).pow(m.quoteDecimal.toString())).div(new V(d.toString()).div(new V(10).pow(m.baseDecimal.toString())))})}return u}async getPoolInfoFromRpc({poolId:t}){let n=await this.getRpcPoolInfo(t),r=Dr({[t]:n}),i=r[t],s=await this.scope.tradeV2.computePoolToPoolKeys({pools:[r[t]],ammRpcData:{[t]:n}});return{poolRpcData:n,poolInfo:i,poolKeys:s[0]}}};import{PublicKey as ae}from"@solana/web3.js";import wt from"bn.js";import{AccountLayout as ac,TOKEN_PROGRAM_ID as uc}from"@solana/spl-token";var _o=class extends xe{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var h;let{programId:t,owner:n=((h=this.scope.owner)==null?void 0:h.publicKey)||ae.default,mint1:r,mint2:i,ammConfig:s,initialPrice:a,startTime:c,computeBudgetConfig:u,forerunCreate:l,txVersion:m}=e,d=this.createTxBuilder(),[p,y,f]=new wt(new ae(r.address).toBuffer()).gt(new wt(new ae(i.address).toBuffer()))?[i,r,new V(1).div(a)]:[r,i,a],b=te.priceToSqrtPriceX64(f,p.decimals,y.decimals),g=await Se.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:p,mintB:y,ammConfigId:s.id,initialPriceX64:b,startTime:c,forerunCreate:l});return d.addInstruction(g),d.addCustomComputeBudget(u),d.versionBuild({txVersion:m,extInfo:{address:F(C({},g.address),{programId:t.toString(),id:g.address.poolId.toString(),mintA:p,mintB:y,openTime:c.toString(),vault:{A:g.address.mintAVault.toString(),B:g.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:C({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:g.address.poolId.toString(),mintA:p,mintB:y,feeRate:s.tradeFeeRate,openTime:c.toString(),programId:t.toString(),price:f.toNumber(),config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}},zu),forerunCreate:l}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:r,tickUpper:i,base:s,baseAmount:a,otherAmountMax:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",getEphemeralSigners:d,computeBudgetConfig:p,txVersion:y}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let f=this.createTxBuilder(),b=null,g=null,h=n.useSOLBalance&&e.mintA.address===$.toString(),P=n.useSOLBalance&&e.mintB.address===$.toString(),[k,B]=s==="MintA"?[a,c]:[c,a],{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ae(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:h||k.isZero()?{payer:this.scope.ownerPubKey,amount:k}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:l});T&&(b=T),f.addInstruction(S||{});let{account:x,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ae(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:P||B.isZero()?{payer:this.scope.ownerPubKey,amount:B}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:P?!1:u,checkCreateATAOwner:l});x&&(g=x),f.addInstruction(R||{}),(!b||!g)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",{ownerTokenAccountA:b==null?void 0:b.toBase58(),ownerTokenAccountB:g==null?void 0:g.toBase58()});let I=t||await this.getClmmPoolKeys(e.id),N=await Se.openPositionFromBaseInstructions({poolInfo:e,poolKeys:I,ownerInfo:F(C({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g}),tickLower:r,tickUpper:i,base:s,baseAmount:a,otherAmountMax:c,withMetadata:m,getEphemeralSigners:d});return f.addInstruction(N),f.addCustomComputeBudget(p),f.versionBuild({txVersion:y,extInfo:N.address})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:r,amountMaxB:i,tickLower:s,tickUpper:a,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:d,getEphemeralSigners:p}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let y=this.createTxBuilder(),f=null,b=null,g=n.useSOLBalance&&e.mintA.address===$.toBase58(),h=n.useSOLBalance&&e.mintB.address===$.toBase58(),{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ae(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:g||r.isZero()?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!g,notUseTokenAccount:g,associatedOnly:g?!1:u,checkCreateATAOwner:l});P&&(f=P),y.addInstruction(k||{});let{account:B,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ae(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:l});B&&(b=B),y.addInstruction(T||{}),(f===void 0||b===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=t||await this.getClmmPoolKeys(e.id),x=await Se.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b},tickLower:s,tickUpper:a,liquidity:c,amountMaxA:r,amountMaxB:i,withMetadata:m,getEphemeralSigners:p});return y.addInstruction(x),y.versionBuild({txVersion:d,extInfo:{address:x.address}})}async increasePositionFromLiquidity(e){let{poolInfo:t,poolKeys:n,ownerPosition:r,amountMaxA:i,amountMaxB:s,liquidity:a,ownerInfo:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,computeBudgetConfig:m,txVersion:d}=e,p=this.createTxBuilder(),y,f,b=c.useSOLBalance&&t.mintA.address===$.toString(),g=c.useSOLBalance&&t.mintB.address===$.toString(),{account:h,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ae(t.mintA.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:b||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:l});h&&(y=h),p.addInstruction(P||{});let{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ae(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:g||s.isZero()?{payer:this.scope.ownerPubKey,amount:s}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:u,checkCreateATAOwner:l});k&&(f=k),p.addInstruction(B||{}),!y&&!f&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=n!=null?n:await this.getClmmPoolKeys(t.id),S=Se.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:T,ownerPosition:r,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:y,tokenAccountB:f},liquidity:a,amountMaxA:i,amountMaxB:s});return p.addInstruction(S),p.addCustomComputeBudget(m),p.versionBuild({txVersion:d,extInfo:{address:S.address}})}async increasePositionFromBase(e){let{poolInfo:t,ownerPosition:n,base:r,baseAmount:i,otherAmountMax:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txVersion:m}=e,d=this.createTxBuilder(),p,y,f=a.useSOLBalance&&t.mintA.address===$.toString(),b=a.useSOLBalance&&t.mintB.address===$.toString(),{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ae(t.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f||(r==="MintA"?i:s).isZero()?{payer:this.scope.ownerPubKey,amount:r==="MintA"?i:s}:void 0,skipCloseAccount:!f,associatedOnly:f?!1:c,checkCreateATAOwner:u});g&&(p=g),d.addInstruction(h||{});let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ae(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:b||(r==="MintA"?s:i).isZero()?{payer:this.scope.ownerPubKey,amount:r==="MintA"?s:i}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:c,checkCreateATAOwner:u});P&&(y=P),d.addInstruction(k||{}),!p&&!y&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let B=await this.getClmmPoolKeys(t.id),T=Se.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:B,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:p,tokenAccountB:y},base:r,baseAmount:i,otherAmountMax:s});return d.addInstruction(T),d.addCustomComputeBudget(l),d.versionBuild({txVersion:m,extInfo:{address:T.address}})}async decreaseLiquidity(e){let{poolInfo:t,poolKeys:n,ownerPosition:r,ownerInfo:i,amountMinA:s,amountMinB:a,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,computeBudgetConfig:m,txVersion:d}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let p=this.createTxBuilder(),y=i.useSOLBalance&&t.mintA.address===$.toString(),f=i.useSOLBalance&&t.mintB.address===$.toString(),b,g,{account:h,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new ae(t.mintA.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,associatedOnly:y?!1:u,checkCreateATAOwner:l});b=h,P&&p.addInstruction(P);let{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new ae(t.mintB.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!f,associatedOnly:f?!1:u,checkCreateATAOwner:l});g=k,B&&p.addInstruction(B);let T=[];for(let I of t.rewardDefaultInfos){let N=i.useSOLBalance&&I.mint.address===$.toString(),q;if(I.mint.address===t.mintA.address)q=b;else if(I.mint.address===t.mintB.address)q=g;else{let{account:D,instructionParams:J}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(I.mint.programId),mint:new ae(I.mint.address),notUseTokenAccount:N,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!N,associatedOnly:N?!1:u,checkCreateATAOwner:l});q=D,J&&p.addInstruction(J)}T.push(q)}!b&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let S=n!=null?n:await this.getClmmPoolKeys(t.id),x=await Se.decreaseLiquidityInstructions({poolInfo:t,poolKeys:S,ownerPosition:r,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g,rewardAccounts:T},liquidity:c,amountMinA:s,amountMinB:a});p.addInstruction({instructions:x.instructions,instructionTypes:[v.ClmmDecreasePosition]});let R=C({},x.address);if(i.closePosition){let I=await Se.closePositionInstructions({poolInfo:t,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:r});p.addInstruction({endInstructions:I.instructions,endInstructionTypes:I.instructionTypes}),R=C(C({},R),I.address)}return p.addCustomComputeBudget(m),p.versionBuild({txVersion:d,extInfo:{address:R}})}async closePosition({poolInfo:e,poolKeys:t,ownerPosition:n,txVersion:r}){this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let i=this.createTxBuilder(),s=t!=null?t:await this.getClmmPoolKeys(e.id),a=Se.closePositionInstructions({poolInfo:e,poolKeys:s,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n});return i.addInstruction(a).versionBuild({txVersion:r,extInfo:{address:a.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:r=!0,checkCreateATAOwner:i=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let c=this.createTxBuilder(),u=t.useSOLBalance&&n.mint.address.toString()===$.toString(),l=n.perSecond.mul(n.endTime-n.openTime),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(n.mint.address),mint:new ae(n.mint.address),notUseTokenAccount:!!u,skipCloseAccount:!u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new wt(new V(l.toFixed(0)).gte(l)?l.toFixed(0):l.add(1).toFixed(0))}:void 0,associatedOnly:u?!1:r,checkCreateATAOwner:i});d&&c.addInstruction(d),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=Se.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardInfo:{programId:new ae(n.mint.programId),mint:new ae(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:ne.decimalToX64(n.perSecond)}});return c.addInstruction(y),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:r,associatedOnly:i=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txVersion:c}){for(let m of r)m.endTime<=m.openTime&&this.logAndCreateError("reward time error","rewardInfo",m);let u=this.createTxBuilder(),l={};for(let m of r){let d=n.useSOLBalance&&m.mint.address===$.toString(),p=m.perSecond.mul(m.endTime-m.openTime),{account:y,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(m.mint.programId),mint:new ae(m.mint.address),notUseTokenAccount:!!d,skipCloseAccount:!d,owner:this.scope.ownerPubKey,createInfo:d?{payer:n.feePayer||this.scope.ownerPubKey,amount:new wt(new V(p.toFixed(0)).gte(p)?p.toFixed(0):p.add(1).toFixed(0))}:void 0,associatedOnly:d?!1:i,checkCreateATAOwner:s});f&&u.addInstruction(f),y||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let b=t!=null?t:await this.getClmmPoolKeys(e.id),g=Se.initRewardInstructions({poolInfo:e,poolKeys:b,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:y},rewardInfo:{programId:new ae(m.mint.programId),mint:new ae(m.mint.address),openTime:m.openTime,endTime:m.endTime,emissionsPerSecondX64:ne.decimalToX64(m.perSecond)}});l=C(C({},l),g.address),u.addInstruction(g)}return u.addCustomComputeBudget(a),u.versionBuild({txVersion:c,extInfo:{address:l}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:r=!0,checkCreateATAOwner:i=!1,computeBudgetConfig:s,txVersion:a}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let c=this.createTxBuilder(),u=t.useSOLBalance&&n.mint.equals($),{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new wt(new V(n.perSecond.sub(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.sub(n.endTime-n.openTime))?n.perSecond.sub(n.endTime-n.openTime).toFixed(0):n.perSecond.sub(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:u?!1:r,checkCreateATAOwner:i});m&&c.addInstruction(m),l||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let d=await this.getClmmPoolKeys(e.id),p=Se.setRewardInstructions({poolInfo:e,poolKeys:d,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:l},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:ne.decimalToX64(n.perSecond)}});return c.addInstruction(p),c.addCustomComputeBudget(s),c.versionBuild({txVersion:a,extInfo:{address:p.address}})}async setRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:r,associatedOnly:i=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txVersion:c}){let u=this.createTxBuilder(),l={};for(let m of r){m.endTime<=m.openTime&&this.logAndCreateError("reward time error","rewardInfo",m);let d=n.useSOLBalance&&m.mint.address===$.toString(),{account:p,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(m.mint.programId),mint:new ae(m.mint.address),notUseTokenAccount:d,owner:this.scope.ownerPubKey,createInfo:d?{payer:n.feePayer||this.scope.ownerPubKey,amount:new wt(new V(m.perSecond.sub(m.endTime-m.openTime).toFixed(0)).gte(m.perSecond.sub(m.endTime-m.openTime))?m.perSecond.sub(m.endTime-m.openTime).toFixed(0):m.perSecond.sub(m.endTime-m.openTime).add(1).toFixed(0))}:void 0,associatedOnly:d?!1:i,checkCreateATAOwner:s});y&&u.addInstruction(y),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=t!=null?t:await this.getClmmPoolKeys(e.id),b=Se.setRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardInfo:{mint:new ae(m.mint.address),openTime:m.openTime,endTime:m.endTime,emissionsPerSecondX64:ne.decimalToX64(m.perSecond)}});u.addInstruction(b),l=C(C({},l),b.address)}return u.addCustomComputeBudget(a),u.versionBuild({txVersion:c,extInfo:{address:l}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:r=!0,checkCreateATAOwner:i=!1}){let s=e.rewardDefaultInfos.find(p=>p.mint.address===n.toString());s||this.logAndCreateError("reward mint error","not found reward mint",n);let a=this.createTxBuilder(),c=t.useSOLBalance&&n.equals($),{account:u,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(s.mint.programId),mint:n,notUseTokenAccount:c,owner:this.scope.ownerPubKey,skipCloseAccount:!c,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:c?!1:r,checkCreateATAOwner:i});l&&a.addInstruction(l),u||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let m=await this.getClmmPoolKeys(e.id),d=Se.collectRewardInstructions({poolInfo:e,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:u},rewardMint:n});return a.addInstruction(d),a.build({address:d.address})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:r=!0,checkCreateATAOwner:i=!1}){let s=this.createTxBuilder(),a={};for(let c of n){let u=e.rewardDefaultInfos.find(f=>f.mint.address===c.toString());if(!u){this.logAndCreateError("reward mint error","not found reward mint",c);continue}let l=t.useSOLBalance&&c.equals($),{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(u.mint.programId),mint:c,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:l?!1:r,checkCreateATAOwner:i});m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),d&&s.addInstruction(d);let p=await this.getClmmPoolKeys(e.id),y=Se.collectRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:c});s.addInstruction(y),a=C(C({},a),y.address)}return s.build({address:a})}async swap({poolInfo:e,poolKeys:t,inputMint:n,amountIn:r,amountOutMin:i,priceLimit:s,observationId:a,ownerInfo:c,remainingAccounts:u,associatedOnly:l=!0,checkCreateATAOwner:m=!1,txVersion:d}){let p=this.createTxBuilder(),y=n.toString()===e.mintA.address,f=c.useSOLBalance&&e.mintA.address===$.toBase58(),b=c.useSOLBalance&&e.mintB.address===$.toBase58(),g;!s||s.equals(new V(0))?g=y?_t.add(new wt(1)):Vt.sub(new wt(1)):g=te.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let h;if(!h){let{account:B,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new ae(e.mintA.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,skipCloseAccount:!f,createInfo:f||!y?{payer:c.feePayer||this.scope.ownerPubKey,amount:f?r:0}:void 0,associatedOnly:f?!1:l,checkCreateATAOwner:m});h=B,T&&p.addInstruction(T)}let P;if(!P){let{account:B,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new ae(e.mintB.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,skipCloseAccount:!b,createInfo:b||y?{payer:c.feePayer||this.scope.ownerPubKey,amount:y?0:r}:void 0,associatedOnly:b?!1:l,checkCreateATAOwner:m});P=B,T&&p.addInstruction(T)}(!h||!P)&&this.logAndCreateError("user do not have token account",this.scope.account.tokenAccountRawInfos);let k=t!=null?t:await this.getClmmPoolKeys(e.id);return p.addInstruction(Se.makeSwapBaseInInstructions({poolInfo:e,poolKeys:k,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:h,tokenAccountB:P},inputMint:new ae(n),amountIn:r,amountOutMin:i,sqrtPriceLimitX64:g,remainingAccounts:u})),p.versionBuild({txVersion:d})}async harvestAllRewards({allPoolInfo:e,allPositions:t,ownerInfo:n,associatedOnly:r=!0,checkCreateATAOwner:i=!1,programId:s,txVersion:a,computeBudgetConfig:c}){let u={};for(let m of this.scope.account.tokenAccountRawInfos)r?ge(this.scope.ownerPubKey,m.accountInfo.mint,s).publicKey.equals(m.pubkey)&&(u[m.accountInfo.mint.toString()]=m.pubkey):u[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(P=>!P.liquidity.isZero()||P.rewardInfos.find(k=>!k.rewardAmountOwed.isZero())))continue;let d=m,p=n.useSOLBalance&&d.mintA.address===$.toString(),y=n.useSOLBalance&&d.mintB.address===$.toString(),f=u[d.mintA.address];if(!f){let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new ae(d.mintA.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:r,checkCreateATAOwner:i});f=P,k&&l.addInstruction(k)}let b=u[d.mintB.address];if(!b){let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new ae(d.mintB.address),notUseTokenAccount:y,owner:this.scope.ownerPubKey,skipCloseAccount:!y,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:y?!1:r,checkCreateATAOwner:i});b=P,k&&l.addInstruction(k)}u[d.mintA.address]=f,u[d.mintB.address]=b;let g=[];for(let P of d.rewardDefaultInfos){let k=n.useSOLBalance&&P.mint.address===$.toString(),B=u[P.mint.address];if(!B){let{account:T,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new ae(P.mint.programId),mint:new ae(P.mint.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,skipCloseAccount:!k,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:k?!1:r});B=T,S&&l.addInstruction(S)}u[P.mint.address]=B,g.push(B)}let h=await this.getClmmPoolKeys(d.id);for(let P of t[m.id]){let k=Se.decreaseLiquidityInstructions({poolInfo:d,poolKeys:h,ownerPosition:P,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:f,tokenAccountB:b,rewardAccounts:g},liquidity:new wt(0),amountMinA:new wt(0),amountMinB:new wt(0)});l.addInstruction(k)}}return a===0?l.sizeCheckBuildV0({computeBudgetConfig:c}):l.sizeCheckBuild({computeBudgetConfig:c})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(Ko(e).publicKey);return t?Zu.decode(t.data).whitelistMints.filter(r=>!r.equals(ae.default)):[]}async getOwnerPositionInfo({programId:e}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new wt(1))).map(s=>gt(new ae(e),s.accountInfo.mint).publicKey),r=await this.scope.connection.getMultipleAccountsInfo(n),i=[];return r.forEach(s=>{if(!s)return;let a=Fr.decode(s.data);i.push(a)}),i}async getRpcClmmPoolInfo({poolId:e}){return(await this.getRpcClmmPoolInfos({poolIds:[e]}))[String(e)]}async getRpcClmmPoolInfos({poolIds:e,config:t}){let n=await Ee(this.scope.connection,e.map(i=>({pubkey:new ae(i)})),t),r={};for(let i=0;i<e.length;i++){let s=n[i];if(s===null||!s.accountInfo)throw Error("fetch pool info error: "+String(e[i]));let a=In.decode(s.accountInfo.data),c=te.sqrtPriceX64ToPrice(a.sqrtPriceX64,a.mintDecimalsA,a.mintDecimalsB).toNumber();r[String(e[i])]=F(C({},a),{currentPrice:c,programId:s.accountInfo.owner})}return r}async getComputeClmmPoolInfos({clmmPoolsRpcInfo:e,mintInfos:t}){let n=new Set(Object.keys(e).map(c=>e[c].ammConfig.toBase58())),r=await Ee(this.scope.connection,Array.from(n).map(c=>({pubkey:new ae(c)}))),i={};r.forEach(c=>{!c.accountInfo||(i[c.pubkey.toBase58()]=Hu.decode(c.accountInfo.data))});let s=await Le.fetchComputeMultipleClmmInfo({connection:this.scope.connection,rpcDataMap:e,poolList:Object.keys(e).map(c=>{var m,d,p,y;let[u,l]=[e[c].mintA.toBase58(),e[c].mintB.toBase58()];return{id:c,programId:e[c].programId.toBase58(),mintA:it({address:u,decimals:e[c].mintDecimalsA,programId:t[u].programId.toBase58()||uc.toBase58(),extensions:{feeConfig:(m=t[u])!=null&&m.feeConfig?cn((d=t[u])==null?void 0:d.feeConfig):void 0}}),mintB:it({address:l,decimals:e[c].mintDecimalsB,programId:t[l].programId.toBase58()||uc.toBase58(),extensions:{feeConfig:(p=t[l])!=null&&p.feeConfig?cn((y=t[l])==null?void 0:y.feeConfig):void 0}}),price:e[c].currentPrice,config:F(C({},i[e[c].ammConfig.toBase58()]),{id:e[c].ammConfig.toBase58(),fundFeeRate:0,description:"",defaultRange:0,defaultRangePoint:[]})}})}),a=await Le.fetchMultiplePoolTickArrays({connection:this.scope.connection,poolKeys:Object.values(s)});return{computeClmmPoolInfo:s,computePoolTickData:a}}async getPoolInfoFromRpc(e){var l;let t=await this.getRpcClmmPoolInfo({poolId:e}),n=new Set([t.mintA.toBase58(),t.mintB.toBase58()]),r=await vn({connection:this.scope.connection,mints:Array.from(n).map(m=>new ae(m))}),{computeClmmPoolInfo:i,computePoolTickData:s}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:{[e]:t},mintInfos:r}),a=await Ee(this.scope.connection,[{pubkey:t.vaultA},{pubkey:t.vaultB}]),c=Qu(i[e]);if(!a[0].accountInfo||!a[1].accountInfo)throw new Error("pool vault data not found");c.mintAmountA=Number(ac.decode(a[0].accountInfo.data).amount.toString()),c.mintAmountB=Number(ac.decode((l=a[1].accountInfo)==null?void 0:l.data).amount.toString());let u=F(C({},i[e]),{id:e,programId:t.programId.toBase58(),openTime:t.startTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},rewardInfos:[],config:c.config});return{poolInfo:c,poolKeys:u,computePoolInfo:i[e],tickData:s}}};import{PublicKey as Q}from"@solana/web3.js";import{NATIVE_MINT as jr,TOKEN_PROGRAM_ID as Yt,AccountLayout as sf}from"@solana/spl-token";import lc from"bn.js";var Ls=new lc(1e6);function Xp(o,e,t){return o.mul(e).add(t).sub(new lc(1)).div(t)}function cc(o,e,t){return o.mul(e).div(t)}var Wr=class{static tradingFee(e,t){return Xp(e,t,Ls)}static protocolFee(e,t){return cc(e,t,Ls)}static fundFee(e,t){return cc(e,t,Ls)}};import Vo from"bn.js";function qr(o,e){if(e.isZero())throw Error("divisor is zero");return o.mod(e)}function zp(o,e){if(e.isZero())throw Error("rhs is zero");let t=o.div(e);if(t.isZero())throw Error("quotient is zero");let n=qr(o,e);return n.gt(Qn)&&(t=t.add(new Vo(1)),e=o.div(t),n=qr(o,t),n.gt(Qn)&&(e=e.add(new Vo(1)))),[t,e]}var Qn=new Vo(0),Ur=class{static swapWithoutFees(e,t,n){let r=t.mul(n),i=t.add(e),[s,a]=zp(r,i),c=a.sub(t),u=n.sub(s);if(u.isZero())throw Error("destinationAmountSwapped is zero");return{sourceAmountSwapped:c,destinationAmountSwapped:u}}static lpTokensToTradingTokens(e,t,n,r,i){let s=e.mul(n).div(t),a=e.mul(r).div(t);if(i===0)return{tokenAmount0:s,tokenAmount1:a};if(i===1)return qr(e.mul(n),t).gt(Qn)&&s.gt(Qn)&&(s=s.add(new Vo(1))),qr(e.mul(r),t).gt(Qn)&&a.gt(Qn)&&(a=a.add(new Vo(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var mc=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(mc||{}),Gr=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swap(e,t,n,r){let i=Wr.tradingFee(e,r),s=e.sub(i),{sourceAmountSwapped:a,destinationAmountSwapped:c}=Ur.swapWithoutFees(s,t,n),u=a.add(i);return{newSwapSourceAmount:t.add(u),newSwapDestinationAmount:n.sub(c),sourceAmountSwapped:u,destinationAmountSwapped:c,tradeFee:i}}};var Yp=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Qp=Buffer.from("amm_config","utf8"),jp=Buffer.from("pool","utf8"),Hp=Buffer.from("pool_lp_mint","utf8"),Zp=Buffer.from("pool_vault","utf8"),$p=Buffer.from("observation","utf8");function jn(o){return ue([Yp],o)}function Jp(o,e){return ue([Qp,nf(e)],o)}function ef(o,e,t,n){return ue([jp,e.toBuffer(),t.toBuffer(),n.toBuffer()],o)}function tf(o,e){return ue([Hp,e.toBuffer()],o)}function dc(o,e,t){return ue([Zp,e.toBuffer(),t.toBuffer()],o)}function Xr(o,e){return ue([$p,e.toBuffer()],o)}function nf(o){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,o,!1),new Uint8Array(e)}function pc({programId:o,mintA:e,mintB:t}){let n=Jp(o,0).publicKey,r=jn(o).publicKey,i=ef(o,n,e,t).publicKey,s=tf(o,i).publicKey,a=dc(o,i,e).publicKey,c=dc(o,i,t).publicKey,u=Xr(o,i).publicKey;return{poolId:i,configId:n,authority:r,lpMint:s,vaultA:a,vaultB:c,observationId:u}}import{TransactionInstruction as vo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Os,TOKEN_2022_PROGRAM_ID as fc,ASSOCIATED_TOKEN_PROGRAM_ID as of}from"@solana/spl-token";var rf=ce("Raydium_cpmm"),Fo={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 yc(o,e,t,n,r,i,s,a,c,u,l,m,d,p,y,f,b,g,h,P){let k=M([w("amountMaxA"),w("amountMaxB"),w("openTime")]),B=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:Os,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:of,isSigner:!1,isWritable:!1},{pubkey:rr,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1}],T=Buffer.alloc(k.span);return k.encode({amountMaxA:g,amountMaxB:h,openTime:P},T),new vo({keys:B,programId:o,data:Buffer.from([...Fo.initialize,...T])})}function bc(o,e,t,n,r,i,s,a,c,u,l,m,d,p,y){let f=M([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:Os,isSigner:!1,isWritable:!1},{pubkey:fc,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],g=Buffer.alloc(f.span);return rf.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:y.toString()}),f.encode({lpAmount:d,amountMaxA:p,amountMaxB:y},g),new vo({keys:b,programId:o,data:Buffer.from([...Fo.deposit,...g])})}function gc(o,e,t,n,r,i,s,a,c,u,l,m,d,p,y){let f=M([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:Os,isSigner:!1,isWritable:!1},{pubkey:fc,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:nr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(f.span);return f.encode({lpAmount:d,amountMinA:p,amountMinB:y},g),new vo({keys:b,programId:o,data:Buffer.from([...Fo.withdraw,...g])})}function zr(o,e,t,n,r,i,s,a,c,u,l,m,d,p,y,f){let b=M([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],h=Buffer.alloc(b.span);return b.encode({amountIn:y,amounOutMin:f},h),new vo({keys:g,programId:o,data:Buffer.from([...Fo.swapBaseInput,...h])})}function Yr(o,e,t,n,r,i,s,a,c,u,l,m,d,p,y,f){let b=M([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],h=Buffer.alloc(b.span);return b.encode({amountInMax:y,amountOut:f},h),new vo({keys:g,programId:o,data:Buffer.from([...Fo.swapBaseOutput,...h])})}import Ge from"bn.js";var Ac=M([be(8),E("bump"),Qe("disableCreatePool"),Nt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),K("protocolOwner"),K("fundOwner"),X(w(),16)]),Qr=M([be(8),K("configId"),K("poolCreator"),K("vaultA"),K("vaultB"),K("mintLp"),K("mintA"),K("mintB"),K("mintProgramA"),K("mintProgramB"),K("observationId"),E("bump"),E("status"),E("lpDecimals"),E("mintDecimalA"),E("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),X(w(),32)]);var Eo=class extends xe{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){return(await this.getRpcPoolInfos([e],t))[e]}async getRpcPoolInfos(e,t){let n=await Ee(this.scope.connection,e.map(m=>({pubkey:new Q(m)}))),r={},i=new Set,s=[];for(let m=0;m<e.length;m++){let d=n[m];if(d.accountInfo===null)throw Error("fetch pool info error: "+String(e[m]));let p=Qr.decode(d.accountInfo.data);r[String(e[m])]=F(C({},p),{programId:d.accountInfo.owner}),i.add(String(p.configId)),s.push(p.vaultA,p.vaultB)}let a={};if(t){let m=[...i],d=await Ee(this.scope.connection,m.map(p=>({pubkey:new Q(p)})));for(let p=0;p<m.length;p++){let y=d[p].accountInfo;if(y===null)throw Error("fetch pool config error: "+m[p]);a[m[p]]=Ac.decode(y.data)}}let c={},u=await Ee(this.scope.connection,s.map(m=>({pubkey:new Q(m)})));for(let m=0;m<s.length;m++){let d=u[m].accountInfo;if(d===null)throw Error("fetch vault info error: "+s[m]);c[String(s[m])]=new Ge(sf.decode(d.data).amount.toString())}let l={};for(let[m,d]of Object.entries(r)){let p=c[d.vaultA.toString()].sub(d.protocolFeesMintA).sub(d.fundFeesMintA),y=c[d.vaultB.toString()].sub(d.protocolFeesMintB).sub(d.fundFeesMintB);l[m]=F(C({},d),{baseReserve:p,quoteReserve:y,vaultAAmount:c[d.vaultA.toString()],vaultBAmount:c[d.vaultB.toString()],configInfo:a[d.configId.toString()],poolPrice:new V(y.toString()).div(new V(10).pow(d.mintDecimalB)).div(new V(p.toString()).div(new V(10).pow(d.mintDecimalA)))})}return l}toComputePoolInfos({pools:e,mintInfos:t}){return Object.keys(e).reduce((n,r)=>{var c,u,l,m;let i=e[r],[s,a]=[i.mintA.toBase58(),i.mintB.toBase58()];return F(C({},n),{[r]:F(C({},i),{id:new Q(r),configInfo:i.configInfo,version:7,authority:jn(i.programId).publicKey,mintA:it({address:s,decimals:i.mintDecimalA,programId:i.mintProgramA.toBase58(),extensions:{feeConfig:(c=t[s])!=null&&c.feeConfig?cn((u=t[s])==null?void 0:u.feeConfig):void 0}}),mintB:it({address:a,decimals:i.mintDecimalB,programId:i.mintProgramB.toBase58(),extensions:{feeConfig:(l=t[a])!=null&&l.feeConfig?cn((m=t[a])==null?void 0:m.feeConfig):void 0}})})})},{})}async getPoolInfoFromRpc(e){let t=await this.getRpcPoolInfo(e,!0),n=await vn({connection:this.scope.connection,mints:[t.mintA,t.mintB]}),r=it({address:t.mintA.toBase58(),decimals:t.mintDecimalA,programId:t.mintProgramA.toBase58(),extensions:{feeConfig:n[t.mintA.toBase58()].feeConfig?cn(n[t.mintA.toBase58()].feeConfig):void 0}}),i=it({address:t.mintB.toBase58(),decimals:t.mintDecimalB,programId:t.mintProgramB.toBase58(),extensions:{feeConfig:n[t.mintB.toBase58()].feeConfig?cn(n[t.mintB.toBase58()].feeConfig):void 0}}),s=it({address:t.mintLp.toBase58(),decimals:t.lpDecimals,programId:Yt.toBase58()}),a={id:t.configId.toBase58(),index:t.configInfo.index,protocolFeeRate:t.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:t.configInfo.tradeFeeRate.toNumber(),fundFeeRate:t.configInfo.fundFeeRate.toNumber(),createPoolFee:t.configInfo.createPoolFee.toString()},c={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};return{poolInfo:{programId:t.programId.toBase58(),id:e,type:"Standard",lpMint:s,lpPrice:0,lpAmount:t.lpAmount.toNumber(),config:a,mintA:r,mintB:i,rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:t.poolPrice.toNumber(),mintAmountA:new V(t.vaultAAmount.toString()).div(10**r.decimals).toNumber(),mintAmountB:new V(t.vaultBAmount.toString()).div(10**i.decimals).toNumber(),feeRate:t.configInfo.tradeFeeRate.toNumber(),openTime:t.openTime.toString(),tvl:0,day:c,week:c,month:c,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0},poolKeys:{programId:t.programId.toBase58(),id:e,mintA:r,mintB:i,openTime:t.openTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},authority:jn(t.programId).publicKey.toBase58(),mintLp:s,config:a},rpcData:t}}async createPool(l){var m=l,{programId:e,poolFeeAccount:t,startTime:n,ownerInfo:r,associatedOnly:i=!1,checkCreateATAOwner:s=!1,txVersion:a,computeBudgetConfig:c}=m,u=Ke(m,["programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","computeBudgetConfig"]);var q,D,J;let d=r.feePayer||((q=this.scope.owner)==null?void 0:q.publicKey),p=new Ge(new Q(u.mintA.address).toBuffer()).lte(new Ge(new Q(u.mintB.address).toBuffer())),[y,f]=p?[u.mintA,u.mintB]:[u.mintB,u.mintA],[b,g]=p?[u.mintAAmount,u.mintBAmount]:[u.mintBAmount,u.mintAAmount],h=r.useSOLBalance&&y.address===jr.toBase58(),P=r.useSOLBalance&&f.address===jr.toBase58(),[k,B]=[new Q(y.address),new Q(f.address)],T=this.createTxBuilder(),{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:k,tokenProgram:y.programId,owner:this.scope.ownerPubKey,createInfo:h?{payer:d,amount:b}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:i,checkCreateATAOwner:s});T.addInstruction(x||{});let{account:R,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({mint:new Q(f.address),tokenProgram:f.programId,owner:this.scope.ownerPubKey,createInfo:P?{payer:d,amount:g}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:i,checkCreateATAOwner:s});if(T.addInstruction(I||{}),S===void 0||R===void 0)throw Error("you don't has some token account");let N=pc({programId:e,mintA:k,mintB:B});return T.addInstruction({instructions:[yc(e,this.scope.ownerPubKey,N.configId,N.authority,N.poolId,k,B,N.lpMint,S,R,ge(this.scope.ownerPubKey,N.lpMint).publicKey,N.vaultA,N.vaultB,t,new Q((D=y.programId)!=null?D:Yt),new Q((J=f.programId)!=null?J:Yt),N.observationId,b,g,n)],instructionTypes:[v.CpmmCreatePool]}),T.addCustomComputeBudget(c),T.versionBuild({txVersion:a,extInfo:{address:F(C({},N),{mintA:y,mintB:f,programId:e,poolFeeAccount:t})}})}async addLiquidity(e){let{poolInfo:t,poolKeys:n,inputAmount:r,baseIn:i,slippage:s,computeResult:a,computeBudgetConfig:c,config:u,txVersion:l}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),r.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:r.toString()});let{account:m}=this.scope,{bypassAssociatedCheck:d,checkCreateATAOwner:p}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),y=a?void 0:await this.getRpcPoolInfo(t.id),{liquidity:f,inputAmountFee:b,anotherAmount:g}=a||this.computePairAmount({poolInfo:F(C({},t),{lpAmount:new V(y.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),baseReserve:y.baseReserve,quoteReserve:y.quoteReserve,slippage:new ve(0),baseIn:i,epochInfo:await this.scope.fetchEpochInfo(),amount:new V(r.toString()).div(10**(i?t.mintA.decimals:t.mintB.decimals))}),h=g.amount,P=t.mintA.address===jr.toString(),k=t.mintB.address===jr.toString(),B=this.createTxBuilder(),[T,S]=[new Q(t.mintA.address),new Q(t.mintB.address)],{account:x,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Q(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:P||(i?r:h).isZero()?{payer:this.scope.ownerPubKey,amount:i?r:h}:void 0,skipCloseAccount:!P,notUseTokenAccount:P,associatedOnly:!1,checkCreateATAOwner:p});B.addInstruction(R||{});let{account:I,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Q(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:k||(i?h:r).isZero()?{payer:this.scope.ownerPubKey,amount:i?h:r}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!1,checkCreateATAOwner:p});B.addInstruction(N||{}),!x&&!I&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",m.tokenAccounts);let q=await m.getCreatedTokenAccount({mint:new Q(t.lpMint.address)}),ot=await m.handleTokenAccount({side:"out",amount:0,mint:new Q(t.lpMint.address),tokenAccount:q,bypassAssociatedCheck:d,checkCreateATAOwner:p}),{tokenAccount:D}=ot,J=Ke(ot,["tokenAccount"]);B.addInstruction(J);let G=n!=null?n:await this.getCpmmPoolKeys(t.id),W=new ve(new Ge(1)).sub(s);return B.addInstruction({instructions:[bc(new Q(t.programId),this.scope.ownerPubKey,new Q(G.authority),new Q(t.id),D,x,I,new Q(G.vault.A),new Q(G.vault.B),T,S,new Q(t.lpMint.address),a?a==null?void 0:a.liquidity:W.mul(f).quotient,i?b.amount:h,i?h:b.amount)],instructionTypes:[v.CpmmAddLiquidity],lookupTableAddress:G.lookupTableAccount?[G.lookupTableAccount]:[]}),B.addCustomComputeBudget(c),B.versionBuild({txVersion:l})}async withdrawLiquidity(e){var D,J;let{poolInfo:t,poolKeys:n,lpAmount:r,slippage:i,computeBudgetConfig:s,txVersion:a}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let c=new ve(new Ge(1)).sub(i),u=await this.getRpcPoolInfo(t.id),[l,m]=[c.mul(r.mul(u.baseReserve).div(u.lpAmount)).quotient,c.mul(r.mul(u.quoteReserve).div(u.lpAmount)).quotient],d=await this.scope.fetchEpochInfo(),[p,y]=[he(l,t.mintA.extensions.feeConfig,d,!0),he(m,t.mintB.extensions.feeConfig,d,!0)],{account:f}=this.scope,b=this.createTxBuilder(),[g,h]=[new Q(t.mintA.address),new Q(t.mintB.address)],P=g.equals($),k=h.equals($),B,T,{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Q(t.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!P,associatedOnly:!P,checkCreateATAOwner:!1});B=S,x&&b.addInstruction(x);let{account:R,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Q(t.mintB.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!k,associatedOnly:!k,checkCreateATAOwner:!1});T=R,I&&b.addInstruction(I),(!B||!T)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",f.tokenAccounts);let N=await f.getCreatedTokenAccount({mint:new Q(t.lpMint.address)});N||this.logAndCreateError("cannot found lp token account","tokenAccounts",f.tokenAccounts);let q=n!=null?n:await this.getCpmmPoolKeys(t.id);return b.addInstruction({instructions:[gc(new Q(t.programId),this.scope.ownerPubKey,new Q(q.authority),new Q(t.id),N,B,T,new Q(q.vault.A),new Q(q.vault.B),g,h,new Q(t.lpMint.address),r,l.sub((D=p.fee)!=null?D:new Ge(0)),m.sub((J=y.fee)!=null?J:new Ge(0)))],instructionTypes:[v.CpmmWithdrawLiquidity],lookupTableAddress:q.lookupTableAccount?[q.lookupTableAccount]:[]}),b.addCustomComputeBudget(s),b.versionBuild({txVersion:a})}async swap(e){var S,x,R,I,N,q;let{poolInfo:t,poolKeys:n,baseIn:r,swapResult:i,slippage:s=0,config:a,computeBudgetConfig:c,txVersion:u}=e,{bypassAssociatedCheck:l,checkCreateATAOwner:m,associatedOnly:d}=C({bypassAssociatedCheck:!1,checkCreateATAOwner:!1,associatedOnly:!0},a),p=this.createTxBuilder(),[y,f]=[new Q(t.mintA.address),new Q(t.mintB.address)];i.destinationAmountSwapped=i.destinationAmountSwapped.mul(new Ge((1-s)*1e4)).div(new Ge(1e4));let b=t.mintA.address===$.toBase58(),g=t.mintB.address===$.toBase58(),{account:h,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({mint:y,tokenProgram:new Q((S=t.mintA.programId)!=null?S:Yt),owner:this.scope.ownerPubKey,createInfo:b||!r?{payer:this.scope.ownerPubKey,amount:r?i.sourceAmountSwapped:0}:void 0,notUseTokenAccount:b,skipCloseAccount:!b,associatedOnly:b?!1:d,checkCreateATAOwner:m});P&&p.addInstruction(P);let{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:f,tokenProgram:new Q((x=t.mintB.programId)!=null?x:Yt),owner:this.scope.ownerPubKey,createInfo:g||r?{payer:this.scope.ownerPubKey,amount:r?0:i.sourceAmountSwapped}:void 0,notUseTokenAccount:g,skipCloseAccount:!g,associatedOnly:g?!1:d,checkCreateATAOwner:m});B&&p.addInstruction(B),!h&&!k&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let T=n!=null?n:await this.getCpmmPoolKeys(t.id);return p.addInstruction({instructions:[r?zr(new Q(t.programId),this.scope.ownerPubKey,new Q(T.authority),new Q(T.config.id),new Q(t.id),h,k,new Q(T.vault.A),new Q(T.vault.B),new Q((R=t.mintA.programId)!=null?R:Yt),new Q((I=t.mintB.programId)!=null?I:Yt),y,f,Xr(new Q(t.programId),new Q(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped):Yr(new Q(t.programId),this.scope.ownerPubKey,new Q(T.authority),new Q(T.config.id),new Q(t.id),k,h,new Q(T.vault.B),new Q(T.vault.A),new Q((N=t.mintB.programId)!=null?N:Yt),new Q((q=t.mintA.programId)!=null?q:Yt),f,y,Xr(new Q(t.programId),new Q(t.id)).publicKey,i.sourceAmountSwapped,i.destinationAmountSwapped)],instructionTypes:[r?v.CpmmSwapBaseIn:v.CpmmSwapBaseOut]}),p.addCustomComputeBudget(c),p.versionBuild({txVersion:u})}computeSwapAmount({pool:e,amountIn:t,outputMint:n,slippage:r}){let i=n.toString()===e.mintB.address,s=Gr.swap(t,i?e.baseReserve:e.quoteReserve,i?e.quoteReserve:e.baseReserve,e.configInfo.tradeFeeRate),a=new V(s.destinationAmountSwapped.toString()).div(s.sourceAmountSwapped.toString()),c=s.destinationAmountSwapped.mul(new Ge((1-r)*1e4)).div(new Ge(1e4));return{allTrade:s.sourceAmountSwapped.eq(t),amountIn:t,amountOut:s.destinationAmountSwapped,minAmountOut:c,executionPrice:a,fee:s.tradeFee,priceImpact:e.poolPrice.sub(a).div(e.poolPrice)}}computePairAmount({poolInfo:e,baseReserve:t,quoteReserve:n,amount:r,slippage:i,epochInfo:s,baseIn:a}){var h,P,k,B,T,S,x,R;let c=1-Number(i.toSignificant())/100,u=new Ge(new V(r).mul(10**e[a?"mintA":"mintB"].decimals).mul(c).toFixed(0)),l=he(u,e[a?"mintA":"mintB"].extensions.feeConfig,s,!1),m=u.sub((h=l.fee)!=null?h:new Ge(0)),d=new Ge(new V(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,V.ROUND_DOWN));this.logDebug("baseReserve:",t.toString(),"quoteReserve:",n.toString()),this.logDebug("tokenIn:",a?e.mintA.symbol:e.mintB.symbol,"amountIn:",u.toString(),"amountInFee:",(k=(P=l.fee)==null?void 0:P.toString())!=null?k:0,"anotherToken:",a?e.mintB.symbol:e.mintA.symbol,"slippage:",`${i.toSignificant()}%`);let p=a?"base":"quote";this.logDebug("input side:",p);let y=m.mul(d).div(p==="base"?t:n),f={amount:Fe,fee:void 0,expirationTime:void 0};if(!m.isZero()){let I=af(y,t,n,d);this.logDebug("lpAmountData:",{amountA:I.amountA.toString(),amountB:I.amountB.toString()}),f=he(I[a?"amountB":"amountA"],e[a?"mintB":"mintA"].extensions.feeConfig,s,!0)}let b=new ve(new Ge(1)).add(i),g=he(b.mul(f.amount.sub((B=f.fee)!=null?B:new Ge(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,s,!0);return this.logDebug("anotherAmount:",f.amount.toString(),"anotherAmountFee:",(S=(T=f.fee)==null?void 0:T.toString())!=null?S:0,"maxAnotherAmount:",g.amount.toString(),"maxAnotherAmountFee:",(R=(x=g.fee)==null?void 0:x.toString())!=null?R:0),{inputAmountFee:l,anotherAmount:f,maxAnotherAmount:g,liquidity:y}}};function af(o,e,t,n){let r=o.mul(e).div(n);!r.isZero()&&!o.mul(e).mod(n).isZero()&&(r=r.add(new Ge(1)));let i=o.mul(t).div(n);return!i.isZero()&&!o.mul(t).mod(n).isZero()&&(i=i.add(new Ge(1))),{amountA:r,amountB:i}}import{PublicKey as Kn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Oe,TOKEN_2022_PROGRAM_ID as vs,createTransferInstruction as Ic}from"@solana/spl-token";import $r from"bn.js";import{TOKEN_PROGRAM_ID as Ns,TOKEN_2022_PROGRAM_ID as uf,ASSOCIATED_TOKEN_PROGRAM_ID as cf}from"@solana/spl-token";import{PublicKey as z,TransactionInstruction as Ms,SystemProgram as _s}from"@solana/web3.js";import Sn from"bn.js";function zx(o,e,t,n,r,i,s,a,c,u,l,m){let d=M([E("instruction"),w("amountIn"),w("amountOut")]),p=[{pubkey:_s.programId,isSigner:!1,isWritable:!1},{pubkey:Ns,isSigner:!1,isWritable:!1},{pubkey:new z(t.programId),isSigner:!1,isWritable:!1},{pubkey:new z(t.id),isSigner:!1,isWritable:!0},{pubkey:new z(n.id),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let f=Ie(t);p.push({pubkey:f.config.id,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(c)?f.vault.A:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.mintA.address.equals(c)?f.vault.B:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},...m.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let f=Ie(t);p.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:new z("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0})}else{let f=Ie(t);p.push({pubkey:f.authority,isSigner:!1,isWritable:!1},{pubkey:f.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:f.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:f.openOrders,isSigner:!1,isWritable:!0},{pubkey:f.vault.A,isSigner:!1,isWritable:!0},{pubkey:f.vault.B,isSigner:!1,isWritable:!0},{pubkey:f.marketId,isSigner:!1,isWritable:!0},{pubkey:f.marketBids,isSigner:!1,isWritable:!0},{pubkey:f.marketAsks,isSigner:!1,isWritable:!0},{pubkey:f.marketEventQueue,isSigner:!1,isWritable:!0},...f.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:f.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:f.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:f.id,isSigner:!1,isWritable:!0},{pubkey:f.id,isSigner:!1,isWritable:!0}])}let y=Buffer.alloc(d.span);return d.encode({instruction:4,amountIn:u,amountOut:l},y),new Ms({keys:p,programId:o,data:y})}function Yx(o,e,t,n,r,i,s,a,c,u){let l=M([E("instruction")]),m=[{pubkey:_s.programId,isSigner:!1,isWritable:!1},{pubkey:Ns,isSigner:!1,isWritable:!1},{pubkey:new z(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new z(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new z(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let p=Ie(n);m.push({pubkey:p.config.id,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(c)?p.vault.A:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.mintA.address.equals(c)?p.vault.B:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},...u.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let p=Ie(n);m.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:new z("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0})}else{let p=Ie(n);m.push({pubkey:p.authority,isSigner:!1,isWritable:!1},{pubkey:p.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:p.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:p.openOrders,isSigner:!1,isWritable:!0},{pubkey:p.vault.A,isSigner:!1,isWritable:!0},{pubkey:p.vault.B,isSigner:!1,isWritable:!0},{pubkey:p.marketId,isSigner:!1,isWritable:!0},{pubkey:p.marketBids,isSigner:!1,isWritable:!0},{pubkey:p.marketAsks,isSigner:!1,isWritable:!0},{pubkey:p.marketEventQueue,isSigner:!1,isWritable:!0},...p.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:p.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:p.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:p.id,isSigner:!1,isWritable:!0},{pubkey:p.id,isSigner:!1,isWritable:!0}])}let d=Buffer.alloc(l.span);return l.encode({instruction:5},d),new Ms({keys:m,programId:o,data:d})}function lf(o,e,t,n,r,i,s,a,c,u,l,m,d,p,y){var T;let f=[],b=[A({pubkey:Ns,isWritable:!1}),A({pubkey:uf,isWritable:!1}),A({pubkey:cf,isWritable:!1}),A({pubkey:_s.programId,isWritable:!1}),A({pubkey:e,isSigner:!0})];b.push(A({pubkey:t})),b.push(A({pubkey:r}));let g=[c,u],h=[l,m],P=[i,s,a];for(let S=0;S<g.length;S++){let x=g[S],R=P[S]===x.mintA.address;if(b.push(A({pubkey:new z(x.programId),isWritable:!1})),S===g.length-1?b.push(A({pubkey:r})):b.push(A({pubkey:n})),b.push(A({pubkey:new z(P[S])})),b.push(A({pubkey:new z(P[S+1])})),x.version===6){let I=h[S];b.push(A({pubkey:new z(I.config.id)})),b.push(A({pubkey:new z(I.id)})),b.push(A({pubkey:new z(R?I.vault.A:I.vault.B)})),b.push(A({pubkey:new z(R?I.vault.B:I.vault.A)})),b.push(A({pubkey:new z(x.observationId)})),b.push(A({pubkey:nr})),b.push(A({pubkey:pt(new z(x.programId),new z(x.id)).publicKey})),f.push(mf(x.sqrtPriceX64.toString(),R));for(let N of(T=y[S])!=null?T:[])b.push(A({pubkey:new z(N)}))}else if(x.version===5){let I=h[S];b.push(A({pubkey:new z(I.id)})),b.push(A({pubkey:new z(I.authority),isWritable:!1})),b.push(A({pubkey:new z(I.marketProgramId)})),b.push(A({pubkey:new z(I.marketAuthority)})),b.push(A({pubkey:va,isWritable:!1})),b.push(A({pubkey:new z(I.openOrders)})),b.push(A({pubkey:new z(I.vault.A)})),b.push(A({pubkey:new z(I.vault.B)})),b.push(A({pubkey:new z(I.id)})),b.push(A({pubkey:new z(I.id)})),b.push(A({pubkey:new z(I.id)})),b.push(A({pubkey:new z(I.id)})),b.push(A({pubkey:new z(I.id)})),b.push(A({pubkey:new z(I.id)})),b.push(A({pubkey:new z(I.marketId)})),b.push(A({pubkey:new z(I.marketBids)})),b.push(A({pubkey:new z(I.marketAsks)})),b.push(A({pubkey:new z(I.marketEventQueue)})),b.push(A({pubkey:new z(I.marketBaseVault)})),b.push(A({pubkey:new z(I.marketQuoteVault)}))}else if(x.version===4){let I=h[S],N=x.status!==1;b.push(A({pubkey:new z(I.id)})),b.push(A({pubkey:new z(I.authority),isWritable:!1})),b.push(A({pubkey:new z(N?I.id:I.marketProgramId)})),b.push(A({pubkey:new z(N?I.id:I.marketAuthority)})),b.push(A({pubkey:new z(N?I.id:I.openOrders)})),b.push(A({pubkey:new z(I.vault.A)})),b.push(A({pubkey:new z(I.vault.B)})),b.push(A({pubkey:new z(N?I.id:I.marketId)})),b.push(A({pubkey:new z(N?I.id:I.marketBids)})),b.push(A({pubkey:new z(N?I.id:I.marketAsks)})),b.push(A({pubkey:new z(N?I.id:I.marketEventQueue)})),b.push(A({pubkey:new z(N?I.id:I.marketBaseVault)})),b.push(A({pubkey:new z(N?I.id:I.marketQuoteVault)}))}else if(x.version===7){let I=h[S];b.push(A({pubkey:new z(I.authority)})),b.push(A({pubkey:new z(I.config.id)})),b.push(A({pubkey:new z(I.id)})),b.push(A({pubkey:new z(R?I.vault.A:I.vault.B)})),b.push(A({pubkey:new z(R?I.vault.B:I.vault.A)})),b.push(A({pubkey:new z(x.observationId)}))}else throw Error("pool type error")}let k=M([E("insId"),w("amountIn"),w("amountOut"),X(j(),f.length,"clmmPriceLimit")]),B=Buffer.alloc(k.span);return k.encode({insId:0,amountIn:d,amountOut:p,clmmPriceLimit:f},B),new Ms({keys:b,programId:o,data:B})}function mf(o,e){if(o)if(e){let t=new Sn(o).div(new Sn(25));return t.gt(_r)?t:_r}else{let t=new Sn(o).mul(new Sn(25));return t.lt(Vr)?t:Vr}else return e?_r:Vr}function wc({routeProgram:o,ownerInfo:e,inputMint:t,swapInfo:n}){var r,i,s,a,c,u,l;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let m=n.poolKey[0],d=Ie(m),p=t.equals(d.mintA.address)?_t.add(ft):Vt.sub(ft);return Se.makeSwapBaseInInstructions({poolInfo:m,poolKeys:m,observationId:n.poolInfo[0].observationId,ownerInfo:{wallet:e.wallet,tokenAccountA:d.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:d.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((i=(r=n.minAmountOut.fee)==null?void 0:r.raw)!=null?i:new Sn(0)),sqrtPriceLimitX64:p,remainingAccounts:(s=n.remainingAccounts[0])!=null?s:[]})}else if(n.poolInfo[0].version===7){let m=n.poolInfo[0],d=t.toString()===n.poolInfo[0].mintA.address;return{signers:[],instructions:[d?zr(m.programId,e.wallet,m.authority,m.configId,m.id,e.sourceToken,e.destinationToken,m.vaultA,m.vaultB,m.mintProgramA,m.mintProgramA,new z(m.mintA.address),new z(m.mintB.address),m.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw):Yr(m.programId,e.wallet,m.authority,m.configId,m.id,e.destinationToken,e.sourceToken,m.vaultB,m.vaultA,m.mintProgramB,m.mintProgramA,new z(m.mintB.address),new z(m.mintA.address),m.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw)],lookupTableAddress:[],instructionTypes:[d?v.CpmmSwapBaseIn:v.CpmmSwapBaseOut],address:{}}}else{let m=n.poolKey[0];return{signers:[],instructions:[Lr({poolKeys:m,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((c=(a=n.minAmountOut.fee)==null?void 0:a.raw)!=null?c:new Sn(0)),fixedSide:"in"})],lookupTableAddress:m.lookupTableAccount?[m.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?v.AmmV5SwapBaseIn:v.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let m=n.poolInfo[0],d=n.poolInfo[1],p=n.poolKey[0],y=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[lf(o,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),n.outputMint.toString(),m,d,p,y,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((l=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?l:new Sn(0)),n.remainingAccounts)],instructionTypes:[v.RouteSwap],lookupTableAddress:[p.lookupTableAccount,y.lookupTableAccount].filter(f=>f!==void 0),address:{}}}else throw Error("route type error")}var Pc={[br.toBase58()]:3},hc={3:br};var Vs=M([be(5),be(8),K("ownAddress"),w("vaultSignerNonce"),K("baseMint"),K("quoteMint"),K("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),K("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),K("requestQueue"),K("eventQueue"),K("bids"),K("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),be(7)]),kc={3:Vs};import{PublicKey as Tc}from"@solana/web3.js";var Hr=ce("Serum"),Zr=class{static getProgramId(e){let t=hc[e];return t||Hr.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=Pc[t];return n||Hr.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=kc[e];return t||Hr.logWithError(!!t,"invalid version","version",e),t}static getLayouts(e){return{state:this.getStateLayout(e)}}static getAssociatedAuthority({programId:e,marketId:t}){let n=[t.toBuffer()],r=0,i;for(;r<100;){try{let s=n.concat(Buffer.from([r]),Buffer.alloc(7));i=Tc.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;r++;continue}return{publicKey:i,nonce:r}}return Hr.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:Tc.default,nonce:r}}};var Qt=new $r(0),Do=class extends xe{constructor(e){super(e)}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals($));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n,txVersion:r=1}=e,i=await this.getWSolAccounts(),s=this.createTxBuilder();s.addCustomComputeBudget(e.computeBudgetConfig);let a=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:0});s.addInstruction(a);let c=Y(t);for(let u=0;u<i.length;u++)c.gte(i[u].amount)?(s.addInstruction({instructions:[Mt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),c.sub(i[u].amount)):(s.addInstruction({instructions:[Mt({tokenAccount:i[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),po({destination:a.addresses.newAccount,source:i[u].publicKey,amount:c,owner:this.scope.ownerPubKey,tokenProgram:n}));return s.versionBuild({txVersion:r})}async wrapWSol(e,t,n){let r=await this.getWSolAccounts(),i=this.createTxBuilder(),s=await Ut({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return i.addInstruction(s),r.length&&i.addInstruction({instructions:[po({destination:r[0].publicKey,source:s.addresses.newAccount,amount:e,owner:this.scope.ownerPubKey,tokenProgram:t})],endInstructions:[Mt({tokenAccount:s.addresses.newAccount,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:t})]}),i.versionBuild({txVersion:n!=null?n:1})}async swap({swapInfo:e,swapPoolKeys:t,ownerInfo:n,computeBudgetConfig:r,routeProgram:i,txVersion:s}){let a=this.createTxBuilder(),c=e.amountIn,u=e.amountOut,l=c.amount.token.mint.equals($),m=u.amount.token.mint.equals($),d=c.amount.token.mint,p=u.amount.token.mint,{account:y,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:c.amount.token.isToken2022?vs:Oe,mint:d,notUseTokenAccount:l,owner:this.scope.ownerPubKey,skipCloseAccount:!l,createInfo:l?{payer:this.scope.ownerPubKey,amount:c.amount.raw}:void 0,associatedOnly:l?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});if(f&&a.addInstruction(f),y===void 0)throw Error("input account check error");let b=this.scope.account.getAssociatedTokenAccount(p,u.amount.token.isToken2022?vs:Oe);m&&a.addInstruction({endInstructions:[Mt({owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,tokenAccount:b,programId:Oe})],endInstructionTypes:[v.CloseAccount]});let g;if(e.routeType==="route"){let k=e.middleToken;g=this.scope.account.getAssociatedTokenAccount(k.mint,k.isToken2022?vs:Oe)}let h=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),P=wc({routeProgram:i,inputMint:d,swapInfo:F(C({},e),{poolInfo:[...e.poolInfoList],poolKey:h,outputMint:p}),ownerInfo:{wallet:this.scope.ownerPubKey,sourceToken:y,routeToken:g,destinationToken:b}});if(e.feeConfig!==void 0){let k=this.createTxBuilder();k.addInstruction({instructions:[Ic(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[v.TransferAmount]}),k.addInstruction(P);let{transactions:B}=s===0?await k.sizeCheckBuildV0():await k.sizeCheckBuild();B.length<2&&a.addInstruction({instructions:[Ic(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[v.TransferAmount]})}return a.addInstruction(P),s===0?a.sizeCheckBuildV0({computeBudgetConfig:r,address:P.address}):a.sizeCheckBuild({computeBudgetConfig:r,address:P.address})}async fetchRoutePoolBasicInfo(e){let{amm:t=Ci,clmm:n=Ri,cpmm:r=Li}=e||{},i=await this.scope.connection.getProgramAccounts(t,{dataSlice:{offset:xo.offsetOf("baseMint"),length:64}}),s=M([K("baseMint"),K("quoteMint")]),a=i.map(p=>({id:p.pubkey,version:4,mintA:s.decode(p.account.data).baseMint,mintB:s.decode(p.account.data).quoteMint})),c=M([K("mintA"),K("mintB")]),l=(await this.scope.connection.getProgramAccounts(n,{filters:[{dataSize:In.span}],dataSlice:{offset:In.offsetOf("mintA"),length:64}})).map(p=>{let y=c.decode(p.account.data);return{id:p.pubkey,version:6,mintA:y.mintA,mintB:y.mintB}}),d=(await this.scope.connection.getProgramAccounts(r,{dataSlice:{offset:Qr.offsetOf("mintA"),length:64}})).map(p=>{let y=c.decode(p.account.data);return{id:p.pubkey,version:7,mintA:y.mintA,mintB:y.mintB}});return{clmmPools:l,ammPools:a,cpmmPools:d}}getAllRoute({inputMint:e,outputMint:t,clmmPools:n,ammPools:r,cpmmPools:i}){e=e.toString()===Kn.default.toString()?$:e,t=t.toString()===Kn.default.toString()?$:t;let s={},a={},c={},u=[],l={};for(let d of n!=null?n:[]){if((d.mintA.equals(e)&&d.mintB.equals(t)||d.mintA.equals(t)&&d.mintB.equals(e))&&(u.push(d),a[d.id.toString()]=d),d.mintA.equals(e)){let p=d.mintB.toString();l[p]===void 0&&(l[p]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[p].in.push(d)}if(d.mintB.equals(e)){let p=d.mintA.toString();l[p]===void 0&&(l[p]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[p].in.push(d)}if(d.mintA.equals(t)){let p=d.mintB.toString();l[p]===void 0&&(l[p]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[p].out.push(d)}if(d.mintB.equals(t)){let p=d.mintA.toString();l[p]===void 0&&(l[p]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[p].out.push(d)}}let m=[];for(let d of r)(d.mintA.equals(e)&&d.mintB.equals(t)||d.mintA.equals(t)&&d.mintB.equals(e))&&(u.push(d),s[d.id.toBase58()]=d,m.push(d)),d.mintA.equals(e)&&(l[d.mintB.toBase58()]===void 0&&(l[d.mintB.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[d.mintB.toBase58()].in.push(d)),d.mintB.equals(e)&&(l[d.mintA.toBase58()]===void 0&&(l[d.mintA.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[d.mintA.toBase58()].in.push(d)),d.mintA.equals(t)&&(l[d.mintB.toBase58()]===void 0&&(l[d.mintB.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[d.mintB.toBase58()].out.push(d)),d.mintB.equals(t)&&(l[d.mintA.toBase58()]===void 0&&(l[d.mintA.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[d.mintA.toBase58()].out.push(d));for(let d of i)(d.mintA.equals(e)&&d.mintB.equals(t)||d.mintA.equals(t)&&d.mintB.equals(e))&&(u.push(d),c[d.id.toBase58()]=d),d.mintA.equals(e)&&(l[d.mintB.toBase58()]===void 0&&(l[d.mintB.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[d.mintB.toBase58()].in.push(d)),d.mintB.equals(e)&&(l[d.mintA.toBase58()]===void 0&&(l[d.mintA.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[d.mintA.toBase58()].in.push(d)),d.mintA.equals(t)&&(l[d.mintB.toBase58()]===void 0&&(l[d.mintB.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[d.mintB.toBase58()].out.push(d)),d.mintB.equals(t)&&(l[d.mintA.toBase58()]===void 0&&(l[d.mintA.toBase58()]={mintProgram:Oe,in:[],out:[],mDecimals:0}),l[d.mintA.toBase58()].out.push(d));for(let d of Object.keys(l)){if(l[d].in.length===1&&l[d].out.length===1&&l[d].in[0].id.equals(l[d].out[0].id)){delete l[d];continue}if(l[d].in.length===0||l[d].out.length===0){delete l[d];continue}let p=l[d];for(let y of p.in)for(let f of p.out)y.version===6&&a[y.id.toString()]===void 0?a[y.id.toString()]=y:y.version===7&&i[y.id.toString()]===void 0?c[y.id.toString()]=y:(y.version===4||y.version===5)&&s[y.id.toString()]===void 0&&(s[y.id.toString()]=y),f.version===6&&a[f.id.toString()]===void 0?a[f.id.toString()]=f:f.version===7&&i[f.id.toString()]===void 0?c[f.id.toString()]=f:(f.version===4||f.version===5)&&s[f.id.toString()]===void 0&&(s[f.id.toString()]=f)}return{directPath:u,addLiquidityPools:m,routePathDict:l,needSimulate:Object.values(s),needTickArray:Object.values(a),cpmmPoolList:Object.values(c)}}async fetchSwapRoutesData({routes:e,inputMint:t,outputMint:n}){let r=new Set([...e.needTickArray.map(f=>[f.mintA.toBase58(),f.mintB.toBase58()]).flat(),t.toString(),n.toString()]);console.log("fetching amm pools info, total: ",e.needSimulate.length);let i=await this.scope.liquidity.getRpcPoolInfos(e.needSimulate.map(f=>f.id)),s=Dr(i),a={};Object.values(s).forEach(f=>{r.delete(f.mintA.address),a[f.mintA.address]={address:new Kn(f.mintA.address),programId:Oe,mintAuthority:null,supply:BigInt(0),decimals:f.mintA.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0},r.delete(f.mintB.address),a[f.mintB.address]={address:new Kn(f.mintB.address),programId:Oe,mintAuthority:null,supply:BigInt(0),decimals:f.mintB.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}}),console.log("fetching cpmm pools info, total: ",e.cpmmPoolList.length);let c=await this.scope.cpmm.getRpcPoolInfos(e.cpmmPoolList.map(f=>f.id.toBase58()),!0);Object.values(c).forEach(f=>{let[b,g]=[f.mintA.toBase58(),f.mintB.toBase58()];f.mintProgramA.equals(Oe)?(r.delete(b),a[b]={address:f.mintA,programId:f.mintProgramA,mintAuthority:null,supply:BigInt(0),decimals:f.mintDecimalA,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):r.add(b),f.mintProgramB.equals(Oe)?(r.delete(g),a[g]={address:f.mintB,programId:f.mintProgramB,mintAuthority:null,supply:BigInt(0),decimals:f.mintDecimalB,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):r.add(g)}),console.log("fetching mints info, total: ",r.size);let u=await vn({connection:this.scope.connection,mints:Array.from(r).map(f=>new Kn(f))});a=C(C({},a),u);let l=this.scope.cpmm.toComputePoolInfos({pools:c,mintInfos:a});console.log("fetching clmm pools info, total:",e.needTickArray.length);let m=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:e.needTickArray.map(f=>f.id)}),{computeClmmPoolInfo:d,computePoolTickData:p}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:m,mintInfos:a}),y=Object.keys(e.routePathDict).reduce((f,b)=>F(C({},f),{[b]:F(C({},e.routePathDict[b]),{mintProgram:a[b].programId,mDecimals:a[b].decimals,in:e.routePathDict[b].in.map(g=>s[g.id.toBase58()]||d[g.id.toBase58()]||l[g.id.toBase58()]),out:e.routePathDict[b].out.map(g=>s[g.id.toBase58()]||d[g.id.toBase58()]||l[g.id.toBase58()])})}),{});return{mintInfos:a,ammPoolsRpcInfo:i,ammSimulateCache:s,clmmPoolsRpcInfo:m,computeClmmPoolInfo:d,computePoolTickData:p,computeCpmmData:l,routePathDict:y}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:r,simulateCache:i,tickCache:s,slippage:a,chainTime:c,epochInfo:u,feeConfig:l}){var g,h,P,k,B,T,S,x,R;let m=l===void 0?new $r(0):e.raw.mul(new $r(l.feeBps.toNumber())).div(new $r(1e4)),d=e.raw.sub(m),p=new fe(e.token,d),y=l===void 0?void 0:{feeAmount:m,feeAccount:l.feeAccount},f=F(C({},t),{address:mt(t.address).toString()}),b=[];for(let I of n)try{b.push(F(C({},this.computeAmountOut({itemPool:I,tickCache:s,simulateCache:i,chainTime:c,epochInfo:u,slippage:a,outputToken:f,amountIn:p})),{feeConfig:y}))}catch(N){this.logDebug("direct error",I.version,I.id.toString(),N.message)}this.logDebug("direct done");for(let[I,N]of Object.entries(r)){let q={chainId:101,address:I,programId:N.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:N.mDecimals,tags:[],extensions:{}},D=N.in.map(G=>{try{return{pool:G,data:this.computeAmountOut({itemPool:G,tickCache:s,simulateCache:i,chainTime:c,epochInfo:u,slippage:a,outputToken:q,amountIn:p})}}catch(W){this.logDebug("route in error",G.version,G.id.toString(),W.message);return}}).sort((G,W)=>{var mn,jt,Ln,Ft;let ot=G===void 0?Qt:G.data.amountOut.amount.raw.sub((jt=(mn=G.data.amountOut.fee)==null?void 0:mn.raw)!=null?jt:Qt),Rn=W===void 0?Qt:W.data.amountOut.amount.raw.sub((Ft=(Ln=W.data.amountOut.fee)==null?void 0:Ln.raw)!=null?Ft:Qt);return ot.lt(Rn)?1:-1})[0];if(D===void 0)continue;let J=new fe(Rr(q),D.data.amountOut.amount.raw.sub((h=(g=D.data.amountOut.fee)==null?void 0:g.raw)!=null?h:Qt));for(let G of N.out)try{let W=this.computeAmountOut({itemPool:G,tickCache:s,simulateCache:i,chainTime:c,epochInfo:u,slippage:a,outputToken:f,amountIn:J});b.push(F(C({},W),{allTrade:!!(D.data.allTrade&&W.allTrade),amountIn:D.data.amountIn,amountOut:W.amountOut,minAmountOut:W.minAmountOut,currentPrice:void 0,executionPrice:new V(new We({baseToken:D.data.amountIn.amount.token,denominator:D.data.amountIn.amount.raw,quoteToken:W.amountOut.amount.token,numerator:W.amountOut.amount.raw.sub((k=(P=W.amountOut.fee)==null?void 0:P.raw)!=null?k:Qt)}).toFixed()),priceImpact:new V(D.data.priceImpact.add(W.priceImpact).toFixed()),fee:[D.data.fee[0],W.fee[0]],routeType:"route",poolInfoList:[D.pool,G],remainingAccounts:[D.data.remainingAccounts[0],W.remainingAccounts[0]],minMiddleAmountFee:(B=W.amountOut.fee)!=null&&B.raw?new fe(D.data.amountOut.amount.token,((S=(T=D.data.amountOut.fee)==null?void 0:T.raw)!=null?S:Qt).add((R=(x=W.amountOut.fee)==null?void 0:x.raw)!=null?R:Qt)):void 0,middleToken:D.data.amountOut.amount.token,poolReady:D.data.poolReady&&W.poolReady,poolType:[D.data.poolType,W.poolType],feeConfig:y,expirationTime:Ot(D.data.expirationTime,W.expirationTime)}))}catch(W){this.logDebug("route out error",G.version,G.id.toString(),W.message)}}return b.filter(I=>I.allTrade).sort((I,N)=>I.amountOut.amount.raw.sub(N.amountOut.amount.raw).gt(Qt)?-1:1)}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:r,epochInfo:i,slippage:s,outputToken:a,amountIn:c}){if(e.version===6){let{allTrade:u,realAmountIn:l,amountOut:m,minAmountOut:d,expirationTime:p,currentPrice:y,executionPrice:f,priceImpact:b,fee:g,remainingAccounts:h,executionPriceX64:P}=Le.computeAmountOutFormat({poolInfo:e,tickArrayCache:t[e.id.toString()],amountIn:c.raw,tokenOut:a,slippage:s,epochInfo:i,catchLiquidityInsufficient:!0});return{allTrade:u,amountIn:l,amountOut:m,minAmountOut:d,currentPrice:new V(y.toFixed()),executionPrice:new V(f.toFixed()),priceImpact:new V(b.toFixed()),fee:[g],remainingAccounts:[h],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<r,poolType:"CLMM",slippage:s,clmmExPriceX64:[P],expirationTime:Ot(l.expirationTime,p)}}else if(e.version===7){let{allTrade:u,executionPrice:l,amountOut:m,minAmountOut:d,priceImpact:p,fee:y}=this.scope.cpmm.computeSwapAmount({pool:e,outputMint:a.address,amountIn:c.raw,slippage:s});return{allTrade:u,amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:Bo(F(C({},a),{amount:m})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Bo(F(C({},a),{amount:d})),fee:void 0,expirationTime:void 0},currentPrice:e.poolPrice,executionPrice:l,priceImpact:p,fee:[new fe(c.token,y)],remainingAccounts:[],routeType:"amm",poolInfoList:[e],poolReady:e.openTime.toNumber()<r,poolType:"CPMM",slippage:s,clmmExPriceX64:[void 0],expirationTime:void 0}}else{if(![1,6,7].includes(n[e.id.toString()].status))throw Error("swap error");let{amountOut:u,minAmountOut:l,currentPrice:m,executionPrice:d,priceImpact:p,fee:y}=this.scope.liquidity.computeAmountOut({poolInfo:n[e.id.toString()],amountIn:c.raw,mintIn:c.token.mint,mintOut:a.address,slippage:s});return{amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:Bo(F(C({},a),{amount:u})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Bo(F(C({},a),{amount:l})),fee:void 0,expirationTime:void 0},currentPrice:m,executionPrice:d,priceImpact:p,fee:[new fe(c.token,y)],routeType:"amm",poolInfoList:[e],remainingAccounts:[],poolReady:Number(n[e.id].openTime)<r,poolType:e.version===5?"STABLE":void 0,expirationTime:void 0,allTrade:!0,slippage:s,clmmExPriceX64:[void 0]}}}async computePoolToPoolKeys({pools:e,clmmRpcData:t={},ammRpcData:n={}}){let r=new Set(e.filter(u=>u.version===6&&!t[u.id.toString()]).map(u=>u.id.toString()));if(r.size>0){let u=this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(r)});Object.keys(u).forEach(l=>{t[l]=u[l]})}if(new Set(e.filter(u=>u.version===4&&!n[u.id.toString()]).map(u=>u.id.toString())).size>0){let u=this.scope.liquidity.getRpcPoolInfos(Array.from(r));Object.keys(u).forEach(l=>{n[l]=u[l]})}let s=new Set(e.filter(u=>u.version===4).map(u=>u.marketId)),a={};s.size>0&&(await Ee(this.scope.connection,Array.from(s).map(l=>({pubkey:new Kn(l)})))).forEach(l=>{if(!l.accountInfo)return;let m=Vs.decode(l.accountInfo.data);a[l.pubkey.toBase58()]={marketId:l.pubkey.toString(),marketProgramId:l.accountInfo.owner.toString(),marketAuthority:Zr.getAssociatedAuthority({programId:l.accountInfo.owner,marketId:l.pubkey}).publicKey.toString(),marketBaseVault:m.baseVault.toString(),marketQuoteVault:m.quoteVault.toString(),marketBids:m.bids.toString(),marketAsks:m.asks.toString(),marketEventQueue:m.eventQueue.toString()}});let c=[];return e.forEach(u=>{if(u.version===6){let l=t[u.id.toString()],m={programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.startTime),vault:{A:l.vaultA.toBase58(),B:l.vaultB.toBase58()},config:F(C({},u.ammConfig),{id:u.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),rewardInfos:[]};c.push(m)}else if(u.version===4){let l=n[u.id.toString()],m=C({programId:u.programId,id:u.id,mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),vault:{A:l.baseVault.toBase58(),B:l.quoteVault.toBase58()},authority:Rs({programId:new Kn(u.programId)}).publicKey.toString(),openOrders:l.openOrders.toBase58(),targetOrders:l.targetOrders.toBase58(),mintLp:u.lpMint},a[u.marketId]);c.push(m)}else u.version===7&&c.push({programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),authority:jn(u.programId).publicKey.toBase58(),vault:{A:u.vaultA.toBase58(),B:u.vaultB.toBase58()},mintLp:it({address:u.mintLp.toBase58(),programId:Oe.toBase58(),decimals:u.lpDecimals}),config:F(C({id:u.configId.toBase58()},u.configInfo),{protocolFeeRate:u.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:u.configInfo.tradeFeeRate.toNumber(),fundFeeRate:u.configInfo.fundFeeRate.toNumber(),createPoolFee:u.configInfo.createPoolFee.toString()})})}),c}};import{TOKEN_PROGRAM_ID as df}from"@solana/spl-token";import{PublicKey as pf,Transaction as Fs,TransactionInstruction as ff}from"@solana/web3.js";import Bc from"bn.js";var nt=class extends xe{static getPdaPoolId(e,t){return ue([nt.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,r){return ue([nt.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Bc(r).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:r,chainTime:i}){if(n.length===0)return[];let s=n.map(l=>nt.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<nt.VERSION_PROJECT.length;l++)a.push(...s.map(m=>nt.getPdaOwnerId(t,m,r,l).publicKey));let c=await Tt(e,[...s,...a]),u=[];for(let l=0;l<c.length;l++){let m=Math.floor(l/n.length),d=l%n.length,p=s[d],y=a[l],f=c[d],b=c[n.length+l];if(!(f&&b)||f.data.length!==nt.POOL_LAYOUT.span||b.data.length!==nt.OWNER_LAYOUT.span)continue;let g=nt.POOL_LAYOUT.decode(f.data),h=nt.OWNER_LAYOUT.decode(b.data),P=g.openTime.toNumber(),k=g.endTime.toNumber(),B=h.tokenInfo.map(x=>x.debtAmount.gt(new Bc(0))).filter(x=>!x).length!==3,T=i>P&&i<k&&g.status===1,S=B&&T;u.push({programId:t,poolId:p,ammId:g.ammId,ownerAccountId:y,snapshotLpAmount:h.lpAmount,project:nt.VERSION_PROJECT[m],openTime:P,endTime:k,canClaim:S,canClaimErrorType:B?T?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,R)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:h.tokenInfo[R].debtAmount.add(h.tokenInfo[R].claimedAmount)}))})}return u}async makeClaimTransaction({poolInfo:e,ownerInfo:t}){t.wallet||this.scope.checkOwner();let n=this.createTxBuilder(),r=t.wallet||this.scope.ownerPubKey,i=[];for(let c of e.tokenInfo){let{account:u,instructionParams:l}=await this.scope.account.getOrCreateTokenAccount({mint:c.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:c.mintAddress.equals(ye.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!c.mintAddress.equals(ye.WSOL.mint),associatedOnly:c.mintAddress.equals(ye.WSOL.mint)?!1:t.associatedOnly});l&&n.addInstruction(l),i.push(u)}n.addInstruction({instructions:[nt.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:r,ownerPda:e.ownerAccountId,claimAddress:i}})]});let{transaction:s,signers:a}=n.build();return[{transaction:s,signer:a}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t}){let n=this.createTxBuilder(),r=t.wallet||this.scope.ownerPubKey,i={};for(let u of e){let l=[];for(let m of u.tokenInfo){let{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(ye.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!m.mintAddress.equals(ye.WSOL.mint),associatedOnly:m.mintAddress.equals(ye.WSOL.mint)?!1:t.associatedOnly});p&&n.addInstruction(p),d&&(i[m.mintAddress.toString()]=d,l.push(d))}n.addInstruction({instructions:[nt.makeClaimInstruction({programId:u.programId,poolInfo:u,ownerInfo:{wallet:r,ownerPda:u.ownerAccountId,claimAddress:l}})]})}let{transaction:s,signers:a}=n.build(),c=n.allInstructions;return dr(c,[r,...a.map(u=>u.publicKey)])?[{transaction:s,signer:a}]:[{transaction:new Fs().add(...c.slice(0,n.AllTxData.instructions.length-1)),signer:a},{transaction:new Fs().add(...c.slice(n.AllTxData.instructions.length-1)),signer:[]},{transaction:new Fs().add(...n.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let r=M([]),i=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:c})=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:df,isSigner:!1,isWritable:!1}],s=Buffer.alloc(r.span);r.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new ff({keys:i,programId:e,data:a})}},Pt=nt;Pt.CLAIMED_NUM=3,Pt.POOL_LAYOUT=M([be(8),E("bump"),E("status"),w("openTime"),w("endTime"),K("ammId"),X(M([E("mintDecimals"),K("mintAddress"),K("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),nt.CLAIMED_NUM,"tokenInfo"),X(w(),10,"padding")]),Pt.OWNER_LAYOUT=M([be(8),E("bump"),E("version"),K("poolId"),K("owner"),w("lpAmount"),X(M([K("mintAddress"),w("debtAmount"),w("claimedAmount")]),nt.CLAIMED_NUM,"tokenInfo"),X(w(),4,"padding")]),Pt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new pf(e)),Pt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},Pt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as Wo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Rc}from"@solana/spl-token";import qo from"bn.js";import{TransactionInstruction as bf,SYSVAR_RENT_PUBKEY as gf}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as xc}from"@solana/spl-token";import{createInitializeAccountInstruction as Sc}from"@solana/spl-token";import{SystemProgram as Cn,Transaction as Kc}from"@solana/web3.js";function yf(o="accountFlags"){let e=new kr(o);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var Es=M([be(5),yf("accountFlags"),K("ownAddress"),w("vaultSignerNonce"),K("baseMint"),K("quoteMint"),K("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),K("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),K("requestQueue"),K("eventQueue"),K("bids"),K("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),be(7)]);function Af({programId:o,marketInfo:e}){let t=M([E("version"),Ze("instruction"),w("baseLotSize"),w("quoteLotSize"),Nt("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:gf,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),r=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},r),new bf({keys:n,programId:o,data:r})}async function Cc({connection:o,wallet:e,marketInfo:t}){let n=new Kc,r=await o.getMinimumBalanceForRentExemption(165);n.add(Cn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:r,space:165,programId:xc}),Cn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:r,space:165,programId:xc}),Sc(t.baseVault.publicKey,t.baseMint,t.vaultOwner),Sc(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner));let i=new Kc;return i.add(Cn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await o.getMinimumBalanceForRentExemption(Es.span),space:Es.span,programId:t.programId}),Cn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:await o.getMinimumBalanceForRentExemption(5120+12),space:5120+12,programId:t.programId}),Cn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:await o.getMinimumBalanceForRentExemption(262144+12),space:262144+12,programId:t.programId}),Cn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:await o.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),Cn.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:await o.getMinimumBalanceForRentExemption(65536+12),space:65536+12,programId:t.programId}),Af({programId:t.programId,marketInfo:{id:t.id.publicKey,requestQueue:t.requestQueue.publicKey,eventQueue:t.eventQueue.publicKey,bids:t.bids.publicKey,asks:t.asks.publicKey,baseVault:t.baseVault.publicKey,quoteVault:t.quoteVault.publicKey,baseMint:t.baseMint,quoteMint:t.quoteMint,baseLotSize:t.baseLotSize,quoteLotSize:t.quoteLotSize,feeRateBps:t.feeRateBps,vaultSignerNonce:t.vaultSignerNonce,quoteDustThreshold:t.quoteDustThreshold}})),[{transaction:n,signer:[],instructionTypes:[v.CreateAccount,v.CreateAccount,v.InitAccount,v.InitAccount]},{transaction:i,signer:[],instructionTypes:[v.CreateAccount,v.CreateAccount,v.CreateAccount,v.CreateAccount,v.CreateAccount,v.InitMarket]}]}var Hn=class extends xe{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:r,dexProgramId:i,txVersion:s,computeBudgetConfig:a}){let c=this.scope.ownerPubKey,u=$e({fromPublicKey:c,programId:i}),l=$e({fromPublicKey:c,programId:i}),m=$e({fromPublicKey:c,programId:i}),d=$e({fromPublicKey:c,programId:i}),p=$e({fromPublicKey:c,programId:i}),y=$e({fromPublicKey:c,programId:Rc}),f=$e({fromPublicKey:c,programId:Rc}),b=0,g=new qo(100);function h(){let R=new qo(0);for(;;)try{return{vaultOwner:Wo.createProgramAddressSync([u.publicKey.toBuffer(),R.toArrayLike(Buffer,"le",8)],i),vaultSignerNonce:R}}catch{if(R.iaddn(1),R.gt(new qo(25555)))throw Error("find vault owner error")}}let{vaultOwner:P,vaultSignerNonce:k}=h(),B=new qo(Math.round(10**e.decimals*n)),T=new qo(Math.round(n*10**t.decimals*r));if(B.eq(Fe))throw Error("lot size is too small");if(T.eq(Fe))throw Error("tick size or lot size is too small");let S=await Cc({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:i,id:u,baseMint:e.mint,quoteMint:t.mint,baseVault:y,quoteVault:f,vaultOwner:P,requestQueue:l,eventQueue:m,bids:d,asks:p,feeRateBps:b,quoteDustThreshold:g,vaultSignerNonce:k,baseLotSize:B,quoteLotSize:T}}),x=this.createTxBuilder();x.addInstruction({instructions:S[0].transaction.instructions,signers:S[0].signer});for await(let R of S.slice(1,S.length))x.addInstruction({instructions:R.transaction.instructions,signers:R.signer,instructionTypes:R.instructionTypes});return s===0?x.sizeCheckBuildV0({computeBudgetConfig:a,address:{marketId:u.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Wo(e.mint),quoteMin:new Wo(t.mint)}}):x.sizeCheckBuild({computeBudgetConfig:a,address:{marketId:u.publicKey,requestQueue:l.publicKey,eventQueue:m.publicKey,bids:d.publicKey,asks:p.publicKey,baseVault:y.publicKey,quoteVault:f.publicKey,baseMint:new Wo(e.mint),quoteMin:new Wo(t.mint)}})}};import{PublicKey as Go}from"@solana/web3.js";import{TransactionInstruction as Ws,SYSVAR_CLOCK_PUBKEY as wf}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as qs}from"@solana/spl-token";var Ds=M([E("instruction"),Xa("amount")]),Uo=M([E("instruction")]);function RK({programId:o,amount:e,instructionKeys:t}){let n=[{pubkey:rr,isSigner:!1,isWritable:!1},{pubkey:qs,isSigner:!1,isWritable:!1},{pubkey:ut,isSigner:!1,isWritable:!1},{pubkey:fi,isSigner:!1,isWritable:!1},...Object.entries(t).map(([i,s])=>({pubkey:s,isSigner:i==="userOwner",isWritable:!["authority","userOwner","userIdoCheck","userStakeInfo"].includes(i)}))],r=Buffer.alloc(Ds.span);return Ds.encode({instruction:1,amount:Number(e)},r),new Ws({keys:n,programId:o,data:r})}function Jr({programId:o},e){let t=[{pubkey:qs,isSigner:!1,isWritable:!1},{pubkey:fi,isSigner:!1,isWritable:!1},...Object.entries(e).map(([r,i])=>({pubkey:i,isSigner:r==="userOwner",isWritable:!["authority","userOwner"].includes(r)}))],n=Buffer.alloc(Uo.span);return Uo.encode({instruction:2},n),new Ws({keys:t,programId:o,data:n})}function Us(o){let{poolConfig:e,userKeys:t,side:n}=o,r=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,i=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(Uo.span);Uo.encode({instruction:2},s);let a=[{pubkey:qs,isWritable:!1,isSigner:!1},{pubkey:wf,isWritable:!1,isSigner:!1},{pubkey:e.id,isWritable:!0,isSigner:!1},{pubkey:e.authority,isWritable:!1,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:r,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new Ws({programId:e.programId,keys:a,data:s})}import Lc from"bn.js";var Pf={[co.IDO_PROGRAM_ID_V1.toString()]:1,[co.IDO_PROGRAM_ID_V2.toString()]:2,[co.IDO_PROGRAM_ID_V3.toString()]:3,[co.IDO_PROGRAM_ID_V4.toString()]:4},Zn=class extends xe{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:r=!1,txVersion:i}){let s=this.createTxBuilder(),a=Pf[t.programId];a||this.logAndCreateError("invalid version",a);let c=Ie(t),[u,l]=[!new Lc(e.coin).isZero(),!new Lc(e.pc).isZero()],m=c.projectInfo.mint.address.equals($),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:c.projectInfo.mint.programId,mint:c.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!m,notUseTokenAccount:m,associatedOnly:m?!1:n,checkCreateATAOwner:r});!d&&u&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),u&&p&&s.addInstruction(p);let y=c.buyInfo.mint.address.equals($),{account:f,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:c.buyInfo.mint.programId,mint:c.buyInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:n,checkCreateATAOwner:r});if(!d&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&b&&s.addInstruction(b),(!d||!f)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),a===3)return s.addInstruction({instructions:[...u?[Jr({programId:c.programId},{idoId:c.id,authority:c.authority,poolTokenAccount:c.projectInfo.vault,userTokenAccount:d,userIdoInfo:new Go(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...l?[Jr({programId:new Go(t.programId)},{idoId:c.id,authority:c.authority,poolTokenAccount:c.buyInfo.vault,userTokenAccount:f,userIdoInfo:new Go(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:i});if(a<3)return!u&&!l&&this.logAndCreateError("no claimable rewards"),s.addInstruction({instructions:[Jr({programId:c.programId},{idoId:c.id,authority:c.authority,poolQuoteTokenAccount:c.buyInfo.vault,poolBaseTokenAccount:c.projectInfo.vault,userQuoteTokenAccount:f,userBaseTokenAccount:d,userIdoInfo:new Go(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:i});let g={poolConfig:{id:c.id,programId:c.programId,authority:c.authority,baseVault:c.projectInfo.vault,quoteVault:c.buyInfo.vault,baseToken:t.projectInfo.mint,quoteToken:t.buyInfo.mint},userKeys:{baseTokenAccount:d,quoteTokenAccount:f,ledgerAccount:new Go(e.userIdoInfo),owner:this.scope.ownerPubKey}};return s.addInstruction({instructions:[...u?[Us(F(C({},g),{side:"base"}))]:[],...l?[Us(F(C({},g),{side:"quote"}))]:[]]}).versionBuild({txVersion:i})}};import{PublicKey as hf}from"@solana/web3.js";import{MintLayout as kf,TOKEN_2022_PROGRAM_ID as Gs,TOKEN_PROGRAM_ID as Xs}from"@solana/spl-token";var Xo=class extends xe{constructor(t){super(t);this._tokenList=[];this._tokenMap=new Map;this._blackTokenMap=new Map;this._mintGroup={official:new Set,jup:new Set,extra:new Set};this._whiteMap=new Set;this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:r="strict"}=t||{},{mintList:i,blacklist:s,whiteList:a}=await this.scope.fetchV3TokenList(n),c=await this.scope.fetchJupTokenList(r,n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Map,this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._whiteMap=new Set(a),this._tokenMap.set(Rt.address,Rt),this._mintGroup.official.add(Rt.address),s.forEach(u=>{this._blackTokenMap.set(u.address,F(C({},u),{priority:-1}))}),i.forEach(u=>{var l;this._blackTokenMap.has(u.address)||(this._tokenMap.set(u.address,F(C({},u),{type:"raydium",priority:2,programId:(l=u.programId)!=null?l:u.tags.includes("token-2022")?Gs.toBase58():Xs.toBase58()})),this._mintGroup.official.add(u.address))}),c.forEach(u=>{var l;this._blackTokenMap.has(u.address)||this._tokenMap.has(u.address)||(this._tokenMap.set(u.address,F(C({},u),{type:"jupiter",priority:1,programId:(l=u.programId)!=null?l:u.tags.includes("token-2022")?Gs.toBase58():Xs.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,F(C({},u),{type:"extra",priority:1,programId:u.programId||u.tags.includes("token-2022")?Gs.toBase58():Xs.toBase58()})),this._mintGroup.extra.add(u.address))}),this._tokenList=Array.from(this._tokenMap).map(u=>u[1])}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}get whiteListMap(){return this._whiteMap}async getTokenInfo(t){if(!t)throw new Error("please input mint");let n=t.toString(),r=this._tokenMap.get(n);if(r)return r;if(n.toLocaleUpperCase()==="SOL")return Rt;let i=(await this.scope.api.getTokenInfo([n]))[0];if(i)return this._mintGroup.extra.add(n),this._tokenMap.set(n,F(C({},i),{priority:2})),i;let s=await this.scope.connection.getAccountInfo(new hf(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=kf.decode(s.data),c=n.toString().substring(0,6),u={chainId:101,address:n,programId:s.owner.toBase58(),logoURI:"",symbol:c,name:c,decimals:a.decimals,tags:[],extensions:{},priority:0,type:"unknown"};return this._mintGroup.extra.add(n),this._tokenMap.set(n,u),u}};var ei=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:r,api:i,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:c,blockhashCommitment:u="confirmed"}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=r?new It(r):void 0,this._signAllTransactions=e.signAllTransactions,this.blockhashCommitment=u,this.api=i,this._apiCacheTime=c||5*60*1e3,this.logger=ce("Raydium"),this.farm=new Io({scope:this,moduleName:"Raydium_Farm"}),this.account=new fo({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new Mo({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new Xo({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new Do({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new _o({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new Eo({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new Pt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new Hn({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new Zn({scope:this,moduleName:"Raydium_ido"}),this.availability={};let l=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:l,value:{chainTime:s||Date.now()-a,offset:a}})}static async load(e){var l;let t=Tf({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:r,logCount:i,logRequests:s,urlConfigs:a}=t,c=new wr({cluster:n,timeout:r,urlConfigs:a,logCount:i,logRequests:s}),u=new ei(F(C({},t),{api:c}));return await u.fetchAvailabilityStatus((l=e.disableFeatureCheck)!=null?l:!0),e.disableLoadToken||await u.token.load({type:e.jupTokenType}),u}get owner(){return this._owner}get ownerPubKey(){if(!this._owner)throw new Error(Pr);return this._owner.publicKey}setOwner(e){return this._owner=e?new It(e):void 0,this}get connection(){if(!this._connection)throw new Error(Wa);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(Pr),new Error(Pr)}isCacheInvalidate(e){return new Date().getTime()-e>this._apiCacheTime}async fetchChainTime(){try{let e=await this.api.getChainTimeOffset();this._chainTime={fetched:Date.now(),value:{chainTime:Date.now()+e.offset*1e3,offset:e.offset*1e3}}}catch{this._chainTime=void 0}}async fetchV3TokenList(e){if(this.apiData.tokenList&&!this.isCacheInvalidate(this.apiData.tokenList.fetched)&&!e)return this.apiData.tokenList.data;let t=await this.api.getTokenList(),n={fetched:Date.now(),data:t};return this.apiData.tokenList=n,n.data}async fetchJupTokenList(e,t){var i;let n=(i=this.apiData.jupTokenList)==null?void 0:i[e];if(n&&!this.isCacheInvalidate(n.fetched)&&!t)return n.data;let r=await this.api.getJupTokenList(e);return this.apiData.jupTokenList=F(C({},this.apiData.jupTokenList),{[e]:{fetched:Date.now(),data:r}}),this.apiData.jupTokenList[e].data}get chainTimeData(){var e;return(e=this._chainTime)==null?void 0:e.value}async chainTimeOffset(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.offset:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.offset)||0)}async currentBlockChainTime(){var e;return this._chainTime&&Date.now()-this._chainTime.fetched<=1e3*60*5?this._chainTime.value.chainTime:(await this.fetchChainTime(),((e=this._chainTime)==null?void 0:e.value.chainTime)||Date.now())}async fetchEpochInfo(){return this._epochInfo&&Date.now()-this._epochInfo.fetched<=1e3*30?this._epochInfo.value:(this._epochInfo={fetched:Date.now(),value:await this.connection.getEpochInfo()},this._epochInfo.value)}async fetchAvailabilityStatus(e){if(e)return{};try{let t=await this.api.fetchAvailabilityStatus(),n=t.all===!1;return this.availability={all:t.all,swap:n?!1:t.swap,createConcentratedPosition:n?!1:t.createConcentratedPosition,addConcentratedPosition:n?!1:t.addConcentratedPosition,addStandardPosition:n?!1:t.addStandardPosition,removeConcentratedPosition:n?!1:t.removeConcentratedPosition,removeStandardPosition:n?!1:t.removeStandardPosition,addFarm:n?!1:t.addFarm,removeFarm:n?!1:t.removeFarm},t}catch{return{}}}};var O0=o=>o;export{Yb as ACCOUNT_TYPE_SIZE,wg as ALL_PROGRAM_ID,Tp as AMM_CONFIG_SEED,mm as AMM_STABLE,Ci as AMM_V4,Uf as ANAMint,ze as API_URLS,sm as AccountType,wr as Api,qu as BIT_PRECISION,nn as BNDivCeil,gn as BNLayout,Zy as BN_100,$y as BN_1000,Jy as BN_10000,Hy as BN_FIVE,Pa as BN_ONE,pn as BN_TEN,jy as BN_THREE,Qy as BN_TWO,Fe as BN_ZERO,xA as BitStructure,Ga as Blob,Ri as CLMM_PROGRAM_ID,fi as CLOCK_PROGRAM_ID,gm as CREATE_CPMM_POOL_AUTH,Am as CREATE_CPMM_POOL_FEE_ACC,Li as CREATE_CPMM_POOL_PROGRAM,_o as Clmm,Hu as ClmmConfigLayout,Se as ClmmInstrument,Ur as ConstantProductCurve,Ac as CpmmConfigInfoLayout,Wr as CpmmFee,Qr as CpmmPoolInfoLayout,no as Currency,fn as CurrencyAmount,Gr as CurveCalculator,gr as DEVNET_PROGRAM_ID,zg as DEV_API_URLS,Pm as DEV_CREATE_CPMM_POOL_AUTH,hm as DEV_CREATE_CPMM_POOL_FEE_ACC,wm as DEV_CREATE_CPMM_POOL_PROGRAM,up as DataElement,Gf as ETHMint,Ts as EXTENSION_TICKARRAY_BITMAP_SIZE,du as FARM_LOCK_MINT,pu as FARM_LOCK_VAULT,Si as FARM_PROGRAM_ID_V3,Ki as FARM_PROGRAM_ID_V5,Fn as FARM_PROGRAM_ID_V6,bt as FARM_PROGRAM_TO_VERSION,yu as FARM_VERSION_TO_LEDGER_LAYOUT,fu as FARM_VERSION_TO_STATE_LAYOUT,Ag as FEE_DESTINATION_ID,vr as FEE_RATE_DENOMINATOR,Ls as FEE_RATE_DENOMINATOR_VALUE,Lp as FETCH_TICKARRAY_COUNT,Rp as Fee,re as Fraction,co as IDO_ALL_PROGRAM,pm as IDO_PROGRAM_ID_V1,fm as IDO_PROGRAM_ID_V2,ym as IDO_PROGRAM_ID_V3,bm as IDO_PROGRAM_ID_V4,or as INSTRUCTION_PROGRAM_ID,v as InstructionType,Oi as JupTokenType,oc as LIQUIDITY_FEES_DENOMINATOR,nc as LIQUIDITY_FEES_NUMERATOR,va as LIQUIDITY_POOL_PROGRAM_ID_V5_MODEL,Fp as LIQUIDITY_VERSION_TO_SERUM_VERSION,nk as LIQUIDITY_VERSION_TO_STATE_LAYOUT,Uu as LOG_B_2_X32,Gu as LOG_B_P_ERR_MARGIN_LOWER_X64,Xu as LOG_B_P_ERR_MARGIN_UPPER_X64,fr as LOOKUP_TABLE_CACHE,lo as Layout,le as LiquidityMath,vc as LogLevel,oi as Logger,Es as MARKET_STATE_LAYOUT_V2,Vs as MARKET_STATE_LAYOUT_V3,kc as MARKET_VERSION_TO_STATE_LAYOUT,Ka as MAX_BASE64_SIZE,Vt as MAX_SQRT_PRICE_X64,Vr as MAX_SQRT_PRICE_X64_SUB_ONE,st as MAX_TICK,tr as MEMO_PROGRAM_ID,nr as MEMO_PROGRAM_ID2,_n as METADATA_PROGRAM_ID,_t as MIN_SQRT_PRICE_X64,_r as MIN_SQRT_PRICE_X64_ADD_ONE,et as MIN_TICK,Gn as MODEL_DATA_PUBKEY,Zr as Market,ne as MathUtil,ks as MaxU64,Wu as MaxUint128,Xt as NEGATIVE_ONE,qf as NRVMint,ft as ONE,lm as OPEN_BOOK_PROGRAM,Kp as OPERATION_SEED,xs as ObservationInfoLayout,Mp as ObservationLayout,Zu as OperationLayout,Ei as OptionLayout,It as Owner,_f as PAIMint,xp as POOL_REWARD_VAULT_SEED,Ip as POOL_SEED,Cp as POOL_TICK_ARRAY_BITMAP_SEED,Bp as POOL_VAULT_SEED,Fu as POSITION_SEED,ve as Percent,Fa as PoolFetchType,In as PoolInfoLayout,Le as PoolUtils,Fr as PositionInfoLayout,Vp as PositionRewardInfoLayout,Oo as PositionUtils,We as Price,DT as ProtocolPositionLayout,Mr as Q128,yt as Q64,Mf as RAYMint,ut as RENT_PROGRAM_ID,ei as Raydium,_p as RewardInfo,mc as RoundDirection,Ai as Rounding,dm as Router,Pc as SERUM_PROGRAMID_TO_VERSION,br as SERUM_PROGRAM_ID_V3,hc as SERUM_VERSION_TO_PROGRAMID,Ea as SESSION_KEY,_e as SOLMint,Rt as SOL_INFO,Rh as SPL_MINT_LAYOUT,Vf as SRMMint,Ni as STORAGE_KEY,rr as SYSTEM_PROGRAM_ID,te as SqrtPriceMath,Un as StableLayout,Di as Structure,Tn as SwapMath,kn as TICK_ARRAY_BITMAP_SIZE,Sp as TICK_ARRAY_SEED,De as TICK_ARRAY_SIZE,Ck as TICK_SPACINGS,Ve as TOKEN_WSOL,zt as TickArrayBitmap,ju as TickArrayBitmapExtensionLayout,Lo as TickArrayBitmapExtensionUtils,Ro as TickArrayLayout,vp as TickLayout,Bn as TickMath,me as TickQuery,H as TickUtils,ye as Token,fe as TokenAmount,yr as TxBuilder,yn as TxVersion,Co as U64Resolution,Lk as U64_IGNORE_RANGE,Vi as UInt,vf as USDCMint,Wf as USDHMint,Ff as USDTMint,cm as UTIL1216,Wi as Union,lu as Voter,Ud as VoterDepositEntry,qd as VoterLockup,cu as VoterRegistrar,Wd as VoterVotingMintConfig,$ as WSOLMint,kr as WideBits,qt as WrappedLayout,pe as ZERO,ba as _100_PERCENT,A as accountMeta,_y as add,mr as addComputeBudget,ys as addLiquidityLayout,mw as array,ji as associatedLedgerAccountLayout,vi as bits,be as blob,Qe as bool,us as calFarmRewardAmount,Xp as ceilDiv,oo as checkLegacyTxSize,ro as checkV0TxSize,Ii as chunkArray,Uo as claimLayout,Qu as clmmComputeInfoToApiInfo,Mt as closeAccountInstruction,mi as commonSystemAccountMeta,Cr as createAssociatedLedgerAccountInstruction,ce as createLogger,Iu as createPoolFeeLayout,Nu as createPoolV4InstructionV2,tk as createPoolV4Layout,Ut as createWSolAccountInstructions,ew as cstr,wy as currencyEquals,zl as decimalToFraction,gd as decodeBool,Ly as div,ar as divCeil,rt as dwLayout,Ad as encodeBool,dA as endlessRetry,Ul as eq,jA as f32,HA as f32be,ZA as f64,$A as f64be,Ji as farmAddRewardLayout,bP as farmLedgerLayoutV3_1,bo as farmLedgerLayoutV3_2,gP as farmLedgerLayoutV5_1,au as farmLedgerLayoutV5_2,uu as farmLedgerLayoutV6_1,gu as farmRewardInfoToConfig,Zi as farmRewardLayout,$i as farmRewardRestartLayout,Dd as farmRewardTimeInfoLayout,iu as farmStateV3Layout,su as farmStateV5Layout,yo as farmStateV6Layout,DP as fetchMultipleFarmInfoAndUpdate,AI as fetchMultipleInfo,vn as fetchMultipleMintInfos,ue as findProgramAddress,ds as fixedSwapInLayout,ps as fixedSwapOutLayout,cc as floorDiv,dr as forecastTransactionSize,Ap as formatLayout,$e as generatePubKey,ge as getATAAddress,bu as getAssociatedAuthority,Er as getAssociatedConfigId,Je as getAssociatedLedgerAccount,Ao as getAssociatedLedgerPoolAccount,Up as getAssociatedOpenOrders,ic as getAssociatedPoolKeys,Jp as getCpmmPdaAmmConfigId,ef as getCpmmPdaPoolId,pc as getCreatePoolKeys,Ma as getDate,cs as getDepositEntryIndex,Ku as getDxByDyBaseIn,Su as getDyByDxBaseIn,Fb as getEpochInfo,qn as getFarmLedgerLayout,Gd as getFarmStateLayout,Rs as getLiquidityAssociatedAuthority,xn as getLiquidityAssociatedId,bT as getLiquidityFromAmounts,My as getMax,Tt as getMultipleAccountsInfo,Ee as getMultipleAccountsInfoWithCustomFlags,Bi as getMultipleLookupTableInfo,xk as getPdaAmmConfigId,pt as getPdaExBitmapAccount,tf as getPdaLpMint,Nr as getPdaMetadataKey,Xr as getPdaObservationId,Ko as getPdaOperationAccount,gt as getPdaPersonalPositionAddress,jn as getPdaPoolAuthority,Eu as getPdaPoolId,Du as getPdaPoolRewardVaulId,hs as getPdaPoolVaultId,hn as getPdaProtocolPositionAddress,we as getPdaTickArrayAddress,dc as getPdaVault,Vn as getRecentBlockHash,ns as getRegistrarAddress,Im as getSessionKey,Cu as getStablePrice,um as getTime,xb as getTimestamp,as as getTokenOwnerRecordAddress,xg as getTransferAmountFee,he as getTransferAmountFeeV2,is as getVoterAddress,ss as getVoterWeightRecordAddress,rs as getVotingMintAuthority,os as getVotingTokenMint,Jd as governanceCreateTokenOwnerRecord,SA as greedy,ql as gt,Ry as gte,Za as i128,hk as i16ToBytes,Or as i32ToBytes,Tr as i64,Ha as i8,fs as initPoolLayout,Yi as initTokenAccountInstruction,Af as initializeMarket,mg as intersection,Va as isDateAfter,_a as isDateBefore,Yl as isDecimal,Ny as isMeaningfulNumber,Na as isNumber,es as isValidFarmVersion,So as isZero,Ie as jsonInfo2PoolKeys,WP as judgeFarmType,ws as leadingZeros,vu as leastSignificantBit,xo as liquidityStateV4Layout,sp as liquidityStateV5Layout,Ky as lt,Cy as lte,Ef as mSOLMint,Lr as makeAMMSwapInstruction,Ou as makeAddLiquidityInstruction,ms as makeAddNewRewardInstruction,Jr as makeClaimInstruction,Us as makeClaimInstructionV4,yc as makeCreateCpmmPoolInInstruction,Au as makeCreateFarmInstruction,Cc as makeCreateMarketInstruction,wu as makeCreatorWithdrawFarmRewardInstruction,bc as makeDepositCpmmInInstruction,Pu as makeDepositInstructionV3,hu as makeDepositInstructionV5,ku as makeDepositInstructionV6,rh as makeDepositTokenInstruction,sh as makeDepositWithdrawInstruction,wk as makeInitPoolInstructionV4,RK as makePurchaseInstruction,ls as makeRestartRewardInstruction,Mu as makeSimulatePoolInfoInstruction,zr as makeSwapCpmmBaseInInInstruction,Yr as makeSwapCpmmBaseOutInInstruction,hp as makeSwapFixedInInstruction,kp as makeSwapFixedOutInstruction,wc as makeSwapInstruction,po as makeTransferInstruction,gc as makeWithdrawCpmmInInstruction,To as makeWithdrawInstructionV3,ko as makeWithdrawInstructionV5,ho as makeWithdrawInstructionV6,ih as makeWithdrawTokenInstruction,Ot as minExpirationTime,Rk as mockCreatePoolInfo,zu as mockV3CreatePoolInfo,cp as modelDataInfoLayout,Vu as mostSignificantBit,hi as mul,ki as notInnerObject,qA as ns64,QA as ns64be,Xa as nu64,VA as nu64be,Fi as offset,yg as offsetDateTime,sw as option,Y as parseBigNumberish,dn as parseNumberInfo,Ra as parseSimulateLogToJson,Wt as parseSimulateValue,ru as parseTokenAccountResp,Dh as parseTokenInfo,un as poolTypeV6,bn as printSimulate,K as publicKey,Ds as purchaseLayout,vd as realFarmStateV3Layout,Fd as realFarmStateV5Layout,Ed as realFarmV6Layout,wa as recursivelyDecimalToFraction,As as removeLiquidityInstruction,bs as removeLiquidityLayout,zx as route1Instruction,Yx as route2Instruction,lf as routeInstruction,lw as rustEnum,FA as s16,UA as s16be,EA as s24,GA as s24be,Ye as s32,XA as s32be,DA as s40,zA as s40be,WA as s48,YA as s48be,vA as s8,X as seq,Kf as setLoggerLevel,Gl as shakeFractionDecimal,Ca as simulateMultipleInstruction,Ak as simulatePoolInfoInstruction,em as simulateTransaction,Ta as sleep,mt as solToWSol,qh as solToWSolToken,on as splAccountLayout,ka as splitNumber,Df as stSOLMint,cw as str,M as struct,Oy as sub,uw as tagged,wi as tenExponential,Dr as toAmmComputePoolInfo,it as toApiV3Token,Xl as toBN,tm as toBuffer,cn as toFeeConfig,ha as toFraction,Sy as toFractionWithDecimals,eb as toPercent,Rr as toToken,Bo as toTokenAmount,Wh as toTokenInfo,tb as toTokenPrice,nb as toTotalPrice,Aa as toUsdCurrency,Ps as trailingZeros,pi as tryParsePublicKey,j as u128,Nt as u16,_u as u16ToBytes,LA as u16be,KA as u24,OA as u24be,Ze as u32,kk as u32ToBytes,NA as u32be,CA as u40,MA as u40be,RA as u48,_A as u48be,w as u64,E as u8,dw as union,O0 as unionArr,JA as unionLayoutDiscriminator,pg as uniq,Xd as updateFarmPoolInfo,Ar as updateReqHistory,tw as utf8,di as validateAndParsePublicKey,ts as validateFarmRewards,aw as vec,wd as vecU8,tp as voterStakeRegistryCreateDepositEntry,ep as voterStakeRegistryCreateVoter,Hd as voterStakeRegistryDeposit,Zd as voterStakeRegistryUpdateVoterWeightRecord,$d as voterStakeRegistryWithdraw,Uh as wSolToSolToken,Hi as withdrawRewardLayout,dg as xor,pw as zeros};
|
|
2
2
|
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
3
3
|
//# sourceMappingURL=index.mjs.map
|