@raydium-io/raydium-sdk-v2 0.2.6-alpha → 0.2.7-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/{api-c81dd6be.d.ts → api-92e9adc3.d.ts} +3 -3
- package/lib/common/accountInfo.d.ts +1 -1
- package/lib/common/bignumber.d.ts +1 -1
- package/lib/common/constant.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 +5 -5
- 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/cpmm.js +1 -1
- package/lib/raydium/cpmm/cpmm.js.map +1 -1
- package/lib/raydium/cpmm/cpmm.mjs +1 -1
- package/lib/raydium/cpmm/cpmm.mjs.map +1 -1
- package/lib/raydium/cpmm/curve/calculator.d.ts +1 -1
- package/lib/raydium/cpmm/curve/constantProduct.d.ts +1 -1
- package/lib/raydium/cpmm/index.d.ts +1 -1
- package/lib/raydium/cpmm/instruction.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/launchpad/curve/curve.d.ts +1 -1
- package/lib/raydium/launchpad/index.d.ts +3 -3
- package/lib/raydium/launchpad/launchpad.d.ts +3 -3
- package/lib/raydium/launchpad/layout.d.ts +2 -2
- package/lib/raydium/launchpad/pda.d.ts +1 -1
- package/lib/raydium/launchpad/type.d.ts +1 -1
- package/lib/raydium/liquidity/index.d.ts +1 -1
- package/lib/raydium/liquidity/instruction.d.ts +1 -1
- package/lib/raydium/liquidity/liquidity.d.ts +3 -3
- package/lib/raydium/liquidity/type.d.ts +1 -1
- package/lib/raydium/liquidity/utils.d.ts +1 -1
- package/lib/raydium/marketV2/createMarket.d.ts +3 -3
- package/lib/raydium/marketV2/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-0ce2c946.d.ts → raydium-bd752ae1.d.ts} +2 -2
- package/lib/{type-dabc7a99.d.ts → type-f95c297a.d.ts} +1 -1
- package/package.json +1 -1
- package/src/raydium/cpmm/cpmm.ts +70 -65
package/lib/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
var Um=Object.defineProperty,Gm=Object.defineProperties;var Xm=Object.getOwnPropertyDescriptors;var yr=Object.getOwnPropertySymbols;var Hu=Object.prototype.hasOwnProperty,ju=Object.prototype.propertyIsEnumerable;var Yu=(o,e,t)=>e in o?Um(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,M=(o,e)=>{for(var t in e||(e={}))Hu.call(e,t)&&Yu(o,t,e[t]);if(yr)for(var t of yr(e))ju.call(e,t)&&Yu(o,t,e[t]);return o},U=(o,e)=>Gm(o,Xm(e));var ze=(o,e)=>{var t={};for(var n in o)Hu.call(o,n)&&e.indexOf(n)<0&&(t[n]=o[n]);if(o!=null&&yr)for(var n of yr(o))e.indexOf(n)<0&&ju.call(o,n)&&(t[n]=o[n]);return t};import _c from"axios";import{PublicKey as Ju}from"@solana/web3.js";import{get as Os,set as Zu}from"lodash";var zm=(i=>(i[i.Error=0]="Error",i[i.Warning=1]="Warning",i[i.Info=2]="Info",i[i.Debug=3]="Debug",i))(zm||{}),Ms=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 Date.now().toString()}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}},vs={},$u={};function Pe(o){let e=Os(vs,o);if(!e){let t=Os($u,o);e=new Ms({name:o,logLevel:t}),Zu(vs,o,e)}return e}function Wb(o,e){Zu($u,o,e);let t=Os(vs,o);t&&(t.level=e)}import{MINT_SIZE as Qm,TOKEN_PROGRAM_ID as Ym,getTransferFeeConfig as Hm,unpackMint as jm}from"@solana/spl-token";var Fs=Pe("Raydium_accountInfo_util");async function nn(o,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:r=100}=M({batchRequest:!1},t),s=Es(e,r),a=new Array(s.length).fill([]);if(n){let c=s.map(m=>{let d=o._buildArgs([m.map(p=>p.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:d}}),u=Es(c,10);a=(await(await Promise.all(u.map(async m=>await o._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&Fs.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:p,executable:f,lamports:y,owner:b,rentEpoch:g}=d;return p.length!==2&&p[1]!=="base64"&&Fs.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:f,lamports:y,owner:new Ju(b),rentEpoch:g}}return null})))}else try{a=await Promise.all(s.map(c=>o.getMultipleAccountsInfo(c,i)))}catch(c){c instanceof Error&&Fs.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function Fe(o,e,t){let n=await nn(o,e.map(i=>i.pubkey),t);return e.map((i,r)=>U(M({},i),{accountInfo:n[r]}))}var Zm=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",n))(Zm||{}),jb=1;async function Si({connection:o,mints:e,config:t}){var r,s,a;if(e.length===0)return{};let n=await Fe(o,e.map(c=>({pubkey:kt(c)})),t),i={};for(let c of n){if(!c.accountInfo||c.accountInfo.data.length<Qm){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=jm(c.pubkey,c.accountInfo,(r=c.accountInfo)==null?void 0:r.owner);i[c.pubkey.toString()]=U(M({},u),{programId:((s=c.accountInfo)==null?void 0:s.owner)||Ym,feeConfig:(a=Hm(u))!=null?a:void 0})}return i[Ju.default.toBase58()]=i[$.toBase58()],i}import $e from"bn.js";var Ki=9e15,Dn=1e9,_s="0123456789abcdef",gr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Ar="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Vs={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Ki,maxE:Ki,crypto:!1},ic,hn,fe=!0,wr="[DecimalError] ",Vn=wr+"Invalid argument: ",oc=wr+"Precision limit exceeded",rc=wr+"crypto unavailable",sc="[object Decimal]",ht=Math.floor,ut=Math.pow,$m=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Jm=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,ed=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ac=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,rn=1e7,ue=7,td=9007199254740991,nd=gr.length-1,Ds=Ar.length-1,G={toStringTag:sc};G.absoluteValue=G.abs=function(){var o=new this.constructor(this);return o.s<0&&(o.s=1),ie(o)};G.ceil=function(){return ie(new this.constructor(this),this.e+1,2)};G.clampedTo=G.clamp=function(o,e){var t,n=this,i=n.constructor;if(o=new i(o),e=new i(e),!o.s||!e.s)return new i(NaN);if(o.gt(e))throw Error(Vn+e);return t=n.cmp(o),t<0?o:n.cmp(e)>0?e:new i(n)};G.comparedTo=G.cmp=function(o){var e,t,n,i,r=this,s=r.d,a=(o=new r.constructor(o)).d,c=r.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(r.e!==o.e)return r.e>o.e^c<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^c<0?1:-1;return n===i?0:n>i^c<0?1:-1};G.cosine=G.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())+ue,n.rounding=1,t=id(n,dc(n,t)),n.precision=o,n.rounding=e,ie(hn==2||hn==3?t.neg():t,o,e,!0)):new n(1):new n(NaN)};G.cubeRoot=G.cbrt=function(){var o,e,t,n,i,r,s,a,c,u,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(fe=!1,r=l.s*ut(l.s*l,1/3),!r||Math.abs(r)==1/0?(t=At(l.d),o=l.e,(r=(o-t.length+1)%3)&&(t+=r==1||r==-2?"0":"00"),r=ut(t,1/3),o=ht((o+1)/3)-(o%3==(o<0?-1:2)),r==1/0?t="5e"+o:(t=r.toExponential(),t=t.slice(0,t.indexOf("e")+1)+o),n=new m(t),n.s=l.s):n=new m(r.toString()),s=(o=m.precision)+3;;)if(a=n,c=a.times(a).times(a),u=c.plus(l),n=Ee(u.plus(l).times(a),u.plus(c),s+2,1),At(a.d).slice(0,s)===(t=At(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(ie(a,o+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(ie(n,o+1,1),e=!n.times(n).times(n).eq(l));break}return fe=!0,ie(n,o,m.rounding,e)};G.decimalPlaces=G.dp=function(){var o,e=this.d,t=NaN;if(e){if(o=e.length-1,t=(o-ht(this.e/ue))*ue,o=e[o],o)for(;o%10==0;o/=10)t--;t<0&&(t=0)}return t};G.dividedBy=G.div=function(o){return Ee(this,new this.constructor(o))};G.dividedToIntegerBy=G.divToInt=function(o){var e=this,t=e.constructor;return ie(Ee(e,new t(o),0,1,1),t.precision,t.rounding)};G.equals=G.eq=function(o){return this.cmp(o)===0};G.floor=function(){return ie(new this.constructor(this),this.e+1,3)};G.greaterThan=G.gt=function(o){return this.cmp(o)>0};G.greaterThanOrEqualTo=G.gte=function(o){var e=this.cmp(o);return e==1||e===0};G.hyperbolicCosine=G.cosh=function(){var o,e,t,n,i,r=this,s=r.constructor,a=new s(1);if(!r.isFinite())return new s(r.s?1/0:NaN);if(r.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(r.e,r.sd())+4,s.rounding=1,i=r.d.length,i<32?(o=Math.ceil(i/3),e=(1/hr(4,o)).toString()):(o=16,e="2.3283064365386962890625e-10"),r=Ci(s,1,r.times(e),new s(1),!0);for(var c,u=o,l=new s(8);u--;)c=r.times(r),r=a.minus(c.times(l.minus(c.times(l))));return ie(r,s.precision=t,s.rounding=n,!0)};G.hyperbolicSine=G.sinh=function(){var o,e,t,n,i=this,r=i.constructor;if(!i.isFinite()||i.isZero())return new r(i);if(e=r.precision,t=r.rounding,r.precision=e+Math.max(i.e,i.sd())+4,r.rounding=1,n=i.d.length,n<3)i=Ci(r,2,i,i,!0);else{o=1.4*Math.sqrt(n),o=o>16?16:o|0,i=i.times(1/hr(5,o)),i=Ci(r,2,i,i,!0);for(var s,a=new r(5),c=new r(16),u=new r(20);o--;)s=i.times(i),i=i.times(a.plus(s.times(c.times(s).plus(u))))}return r.precision=e,r.rounding=t,ie(i,e,t,!0)};G.hyperbolicTangent=G.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,Ee(t.sinh(),t.cosh(),n.precision=o,n.rounding=e)):new n(t.s)};G.inverseCosine=G.acos=function(){var o,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,r=t.rounding;return n!==-1?n===0?e.isNeg()?on(t,i,r):new t(0):new t(NaN):e.isZero()?on(t,i+4,r).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),o=on(t,i+4,r).times(.5),t.precision=i,t.rounding=r,o.minus(e))};G.inverseHyperbolicCosine=G.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,fe=!1,t=t.times(t).minus(1).sqrt().plus(t),fe=!0,n.precision=o,n.rounding=e,t.ln()):new n(t)};G.inverseHyperbolicSine=G.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,fe=!1,t=t.times(t).plus(1).sqrt().plus(t),fe=!0,n.precision=o,n.rounding=e,t.ln())};G.inverseHyperbolicTangent=G.atanh=function(){var o,e,t,n,i=this,r=i.constructor;return i.isFinite()?i.e>=0?new r(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(o=r.precision,e=r.rounding,n=i.sd(),Math.max(n,o)<2*-i.e-1?ie(new r(i),o,e,!0):(r.precision=t=n-i.e,i=Ee(i.plus(1),new r(1).minus(i),t+o,1),r.precision=o+4,r.rounding=1,i=i.ln(),r.precision=o,r.rounding=e,i.times(.5))):new r(NaN)};G.inverseSine=G.asin=function(){var o,e,t,n,i=this,r=i.constructor;return i.isZero()?new r(i):(e=i.abs().cmp(1),t=r.precision,n=r.rounding,e!==-1?e===0?(o=on(r,t+4,n).times(.5),o.s=i.s,o):new r(NaN):(r.precision=t+6,r.rounding=1,i=i.div(new r(1).minus(i.times(i)).sqrt().plus(1)).atan(),r.precision=t,r.rounding=n,i.times(2)))};G.inverseTangent=G.atan=function(){var o,e,t,n,i,r,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<=Ds)return s=on(l,m+4,d).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(m+4<=Ds)return s=on(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/ue+2|0),o=t;o;--o)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(fe=!1,e=Math.ceil(a/ue),n=1,c=u.times(u),s=new l(u),i=u;o!==-1;)if(i=i.times(c),r=s.minus(i.div(n+=2)),i=i.times(c),s=r.plus(i.div(n+=2)),s.d[e]!==void 0)for(o=e;s.d[o]===r.d[o]&&o--;);return t&&(s=s.times(2<<t-1)),fe=!0,ie(s,l.precision=m,l.rounding=d,!0)};G.isFinite=function(){return!!this.d};G.isInteger=G.isInt=function(){return!!this.d&&ht(this.e/ue)>this.d.length-2};G.isNaN=function(){return!this.s};G.isNegative=G.isNeg=function(){return this.s<0};G.isPositive=G.isPos=function(){return this.s>0};G.isZero=function(){return!!this.d&&this.d[0]===0};G.lessThan=G.lt=function(o){return this.cmp(o)<0};G.lessThanOrEqualTo=G.lte=function(o){return this.cmp(o)<1};G.logarithm=G.log=function(o){var e,t,n,i,r,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)r=!0;else{for(i=t[0];i%10===0;)i/=10;r=i!==1}if(fe=!1,a=m+p,s=_n(u,a),n=e?Pr(l,a+10):_n(o,a),c=Ee(s,n,a,1),so(c.d,i=m,d))do if(a+=10,s=_n(u,a),n=e?Pr(l,a+10):_n(o,a),c=Ee(s,n,a,1),!r){+At(c.d).slice(i+1,i+15)+1==1e14&&(c=ie(c,m+1,0));break}while(so(c.d,i+=10,d));return fe=!0,ie(c,m,d)};G.minus=G.sub=function(o){var e,t,n,i,r,s,a,c,u,l,m,d,p=this,f=p.constructor;if(o=new f(o),!p.d||!o.d)return!p.s||!o.s?o=new f(NaN):p.d?o.s=-o.s:o=new f(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=f.precision,c=f.rounding,!u[0]||!d[0]){if(d[0])o.s=-o.s;else if(u[0])o=new f(p);else return new f(c===3?-0:0);return fe?ie(o,a,c):o}if(t=ht(o.e/ue),l=ht(p.e/ue),u=u.slice(),r=l-t,r){for(m=r<0,m?(e=u,r=-r,s=d.length):(e=d,t=l,s=u.length),n=Math.max(Math.ceil(a/ue),s)+2,r>n&&(r=n,e.length=1),e.reverse(),n=r;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}r=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>r;){if(u[--n]<d[n]){for(i=n;i&&u[--i]===0;)u[i]=rn-1;--u[i],u[n]+=rn}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=kr(u,t),fe?ie(o,a,c):o):new f(c===3?-0:0)};G.modulo=G.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]?ie(new n(t),n.precision,n.rounding):(fe=!1,n.modulo==9?(e=Ee(t,o.abs(),0,3,1),e.s*=o.s):e=Ee(t,o,0,n.modulo,1),e=e.times(o),fe=!0,t.minus(e))};G.naturalExponential=G.exp=function(){return Ws(this)};G.naturalLogarithm=G.ln=function(){return _n(this)};G.negated=G.neg=function(){var o=new this.constructor(this);return o.s=-o.s,ie(o)};G.plus=G.add=function(o){var e,t,n,i,r,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)),fe?ie(o,a,c):o;if(r=ht(m.e/ue),n=ht(o.e/ue),u=u.slice(),i=r-n,i){for(i<0?(t=u,i=-i,s=l.length):(t=l,n=r,s=u.length),r=Math.ceil(a/ue),s=r>s?r+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=u.length,i=l.length,s-i<0&&(i=s,t=l,l=u,u=t),e=0;i;)e=(u[--i]=u[i]+l[i]+e)/rn|0,u[i]%=rn;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return o.d=u,o.e=kr(u,n),fe?ie(o,a,c):o};G.precision=G.sd=function(o){var e,t=this;if(o!==void 0&&o!==!!o&&o!==1&&o!==0)throw Error(Vn+o);return t.d?(e=uc(t.d),o&&t.e+1>e&&(e=t.e+1)):e=NaN,e};G.round=function(){var o=this,e=o.constructor;return ie(new e(o),o.e+1,e.rounding)};G.sine=G.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())+ue,n.rounding=1,t=rd(n,dc(n,t)),n.precision=o,n.rounding=e,ie(hn>2?t.neg():t,o,e,!0)):new n(NaN)};G.squareRoot=G.sqrt=function(){var o,e,t,n,i,r,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(fe=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=At(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=ht((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(r=n,n=r.plus(Ee(s,r,t+2,1)).times(.5),At(r.d).slice(0,t)===(e=At(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(ie(r,c+1,0),r.times(r).eq(s))){n=r;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(ie(n,c+1,1),o=!n.times(n).eq(s));break}return fe=!0,ie(n,c,l.rounding,o)};G.tangent=G.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=Ee(t,new n(1).minus(t.times(t)).sqrt(),o+10,0),n.precision=o,n.rounding=e,ie(hn==2||hn==4?t.neg():t,o,e,!0)):new n(NaN)};G.times=G.mul=function(o){var e,t,n,i,r,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=ht(l.e/ue)+ht(o.e/ue),c=d.length,u=p.length,c<u&&(r=d,d=p,p=r,s=c,c=u,u=s),r=[],s=c+u,n=s;n--;)r.push(0);for(n=u;--n>=0;){for(e=0,i=c+n;i>n;)a=r[i]+p[n]*d[i-n-1]+e,r[i--]=a%rn|0,e=a/rn|0;r[i]=(r[i]+e)%rn|0}for(;!r[--s];)r.pop();return e?++t:r.shift(),o.d=r,o.e=kr(r,t),fe?ie(o,m.precision,m.rounding):o};G.toBinary=function(o,e){return Us(this,2,o,e)};G.toDecimalPlaces=G.toDP=function(o,e){var t=this,n=t.constructor;return t=new n(t),o===void 0?t:(Ot(o,0,Dn),e===void 0?e=n.rounding:Ot(e,0,8),ie(t,o+t.e+1,e))};G.toExponential=function(o,e){var t,n=this,i=n.constructor;return o===void 0?t=yn(n,!0):(Ot(o,0,Dn),e===void 0?e=i.rounding:Ot(e,0,8),n=ie(new i(n),o+1,e),t=yn(n,!0,o+1)),n.isNeg()&&!n.isZero()?"-"+t:t};G.toFixed=function(o,e){var t,n,i=this,r=i.constructor;return o===void 0?t=yn(i):(Ot(o,0,Dn),e===void 0?e=r.rounding:Ot(e,0,8),n=ie(new r(i),o+i.e+1,e),t=yn(n,!1,o+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};G.toFraction=function(o){var e,t,n,i,r,s,a,c,u,l,m,d,p=this,f=p.d,y=p.constructor;if(!f)return new y(p);if(u=t=new y(1),n=c=new y(0),e=new y(n),r=e.e=uc(f)-p.e-1,s=r%ue,e.d[0]=ut(10,s<0?ue+s:s),o==null)o=r>0?e:u;else{if(a=new y(o),!a.isInt()||a.lt(u))throw Error(Vn+a);o=a.gt(e)?r>0?e:u:a}for(fe=!1,a=new y(At(f)),l=y.precision,y.precision=r=f.length*ue*2;m=Ee(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(o)!=1;)t=n,n=i,i=u,u=c.plus(m.times(i)),c=i,i=e,e=a.minus(m.times(i)),a=i;return i=Ee(o.minus(t),n,0,1,1),c=c.plus(i.times(u)),t=t.plus(i.times(n)),c.s=u.s=p.s,d=Ee(u,n,r,1).minus(p).abs().cmp(Ee(c,t,r,1).minus(p).abs())<1?[u,n]:[c,t],y.precision=l,fe=!0,d};G.toHexadecimal=G.toHex=function(o,e){return Us(this,16,o,e)};G.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:Ot(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]?(fe=!1,t=Ee(t,o,0,e,1).times(o),fe=!0,ie(t)):(o.s=t.s,t=o),t};G.toNumber=function(){return+this};G.toOctal=function(o,e){return Us(this,8,o,e)};G.toPower=G.pow=function(o){var e,t,n,i,r,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(ut(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,r=c.rounding,o.eq(1))return ie(a,n,r);if(e=ht(o.e/ue),e>=o.d.length-1&&(t=u<0?-u:u)<=td)return i=cc(c,a,t,n),o.s<0?new c(1).div(i):ie(i,n,r);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=ut(+a,u),e=t==0||!isFinite(t)?ht(u*(Math.log("0."+At(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):(fe=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Ws(o.times(_n(a,n+t)),n),i.d&&(i=ie(i,n+5,1),so(i.d,n,r)&&(e=n+10,i=ie(Ws(o.times(_n(a,e+t)),e),e+5,1),+At(i.d).slice(n+1,n+15)+1==1e14&&(i=ie(i,n+1,0)))),i.s=s,fe=!0,c.rounding=r,ie(i,n,r))};G.toPrecision=function(o,e){var t,n=this,i=n.constructor;return o===void 0?t=yn(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Ot(o,1,Dn),e===void 0?e=i.rounding:Ot(e,0,8),n=ie(new i(n),o,e),t=yn(n,o<=n.e||n.e<=i.toExpNeg,o)),n.isNeg()&&!n.isZero()?"-"+t:t};G.toSignificantDigits=G.toSD=function(o,e){var t=this,n=t.constructor;return o===void 0?(o=n.precision,e=n.rounding):(Ot(o,1,Dn),e===void 0?e=n.rounding:Ot(e,0,8)),ie(new n(t),o,e)};G.toString=function(){var o=this,e=o.constructor,t=yn(o,o.e<=e.toExpNeg||o.e>=e.toExpPos);return o.isNeg()&&!o.isZero()?"-"+t:t};G.truncated=G.trunc=function(){return ie(new this.constructor(this),this.e+1,1)};G.valueOf=G.toJSON=function(){var o=this,e=o.constructor,t=yn(o,o.e<=e.toExpNeg||o.e>=e.toExpPos);return o.isNeg()?"-"+t:t};function At(o){var e,t,n,i=o.length-1,r="",s=o[0];if(i>0){for(r+=s,e=1;e<i;e++)n=o[e]+"",t=ue-n.length,t&&(r+=En(t)),r+=n;s=o[e],n=s+"",t=ue-n.length,t&&(r+=En(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return r+s}function Ot(o,e,t){if(o!==~~o||o<e||o>t)throw Error(Vn+o)}function so(o,e,t,n){var i,r,s,a;for(r=o[0];r>=10;r/=10)--e;return--e<0?(e+=ue,i=0):(i=Math.ceil((e+1)/ue),e%=ue),r=ut(10,ue-e),a=o[i]%r|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==r||t>3&&a+1==r/2)&&(o[i+1]/r/100|0)==ut(10,e-2)-1||(a==r/2||a==0)&&(o[i+1]/r/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==r||!n&&t>3&&a+1==r/2)&&(o[i+1]/r/1e3|0)==ut(10,e-3)-1,s}function br(o,e,t){for(var n,i=[0],r,s=0,a=o.length;s<a;){for(r=i.length;r--;)i[r]*=e;for(i[0]+=_s.indexOf(o.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function id(o,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/hr(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),o.precision+=t,e=Ci(o,1,e.times(i),new o(1));for(var r=t;r--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return o.precision-=t,e}var Ee=function(){function o(n,i,r){var s,a=0,c=n.length;for(n=n.slice();c--;)s=n[c]*i+a,n[c]=s%r|0,a=s/r|0;return a&&n.unshift(a),n}function e(n,i,r,s){var a,c;if(r!=s)c=r>s?1:-1;else for(a=c=0;a<r;a++)if(n[a]!=i[a]){c=n[a]>i[a]?1:-1;break}return c}function t(n,i,r,s){for(var a=0;r--;)n[r]-=a,a=n[r]<i[r]?1:0,n[r]=a*s+n[r]-i[r];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,r,s,a,c){var u,l,m,d,p,f,y,b,g,P,k,B,T,h,S,x,K,I,C,F,v=n.constructor,R=n.s==i.s?1:-1,L=n.d,V=i.d;if(!L||!L[0]||!V||!V[0])return new v(!n.s||!i.s||(L?V&&L[0]==V[0]:!V)?NaN:L&&L[0]==0||!V?R*0:R/0);for(c?(p=1,l=n.e-i.e):(c=rn,p=ue,l=ht(n.e/p)-ht(i.e/p)),C=V.length,K=L.length,g=new v(R),P=g.d=[],m=0;V[m]==(L[m]||0);m++);if(V[m]>(L[m]||0)&&l--,r==null?(h=r=v.precision,s=v.rounding):a?h=r+(n.e-i.e)+1:h=r,h<0)P.push(1),f=!0;else{if(h=h/p+2|0,m=0,C==1){for(d=0,V=V[0],h++;(m<K||d)&&h--;m++)S=d*c+(L[m]||0),P[m]=S/V|0,d=S%V|0;f=d||m<K}else{for(d=c/(V[0]+1)|0,d>1&&(V=o(V,d,c),L=o(L,d,c),C=V.length,K=L.length),x=C,k=L.slice(0,C),B=k.length;B<C;)k[B++]=0;F=V.slice(),F.unshift(0),I=V[0],V[1]>=c/2&&++I;do d=0,u=e(V,k,C,B),u<0?(T=k[0],C!=B&&(T=T*c+(k[1]||0)),d=T/I|0,d>1?(d>=c&&(d=c-1),y=o(V,d,c),b=y.length,B=k.length,u=e(y,k,b,B),u==1&&(d--,t(y,C<b?F:V,b,c))):(d==0&&(u=d=1),y=V.slice()),b=y.length,b<B&&y.unshift(0),t(k,y,B,c),u==-1&&(B=k.length,u=e(V,k,C,B),u<1&&(d++,t(k,C<B?F:V,B,c))),B=k.length):u===0&&(d++,k=[0]),P[m++]=d,u&&k[0]?k[B++]=L[x]||0:(k=[L[x]],B=1);while((x++<K||k[0]!==void 0)&&h--);f=k[0]!==void 0}P[0]||P.shift()}if(p==1)g.e=l,ic=f;else{for(m=1,d=P[0];d>=10;d/=10)m++;g.e=m+l*p-1,ie(g,a?r+g.e+1:r,s,f)}return g}}();function ie(o,e,t,n){var i,r,s,a,c,u,l,m,d,p=o.constructor;e:if(e!=null){if(m=o.d,!m)return o;for(i=1,a=m[0];a>=10;a/=10)i++;if(r=e-i,r<0)r+=ue,s=e,l=m[d=0],c=l/ut(10,i-s-1)%10|0;else if(d=Math.ceil((r+1)/ue),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=c=0,i=1,r%=ue,s=r-ue+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;r%=ue,s=r-ue+i,c=s<0?0:l/ut(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%ut(10,i-s-1)),u=t<4?(c||n)&&(t==0||t==(o.s<0?3:2)):c>5||c==5&&(t==4||n||t==6&&(r>0?s>0?l/ut(10,i-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]=ut(10,(ue-e%ue)%ue),o.e=-e||0):m[0]=o.e=0,o;if(r==0?(m.length=d,a=1,d--):(m.length=d+1,a=ut(10,ue-r),m[d]=s>0?(l/ut(10,i-s)%ut(10,s)|0)*a:0),u)for(;;)if(d==0){for(r=1,s=m[0];s>=10;s/=10)r++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;r!=a&&(o.e++,m[0]==rn&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=rn)break;m[d--]=0,a=1}for(r=m.length;m[--r]===0;)m.pop()}return fe&&(o.e>p.maxE?(o.d=null,o.e=NaN):o.e<p.minE&&(o.e=0,o.d=[0])),o}function yn(o,e,t){if(!o.isFinite())return mc(o);var n,i=o.e,r=At(o.d),s=r.length;return e?(t&&(n=t-s)>0?r=r.charAt(0)+"."+r.slice(1)+En(n):s>1&&(r=r.charAt(0)+"."+r.slice(1)),r=r+(o.e<0?"e":"e+")+o.e):i<0?(r="0."+En(-i-1)+r,t&&(n=t-s)>0&&(r+=En(n))):i>=s?(r+=En(i+1-s),t&&(n=t-i-1)>0&&(r=r+"."+En(n))):((n=i+1)<s&&(r=r.slice(0,n)+"."+r.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(r+="."),r+=En(n))),r}function kr(o,e){var t=o[0];for(e*=ue;t>=10;t/=10)e++;return e}function Pr(o,e,t){if(e>nd)throw fe=!0,t&&(o.precision=t),Error(oc);return ie(new o(gr),e,1,!0)}function on(o,e,t){if(e>Ds)throw Error(oc);return ie(new o(Ar),e,t,!0)}function uc(o){var e=o.length-1,t=e*ue+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 En(o){for(var e="";o--;)e+="0";return e}function cc(o,e,t,n){var i,r=new o(1),s=Math.ceil(n/ue+4);for(fe=!1;;){if(t%2&&(r=r.times(e),tc(r.d,s)&&(i=!0)),t=ht(t/2),t===0){t=r.d.length-1,i&&r.d[t]===0&&++r.d[t];break}e=e.times(e),tc(e.d,s)}return fe=!0,r}function ec(o){return o.d[o.d.length-1]&1}function lc(o,e,t){for(var n,i=new o(e[0]),r=0;++r<e.length;)if(n=new o(e[r]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function Ws(o,e){var t,n,i,r,s,a,c,u=0,l=0,m=0,d=o.constructor,p=d.rounding,f=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?(fe=!1,c=f):c=e,a=new d(.03125);o.e>-2;)o=o.times(a),m+=5;for(n=Math.log(ut(2,m))/Math.LN10*2+5|0,c+=n,t=r=s=new d(1),d.precision=c;;){if(r=ie(r.times(o),c,1),t=t.times(++l),a=s.plus(Ee(r,t,c,1)),At(a.d).slice(0,c)===At(s.d).slice(0,c)){for(i=m;i--;)s=ie(s.times(s),c,1);if(e==null)if(u<3&&so(s.d,c-n,p,u))d.precision=c+=10,t=r=a=new d(1),l=0,u++;else return ie(s,d.precision=f,p,fe=!0);else return d.precision=f,s}s=a}}function _n(o,e){var t,n,i,r,s,a,c,u,l,m,d,p=1,f=10,y=o,b=y.d,g=y.constructor,P=g.rounding,k=g.precision;if(y.s<0||!b||!b[0]||!y.e&&b[0]==1&&b.length==1)return new g(b&&!b[0]?-1/0:y.s!=1?NaN:b?0:y);if(e==null?(fe=!1,l=k):l=e,g.precision=l+=f,t=At(b),n=t.charAt(0),Math.abs(r=y.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)y=y.times(o),t=At(y.d),n=t.charAt(0),p++;r=y.e,n>1?(y=new g("0."+t),r++):y=new g(n+"."+t.slice(1))}else return u=Pr(g,l+2,k).times(r+""),y=_n(new g(n+"."+t.slice(1)),l-f).plus(u),g.precision=k,e==null?ie(y,k,P,fe=!0):y;for(m=y,c=s=y=Ee(y.minus(1),y.plus(1),l,1),d=ie(y.times(y),l,1),i=3;;){if(s=ie(s.times(d),l,1),u=c.plus(Ee(s,new g(i),l,1)),At(u.d).slice(0,l)===At(c.d).slice(0,l))if(c=c.times(2),r!==0&&(c=c.plus(Pr(g,l+2,k).times(r+""))),c=Ee(c,new g(p),l,1),e==null)if(so(c.d,l-f,P,a))g.precision=l+=f,u=s=y=Ee(m.minus(1),m.plus(1),l,1),d=ie(y.times(y),l,1),i=a=1;else return ie(c,g.precision=k,P,fe=!0);else return g.precision=k,c;c=u,i+=2}}function mc(o){return String(o.s*o.s/0)}function qs(o,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,o.e=t=t-n-1,o.d=[],n=(t+1)%ue,t<0&&(n+=ue),n<i){for(n&&o.d.push(+e.slice(0,n)),i-=ue;n<i;)o.d.push(+e.slice(n,n+=ue));e=e.slice(n),n=ue-e.length}else n-=i;for(;n--;)e+="0";o.d.push(+e),fe&&(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 od(o,e){var t,n,i,r,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),ac.test(e))return qs(o,e)}else if(e==="Infinity"||e==="NaN")return+e||(o.s=NaN),o.e=NaN,o.d=null,o;if(Jm.test(e))t=16,e=e.toLowerCase();else if($m.test(e))t=2;else if(ed.test(e))t=8;else throw Error(Vn+e);for(r=e.search(/p/i),r>0?(c=+e.slice(r+1),e=e.substring(2,r)):e=e.slice(2),r=e.indexOf("."),s=r>=0,n=o.constructor,s&&(e=e.replace(".",""),a=e.length,r=a-r,i=cc(n,new n(t),r,r*2)),u=br(e,t,rn),l=u.length-1,r=l;u[r]===0;--r)u.pop();return r<0?new n(o.s*0):(o.e=kr(u,l),o.d=u,fe=!1,s&&(o=Ee(o,i,a*4)),c&&(o=o.times(Math.abs(c)<54?ut(2,c):ao.pow(2,c))),fe=!0,o)}function rd(o,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Ci(o,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/hr(5,t)),e=Ci(o,2,e,e);for(var i,r=new o(5),s=new o(16),a=new o(20);t--;)i=e.times(e),e=e.times(r.plus(i.times(s.times(i).minus(a))));return e}function Ci(o,e,t,n,i){var r,s,a,c,u=1,l=o.precision,m=Math.ceil(l/ue);for(fe=!1,c=t.times(t),a=new o(n);;){if(s=Ee(a.times(c),new o(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=Ee(s.times(c),new o(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(r=m;s.d[r]===a.d[r]&&r--;);if(r==-1)break}r=a,a=n,n=s,s=r,u++}return fe=!0,s.d.length=m+1,s}function hr(o,e){for(var t=o;--e;)t*=o;return t}function dc(o,e){var t,n=e.s<0,i=on(o,o.precision,1),r=i.times(.5);if(e=e.abs(),e.lte(r))return hn=n?4:1,e;if(t=e.divToInt(i),t.isZero())hn=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(r))return hn=ec(t)?n?2:3:n?4:1,e;hn=ec(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Us(o,e,t,n){var i,r,s,a,c,u,l,m,d,p=o.constructor,f=t!==void 0;if(f?(Ot(t,1,Dn),n===void 0?n=p.rounding:Ot(n,0,8)):(t=p.precision,n=p.rounding),!o.isFinite())l=mc(o);else{for(l=yn(o),s=l.indexOf("."),f?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=br(yn(d),10,i),d.e=d.d.length),m=br(l,10,i),r=c=m.length;m[--c]==0;)m.pop();if(!m[0])l=f?"0p+0":"0";else{if(s<0?r--:(o=new p(o),o.d=m,o.e=r,o=Ee(o,d,t,n,0,i),m=o.d,r=o.e,u=ic),s=m[t],a=i/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]>i-1;)m[t]=0,t||(++r,m.unshift(1));for(c=m.length;!m[c-1];--c);for(s=0,l="";s<c;s++)l+=_s.charAt(m[s]);if(f){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(m=br(l,i,e),c=m.length;!m[c-1];--c);for(s=1,l="1.";s<c;s++)l+=_s.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(r<0?"p":"p+")+r}else if(r<0){for(;++r;)l="0"+l;l="0."+l}else if(++r>c)for(r-=c;r--;)l+="0";else r<c&&(l=l.slice(0,r)+"."+l.slice(r))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return o.s<0?"-"+l:l}function tc(o,e){if(o.length>e)return o.length=e,!0}function sd(o){return new this(o).abs()}function ad(o){return new this(o).acos()}function ud(o){return new this(o).acosh()}function cd(o,e){return new this(o).plus(e)}function ld(o){return new this(o).asin()}function md(o){return new this(o).asinh()}function dd(o){return new this(o).atan()}function pd(o){return new this(o).atanh()}function fd(o,e){o=new this(o),e=new this(e);var t,n=this.precision,i=this.rounding,r=n+4;return!o.s||!e.s?t=new this(NaN):!o.d&&!e.d?(t=on(this,r,1).times(e.s>0?.25:.75),t.s=o.s):!e.d||o.isZero()?(t=e.s<0?on(this,n,i):new this(0),t.s=o.s):!o.d||e.isZero()?(t=on(this,r,1).times(.5),t.s=o.s):e.s<0?(this.precision=r,this.rounding=1,t=this.atan(Ee(o,e,r,1)),e=on(this,r,1),this.precision=n,this.rounding=i,t=o.s<0?t.minus(e):t.plus(e)):t=this.atan(Ee(o,e,r,1)),t}function yd(o){return new this(o).cbrt()}function bd(o){return ie(o=new this(o),o.e+1,2)}function gd(o,e,t){return new this(o).clamp(e,t)}function Ad(o){if(!o||typeof o!="object")throw Error(wr+"Object expected");var e,t,n,i=o.defaults===!0,r=["precision",1,Dn,"rounding",0,8,"toExpNeg",-Ki,0,"toExpPos",0,Ki,"maxE",0,Ki,"minE",-Ki,0,"modulo",0,9];for(e=0;e<r.length;e+=3)if(t=r[e],i&&(this[t]=Vs[t]),(n=o[t])!==void 0)if(ht(n)===n&&n>=r[e+1]&&n<=r[e+2])this[t]=n;else throw Error(Vn+t+": "+n);if(t="crypto",i&&(this[t]=Vs[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(rc);else this[t]=!1;else throw Error(Vn+t+": "+n);return this}function Pd(o){return new this(o).cos()}function wd(o){return new this(o).cosh()}function pc(o){var e,t,n;function i(r){var s,a,c,u=this;if(!(u instanceof i))return new i(r);if(u.constructor=i,nc(r)){u.s=r.s,fe?!r.d||r.e>i.maxE?(u.e=NaN,u.d=null):r.e<i.minE?(u.e=0,u.d=[0]):(u.e=r.e,u.d=r.d.slice()):(u.e=r.e,u.d=r.d?r.d.slice():r.d);return}if(c=typeof r,c==="number"){if(r===0){u.s=1/r<0?-1:1,u.e=0,u.d=[0];return}if(r<0?(r=-r,u.s=-1):u.s=1,r===~~r&&r<1e7){for(s=0,a=r;a>=10;a/=10)s++;fe?s>i.maxE?(u.e=NaN,u.d=null):s<i.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[r]):(u.e=s,u.d=[r]);return}else if(r*0!==0){r||(u.s=NaN),u.e=NaN,u.d=null;return}return qs(u,r.toString())}else if(c!=="string")throw Error(Vn+r);return(a=r.charCodeAt(0))===45?(r=r.slice(1),u.s=-1):(a===43&&(r=r.slice(1)),u.s=1),ac.test(r)?qs(u,r):od(u,r)}if(i.prototype=G,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=Ad,i.clone=pc,i.isDecimal=nc,i.abs=sd,i.acos=ad,i.acosh=ud,i.add=cd,i.asin=ld,i.asinh=md,i.atan=dd,i.atanh=pd,i.atan2=fd,i.cbrt=yd,i.ceil=bd,i.clamp=gd,i.cos=Pd,i.cosh=wd,i.div=kd,i.exp=hd,i.floor=Td,i.hypot=Id,i.ln=Bd,i.log=xd,i.log10=Kd,i.log2=Sd,i.max=Cd,i.min=Rd,i.mod=Ld,i.mul=Nd,i.pow=Od,i.random=Md,i.round=vd,i.sign=Fd,i.sin=Ed,i.sinh=_d,i.sqrt=Vd,i.sub=Dd,i.sum=Wd,i.tan=qd,i.tanh=Ud,i.trunc=Gd,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 i.config(o),i}function kd(o,e){return new this(o).div(e)}function hd(o){return new this(o).exp()}function Td(o){return ie(o=new this(o),o.e+1,3)}function Id(){var o,e,t=new this(0);for(fe=!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 fe=!0,new this(1/0);t=e}return fe=!0,t.sqrt()}function nc(o){return o instanceof ao||o&&o.toStringTag===sc||!1}function Bd(o){return new this(o).ln()}function xd(o,e){return new this(o).log(e)}function Sd(o){return new this(o).log(2)}function Kd(o){return new this(o).log(10)}function Cd(){return lc(this,arguments,"lt")}function Rd(){return lc(this,arguments,"gt")}function Ld(o,e){return new this(o).mod(e)}function Nd(o,e){return new this(o).mul(e)}function Od(o,e){return new this(o).pow(e)}function Md(o){var e,t,n,i,r=0,s=new this(1),a=[];if(o===void 0?o=this.precision:Ot(o,1,Dn),n=Math.ceil(o/ue),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));r<n;)i=e[r],i>=429e7?e[r]=crypto.getRandomValues(new Uint32Array(1))[0]:a[r++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);r<n;)i=e[r]+(e[r+1]<<8)+(e[r+2]<<16)+((e[r+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,r):(a.push(i%1e7),r+=4);r=n/4}else throw Error(rc);else for(;r<n;)a[r++]=Math.random()*1e7|0;for(n=a[--r],o%=ue,n&&o&&(i=ut(10,ue-o),a[r]=(n/i|0)*i);a[r]===0;r--)a.pop();if(r<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=ue)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<ue&&(t-=ue-n)}return s.e=t,s.d=a,s}function vd(o){return ie(o=new this(o),o.e+1,this.rounding)}function Fd(o){return o=new this(o),o.d?o.d[0]?o.s:0*o.s:o.s||NaN}function Ed(o){return new this(o).sin()}function _d(o){return new this(o).sinh()}function Vd(o){return new this(o).sqrt()}function Dd(o,e){return new this(o).sub(e)}function Wd(){var o=0,e=arguments,t=new this(e[o]);for(fe=!1;t.s&&++o<e.length;)t=t.plus(e[o]);return fe=!0,ie(t,this.precision,this.rounding)}function qd(o){return new this(o).tan()}function Ud(o){return new this(o).tanh()}function Gd(o){return ie(o=new this(o),o.e+1,1)}G[Symbol.for("nodejs.util.inspect.custom")]=G.toString;G[Symbol.toStringTag]="Decimal";var ao=G.constructor=pc(Vs);gr=new ao(gr);Ar=new ao(Ar);var N=ao;import Zd from"big.js";import Wn from"bn.js";import Xd from"toformat";var zd=Xd,uo=zd;import Ir from"big.js";import Qd from"bn.js";import Yd from"decimal.js-light";import co from"bn.js";var Gs=(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))(Gs||{}),fc=9007199254740991;function ee(o){let e=Pe("Raydium_parseBigNumberish");if(o instanceof co)return o;if(typeof o=="string"){if(o.match(/^-?[0-9]+$/))return new co(o);e.logWithError(`invalid BigNumberish string: ${o}`)}return typeof o=="number"?(o%1&&e.logWithError(`BigNumberish number underflow: ${o}`),(o>=fc||o<=-fc)&&e.logWithError(`BigNumberish number overflow: ${o}`),new co(String(o))):typeof o=="bigint"?new co(o.toString()):(e.error(`invalid BigNumberish value: ${o}`),new co(0))}var Tr=Pe("module/fraction"),Xs=uo(Ir),lo=uo(Yd),Hd={[0]:lo.ROUND_DOWN,[1]:lo.ROUND_HALF_UP,[2]:lo.ROUND_UP},jd={[0]:Ir.roundDown,[1]:Ir.roundHalfUp,[2]:Ir.roundUp},ye=class{constructor(e,t=new Qd(1)){this.numerator=ee(e),this.denominator=ee(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new ye(this.denominator,this.numerator)}add(e){let t=e instanceof ye?e:new ye(ee(e));return this.denominator.eq(t.denominator)?new ye(this.numerator.add(t.numerator),this.denominator):new ye(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof ye?e:new ye(ee(e));return this.denominator.eq(t.denominator)?new ye(this.numerator.sub(t.numerator),this.denominator):new ye(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof ye?e:new ye(ee(e));return new ye(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof ye?e:new ye(ee(e));return new ye(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Tr.logWithError(`${e} is not an integer.`),e<=0&&Tr.logWithError(`${e} is not positive.`),lo.set({precision:e+1,rounding:Hd[n]});let i=new lo(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Tr.logWithError(`${e} is not an integer.`),e<0&&Tr.logWithError(`${e} is negative.`),Xs.DP=e,Xs.RM=jd[n]||1,new Xs(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var $d=Pe("Raydium_amount"),Br=uo(Zd);function yc(o,e){let t="0",n="0";if(o.includes(".")){let i=o.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):$d.logWithError(`invalid number string, num: ${o}`)}else t=o;return[t,n.slice(0,e)||n]}var Ke=class extends ye{constructor(t,n,i=!0,r){let s=new Wn(0),a=ri.pow(new Wn(t.decimals));if(i)s=ee(n);else{let c=new Wn(0),u=new Wn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=yc(n.toString(),t.decimals);c=ee(l),u=ee(m)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=Pe(r||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new Ke(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Ke(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Br.DP=this.token.decimals,new Br(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}},oi=class extends ye{constructor(t,n,i=!0,r){let s=new Wn(0),a=ri.pow(new Wn(t.decimals));if(i)s=ee(n);else{let c=new Wn(0),u=new Wn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=yc(n.toString(),t.decimals);c=ee(l),u=ee(m)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=Pe(r||"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 oi(this.currency,this.raw.add(t.raw))}sub(t){return this.currency.equals(t.currency)||this.logger.logWithError("sub currency not equals"),new oi(this.currency,this.raw.sub(t.raw))}toSignificant(t=this.currency.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.currency.decimals,n,i=0){return t>this.currency.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Br.DP=this.currency.decimals,new Br(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Jd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as bc}from"@solana/spl-token";var bn={chainId:101,address:Jd.default.toBase58(),programId:bc.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},dt={chainId:101,address:"So11111111111111111111111111111111111111112",programId:bc.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};import{PublicKey as js}from"@solana/web3.js";import{PublicKey as Ge,SystemProgram as gc,SYSVAR_RENT_PUBKEY as ep}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as tp}from"@solana/spl-token";function A({pubkey:o,isSigner:e=!1,isWritable:t=!0}){return{pubkey:o,isWritable:t,isSigner:e}}var zs=[A({pubkey:tp,isWritable:!1}),A({pubkey:gc.programId,isWritable:!1}),A({pubkey:ep,isWritable:!1})];function Qs({publicKey:o,transformSol:e}){let t=Ys(o.toString());if(t instanceof Ge)return e&&t.equals(pt)?$:t;if(e&&t.toString()===pt.toBase58())return $;if(typeof t=="string"){if(t===Ge.default.toBase58())return Ge.default;try{return new Ge(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Ys(o){try{return new Ge(o)}catch{return o}}var xr=new Ge("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),gn=new Ge("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),at=new Ge("SysvarRent111111111111111111111111111111111"),Hs=new Ge("SysvarC1ock11111111111111111111111111111111"),sn=new Ge("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Sr=new Ge("Sysvar1nstructions1111111111111111111111111"),Kr=gc.programId,Cg=new Ge("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Rg=new Ge("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Lg=new Ge("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ng=new Ge("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Og=new Ge("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Mg=new Ge("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),vg=new Ge("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Fg=new Ge("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Eg=new Ge("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),_g=new Ge("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Vg=new Ge("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),$=new Ge("So11111111111111111111111111111111111111112"),pt=Ge.default;function kt(o){return Qs({publicKey:o,transformSol:!0})}var Zs=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:r=!1,isToken2022:s=!1}){if(e===pt.toBase58()||e instanceof js&&pt.equals(e)){this.decimals=dt.decimals,this.symbol=dt.symbol,this.name=dt.name,this.mint=new js(dt.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=r?js.default:Qs({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Le=Zs;Le.WSOL=new Zs(U(M({},dt),{mint:dt.address}));var $s=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},mo=$s;mo.SOL=new $s(bn);function Yg(o,e){return o instanceof Le&&e instanceof Le?o.equals(e):o instanceof Le||e instanceof Le?!1:o===e}import np from"bn.js";var Ac=new ye(new np(100)),Ze=class extends ye{toSignificant(e=5,t,n){return this.mul(Ac).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Ac).toFixed(e,t,n)}};var ip=Pe("Raydium_price"),ft=class extends ye{constructor(t){let{baseToken:n,quoteToken:i,numerator:r,denominator:s}=t;super(r,s);this.baseToken=n,this.quoteToken=i,this.scalar=new ye(Js(n.decimals),Js(i.decimals))}get raw(){return new ye(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new ft({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&ip.logWithError("mul token not equals");let n=super.mul(t);return new ft({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};function it(o){if(o instanceof Ze)return new ye(o.numerator,o.denominator);if(o instanceof ft)return o.adjusted;if(o instanceof Ke)try{return it(o.toExact())}catch{return new ye(ot)}if(o instanceof ye)return o;let e=String(o),t=si(e);return new ye(t.numerator,t.denominator)}function yA(o){var n;if(o instanceof Ze)return{fr:new ye(o.numerator,o.denominator)};if(o instanceof ft)return{fr:o.adjusted};if(o instanceof Ke)return{fr:it(o.toExact()),decimals:o.token.decimals};if(o instanceof ye)return{fr:o};let e=String(o),t=si(e);return{fr:new ye(t.numerator,t.denominator),decimals:(n=t.dec)==null?void 0:n.length}}function bA(o,e){if(o==null||e==null)return!1;let t=it(o),n=it(e);return t.sub(n).numerator,t.sub(n).numerator.lt(ot)}function op(o,e){if(o==null||e==null)return!1;let t=it(o),n=it(e);return t.sub(n).numerator.gt(ot)}function gA(o,e){if(o==null||e==null)return!1;let t=it(o),n=it(e);return t.sub(n).numerator.lte(ot)}function AA(o,e){if(o==null||e==null)return!1;let t=it(o),n=it(e);return t.sub(n).numerator.gte(ot)}function rp(o,e){if(o==null||e==null)return!1;let t=it(o),n=it(e);return t.sub(n).numerator.eq(ot)}function PA(o,e){if(o==null||e==null)return;let t=it(o),n=it(e);try{return t.div(n)}catch{return t}}function wA(o,e){if(o==null||e==null)return;let t=it(o),n=it(e);return t.sub(n)}function kA(o){return o==null?!1:!rp(o,0)}function hA(o,e){return op(e,o)?e:o}function ea(o,e){if(o==null||e==null)return;let t=it(o),n=it(e);return t.mul(n)}function TA(o,e){if(o==null||e==null)return;let t=it(o),n=it(e);return t.add(n)}import{PublicKey as sp}from"@solana/web3.js";import ap from"bn.js";async function Pc(o){new Promise(e=>setTimeout(e,o))}function CA(){return new Date().getTime()}function ta(o){return typeof o=="object"&&o!==null&&![Le,Ke,sp,ye,ap,ft,Ze].some(e=>typeof e=="object"&&o instanceof e)}function Ve(o){return typeof o=="string"?Ys(o):Array.isArray(o)?o.map(e=>Ve(e)):ta(o)?Object.fromEntries(Object.entries(o).map(([e,t])=>[e,Ve(t)])):o}var ot=new $e(0),hc=new $e(1),qA=new $e(2),UA=new $e(3),GA=new $e(5),ri=new $e(10),XA=new $e(100),zA=new $e(1e3),QA=new $e(1e4);function Js(o){return ri.pow(ee(o))}function si(o){var a;if(o===void 0)return{denominator:"1",numerator:"0"};if(o instanceof $e)return{numerator:o.toString(),denominator:"1"};if(o instanceof ye)return{denominator:o.denominator.toString(),numerator:o.numerator.toString()};let e=String(o),[,t="",n="",i=""]=(a=e.replace(",","").match(/(-?)(\d*)\.?(\d*)/))!=null?a:[],r="1"+"0".repeat(i.length),s=t+(n==="0"?"":n)+i||"0";return{denominator:r,numerator:s,sign:t,int:n,dec:i}}function Cr(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 up(o){var n;let[,e="",t=""]=(n=o.toFixed(2).match(/(-?)(\d*)\.?(\d*)/))!=null?n:[];return`${e}${t}`}function cp(o,e=0){return o instanceof $e?o:new $e(up(Tc(o).mul(ri.pow(new $e(String(e))))))}function Tc(o){if(o instanceof Ze)return new ye(o.numerator,o.denominator);if(o instanceof ft)return o.adjusted;if(o instanceof Ke)try{return Tc(o.toExact())}catch{return new ye(ot)}if(o instanceof ye)return o;let e=String(o),t=si(e);return new ye(t.numerator,t.denominator)}function Rr(o,e,t){return o.mul(e).add(t).sub(new $e(1)).div(t)}function na(o,e,t){return o.mul(e).div(t)}function YA(o,e){let{numerator:t,denominator:n}=si(o);return new Ze(new $e(t),new $e(n).mul(e!=null&&e.alreadyDecimaled?new $e(100):new $e(1)))}function HA(o){let{token:e,numberPrice:t,decimalDone:n}=o,i=new Le({mint:"",decimals:6,symbol:"usd",name:"usd",skipMint:!0}),{numerator:r,denominator:s}=si(t),a=n?new $e(r).mul(ri.pow(new $e(e.decimals))):r,c=new $e(s).mul(ri.pow(new $e(i.decimals)));return new ft({baseToken:i,denominator:c.toString(),quoteToken:new Le(U(M({},e),{skipMint:!0,mint:""})),numerator:a.toString()})}function wc(o){let e=new mo({decimals:6,symbol:"usd",name:"usd"}),t=cp(ea(o,10**e.decimals));return new oi(e,t)}function jA(o,e){return wc(!e||!o?0:ea(o,e))}function lp(o){if(o==null)return;let{numerator:e,denominator:t}=si(o.toString());return new ye(e,t)}function mp(o){return o instanceof N}function kc(o){return mp(o)?lp(o):Array.isArray(o)?o.map(e=>kc(e)):ta(o)?Object.fromEntries(Object.entries(o).map(([e,t])=>[e,kc(t)])):o}var Ic=o=>typeof o=="number",Bc=o=>o?new Date(o):new Date,dp=o=>Bc(o).getTime();function xc(o,e,t){let n=Ic(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(o).getTime()<=n}function Sc(o,e,t){let n=Ic(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(o).getTime()>n}function $A(o,e){let n=dp(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 Bc(n)}function Es(o,e=1,t=[]){let n=[...o];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}function eP(o,...e){return o.filter(t=>e.every(n=>n.includes(t)))}function tP(o,...e){return o.filter(t=>e.every(n=>!n.includes(t)))}function nP(o){return[...new Set(o)]}var an=class{constructor(e){this._owner=e}get publicKey(){return an.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return an.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return an.isKeyPair(this._owner)}get isPublicKey(){return an.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!an.isKeyPair(e)}};import{PublicKey as gp}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ap}from"@solana/spl-token";import{ComputeBudgetProgram as Kc,Keypair as Cc,PublicKey as Rc,Transaction as Nr,TransactionMessage as pp,VersionedTransaction as ia}from"@solana/web3.js";var Tn=(t=>(t[t.V0=0]="V0",t[t.LEGACY=1]="LEGACY",t))(Tn||{}),X={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",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",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",FarmV4Withdraw:"FarmV4Withdraw",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",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{TOKEN_PROGRAM_ID as fp}from"@solana/spl-token";var In=Pe("Raydium_txUtil"),Lc=1644;function Or(o){let e=[],t=[];return o.microLamports&&(e.push(Kc.setComputeUnitPrice({microLamports:o.microLamports})),t.push(X.SetComputeUnitPrice)),o.units&&(e.push(Kc.setComputeUnitLimit({units:o.units})),t.push(X.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Ri(o,e){var n,i;let t=e!=null?e:"confirmed";return(i=await((n=o.getLatestBlockhash)==null?void 0:n.call(o,{commitment:t})))==null?void 0:i.blockhash}async function Mr(o,e){return o.getSignatureStatuses([e]),new Promise((t,n)=>{let i=setTimeout(n,6e4);o.onSignature(e,r=>{if(clearTimeout(i),!r.err){t("");return}n(Object.assign(r.err,{txId:e}))},"confirmed")})}function vr(o,e){o.length<1&&In.logWithError(`no instructions provided: ${o.toString()}`),e.length<1&&In.logWithError(`no signers provided:, ${e.toString()}`);let t=new Nr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...o);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Lc}catch{return!1}}async function Nc(o,e,t,n=!0){let i=new Rc("RaydiumSimuLateTransaction11111111111111111"),r=[],s=new Nr;s.feePayer=i;for(let u of e)vr([...s.instructions,u],[i])||(r.push(s),s=new Nr,s.feePayer=i),s.add(u);s.instructions.length>0&&r.push(s);let a=[];try{if(a=await yp(o,r,n),a.find(u=>u.err!==null))throw Error("rpc simulateTransaction error")}catch(u){u instanceof Error&&In.logWithError("failed to simulate for instructions","RPC_ERROR",{message:u.message})}let c=[];for(let u of a)if(In.debug("simulate result:",u),u.logs){let l=u.logs.filter(m=>m&&m.includes(t));In.debug("filteredLog:",c),l.length||In.logWithError("simulate log not match keyword","keyword",t),c.push(...l)}return c}function Oc(o,e){let t=o.match(/{["\w:,]+}/g);return!t||t.length!==1?In.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Bn(o,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(o);return!n||n.length!==2?In.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function oe(o,e){let[t,n]=Rc.findProgramAddressSync(o,e);return{publicKey:t,nonce:n}}async function yp(o,e,t){let n=[];if(t){let i=await o.getLatestBlockhash(),r=[];for(let u of e){u.recentBlockhash=i.blockhash,u.lastValidBlockHeight=i.lastValidBlockHeight;let m=u._compile().serialize(),p=u._serialize(m).toString("base64");r.push(p)}let s=r.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 i=>await(await o.simulateTransaction(i)).value))}catch(i){i instanceof Error&&In.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:i.message})}return n}function po({instructions:o,payer:e,signers:t}){return vr(o,[e,...t])}function fo({instructions:o,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Cc.generate().publicKey.toString()}){let r=new pp({payerKey:e,recentBlockhash:n,instructions:o}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new ia(r).serialize()).toString("base64").length<Lc}catch{return!1}}var Lr={time:0,data:void 0};async function yP(o){if(!Lr.data||(Date.now()-Lr.time)/1e3>30){let e=await o.getEpochInfo();return Lr={time:Date.now(),data:e},e}else return Lr.data}var Mc=o=>Buffer.isBuffer(o)?o:o instanceof Uint8Array?Buffer.from(o.buffer,o.byteOffset,o.byteLength):Buffer.from(o),bp=o=>{let e=o.serialize({requireAllSignatures:!1,verifySignatures:!1});o instanceof ia&&(e=Mc(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function ai(o){let e=[];return o.forEach(t=>{t instanceof Nr&&(t.recentBlockhash||(t.recentBlockhash=fp.toBase58()),t.feePayer||(t.feePayer=Cc.generate().publicKey)),e.push(bp(t))}),console.log("simulate tx string:",e),e}function bP(o){let e=o.serialize({requireAllSignatures:!1,verifySignatures:!1});return o instanceof ia&&(e=Mc(e)),e.toString("base64")}function Z(o,e,t){return oe([o.toBuffer(),(t!=null?t:Ap).toBuffer(),e.toBuffer()],new gp("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as se}from"@solana/web3.js";var oa=new se("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),ra=new se("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),sa=new se("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Li=new se("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Pp=new se("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),aa=new se("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Fr=new se("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),yo=new se("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),wp=new se("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Er=new se("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),qn=new se("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Ni=new se("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),bo=new se("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Un=new se("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),kp=new se("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),ua=new se("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),hp=new se("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Tp=new se("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Ip=new se("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Bp=new se("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),go=new se("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),ca=new se("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),xp=new se("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ao=new se("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Po=new se("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),yt=new se("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Sp=new se("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),TP=new se("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),IP=new se("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Kp=new se("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Cp=new se("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX"),wo={IDO_PROGRAM_ID_V1:hp,IDO_PROGRAM_ID_V2:Tp,IDO_PROGRAM_ID_V3:Ip,IDO_PROGRAM_ID_V4:Bp},St={AMM_V4:yo,AMM_STABLE:wp,CLMM_PROGRAM_ID:qn,CLMM_LOCK_PROGRAM_ID:Ni,CLMM_LOCK_AUTH_ID:bo,FARM_PROGRAM_ID_V3:oa,FARM_PROGRAM_ID_V4:ra,FARM_PROGRAM_ID_V5:sa,FARM_PROGRAM_ID_V6:Li,OPEN_BOOK_PROGRAM:aa,SERUM_PROGRAM_ID_V3:Fr,UTIL1216:Pp,Router:kp,CREATE_CPMM_POOL_PROGRAM:go,CREATE_CPMM_POOL_AUTH:ca,CREATE_CPMM_POOL_FEE_ACC:xp,LOCK_CPMM_PROGRAM:Ao,LOCK_CPMM_AUTH:Po,LAUNCHPAD_PROGRAM:yt,LAUNCHPAD_AUTH:Sp,LAUNCHPAD_PLATFORM:Kp,LAUNCHPAD_CONFIG:Cp,FEE_DESTINATION_ID:ua,MODEL_DATA_PUBKEY:Un},xn={OPEN_BOOK_PROGRAM:new se("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new se("Ray1111111111111111111111111111111111111111"),AMM_V4:new se("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new se("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new se("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new se("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new se("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new se("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new se("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new se("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new se("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new se("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:se.default,Router:new se("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new se("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new se("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new se("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new se("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new se("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new se("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new se("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new se("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new se("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new se("Ray1111111111111111111111111111111111111111")};import Be from"bn.js";var Kt=1e4;function SP(o,e,t,n){if(e===void 0)return{amount:o,fee:void 0,expirationTime:void 0};let i=t.epoch<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,r=new Be(i.maximumFee.toString()),s=t.epoch<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(i.transferFeeBasisPoints===Kt){let a=new Be(i.maximumFee.toString());return{amount:o.add(a),fee:a,expirationTime:s}}else{let a=Mt(o.mul(new Be(Kt)),new Be(Kt-i.transferFeeBasisPoints)),c=new Be(i.maximumFee.toString()),u=a.sub(o).gt(c)?o.add(c):a,l=Mt(u.mul(new Be(i.transferFeeBasisPoints)),new Be(Kt)),m=l.gt(r)?r:l;return{amount:u,fee:m,expirationTime:s}}else{let a=Mt(o.mul(new Be(i.transferFeeBasisPoints)),new Be(Kt)),c=a.gt(r)?r:a;return{amount:o,fee:c,expirationTime:s}}}function Ce(o,e,t,n){if(e===void 0)return{amount:o,fee:void 0,expirationTime:void 0};let i=U(M({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),r=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new Be(r.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(r.transferFeeBasisPoints===Kt){let c=new Be(r.maximumFee.toString());return{amount:o.add(c),fee:c,expirationTime:a}}else{let c=Mt(o.mul(new Be(Kt)),new Be(Kt-r.transferFeeBasisPoints)),u=new Be(r.maximumFee.toString()),l=c.sub(o).gt(u)?o.add(u):c,m=Mt(l.mul(new Be(r.transferFeeBasisPoints)),new Be(Kt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let c=Mt(o.mul(new Be(r.transferFeeBasisPoints)),new Be(Kt)),u=c.gt(s)?s:c;return{amount:o,fee:u,expirationTime:a}}}function un(o,e){return o===void 0?e:e===void 0?o:Math.min(o,e)}function Mt(o,e){let{div:t,mod:n}=o.divmod(e);return n.gt(new Be(0))?t.add(new Be(1)):t}function ui(o,e){if(o.isZero())return new Be(0);let t=o.div(e);return t.isZero()?new Be(1):o.mod(e).gt(new Be(0))?t.add(new Be(1)):t}function la(o,e,t){if(e===void 0)return{amount:o,fee:void 0,expirationTime:void 0};let n=Math.floor(t/432e3),i=n<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,r=new Be(i.maximumFee.toString()),s=n<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*432e3-t)*400/1e3:void 0,a=Mt(o.mul(new Be(i.transferFeeBasisPoints)),new Be(Kt)),c=a.gt(r)?r:a;return{amount:o,fee:c,expirationTime:s}}function ma(o,e,t){if(e===void 0)return{amount:o,fee:void 0,expirationTime:void 0};let n=Math.floor(t/432e3),i=n<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,r=new Be(i.maximumFee.toString()),s=n<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*432e3-t)*400/1e3:void 0;if(i.transferFeeBasisPoints===Kt){let a=new Be(i.maximumFee.toString());return{amount:o.add(a),fee:a,expirationTime:s}}else{let a=Mt(o.mul(new Be(Kt)),new Be(Kt-i.transferFeeBasisPoints)),c=new Be(i.maximumFee.toString()),u=a.sub(o).gt(c)?o.add(c):a,l=Mt(u.mul(new Be(i.transferFeeBasisPoints)),new Be(Kt)),m=l.gt(r)?r:l;return{amount:u,fee:m,expirationTime:s}}}import{PublicKey as da,AddressLookupTableAccount as Mi}from"@solana/web3.js";async function pa({connection:o,address:e,cluster:t="mainnet"}){let n=await nn(o,[...new Set(e.map(r=>r.toString()))].map(r=>new da(r))),i={};for(let r=0;r<e.length;r++){let s=n[r],a=e[r];if(!s)continue;let c=new Mi({key:a,state:Mi.deserialize(s.data)});i[a.toString()]=c,t==="devnet"?Oi[a.toString()]=c:_r[a.toString()]=c}return i}var _r={AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU:new Mi({key:new da("AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU"),state:Mi.deserialize(Buffer.from("AQAAAP//////////I1rcEwAAAAAvAQYwun9CU6c5Ikm2pAj+D9IEnCOR45nK+SFTGSdpd6J6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbd9uHXZaGT2cvhRs7reawctIXtX1s3kTqM9YV+/wCpBt324e51j94YQl285GzN2rYa/E2DuQ0n/r35KNihi/wFSlNQ+F3IgtYUpVZyeIopbd8eq6vQpgZ4iEky9O72oAVKU1qZKSEGTSTocWDaOHx8NbXdvJK7geQfqEBBBUSNBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvBkX2T9y7AHdNGviJAqQNtlDUDCnauQRWybsLji6nPM8Qkw5asQRvCdB3MbX6IEBwytOrpM32l4jQygKG9TKgR0vZScQ2AsM/IHeQ7RajUkyhuZdc8SGiqQz/7H34torNR/Wir3sl0ruUrVxJWEZfUg+QLNAxxODdBi53/OP7Ioil1cqeBM9dtZC3FLov4yyxWRM/wcGStyJX/QfTnLBAHqkqWotPKVlShCVQqpP9W5W1rOao65IMk5QuQ2kMIOxzDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu/YsA/yfEEFGcr8Z57VKDw8uQzpiru7g4lvjnfapW62W030syevD8k07SGoxUHiuT/ai7gAHWWhDsVmg/C63ajgpkH7Sn3GdutArDTfyqOkdqv4/IPC/EFFy7mGkfDd2C57N5a/4jC+BbmJy7wQaSEZr0CQU88lPtUxIVvzGjC95b8Ooss2TqmkrayGKofkPMGQn7Ux+9lfwBSNfxwH8NgbpqC/7LNlV4I7nCvsXf3p+ohQk9NrAJb2KAFpUqEIJ9ZBV7BYDzHF/ORKYlgtvPnXjudZQ6CEo5OzUDaNIomTCCsvhD16TxJjsbgne1kGnQPCFSoaxUbq2V1bPMFQ3VYP6wDZ9bKStCFKx9A3tNbwZFC5ZGAN83MFK7XoTy+OmmcFEr6rLOjfSuTfPvHJkSVxW6Qllwkl67XcBi5v00u2gQsbu+38sp+rd5pA/LvyWj4P94ZGZwc1tE2P88xekCLcAwZGb+UhFzL/7K26csOb57yM5bvF9xJrLEObOkAAAAAn+HWRkdcPKyFFMnVwEoD7vnD0jCKFIU1sImubYCxNTSVzsKpaQX+fzNxrLAI3L14JQnJx/D6Uk2LADIHGqnGELzjEbkBDAlaM77NkXMPfqXNLSveCkWI7UEgNs31WEWB6XHSYI/v5DklHOb4QTtDOR804PVbi3fjloZeLR2F8d4FuZmMMO7ck3Fnkn2zEMG5gOmqsygb6PjTitArVl52NhcSznTxVnguaIJxiZkAnurDmn3MWR0PC2GLghp2KJqHCc6QQ85odeIjFHKOlRlJyeSXVJmL8vb1UgOzsbJPVP8p6zM4M3C1Sd7uWIHP33G42AP2Zg8ucn/n6meQjjD266JgCWdxZD6PXs9CsnIeL7SSG0/6lGb9xfP0ZcWkCXB/3hjxHYVXjra/GPOeXGk0fLLKjCbk+mgs2w6d2oCwimBipTzuoZ30GiI8ij8VRzD5CzMWtu2m21eDBIfjGAEo4pQeNNonKcqzV/cleX8ySZLOHsz8PtBCrLqF+VkLm9hOzIT+6i/nIf6keR4GWKMOD4AvqfpjHoD4DuhBpz8P28+DxkGrDXXr/nr20x291VPvcTU/b+b+o2kC9G0kcXeTlLjU6a2TQXWlZ4gBUdBl1jgT7mObSTpLblNiXZsLkbmVXZwvFKXua5cUKlWed/w30skmEUraTuQqtqr5fHZPW9n57EmeTif6LjHL2YJFZkQU+TrJmFzqzmF4/b8OwrPQAprl8mX3q4LUIdAS/a+11B6DWD1Xk2++Sn94dLC4xjkO4Wtlw8c4XuzciVbepHOmnoWzVu/0y3KCrLCSfQxQ3br8DJCoVzhgtPsS2nZZjsBGIZgnU0QpMv+2MnRsnKwdp1VsrCX84j/qvaZn4WhKunippgTbN2EUs0tPTP55Qfgj+nKmjtWW5IYs72FrEwJKYoNfsmqaF4o5pf4v9zgPwVwY/5I4XJKUL2L25m9kAQcW/K+H1RTFEUoj8Z4ajpOmAB/dG0COmCphVMW2CCMvnxhcGiSgPnpDuWu6qiJ7NG7ye5kvHgefgqPLeicspNJ5EpL3XiRNLM2tmJLI1awAwOyd6iHv0dCkMYRKaa6rcaZeYwmKCkckm0kM2JNmnmmAaBQQ7mwmIM0IMxX4f5W6j9PqZWcJxF7r17T/lQBAmcjoupRiJifbnXCNUv9GhpRF19WcBdeKbivRJVlGop6I2RS6lGImJ9udcI1S/0aGlEXX1ZwF14puK9ElWUainojZFYVHLHD6dIP2ESjqBzg3ol1/wB7+/ylGwd9LS7wSZ2A630CJSVKwH47K9P4bB8PEQP8BwjMFa7xQHOqZFP1XqaQ==","base64"))})},Oi={},fa=async o=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Oi[e])return Oi;let t=new da(e),n=await o.getAccountInfo(t);return n&&(Oi[e]=new Mi({key:t,state:Mi.deserialize(n.data)})),Oi};import{PublicKey as vi,sendAndConfirmTransaction as ya,SystemProgram as Rp,Transaction as ko,TransactionMessage as ho,VersionedTransaction as To}from"@solana/web3.js";import Lp from"axios";var Vr=2e3,Dr=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,this.loopMultiTxStatus=!!e.loopMultiTxStatus}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 Lp.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}=Or(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(Rp.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new vi(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(X.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:r=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...r),this.lookupTableAddress.push(...s.filter(a=>a!==vi.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(M({},t||{})):this.build(t)}build(e){var n;let t=new ko;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(i=>i.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 i=>{var l;let{recentBlockHash:r,skipPreflight:s=!0,sendAndConfirm:a,notSendToRpc:c}=i||{},u=r!=null?r:await Ri(this.connection,this.blockhashCommitment);if(t.recentBlockhash=u,this.signers.length&&t.sign(...this.signers),ai([t]),(l=this.owner)!=null&&l.isKeyPair)return{txId:a?await ya(this.connection,t,this.signers.find(d=>d.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 m=await this.signAllTransactions([t]);if(this.signers.length)for(let d of m)try{d.sign(...this.signers)}catch{}return{txId:c?"":await this.connection.sendRawTransaction(m[0].serialize(),{skipPreflight:s}),signedTx:m[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:i}=this.build(n),r=t.filter(l=>l.transaction.instructions.length>0),s=[i,...r.map(l=>l.transaction)],a=[this.signers,...r.map(l=>l.signers)],c=[...this.instructionTypes,...r.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 g;let{sequentially:m,onTxUpdate:d,skipTxCount:p=0,recentBlockHash:f,skipPreflight:y=!0}=l||{},b=f!=null?f:await Ri(this.connection,this.blockhashCommitment);if((g=this.owner)!=null&&g.isKeyPair){if(m){let P=[],k=0;for(let B of s){if(++k,k<=p)continue;let T=await ya(this.connection,B,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});P.push(T)}return{txIds:P,signedTxs:s}}return{txIds:await await Promise.all(s.map(async P=>(P.recentBlockhash=b,await this.connection.sendRawTransaction(P.serialize(),{skipPreflight:y})))),signedTxs:s}}if(this.signAllTransactions){let P=s.map((B,T)=>(B.recentBlockhash=b,a[T].length&&B.sign(...a[T]),B));ai(P);let k=await this.signAllTransactions(P);if(m){let B=0,T=[],h=async()=>{if(!k[B])return;let S=await this.connection.sendRawTransaction(k[B].serialize(),{skipPreflight:y});T.push({txId:S,status:"sent",signedTx:k[B]}),d==null||d([...T]),B++;let x=!1,K=null,I=null,C=F=>{K!==null&&clearInterval(K),I!==null&&this.connection.removeSignatureListener(I);let v=T.findIndex(R=>R.txId===S);if(v>-1){if(T[v].status==="error"||T[v].status==="success")return;T[v].status=F.err?"error":"success"}d==null||d([...T]),F.err||h()};this.loopMultiTxStatus&&(K=setInterval(async()=>{var F;if(x){clearInterval(K);return}try{let v=await this.connection.getTransaction(S,{commitment:"confirmed",maxSupportedTransactionVersion:0});v&&(x=!0,clearInterval(K),C({err:((F=v.meta)==null?void 0:F.err)||null}),console.log("tx status from getTransaction:",S))}catch(v){x=!0,clearInterval(K),console.error("getTransaction timeout:",v,S)}},Vr)),I=this.connection.onSignature(S,F=>{if(x){this.connection.removeSignatureListener(I);return}x=!0,C(F)},"confirmed"),this.connection.getSignatureStatus(S)};return await h(),{txIds:T.map(S=>S.txId),signedTxs:k}}else{let B=[];for(let T=0;T<k.length;T+=1){let h=await this.connection.sendRawTransaction(k[T].serialize(),{skipPreflight:y});B.push(h)}return{txIds:B,signedTxs:k}}}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 y;let f=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i,recentBlockhash:r}=f,s=ze(f,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),a=M(M({},this.cluster==="devnet"?await fa(this.connection):_r),t),c=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let b of c)a[b]===void 0&&u.push(new vi(b));let l=await pa({connection:this.connection,address:u});for(let[b,g]of Object.entries(l))a[b]=g;let m=i?vi.default.toBase58():r!=null?r:await Ri(this.connection,this.blockhashCommitment),d=new ho({payerKey:this.feePayer,recentBlockhash:m,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(a));((y=this.owner)==null?void 0:y.signer)&&!this.signers.some(b=>b.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let p=new To(d);return p.sign(this.signers),{builder:this,transaction:p,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async b=>{var B;let{skipPreflight:g=!0,sendAndConfirm:P,notSendToRpc:k}=b||{};if(ai([p]),(B=this.owner)!=null&&B.isKeyPair){let T=await this.connection.sendTransaction(p,{skipPreflight:g});return P&&await Mr(this.connection,T),{txId:T,signedTx:p}}if(this.signAllTransactions){let T=await this.signAllTransactions([p]);if(this.signers.length)for(let h of T)try{h.sign(this.signers)}catch{}return{txId:k?"":await this.connection.sendTransaction(T[0],{skipPreflight:g}),signedTx:T[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}async buildV0MultiTx(e){var u;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),r=t.filter(l=>l.builder.instructions.length>0),s=[i,...r.map(l=>l.transaction)],a=[this.signers,...r.map(l=>l.signers)],c=[...this.instructionTypes,...r.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 y;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:f=!0}=l||{};if(p&&s.forEach(b=>b.message.recentBlockhash=p),ai(s),(y=this.owner)!=null&&y.isKeyPair){if(m){let b=[];for(let g of s){let P=await this.connection.sendTransaction(g,{skipPreflight:f});await Mr(this.connection,P),b.push(P)}return{txIds:b,signedTxs:s}}return{txIds:await Promise.all(s.map(async b=>await this.connection.sendTransaction(b,{skipPreflight:f}))),signedTxs:s}}if(this.signAllTransactions){let b=await this.signAllTransactions(s);if(m){let g=0,P=[],k=async()=>{if(!b[g])return;let B=await this.connection.sendTransaction(b[g],{skipPreflight:f});P.push({txId:B,status:"sent",signedTx:b[g]}),d==null||d([...P]),g++;let T=!1,h=null,S=null,x=K=>{h!==null&&clearInterval(h),S!==null&&this.connection.removeSignatureListener(S);let I=P.findIndex(C=>C.txId===B);if(I>-1){if(P[I].status==="error"||P[I].status==="success")return;P[I].status=K.err?"error":"success"}d==null||d([...P]),K.err||k()};this.loopMultiTxStatus&&(h=setInterval(async()=>{var K;if(T){clearInterval(h);return}try{let I=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:0});I&&(T=!0,clearInterval(h),x({err:((K=I.meta)==null?void 0:K.err)||null}),console.log("tx status from getTransaction:",B))}catch(I){T=!0,clearInterval(h),console.error("getTransaction timeout:",I,B)}},Vr)),S=this.connection.onSignature(B,K=>{if(T){this.connection.removeSignatureListener(S);return}T=!0,x(K)},"confirmed"),this.connection.getSignatureStatus(B)};return k(),{txIds:[],signedTxs:b}}else{let g=[];for(let P=0;P<b.length;P+=1){let k=await this.connection.sendTransaction(b[P],{skipPreflight:f});g.push(k)}return{txIds:g,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var d;let m=e||{},{splitIns:t=[],computeBudgetConfig:n}=m,i=ze(m,["splitIns","computeBudgetConfig"]),r=n?Or(n):{instructions:[],instructionTypes:[]},s=this.signers.reduce((p,f)=>U(M({},p),{[f.publicKey.toBase58()]:f}),{}),a=[],c=[],u=[],l=0;if(this.allInstructions.forEach(p=>{let f=[...u,p],y=n?[...r.instructions,...f]:f,g=[...new Set(f.map(P=>P.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat()).values()].map(P=>new vi(P));if(p!==t[l]&&u.length<12&&(po({instructions:y,payer:this.feePayer,signers:g})||po({instructions:f,payer:this.feePayer,signers:g})))u.push(p);else{if(u.length===0)throw Error("item ins too big");l+=p===t[l]?1:0,po({instructions:n?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:g})?a.push(new ko().add(...r.instructions,...u)):a.push(new ko().add(...u)),c.push(Array.from(new Set(u.map(P=>P.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat())).map(P=>s[P]).filter(P=>P!==void 0)),u=[p]}}),u.length>0){let f=[...new Set(u.map(y=>y.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(y=>s[y]).filter(y=>y!==void 0);po({instructions:n?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:f.map(y=>y.publicKey)})?a.push(new ko().add(...r.instructions,...u)):a.push(new ko().add(...u)),c.push(f)}return a.forEach(p=>p.feePayer=this.feePayer),(d=this.owner)!=null&&d.signer&&c.forEach(p=>{p.some(f=>f.publicKey.equals(this.owner.publicKey))||p.push(this.owner.signer)}),{builder:this,transactions:a,signers:c,instructionTypes:this.instructionTypes,execute:async p=>{var B;let{sequentially:f,onTxUpdate:y,skipTxCount:b=0,recentBlockHash:g,skipPreflight:P=!0}=p||{},k=g!=null?g:await Ri(this.connection,this.blockhashCommitment);if(a.forEach(async(T,h)=>{T.recentBlockhash=k,c[h].length&&T.sign(...c[h])}),ai(a),(B=this.owner)!=null&&B.isKeyPair){if(f){let T=0,h=[];for(let S of a){if(++T,T<=b){h.push("tx skipped");continue}let x=await ya(this.connection,S,this.signers.find(K=>K.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:P});h.push(x)}return{txIds:h,signedTxs:a}}return{txIds:await Promise.all(a.map(async T=>await this.connection.sendRawTransaction(T.serialize(),{skipPreflight:P}))),signedTxs:a}}if(this.signAllTransactions){let T=await this.signAllTransactions(a.slice(b,a.length)),h=[...a.slice(0,b),...T];if(f){let S=0,x=[],K=async()=>{if(!h[S])return;S<b&&(x.push({txId:"",status:"success",signedTx:h[S]}),y==null||y([...x]),S++,K());let I=await this.connection.sendRawTransaction(h[S].serialize(),{skipPreflight:P});x.push({txId:I,status:"sent",signedTx:h[S]}),y==null||y([...x]),S++;let C=!1,F=null,v=null,R=L=>{F!==null&&clearInterval(F),v!==null&&this.connection.removeSignatureListener(v);let V=x.findIndex(Y=>Y.txId===I);if(V>-1){if(x[V].status==="error"||x[V].status==="success")return;x[V].status=L.err?"error":"success"}y==null||y([...x]),L.err||K()};this.loopMultiTxStatus&&(F=setInterval(async()=>{var L;if(C){clearInterval(F);return}try{let V=await this.connection.getTransaction(I,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(C=!0,clearInterval(F),R({err:((L=V.meta)==null?void 0:L.err)||null}),console.log("tx status from getTransaction:",I))}catch(V){C=!0,clearInterval(F),console.error("getTransaction timeout:",V,I)}},Vr)),v=this.connection.onSignature(I,L=>{if(C){this.connection.removeSignatureListener(v);return}C=!0,R(L)},"confirmed"),this.connection.getSignatureStatus(I)};return await K(),{txIds:x.map(I=>I.txId),signedTxs:h}}else{let S=[];for(let x=0;x<h.length;x+=1){let K=await this.connection.sendRawTransaction(h[x].serialize(),{skipPreflight:P});S.push(K)}return{txIds:S,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var k;let P=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:i={},lookupTableAddress:r=[]}=P,s=ze(P,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress"]),a=M(M({},this.cluster==="devnet"?await fa(this.connection):_r),i),c=Array.from(new Set([...this.lookupTableAddress,...r])),u=[];for(let B of c)a[B]===void 0&&u.push(new vi(B));let l=await pa({connection:this.connection,address:u});for(let[B,T]of Object.entries(l))a[B]=T;let m=t?Or(t):{instructions:[],instructionTypes:[]},d=await Ri(this.connection,this.blockhashCommitment),p=this.signers.reduce((B,T)=>U(M({},B),{[T.publicKey.toBase58()]:T}),{}),f=[],y=[],b=[],g=0;if(this.allInstructions.forEach(B=>{let T=[...b,B],h=t?[...m.instructions,...T]:T;if(B!==n[g]&&b.length<12&&(fo({instructions:h,payer:this.feePayer,lookupTableAddressAccount:a})||fo({instructions:T,payer:this.feePayer,lookupTableAddressAccount:a})))b.push(B);else{if(b.length===0)throw Error("item ins too big");g+=B===n[g]?1:0;let S={};for(let x of[...new Set(c)])a[x]!==void 0&&(S[x]=a[x]);if(t&&fo({instructions:[...m.instructions,...b],payer:this.feePayer,lookupTableAddressAccount:a,recentBlockhash:d})){let x=new ho({payerKey:this.feePayer,recentBlockhash:d,instructions:[...m.instructions,...b]}).compileToV0Message(Object.values(a));f.push(new To(x))}else{let x=new ho({payerKey:this.feePayer,recentBlockhash:d,instructions:[...b]}).compileToV0Message(Object.values(a));f.push(new To(x))}y.push(Array.from(new Set(b.map(x=>x.keys.filter(K=>K.isSigner).map(K=>K.pubkey.toString())).flat())).map(x=>p[x]).filter(x=>x!==void 0)),b=[B]}}),b.length>0){let T=[...new Set(b.map(h=>h.keys.filter(S=>S.isSigner).map(S=>S.pubkey.toString())).flat()).values()].map(h=>p[h]).filter(h=>h!==void 0);if(t&&fo({instructions:[...m.instructions,...b],payer:this.feePayer,lookupTableAddressAccount:a,recentBlockhash:d})){let h=new ho({payerKey:this.feePayer,recentBlockhash:d,instructions:[...m.instructions,...b]}).compileToV0Message(Object.values(a));f.push(new To(h))}else{let h=new ho({payerKey:this.feePayer,recentBlockhash:d,instructions:[...b]}).compileToV0Message(Object.values(a));f.push(new To(h))}y.push(T)}return(k=this.owner)!=null&&k.signer&&y.forEach(B=>{B.some(T=>T.publicKey.equals(this.owner.publicKey))||B.push(this.owner.signer)}),f.forEach((B,T)=>{B.sign(y[T])}),{builder:this,transactions:f,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async B=>{var I;let{sequentially:T,onTxUpdate:h,skipTxCount:S=0,recentBlockHash:x,skipPreflight:K=!0}=B||{};if(f.map(async(C,F)=>{y[F].length&&C.sign(y[F]),x&&(C.message.recentBlockhash=x)}),ai(f),(I=this.owner)!=null&&I.isKeyPair){if(T){let C=0,F=[];for(let v of f){if(++C,C<=S){console.log("skip tx: ",C),F.push("tx skipped");continue}let R=await this.connection.sendTransaction(v,{skipPreflight:K});await Mr(this.connection,R),F.push(R)}return{txIds:F,signedTxs:f}}return{txIds:await Promise.all(f.map(async C=>await this.connection.sendTransaction(C,{skipPreflight:K}))),signedTxs:f}}if(this.signAllTransactions){let C=await this.signAllTransactions(f.slice(S,f.length)),F=[...f.slice(0,S),...C];if(T){let v=0,R=[],L=async()=>{if(!F[v])return;if(v<S){R.push({txId:"",status:"success",signedTx:F[v]}),h==null||h([...R]),v++,L();return}let V=await this.connection.sendTransaction(F[v],{skipPreflight:K});R.push({txId:V,status:"sent",signedTx:F[v]}),h==null||h([...R]),v++;let Y=!1,te=null,le=null,Ie=pe=>{te!==null&&clearInterval(te),le!==null&&this.connection.removeSignatureListener(le);let Ae=R.findIndex(we=>we.txId===V);if(Ae>-1){if(R[Ae].status==="error"||R[Ae].status==="success")return;R[Ae].status=pe.err?"error":"success"}h==null||h([...R]),pe.err||L()};this.loopMultiTxStatus&&(te=setInterval(async()=>{var pe;if(Y){clearInterval(te);return}try{let Ae=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});Ae&&(Y=!0,clearInterval(te),Ie({err:((pe=Ae.meta)==null?void 0:pe.err)||null}),console.log("tx status from getTransaction:",V))}catch(Ae){Y=!0,clearInterval(te),console.error("getTransaction timeout:",Ae,V)}},Vr)),le=this.connection.onSignature(V,pe=>{if(Y){this.connection.removeSignatureListener(le);return}Y=!0,Ie(pe)},"confirmed"),this.connection.getSignatureStatus(V)};return L(),{txIds:[],signedTxs:F}}else{let v=[];for(let R=0;R<F.length;R+=1){let L=await this.connection.sendTransaction(F[R],{skipPreflight:K});v.push(L)}return{txIds:v,signedTxs:F}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}};import Np from"bn.js";var cn=new Np(1e6);var vc=(t=>(t.ALL="all",t.Strict="strict",t))(vc||{}),Fc=(s=>(s.All="all",s.Standard="standard",s.Concentrated="concentrated",s.AllFarm="allFarm",s.StandardFarm="standardFarm",s.ConcentratedFarm="concentratedFarm",s))(Fc||{});var bt={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",MONITOR_BASE_HOST:"https://monitor.raydium.io",SERVICE_1_BASE_HOST:"https://service-v1.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",CPMM_CONFIG:"/main/cpmm-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://lite-api.jup.ag/tokens/v1/tagged/verified",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}",OWNER_LOCK_POSITION:"/position/clmm-lock/{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",CPMM_LOCK:"https://dynamic-ipfs.raydium.io/lock/cpmm/position"},pw=M({},bt);var Ec="ray_tab_hash",ba="ray_req_hash",Op=()=>{if(typeof window===void 0)return"";let o=sessionStorage.getItem(Ec);return o||(o=`ray-${Date.now()}`,sessionStorage.setItem(Ec,o)),o},Wr=async n=>{var i=n,{logCount:o=1e3,removeLastLog:e}=i,t=ze(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let r=JSON.parse(localStorage.getItem(ba)||"[]").slice(0,o-1);e&&r.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),r.unshift(U(M({},t),{time:Date.now(),session:Op()}));try{localStorage.setItem(ba,JSON.stringify(r))}catch{if(e){let s=!1,a=JSON.stringify(t.data).substring(0,100);for(r[0].data=a+(a.length>100?"...":"");!s;){r.pop();let c=JSON.stringify(t.data).substring(0,100);r[0].data=c+(c.length>100?"...":"");try{localStorage.setItem(ba,JSON.stringify(r)),s=!0}catch{s=!1}}return new Promise(c=>c())}return Wr(U(M({},t),{logCount:o,removeLastLog:!0}))}};import{TOKEN_2022_PROGRAM_ID as Mp,TOKEN_PROGRAM_ID as vp}from"@solana/spl-token";var Fi=Pe("Raydium_Api"),ga=new Map;async function Ew(o,e,t=1e3){let n;for(;n==null;)try{Fi.debug(`Request ${o} through endlessRetry`),n=await e()}catch(i){Fi.error(`Request ${o} failed, retry after ${t} ms`,i),await Pc(t)}return n}var qr=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:r}){this.cluster=e,this.urlConfigs=r||{},this.logCount=i||1e3,this.api=_c.create({baseURL:this.urlConfigs.BASE_HOST||bt.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:c,url:u}=s;return Fi.debug(`${a==null?void 0:a.toUpperCase()} ${c}${u}`),s},s=>(Fi.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&&Wr({status:u,url:`${m}${d}`,params:a.params,data:c,logCount:this.logCount}),Fi.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&&Wr({status:u,url:`${m}${d}`,params:a.params,data:s.message,logCount:this.logCount}),Fi.error(`${l.toUpperCase()} ${m}${d} ${u||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||bt.CLMM_CONFIG)).data}async getCpmmConfigs(){return(await this.api.get(this.urlConfigs.CPMM_CONFIG||bt.CPMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||bt.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await _c.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(i=>i.numSlots);return n.reduce((i,r)=>i+r,0)/n.length/60}async getChainTimeOffset(){return(await this.api.get(this.urlConfigs.CHAIN_TIME||bt.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||bt.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||bt.TOKEN_LIST)).data}async getJupTokenList(){return(await this.api.get("",{baseURL:this.urlConfigs.JUP_TOKEN_LIST||bt.JUP_TOKEN_LIST})).map(t=>U(M({},t),{chainId:101,programId:t.tags.includes("token-2022")?Mp.toBase58():vp.toBase58()}))}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||bt.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:i="desc",page:r=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||bt.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${i}&page=${r}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||bt.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(s=>ga.has(s)?(n.push(ga.get(s)),!1):!0),r=[];return i.length&&(r=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||bt.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),r.forEach(a=>{ga.set(a.id,a)})),n.concat(r)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:i="all",sort:r="default",order:s="desc",page:a=1}=e,[c,u]=[t&&kt(t).toBase58(),n&&n!=="undefined"?kt(n).toBase58():""],[l,m]=u&&c>u?[u,c]:[c,u];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||bt.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${i}&poolSortField=${r}&sortType=${s}&pageSize=100&page=${a}`)).data}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||bt.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||bt.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||bt.CHECK_AVAILABILITY)).data}};import{merge as _b}from"lodash";var Ur="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",Vc="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{PublicKey as Hr,SystemProgram as zf}from"@solana/web3.js";import{AccountLayout as Vi,createAssociatedTokenAccountIdempotentInstruction as La,TOKEN_PROGRAM_ID as Qn,TOKEN_2022_PROGRAM_ID as Qf}from"@solana/spl-token";var Aa=(...o)=>o.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),De=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=Pe(t)}createTxBuilder(e){return this.scope.checkOwner(),new Dr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,loopMultiTxStatus:this.scope.loopMultiTxStatus,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(Aa(e))}logInfo(...e){this.logger.info(Aa(e))}logAndCreateError(...e){let t=Aa(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Df,SystemProgram as Wf}from"@solana/web3.js";import qf from"bn.js";import{createCloseAccountInstruction as Uf,createInitializeAccountInstruction as Gf,createTransferInstruction as Xf,TOKEN_PROGRAM_ID as _i}from"@solana/spl-token";import{Keypair as Ff,PublicKey as tl}from"@solana/web3.js";import Ef from"bn.js";import{TOKEN_PROGRAM_ID as _f}from"@solana/spl-token";function Fp(o){return o instanceof Uint8Array||o!=null&&typeof o=="object"&&o.constructor.name==="Uint8Array"}function Pa(o,...e){if(!Fp(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 wa(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 Dc(o,e){Pa(o);let t=e.outputLen;if(o.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Xr=o=>new DataView(o.buffer,o.byteOffset,o.byteLength),ln=(o,e)=>o<<32-e|o>>>e;var Zw=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Ep(o){if(typeof o!="string")throw new Error(`utf8ToBytes expected string, got ${typeof o}`);return new Uint8Array(new TextEncoder().encode(o))}function ka(o){return typeof o=="string"&&(o=Ep(o)),Pa(o),o}var Gr=class{clone(){return this._cloneInto()}},$w={}.toString;function Wc(o){let e=n=>o().update(ka(n)).digest(),t=o();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>o(),e}function _p(o,e,t,n){if(typeof o.setBigUint64=="function")return o.setBigUint64(e,t,n);let i=BigInt(32),r=BigInt(4294967295),s=Number(t>>i&r),a=Number(t&r),c=n?4:0,u=n?0:4;o.setUint32(e+c,s,n),o.setUint32(e+u,a,n)}var qc=(o,e,t)=>o&e^~o&t,Uc=(o,e,t)=>o&e^o&t^e&t,zr=class extends Gr{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Xr(this.buffer)}update(e){wa(this);let{view:t,buffer:n,blockLen:i}=this;e=ka(e);let r=e.length;for(let s=0;s<r;){let a=Math.min(i-this.pos,r-s);if(a===i){let c=Xr(e);for(;i<=r-s;s+=i)this.process(c,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){wa(this),Dc(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:r}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>i-s&&(this.process(n,0),s=0);for(let m=s;m<i;m++)t[m]=0;_p(n,i-8,BigInt(this.length*8),r),this.process(n,0);let a=Xr(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],r)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:r,destroyed:s,pos:a}=this;return e.length=i,e.pos=a,e.finished=r,e.destroyed=s,i%t&&e.buffer.set(n),e}};var Vp=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]),Gn=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Xn=new Uint32Array(64),ha=class extends zr{constructor(){super(64,32,8,!1),this.A=Gn[0]|0,this.B=Gn[1]|0,this.C=Gn[2]|0,this.D=Gn[3]|0,this.E=Gn[4]|0,this.F=Gn[5]|0,this.G=Gn[6]|0,this.H=Gn[7]|0}get(){let{A:e,B:t,C:n,D:i,E:r,F:s,G:a,H:c}=this;return[e,t,n,i,r,s,a,c]}set(e,t,n,i,r,s,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=r|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)Xn[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=Xn[m-15],p=Xn[m-2],f=ln(d,7)^ln(d,18)^d>>>3,y=ln(p,17)^ln(p,19)^p>>>10;Xn[m]=y+Xn[m-7]+f+Xn[m-16]|0}let{A:n,B:i,C:r,D:s,E:a,F:c,G:u,H:l}=this;for(let m=0;m<64;m++){let d=ln(a,6)^ln(a,11)^ln(a,25),p=l+d+qc(a,c,u)+Vp[m]+Xn[m]|0,y=(ln(n,2)^ln(n,13)^ln(n,22))+Uc(n,i,r)|0;l=u,u=c,c=a,a=s+p|0,s=r,r=i,i=n,n=p+y|0}n=n+this.A|0,i=i+this.B|0,r=r+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,i,r,s,a,c,u,l)}roundClean(){Xn.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Gc=Wc(()=>new ha);import{PublicKey as Nf}from"@solana/web3.js";import Zc,{isBN as $c}from"bn.js";import{bits as Dp,BitStructure as Wp,blob as qp,Blob as Up,cstr as Gp,f32 as Xp,f32be as zp,f64 as Qp,f64be as Yp,greedy as Hp,Layout as jp,ns64 as Zp,ns64be as $p,nu64 as Jp,nu64be as ef,offset as tf,s16 as nf,s16be as of,s24 as rf,s24be as sf,s32 as af,s32be as uf,s40 as cf,s40be as lf,s48 as mf,s48be as df,s8 as pf,seq as ff,struct as ak,Structure as yf,u16 as bf,u16be as gf,u24 as Af,u24be as Pf,u32 as wf,u32be as kf,u40 as hf,u40be as Tf,u48 as If,u48be as Bf,u8 as xf,UInt as Sf,union as Kf,Union as Cf,unionLayoutDiscriminator as Rf,utf8 as Lf}from"@solana/buffer-layout";var Io=jp,Xc=yf,zc=Cf,uk=Wp,Ta=Sf,Qc=Up,ck=Hp,Qr=xf,Dt=bf,lk=Af,Bo=wf,mk=hf,dk=If,Yc=Jp,pk=gf,fk=Pf,yk=kf,bk=Tf,gk=Bf,Ak=ef,Pk=pf,wk=nf,kk=rf,We=af,hk=cf,Tk=mf,Ik=Zp,Bk=of,xk=sf,Sk=uf,Kk=lf,Ck=df,Rk=$p,Lk=Xp,Nk=zp,Ok=Qp,Mk=Yp;var Hc=ff,jc=Kf,vk=Rf,Re=qp,Fk=Gp,Ek=Lf,Ia=Dp,Ba=tf;var ci=class extends Io{constructor(t,n,i){super(t,i);this.blob=Re(t),this.signed=n}decode(t,n=0){let i=new Zc(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new Zc(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},Yr=class extends Io{constructor(t){super(8,t);this._lower=Ia(Bo(),!1),this._upper=Ia(Bo(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let i=this._lower.decode(t,n),r=this._upper.decode(t,n+this._lower.span);return M(M({},i),r)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function q(o){return new Ta(1,o)}function Pt(o){return new Ta(4,o)}function w(o){return new ci(8,!1,o)}function ne(o){return new ci(16,!1,o)}function Jc(o){return new ci(1,!0,o)}function Ei(o){return new ci(8,!0,o)}function el(o){return new ci(16,!0,o)}var Sn=class extends Io{constructor(t,n,i,r){super(t.span,r);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function O(o){return new Sn(Re(32),e=>new Nf(e),e=>e.toBuffer(),o)}var xa=class extends Io{constructor(t,n){super(-1,n);this.layout=t,this.discriminator=Qr()}encode(t,n,i=0){return t==null?this.discriminator.encode(0,n,i):(this.discriminator.encode(1,n,i),this.layout.encode(t,n,i+1)+1)}decode(t,n=0){let i=this.discriminator.decode(t,n);if(i===0)return null;if(i===1)return this.layout.decode(t,n+1);throw new Error("Invalid option "+this.property)}getSpan(t,n=0){let i=this.discriminator.decode(t,n);if(i===0)return 1;if(i===1)return this.layout.getSpan(t,n+1)+1;throw new Error("Invalid option "+this.property)}};function qk(o,e){return new xa(o,e)}function Xe(o){return new Sn(Qr(),Of,Mf,o)}function Of(o){if(o===0)return!1;if(o===1)return!0;throw new Error("Invalid bool: "+o)}function Mf(o){return o?1:0}function Uk(o,e){let t=Bo("length"),n=E([t,H(o,Ba(t,-t.span),"values")]);return new Sn(n,({values:i})=>i,i=>({values:i}),e)}function Gk(o,e,t){let n=E([w("tag"),e.replicate("data")]);function i({tag:r,data:s}){if(!r.eq(o))throw new Error("Invalid tag, expected: "+o.toString("hex")+", got: "+r.toString("hex"));return s}return new Sn(n,i,r=>({tag:o,data:r}),t)}function vf(o){let e=Bo("length"),t=E([e,Re(Ba(e,-e.span),"data")]);return new Sn(t,({data:n})=>n,n=>({data:n}),o)}function vt(o){return new Sn(vf(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),o)}function Xk(o,e){let t=jc(Qr(),e);return o.forEach((n,i)=>t.addVariant(i,n,n.property)),t}function zk(o,e,t){let n=E([H(o,e,"values")]);return new Sn(n,({values:i})=>i,i=>({values:i}),t)}var Sa=class extends Xc{decode(e,t){return super.decode(e,t)}};function E(o,e,t){return new Sa(o,e,t)}var Ka=class extends zc{encodeInstruction(e){let t=Math.max(...Object.values(this.registry).map(i=>i.span)),n=Buffer.alloc(t);return n.slice(0,this.encode(e,n))}decodeInstruction(e){return this.decode(e)}};function Qk(o,e,t){return new Ka(o,e,t)}var Ca=class extends Qc{decode(e,t){let n=super.decode(e,t);if(!n.every(i=>i===0))throw new Error("nonzero padding bytes");return n}};function Yk(o){return new Ca(o)}function H(o,e,t){let n,i=typeof e=="number"?e:$c(e)?e.toNumber():new Proxy(e,{get(r,s){if(!n){let a=Reflect.get(r,"count");n=$c(a)?a.toNumber():a,Reflect.set(r,"count",n)}return Reflect.get(r,s)},set(r,s,a){return s==="count"&&(n=a),Reflect.set(r,s,a)}});return Hc(o,i,t)}var mn=E([O("mint"),O("owner"),w("amount"),Pt("delegateOption"),O("delegate"),q("state"),Pt("isNativeOption"),w("isNative"),w("delegatedAmount"),Pt("closeAuthorityOption"),O("closeAuthority")]);var uh=Pe("Raydium_Util");function nl({owner:o,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:r,account:s}of t.value){let a=mn.decode(s.data),{mint:c,amount:u}=a;n.push({publicKey:r,mint:c,amount:u,isAssociated:Z(o,c,s.owner).publicKey.equals(r),isNative:!1,programId:s.owner}),i.push({pubkey:r,accountInfo:a,programId:s.owner})}return e&&n.push({mint:tl.default,amount:new Ef(String(e.lamports)),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function Je({fromPublicKey:o,programId:e=_f,assignSeed:t}){let n=t?btoa(t).slice(0,32):Ff.generate().publicKey.toBase58().slice(0,32);return{publicKey:Vf(o,n,e),seed:n}}function Vf(o,e,t){let n=Buffer.concat([o.toBuffer(),Buffer.from(e),t.toBuffer()]),i=Gc(n);return new tl(i)}function Ra(o){let{mint:e,tokenAccount:t,owner:n,programId:i=_i}=o;return Gf(t,e,n,i)}function Kn(o){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:r=_i}=o;return Uf(e,t,i,n,r)}async function zn(o){let{connection:e,amount:t,commitment:n,payer:i,owner:r,skipCloseAccount:s}=o,a=await e.getMinimumBalanceForRentExemption(mn.span,n),c=ee(t).add(new qf(a)),u=Je({fromPublicKey:i,programId:_i});return{addresses:{newAccount:u.publicKey},signers:[],instructions:[Wf.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:u.seed,newAccountPubkey:u.publicKey,lamports:c.toNumber(),space:mn.span,programId:_i}),Ra({mint:new Df(dt.address),tokenAccount:u.publicKey,owner:r,programId:_i})],instructionTypes:[X.CreateAccount,X.InitAccount],endInstructionTypes:s?[]:[X.CloseAccount],endInstructions:s?[]:[Kn({tokenAccount:u.publicKey,payer:i,owner:r})]}}function il({source:o,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:r=_i}){return Xf(o,e,t,BigInt(String(n)),i,r)}var xo=class extends De{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;this._notSubscribeAccountChange=!1;this._accountFetchTime=0;let{tokenAccounts:n,tokenAccountRawInfos:i,notSubscribeAccountChange:r}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=i||[],this._notSubscribeAccountChange=r!=null?r:!0,this._clientOwnedToken=!!(n||i)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}set notSubscribeAccountChange(t){this._notSubscribeAccountChange=t}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 Z(this.scope.ownerPubKey,t,n).publicKey}resetTokenAccounts(){this._clientOwnedToken||(this._tokenAccounts=[],this._tokenAccountRawInfos=[])}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length&&Date.now()-this._accountFetchTime<(this._notSubscribeAccountChange?1e3*5:1e3*60*3))return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let i=M(M({},{}),t),[r,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Qn},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Qf},i.commitment)]),{tokenAccounts:c,tokenAccountRawInfos:u}=nl({owner:this.scope.ownerPubKey,solAccountResp:r,tokenAccountResp:{context:s.context,value:[...s.value,...a.value]}});return this._tokenAccounts=c,this._tokenAccountRawInfos=u,this._accountFetchTime=Date.now(),this._notSubscribeAccountChange||(this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>{this.fetchWalletTokenAccounts({forceUpdate:!0}),this._accountListener.forEach(l=>l({tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos}))},{commitment:t==null?void 0:t.commitment})),{tokenAccounts:c,tokenAccountRawInfos:u}}clearAccountChangeCkb(){this._accountChangeListenerId!==void 0&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId)}async getCreatedTokenAccount({mint:t,programId:n=Qn,associatedOnly:i=!0}){await this.fetchWalletTokenAccounts();let r=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 r){let{publicKey:c}=a;if(c&&(!i||i&&s.equals(c)))return c}}async getOrCreateTokenAccount(t){var y,b,g,P;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:i,associatedOnly:r,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:c=!1,checkCreateATAOwner:u=!1,assignSeed:l}=t,m=new Hr(t.tokenProgram||Qn),d=this.getAssociatedTokenAccount(n,new Hr(m)),p=(a?[]:this.tokenAccountRawInfos).filter(k=>k.accountInfo.mint.equals(n)&&(!r||k.pubkey.equals(d))).sort((k,B)=>k.accountInfo.amount.lt(B.accountInfo.amount)?1:-1);if(i===void 0||p.length>0)return p.length>0?{account:p[0].pubkey}:{};let f={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(r){let k=La(s,d,s,n,m),B=this.tokenAccountRawInfos.find(T=>T.pubkey.equals(d));if(u){let T=await this.scope.connection.getAccountInfo(d);if(T===null)(y=f.instructions)==null||y.push(k),f.instructionTypes.push(X.CreateATA);else if(!(T.owner.equals(m)&&Vi.decode(T.data).mint.equals(n)&&Vi.decode(T.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${d.toString()}`)}else B===void 0&&(f.instructions.push(k),f.instructionTypes.push(X.CreateATA));if(n.equals($)&&i.amount){let T=await zn({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(b=i.amount)!=null?b:0,skipCloseAccount:c});f.instructions.push(...T.instructions||[]),f.endInstructions.push(...T.endInstructions||[]),f.instructionTypes.push(...T.instructionTypes||[]),f.endInstructionTypes.push(...T.endInstructionTypes||[]),i.amount&&(f.instructions.push(il({source:T.addresses.newAccount,destination:d,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:Qn})),f.instructionTypes.push(X.TransferAmount))}return!c&&B===void 0&&(f.endInstructions.push(Kn({owner:s,payer:i.payer||s,tokenAccount:d,programId:m})),f.endInstructionTypes.push(X.CloseAccount)),{account:d,instructionParams:f}}else{let k=Je({fromPublicKey:s,programId:m,assignSeed:l}),B=await this.scope.connection.getMinimumBalanceForRentExemption(Vi.span),T=zf.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:k.seed,newAccountPubkey:k.publicKey,lamports:B+Number((P=(g=i.amount)==null?void 0:g.toString())!=null?P:0),space:Vi.span,programId:m});return f.instructions.push(T,Ra({mint:n,tokenAccount:k.publicKey,owner:this.scope.ownerPubKey,programId:m})),f.instructionTypes.push(X.CreateAccount),f.instructionTypes.push(X.InitAccount),c||(f.endInstructions.push(Kn({owner:s,payer:i.payer||s,tokenAccount:k.publicKey,programId:m})),f.endInstructionTypes.push(X.CloseAccount)),{account:k.publicKey,instructionParams:f}}}async checkOrCreateAta({mint:t,programId:n=Qn,autoUnwrapWSOLToSOL:i}){var c;await this.fetchWalletTokenAccounts();let r=(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(!r){let u=this.getAssociatedTokenAccount(t,n),l=await La(s,u,s,t,n);a.instructions=[l],a.instructionTypes=[X.CreateATA],r=u}return i&&$.toBase58()===t.toBase58()&&(a.endInstructions=[Kn({owner:s,payer:s,tokenAccount:r,programId:n})],a.endInstructionTypes=[X.CloseAccount]),{pubKey:r,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:i,mint:r,programId:s=Qn,tokenAccount:a,payer:c=this.scope.ownerPubKey,bypassAssociatedCheck:u,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(r,s);if(new Hr($).equals(r)){let p=await zn({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:c,amount:i,skipCloseAccount:l});return M({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!u){let p=[],f=La(this.scope.ownerPubKey,d,this.scope.ownerPubKey,r,s);if(m){let y=await this.scope.connection.getAccountInfo(d);if(y===null)p.push(f);else if(!(y.owner.equals(Qn)&&Vi.decode(y.data).mint.equals(r)&&Vi.decode(y.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${r.toString()}, ata: ${d.toString()}`)}else p.push(f);return{tokenAccount:d,instructions:p,instructionTypes:[X.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:i=Qn,amount:r,useSOLBalance:s,handleTokenAccount:a,feePayer:c}=t,u,l=this.createTxBuilder(c);if(n.equals(new Hr($))&&s){let m=await this.handleTokenAccount({side:"in",amount:r||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=m,f=ze(m,["tokenAccount"]);u=p,l.addInstruction(f)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:i}),!u&&a){let d=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=d,f=ze(d,["tokenAccount"]);u=p,l.addInstruction(f)}return M({tokenAccount:u},l.AllTxData)}};import{PublicKey as Ne,SystemProgram as yy}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as hl}from"@solana/spl-token";import{PublicKey as Ea}from"@solana/web3.js";var Na=E([q("instruction")]),Oa=E([q("instruction")]),Yf=E([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),ne("accRewardPerShare"),O("rewardVault"),O("rewardMint"),O("rewardSender"),w("rewardType"),H(w(),15,"padding")]),Hf=E([w("state"),w("nonce"),O("lpVault"),O("rewardVault"),O(),O(),w(),w(),w("totalReward"),ne("perShareReward"),w("lastSlot"),w("perSlotReward")]),jf=E([w("state"),w("nonce"),O("lpVault"),O("rewardVaultA"),w("totalRewardA"),ne("perShareRewardA"),w("perSlotRewardA"),q("option"),O("rewardVaultB"),Re(7),w("totalRewardB"),ne("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),O()]),Zf=E([w(),w("state"),w("nonce"),w("validRewardTokenNum"),ne("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),O("lpMint"),O("lpVault"),H(Yf,5,"rewardInfos"),O("creator"),O(),H(w(),32,"padding")]),ol=new Proxy(Hf,{get(o,e,t){return e==="decode"?(...n)=>{let i=o.decode(...n);return U(M({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(o,e,t)}}),rl=new Proxy(jf,{get(o,e,t){return e==="decode"?(...n)=>{let i=o.decode(...n);return U(M({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(o,e,t)}}),So=new Proxy(Zf,{get(o,e,t){return e==="decode"?(...n)=>{let i=o.decode(...n);return U(M({},i),{version:6,rewardInfos:i.rewardInfos.map(r=>{var s;return U(M({},r),{rewardType:((s=Object.entries(Yn).find(a=>String(a[1])===r.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(o,e,t)}}),$f=E([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Ma=E([q("instruction"),w("nonce"),H($f,5,"rewardTimeInfo")]),va=E([q("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),Fa=E([q("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Dh=E([w("state"),O("id"),O("owner"),w("deposited"),H(w(),1,"rewardDebts")]),Ko=E([w("state"),O("id"),O("owner"),w("deposited"),H(ne(),1,"rewardDebts"),w(""),w("voteLockedBalance"),H(w(),15)]),Wh=E([w("state"),O("id"),O("owner"),w("deposited"),H(w(),2,"rewardDebts")]),sl=E([w("state"),O("id"),O("owner"),w("deposited"),H(ne(),2,"rewardDebts"),H(w(),17)]),al=E([w(),w("state"),O("id"),O("owner"),w("deposited"),H(ne(),5,"rewardDebts"),H(w(),16)]),Ct=E([q("instruction"),w("amount")]),Jf=E([O("mint"),O("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),Jc("digitShift"),H(q(),7,"reserved1"),H(w(),7,"reserved2")]),ul=E([Re(8),O("governanceProgramId"),O("realm"),O("realmGoverningTokenMint"),O("realmAuthority"),H(q(),32,"reserved1"),H(Jf,4,"votingMints"),Ei("timeOffset"),q("bump"),H(q(),7,"reserved2"),H(w(),11,"reserved3")]),ey=E([Ei("startTime"),Ei("endTime"),q("kind"),H(q(),15,"reserved")]),ty=E([H(ey,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),Xe("isUsed"),Xe("allowClawback"),q("votingMintConfigIdx"),H(q(),29,"reserved")]),cl=E([Re(8),O("voterAuthority"),O("registrar"),H(ty,32,"deposits"),q("voterBump"),q("voterWweightRecordBump"),H(q(),94,"reserved")]);import{NATIVE_MINT as ny}from"@solana/spl-token";var jh=Pe("Raydium_farm_config"),ll=new Ea("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ml=new Ea("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),Zh=ny,$h=new Ea("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX"),dl={3:ol,5:rl,6:So},pl={3:Ko,5:sl,6:al},_a=o=>[3,4,5,6].indexOf(o)!==-1,Va=o=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=o,i=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,r={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${i}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${i}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${i}`}};return(s=r[e])==null?void 0:s.call(r)},Yn={"Standard SPL":0,"Option tokens":1},Qt={[oa.toString()]:3,[ra.toString()]:4,[sa.toString()]:5,[Li.toString()]:6,[xn.FARM_PROGRAM_ID_V3.toString()]:3,[xn.FARM_PROGRAM_ID_V4.toString()]:4,[xn.FARM_PROGRAM_ID_V5.toString()]:5,[xn.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as me,SystemProgram as li,SYSVAR_CLOCK_PUBKEY as Wi,SYSVAR_RENT_PUBKEY as ry,TransactionInstruction as ct}from"@solana/web3.js";import jr from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as sy,createAssociatedTokenAccountIdempotentInstruction as ay,TOKEN_PROGRAM_ID as Et}from"@solana/spl-token";function Da(o,e,t){return oe([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],o)}function Wa(o,e){return oe([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],o)}function qa(o,e){return oe([e.toBuffer()],o)}function Ua(o,e,t){return oe([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],o)}function Ga(o,e,t){return oe([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],o)}function Xa(o,e,t,n){return oe([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],o)}import Ft from"bn.js";var Co=Pe("Raydium.farm.util");function Ro({programId:o,poolId:e,mint:t,type:n}){let{publicKey:i}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],o);return i}function Tt({programId:o,poolId:e,owner:t,version:n}){let{publicKey:i}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],o);return i}var fl=({programId:o,poolId:e})=>oe([e.toBuffer()],o);function yl(o){return{isSet:new Ft(1),rewardPerSecond:ee(o.perSecond),rewardOpenTime:ee(o.openTime),rewardEndTime:ee(o.endTime),rewardType:ee(Yn[o.rewardType])}}function za(o){return ee(o.endTime).sub(ee(o.openTime)).mul(ee(o.perSecond))}function Di(o){let e=pl[o];return e||Co.logWithError("invalid version",o),e}function iy(o){let e=dl[o];return e||Co.logWithError("invalid version",o),e}function oy(o,e,t,n){if(o.version===3||o.version===5){if(o.lastSlot.gte(new Ft(t)))return o;let i=new Ft(t).sub(o.lastSlot);o.lastSlot=new Ft(t);for(let r of o.rewardInfos){if(e.amount.eq(new Ft(0)))continue;let s=r.perSlotReward.mul(i);r.perShareReward=r.perShareReward.add(s.mul(new Ft(10).pow(new Ft(o.version===3?9:15))).div(e.amount)),r.totalReward=r.totalReward.add(s)}}else if(o.version===6)for(let i of o.rewardInfos){if(i.rewardState.eq(new Ft(0)))continue;let r=Ft.min(new Ft(n),i.rewardEndTime);if(i.rewardOpenTime.gte(r))continue;let a=r.sub(i.rewardLastUpdateTime).mul(i.rewardPerSecond),c=i.totalReward.sub(i.totalRewardEmissioned);c.lt(a)?(a=c,i.rewardLastUpdateTime=i.rewardLastUpdateTime.add(c.div(i.rewardPerSecond))):i.rewardLastUpdateTime=r,!e.amount.eq(new Ft(0))&&(i.accRewardPerShare=i.accRewardPerShare.add(a.mul(o.rewardMultiplier).div(e.amount)),i.totalRewardEmissioned=i.totalRewardEmissioned.add(a))}return o}async function yT({connection:o,farmPools:e,owner:t,config:n,chainTime:i}){let r=!1,s=!1,a=new Ft(10),c=[];for(let d of e){let p=Ve(d);p.version===6?s=!0:r=!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:Tt({programId:p.programId,poolId:p.id,owner:t,version:d.version}),version:p.version,key:"ledger",poolId:p.id})}let u={},l=await Fe(o,c,n);for(let{pubkey:d,version:p,key:f,poolId:y,accountInfo:b}of l){let g=y.toBase58();if(u[g]=M({},u[g]),f==="state"){let P=iy(p);(!b||!b.data||b.data.length!==P.span)&&Co.logWithError(`invalid farm state account info, pools.id, ${d}`),u[g].state=P.decode(b.data)}else if(f==="lpVault")(!b||!b.data||b.data.length!==mn.span)&&Co.logWithError(`invalid farm lp vault account info, pools.lpVault, ${d}`),u[g].lpVault=mn.decode(b.data);else if(f==="ledger"){let P=Di(p);b&&b.data&&(b.data.length!==P.span&&Co.logWithError(`invalid farm ledger account info, ledger, ${d}`),u[g].ledger=P.decode(b.data))}}let m=s||r?await o.getSlot():0;for(let d of Object.keys(u))u[d]!==void 0&&(u[d].state=oy(u[d].state,u[d].lpVault,m,i));for(let[d,{state:p,ledger:f}]of Object.entries(u))if(f){let y=p.version===6?p.rewardMultiplier:p.rewardInfos.length===1?a.pow(new Ft(9)):a.pow(new Ft(15)),b=p.rewardInfos.map((g,P)=>{let k=f.rewardDebts[P];return f.deposited.mul(p.version===6?g.accRewardPerShare:g.perShareReward).div(y).sub(k)});u[d].wrapped=U(M({},u[d].wrapped),{pendingRewards:b})}return u}function bT(o,e=Date.now()){if(o.version===6){let t=o.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>xc(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>Sc(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 Qa(o,e,t,n){let i=await o.getAccountInfo(e);if(i===null)throw Error("registrar info check error");let s=ul.decode(i.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=cl.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return u===-1?{index:s,isInit:!1}:{index:u,isInit:!0}}var uy=Pe("Raydium_farm_instruction"),Lo={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 No(o){let{version:e,id:t,ledger:n,programId:i,owner:r}=o,s={3:9,5:10}[e];s||uy.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Na.span);Na.encode({instruction:s},a);let c=[A({pubkey:t}),A({pubkey:n}),A({pubkey:r,isWritable:!1}),A({pubkey:li.programId,isWritable:!1}),A({pubkey:ry,isWritable:!1})];return{instruction:new ct({programId:i,keys:c,data:a}),instructionType:X.FarmV3CreateLedger}}function bl(o){var n;let e=Buffer.alloc(Ma.span);Ma.encode({instruction:0,nonce:new jr(o.nonce),rewardTimeInfo:o.rewardInfoConfig},e);let t=[...zs,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:pt}),A({pubkey:o.owner,isWritable:!1,isSigner:!0})];for(let i of o.rewardInfo)t.push(A({pubkey:i.rewardMint,isWritable:!1}),A({pubkey:i.rewardVault}),A({pubkey:i.userRewardToken}));return{instruction:new ct({programId:o.programId,keys:t,data:e}),instructionType:X.FarmV6Create}}function gl(o){let e=Buffer.alloc(Oa.span);Oa.encode({instruction:5},e);let t=[A({pubkey:Et,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 ct({programId:o.programId,keys:t,data:e}),instructionType:X.FarmV6CreatorWithdraw}}function cy(o,e,t,n,i,r,s,a,c,u,l,m,d){let p=E([q("depositEntryIndex"),w("amount")]),f=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:Et,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:Sr,isSigner:!1,isWritable:!1}],y=Buffer.alloc(p.span);p.encode({depositEntryIndex:m,amount:d},y);let b=Buffer.from([...Lo.voterStakeRegistryDeposit,...y]);return new ct({keys:f,programId:o,data:b})}function ly(o,e,t,n){let i=E([]),r=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:li.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([...Lo.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new ct({keys:r,programId:o,data:a})}function my(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f){let y=E([q("depositEntryIndex"),w("amount")]),b=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:Et,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:Sr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(y.span);y.encode({depositEntryIndex:p,amount:f},g);let P=Buffer.from([...Lo.voterStakeRegistryWithdraw,...g]);return new ct({keys:b,programId:o,data:P})}function dy(o,e,t,n,i,r){let s=E([q("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:li.programId,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);return s.encode({ins:23},c),new ct({keys:a,programId:o,data:c})}function py(o,e,t,n,i,r,s,a){let c=E([q("voterBump"),q("voterWeightRecordBump")]),u=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!0,isWritable:!0},{pubkey:li.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:Sr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({voterBump:s,voterWeightRecordBump:a},l);let m=Buffer.from([...Lo.voterStakeRegistryCreateVoter,...l]);return new ct({keys:u,programId:o,data:m})}function fy(o,e,t,n,i,r,s,a,c,u,l,m){let d=E([q("depositEntryIndex"),q("kind"),q("option"),w("startTs"),Pt("periods"),Xe("allowClawback")]),p=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:li.programId,isSigner:!1,isWritable:!1},{pubkey:Et,isSigner:!1,isWritable:!1},{pubkey:sy,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({depositEntryIndex:a,kind:c,option:u===void 0?0:1,startTs:u,periods:l,allowClawback:m},f);let y=Buffer.from([...Lo.voterStakeRegistryCreateDepositEntry,...f]);return new ct({keys:p,programId:o,data:y})}async function NT({connection:o,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:r,owner:s,poolId:a,tokenProgram:c}){let u=Da(n,i,r).publicKey,l=Tt({programId:e,poolId:a,owner:s,version:3}),m=await o.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=Ko.decode(m.data),p=d.deposited.sub(d.voteLockedBalance);if(console.log("amount",p.toString()),p.eq(new jr(0)))throw Error("user do not has new stake amount");let f=Wa(e,a).publicKey,y=qa(e,a).publicKey,{publicKey:b,nonce:g}=Ua(n,u,s),P=Z(b,f,c).publicKey,{publicKey:k,nonce:B}=Ga(n,u,s),T=Xa(t,i,r,s).publicKey,h=[],S=Z(s,f,c).publicKey;if(await o.getAccountInfo(S)===null&&h.push(ay(s,S,s,f)),await o.getAccountInfo(b)===null){let F=dy(t,i,s,r,s,T);h.push(F,py(n,u,b,k,s,s,g,B))}let{index:I,isInit:C}=await Qa(o,u,b,f);return C||h.push(fy(n,u,b,P,s,s,f,I,0,void 0,0,!1)),h.push(cy(n,u,b,P,S,s,l,a,f,y,e,I,p),ly(n,u,b,k)),h}async function OT({connection:o,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:r,owner:s,poolId:a,tokenProgram:c}){let u=Da(n,i,r).publicKey,l=Tt({programId:e,poolId:a,owner:s,version:3}),m=await o.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=Ko.decode(m.data);if(d.voteLockedBalance.eq(new jr(0)))throw Error("user has vote locked balance = 0");let p=Wa(e,a).publicKey,f=qa(e,a).publicKey,{publicKey:y}=Ua(n,u,s),b=Z(y,p,c).publicKey,{publicKey:g}=Ga(n,u,s),P=Xa(t,i,r,s).publicKey,k=[],{index:B,isInit:T}=await Qa(o,u,y,p);if(!T)throw Error("deposit entry index check error");return k.push(my(n,u,y,s,P,g,b,Z(s,p,c).publicKey,l,a,p,f,e,B,d.voteLockedBalance)),k}function Ya({payer:o,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let r=Buffer.alloc(va.span);va.encode({instruction:3,rewardReopenTime:ee(i.openTime),rewardEndTime:ee(i.endTime),rewardPerSecond:ee(i.perSecond)},r);let s=[A({pubkey:Et,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 ct({programId:n.programId,keys:s,data:r})}function Ha({payer:o,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let r=Buffer.alloc(Fa.span);Fa.encode({instruction:4,isSet:new jr(1),rewardPerSecond:ee(i.perSecond),rewardOpenTime:ee(i.openTime),rewardEndTime:ee(i.endTime),rewardType:ee(Yn[i.rewardType])},r);let s=[...zs,A({pubkey:t.id}),A({pubkey:t.authority,isWritable:!1}),A({pubkey:i.mint,isWritable:!1}),A({pubkey:n}),A({pubkey:e}),A({pubkey:o,isWritable:!1,isSigner:!0})];return new ct({programId:t.programId,keys:s,data:r})}function MT(o){let{farmInfo:e,farmKeys:t,version:n,lpAccount:i,rewardAccounts:r,owner:s,instruction:a,amount:c,deposit:u}=o,[l,m]=[new me(e.programId),new me(e.id)],d=Tt({programId:l,poolId:m,owner:s,version:n}),p=Buffer.alloc(Ct.span);Ct.encode({instruction:a,amount:c},p);let f=n===6?[A({pubkey:Et,isWritable:!1}),...u?[A({pubkey:li.programId,isWritable:!1})]:[],A({pubkey:m}),A({pubkey:new me(t.authority),isWritable:!1}),A({pubkey:new me(t.lpVault)}),A({pubkey:d}),A({pubkey:s,isWritable:!1,isSigner:!0}),A({pubkey:i})]:[A({pubkey:m}),A({pubkey:new me(t.authority),isWritable:!1}),A({pubkey:d}),A({pubkey:s,isWritable:!1,isSigner:!0}),A({pubkey:i}),A({pubkey:new me(t.lpVault)}),A({pubkey:r[0]}),A({pubkey:new me(t.rewardInfos[0].vault)}),A({pubkey:Wi,isWritable:!1}),A({pubkey:Et,isWritable:!1})];if(n===5)for(let y=1;y<t.rewardInfos.length;y++)f.push(A({pubkey:r[y]})),f.push(A({pubkey:new me(t.rewardInfos[y].vault)}));if(n===6)for(let y=0;y<t.rewardInfos.length;y++)f.push(A({pubkey:new me(t.rewardInfos[y].vault)})),f.push(A({pubkey:r[y]}));return new ct({programId:l,keys:f,data:p})}function Oo(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:r,amount:s}=o,[a,c]=[new me(e.programId),new me(e.id)],u=Tt({programId:a,poolId:c,owner:r,version:6}),l=Buffer.alloc(Ct.span);Ct.encode({instruction:2,amount:ee(s)},l);let m=[A({pubkey:Et,isWritable:!1}),A({pubkey:c}),A({pubkey:new me(t.authority),isWritable:!1}),A({pubkey:new me(t.lpVault)}),A({pubkey:u}),A({pubkey:r,isWritable:!1,isSigner:!0}),A({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(A({pubkey:new me(t.rewardInfos[d].vault)})),m.push(A({pubkey:i[d]}));return new ct({programId:a,keys:m,data:l})}function Mo(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:r,amount:s,userAuxiliaryLedgers:a}=o,[c,u]=[new me(e.programId),new me(e.id)],l=Tt({programId:c,poolId:u,owner:r,version:5}),m=Buffer.alloc(Ct.span);Ct.encode({instruction:12,amount:ee(s)},m);let d=[A({pubkey:u}),A({pubkey:new me(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:r,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new me(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new me(t.rewardInfos[0].vault)}),A({pubkey:Wi,isWritable:!1}),A({pubkey:Et,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(A({pubkey:i[p]})),d.push(A({pubkey:new me(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(A({pubkey:p}));return new ct({programId:c,keys:d,data:m})}function Al(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:r,amount:s,userAuxiliaryLedgers:a}=o,[c,u]=[new me(e.programId),new me(e.id)],l=E([q("instruction"),w("amount")]),m=[A({pubkey:u}),A({pubkey:new me(t.authority),isWritable:!1}),A({pubkey:a[0]}),A({pubkey:r,isSigner:!0,isWritable:!1}),A({pubkey:n}),A({pubkey:new me(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new me(t.rewardInfos[0].vault)}),A({pubkey:Wi,isWritable:!1}),A({pubkey:Et,isWritable:!1}),A({pubkey:i[1]}),A({pubkey:new me(t.rewardInfos[1].vault)})],d=Buffer.alloc(l.span);return l.encode({instruction:2,amount:s},d),new ct({keys:m,programId:c,data:d})}function vo(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:r,amount:s,userAuxiliaryLedgers:a}=o,[c,u]=[new me(e.programId),new me(e.id)],l=Tt({programId:c,poolId:u,owner:r,version:3}),m=Buffer.alloc(Ct.span);Ct.encode({instruction:11,amount:ee(s)},m);let d=[A({pubkey:u}),A({pubkey:new me(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:r,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new me(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new me(t.rewardInfos[0].vault)}),A({pubkey:Wi,isWritable:!1}),A({pubkey:Et,isWritable:!1})];if(a)for(let p of a)d.push(A({pubkey:p}));return new ct({programId:c,keys:d,data:m})}function Pl(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:r,amount:s,userAuxiliaryLedgers:a}=o,[c,u]=[new me(e.programId),new me(e.id)],l=Tt({programId:c,poolId:u,owner:r,version:3}),m=Buffer.alloc(Ct.span);Ct.encode({instruction:10,amount:ee(s)},m);let d=[A({pubkey:u}),A({pubkey:new me(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:r,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new me(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new me(t.rewardInfos[0].vault)}),A({pubkey:Wi,isWritable:!1}),A({pubkey:Et,isWritable:!1})];if(a)for(let p of a)d.push(A({pubkey:p}));return new ct({programId:c,keys:d,data:m})}function wl(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:r,amount:s,userAuxiliaryLedgers:a}=o,[c,u]=[new me(e.programId),new me(e.id)],l=Tt({programId:c,poolId:u,owner:r,version:5}),m=Buffer.alloc(Ct.span);Ct.encode({instruction:11,amount:ee(s)},m);let d=[A({pubkey:u}),A({pubkey:new me(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:r,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new me(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new me(t.rewardInfos[0].vault)}),A({pubkey:Wi,isWritable:!1}),A({pubkey:Et,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(A({pubkey:i[p]})),d.push(A({pubkey:new me(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(A({pubkey:p}));return new ct({programId:c,keys:d,data:m})}function kl(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:r,amount:s}=o,[a,c]=[new me(e.programId),new me(e.id)],u=Tt({programId:a,poolId:c,owner:r,version:6}),l=Buffer.alloc(Ct.span);Ct.encode({instruction:1,amount:ee(s)},l);let m=[A({pubkey:Et,isWritable:!1}),A({pubkey:li.programId,isWritable:!1}),A({pubkey:c}),A({pubkey:new me(t.authority),isWritable:!1}),A({pubkey:new me(t.lpVault)}),A({pubkey:u}),A({pubkey:r,isWritable:!1,isSigner:!0}),A({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(A({pubkey:new me(t.rewardInfos[d].vault)})),m.push(A({pubkey:i[d]}));return new ct({programId:a,keys:m,data:l})}var Fo=class extends De{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(pt)){let n=await zn({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:za(U(M({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:n,programId:i=Li,txVersion:r,feePayer:s,lockProgram:a}){var S,x;this.checkDisabled(),this.scope.checkOwner();let u={lpMint:new Ne(e.lpMint.address),lockInfo:{lockMint:(S=a==null?void 0:a.mint)!=null?S:ll,lockVault:(x=a==null?void 0:a.vault)!=null?x:ml},version:6,rewardInfos:t,programId:i},l=this.createTxBuilder(s),m=n!=null?n:this.scope.ownerPubKey,d=Je({fromPublicKey:m,programId:u.programId}),p=await this.scope.connection.getMinimumBalanceForRentExemption(So.span);l.addInstruction({instructions:[yy.createAccountWithSeed({fromPubkey:m,basePubkey:m,seed:d.seed,newAccountPubkey:d.publicKey,lamports:p,space:So.span,programId:u.programId})]});let{publicKey:f,nonce:y}=fl({programId:new Ne(u.programId),poolId:d.publicKey}),b=Ro({programId:u.programId,poolId:d.publicKey,mint:u.lpMint,type:"lpVault"}),g=[],P=[];for(let K of u.rewardInfos){K.openTime>=K.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",K.openTime.toString()),isNaN(Yn[K.rewardType])&&this.logAndCreateError("rewardType error",K.rewardType),Number(K.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",K.perSecond),g.push(yl(K));let{rewardPubKey:I,newInstruction:C}=await this._getUserRewardInfo({rewardInfo:K,payer:m});C&&l.addInstruction(C),I||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let F=K.mint.equals(pt)?new Ne(dt.address):K.mint;P.push({rewardMint:F,rewardVault:Ro({programId:u.programId,poolId:d.publicKey,mint:F,type:"rewardVault"}),userRewardToken:I})}let{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:new Ne(u.lockInfo.lockMint),owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1});B&&l.addInstruction(B),k||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:T,instructionType:h}=bl({farmId:d.publicKey,owner:this.scope.ownerPubKey,farmAuthority:f,lpVault:b,lpMint:u.lpMint,lockVault:u.lockInfo.lockVault,lockMint:u.lockInfo.lockMint,lockUserAccount:k,programId:u.programId,rewardInfo:P,rewardInfoConfig:g,nonce:y});return l.addInstruction({instructions:[T],instructionTypes:[h]}).versionBuild({txVersion:r,extInfo:{farmId:d.publicKey,farmAuthority:f,lpVault:b,lockUserAccount:k,nonce:y}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:i,feePayer:r}){var g;let s=Qt[e.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ve((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),c={id:a.id,rewardInfos:e.rewardInfos,lpVault:a.lpVault,programId:a.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=t||this.scope.ownerPubKey,l=n.mint.equals(pt)?new Ne(dt.address):n.mint,m=c.rewardInfos.findIndex(P=>new Ne(P.mint.address).equals(l)),d=a.rewardInfos[m];d||this.logAndCreateError("configuration does not exist","rewardMint",l);let p=(g=d.vault)!=null?g:pt,f=this.createTxBuilder(r),{rewardPubKey:y,newInstruction:b}=await this._getUserRewardInfo({rewardInfo:n,payer:u});return b&&f.addInstruction(b),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),f.addInstruction({instructions:[Ya({payer:this.scope.ownerPubKey,rewardVault:p,userRewardTokenPub:y,farmKeys:c,rewardInfo:n})],instructionTypes:[X.FarmV6Restart]}).versionBuild({txVersion:i})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:i,feePayer:r}){var m;let s=Qt[e.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ve((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),c={id:a.id,rewardInfos:e.rewardInfos,lpVault:a.lpVault,programId:a.programId};n.forEach(d=>{d.openTime>=d.endTime&&this.logAndCreateError("start time error","newRewardInfo",d)});let u=t||this.scope.ownerPubKey,l=this.createTxBuilder(r);for(let d of n){let p=d.mint.equals(pt)?new Ne(dt.address):d.mint,f=c.rewardInfos.findIndex(B=>new Ne(B.mint.address).equals(p)),y=a.rewardInfos[f];y||this.logAndCreateError("configuration does not exist","rewardMint",p);let b=(m=y.vault)!=null?m:pt,{rewardPubKey:g,newInstruction:P}=await this._getUserRewardInfo({rewardInfo:d,payer:u});P&&l.addInstruction(P),g||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let k=Ya({payer:this.scope.ownerPubKey,rewardVault:b,userRewardTokenPub:g,farmKeys:c,rewardInfo:d});l.addInstruction({instructions:[k],instructionTypes:[X.FarmV6Restart]})}return l.versionBuild({txVersion:i})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:i,payer:r,feePayer:s}=e,a=Qt[n.programId];a!==6&&this.logAndCreateError("invalid farm version ",a);let c=Ve((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=r!=null?r:this.scope.ownerPubKey,l=this.createTxBuilder(s),m=i.mint.equals(pt)?new Ne(dt.address):i.mint,d=Ro({programId:new Ne(n.programId),poolId:new Ne(n.id),mint:m,type:"rewardVault"}),{rewardPubKey:p,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:i,payer:u});return f&&l.addInstruction(f),p||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),i.mint=m,l.addInstruction({instructions:[Ha({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:c,rewardVault:d,rewardInfo:i})],instructionTypes:[X.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:i,payer:r,feePayer:s}=e,a=Qt[n.programId];a!==6&&this.logAndCreateError("invalid farm version ",a);let c=Ve((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=r!=null?r:this.scope.ownerPubKey,l=this.createTxBuilder(s);for(let m of i){let d=m.mint.equals(pt)?new Ne(dt.address):m.mint,p=Ro({programId:new Ne(n.programId),poolId:new Ne(n.id),mint:d,type:"rewardVault"}),{rewardPubKey:f,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:m,payer:u});y&&l.addInstruction(y),f||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let b=Ha({payer:this.scope.ownerPubKey,userRewardTokenPub:f,farmKeys:c,rewardVault:p,rewardInfo:U(M({},m),{mint:d})});l.addInstruction({instructions:[b],instructionTypes:[X.FarmV6CreatorAddReward]})}return l.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:i,feePayer:r,useSOLBalance:s,associatedOnly:a=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:u,computeBudgetConfig:l,txTipConfig:m}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:d,programId:p}=n,f=Qt[p];f===4&&this.logAndCreateError("V4 has suspended deposits:",n.programId),_a(f)||this.logAndCreateError("invalid farm program:",n.programId);let[y,b]=[new Ne(n.programId),new Ne(n.id)],g=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],P=Tt({programId:y,poolId:b,owner:this.scope.ownerPubKey,version:f}),k=this.createTxBuilder(r);k.addCustomComputeBudget(l),k.addTipInstruction(m);let B={};for(let R of this.scope.account.tokenAccounts)if(a){let L=Z(this.scope.ownerPubKey,R.mint,R.programId).publicKey;R.publicKey&&L.equals(R.publicKey)&&(B[R.mint.toString()]=R.publicKey)}else B[R.mint.toString()]=R.publicKey;let T=g.lpMint,h=B[T.address];h||this.logAndCreateError("you don't have any lp","lp zero",B);let S=[];for(let R of d){let L=s&&R.mint.address===$.toString(),V=B[R.mint.address];if(!V){let{account:Y,instructionParams:te}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:R.mint.programId,mint:new Ne(R.mint.address),notUseTokenAccount:L,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!L,associatedOnly:L?!1:a,checkCreateATAOwner:c});V=Y,te&&k.addInstruction(te)}B[R.mint.address]=V,S.push(V)}let x,K=await this.scope.connection.getAccountInfo(P);if(K&&(x=Di(f).decode(K.data)),n.programId!==Li.toString()&&n.programId!==xn.FARM_PROGRAM_ID_V6.toString()&&!x){let{instruction:R,instructionType:L}=No({id:b,programId:y,version:f,ledger:P,owner:this.scope.ownerPubKey});k.addInstruction({instructions:[R],instructionTypes:[L]})}let I=Va({version:f,rewardInfos:d,rewardTokenAccountsPublicKeys:S});I&&this.logAndCreateError(I);let C={amount:ee(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:g,lpAccount:h,rewardAccounts:S,userAuxiliaryLedgers:u==null?void 0:u.map(R=>new Ne(R))},F=f===6?kl(C):f===5?wl(C):Pl(C),v={3:X.FarmV3Deposit,5:X.FarmV5Deposit,6:X.FarmV6Deposit};return k.addInstruction({instructions:[F],instructionTypes:[v[f]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:i,deposited:r,useSOLBalance:s,feePayer:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:l,computeBudgetConfig:m,txTipConfig:d}=e,{rewardInfos:p}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let f=Qt[n.programId];_a(f)||this.logAndCreateError("invalid farm program:",n.programId);let y=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],b=this.createTxBuilder(a);b.addCustomComputeBudget(m),b.addTipInstruction(d);let g={};for(let I of this.scope.account.tokenAccounts)if(c){let C=Z(this.scope.ownerPubKey,I.mint).publicKey;I.publicKey&&C.equals(I.publicKey)&&(g[I.mint.toString()]=I.publicKey)}else g[I.mint.toString()]=I.publicKey;if(f!==4){let I=Tt({programId:new Ne(n.programId),poolId:new Ne(n.id),owner:this.scope.ownerPubKey,version:f}),C=await this.scope.connection.getAccountInfo(I);if(C)Di(f).decode(C.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else if(f!==6){let{instruction:F,instructionType:v}=No({id:new Ne(y.id),programId:new Ne(y.programId),version:f,ledger:I,owner:this.scope.ownerPubKey});b.addInstruction({instructions:[F],instructionTypes:[v]})}}r&&r.isZero()&&!(l||[]).length&&this.logAndCreateError("no deposited lp",{farmId:n.id});let P=y.lpMint.address,k=s&&P===$.toString(),B=g[P.toString()];if(!B){let{account:I,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new Ne(P),notUseTokenAccount:k,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:k?!1:c,checkCreateATAOwner:u});B=I,C&&b.addInstruction(C)}g[P.toString()]=B;let T=[];for(let I of p){let C=s&&I.mint.address===$.toString(),F=g[I.mint.address];if(!F){let{account:v,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:I.mint.programId,mint:new Ne(I.mint.address),notUseTokenAccount:C,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!C,associatedOnly:C?!1:c,checkCreateATAOwner:u});F=v,R&&b.addInstruction(R)}g[I.mint.address]=F,T.push(F)}let h=Va({version:f,rewardInfos:p,rewardTokenAccountsPublicKeys:T});h&&this.logAndCreateError(h);let S={amount:ee(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:B,rewardAccounts:T,userAuxiliaryLedgers:l==null?void 0:l.map(I=>new Ne(I))},x=f===6?Oo(S):f===5?Mo(S):f===4?Al(S):vo(S),K={3:X.FarmV3Withdraw,4:X.FarmV4Withdraw,5:X.FarmV5Withdraw,6:X.FarmV6Withdraw};return b.addInstruction({instructions:[x],instructionTypes:[K[f]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n,computeBudgetConfig:i,txTipConfig:r,feePayer:s}){var y;this.scope.checkOwner();let a=Ve((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),c=Qt[e.programId];c!==6&&this.logAndCreateError("invalid farm version",c);let u=a.rewardInfos.find(b=>kt(b.mint.address).equals(kt(t)));u||this.logAndCreateError("withdraw mint error","rewardInfos",e);let l=(y=u==null?void 0:u.vault)!=null?y:pt,m=this.createTxBuilder(s),d;if(t.equals(pt)||t.equals(Ne.default)){let b=await zn({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:za(U(M({},u),{openTime:u.openTime,endTime:u.endTime,perSecond:new N(u.perSecond).mul(10**u.mint.decimals).toString()}))});d=b.addresses.newAccount,m.addInstruction(b)}else{let b=await this.scope.account.getCreatedTokenAccount({mint:t});b===null?(d=await this.scope.account.getAssociatedTokenAccount(t),m.addInstruction({instructions:[hl(this.scope.ownerPubKey,d,this.scope.ownerPubKey,t)],instructionTypes:[X.CreateATA]})):d=b}let{instruction:p,instructionType:f}=gl({programId:a.programId,id:a.id,authority:a.authority,lpVault:a.lpVault,rewardVault:l,userRewardToken:d,owner:this.scope.ownerPubKey});return m.addCustomComputeBudget(i),m.addTipInstruction(r),m.addInstruction({instructions:[p],instructionTypes:[f]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:i,associatedOnly:r=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:c,computeBudgetConfig:u}=e,l=this.createTxBuilder(i),m={};for(let f of this.scope.account.tokenAccounts)if(r){let y=Z(this.scope.ownerPubKey,f.mint).publicKey;f.publicKey&&y.equals(f.publicKey)&&(m[f.mint.toString()]=f.publicKey)}else m[f.mint.toString()]=f.publicKey;let p=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(f=>f.id).join(",")})).reduce((f,y)=>U(M({},f),{[y.id]:y}),{});for(let f of Object.values(t)){let{programId:y,lpMint:b,rewardInfos:g,id:P}=f,k=Qt[y],B=b.address,T=n&&B===$.toString(),h=m[B];if(!h){let{account:F,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new Ne(B),notUseTokenAccount:T,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:T?!1:r,checkCreateATAOwner:s});h=F,v&&l.addInstruction(v)}m[B.toString()]=h;let S=[];for(let F of g){let v=n&&F.mint.address===$.toString(),R=m[F.mint.address];if(!R)if(v){let{account:L,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:F.mint.programId,mint:new Ne(F.mint.address),notUseTokenAccount:v,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!v,associatedOnly:v?!1:r,checkCreateATAOwner:s});R=L,V&&l.addInstruction(V)}else{let L=new Ne(F.mint.address);R=this.scope.account.getAssociatedTokenAccount(L),l.addInstruction({instructions:[hl(this.scope.ownerPubKey,R,this.scope.ownerPubKey,L)]})}m[F.mint.address]=R,S.push(R)}let x=p[P],K={amount:ot,owner:this.scope.ownerPubKey,farmInfo:f,farmKeys:x,lpAccount:h,rewardAccounts:S,userAuxiliaryLedgers:a==null?void 0:a.map(F=>new Ne(F))},I=k===6?Oo(K):k===5?Mo(K):vo(K),C={3:X.FarmV3Withdraw,5:X.FarmV5Withdraw,6:X.FarmV6Withdraw};l.addInstruction({instructions:[I],instructionTypes:[C[k]]})}return c===1?l.sizeCheckBuild({computeBudgetConfig:u}):l.sizeCheckBuildV0({computeBudgetConfig:u})}};import{PublicKey as rt}from"@solana/web3.js";import{AccountLayout as ob,NATIVE_MINT as ls,TOKEN_PROGRAM_ID as jn}from"@solana/spl-token";import{Keypair as is,PublicKey as z,SystemProgram as Nn,TransactionInstruction as wt}from"@solana/web3.js";import su from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Go,TOKEN_2022_PROGRAM_ID as Qe,TOKEN_PROGRAM_ID as Oe}from"@solana/spl-token";import xy from"bn.js";import Yt from"bn.js";var ke=new Yt(0),Wt=new Yt(1),Cn=new Yt(-1),lt=new Yt(1).shln(64),Zr=new Yt(1).shln(128),Eo=lt.sub(Wt),_o=64,Tl=Zr.subn(1),It=-443636,Rt=-It,Ht=new Yt("4295048016"),jt=new Yt("79226673521066979257578248091"),$r=new Yt("4295048017"),Jr=new Yt("79226673521066979257578248090"),Il=16,Bl="59543866431248",xl="184467440737095516",Sl="15793534762490258745",es=new Yt(10).pow(new Yt(6)),by=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(by||{}),mI={[500]:10,[3e3]:60,[1e4]:200},dI={version:6,liquidity:ke,tickCurrent:0,feeGrowthGlobalX64A:ke,feeGrowthGlobalX64B:ke,protocolFeesTokenA:ke,protocolFeesTokenB:ke,swapInAmountTokenA:ke,swapOutAmountTokenB:ke,swapInAmountTokenB:ke,swapOutAmountTokenA:ke,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},Kl={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:[]},pI=new Yt("18446744073700000000");import ge from"bn.js";function ts(o){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,o,!1),new Uint8Array(e)}function yI(o){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,o,!1),new Uint8Array(e)}function bI(o){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,o,!1),new Uint8Array(e)}function ns(o){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,o,!1),new Uint8Array(e)}function ja(o,e){let t=0;for(let n=o-1;n>=0&&!e.testn(n);n--)t++;return t}function Za(o,e){let t=0;for(let n=0;n<o&&!e.testn(n);n++)t++;return t}function Vo(o,e){for(let t=0;t<o;t++)if(e.testn(t))return!1;return!0}function Cl(o,e){return Vo(o,e)?null:ja(o,e)}function Rl(o,e){return Vo(o,e)?null:Za(o,e)}var gy=Buffer.from("amm_config","utf8"),$a=Buffer.from("pool","utf8"),Ja=Buffer.from("pool_vault","utf8"),Ay=Buffer.from("pool_reward_vault","utf8"),Ll=Buffer.from("position","utf8"),Py=Buffer.from("tick_array","utf8"),wy=Buffer.from("operation","utf8"),ky=Buffer.from("pool_tick_array_bitmap_extension","utf8"),hy=Buffer.from("observation","utf8");function wI(o,e){return oe([gy,ts(e)],o)}function Nl(o,e,t,n){return oe([$a,e.toBuffer(),t.toBuffer(),n.toBuffer()],o)}function eu(o,e,t){return oe([Ja,e.toBuffer(),t.toBuffer()],o)}function Ol(o,e,t){return oe([Ay,e.toBuffer(),t.toBuffer()],o)}function he(o,e,t){return oe([Py,e.toBuffer(),ns(t)],o)}function dn(o,e,t,n){return oe([Ll,e.toBuffer(),ns(t),ns(n)],o)}function Lt(o,e){return oe([Ll,e.toBuffer()],o)}function Rn(o){return oe([Buffer.from("metadata","utf8"),sn.toBuffer(),o.toBuffer()],sn)}function Do(o){return oe([wy],o)}function et(o,e){return oe([ky,e.toBuffer()],o)}function Ml(o,e){return oe([hy,e.toBuffer()],o)}var vl=Buffer.from("locked_position","utf8");function tu(o,e){return oe([vl,e.toBuffer()],o)}function qi(o,e){return oe([vl,e.toBuffer()],o)}var Ty=Buffer.from("support_mint","utf8");function nu(o,e){return oe([Ty,e.toBuffer()],o)}import{PublicKey as qt}from"@solana/web3.js";import{TOKEN_2022_PROGRAM_ID as Fl}from"@solana/spl-token";import qe from"bn.js";import An from"bn.js";var Wo=class{static getfeeGrowthInside(e,t,n){let i=new An(0),r=new An(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,r=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),r=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new An(0),a=new An(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=de.wrappingSubU128(de.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),u=de.wrappingSubU128(de.wrappingSubU128(e.feeGrowthGlobalX64B,r),a);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:u}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:r,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=de.mulDivFloor(de.wrappingSubU128(r,t.feeGrowthInsideLastX64A),t.liquidity,lt),c=t.tokenFeesOwedA.add(a),u=de.mulDivFloor(de.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,lt),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:r,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=de.mulDivFloor(de.wrappingSubU128(r,t.feeGrowthInsideLastX64A),t.liquidity,lt),c=t.tokenFeesOwedA.add(a),u=de.mulDivFloor(de.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,lt),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let r=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let c=s[a],u=t.rewardInfos[a],l=de.wrappingSubU128(c,u.growthInsideLastX64),m=de.mulDivFloor(l,t.liquidity,lt),d=u.rewardAmountOwed.add(m);r.push(d)}return r}static GetPositionRewards(e,t,n,i){let r=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let c=s[a],u=t.rewardInfos[a],l=de.wrappingSubU128(c,u.growthInsideLastX64),m=de.mulDivFloor(l,t.liquidity,lt),d=u.rewardAmountOwed.add(m);r.push(d)}return r}static getRewardGrowthInside(e,t,n,i){let r=[];for(let s=0;s<i.length;s++){let a=new An(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let c=new An(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),r.push(de.wrappingSubU128(de.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),c))}return r}static getRewardGrowthInsideV2(e,t,n,i){let r=[];for(let s=0;s<i.length;s++){let a=new An(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let c=new An(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),r.push(de.wrappingSubU128(de.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),c))}return r}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:r,epochInfo:s}){var b,g,P,k;let a=ae.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),c=ae.getSqrtPriceX64FromTick(t.tickLower),u=ae.getSqrtPriceX64FromTick(t.tickUpper),l=r?1+i:1-i,m=Te.getAmountsFromLiquidity(a,c,u,n,r),[d,p]=[Ce(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),Ce(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[f,y]=[Ce(new An(new N(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),Ce(new An(new N(m.amountB.toString()).mul(l).toFixed(0)),(k=e.mintB.extensions)==null?void 0:k.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:f,amountSlippageB:y,expirationTime:un(d.expirationTime,p.expirationTime)}}};var Iy=15,xe=class{static async getTickArrays(e,t,n,i,r,s,a){let c=[],u=J.getTickArrayStartIndexByTick(i,r),l=J.getInitializedTickArrayInRange(s,a,r,u,Math.floor(Iy/2));for(let p=0;p<l.length;p++){let{publicKey:f}=he(t,n,l[p]);c.push(f)}let m=(await nn(e,c)).map(p=>p!==null?qo.decode(p.data):null),d={};for(let p=0;p<c.length;p++){let f=m[p];f!==null&&(d[f.startTickIndex]=U(M({},f),{address:c[p]}))}return d}static nextInitializedTick(e,t,n,i,r,s){let{initializedTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}=this.nextInitializedTickInOneArray(e,t,n,i,r,s);for(;a==null||a.liquidityGross.lten(0);){if(u=J.getNextTickArrayStartIndex(u,r,s),this.checkIsValidStartIndex(u,r))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,i,r){let s=Math.floor(e/xe.tickCount(t)),a=n?J.searchLowBitFromStart(i,r,s-1,1,t):J.searchHightBitFromStart(i,r,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let r;if(i){let a=mt-1;for(;a>=0;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){r=c;break}a=a-1}}else{let a=0;for(;a<mt;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){r=c;break}a=a+1}}let{publicKey:s}=he(e,t,n.startTickIndex);return{nextTick:r,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,r,s){let a=J.getTickArrayStartIndexByTick(i,r),c=Math.floor((i-a)/r),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<mt;){let d=u.ticks[c];if(d.liquidityGross.gtn(0)){l=d;break}c=c+1}let{publicKey:m}=he(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(J.checkIsOutOfBoundary(e)){if(e>Rt)return!1;let n=J.getTickArrayStartIndexByTick(It,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return mt*e}};var iu=14,Ln=class{static maxTickInTickarrayBitmap(e){return e*mt*mi}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let r=n*i;return e<0?{minValue:-r,maxValue:-r+n}:{minValue:r,maxValue:r+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!xe.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let r=this.maxTickInTickarrayBitmap(n),s=i?t-xe.tickCount(n):t+xe.tickCount(n);if(s<-r||s>=r)return{isInit:!1,tickIndex:t};let a=n*mt,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(i){let l=e.shln(1024-u-1),m=Cl(1024,l);if(m!==null){let d=(u-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-r}}else{let l=e.shrn(u),m=Rl(1024,l);if(m!==null){let d=(u+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:r-xe.tickCount(n)}}}},Uo=class{static getBitmapOffset(e,t){if(!xe.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Ln.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=Ln.maxTickInTickarrayBitmap(e),n=-t;if(Rt<=t)throw Error(`extensionTickBoundary check error: ${Rt}, ${t}`);if(n<=It)throw Error(`extensionTickBoundary check error: ${n}, ${It}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),r=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:J.mergeTickArrayBitmap(i).testn(r),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let r=xe.tickCount(t),s=n?e-r:e+r,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:r,maxValue:s}=Ln.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let c=J.mergeTickArrayBitmap(e).shln(mi-1-a),u=Vo(512,c)?null:ja(512,c);if(u!==null){let l=t-u*xe.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:r}}else{let c=J.mergeTickArrayBitmap(e).shrn(a),u=Vo(512,c)?null:Za(512,c);if(u!==null){let l=t+u*xe.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-xe.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Ln.maxTickInTickarrayBitmap(t),i=Math.floor(n/xe.tickCount(t));return e<0&&n!=0&&(i=mi-i),i}};var _e=class{static getOutputAmountAndRemainAccounts(e,t,n,i,r,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:f,sqrtPriceX64:y,feeAmount:b}=di.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,l,r,s);return c.push(...f),{allTrade:d,expectedAmountOut:p.mul(Cn),remainingAccounts:c,executionPrice:y,feeAmount:b}}static getInputAmountAndRemainAccounts(e,t,n,i,r){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 y=this.preInitializedTickArrayStartIndex(e,s);if(y.isExist){let{publicKey:b}=he(e.programId,e.id,y.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:f}=di.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(Cn),u,r);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:f}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=_e.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Uo.checkTickArrayIsInit(xe.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):J.checkTickArrayIsInitialized(J.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=he(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:r,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,xe.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(r){let{publicKey:a}=he(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/xe.tickCount(e.tickSpacing)),i=t?J.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):J.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=xe.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:r}=Ln.nextInitializedTickArrayStartIndex(J.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:r};t=r;let{isInit:s,tickIndex:a}=Uo.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<It||t>Rt)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:r}){var a,c,u;let s=[];for(let l=0;l<r.length;l++){let m=r[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=U(M({},m),{perSecond:de.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new qt(d)});if(p.tokenMint.equals(qt.default))continue;if(n<=p.openTime.toNumber()||i.eq(ke)){s.push(p);continue}let f=new qe(Math.min(p.endTime.toNumber(),n)),y=f.sub(p.lastUpdateTime),b=de.mulDivFloor(y,p.emissionsPerSecondX64,i),g=p.rewardGrowthGlobalX64.add(b),P=de.mulDivFloor(y,p.emissionsPerSecondX64,lt),k=p.rewardTotalEmissioned.add(P);s.push(U(M({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:k,lastUpdateTime:f}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let r of t){let s=J.getTickArrayStartIndexByTick(r,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=Ln.maxTickInTickarrayBitmap(e),n=-t;return t>Rt&&(t=xe.getArrayStartIndex(Rt,e)+xe.tickCount(e)),n<It&&(n=xe.getArrayStartIndex(It,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!xe.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/xe.tickCount(t)*mi}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await Fe(e,t.map(s=>({pubkey:s})),{batchRequest:n}),r={};for(let s of i)s.accountInfo!==null&&(r[s.pubkey.toString()]=_l.decode(s.accountInfo.data));return r}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},r=[];for(let c of t){let u=J.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),l=J.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let m of l){let{publicKey:d}=he(c.programId,c.id,m);r.push({pubkey:d}),i[d.toString()]=c.id}}let s=await Fe(e,r,{batchRequest:n}),a={};for(let c of s){if(!c.accountInfo)continue;let u=i[c.pubkey.toString()];if(!u)continue;a[u.toString()]===void 0&&(a[u.toString()]={});let l=qo.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]=U(M({},l),{address:c.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:r=!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(Lt(p,d).publicKey);let l=await nn(t,u,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=Ui.decode(d.data),f=p.poolId.toString(),y=e.find(x=>x.state.id.toBase58()===f);if(y===void 0)continue;let b=y.state,g=J._getTickPriceLegacy({poolInfo:b,tick:p.tickLower,baseIn:!0}),P=J._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:k,amountB:B}=Te.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,P.tickSqrtPriceX64,p.liquidity,!1),T=1/(1-Math.sqrt(Math.sqrt(g.price.div(P.price).toNumber())));y.positionAccount=[...(a=y.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:g.price,priceUpper:P.price,amountA:k,amountB:B,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=>U(M({},x),{pendingReward:new qe(0)})),leverage:T,tokenFeeAmountA:new qe(0),tokenFeeAmountB:new qe(0)}];let h=await J.getTickArrayAddressByTick(y.state.programId,p.poolId,p.tickLower,y.state.tickSpacing),S=await J.getTickArrayAddressByTick(y.state.programId,p.poolId,p.tickUpper,y.state.tickSpacing);m[`${y.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=h,m[`${y.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(r){let d=Object.values(m),p=await nn(t,d,{batchRequest:i}),f={};for(let y=0;y<d.length;y++){let b=p[y];if(b===null)continue;let g=d[y].toString();f[g]=qo.decode(b.data)}for(let{state:y,positionAccount:b}of e)if(!!b)for(let g of b){let P=`${y.programId.toString()}-${y.id.toString()}-${g.tickLower}`,k=`${y.programId.toString()}-${y.id.toString()}-${g.tickUpper}`,B=f[m[P].toString()],T=f[m[k].toString()],h=B.ticks[J.getTickOffsetInArray(g.tickLower,y.tickSpacing)],S=T.ticks[J.getTickOffsetInArray(g.tickUpper,y.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:K}=await Wo.GetPositionFees(y,g,h,S),I=await Wo.GetPositionRewards(y,g,h,S);g.tokenFeeAmountA=x.gte(new qe(0))?x:new qe(0),g.tokenFeeAmountB=K.gte(new qe(0))?K:new qe(0);for(let C=0;C<I.length;C++)g.rewardInfos[C].pendingReward=I[C].gte(new qe(0))?I[C]:new qe(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:r,slippage:s,priceLimit:a=new N(0),catchLiquidityInsufficient:c=!1}){var F;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 N(0))?u=l?Ht.add(new qe(1)):jt.sub(new qe(1)):u=ae.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=Ce(r,m,i,!1),{allTrade:f,expectedAmountOut:y,remainingAccounts:b,executionPrice:g,feeAmount:P}=_e.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((F=p.fee)!=null?F:ke),u,c),k=Ce(y,d,i,!1),B=ae.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),T=l?B:new N(1).div(B),h=y.mul(new qe(Math.floor((1-s)*1e10))).div(new qe(1e10)),S=Ce(h,d,i,!1),x=l?e.currentPrice:new N(1).div(e.currentPrice),K=new N(T).sub(x).abs(),I=x,C=new Ze(new N(K).mul(10**15).toFixed(0),new N(I).mul(10**15).toFixed(0));return{allTrade:f,realAmountIn:p,amountOut:k,minAmountOut:S,expirationTime:un(p.expirationTime,k.expirationTime),currentPrice:e.currentPrice,executionPrice:T,priceImpact:C,fee:P,remainingAccounts:b,executionPriceX64:g}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:r,epochInfo:s,catchLiquidityInsufficient:a=!1}){let c=i.address===e.mintB.address,[u,l]=c?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,d]=[new Le(U(M({},u),{mint:u.address,isToken2022:u.programId===Fl.toBase58()})),new Le(U(M({},l),{mint:l.address,isToken2022:l.programId===Fl.toBase58()}))],{allTrade:p,realAmountIn:f,amountOut:y,minAmountOut:b,expirationTime:g,currentPrice:P,executionPrice:k,priceImpact:B,fee:T,remainingAccounts:h,executionPriceX64:S}=_e.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new qt(u.address),amountIn:n,slippage:r,epochInfo:s,catchLiquidityInsufficient:a}),x=U(M({},f),{amount:new Ke(m,f.amount),fee:f.fee===void 0?void 0:new Ke(m,f.fee)}),K=U(M({},y),{amount:new Ke(d,y.amount),fee:y.fee===void 0?void 0:new Ke(d,y.fee)}),I=U(M({},b),{amount:new Ke(d,b.amount),fee:b.fee===void 0?void 0:new Ke(d,b.fee)}),C=new ft({baseToken:m,denominator:new qe(10).pow(new qe(20+m.decimals)),quoteToken:d,numerator:P.mul(new N(10**(20+d.decimals))).toFixed(0)}),F=new ft({baseToken:m,denominator:new qe(10).pow(new qe(20+m.decimals)),quoteToken:d,numerator:k.mul(new N(10**(20+d.decimals))).toFixed(0)}),v=new Ke(m,T);return{allTrade:p,realAmountIn:x,amountOut:K,minAmountOut:I,expirationTime:g,currentPrice:C,executionPrice:F,priceImpact:B,fee:v,remainingAccounts:h,executionPriceX64:S}}static computeAmountIn({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountOut:r,slippage:s,priceLimit:a=new N(0)}){var I;let c=n.toBase58()===e.mintA.address,u={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},l;a.equals(new N(0))?l=c?jt.sub(new qe(1)):Ht.add(new qe(1)):l=ae.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let m=Ce(r,u[n.toString()],i,!0),{expectedAmountIn:d,remainingAccounts:p,executionPrice:f,feeAmount:y}=_e.getInputAmountAndRemainAccounts(e,t,n,m.amount.sub((I=m.fee)!=null?I:ke),l),b=c?e.mintB.address:e.mintA.address,g=Ce(d,u[b],i,!1),P=ae.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),k=c?P:new N(1).div(P),B=d.mul(new qe(Math.floor((1+s)*1e10))).div(new qe(1e10)),T=Ce(B,u[b],i,!0),h=c?e.currentPrice:new N(1).div(e.currentPrice),S=new N(k).sub(h).abs(),x=h,K=new Ze(new N(S).mul(10**15).toFixed(0),new N(x).mul(10**15).toFixed(0));return{amountIn:g,maxAmountIn:T,realAmountOut:m,expirationTime:un(g.expirationTime,m.expirationTime),currentPrice:e.currentPrice,executionPrice:k,priceImpact:K,fee:y,remainingAccounts:p}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var f,y,b;let r=e[t],s=J.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=J.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),c=Math.max(s,r.priceMin),l=Math.min(a,r.priceMax)-c,m=a-s,d=r.priceMax-r.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:r.feeApr*p,rewardsApr:[((f=r.rewardApr[0])!=null?f:0)*p,((y=r.rewardApr[1])!=null?y:0)*p,((b=r.rewardApr[2])!=null?b:0)*p],apr:r.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:r,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:c}){let u=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[kt(e.mintA.address).toString()],d=i[kt(e.mintB.address).toString()],p=e.mintA.decimals,f=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let y=ae.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),b=ae.getSqrtPriceX64FromTick(s),g=ae.getSqrtPriceX64FromTick(a),{amountSlippageA:P,amountSlippageB:k}=Te.getAmountsFromLiquidityWithSlippage(y,b,g,t,!1,!1,0),{amountSlippageA:B,amountSlippageB:T}=Te.getAmountsFromLiquidityWithSlippage(y,b,g,r,!1,!1,0),h=new N(P.toString()).div(new N(10).pow(p)).mul(m.value).add(new N(k.toString()).div(new N(10).pow(f)).mul(d.value)),S=new N(B.toString()).div(new N(10).pow(p)).mul(m.value).add(new N(T.toString()).div(new N(10).pow(f)).mul(d.value)),x=new N(1).div(h.add(S)),I=new N(l.volumeFee).mul(365).div(u).mul(x).mul(100).toNumber(),C=3600*24*365,F=e.rewardDefaultInfos.map(v=>{var V,Y;let R=v.mint.decimals,L=i[v.mint.address];return c<((V=v.startTime)!=null?V:0)||c>((Y=v.endTime)!=null?Y:0)||!v.perSecond||!L||R===void 0?0:new N(L.value).mul(new N(v.perSecond).mul(C)).div(new N(10).pow(R)).mul(x).mul(100).toNumber()});return{feeApr:I,rewardsApr:F,apr:I+F.reduce((v,R)=>v+R,0)}}static async getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:r,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var g,P;let l=ae.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),m=ae.getSqrtPriceX64FromTick(n),d=ae.getSqrtPriceX64FromTick(i),p=Ce(r,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,c,!u),f=new qe(new N(p.amount.sub((P=p.fee)!=null?P:ke).toString()).toFixed(0)),y;if(l.lte(m))y=t?Te.getLiquidityFromTokenAmountA(m,d,f,!a):new qe(0);else if(l.lte(d)){let k=Te.getLiquidityFromTokenAmountA(l,d,f,!a),B=Te.getLiquidityFromTokenAmountB(m,l,f);y=t?k:B}else y=t?new qe(0):Te.getLiquidityFromTokenAmountB(m,d,f);let b=await _e.getAmountsFromLiquidity({epochInfo:c,poolInfo:e,tickLower:n,tickUpper:i,liquidity:y,slippage:s,add:a});return{liquidity:y,amountA:t?p:b.amountA,amountB:t?b.amountB:p,amountSlippageA:t?p:b.amountSlippageA,amountSlippageB:t?b.amountSlippageB:p,expirationTime:b.expirationTime}}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:r,slippage:s,add:a}){var b,g,P,k;let c=ae.getSqrtPriceX64FromTick(n),u=ae.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=Te.getAmountsFromLiquidity(ae.priceToSqrtPriceX64(new N(t.price),t.mintA.decimals,t.mintB.decimals),c,u,r,a),[d,p]=[Ce(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),Ce(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[f,y]=[Ce(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),Ce(m.amountB.muln(l),(k=t.mintB.extensions)==null?void 0:k.feeConfig,e,!0)];return{liquidity:r,amountA:d,amountB:p,amountSlippageA:f,amountSlippageB:y,expirationTime:un(d.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let i=t.filter(c=>!n[c.id]).map(c=>new qt(c.id));(await nn(e,i)).forEach((c,u)=>{!c||(n[i[u].toBase58()]=pi.decode(c.data))});let s=t.map(c=>et(new qt(c.programId),new qt(c.id)).publicKey),a=await _e.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((c,u)=>U(M({},c),{[u.id]:U(M({},n[u.id]),{id:new qt(u.id),version:6,programId:new qt(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:U(M({},u.config),{id:new qt(u.config.id),fundOwner:""}),currentPrice:new N(u.price),exBitmapAccount:et(new qt(u.programId),new qt(u.id)).publicKey,exBitmapInfo:a[et(new qt(u.programId),new qt(u.id)).publicKey.toBase58()],startTime:n[u.id].startTime.toNumber(),rewardInfos:n[u.id].rewardInfos})}),{})}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 rB({poolInfo:o,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:r,add:s,epochInfo:a,amountHasFee:c}){var k,B,T,h;let[u,l,m,d]=e<t?[e,t,n,i]:[t,e,i,n],p=ae.priceToSqrtPriceX64(new N(o.price),o.mintA.decimals,o.mintB.decimals),f=ae.getSqrtPriceX64FromTick(u),y=ae.getSqrtPriceX64FromTick(l),[b,g]=[Ce(m,(k=o.mintA.extensions)==null?void 0:k.feeConfig,a,!c),Ce(d,(B=o.mintB.extensions)==null?void 0:B.feeConfig,a,!c)],P=Te.getLiquidityFromTokenAmounts(p,f,y,b.amount.sub((T=b.fee)!=null?T:ke),g.amount.sub((h=g.fee)!=null?h:ke));return Te.getAmountsOutFromLiquidity({poolInfo:o,tickLower:e,tickUpper:t,liquidity:P,slippage:r,add:s,epochInfo:a,amountAddFee:!c})}var ou={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};function El(o){return U(M({},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:ou,week:ou,month:ou,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,burnPercent:0,config:U(M({},o.ammConfig),{id:o.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]})})}var de=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),r=i.div(n);return i.mod(n).eq(ke)||(r=r.add(Wt)),r}static mulDivFloor(e,t,n){if(n.eq(ke))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(ke))throw new Error("division by 0");return e.mul(t).add(n.sub(Wt)).div(n)}static x64ToDecimal(e,t){return new N(e.toString()).div(N.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ge(e.mul(N.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Zr).sub(t).mod(Zr)}};function gt(o,e){return ru(o.mul(e),64,256)}function By(o,e,t){let n=o.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function ru(o,e,t){let n=o.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var ae=class{static sqrtPriceX64ToPrice(e,t,n){return de.x64ToDecimal(e).pow(2).mul(N.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return de.decimalToX64(e.mul(N.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(ke))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ke))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt(ke))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ke))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(ke))return e;let r=t.shln(_o);if(i){let s=r,a=r.add(n.mul(e));return a.gte(s)?de.mulDivCeil(s,e,a):de.mulDivRoundingUp(s,Wt,s.div(e).add(n))}else{let s=n.mul(e);if(!r.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=r.sub(s);return de.mulDivCeil(r,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let r=n.shln(_o);if(i)return e.add(r.div(t));{let s=de.mulDivRoundingUp(r,Wt,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<It||e>Rt)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new ge("18445821805675395072"):new ge("18446744073709551616");return(t&2)!=0&&(n=gt(n,new ge("18444899583751176192"))),(t&4)!=0&&(n=gt(n,new ge("18443055278223355904"))),(t&8)!=0&&(n=gt(n,new ge("18439367220385607680"))),(t&16)!=0&&(n=gt(n,new ge("18431993317065453568"))),(t&32)!=0&&(n=gt(n,new ge("18417254355718170624"))),(t&64)!=0&&(n=gt(n,new ge("18387811781193609216"))),(t&128)!=0&&(n=gt(n,new ge("18329067761203558400"))),(t&256)!=0&&(n=gt(n,new ge("18212142134806163456"))),(t&512)!=0&&(n=gt(n,new ge("17980523815641700352"))),(t&1024)!=0&&(n=gt(n,new ge("17526086738831433728"))),(t&2048)!=0&&(n=gt(n,new ge("16651378430235570176"))),(t&4096)!=0&&(n=gt(n,new ge("15030750278694412288"))),(t&8192)!=0&&(n=gt(n,new ge("12247334978884435968"))),(t&16384)!=0&&(n=gt(n,new ge("8131365268886854656"))),(t&32768)!=0&&(n=gt(n,new ge("3584323654725218816"))),(t&65536)!=0&&(n=gt(n,new ge("696457651848324352"))),(t&131072)!=0&&(n=gt(n,new ge("26294789957507116"))),(t&262144)!=0&&(n=gt(n,new ge("37481735321082"))),e>0&&(n=Tl.div(n)),n}static getTickFromPrice(e,t,n){return ae.getTickFromSqrtPriceX64(ae.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(jt)||e.lt(Ht))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ge(t-64),i=By(n,32,128),r=new ge("8000000000000000","hex"),s=0,a=new ge(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;r.gt(new ge(0))&&s<Il;){c=c.mul(c);let f=c.shrn(127);c=c.shrn(63+f.toNumber()),a=a.add(r.mul(f)),r=r.shrn(1),s+=1}let u=a.shrn(32),m=i.add(u).mul(new ge(Bl)),d=ru(m.sub(new ge(xl)),64,128).toNumber(),p=ru(m.add(new ge(Sl)),64,128).toNumber();return d==p?d:ae.getSqrtPriceX64FromTick(p).lte(e)?p:d}},fi=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=ae.getTickFromSqrtPriceX64(ae.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let r=fi.getTickWithPriceAndTickspacing(e,t,n,i),s=ae.getSqrtPriceX64FromTick(r);return ae.sqrtPriceX64ToPrice(s,n,i)}},Te=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(ke))throw new Error("sqrtPriceX64A must greater than 0");let r=n.ushln(_o),s=t.sub(e);return i?de.mulDivRoundingUp(de.mulDivCeil(r,s,t),Wt,e):de.mulDivFloor(r,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(ke))throw new Error("sqrtPriceX64A must greater than 0");return i?de.mulDivCeil(n,t.sub(e),lt):de.mulDivFloor(n,t.sub(e),lt)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let r=n.mul(e).mul(t),s=t.sub(e),a=r.div(s);return i?de.mulDivRoundingUp(a,Wt,Eo):a.shrn(_o)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),de.mulDivFloor(n,Eo,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,r){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return Te.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=Te.getLiquidityFromTokenAmountA(e,n,i,!1),a=Te.getLiquidityFromTokenAmountB(t,e,r);return s.lt(a)?s:a}else return Te.getLiquidityFromTokenAmountB(t,n,r)}static getAmountsFromLiquidity(e,t,n,i,r){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:Te.getTokenAmountAFromLiquidity(t,n,i,r),amountB:new ge(0)};if(e.lt(n)){let s=Te.getTokenAmountAFromLiquidity(e,n,i,r),a=Te.getTokenAmountBFromLiquidity(t,e,i,r);return{amountA:s,amountB:a}}else return{amountA:new ge(0),amountB:Te.getTokenAmountBFromLiquidity(t,n,i,r)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,r,s,a){let{amountA:c,amountB:u}=Te.getAmountsFromLiquidity(e,t,n,i,s),l=r?1+a:1-a,m=new ge(new N(c.toString()).mul(l).toFixed(0)),d=new ge(new N(u.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:r,add:s,epochInfo:a,amountAddFee:c}){var P,k,B,T;let u=ae.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),l=ae.getSqrtPriceX64FromTick(t),m=ae.getSqrtPriceX64FromTick(n),d=s?1+r:1-r,p=Te.getAmountsFromLiquidity(u,l,m,i,s),[f,y]=[Ce(p.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,c),Ce(p.amountB,(k=e.mintB.extensions)==null?void 0:k.feeConfig,a,c)],[b,g]=[Ce(new ge(new N(p.amountA.toString()).mul(d).toFixed(0)),(B=e.mintA.extensions)==null?void 0:B.feeConfig,a,c),Ce(new ge(new N(p.amountB.toString()).mul(d).toFixed(0)),(T=e.mintB.extensions)==null?void 0:T.feeConfig,a,c)];return{liquidity:i,amountA:f,amountB:y,amountSlippageA:b,amountSlippageB:g,expirationTime:un(f.expirationTime,y.expirationTime)}}},di=class{static swapCompute(e,t,n,i,r,s,a,c,u,l,m,d,p,f,y=!1){if(d.eq(ke))throw new Error("amountSpecified must not be 0");if(f||(f=s?Ht.add(Wt):jt.sub(Wt)),s){if(f.lt(Ht))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(f.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(f.gt(jt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(f.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let b=d.gt(ke),g={amountSpecifiedRemaining:d,amountCalculated:ke,sqrtPriceX64:m,tick:u>p?Math.min(p+xe.tickCount(l)-1,u):p,accounts:[],liquidity:c,feeAmount:new ge(0)},P=p,k=n[p],B=0,T=!s&&k.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(ke)&&!g.sqrtPriceX64.eq(f);){B>10;let h={};h.sqrtPriceStartX64=g.sqrtPriceX64;let S=J.nextInitTick(k,g.tick,l,s,T),x=S||null,K=null;if(!(x!=null&&x.liquidityGross.gtn(0))){let C=_e.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:r},P,s);if(!C.isExist){if(y)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")}P=C.nextStartIndex;let{publicKey:F}=he(e,t,P);K=F,k=n[P];try{x=J.firstInitializedTick(k,s)}catch{throw Error("not found next tick info")}}h.tickNext=x.tick,h.initialized=x.liquidityGross.gtn(0),p!==P&&K&&(g.accounts.push(K),p=P),h.tickNext<It?h.tickNext=It:h.tickNext>Rt&&(h.tickNext=Rt),h.sqrtPriceNextX64=ae.getSqrtPriceX64FromTick(h.tickNext);let I;if(s&&h.sqrtPriceNextX64.lt(f)||!s&&h.sqrtPriceNextX64.gt(f)?I=f:I=h.sqrtPriceNextX64,[g.sqrtPriceX64,h.amountIn,h.amountOut,h.feeAmount]=di.swapStepCompute(g.sqrtPriceX64,I,g.liquidity,g.amountSpecifiedRemaining,a,s),g.feeAmount=g.feeAmount.add(h.feeAmount),b?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(h.amountIn.add(h.feeAmount)),g.amountCalculated=g.amountCalculated.sub(h.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(h.amountOut),g.amountCalculated=g.amountCalculated.add(h.amountIn.add(h.feeAmount))),g.sqrtPriceX64.eq(h.sqrtPriceNextX64)){if(h.initialized){let C=x.liquidityNet;s&&(C=C.mul(Cn)),g.liquidity=Te.addDelta(g.liquidity,C)}T=h.tickNext!=g.tick&&!s&&k.startTickIndex===h.tickNext,g.tick=s?h.tickNext-1:h.tickNext}else if(g.sqrtPriceX64!=h.sqrtPriceStartX64){let C=ae.getTickFromSqrtPriceX64(g.sqrtPriceX64);T=C!=g.tick&&!s&&k.startTickIndex===C,g.tick=C}++B}try{let{nextStartIndex:h,isExist:S}=xe.nextInitializedTickArray(g.tick,l,s,i,r);S&&p!==h&&(g.accounts.push(he(e,t,h).publicKey),p=h)}catch{}return{allTrade:!0,amountSpecifiedRemaining:ke,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,i,r,s){let a={sqrtPriceX64Next:new ge(0),amountIn:new ge(0),amountOut:new ge(0),feeAmount:new ge(0)},c=i.gte(ke);if(c){let l=de.mulDivFloor(i,es.sub(new ge(r.toString())),es);a.amountIn=s?Te.getTokenAmountAFromLiquidity(t,e,n,!0):Te.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(a.amountIn)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=ae.getNextSqrtPriceX64FromInput(e,n,l,s)}else a.amountOut=s?Te.getTokenAmountBFromLiquidity(t,e,n,!1):Te.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(Cn).gte(a.amountOut)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=ae.getNextSqrtPriceX64FromOutput(e,n,i.mul(Cn),s);let u=t.eq(a.sqrtPriceX64Next);return s?(u&&c||(a.amountIn=Te.getTokenAmountAFromLiquidity(a.sqrtPriceX64Next,e,n,!0)),u&&!c||(a.amountOut=Te.getTokenAmountBFromLiquidity(a.sqrtPriceX64Next,e,n,!1))):(a.amountIn=u&&c?a.amountIn:Te.getTokenAmountBFromLiquidity(e,a.sqrtPriceX64Next,n,!0),a.amountOut=u&&!c?a.amountOut:Te.getTokenAmountAFromLiquidity(e,a.sqrtPriceX64Next,n,!1)),!c&&a.amountOut.gt(i.mul(Cn))&&(a.amountOut=i.mul(Cn)),c&&!a.sqrtPriceX64Next.eq(t)?a.feeAmount=i.sub(a.amountIn):a.feeAmount=de.mulDivCeil(a.amountIn,new ge(r),es.sub(new ge(r))),[a.sqrtPriceX64Next,a.amountIn,a.amountOut,a.feeAmount]}};var mt=60,mi=512,J=class{static getTickArrayAddressByTick(e,t,n,i){let r=J.getTickArrayStartIndexByTick(n,i),{publicKey:s}=he(e,t,r);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=J.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=mt)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=xe.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*xe.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*mt,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*mt,r=Math.floor(t/i)+512,s=Math.abs(r);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*mt:e+t*mt}static mergeTickArrayBitmap(e){let t=new xy(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,r){let s=Math.floor(i/(n*mt));return[...J.searchLowBitFromStart(e,t,s-1,r,n),...J.searchHightBitFromStart(e,t,s,r,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return J.searchHightBitFromStart(e,t,-7680,mi,n)}static getAllInitializedTickArrayInfo(e,t,n,i,r){let s=[],a=J.getAllInitializedTickArrayStartIndex(n,i,r);for(let c of a){let{publicKey:u}=he(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,i,r){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>J.mergeTickArrayBitmap(u)),a=[];for(;n>=-7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n--,a.length===i)break}let c=xe.tickCount(r);return a.map(u=>u*c)}static searchHightBitFromStart(e,t,n,i,r){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>J.mergeTickArrayBitmap(u)),a=[];for(;n<7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n++,a.length===i)break}let c=xe.tickCount(r);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<It||e>Rt}static nextInitTick(e,t,n,i,r){if(xe.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(r||(a=a+1);a<mt;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=mt-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<mt;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=ae.getSqrtPriceX64FromTick(t),r=ae.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:r,tickSqrtPriceX64:i}:{tick:t,price:new N(1).div(r),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new N(1).div(t),r=fi.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=ae.getSqrtPriceX64FromTick(r),a=ae.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:r,price:a}:{tick:r,price:new N(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=ae.getSqrtPriceX64FromTick(t),r=ae.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:r,tickSqrtPriceX64:i}:{tick:t,price:new N(1).div(r),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new N(1).div(t),r=fi.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=ae.getSqrtPriceX64FromTick(r),a=ae.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:r,price:a}:{tick:r,price:new N(1).div(a)}}};var Vl=E([Re(8),q("bump"),Dt("index"),O(""),Pt("protocolFeeRate"),Pt("tradeFeeRate"),Dt("tickSpacing"),H(w(),8,"")]),Sy=E([Pt("blockTimestamp"),Ei("tickCumulative"),H(w(),4)]),Dl=E([Re(8),Xe("initialized"),w("recentEpoch"),Dt("observationIndex"),O("poolId"),H(Sy,100,"observations"),H(w(),4)]),Ky=E([q("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),ne("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),O("tokenMint"),O("tokenVault"),O("creator"),ne("rewardGrowthGlobalX64")]),pi=E([Re(8),q("bump"),O("ammConfig"),O("creator"),O("mintA"),O("mintB"),O("vaultA"),O("vaultB"),O("observationId"),q("mintDecimalsA"),q("mintDecimalsB"),Dt("tickSpacing"),ne("liquidity"),ne("sqrtPriceX64"),We("tickCurrent"),Pt(),ne("feeGrowthGlobalX64A"),ne("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),ne("swapInAmountTokenA"),ne("swapOutAmountTokenB"),ne("swapInAmountTokenB"),ne("swapOutAmountTokenA"),q("status"),H(q(),7,""),H(Ky,3,"rewardInfos"),H(w(),16,"tickArrayBitmap"),w("totalFeesTokenA"),w("totalFeesClaimedTokenA"),w("totalFeesTokenB"),w("totalFeesClaimedTokenB"),w("fundFeesTokenA"),w("fundFeesTokenB"),w("startTime"),H(w(),15*4-3,"padding")]),Cy=E([ne("growthInsideLastX64"),w("rewardAmountOwed")]),Ui=E([Re(8),q("bump"),O("nftMint"),O("poolId"),We("tickLower"),We("tickUpper"),ne("liquidity"),ne("feeGrowthInsideLastX64A"),ne("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),H(Cy,3,"rewardInfos"),H(w(),8,"")]),CB=E([Re(8),q("bump"),O("poolId"),We("tickLowerIndex"),We("tickUpperIndex"),ne("liquidity"),ne("feeGrowthInsideLastX64A"),ne("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),H(ne(),3,"rewardGrowthInside"),H(w(),8,"")]),Ry=E([We("tick"),el("liquidityNet"),ne("liquidityGross"),ne("feeGrowthOutsideX64A"),ne("feeGrowthOutsideX64B"),H(ne(),3,"rewardGrowthsOutsideX64"),H(Pt(),13,"")]),qo=E([Re(8),O("poolId"),We("startTickIndex"),H(Ry,mt,"ticks"),q("initializedTickCount"),H(q(),115,"")]),Wl=E([Re(329),H(O(),100,"whitelistMints")]),_l=E([Re(8),O("poolId"),H(H(w(),8),iu,"positiveTickArrayBitmap"),H(H(w(),8),iu,"negativeTickArrayBitmap")]),RB=E([w(),q("bump"),O("owner"),O("poolId"),O("positionId"),O("nftAccount"),H(w(),8)]),ql=E([Re(8),q("bump"),O("lockOwner"),O("poolId"),O("positionId"),O("nftAccount"),O("lockNftMint"),w("recentEpoch"),H(w(),8)]);Dl.span;var Ul=Pe("Raydium_Clmm"),Ut={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],openPositionWithTokenEx:[77,255,174,82,125,29,201,46],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]},Gl=[188,37,179,131,82,150,84,73],Xl=[16,72,250,198,14,162,212,19],Me=class{static createPoolInstruction(e,t,n,i,r,s,a,c,u,l,m,d,p,f){let y=E([ne("sqrtPriceX64"),w("zero")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},...(f==null?void 0:f.map(k=>({pubkey:k,isSigner:!1,isWritable:!1})))||[]],g=Buffer.alloc(y.span);y.encode({sqrtPriceX64:p,zero:ke},g);let P=Buffer.from([...Ut.createPool,...g]);return new wt({keys:b,programId:e,data:P})}static async createPoolInstructions(e){let{programId:t,owner:n,mintA:i,mintB:r,ammConfigId:s,initialPriceX64:a,extendMintAccount:c}=e,[u,l]=[new z(i.address),new z(r.address)],{publicKey:m}=Nl(t,s,u,l),{publicKey:d}=Ml(t,m),{publicKey:p}=eu(t,m,u),{publicKey:f}=eu(t,m,l),y=et(t,m).publicKey,b=[this.createPoolInstruction(t,m,n,s,d,u,p,new z(i.programId||Oe),l,f,new z(r.programId||Oe),y,a,c)];return{signers:[],instructions:b,instructionTypes:[X.CreateAccount,X.ClmmCreatePool],address:{poolId:m,observationId:d,exBitmapAccount:y,mintAVault:p,mintBVault:f},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,k,B,T,h,S,x,K,I){let C=E([We("tickLowerIndex"),We("tickUpperIndex"),We("tickArrayLowerStartIndex"),We("tickArrayUpperStartIndex"),ne("liquidity"),w("amountMaxA"),w("amountMaxB"),Xe("withMetadata"),q("optionBaseFlag"),Xe("baseFlag")]),F=[...I?[{pubkey:I,isSigner:!1,isWritable:!0}]:[]],v=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,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:f,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:Go,isSigner:!1,isWritable:!1},{pubkey:sn,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...F],R=Buffer.alloc(C.span);C.encode({tickLowerIndex:P,tickUpperIndex:k,tickArrayLowerStartIndex:B,tickArrayUpperStartIndex:T,liquidity:h,amountMaxA:S,amountMaxB:x,withMetadata:K==="create",baseFlag:!1,optionBaseFlag:0},R);let L=Buffer.from([...Ut.openPosition,...R]);return new wt({keys:v,programId:e,data:L})}static openPositionFromLiquidityInstruction22(e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,k,B,T,h,S,x,K){let I=E([We("tickLowerIndex"),We("tickUpperIndex"),We("tickArrayLowerStartIndex"),We("tickArrayUpperStartIndex"),ne("liquidity"),w("amountMaxA"),w("amountMaxB"),Xe("withMetadata"),q("optionBaseFlag"),Xe("baseFlag")]),C=[...K?[{pubkey:K,isSigner:!1,isWritable:!0}]:[]],F=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,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:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:Go,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...C],v=Buffer.alloc(I.span);I.encode({tickLowerIndex:g,tickUpperIndex:P,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:B,liquidity:T,amountMaxA:h,amountMaxB:S,withMetadata:x==="create",baseFlag:!1,optionBaseFlag:0},v);let R=Buffer.from([...Ut.openPositionWithTokenEx,...v]);return new wt({keys:F,programId:e,data:R})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:r,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l,nft2022:m}){let d=[],[p,f]=[new z(e.programId),new z(e.id)],y;if(l)y=new z((await l(1))[0]);else{let K=is.generate();d.push(K),y=K.publicKey}let b=J.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=J.getTickArrayStartIndexByTick(r,e.config.tickSpacing),{publicKey:P}=he(p,f,b),{publicKey:k}=he(p,f,g),{publicKey:B}=m?Z(n.wallet,y,Qe):Z(n.wallet,y,Oe),{publicKey:T}=Rn(y),{publicKey:h}=Lt(p,y),{publicKey:S}=dn(p,f,i,r),x=m?this.openPositionFromLiquidityInstruction22(p,n.feePayer,f,n.wallet,y,B,S,P,k,h,n.tokenAccountA,n.tokenAccountB,new z(t.vault.A),new z(t.vault.B),new z(e.mintA.address),new z(e.mintB.address),i,r,b,g,s,a,c,u,_e.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[b,g])?et(p,f).publicKey:void 0):this.openPositionFromLiquidityInstruction(p,n.feePayer,f,n.wallet,y,B,T,S,P,k,h,n.tokenAccountA,n.tokenAccountB,new z(t.vault.A),new z(t.vault.B),new z(e.mintA.address),new z(e.mintB.address),i,r,b,g,s,a,c,u,_e.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[b,g])?et(p,f).publicKey:void 0);return{signers:d,instructions:[x],instructionTypes:[X.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:P,tickArrayUpper:k,positionNftAccount:B,metadataAccount:T,personalPosition:h,protocolPosition:S}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:r,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:l,nft2022:m}){let d=[],[p,f]=[new z(e.programId),new z(e.id)],y;if(l)y=new z((await l(1))[0]);else{let K=is.generate();d.push(K),y=K.publicKey}let b=J.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=J.getTickArrayStartIndexByTick(r,e.config.tickSpacing),{publicKey:P}=he(p,f,b),{publicKey:k}=he(p,f,g),{publicKey:B}=m?Z(n.wallet,y,Qe):Z(n.wallet,y,Oe),{publicKey:T}=Rn(y),{publicKey:h}=Lt(p,y),{publicKey:S}=dn(p,f,i,r),x=m?this.openPositionFromBaseInstruction22(p,n.feePayer,f,n.wallet,y,B,S,P,k,h,n.tokenAccountA,n.tokenAccountB,new z(t.vault.A),new z(t.vault.B),new z(e.mintA.address),new z(e.mintB.address),i,r,b,g,u,s,a,c,_e.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[b,g])?et(p,f).publicKey:void 0):this.openPositionFromBaseInstruction(p,n.feePayer,f,n.wallet,y,B,T,S,P,k,h,n.tokenAccountA,n.tokenAccountB,new z(t.vault.A),new z(t.vault.B),new z(e.mintA.address),new z(e.mintB.address),i,r,b,g,u,s,a,c,_e.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[b,g])?et(p,f).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:P,tickArrayUpper:k,positionNftAccount:B,metadataAccount:T,personalPosition:h,protocolPosition:S},instructions:[x],signers:d,instructionTypes:[X.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,k,B,T,h,S,x,K,I){let C=E([We("tickLowerIndex"),We("tickUpperIndex"),We("tickArrayLowerStartIndex"),We("tickArrayUpperStartIndex"),ne("liquidity"),w("amountMaxA"),w("amountMaxB"),Xe("withMetadata"),q("optionBaseFlag"),Xe("baseFlag")]),F=[...I?[{pubkey:I,isSigner:!1,isWritable:!0}]:[]],v=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,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:f,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:Go,isSigner:!1,isWritable:!1},{pubkey:sn,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...F],R=Buffer.alloc(C.span);C.encode({tickLowerIndex:P,tickUpperIndex:k,tickArrayLowerStartIndex:B,tickArrayUpperStartIndex:T,liquidity:new su(0),amountMaxA:S==="MintA"?x:K,amountMaxB:S==="MintA"?K:x,withMetadata:h==="create",baseFlag:S==="MintA",optionBaseFlag:1},R);let L=Buffer.from([...Ut.openPosition,...R]);return new wt({keys:v,programId:e,data:L})}static openPositionFromBaseInstruction22(e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,k,B,T,h,S,x,K){let I=E([We("tickLowerIndex"),We("tickUpperIndex"),We("tickArrayLowerStartIndex"),We("tickArrayUpperStartIndex"),ne("liquidity"),w("amountMaxA"),w("amountMaxB"),Xe("withMetadata"),q("optionBaseFlag"),Xe("baseFlag")]),C=[...K?[{pubkey:K,isSigner:!1,isWritable:!0}]:[]],F=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,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:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:Go,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...C],v=Buffer.alloc(I.span);I.encode({tickLowerIndex:g,tickUpperIndex:P,tickArrayLowerStartIndex:k,tickArrayUpperStartIndex:B,liquidity:new su(0),amountMaxA:h==="MintA"?S:x,amountMaxB:h==="MintA"?x:S,withMetadata:T==="create",baseFlag:h==="MintA",optionBaseFlag:1},v);let R=Buffer.from([...Ut.openPositionWithTokenEx,...v]);return new wt({keys:F,programId:e,data:R})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:r,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l,nft2022:m}){let d,p=[];if(l)d=new z((await l(1))[0]);else{let K=is.generate();p.push(K),d=K.publicKey}let[f,y]=[new z(e.programId),new z(e.id)],b=J.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=J.getTickArrayStartIndexByTick(r,e.config.tickSpacing),{publicKey:P}=he(f,y,b),{publicKey:k}=he(f,y,g),{publicKey:B}=m?Z(n.wallet,d,Qe):Z(n.wallet,d,Oe),{publicKey:T}=Rn(d),{publicKey:h}=Lt(f,d),{publicKey:S}=dn(f,y,i,r),x=m?this.openPositionFromLiquidityInstruction22(f,n.wallet,y,n.wallet,d,B,S,P,k,h,n.tokenAccountA,n.tokenAccountB,new z(t.vault.A),new z(t.vault.B),new z(t.mintA.address),new z(t.mintB.address),i,r,b,g,s,a,c,u,_e.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[b,g])?et(f,y).publicKey:void 0):this.openPositionFromLiquidityInstruction(f,n.wallet,y,n.wallet,d,B,T,S,P,k,h,n.tokenAccountA,n.tokenAccountB,new z(t.vault.A),new z(t.vault.B),new z(t.mintA.address),new z(t.mintB.address),i,r,b,g,s,a,c,u,_e.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[b,g])?et(f,y).publicKey:void 0);return{address:{nftMint:d,tickArrayLower:P,tickArrayUpper:k,positionNftAccount:B,metadataAccount:T,personalPosition:h,protocolPosition:S},instructions:[x],signers:p,instructionTypes:[X.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,r,s){let a=E([]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:s?Qe:Oe,isSigner:!1,isWritable:!1}],u=Buffer.alloc(a.span);a.encode({},u);let l=Buffer.from([...Ut.closePosition,...u]);return new wt({keys:c,programId:e,data:l})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i,nft2022:r}){let s=new z(e.programId),a=r?Z(n.wallet,i.nftMint,Qe).publicKey:Z(n.wallet,i.nftMint,Oe).publicKey,{publicKey:c}=Lt(s,i.nftMint),u=[];return u.push(this.closePositionInstruction(s,n.wallet,i.nftMint,a,c,r)),{address:{positionNftAccount:a,personalPosition:c},signers:[],instructions:u,instructionTypes:[X.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P){let k=E([ne("liquidity"),w("amountMaxA"),w("amountMaxB"),q("optionBaseFlag"),Xe("baseFlag")]),B=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,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:Oe,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...B],h=Buffer.alloc(k.span);k.encode({liquidity:y,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},h);let S=Buffer.from([...Ut.increaseLiquidity,...h]);return new wt({keys:T,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:r,amountMaxA:s,amountMaxB:a,nft2022:c}){let[u,l]=[new z(e.programId),new z(e.id)],m=J.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=J.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=he(u,l,m),{publicKey:f}=he(u,l,d),{publicKey:y}=c?Z(i.wallet,n.nftMint,Qe):Z(i.wallet,n.nftMint,Oe),{publicKey:b}=Lt(u,n.nftMint),{publicKey:g}=dn(u,l,n.tickLower,n.tickUpper),P=this.increasePositionFromLiquidityInstruction(u,i.wallet,y,b,l,g,p,f,i.tokenAccountA,i.tokenAccountB,new z(t.vault.A),new z(t.vault.B),new z(e.mintA.address),new z(e.mintB.address),r,s,a,_e.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?et(u,l).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:f,positionNftAccount:y,personalPosition:b,protocolPosition:g},signers:[],instructions:[P],instructionTypes:[X.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:r,baseAmount:s,otherAmountMax:a,nft2022:c}){let[u,l]=[new z(e.programId),new z(e.id)],m=J.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=J.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=he(u,l,m),{publicKey:f}=he(u,l,d),{publicKey:y}=c?Z(i.wallet,n.nftMint,Qe):Z(i.wallet,n.nftMint,Oe),{publicKey:b}=Lt(u,n.nftMint),{publicKey:g}=dn(u,l,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:f,positionNftAccount:y,personalPosition:b,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,b,l,g,p,f,i.tokenAccountA,i.tokenAccountB,new z(t.vault.A),new z(t.vault.B),new z(e.mintA.address),new z(e.mintB.address),r,s,a,_e.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?et(u,l).publicKey:void 0)],signers:[],instructionTypes:[X.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P){let k=E([ne("liquidity"),w("amountMaxA"),w("amountMaxB"),q("optionBaseFlag"),Xe("baseFlag")]),B=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,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:Oe,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...B],h=Buffer.alloc(k.span);k.encode({liquidity:new su(0),amountMaxA:y==="MintA"?b:g,amountMaxB:y==="MintA"?g:b,baseFlag:y==="MintA",optionBaseFlag:1},h);let S=Buffer.from([...Ut.increaseLiquidity,...h]);return new wt({keys:T,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,k){let B=E([ne("liquidity"),w("amountMinA"),w("amountMinB")]),T=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[],...y.map(K=>[{pubkey:K.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.rewardMint,isSigner:!1,isWritable:!1}]).flat()],h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,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:Oe,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:xr,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...T],S=Buffer.alloc(B.span);B.encode({liquidity:b,amountMinA:g,amountMinB:P},S);let x=Buffer.from([...Ut.decreaseLiquidity,...S]);return new wt({keys:h,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:r,amountMinA:s,amountMinB:a,programId:c,nft2022:u}){let[l,m]=[new z(e.programId),new z(e.id)],d=J.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=J.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:f}=he(l,m,d),{publicKey:y}=he(l,m,p),{publicKey:b}=u?Z(i.wallet,n.nftMint,Qe):Z(i.wallet,n.nftMint,c),{publicKey:g}=Lt(l,n.nftMint),{publicKey:P}=dn(l,m,n.tickLower,n.tickUpper),k=[];for(let h=0;h<e.rewardDefaultInfos.length;h++)k.push({poolRewardVault:new z(t.rewardInfos[h].vault),ownerRewardVault:i.rewardAccounts[h],rewardMint:new z(e.rewardDefaultInfos[h].mint.address)});let B=[],T=this.decreaseLiquidityInstruction(l,i.wallet,b,g,m,P,f,y,i.tokenAccountA,i.tokenAccountB,new z(t.vault.A),new z(t.vault.B),new z(e.mintA.address),new z(e.mintB.address),k,r,s,a,_e.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[d,p])?et(l,m).publicKey:void 0);return B.push(T),{address:{tickArrayLower:f,tickArrayUpper:y,positionNftAccount:b,personalPosition:g,protocolPosition:P},signers:[],instructions:B,instructionTypes:[X.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g){let P=E([w("amount"),w("otherAmountThreshold"),ne("sqrtPriceLimitX64"),Xe("isBaseInput")]),k=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],B=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,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:Oe,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:xr,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...k],T=Buffer.alloc(P.span);P.encode({amount:p,otherAmountThreshold:f,sqrtPriceLimitX64:y,isBaseInput:b},T);let h=Buffer.from([...Ut.swap,...T]);return new wt({keys:B,programId:e,data:h})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,inputMint:r,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,m]=[new z(e.programId),new z(e.id)],[d,p]=[new z(t.vault.A),new z(t.vault.B)],[f,y]=[new z(e.mintA.address),new z(e.mintB.address)],b=e.mintA.address===r.toString(),g=[this.swapInstruction(l,i.wallet,m,new z(e.config.id),b?i.tokenAccountA:i.tokenAccountB,b?i.tokenAccountB:i.tokenAccountA,b?d:p,b?p:d,b?f:y,b?y:f,u,n,s,a,c,!0,et(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[X.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,outputMint:r,amountOut:s,amountInMax:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,m]=[new z(e.programId),new z(e.id)],[d,p]=[new z(t.vault.A),new z(t.vault.B)],[f,y]=[new z(e.mintA.address),new z(e.mintB.address)],b=e.mintA.address===r.toBase58(),g=[this.swapInstruction(l,i.wallet,m,new z(e.config.id),b?i.tokenAccountB:i.tokenAccountA,b?i.tokenAccountA:i.tokenAccountB,b?p:d,b?d:p,b?y:f,b?f:y,u,n,s,a,c,!1,et(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[X.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,r,s,a,c,u,l,m,d){let p=E([w("openTime"),w("endTime"),ne("emissionsPerSecondX64")]),f=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1}],y=Buffer.alloc(p.span);p.encode({openTime:ee(l),endTime:ee(m),emissionsPerSecondX64:d},y);let b=Buffer.from([...Ut.initReward,...y]);return new wt({keys:f,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[r,s]=[new z(e.programId),new z(e.id)],a=Ol(r,s,i.mint).publicKey,c=Do(r).publicKey,u=[this.initRewardInstruction(r,n.wallet,s,c,new z(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:u,instructionTypes:[X.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,r,s,a,c,u,l,m,d){let p=E([q("rewardIndex"),ne("emissionsPerSecondX64"),w("openTime"),w("endTime")]),f=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],y=Buffer.alloc(p.span);p.encode({rewardIndex:u,emissionsPerSecondX64:d,openTime:ee(l),endTime:ee(m)},y);let b=Buffer.from([...Ut.setRewardEmissions,...y]);return new wt({keys:f,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[r,s]=[new z(e.programId),new z(e.id)],a,c,u;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.mint.toString()&&(a=d,c=new z(t.rewardInfos[d].vault),u=new z(t.rewardInfos[d].mint.address));(a===void 0||c===void 0)&&Ul.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Do(r).publicKey,m=[this.setRewardInstruction(r,n.wallet,s,l,new z(e.config.id),n.tokenAccount,c,u,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:m,instructionTypes:[X.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,r,s,a){let c=E([q("rewardIndex")]),u=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:xr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let m=Buffer.from([...Ut.collectReward,...l]);return new wt({keys:u,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[r,s]=[new z(e.programId),new z(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,c=new z(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&Ul.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=[this.collectRewardInstruction(r,n.wallet,s,n.tokenAccount,c,i,a)];return{address:{rewardVault:c},signers:[],instructions:u,instructionTypes:[X.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async makeLockPositions({programId:e,authProgramId:t,poolProgramId:n,payer:i,wallet:r,nftMint:s,nft2022:a,getEphemeralSigners:c}){let u=[],l;if(c)l=new z((await c(1))[0]);else{let g=is.generate();u.push(g),l=g.publicKey}let m=a?Z(r,s,Qe).publicKey:Z(r,s,Oe).publicKey,{publicKey:d}=Lt(n,s),p=qi(e,l).publicKey,f=Z(r,l,Oe).publicKey,y=Rn(l).publicKey,b=Me.lockPositionInstructionV2({programId:e,auth:t,payer:i,positionOwner:r,lockOwner:r,positionNftAccount:m,positionId:d,lockPositionId:p,lockNftMint:l,lockNftAccount:f,metadataAccount:y,withMetadata:!0,nft2022:a,positionNftMint:s,authPositionNftAccount:Z(t,s,a?Qe:Oe).publicKey,positionNftProgram:a?Qe:Oe});return{address:{positionId:d,lockPositionId:p,lockNftAccount:f,lockNftMint:l,positionNftAccount:m,metadataAccount:y},instructions:[b],signers:u,instructionTypes:[X.ClmmLockPosition],lookupTableAddress:[]}}static lockPositionInstructionV2({programId:e,auth:t,payer:n,positionOwner:i,lockOwner:r,positionNftAccount:s,positionId:a,positionNftMint:c,authPositionNftAccount:u,positionNftProgram:l,lockPositionId:m,lockNftMint:d,lockNftAccount:p,metadataAccount:f,withMetadata:y}){let b=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:r,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:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!0,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:sn,isSigner:!1,isWritable:!1},{pubkey:Go,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1}],g=E([Xe("withMetadata")]),P=Buffer.alloc(g.span);g.encode({withMetadata:y},P);let k=Buffer.from([...Gl,...P]);return new wt({keys:b,programId:e,data:k})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:i,positionNft:r}){let{publicKey:s}=Z(i,r,Oe),{publicKey:a}=Lt(n,r),c=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:tu(e,a).publicKey,isSigner:!1,isWritable:!0},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1}];return new wt({keys:c,programId:e,data:Buffer.from(Gl)})}static harvestLockPositionInstruction(e){let[t,n]=[new z(e.poolKeys.programId),new z(e.poolKeys.id)],i=J.getTickArrayStartIndexByTick(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),r=J.getTickArrayStartIndexByTick(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:s}=he(t,n,i),{publicKey:a}=he(t,n,r),{publicKey:c}=Z(e.owner,e.ownerPosition.nftMint,Oe),{publicKey:u}=Lt(t,e.ownerPosition.nftMint),{publicKey:l}=dn(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),m=[];for(let f=0;f<e.poolKeys.rewardInfos.length;f++)m.push({poolRewardVault:new z(e.poolKeys.rewardInfos[f].vault),ownerRewardVault:e.ownerRewardAccounts[f],rewardMint:new z(e.poolKeys.rewardInfos[f].mint.address)});let d=[...m.map(f=>[{pubkey:f.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:f.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:f.rewardMint,isSigner:!1,isWritable:!1}]).flat()],p=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:tu(e.programId,u).publicKey,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e.owner,isSigner:!0,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:new z(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new z(e.poolKeys.vault.B),isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:e.userVaultA,isSigner:!1,isWritable:!0},{pubkey:e.userVaultB,isSigner:!1,isWritable:!0},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:gn,isSigner:!1,isWritable:!1},{pubkey:new z(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new z(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...d];return new wt({keys:p,programId:e.programId,data:Buffer.from(Xl)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:i,lockOwner:r,lockNftMint:s,lockNftAccount:a,positionNftAccount:c,positionId:u,poolId:l,protocolPosition:m,vaultA:d,vaultB:p,tickArrayLower:f,tickArrayUpper:y,userVaultA:b,userVaultB:g,mintA:P,mintB:k,rewardAccounts:B,exTickArrayBitmap:T}){let h=[...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[],...B.map(x=>[{pubkey:x.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:x.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:x.rewardMint,isSigner:!1,isWritable:!1}]).flat()],S=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!0,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{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:f,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:gn,isSigner:!1,isWritable:!1},{pubkey:P,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},...h];return new wt({keys:S,programId:e,data:Buffer.from(Xl)})}};var zl=E([Pt("mintAuthorityOption"),O("mintAuthority"),w("supply"),q("decimals"),q("isInitialized"),Pt("freezeAuthorityOption"),O("freezeAuthority")]);import{PublicKey as Ly}from"@solana/web3.js";import{MintLayout as Ql,TOKEN_PROGRAM_ID as Ny}from"@solana/spl-token";var ix=async({connection:o,mint:e})=>{let t=await o.getAccountInfo(new Ly(e));return!t||t.data.length!==Ql.span?void 0:Ql.decode(t.data)},ox=({mint:o,decimals:e,programId:t=Ny,logoURI:n="",priority:i=3})=>{let r=o.toBase58().substring(0,6);return{address:o.toBase58(),decimals:e,symbol:r,logoURI:n,extensions:{},chainId:101,programId:t.toString(),name:r,tags:[],priority:i}},os=o=>new Le({mint:o.address,decimals:o.decimals,symbol:o.symbol,name:o.name}),Xo=i=>{var r=i,{amount:o,isRaw:e,name:t}=r,n=ze(r,["amount","isRaw","name"]);return new Ke(new Le({mint:kt(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),o,e,t)};function rx(o){return o.address===bn.address?dt:o}function sx(o){return o.address===dt.address?bn:o}var Bt=i=>{var r=i,{address:o,programId:e,decimals:t}=r,n=ze(r,["address","programId","decimals"]);return M({chainId:101,address:kt(o).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)},Hn=o=>o?U(M({},o),{transferFeeConfigAuthority:o.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:o.withdrawWithheldAuthority.toBase58(),withheldAmount:o.withheldAmount.toString(),olderTransferFee:U(M({},o.olderTransferFee),{epoch:o.olderTransferFee.epoch.toString(),maximumFee:o.olderTransferFee.maximumFee.toString()}),newerTransferFee:U(M({},o.newerTransferFee),{epoch:o.newerTransferFee.epoch.toString(),maximumFee:o.newerTransferFee.maximumFee.toString()})}):void 0;import Yl from"bn.js";var au=new Yl(25),rs=new Yl(1e4),Oy={4:3,5:3};import{PublicKey as ve,SystemProgram as Zl,SYSVAR_RENT_PUBKEY as vy,TransactionInstruction as On}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Fy,TOKEN_PROGRAM_ID as Gi}from"@solana/spl-token";var uu=E([q("instruction"),w("amountIn"),w("minAmountOut")]),cu=E([q("instruction"),w("maxAmountIn"),w("amountOut")]),gx=E([q("instruction"),q("nonce")]),lu=E([q("instruction"),q("nonce"),w("startTime")]),yi=E([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"),ne("swapBaseInAmount"),ne("swapQuoteOutAmount"),w("swapBase2QuoteFee"),ne("swapQuoteInAmount"),ne("swapBaseOutAmount"),w("swapQuote2BaseFee"),O("baseVault"),O("quoteVault"),O("baseMint"),O("quoteMint"),O("lpMint"),O("openOrders"),O("marketId"),O("marketProgramId"),O("targetOrders"),O("withdrawQueue"),O("lpVault"),O("owner"),w("lpReserve"),H(w(),3,"padding")]),My=E([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"),ne("swapBaseInAmount"),ne("swapQuoteOutAmount"),ne("swapQuoteInAmount"),ne("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),O("baseVault"),O("quoteVault"),O("baseMint"),O("quoteMint"),O("lpMint"),O("modelDataAccount"),O("openOrders"),O("marketId"),O("marketProgramId"),O("targetOrders"),O("owner"),H(w(),64,"padding")]),mu=E([q("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide"),w("otherAmountMin")]),du=E([q("instruction"),w("lpAmount"),w("baseAmountMin"),w("quoteAmountMin")]),Ax={4:yi,5:My},Hl=E([w("fee")]);var jl=Pe("Raydium_liquidity_instruction");function $l(o){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:r,fixedSide:s,otherAmountMin:a,modelDataPubKey:c=Un}=o,u=Buffer.alloc(mu.span);mu.encode({instruction:3,baseAmountIn:ee(i),quoteAmountIn:ee(r),otherAmountMin:ee(a),fixedSide:s==="base"?ot:hc},u);let l=[A({pubkey:Gi,isWritable:!1}),A({pubkey:new ve(e.id)}),A({pubkey:new ve(t.authority),isWritable:!1}),A({pubkey:new ve(t.openOrders),isWritable:!1}),A({pubkey:new ve(t.targetOrders)}),A({pubkey:new ve(e.lpMint.address)}),A({pubkey:new ve(t.vault.A)}),A({pubkey:new ve(t.vault.B)})];return e.pooltype.includes("StablePool")&&l.push(A({pubkey:c})),l.push(A({pubkey:new ve(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 ve(t.marketEventQueue),isWritable:!1})),new On({programId:new ve(e.programId),keys:l,data:u})}function pu(o){let{poolInfo:e,poolKeys:t,userKeys:n,lpAmount:i,baseAmountMin:r,quoteAmountMin:s,modelDataPubKey:a=Un}=o,c=Ve(t),u=4;if(e.pooltype.includes("StablePool")&&(u=5),u===4||u===5){let l=Buffer.alloc(du.span);du.encode({instruction:4,lpAmount:ee(i),baseAmountMin:ee(r),quoteAmountMin:ee(s)},l);let m=[A({pubkey:Gi,isWritable:!1}),A({pubkey:c.id}),A({pubkey:c.authority,isWritable:!1}),A({pubkey:c.openOrders}),A({pubkey:c.targetOrders}),A({pubkey:c.mintLp.address}),A({pubkey:c.vault.A}),A({pubkey:c.vault.B})];return u===5?m.push(A({pubkey:a})):(m.push(A({pubkey:c.id})),m.push(A({pubkey:c.id}))),m.push(A({pubkey:c.marketProgramId,isWritable:!1}),A({pubkey:c.marketId}),A({pubkey:c.marketBaseVault}),A({pubkey:c.marketQuoteVault}),A({pubkey:c.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:c.marketEventQueue}),A({pubkey:c.marketBids}),A({pubkey:c.marketAsks})),new On({programId:c.programId,keys:m,data:l})}return new On({programId:c.programId,keys:[]})}function fu({programId:o,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:r,pcMint:s,coinVault:a,pcVault:c,withdrawQueue:u,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:f,userCoinVault:y,userPcVault:b,userLpVault:g,nonce:P,openTime:k,coinAmount:B,pcAmount:T,ammConfigId:h,feeDestinationId:S}){let x=E([q("instruction"),q("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),K=[{pubkey:Gi,isSigner:!1,isWritable:!1},{pubkey:Fy,isSigner:!1,isWritable:!1},{pubkey:Zl.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,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:h,isSigner:!1,isWritable:!1},{pubkey:S,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!0,isWritable:!0},{pubkey:y,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:P,openTime:k,coinAmount:B,pcAmount:T},I),{instruction:new On({keys:K,programId:o,data:I}),instructionType:X.AmmV4CreatePool}}function Cx(o){let e=E([q("instruction"),q("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[A({pubkey:new ve(o.id),isWritable:!1}),A({pubkey:new ve(o.authority),isWritable:!1}),A({pubkey:new ve(o.openOrders),isWritable:!1}),A({pubkey:new ve(o.vault.A),isWritable:!1}),A({pubkey:new ve(o.vault.B),isWritable:!1}),A({pubkey:new ve(o.mintLp.address),isWritable:!1}),A({pubkey:new ve(o.marketId),isWritable:!1}),A({pubkey:new ve(o.marketEventQueue),isWritable:!1})];return new On({programId:new ve(o.programId),keys:n,data:t})}function Ey({poolKeys:o,userKeys:e,amountIn:t,minAmountOut:n,modelDataPubKey:i=Un},r){let s=Ve(o),a=Buffer.alloc(uu.span);uu.encode({instruction:9,amountIn:ee(t),minAmountOut:ee(n)},a);let c=[A({pubkey:Gi,isWritable:!1}),A({pubkey:s.id}),A({pubkey:s.authority,isWritable:!1}),A({pubkey:s.openOrders})];return r===4&&c.push(A({pubkey:s.targetOrders})),c.push(A({pubkey:s.vault.A}),A({pubkey:s.vault.B})),r===5&&c.push(A({pubkey:i})),c.push(A({pubkey:s.marketProgramId,isWritable:!1}),A({pubkey:s.marketId}),A({pubkey:s.marketBids}),A({pubkey:s.marketAsks}),A({pubkey:s.marketEventQueue}),A({pubkey:s.marketBaseVault}),A({pubkey:s.marketQuoteVault}),A({pubkey:s.marketAuthority,isWritable:!1}),A({pubkey:e.tokenAccountIn}),A({pubkey:e.tokenAccountOut}),A({pubkey:e.owner,isWritable:!1,isSigner:!0})),new On({programId:s.programId,keys:c,data:a})}function _y({poolKeys:o,userKeys:e,maxAmountIn:t,amountOut:n,modelDataPubKey:i=Un},r){let s=Ve(o),a=Buffer.alloc(cu.span);cu.encode({instruction:11,maxAmountIn:ee(t),amountOut:ee(n)},a);let c=[A({pubkey:Gi,isWritable:!1}),A({pubkey:s.id}),A({pubkey:s.authority,isWritable:!1}),A({pubkey:s.openOrders}),A({pubkey:s.targetOrders}),A({pubkey:s.vault.A}),A({pubkey:s.vault.B})];return r===5&&c.push(A({pubkey:i})),c.push(A({pubkey:s.marketProgramId,isWritable:!1}),A({pubkey:s.marketId}),A({pubkey:s.marketBids}),A({pubkey:s.marketAsks}),A({pubkey:s.marketEventQueue}),A({pubkey:s.marketBaseVault}),A({pubkey:s.marketQuoteVault}),A({pubkey:s.marketAuthority,isWritable:!1}),A({pubkey:e.tokenAccountIn}),A({pubkey:e.tokenAccountOut}),A({pubkey:e.owner,isWritable:!1,isSigner:!0})),new On({programId:s.programId,keys:c,data:a})}function ss(o){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:r,fixedSide:s}=o;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Ey(U(M({},a),{amountIn:i,minAmountOut:r}),t);if(s==="out")return _y(U(M({},a),{maxAmountIn:i,amountOut:r}),t);jl.logWithError("invalid params","params",o)}throw jl.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function Rx({poolKeys:o,userKeys:e,startTime:t}){let n=Buffer.alloc(lu.span);lu.encode({instruction:0,nonce:5,startTime:ee(t)},n);let i=Ve(o),r=[A({pubkey:Gi,isWritable:!1}),A({pubkey:Zl.programId,isWritable:!1}),A({pubkey:vy,isWritable:!1}),A({pubkey:i.id}),A({pubkey:i.authority,isWritable:!1}),A({pubkey:i.openOrders}),A({pubkey:i.mintLp.address}),A({pubkey:i.mintA.address,isWritable:!1}),A({pubkey:i.mintB.address,isWritable:!1}),A({pubkey:i.vault.A,isWritable:!1}),A({pubkey:i.vault.B,isWritable:!1}),A({pubkey:i.id}),A({pubkey:i.targetOrders}),A({pubkey:e.lpTokenAccount}),A({pubkey:i.id,isWritable:!1}),A({pubkey:i.marketProgramId,isWritable:!1}),A({pubkey:i.marketId,isWritable:!1}),A({pubkey:e.payer,isSigner:!0})];return new On({programId:i.programId,keys:r,data:n})}function Jl({poolKeys:o}){let e=E([q("instruction"),q("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[A({pubkey:new ve(o.id),isWritable:!1}),A({pubkey:new ve(o.authority),isWritable:!1}),A({pubkey:new ve(o.openOrders),isWritable:!1}),A({pubkey:new ve(o.vault.A),isWritable:!1}),A({pubkey:new ve(o.vault.B),isWritable:!1}),A({pubkey:new ve(o.mintLp.address),isWritable:!1}),A({pubkey:new ve(o.marketId),isWritable:!1}),A({pubkey:new ve(o.marketEventQueue),isWritable:!1})];return{instruction:new On({programId:new ve(o.programId),keys:n,data:t})}}var gi=5e4,Vy=E([w("x"),w("y"),w("price")]),Dy=E([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),H(Vy,gi,"DataElement")]);function Wy(o,e){return[0,gi-2]}function qy(o){return[0,gi-2]}function Uy(o){return[0,gi-2]}function Gy(o,e,t){let[n,i]=Wy(e,t),r=n,s=i,a=0,c=e*o.multiplier/t;for(;r<=s;){if(a=Math.floor((s+r)/2),a===0||a>=gi-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];r=a+1}}return[a,a,!1]}function yu(o,e,t){let[n,i,r]=Gy(o,e,t);if(!r)return 0;if(n===i){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[i].x,u=o.DataElement[i].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 bi(o,e,t){return e*o.multiplier/t}function em(o,e,t){return e*t/o.multiplier}function Xy(o,e){let[t,n]=qy(e),i=t,r=n,s=0,a=e;for(;i<r;){if(s=Math.floor((r+i)/2),s<=0||s>gi-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)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 zy(o,e){let[t,n]=Uy(e),i=t,r=n,s=0,a=e;for(;i<=r;){if(s=Math.floor((r+i)/2),s<=0||s>=gi-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)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 tm(o,e,t,n){let i=n?e+t:e-t,[r,s,a]=Xy(o,i);if(!a)return[0,0,!1,a];if(r===s)return[o.DataElement[s].price,o.DataElement[s].y,!1,a];{let c=o.DataElement[r].x,u=o.DataElement[s].x,l=o.DataElement[r].price,m=o.DataElement[s].price,d=o.DataElement[r].y,p=o.DataElement[s].y;if(e>=c&&e<=u)return n?[m,p,!0,a]:[l,d,!0,a];{let f,y;return n?(f=l+(m-l)*(e-c)/(u-c),y=d-(i-c)*o.multiplier/m):(f=l+(m-l)*(e-c)/(u-c),y=p+(u-i)*o.multiplier/l),[f,y,!1,a]}}}function Qy(o,e,t,n){let i=n?e-t:e+t,[r,s,a]=zy(o,i);if(!a)return[0,0,!1,a];if(r===s)return[o.DataElement[s].price,o.DataElement[s].x,!1,a];{let c=o.DataElement[r].x,u=o.DataElement[s].x,l=o.DataElement[r].price,m=o.DataElement[s].price,d=o.DataElement[r].y,p=o.DataElement[s].y;if(e>=p&&e<=d)return n?[m,u,!0,a]:[l,c,!0,a];{let f,y;return n?(f=l+(m-l)*(d-e)/(d-p),y=c+m*(d-i)/o.multiplier):(f=l+(m-l)*(d-e)/(d-p),y=u-l*(i-p)/o.multiplier),[f,y,!1,a]}}}function Yy(o,e){let t=tm(o,e,0,!1);return t[3]?t[0]:0}function nm(o,e,t,n){let i=yu(o,e,t),r=bi(o,e,i),s=bi(o,t,i),a=bi(o,n,i),c=!0,[u,l,m,d]=tm(o,r,a,c);if(!d)return 0;if(m)return n*o.multiplier/u;{let p=s-l;return em(o,p,i)}}function im(o,e,t,n){let i=yu(o,e,t),r=bi(o,e,i),s=bi(o,t,i),a=bi(o,n,i),c=!1,[u,l,m,d]=Qy(o,s,a,c);if(!d)return 0;if(m)return n*u/o.multiplier;{let p=r-l;return em(o,p,i)}}function Hy(o){let e=Dy.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 om(o,e,t,n){let i=Yy(o,bi(o,e,yu(o,e,t)))/o.multiplier;return n?i:1/i}var Xi=class{constructor({connection:e,modelDataPubKey:t=Un}){this._layoutData={accountType:0,status:0,multiplier:0,validDataCount:0,DataElement:[]};this.connection=e,this.modelDataPubKey=t}get stableModelData(){return this._layoutData}async initStableModelLayout(){if(this._layoutData.validDataCount===0&&this.connection){let e=await this.connection.getAccountInfo(this.modelDataPubKey);e&&(this._layoutData=Hy(e==null?void 0:e.data))}}};import{PublicKey as Qo}from"@solana/web3.js";import zo from"bn.js";import{TOKEN_PROGRAM_ID as $y}from"@solana/spl-token";import{PublicKey as jy}from"@solana/web3.js";var Zy=Pe("Raydium_liquidity_serum");function rm({programId:o,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let r=t.concat(Buffer.from([n]),Buffer.alloc(7));i=jy.createProgramAddressSync(r,o)}catch(r){if(r instanceof TypeError)throw r;n++;continue}return{publicKey:i,nonce:n}}throw Zy.logWithError("unable to find a viable program address nonce","params",{programId:o,marketId:e}),new Error("unable to find a viable program address nonce")}function as({programId:o}){let{publicKey:e}=oe([Buffer.from("amm_config_account_seed","utf-8")],o);return e}function Ai({name:o,programId:e,marketId:t}){let{publicKey:n}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(o,"utf-8")],e);return n}function Jy({programId:o,marketId:e}){let{publicKey:t}=oe([o.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],o);return t}function Au({programId:o}){return oe([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],o)}function Pu({version:o,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:r,quoteDecimals:s,programId:a,marketProgramId:c}){let u=Ai({name:"amm_associated_seed",programId:a,marketId:t}),l=Ai({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=Au({programId:a}),p=Ai({name:"coin_vault_associated_seed",programId:a,marketId:t}),f=Ai({name:"pc_vault_associated_seed",programId:a,marketId:t}),y=Ai({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=Jy({programId:a,marketId:t}),g=Ai({name:"target_associated_seed",programId:a,marketId:t}),P=Ai({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:k}=rm({programId:c,marketId:t});return{id:u,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:r,quoteDecimals:s,lpDecimals:r,version:o,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:f,lpVault:y,openOrders:b,targetOrders:g,withdrawQueue:P,marketVersion:e,marketProgramId:c,marketId:t,marketAuthority:k,lookupTableAccount:Qo.default,configId:as({programId:a})}}var bu;async function iS({connection:o,poolKeysList:e,config:t,modelDataPubKey:n}){return e.find(r=>r.modelDataAccount)&&(bu||(bu=new Xi({connection:o,modelDataPubKey:n}),await bu.initStableModelLayout())),await Promise.all(e.map(async r=>{if(r.modelDataAccount){let s=Jl({poolKeys:r});return(await Nc(o,[s.instruction],"GetPoolData")).map(u=>{let l=Oc(u,"GetPoolData"),m=new zo(Bn(l,"status")),d=Number(Bn(l,"coin_decimals")),p=Number(Bn(l,"pc_decimals")),f=Number(Bn(l,"lp_decimals")),y=new zo(Bn(l,"pool_coin_amount")),b=new zo(Bn(l,"pool_pc_amount")),g=new zo(Bn(l,"pool_lp_supply")),P="0";try{P=Bn(l,"pool_open_time")}catch{}return{status:m,baseDecimals:d,quoteDecimals:p,lpDecimals:f,baseReserve:y,quoteReserve:b,lpSupply:g,startTime:new zo(P)}})[0]}else{let[s,a,c,u]=await o.getMultipleAccountsInfo([new Qo(r.id),new Qo(r.vault.A),new Qo(r.vault.B),new Qo(r.mintLp.address)]);if(s===null)throw Error("fetch pool error");if(a===null)throw Error("fetch vaultAccA error");if(c===null)throw Error("fetch vaultAccB error");if(u===null)throw Error("fetch mintAccLp error");let l=yi.decode(s.data),m=mn.decode(a.data),d=mn.decode(c.data),p=zl.decode(u.data);return{status:l.status,baseDecimals:l.baseDecimal.toNumber(),quoteDecimals:l.quoteDecimal.toNumber(),lpDecimals:p.decimals,baseReserve:m.amount.sub(l.baseNeedTakePnl),quoteReserve:d.amount.sub(l.quoteNeedTakePnl),lpSupply:l.lpReserve,startTime:l.poolOpenTime}}}))}var gu={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},us=o=>{let e={},t=$y.toBase58();return Object.keys(o).map(n=>{let i=o[n],[r,s]=[i.baseMint.toBase58(),i.quoteMint.toBase58()];e[n]={id:n,version:4,status:i.status.toNumber(),programId:i.programId.toBase58(),mintA:Bt({address:r,programId:t,decimals:i.baseDecimal.toNumber()}),mintB:Bt({address:s,programId:t,decimals:i.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:i.poolPrice.toNumber(),mintAmountA:new N(i.mintAAmount.toString()).div(10**i.baseDecimal.toNumber()).toNumber(),mintAmountB:new N(i.mintBAmount.toString()).div(10**i.quoteDecimal.toNumber()).toNumber(),baseReserve:i.baseReserve,quoteReserve:i.quoteReserve,feeRate:new N(i.tradeFeeNumerator.toString()).div(i.tradeFeeDenominator.toString()).toNumber(),openTime:i.poolOpenTime.toString(),tvl:0,day:gu,week:gu,month:gu,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:i.marketId.toBase58(),configId:as({programId:i.programId}).toBase58(),lpPrice:0,lpAmount:new N(i.lpReserve.toString()).div(10**Math.min(i.baseDecimal.toNumber(),i.quoteDecimal.toNumber())).toNumber(),lpMint:Bt({address:i.lpMint.toBase58(),programId:t,decimals:Math.min(i.baseDecimal.toNumber(),i.quoteDecimal.toNumber())}),burnPercent:0}}),e};import Ye from"bn.js";import{PublicKey as Yo}from"@solana/web3.js";import Ho from"bn.js";import{TOKEN_PROGRAM_ID as cm}from"@solana/spl-token";import{SystemProgram as Pi,SYSVAR_RENT_PUBKEY as tb,Transaction as sm,TransactionInstruction as nb}from"@solana/web3.js";import{createInitializeAccountInstruction as am,TOKEN_PROGRAM_ID as um}from"@solana/spl-token";function eb(o="accountFlags"){let e=new Yr(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 wu=E([Re(5),eb("accountFlags"),O("ownAddress"),w("vaultSignerNonce"),O("baseMint"),O("quoteMint"),O("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),O("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),O("requestQueue"),O("eventQueue"),O("bids"),O("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),Re(7)]);function ib({programId:o,marketInfo:e}){let t=E([q("version"),Pt("instruction"),w("baseLotSize"),w("quoteLotSize"),Dt("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:tb,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),i=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},i),new nb({keys:n,programId:o,data:i})}async function cs({connection:o,wallet:e,marketInfo:t}){var s,a,c,u,l,m,d,p;let n=new sm,i=await o.getMinimumBalanceForRentExemption(165);n.add(Pi.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:i,space:165,programId:um}),Pi.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:um}),am(t.baseVault.publicKey,t.baseMint,t.vaultOwner),am(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner),Pi.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await o.getMinimumBalanceForRentExemption(wu.span),space:wu.span,programId:t.programId}));let r=new sm;return r.add(Pi.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:t.lowestFeeMarket?6208320:await o.getMinimumBalanceForRentExemption((s=t.requestQueueSpace)!=null?s:5120+12),space:t.lowestFeeMarket?764:(a=t.requestQueueSpace)!=null?a:5120+12,programId:t.programId}),Pi.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:t.lowestFeeMarket?79594560:await o.getMinimumBalanceForRentExemption((c=t.eventQueueSpace)!=null?c:262144+12),space:t.lowestFeeMarket?11308:(u=t.eventQueueSpace)!=null?u:262144+12,programId:t.programId}),Pi.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:t.lowestFeeMarket?101977920:await o.getMinimumBalanceForRentExemption((l=t.orderbookQueueSpace)!=null?l:65536+12),space:t.lowestFeeMarket?14524:(m=t.orderbookQueueSpace)!=null?m:65536+12,programId:t.programId}),Pi.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:t.lowestFeeMarket?101977920:await o.getMinimumBalanceForRentExemption((d=t.orderbookQueueSpace)!=null?d:65536+12),space:t.lowestFeeMarket?14524:(p=t.orderbookQueueSpace)!=null?p:65536+12,programId:t.programId}),ib({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:[X.CreateAccount,X.CreateAccount,X.InitAccount,X.InitAccount]},{transaction:r,signer:[],instructionTypes:[X.CreateAccount,X.CreateAccount,X.CreateAccount,X.CreateAccount,X.CreateAccount,X.InitMarket]}]}var zi=class extends De{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:i,dexProgramId:r,requestQueueSpace:s,eventQueueSpace:a,orderbookQueueSpace:c,lowestFeeMarket:u,assignSeed:l,txVersion:m,computeBudgetConfig:d,txTipConfig:p,feePayer:f}){let y=this.scope.ownerPubKey,b=l?`${e.mint.toBase58().slice(0,10)}-${t.mint.toBase58().slice(0,10)}-${l}`:void 0,g=Je({fromPublicKey:y,programId:r,assignSeed:b&&`${b}-market`}),P=Je({fromPublicKey:y,programId:r,assignSeed:b&&`${b}-request`}),k=Je({fromPublicKey:y,programId:r,assignSeed:b&&`${b}-event`}),B=Je({fromPublicKey:y,programId:r,assignSeed:b&&`${b}-bids`}),T=Je({fromPublicKey:y,programId:r,assignSeed:b&&`${b}-asks`}),h=Je({fromPublicKey:y,programId:cm,assignSeed:b&&`${b}-baseVault`}),S=Je({fromPublicKey:y,programId:cm,assignSeed:b&&`${b}-quoteVault`}),x=0,K=new Ho(100);function I(){let Y=new Ho(0);for(;;)try{return{vaultOwner:Yo.createProgramAddressSync([g.publicKey.toBuffer(),Y.toArrayLike(Buffer,"le",8)],r),vaultSignerNonce:Y}}catch{if(Y.iaddn(1),Y.gt(new Ho(25555)))throw Error("find vault owner error")}}let{vaultOwner:C,vaultSignerNonce:F}=I(),v=new Ho(Math.round(10**e.decimals*n)),R=new Ho(Math.round(n*10**t.decimals*i));if(v.eq(ot))throw Error("lot size is too small");if(R.eq(ot))throw Error("tick size or lot size is too small");let L=await cs({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:r,id:g,baseMint:e.mint,quoteMint:t.mint,baseVault:h,quoteVault:S,vaultOwner:C,requestQueue:P,eventQueue:k,bids:B,asks:T,feeRateBps:x,quoteDustThreshold:K,vaultSignerNonce:F,baseLotSize:v,quoteLotSize:R,requestQueueSpace:s,eventQueueSpace:a,orderbookQueueSpace:c,lowestFeeMarket:u}}),V=this.createTxBuilder(f);V.addInstruction({instructions:L[0].transaction.instructions,signers:L[0].signer});for await(let Y of L.slice(1,L.length))V.addInstruction({instructions:Y.transaction.instructions,signers:Y.signer,instructionTypes:Y.instructionTypes});return m===0?V.sizeCheckBuildV0({computeBudgetConfig:d,address:{marketId:g.publicKey,requestQueue:P.publicKey,eventQueue:k.publicKey,bids:B.publicKey,asks:T.publicKey,baseVault:h.publicKey,quoteVault:S.publicKey,baseMint:new Yo(e.mint),quoteMint:new Yo(t.mint)}}):V.sizeCheckBuild({computeBudgetConfig:d,address:{marketId:g.publicKey,requestQueue:P.publicKey,eventQueue:k.publicKey,bids:B.publicKey,asks:T.publicKey,baseVault:h.publicKey,quoteVault:S.publicKey,baseMint:new Yo(e.mint),quoteMint:new Yo(t.mint)}})}};var jo=class extends De{constructor(t){super(t);this.stableLayout=new Xi({connection:this.scope.connection,modelDataPubKey:this.scope.cluster==="mainnet"?void 0:xn.MODEL_DATA_PUBKEY})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:i,baseIn:r}){let s=new Ye(new N(n).mul(10**t[r?"mintA":"mintB"].decimals).toFixed(0)),a=os(t[r?"mintB":"mintA"]),[c,u]=[new Ye(new N(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new Ye(new N(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new Ye(new N(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,N.ROUND_DOWN));this.logDebug("baseReserve:",c.toString(),"quoteReserve:",u.toString()),this.logDebug("tokenIn:",r?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",r?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`,"baseReserve",c.toString(),"quoteReserve",u.toString());let m=r?"base":"quote";this.logDebug("input side:",m);let d=ot;s.isZero()||(d=m==="base"?Cr(s.mul(u),c):Cr(s.mul(c),u)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=Cr(s.mul(l),m==="base"?c:u);this.logDebug("liquidity:",p.toString());let f=new Ze(new Ye(1)).add(i),y=new Ze(new Ye(1)).sub(i),b=f.mul(d).quotient,g=y.mul(d).quotient,P=new Ke(a,d),k=new Ke(a,b),B=new Ke(a,g);return this.logDebug("anotherAmount:",P.toFixed(),"maxAnotherAmount:",k.toFixed()),{anotherAmount:P,maxAnotherAmount:k,minAnotherAmount:B,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,poolKeys:i,amountInA:r,amountInB:s,otherAmountMin:a,fixedSide:c,config:u,txVersion:l,computeBudgetConfig:m,txTipConfig:d,feePayer:p}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",r,"amountInB:",s),(r.isZero()||s.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:r.toFixed(),amountInB:s.toFixed()});let{account:f}=this.scope,{bypassAssociatedCheck:y,checkCreateATAOwner:b}=M({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),[g,P]=[r.token,s.token],k=await f.getCreatedTokenAccount({mint:g.mint,associatedOnly:!1}),B=await f.getCreatedTokenAccount({mint:P.mint,associatedOnly:!1});!k&&!B&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",f.tokenAccounts);let T=await f.getCreatedTokenAccount({mint:new rt(n.lpMint.address)}),h=[g,P],S=[k,B],x=[r.raw,s.raw],K=r.token.mint.toBase58()===n.mintA.address?"base":"quote",I="base";["quote","base"].includes(K)||this.logAndCreateError("invalid fixedSide","fixedSide",c),K==="quote"?(h.reverse(),S.reverse(),x.reverse(),I=c==="a"?"quote":"base"):K==="base"&&(I=c==="a"?"base":"quote");let[C,F]=h,[v,R]=S,[L,V]=x,Y=i!=null?i:await this.getAmmPoolKeys(n.id),te=this.createTxBuilder(p),re=await f.handleTokenAccount({side:"in",amount:L,mint:C.mint,tokenAccount:v,bypassAssociatedCheck:y,checkCreateATAOwner:b}),{tokenAccount:le}=re,Ie=ze(re,["tokenAccount"]);te.addInstruction(Ie);let Ue=await f.handleTokenAccount({side:"in",amount:V,mint:F.mint,tokenAccount:R,bypassAssociatedCheck:y,checkCreateATAOwner:b}),{tokenAccount:pe}=Ue,Ae=ze(Ue,["tokenAccount"]);te.addInstruction(Ae);let Se=await f.handleTokenAccount({side:"out",amount:0,mint:new rt(n.lpMint.address),tokenAccount:T,bypassAssociatedCheck:y,checkCreateATAOwner:b}),{tokenAccount:we}=Se,be=ze(Se,["tokenAccount"]);return te.addInstruction(be),te.addInstruction({instructions:[$l({poolInfo:n,poolKeys:Y,userKeys:{baseTokenAccount:le,quoteTokenAccount:pe,lpTokenAccount:we,owner:this.scope.ownerPubKey},baseAmountIn:L,quoteAmountIn:V,otherAmountMin:a.raw,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?X.AmmV5AddLiquidity:X.AmmV4AddLiquidity],lookupTableAddress:Y.lookupTableAccount?[Y.lookupTableAccount]:[]}),te.addCustomComputeBudget(m),te.addTipInstruction(d),l===0?await te.buildV0():te.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,poolKeys:i,lpAmount:r,baseAmountMin:s,quoteAmountMin:a,config:c,txVersion:u,computeBudgetConfig:l,txTipConfig:m,feePayer:d}=t,p=i!=null?i:await this.getAmmPoolKeys(n.id),[f,y,b]=[new rt(n.mintA.address),new rt(n.mintB.address),new rt(n.lpMint.address)];this.logDebug("lpAmount:",r),this.logDebug("baseAmountMin:",s),this.logDebug("quoteAmountMin:",a),r.isZero()&&this.logAndCreateError("amount must greater than zero","lpAmount",r.toString());let{account:g}=this.scope,P=await g.getCreatedTokenAccount({mint:b,associatedOnly:!1});P||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",g.tokenAccounts);let k=await g.getCreatedTokenAccount({mint:f}),B=await g.getCreatedTokenAccount({mint:y}),T=this.createTxBuilder(d),{bypassAssociatedCheck:h,checkCreateATAOwner:S}=M({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},c),F=await g.handleTokenAccount({side:"out",amount:0,mint:f,tokenAccount:k,bypassAssociatedCheck:h,checkCreateATAOwner:S}),{tokenAccount:x}=F,K=ze(F,["tokenAccount"]);T.addInstruction(K);let v=await g.handleTokenAccount({side:"out",amount:0,mint:y,tokenAccount:B,bypassAssociatedCheck:h,checkCreateATAOwner:S}),{tokenAccount:I}=v,C=ze(v,["tokenAccount"]);return T.addInstruction(C),T.addInstruction({instructions:[pu({poolInfo:n,poolKeys:p,userKeys:{lpTokenAccount:P,baseTokenAccount:x,quoteTokenAccount:I,owner:this.scope.ownerPubKey},lpAmount:r,baseAmountMin:s,quoteAmountMin:a})],lookupTableAddress:p.lookupTableAccount?[p.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?X.AmmV5RemoveLiquidity:X.AmmV4RemoveLiquidity]}),T.addCustomComputeBudget(l),T.addTipInstruction(m),u===0?await T.buildV0():T.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:r,farmInfo:s,userFarmLpAmount:a,base:c,computeBudgetConfig:u,payer:l,userAuxiliaryLedgers:m,tokenProgram:d=jn,checkCreateATAOwner:p=!0,getEphemeralSigners:f,txVersion:y,feePayer:b}){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 g=this.createTxBuilder(b),P={};for(let Y of this.scope.account.tokenAccountRawInfos)(P[Y.accountInfo.mint.toString()]===void 0||Z(this.scope.ownerPubKey,Y.accountInfo.mint,jn).publicKey.equals(Y.pubkey))&&(P[Y.accountInfo.mint.toString()]=Y.pubkey);let k=P[t.lpMint.address];if(k===void 0)throw Error("find lp account error in trade accounts");let B=i.add(a!=null?a:new Ye(0)),T=t.mintA.address===Le.WSOL.mint.toString(),h=t.mintB.address===Le.WSOL.mint.toString(),{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:jn,mint:new rt(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:T?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:!0,checkCreateATAOwner:p});if(g.addInstruction(x||{}),S===void 0)throw new Error("base token account not found");let{account:K,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:jn,mint:new rt(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!0,checkCreateATAOwner:p});if(g.addInstruction(I||{}),K===void 0)throw new Error("quote token account not found");if(P[t.mintA.address]=S,P[t.mintB.address]=K,s!==void 0&&!(a!=null&&a.isZero())){let Y=Qt[s.programId],te=Tt({programId:new rt(s.programId),poolId:new rt(s.id),owner:this.scope.ownerPubKey,version:Y}),le,Ie=await this.scope.connection.getAccountInfo(te);if(Ie&&(le=Di(Y).decode(Ie.data)),Y!==6&&!le){let{instruction:Se,instructionType:je}=No({id:new rt(s.id),programId:new rt(s.programId),version:Y,ledger:te,owner:this.scope.ownerPubKey});g.addInstruction({instructions:[Se],instructionTypes:[je]})}let pe=[];for(let Se of s.rewardInfos){let je=Se.mint.address===Le.WSOL.mint.toString();if(P[Se.mint.address])pe.push(P[Se.mint.address]);else{let{account:ii,instructionParams:kn}=await this.scope.account.getOrCreateTokenAccount({mint:new rt(Se.mint.address),tokenProgram:d,owner:this.scope.ownerPubKey,skipCloseAccount:!je,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});ii||this.logAndCreateError("farm reward account not found:",Se.mint.address),kn&&g.addInstruction(kn),pe.push(ii)}}let Ae=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],we={userAuxiliaryLedgers:m,amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:Ae,lpAccount:k,rewardAccounts:pe},be=Qt[s.programId],re=be===6?Oo(we):be===5?Mo(we):vo(we),Ue={3:X.FarmV3Withdraw,5:X.FarmV5Withdraw,6:X.FarmV6Withdraw};g.addInstruction({instructions:[re],instructionTypes:[Ue[be]]})}let C=await this.getAmmPoolKeys(t.id),F=pu({poolInfo:t,poolKeys:C,userKeys:{lpTokenAccount:k,baseTokenAccount:S,quoteTokenAccount:K,owner:this.scope.ownerPubKey},lpAmount:B,baseAmountMin:0,quoteAmountMin:0});g.addInstruction({instructions:[F],instructionTypes:[t.pooltype.includes("StablePool")?X.AmmV5RemoveLiquidity:X.AmmV4RemoveLiquidity],lookupTableAddress:C.lookupTableAccount?[C.lookupTableAccount]:[]});let[v,R]=t.mintA.address===n.mintA.address?[S,K]:[K,S],L=await this.scope.clmm.getClmmPoolKeys(n.id),V=await Me.openPositionFromBaseInstructions(U(M({poolInfo:n,poolKeys:L,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:v,tokenAccountB:R},withMetadata:"create"},r),{base:c,getEphemeralSigners:f}));return g.addInstruction({instructions:[...V.instructions],signers:V.signers,instructionTypes:[...V.instructionTypes],lookupTableAddress:L.lookupTableAccount?[L.lookupTableAccount]:[]}),y===0?g.sizeCheckBuildV0({computeBudgetConfig:u}):g.sizeCheckBuild({computeBudgetConfig:u})}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:i,quoteMintInfo:r,baseAmount:s,quoteAmount:a,startTime:c,ownerInfo:u,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:f,computeBudgetConfig:y,txTipConfig:b,feePayer:g}){var R;let P=u.feePayer||((R=this.scope.owner)==null?void 0:R.publicKey),k=u.useSOLBalance&&i.mint.equals(ls),B=u.useSOLBalance&&r.mint.equals(ls),T=this.createTxBuilder(g),{account:h,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:k?{payer:P,amount:s}:void 0,notUseTokenAccount:k,skipCloseAccount:!k,associatedOnly:k?!1:l,checkCreateATAOwner:m});T.addInstruction(S||{});let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({mint:r.mint,owner:this.scope.ownerPubKey,createInfo:B?{payer:P,amount:a}:void 0,notUseTokenAccount:B,skipCloseAccount:!B,associatedOnly:B?!1:l,checkCreateATAOwner:m});if(T.addInstruction(K||{}),h===void 0||x===void 0)throw Error("you don't has some token account");let I=Pu({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:r.mint,baseDecimals:i.decimals,quoteDecimals:r.decimals,programId:t,marketProgramId:n.programId}),C={programId:t,ammId:I.id,ammAuthority:I.authority,ammOpenOrders:I.openOrders,lpMint:I.lpMint,coinMint:I.baseMint,pcMint:I.quoteMint,coinVault:I.baseVault,pcVault:I.quoteVault,withdrawQueue:I.withdrawQueue,ammTargetOrders:I.targetOrders,poolTempLp:I.lpVault,marketProgramId:I.marketProgramId,marketId:I.marketId,ammConfigId:I.configId,feeDestinationId:f},{instruction:F,instructionType:v}=fu(U(M({},C),{userWallet:this.scope.ownerPubKey,userCoinVault:h,userPcVault:x,userLpVault:Z(this.scope.ownerPubKey,I.lpMint,d).publicKey,nonce:I.nonce,openTime:c,coinAmount:s,pcAmount:a}));return T.addInstruction({instructions:[F],instructionTypes:[v]}),T.addCustomComputeBudget(y),T.addTipInstruction(b),T.versionBuild({txVersion:p,extInfo:{address:C}})}async createMarketAndPoolV4({programId:t=yo,marketProgram:n=aa,feeDestinationId:i=ua,tokenProgram:r,baseMintInfo:s,quoteMintInfo:a,baseAmount:c,quoteAmount:u,startTime:l,ownerInfo:m,lowestFeeMarket:d,assignSeed:p,associatedOnly:f=!1,checkCreateATAOwner:y=!1,lotSize:b=1,tickSize:g=.01,txVersion:P,computeBudgetConfig:k,txTipConfig:B,feePayer:T}){var io,oo,ro;let h=this.scope.ownerPubKey,S=m.feePayer||((io=this.scope.owner)==null?void 0:io.publicKey),x=m.useSOLBalance&&s.mint.equals(ls),K=m.useSOLBalance&&a.mint.equals(ls),I=p?`${s.mint.toBase58().slice(0,7)}-${a.mint.toBase58().slice(0,7)}-${p}`:void 0,C=Je({fromPublicKey:h,programId:n,assignSeed:I&&`${I}-market`}),F=Je({fromPublicKey:h,programId:n,assignSeed:I&&`${I}-request`}),v=Je({fromPublicKey:h,programId:n,assignSeed:I&&`${I}-event`}),R=Je({fromPublicKey:h,programId:n,assignSeed:I&&`${I}-bids`}),L=Je({fromPublicKey:h,programId:n,assignSeed:I&&`${I}-asks`}),V=Je({fromPublicKey:h,programId:jn,assignSeed:I&&`${I}-baseVault`}),Y=Je({fromPublicKey:h,programId:jn,assignSeed:I&&`${I}-quoteVault`}),te=0,le=new Ye(100);function Ie(){let Vt=new Ye(0);for(;;)try{return{vaultOwner:rt.createProgramAddressSync([C.publicKey.toBuffer(),Vt.toArrayLike(Buffer,"le",8)],n),vaultSignerNonce:Vt}}catch{if(Vt.iaddn(1),Vt.gt(new Ye(25555)))throw Error("find vault owner error")}}let{vaultOwner:pe,vaultSignerNonce:Ae}=Ie(),we=new Ye(Math.round(10**s.decimals*b)),be=new Ye(Math.round(b*10**a.decimals*g));if(we.eq(ot))throw Error("lot size is too small");if(be.eq(ot))throw Error("tick size or lot size is too small");let re=await cs({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:n,vaultOwner:pe,baseMint:s.mint,quoteMint:a.mint,id:C,baseVault:V,quoteVault:Y,requestQueue:F,eventQueue:v,bids:R,asks:L,feeRateBps:te,quoteDustThreshold:le,vaultSignerNonce:Ae,baseLotSize:we,quoteLotSize:be,lowestFeeMarket:d}}),Ue=this.createTxBuilder(T);Ue.addInstruction({instructions:re[0].transaction.instructions,signers:re[0].signer});for await(let Vt of re.slice(1,re.length))Ue.addInstruction({instructions:Vt.transaction.instructions,signers:Vt.signer,instructionTypes:Vt.instructionTypes});let{account:Se,instructionParams:je}=await this.scope.account.getOrCreateTokenAccount({mint:s.mint,owner:this.scope.ownerPubKey,createInfo:x?{payer:S,amount:c}:void 0,notUseTokenAccount:x,skipCloseAccount:!x,associatedOnly:x?!1:f,checkCreateATAOwner:y,assignSeed:x&&I?`${I}-wsol`:void 0});Ue.addInstruction(je||{});let{account:ii,instructionParams:kn}=await this.scope.account.getOrCreateTokenAccount({mint:a.mint,owner:this.scope.ownerPubKey,createInfo:K?{payer:S,amount:u}:void 0,notUseTokenAccount:K,skipCloseAccount:!K,associatedOnly:K?!1:f,checkCreateATAOwner:y,assignSeed:K&&I?`${I}-wsol`:void 0});if(Ue.addInstruction(kn||{}),Se===void 0)throw Error("you don't has base token account");if(ii===void 0)throw Error("you don't has quote token account");let st=Pu({version:4,marketVersion:3,marketId:C.publicKey,baseMint:s.mint,quoteMint:a.mint,baseDecimals:s.decimals,quoteDecimals:a.decimals,programId:t,marketProgramId:n}),Fn={programId:t,ammId:st.id,ammAuthority:st.authority,ammOpenOrders:st.openOrders,lpMint:st.lpMint,coinMint:st.baseMint,pcMint:st.quoteMint,coinVault:st.baseVault,pcVault:st.quoteVault,withdrawQueue:st.withdrawQueue,ammTargetOrders:st.targetOrders,poolTempLp:st.lpVault,marketProgramId:st.marketProgramId,marketId:st.marketId,ammConfigId:st.configId,feeDestinationId:i},{instruction:eo,instructionType:to}=fu(U(M({},Fn),{userWallet:this.scope.ownerPubKey,userCoinVault:Se,userPcVault:ii,userLpVault:Z(this.scope.ownerPubKey,st.lpMint,r).publicKey,nonce:st.nonce,openTime:l,coinAmount:c,pcAmount:u}));Ue.addInstruction({instructions:[eo],instructionTypes:[to]});let no=x||K?[((oo=je==null?void 0:je.instructions)==null?void 0:oo[0])||((ro=kn==null?void 0:kn.instructions)==null?void 0:ro[0])].filter(Vt=>!!Vt):void 0;return P===0?Ue.sizeCheckBuildV0({computeBudgetConfig:k,splitIns:no,address:M({requestQueue:F.publicKey,eventQueue:v.publicKey,bids:R.publicKey,asks:L.publicKey,baseVault:V.publicKey,quoteVault:Y.publicKey,baseMint:new rt(s.mint),quoteMint:new rt(a.mint)},Fn)}):Ue.sizeCheckBuild({computeBudgetConfig:k,splitIns:no,address:M({requestQueue:F.publicKey,eventQueue:v.publicKey,bids:R.publicKey,asks:L.publicKey,baseVault:V.publicKey,quoteVault:Y.publicKey,baseMint:new rt(s.mint),quoteMint:new rt(a.mint)},Fn)})}async getCreatePoolFee({programId:t}){let n=as({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Hl.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:r,slippage:s}){let[a,c]=[i.toString(),r.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=[t.mintA.decimals,t.mintB.decimals],p=a==t.mintA.address?"base":"quote";p==="quote"&&(m.reverse(),d.reverse());let[f,y]=m,[b,g]=d,P=t.version===4,k;if(P)k=new N(y.toString()).div(10**g).div(new N(f.toString()).div(10**b));else{let v=om(this.stableLayout.stableModelData,u.toNumber(),l.toNumber(),!1);p==="quote"?k=new N(1e6).div(v*1e6):k=new N(v*1e6).div(1e6)}let B=n,T=new Ye(0),h=new Ye(0);if(!B.isZero())if(P){h=Mt(B.mul(au),rs);let v=B.sub(h),R=f.add(v);T=y.mul(v).div(R)}else{h=B.mul(new Ye(2)).div(new Ye(1e4));let v=B.sub(h);p==="quote"?T=new Ye(nm(this.stableLayout.stableModelData,l.toNumber(),u.toNumber(),v.toNumber())):T=new Ye(im(this.stableLayout.stableModelData,l.toNumber(),u.toNumber(),v.toNumber()))}let S=new Ye(new N(T.toString()).mul(1-s).toFixed(0)),x=T,K=S,I=new N(T.toString()).div(new N(B.sub(h).toString()).toFixed(0));!B.isZero()&&!T.isZero()&&(I=new N(T.toString()).div(10**g).div(new N(B.sub(h).toString()).div(10**b)));let C=k.sub(I).div(k).mul(100);return{amountOut:x,minAmountOut:K,currentPrice:k,executionPrice:I,priceImpact:C,fee:h}}computeAmountIn({poolInfo:t,amountOut:n,mintIn:i,mintOut:r,slippage:s}){let{baseReserve:a,quoteReserve:c}=t;i.toString()!==t.mintA.address&&i.toString()!==t.mintB.address&&this.logAndCreateError("mintIn does not match pool"),r.toString()!==t.mintA.address&&r.toString()!==t.mintB.address&&this.logAndCreateError("mintOut does not match pool"),this.logDebug("baseReserve:",a.toString()),this.logDebug("quoteReserve:",c.toString());let u=i.toString()===t.mintA.address,[l,m]=u?[t.mintA,t.mintB]:[t.mintB,t.mintA];this.logDebug("currencyOut:",m.symbol||m.address),this.logDebug("amountOut:",new N(n.toString()).div(10**m.decimals).toDecimalPlaces(m.decimals).toString(),l.symbol||l.address),this.logDebug("slippage:",`${s*100}%`);let d=[a,c],p=u?"quote":"base";p==="base"&&d.reverse(),this.logDebug("output side:",p);let[f,y]=d,b=new N(y.toString()).div(10**t[u?"mintB":"mintA"].decimals).div(new N(f.toString()).div(10**t[u?"mintA":"mintB"].decimals));this.logDebug("currentPrice:",`1 ${l.symbol||l.address} \u2248 ${b.toString()} ${m.symbol||m.address}`),this.logDebug("currentPrice invert:",`1 ${m.symbol||m.address} \u2248 ${new N(1).div(b).toString()} ${l.symbol||l.address}`);let g=new Ye(0),P=n;if(!P.isZero()){P.gt(y)&&(P=y.sub(new Ye(1)));let K=y.sub(P);g=f.mul(P).div(K).mul(rs).div(rs.sub(au))}let k=new Ye(new N(g.toString()).mul(1+s).toFixed(0)),B=g,T=k;this.logDebug("amountIn:",new N(B.toString()).div(10**l.decimals).toDecimalPlaces(l.decimals).toString()),this.logDebug("maxAmountIn:",new N(T.toString()).div(10**l.decimals).toDecimalPlaces(l.decimals).toString());let h=null;!g.isZero()&&!P.isZero()&&(h=new N(P.toString()).div(10**m.decimals).div(new N(g.toString()).div(10**l.decimals)),this.logDebug("executionPrice:",`1 ${m.symbol||m.address} \u2248 ${h.toDecimalPlaces(Math.max(t.mintA.decimals,t.mintB.decimals)).toString()} ${l.symbol||l.address}`),this.logDebug("executionPrice invert:",`1 ${m.symbol||m.address} \u2248 ${new N(1).div(h).toDecimalPlaces(Math.max(t.mintA.decimals,t.mintB.decimals)).toString()} ${l.symbol||l.address}`));let S=b.mul(B.toString()),x=S.sub(n.toString()).abs().div(S);return this.logDebug("priceImpact:",`${x.toString()}%`),{amountIn:B,maxAmountIn:T,currentPrice:b,executionPrice:h,priceImpact:x}}async swap({poolInfo:t,poolKeys:n,amountIn:i,amountOut:r,inputMint:s,fixedSide:a,txVersion:c,config:u,computeBudgetConfig:l,txTipConfig:m,feePayer:d}){let p=this.createTxBuilder(d),{associatedOnly:f=!0,inputUseSolBalance:y=!0,outputUseSolBalance:b=!0}=u||{},[g,P]=s===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],k=y&&g.address===$.toBase58(),B=b&&P.address===$.toBase58(),{account:T,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:jn,mint:new rt(g.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:f});p.addInstruction(h||{}),T||this.logAndCreateError("input token account not found",{token:g.symbol||g.address,tokenAccountIn:T,inputTokenUseSolBalance:k,associatedOnly:f});let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:jn,mint:new rt(P.address),owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!B,notUseTokenAccount:B,associatedOnly:B?!1:f});p.addInstruction(x||{}),S===void 0&&this.logAndCreateError("output token account not found",{token:P.symbol||P.address,tokenAccountOut:S,outputTokenUseSolBalance:B,associatedOnly:f});let K=n||await this.getAmmPoolKeys(t.id),I=4;return t.pooltype.includes("StablePool")&&(I=5),p.addInstruction({instructions:[ss({version:I,poolKeys:K,userKeys:{tokenAccountIn:T,tokenAccountOut:S,owner:this.scope.ownerPubKey},amountIn:i,amountOut:r,fixedSide:a})],instructionTypes:[I===4?X.AmmV4SwapBaseIn:X.AmmV5SwapBaseIn]}),p.addCustomComputeBudget(l),p.addTipInstruction(m),p.versionBuild({txVersion:c})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t,n){let i=await Fe(this.scope.connection,t.map(l=>({pubkey:new rt(l)})),n),r={},s=[];for(let l=0;l<t.length;l++){let m=i[l];if(m===null||!m.accountInfo)throw Error("fetch pool info error: "+String(t[l]));let d=yi.decode(m.accountInfo.data);r[String(t[l])]=U(M({},d),{programId:m.accountInfo.owner}),s.push(d.baseVault,d.quoteVault)}let a={},c=await Fe(this.scope.connection,s.map(l=>({pubkey:new rt(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 Ye(ob.decode(m.data).amount.toString())}let u={};for(let[l,m]of Object.entries(r)){let d=a[m.baseVault.toString()].sub(m.baseNeedTakePnl),p=a[m.quoteVault.toString()].sub(m.quoteNeedTakePnl);u[l]=U(M({},m),{baseReserve:d,mintAAmount:a[m.baseVault.toString()],mintBAmount:a[m.quoteVault.toString()],quoteReserve:p,poolPrice:new N(p.toString()).div(new N(10).pow(m.quoteDecimal.toString())).div(new N(d.toString()).div(new N(10).pow(m.baseDecimal.toString())))})}return u}async getPoolInfoFromRpc({poolId:t}){let n=await this.getRpcPoolInfo(t),i=us({[t]:n}),r=i[t],s=await this.scope.tradeV2.computePoolToPoolKeys({pools:[i[t]],ammRpcData:{[t]:n}});return{poolRpcData:n,poolInfo:r,poolKeys:s[0]}}};import{PublicKey as j}from"@solana/web3.js";import Nt from"bn.js";import{AccountLayout as lm,createAssociatedTokenAccountIdempotentInstruction as mm,TOKEN_2022_PROGRAM_ID as Zn,TOKEN_PROGRAM_ID as Zo}from"@solana/spl-token";var $o=class extends De{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var S;let{programId:t,owner:n=((S=this.scope.owner)==null?void 0:S.publicKey)||j.default,mint1:i,mint2:r,ammConfig:s,initialPrice:a,computeBudgetConfig:c,forerunCreate:u,getObserveState:l,txVersion:m,txTipConfig:d,feePayer:p}=e,f=this.createTxBuilder(p),[y,b,g]=new Nt(new j(i.address).toBuffer()).gt(new Nt(new j(r.address).toBuffer()))?[r,i,new N(1).div(a)]:[i,r,a],P=ae.priceToSqrtPriceX64(g,y.decimals,b.decimals),k=[],B=[];y.programId===Zn.toBase58()&&B.push(nu(t,new j(y.address)).publicKey),b.programId===Zn.toBase58()&&B.push(nu(t,new j(b.address)).publicKey),(await this.scope.connection.getMultipleAccountsInfo(B)).forEach((x,K)=>{x&&k.push(B[K])});let h=await Me.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:y,mintB:b,ammConfigId:s.id,initialPriceX64:P,forerunCreate:!l&&u,extendMintAccount:k});return f.addInstruction(h),f.addCustomComputeBudget(c),f.addTipInstruction(d),f.versionBuild({txVersion:m,extInfo:{address:U(M({},h.address),{observationId:h.address.observationId.toBase58(),exBitmapAccount:h.address.exBitmapAccount.toBase58(),programId:t.toString(),id:h.address.poolId.toString(),mintA:y,mintB:b,openTime:"0",vault:{A:h.address.mintAVault.toString(),B:h.address.mintBVault.toString()},rewardInfos:[],config:{id:s.id.toString(),index:s.index,protocolFeeRate:s.protocolFeeRate,tradeFeeRate:s.tradeFeeRate,tickSpacing:s.tickSpacing,fundFeeRate:s.fundFeeRate,description:s.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:M({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:h.address.poolId.toString(),mintA:y,mintB:b,feeRate:s.tradeFeeRate,openTime:"0",programId:t.toString(),price:g.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:[]},burnPercent:0},Kl),forerunCreate:u}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:r,base:s,baseAmount:a,otherAmountMax:c,nft2022:u,associatedOnly:l=!0,checkCreateATAOwner:m=!1,withMetadata:d="create",getEphemeralSigners:p,computeBudgetConfig:f,txTipConfig:y,txVersion:b,feePayer:g}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let P=this.createTxBuilder(g),k=null,B=null,T=n.useSOLBalance&&e.mintA.address===$.toString(),h=n.useSOLBalance&&e.mintB.address===$.toString(),[S,x]=s==="MintA"?[a,c]:[c,a],{account:K,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new j(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:T||S.isZero()?{payer:this.scope.ownerPubKey,amount:S}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:T?!1:l,checkCreateATAOwner:m});K&&(k=K),P.addInstruction(I||{});let{account:C,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new j(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||x.isZero()?{payer:this.scope.ownerPubKey,amount:x}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:l,checkCreateATAOwner:m});C&&(B=C),P.addInstruction(F||{}),(!k||!B)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",{ownerTokenAccountA:k==null?void 0:k.toBase58(),ownerTokenAccountB:B==null?void 0:B.toBase58()});let v=t||await this.getClmmPoolKeys(e.id),R=await Me.openPositionFromBaseInstructions({poolInfo:e,poolKeys:v,ownerInfo:U(M({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:k,tokenAccountB:B}),tickLower:i,tickUpper:r,base:s,baseAmount:a,otherAmountMax:c,withMetadata:d,getEphemeralSigners:p,nft2022:u});return P.addInstruction(R),P.addCustomComputeBudget(f),P.addTipInstruction(y),P.versionBuild({txVersion:b,extInfo:M({},R.address)})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:i,amountMaxB:r,tickLower:s,tickUpper:a,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:d,computeBudgetConfig:p,txTipConfig:f,getEphemeralSigners:y,nft2022:b,feePayer:g}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let P=this.createTxBuilder(g),k=null,B=null,T=n.useSOLBalance&&e.mintA.address===$.toBase58(),h=n.useSOLBalance&&e.mintB.address===$.toBase58(),{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new j(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:T||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:T?!1:u,checkCreateATAOwner:l});S&&(k=S),P.addInstruction(x||{});let{account:K,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new j(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||r.isZero()?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:h?!1:u,checkCreateATAOwner:l});K&&(B=K),P.addInstruction(I||{}),(k===void 0||B===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let C=t||await this.getClmmPoolKeys(e.id),F=await Me.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:C,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:k,tokenAccountB:B},tickLower:s,tickUpper:a,liquidity:c,amountMaxA:i,amountMaxB:r,withMetadata:m,getEphemeralSigners:y,nft2022:b});return P.addInstruction(F),P.addCustomComputeBudget(p),P.addTipInstruction(f),P.versionBuild({txVersion:d,extInfo:{address:F.address}})}async increasePositionFromLiquidity(e){var I;let{poolInfo:t,poolKeys:n,ownerPosition:i,amountMaxA:r,amountMaxB:s,liquidity:a,ownerInfo:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,computeBudgetConfig:m,txTipConfig:d,txVersion:p,feePayer:f}=e,y=this.createTxBuilder(f),b,g,P=c.useSOLBalance&&t.mintA.address===$.toString(),k=c.useSOLBalance&&t.mintB.address===$.toString(),{account:B,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new j(t.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:P||r.isZero()?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!P,associatedOnly:P?!1:u,checkCreateATAOwner:l});B&&(b=B),y.addInstruction(T||{});let{account:h,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new j(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:k||s.isZero()?{payer:this.scope.ownerPubKey,amount:s}:void 0,notUseTokenAccount:k,skipCloseAccount:!k,associatedOnly:k?!1:u,checkCreateATAOwner:l});h&&(g=h),y.addInstruction(S||{}),!b&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let x=n!=null?n:await this.getClmmPoolKeys(t.id),K=Me.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:x,ownerPosition:i,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g},liquidity:a,amountMaxA:r,amountMaxB:s,nft2022:(I=await this.scope.connection.getAccountInfo(i.nftMint))==null?void 0:I.owner.equals(Zn)});return y.addInstruction(K),y.addCustomComputeBudget(m),y.addTipInstruction(d),y.versionBuild({txVersion:p,extInfo:{address:K.address}})}async increasePositionFromBase(e){var K;let{poolInfo:t,ownerPosition:n,base:i,baseAmount:r,otherAmountMax:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txTipConfig:m,txVersion:d,feePayer:p}=e,f=this.createTxBuilder(p),y,b,g=a.useSOLBalance&&t.mintA.address===$.toString(),P=a.useSOLBalance&&t.mintB.address===$.toString(),{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new j(t.mintA.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,createInfo:g||(i==="MintA"?r:s).isZero()?{payer:this.scope.ownerPubKey,amount:i==="MintA"?r:s}:void 0,skipCloseAccount:!g,associatedOnly:g?!1:c,checkCreateATAOwner:u});k&&(y=k),f.addInstruction(B||{});let{account:T,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new j(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:P||(i==="MintA"?s:r).isZero()?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:r}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:c,checkCreateATAOwner:u});T&&(b=T),f.addInstruction(h||{}),!y&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=await this.getClmmPoolKeys(t.id),x=Me.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:S,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:y,tokenAccountB:b},base:i,baseAmount:r,otherAmountMax:s,nft2022:(K=await this.scope.connection.getAccountInfo(n.nftMint))==null?void 0:K.owner.equals(Zn)});return f.addInstruction(x),f.addCustomComputeBudget(l),f.addTipInstruction(m),f.versionBuild({txVersion:d,extInfo:{address:x.address}})}async decreaseLiquidity(e){var v;let{poolInfo:t,poolKeys:n,ownerPosition:i,ownerInfo:r,amountMinA:s,amountMinB:a,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,computeBudgetConfig:m,txTipConfig:d,txVersion:p,feePayer:f}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let y=this.createTxBuilder(f),b=r.useSOLBalance&&t.mintA.address===$.toString(),g=r.useSOLBalance&&t.mintB.address===$.toString(),P,k,{account:B,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new j(t.mintA.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:l});P=B,T&&y.addInstruction(T);let{account:h,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new j(t.mintB.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!g,associatedOnly:g?!1:u,checkCreateATAOwner:l});k=h,S&&y.addInstruction(S);let x=[];for(let R of t.rewardDefaultInfos){let L=r.useSOLBalance&&R.mint.address===$.toString(),V;if(R.mint.address===t.mintA.address)V=P;else if(R.mint.address===t.mintB.address)V=k;else{let{account:Y,instructionParams:te}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new j(R.mint.programId),mint:new j(R.mint.address),notUseTokenAccount:L,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!L,associatedOnly:L?!1:u,checkCreateATAOwner:l});V=Y,te&&y.addInstruction(te)}x.push(V)}!P&&!k&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let K=n!=null?n:await this.getClmmPoolKeys(t.id),I=(v=await this.scope.connection.getAccountInfo(i.nftMint))==null?void 0:v.owner.equals(Zn),C=await Me.decreaseLiquidityInstructions({poolInfo:t,poolKeys:K,ownerPosition:i,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:P,tokenAccountB:k,rewardAccounts:x},liquidity:c,amountMinA:s,amountMinB:a,nft2022:I});y.addInstruction({instructions:C.instructions,instructionTypes:[X.ClmmDecreasePosition]});let F=M({},C.address);if(r.closePosition){let R=await Me.closePositionInstructions({poolInfo:t,poolKeys:K,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:i,nft2022:I});y.addInstruction({endInstructions:R.instructions,endInstructionTypes:R.instructionTypes}),F=M(M({},F),R.address)}return y.addCustomComputeBudget(m),y.addTipInstruction(d),y.versionBuild({txVersion:p,extInfo:{address:F}})}async lockPosition(e){var f;let{programId:t=Ni,authProgramId:n=bo,poolProgramId:i=qn,ownerPosition:r,payer:s,computeBudgetConfig:a,txTipConfig:c,txVersion:u,getEphemeralSigners:l,feePayer:m}=e,d=this.createTxBuilder(m),p=await Me.makeLockPositions({programId:t,authProgramId:n,poolProgramId:i,wallet:this.scope.ownerPubKey,payer:s!=null?s:this.scope.ownerPubKey,nftMint:r.nftMint,getEphemeralSigners:l,nft2022:(f=await this.scope.connection.getAccountInfo(r.nftMint))==null?void 0:f.owner.equals(Zn)});return d.addInstruction(p),d.addCustomComputeBudget(a),d.addTipInstruction(c),d.versionBuild({txVersion:u,extInfo:p.address})}async harvestLockPosition(e){let{programId:t=Ni,authProgramId:n=bo,clmmProgram:i=qn,poolKeys:r,lockData:s,ownerInfo:a={useSOLBalance:!0},associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txTipConfig:m,txVersion:d,feePayer:p}=e,f=r||await this.getClmmPoolKeys(s.poolId.toString()),y=this.createTxBuilder(p),b=await this.scope.connection.getAccountInfo(s.positionId);b||this.logger.logWithError("position not found",s.positionId);let g=Ui.decode(b.data),P=a.useSOLBalance&&f.mintA.address===$.toString(),k=a.useSOLBalance&&f.mintB.address===$.toString(),B,T,{account:h,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f.mintA.programId,mint:new j(f.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!P,associatedOnly:P?!1:c,checkCreateATAOwner:u});B=h,S&&y.addInstruction(S);let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f.mintB.programId,mint:new j(f.mintB.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!k,associatedOnly:k?!1:c,checkCreateATAOwner:u});T=x,K&&y.addInstruction(K);let I={},C=[];for(let pe of f.rewardInfos){let Ae=a.useSOLBalance&&pe.mint.address===$.toString(),we=I[pe.mint.address];if(!we){let{account:be,instructionParams:re}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new j(pe.mint.programId),mint:new j(pe.mint.address),notUseTokenAccount:Ae,owner:this.scope.ownerPubKey,skipCloseAccount:!Ae,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:Ae?!1:c});we=be,re&&y.addInstruction(re)}I[pe.mint.address]=we,C.push(we)}let F=qi(t,s.lockNftMint).publicKey,v=Z(this.scope.ownerPubKey,s.lockNftMint,Zo).publicKey,R=J.getTickArrayStartIndexByTick(g.tickLower,f.config.tickSpacing),L=J.getTickArrayStartIndexByTick(g.tickUpper,f.config.tickSpacing),{publicKey:V}=he(new j(f.programId),s.poolId,R),{publicKey:Y}=he(new j(f.programId),s.poolId,L),{publicKey:te}=dn(new j(f.programId),s.poolId,g.tickLower,g.tickUpper),le=[];for(let pe=0;pe<f.rewardInfos.length;pe++)le.push({poolRewardVault:new j(f.rewardInfos[pe].vault),ownerRewardVault:C[pe],rewardMint:new j(f.rewardInfos[pe].mint.address)});let Ie=await Me.harvestLockPositionInstructionV2({programId:t,auth:n,lockPositionId:F,clmmProgram:i,lockOwner:this.scope.ownerPubKey,lockNftMint:s.lockNftMint,lockNftAccount:v,positionNftAccount:s.nftAccount,positionId:s.positionId,poolId:s.poolId,protocolPosition:te,vaultA:new j(f.vault.A),vaultB:new j(f.vault.B),tickArrayLower:V,tickArrayUpper:Y,userVaultA:B,userVaultB:T,mintA:new j(f.mintA.address),mintB:new j(f.mintB.address),rewardAccounts:le,exTickArrayBitmap:et(i,s.poolId).publicKey});return y.addInstruction({instructions:[Ie],instructionTypes:[X.ClmmHarvestLockPosition]}),y.addCustomComputeBudget(l),y.addTipInstruction(m),y.versionBuild({txVersion:d})}async closePosition({poolInfo:e,poolKeys:t,ownerPosition:n,txVersion:i,computeBudgetConfig:r,txTipConfig:s,feePayer:a}){var m;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let c=this.createTxBuilder(a),u=t!=null?t:await this.getClmmPoolKeys(e.id),l=Me.closePositionInstructions({poolInfo:e,poolKeys:u,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n,nft2022:(m=await this.scope.connection.getAccountInfo(n.nftMint))==null?void 0:m.owner.equals(Zn)});return c.addCustomComputeBudget(r),c.addTipInstruction(s),c.addInstruction(l).versionBuild({txVersion:i,extInfo:{address:l.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:r=!1,computeBudgetConfig:s,txVersion:a,feePayer:c}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(c),l=t.useSOLBalance&&n.mint.address.toString()===$.toString(),m=n.perSecond.mul(n.endTime-n.openTime),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new j(n.mint.address),mint:new j(n.mint.address),notUseTokenAccount:!!l,skipCloseAccount:!l,owner:this.scope.ownerPubKey,createInfo:l?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Nt(new N(m.toFixed(0)).gte(m)?m.toFixed(0):m.add(1).toFixed(0))}:void 0,associatedOnly:l?!1:i,checkCreateATAOwner:r});p&&u.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),y=Me.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{programId:new j(n.mint.programId),mint:new j(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:de.decimalToX64(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:i,associatedOnly:r=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txTipConfig:c,txVersion:u,feePayer:l}){for(let p of i)p.endTime<=p.openTime&&this.logAndCreateError("reward time error","rewardInfo",p);let m=this.createTxBuilder(l),d={};for(let p of i){let f=n.useSOLBalance&&p.mint.address===$.toString(),y=p.perSecond.mul(p.endTime-p.openTime),{account:b,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new j(p.mint.programId),mint:new j(p.mint.address),notUseTokenAccount:!!f,skipCloseAccount:!f,owner:this.scope.ownerPubKey,createInfo:f?{payer:n.feePayer||this.scope.ownerPubKey,amount:new Nt(new N(y.toFixed(0)).gte(y)?y.toFixed(0):y.add(1).toFixed(0))}:void 0,associatedOnly:f?!1:r,checkCreateATAOwner:s});g&&m.addInstruction(g),b||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let P=t!=null?t:await this.getClmmPoolKeys(e.id),k=Me.initRewardInstructions({poolInfo:e,poolKeys:P,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:b},rewardInfo:{programId:new j(p.mint.programId),mint:new j(p.mint.address),openTime:p.openTime,endTime:p.endTime,emissionsPerSecondX64:de.decimalToX64(p.perSecond)}});d=M(M({},d),k.address),m.addInstruction(k)}return m.addCustomComputeBudget(a),m.addTipInstruction(c),m.versionBuild({txVersion:u,extInfo:{address:d}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:r=!1,computeBudgetConfig:s,txTipConfig:a,txVersion:c,feePayer:u}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let l=this.createTxBuilder(u),m=t.useSOLBalance&&n.mint.equals($),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Nt(new N(n.perSecond.mul(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.mul(n.endTime-n.openTime))?n.perSecond.mul(n.endTime-n.openTime).toFixed(0):n.perSecond.mul(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:r});p&&l.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),y=Me.setRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:de.decimalToX64(n.perSecond)}});return l.addInstruction(y),l.addCustomComputeBudget(s),l.addTipInstruction(a),l.versionBuild({txVersion:c,extInfo:{address:y.address}})}async setRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:i,associatedOnly:r=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txTipConfig:c,txVersion:u,feePayer:l}){let m=this.createTxBuilder(l),d={};for(let p of i){p.endTime<=p.openTime&&this.logAndCreateError("reward time error","rewardInfo",p);let f=n.useSOLBalance&&p.mint.address===$.toString(),{account:y,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new j(p.mint.programId),mint:new j(p.mint.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:n.feePayer||this.scope.ownerPubKey,amount:new Nt(new N(p.perSecond.mul(p.endTime-p.openTime).toFixed(0)).gte(p.perSecond.mul(p.endTime-p.openTime))?p.perSecond.mul(p.endTime-p.openTime).toFixed(0):p.perSecond.mul(p.endTime-p.openTime).add(1).toFixed(0))}:void 0,associatedOnly:f?!1:r,checkCreateATAOwner:s});b&&m.addInstruction(b),y||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let g=t!=null?t:await this.getClmmPoolKeys(e.id),P=Me.setRewardInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:y},rewardInfo:{mint:new j(p.mint.address),openTime:p.openTime,endTime:p.endTime,emissionsPerSecondX64:de.decimalToX64(p.perSecond)}});m.addInstruction(P),d=M(M({},d),P.address)}return m.addCustomComputeBudget(a),m.addTipInstruction(c),m.versionBuild({txVersion:u,extInfo:{address:d}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:i=!0,checkCreateATAOwner:r=!1,computeBudgetConfig:s,txTipConfig:a,txVersion:c,feePayer:u}){let l=e.rewardDefaultInfos.find(g=>g.mint.address===n.toString());l||this.logAndCreateError("reward mint error","not found reward mint",n);let m=this.createTxBuilder(u),d=t.useSOLBalance&&n.equals($),{account:p,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new j(l.mint.programId),mint:n,notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:i,checkCreateATAOwner:r});f&&m.addInstruction(f),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),b=Me.collectRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardMint:n});return m.addInstruction(b),m.addCustomComputeBudget(s),m.addTipInstruction(a),m.versionBuild({txVersion:c,extInfo:{address:b.address}})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:i=!0,checkCreateATAOwner:r=!1,computeBudgetConfig:s,txTipConfig:a,feePayer:c}){let u=this.createTxBuilder(c),l={};for(let m of n){let d=e.rewardDefaultInfos.find(P=>P.mint.address===m.toString());if(!d){this.logAndCreateError("reward mint error","not found reward mint",m);continue}let p=t.useSOLBalance&&m.equals($),{account:f,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new j(d.mint.programId),mint:m,notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:i,checkCreateATAOwner:r});f||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),y&&u.addInstruction(y);let b=await this.getClmmPoolKeys(e.id),g=Me.collectRewardInstructions({poolInfo:e,poolKeys:b,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:f},rewardMint:m});u.addInstruction(g),l=M(M({},l),g.address)}return u.addCustomComputeBudget(s),u.addTipInstruction(a),u.build({address:l})}async swap({poolInfo:e,poolKeys:t,inputMint:n,amountIn:i,amountOutMin:r,priceLimit:s,observationId:a,ownerInfo:c,remainingAccounts:u,associatedOnly:l=!0,checkCreateATAOwner:m=!1,txVersion:d,computeBudgetConfig:p,txTipConfig:f,feePayer:y}){let b=this.createTxBuilder(y),g=n.toString()===e.mintA.address,P=c.useSOLBalance&&e.mintA.address===$.toBase58(),k=c.useSOLBalance&&e.mintB.address===$.toBase58(),B;!s||s.equals(new N(0))?B=g?Ht.add(new Nt(1)):jt.sub(new Nt(1)):B=ae.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let T;if(!T){let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new j(e.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,skipCloseAccount:!P,createInfo:P||!g?{payer:c.feePayer||this.scope.ownerPubKey,amount:g?i:0}:void 0,associatedOnly:P?!1:l,checkCreateATAOwner:m});T=x,K&&b.addInstruction(K)}let h;if(!h){let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new j(e.mintB.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,skipCloseAccount:!k,createInfo:k||g?{payer:c.feePayer||this.scope.ownerPubKey,amount:g?0:i}:void 0,associatedOnly:k?!1:l,checkCreateATAOwner:m});h=x,K&&b.addInstruction(K)}(!T||!h)&&this.logAndCreateError("user do not have token account",{tokenA:e.mintA.symbol||e.mintA.address,tokenB:e.mintB.symbol||e.mintB.address,ownerTokenAccountA:T,ownerTokenAccountB:h,mintAUseSOLBalance:P,mintBUseSOLBalance:k,associatedOnly:l});let S=t!=null?t:await this.getClmmPoolKeys(e.id);return b.addInstruction(Me.makeSwapBaseInInstructions({poolInfo:e,poolKeys:S,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:T,tokenAccountB:h},inputMint:new j(n),amountIn:i,amountOutMin:r,sqrtPriceLimitX64:B,remainingAccounts:u})),b.addCustomComputeBudget(p),b.addTipInstruction(f),b.versionBuild({txVersion:d})}async swapBaseOut({poolInfo:e,poolKeys:t,outputMint:n,amountOut:i,amountInMax:r,priceLimit:s,observationId:a,ownerInfo:c,remainingAccounts:u,associatedOnly:l=!0,checkCreateATAOwner:m=!1,txVersion:d,computeBudgetConfig:p,txTipConfig:f,feePayer:y}){let b=this.createTxBuilder(y),g=n.toString()===e.mintB.address,P=c.useSOLBalance&&e.mintA.address===$.toBase58(),k=c.useSOLBalance&&e.mintB.address===$.toBase58(),B;!s||s.equals(new N(0))?B=n.toString()===e.mintB.address?Ht.add(new Nt(1)):jt.sub(new Nt(1)):B=ae.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let T;if(!T){let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new j(e.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,skipCloseAccount:!P,createInfo:P||!g?{payer:c.feePayer||this.scope.ownerPubKey,amount:g?r:0}:void 0,associatedOnly:P?!1:l,checkCreateATAOwner:m});T=x,K&&b.addInstruction(K)}let h;if(!h){let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new j(e.mintB.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,skipCloseAccount:!k,createInfo:k||g?{payer:c.feePayer||this.scope.ownerPubKey,amount:g?0:r}:void 0,associatedOnly:k?!1:l,checkCreateATAOwner:m});h=x,K&&b.addInstruction(K)}(!T||!h)&&this.logAndCreateError("user do not have token account",{tokenA:e.mintA.symbol||e.mintA.address,tokenB:e.mintB.symbol||e.mintB.address,ownerTokenAccountA:T,ownerTokenAccountB:h,mintAUseSOLBalance:P,mintBUseSOLBalance:k,associatedOnly:l});let S=t!=null?t:await this.getClmmPoolKeys(e.id);return b.addInstruction(Me.makeSwapBaseOutInstructions({poolInfo:e,poolKeys:S,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:T,tokenAccountB:h},outputMint:new j(n),amountOut:i,amountInMax:r,sqrtPriceLimitX64:B,remainingAccounts:u})),b.addCustomComputeBudget(p),b.addTipInstruction(f),b.versionBuild({txVersion:d})}async harvestAllRewards({allPoolInfo:e,allPositions:t,lockInfo:n,ownerInfo:i,associatedOnly:r=!0,checkCreateATAOwner:s=!1,programId:a,txVersion:c,computeBudgetConfig:u,feePayer:l,lockProgram:m=Ni,lockAuth:d=bo,clmmProgram:p=qn}){var k,B;let f={};for(let T of this.scope.account.tokenAccountRawInfos)r?Z(this.scope.ownerPubKey,T.accountInfo.mint,a).publicKey.equals(T.pubkey)&&(f[T.accountInfo.mint.toString()]=T.pubkey):f[T.accountInfo.mint.toString()]=T.pubkey;let y=Object.values(t).flat().map(T=>T.nftMint),b=await Fe(this.scope.connection,y.map(T=>({pubkey:T}))),g={};b.forEach(T=>{var h,S;g[T.pubkey.toBase58()]=(S=(h=T==null?void 0:T.accountInfo)==null?void 0:h.owner)!=null?S:null});let P=this.createTxBuilder(l);for(let T of Object.values(e)){if(t[T.id]===void 0||!t[T.id].find(R=>!R.liquidity.isZero()||R.rewardInfos.find(L=>!L.rewardAmountOwed.isZero())))continue;let h=T,S=i.useSOLBalance&&h.mintA.address===$.toString(),x=i.useSOLBalance&&h.mintB.address===$.toString(),K=f[h.mintA.address];if(!K)if(S){let{account:R,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:h.mintA.programId,mint:new j(h.mintA.address),notUseTokenAccount:S,owner:this.scope.ownerPubKey,skipCloseAccount:!S,createInfo:{payer:i.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:S?!1:r,checkCreateATAOwner:s});K=R,L&&P.addInstruction(L)}else{let R=new j(h.mintA.address);K=this.scope.account.getAssociatedTokenAccount(R,new j(h.mintA.programId)),P.addInstruction({instructions:[mm(this.scope.ownerPubKey,K,this.scope.ownerPubKey,R,new j(h.mintA.programId))]})}let I=f[h.mintB.address];if(!I)if(x){let{account:R,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:h.mintB.programId,mint:new j(h.mintB.address),notUseTokenAccount:x,owner:this.scope.ownerPubKey,skipCloseAccount:!x,createInfo:{payer:i.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:x?!1:r,checkCreateATAOwner:s});I=R,L&&P.addInstruction(L)}else{let R=new j(h.mintB.address);I=this.scope.account.getAssociatedTokenAccount(R,new j(h.mintB.programId)),P.addInstruction({instructions:[mm(this.scope.ownerPubKey,I,this.scope.ownerPubKey,R,new j(h.mintB.programId))]})}f[h.mintA.address]=K,f[h.mintB.address]=I;let C=[];for(let R of h.rewardDefaultInfos){let L=i.useSOLBalance&&R.mint.address===$.toString(),V=f[R.mint.address];if(!V){let{account:Y,instructionParams:te}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new j(R.mint.programId),mint:new j(R.mint.address),notUseTokenAccount:L,owner:this.scope.ownerPubKey,skipCloseAccount:!L,createInfo:{payer:i.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:L?!1:r});V=Y,te&&P.addInstruction(te)}f[R.mint.address]=V,C.push(V)}let F=await this.getClmmPoolKeys(h.id),v=[];for(let R=0;R<F.rewardInfos.length;R++)v.push({poolRewardVault:new j(F.rewardInfos[R].vault),ownerRewardVault:C[R],rewardMint:new j(F.rewardInfos[R].mint.address)});for(let R of t[T.id]){let L=(k=n==null?void 0:n[T.id])==null?void 0:k[R.nftMint.toBase58()];if(L){let V=Z(this.scope.ownerPubKey,L.lockNftMint,Zo).publicKey,Y=J.getTickArrayStartIndexByTick(R.tickLower,F.config.tickSpacing),te=J.getTickArrayStartIndexByTick(R.tickUpper,F.config.tickSpacing),{publicKey:le}=he(new j(F.programId),L.poolId,Y),{publicKey:Ie}=he(new j(F.programId),L.poolId,te),{publicKey:pe}=dn(new j(F.programId),L.poolId,R.tickLower,R.tickUpper),Ae=qi(m,L.lockNftMint).publicKey,we=Me.harvestLockPositionInstructionV2({programId:m,auth:d,lockPositionId:Ae,clmmProgram:p,lockOwner:this.scope.ownerPubKey,lockNftMint:L.lockNftMint,lockNftAccount:V,positionNftAccount:L.nftAccount,positionId:L.positionId,poolId:L.poolId,protocolPosition:pe,vaultA:new j(F.vault.A),vaultB:new j(F.vault.B),tickArrayLower:le,tickArrayUpper:Ie,userVaultA:K,userVaultB:I,mintA:new j(F.mintA.address),mintB:new j(F.mintB.address),rewardAccounts:v,exTickArrayBitmap:et(p,L.poolId).publicKey});P.addInstruction({instructions:[we],instructionTypes:[X.ClmmHarvestLockPosition],lookupTableAddress:F.lookupTableAccount?[F.lookupTableAccount]:[]})}else{let V=Me.decreaseLiquidityInstructions({poolInfo:h,poolKeys:F,ownerPosition:R,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:K,tokenAccountB:I,rewardAccounts:C},liquidity:new Nt(0),amountMinA:new Nt(0),amountMinB:new Nt(0),nft2022:(B=g[R.nftMint.toBase58()])==null?void 0:B.equals(Zn)});P.addInstruction(V)}}}return c===0?P.sizeCheckBuildV0({computeBudgetConfig:u}):P.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(Do(e).publicKey);return t?Wl.decode(t.data).whitelistMints.filter(i=>!i.equals(j.default)):[]}async getOwnerPositionInfo({programId:e=qn}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new Nt(1))).map(s=>Lt(new j(e),s.accountInfo.mint).publicKey),i=await this.scope.connection.getMultipleAccountsInfo(n),r=[];return i.forEach(s=>{if(!s)return;let a=Ui.decode(s.data);r.push(a)}),r}async getOwnerLockedPositionInfo({programId:e=Ni}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(c=>c.accountInfo.amount.eq(new Nt(1))).map(c=>qi(new j(e),c.accountInfo.mint).publicKey),i=await this.scope.connection.getMultipleAccountsInfo(n),r=[];i.forEach(c=>{if(!c)return;let u=ql.decode(c.data);r.push(u)});let s=await this.scope.connection.getMultipleAccountsInfo(r.map(c=>c.positionId)),a=[];return s.forEach(c=>{if(!c)return;let u=Ui.decode(c.data);a.push(u)}),r.map((c,u)=>({position:a[u],lockInfo:c}))}async getRpcClmmPoolInfo({poolId:e}){return(await this.getRpcClmmPoolInfos({poolIds:[e]}))[String(e)]}async getRpcClmmPoolInfos({poolIds:e,config:t}){let n=await Fe(this.scope.connection,e.map(r=>({pubkey:new j(r)})),t),i={};for(let r=0;r<e.length;r++){let s=n[r];if(s===null||!s.accountInfo)throw Error("fetch pool info error: "+String(e[r]));let a=pi.decode(s.accountInfo.data),c=ae.sqrtPriceX64ToPrice(a.sqrtPriceX64,a.mintDecimalsA,a.mintDecimalsB).toNumber();i[String(e[r])]=U(M({},a),{currentPrice:c,programId:s.accountInfo.owner})}return i}async getComputeClmmPoolInfos({clmmPoolsRpcInfo:e,mintInfos:t}){let n=new Set(Object.keys(e).map(c=>e[c].ammConfig.toBase58())),i=await Fe(this.scope.connection,Array.from(n).map(c=>({pubkey:new j(c)}))),r={};i.forEach(c=>{!c.accountInfo||(r[c.pubkey.toBase58()]=Vl.decode(c.accountInfo.data))});let s=await _e.fetchComputeMultipleClmmInfo({connection:this.scope.connection,rpcDataMap:e,poolList:Object.keys(e).map(c=>{var m,d,p,f;let[u,l]=[e[c].mintA.toBase58(),e[c].mintB.toBase58()];return{id:c,programId:e[c].programId.toBase58(),mintA:Bt({address:u,decimals:e[c].mintDecimalsA,programId:t[u].programId.toBase58()||Zo.toBase58(),extensions:{feeConfig:(m=t[u])!=null&&m.feeConfig?Hn((d=t[u])==null?void 0:d.feeConfig):void 0}}),mintB:Bt({address:l,decimals:e[c].mintDecimalsB,programId:t[l].programId.toBase58()||Zo.toBase58(),extensions:{feeConfig:(p=t[l])!=null&&p.feeConfig?Hn((f=t[l])==null?void 0:f.feeConfig):void 0}}),price:e[c].currentPrice,config:U(M({},r[e[c].ammConfig.toBase58()]),{id:e[c].ammConfig.toBase58(),fundFeeRate:0,description:"",defaultRange:0,defaultRangePoint:[]})}})}),a=await _e.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()]),i=await Si({connection:this.scope.connection,mints:Array.from(n).map(m=>new j(m))}),{computeClmmPoolInfo:r,computePoolTickData:s}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:{[e]:t},mintInfos:i}),a=await Fe(this.scope.connection,[{pubkey:t.vaultA},{pubkey:t.vaultB}]),c=El(r[e]);if(!a[0].accountInfo||!a[1].accountInfo)throw new Error("pool vault data not found");c.mintAmountA=Number(lm.decode(a[0].accountInfo.data).amount.toString()),c.mintAmountB=Number(lm.decode((l=a[1].accountInfo)==null?void 0:l.data).amount.toString());let u=U(M({},r[e]),{exBitmapAccount:r[e].exBitmapAccount.toBase58(),observationId:r[e].observationId.toBase58(),id:e,programId:t.programId.toBase58(),openTime:t.startTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},config:c.config,rewardInfos:r[e].rewardInfos.filter(m=>!m.tokenVault.equals(j.default)).map(m=>({mint:Bt({address:m.tokenMint.toBase58(),programId:Zo.toBase58(),decimals:10}),vault:m.tokenVault.toBase58()}))});return{poolInfo:c,poolKeys:u,computePoolInfo:r[e],tickData:s}}};import{PublicKey as Q}from"@solana/web3.js";import{AccountLayout as Pb,NATIVE_MINT as As,TOKEN_PROGRAM_ID as Gt,createAssociatedTokenAccountIdempotentInstruction as hm}from"@solana/spl-token";import ku from"bn.js";import fs from"decimal.js-light";import Jo from"bn.js";function ms(o,e){if(e.isZero())throw Error("divisor is zero");return o.mod(e)}function rb(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=ms(o,e);return n.gt(Qi)&&(t=t.add(new Jo(1)),e=o.div(t),n=ms(o,t),n.gt(Qi)&&(e=e.add(new Jo(1)))),[t,e]}var Qi=new Jo(0),ds=class{static swapWithoutFees(e,t,n){let i=t.mul(n),r=t.add(e),[s]=rb(i,r),a=n.sub(s);if(a.isZero())throw Error("destinationAmountSwapped is zero");return{destinationAmountSwapped:a}}static lpTokensToTradingTokens(e,t,n,i,r){let s=e.mul(n).div(t),a=e.mul(i).div(t);if(r===0)return{tokenAmount0:s,tokenAmount1:a};if(r===1)return ms(e.mul(n),t).gt(Qi)&&s.gt(Qi)&&(s=s.add(new Jo(1))),ms(e.mul(i),t).gt(Qi)&&a.gt(Qi)&&(a=a.add(new Jo(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var ps=class{static tradingFee(e,t){return Rr(e,t,cn)}static protocolFee(e,t){return na(e,t,cn)}static fundFee(e,t){return na(e,t,cn)}};var dm=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(dm||{}),ys=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swap(e,t,n,i){let r=ps.tradingFee(e,i),s=e.sub(r),{destinationAmountSwapped:a}=ds.swapWithoutFees(s,t,n);return{newSwapDestinationAmount:n.sub(a),sourceAmountSwapped:e,destinationAmountSwapped:a,tradeFee:r}}static swapBaseOut({poolMintA:e,poolMintB:t,tradeFeeRate:n,baseReserve:i,quoteReserve:r,outputMint:s,outputAmount:a}){let[c,u,l,m,d]=t.address===s.toString()?[i,r,e.decimals,t.decimals,e.address]:[r,i,t.decimals,e.decimals,t.address],p=new fs(u.toString()).div(10**m).div(new fs(c.toString()).div(10**l)),f=a.gte(u)?u.sub(new ku(1)):a,y=u.sub(f),b=Mt(c.mul(f),y),g=Mt(b.mul(new ku(1e6)),new ku(1e6).sub(n)),P=g.sub(b),k=new fs(f.toString()).div(10**m).div(new fs(g.toString()).div(10**l)),B=p.isZero()?0:k.sub(p).div(p).abs().toNumber();return{amountRealOut:f,amountIn:g,amountInWithoutFee:b,tradeFee:P,priceImpact:B}}};import tt from"bn.js";import{PublicKey as nr,TransactionInstruction as wi,Keypair as yb,SystemProgram as bb}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as ym,TOKEN_2022_PROGRAM_ID as Tu,TOKEN_PROGRAM_ID as $n}from"@solana/spl-token";var sb=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),ab=Buffer.from("amm_config","utf8"),ub=Buffer.from("pool","utf8"),cb=Buffer.from("pool_lp_mint","utf8"),lb=Buffer.from("pool_vault","utf8"),mb=Buffer.from("observation","utf8");function Yi(o){return oe([sb],o)}function nC(o,e){return oe([ab,pb(e)],o)}function hu(o,e,t,n){return oe([ub,e.toBuffer(),t.toBuffer(),n.toBuffer()],o)}function db(o,e){return oe([cb,e.toBuffer()],o)}function pm(o,e,t){return oe([lb,e.toBuffer(),t.toBuffer()],o)}function er(o,e){return oe([mb,e.toBuffer()],o)}function pb(o){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,o,!1),new Uint8Array(e)}function fm({poolId:o,programId:e,configId:t,mintA:n,mintB:i}){let r=Yi(e).publicKey,s=o||hu(e,t,n,i).publicKey,a=db(e,s).publicKey,c=pm(e,s,n).publicKey,u=pm(e,s,i).publicKey,l=er(e,s).publicKey;return{poolId:s,configId:t,authority:r,lpMint:a,vaultA:c,vaultB:u,observationId:l}}var fb=Buffer.from("locked_liquidity","utf8");function tr(o,e){return oe([fb,e.toBuffer()],o)}var gb=Pe("Raydium_cpmm"),ki={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],lockCpLiquidity:[216,157,29,78,38,51,31,26],collectCpFee:[8,30,51,199,209,184,247,133]};function bm(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,k){let B=E([w("amountMaxA"),w("amountMaxB"),w("openTime")]),T=hu(o,t,r,s).publicKey,h=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!i.equals(T),isWritable:!0},{pubkey:r,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:$n,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:ym,isSigner:!1,isWritable:!1},{pubkey:Kr,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1}],S=Buffer.alloc(B.span);return B.encode({amountMaxA:g,amountMaxB:P,openTime:k},S),new wi({keys:h,programId:o,data:Buffer.from([...ki.initialize,...S])})}function gm(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f){let y=E([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:$n,isSigner:!1,isWritable:!1},{pubkey:Tu,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(y.span);return gb.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:f.toString()}),y.encode({lpAmount:d,amountMaxA:p,amountMaxB:f},g),new wi({keys:b,programId:o,data:Buffer.from([...ki.deposit,...g])})}function Am(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f){let y=E([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:$n,isSigner:!1,isWritable:!1},{pubkey:Tu,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:gn,isSigner:!1,isWritable:!1}],g=Buffer.alloc(y.span);return y.encode({lpAmount:d,amountMinA:p,amountMinB:f},g),new wi({keys:b,programId:o,data:Buffer.from([...ki.withdraw,...g])})}function bs(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f,y){let b=E([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,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}],P=Buffer.alloc(b.span);return b.encode({amountIn:f,amounOutMin:y},P),new wi({keys:g,programId:o,data:Buffer.from([...ki.swapBaseInput,...P])})}function Pm(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f,y){let b=E([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,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}],P=Buffer.alloc(b.span);return b.encode({amountInMax:f,amountOut:y},P),new wi({keys:g,programId:o,data:Buffer.from([...ki.swapBaseOutput,...P])})}async function wm(o){var b;let{ownerInfo:e,poolInfo:t,poolKeys:n,feeNftOwner:i,getEphemeralSigners:r}=o,s=[],[a,c]=[new nr(t.id),new nr(t.lpMint.address)],u;if(r)u=new nr((await r(1))[0]);else{let g=yb.generate();s.push(g),u=g.publicKey}let{publicKey:l}=Z(i,u,$n),{publicKey:m}=Rn(u),{publicKey:d}=tr(o.lockProgram,u),{publicKey:p}=Z(e.wallet,c,$n),{publicKey:f}=Z(o.lockAuthProgram,c,$n),y=Ab({programId:o.lockProgram,auth:o.lockAuthProgram,payer:e.feePayer,liquidityOwner:e.wallet,nftOwner:i,nftMint:u,nftAccount:l,poolId:a,lockPda:d,mintLp:c,userLpVault:p,lockLpVault:f,poolVaultA:new nr(n.vault.A),poolVaultB:new nr(n.vault.B),metadataAccount:m,lpAmount:o.lpAmount,withMetadata:(b=o.withMetadata)!=null?b:!0});return{address:{nftMint:u,nftAccount:l,metadataAccount:m,lockPda:d,userLpVault:p,lockLpVault:f},instructions:[y],signers:s,instructionTypes:[X.CpmmLockLp],lookupTableAddress:[]}}function Ab({programId:o,auth:e,payer:t,liquidityOwner:n,nftOwner:i,nftMint:r,nftAccount:s,poolId:a,lockPda:c,mintLp:u,userLpVault:l,lockLpVault:m,poolVaultA:d,poolVaultB:p,metadataAccount:f,lpAmount:y,withMetadata:b}){let g=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!0,isWritable:!0},{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:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:bb.programId,isSigner:!1,isWritable:!1},{pubkey:$n,isSigner:!1,isWritable:!1},{pubkey:ym,isSigner:!1,isWritable:!1},{pubkey:sn,isSigner:!1,isWritable:!1}],P=E([w("lpAmount"),Xe("withMetadata")]),k=Buffer.alloc(P.span);P.encode({lpAmount:y,withMetadata:b},k);let B=Buffer.from([...ki.lockCpLiquidity,...k]);return new wi({keys:g,programId:o,data:B})}function Iu({programId:o,nftOwner:e,auth:t,nftAccount:n,lockPda:i,poolId:r,mintLp:s,userVaultA:a,userVaultB:c,poolVaultA:u,poolVaultB:l,mintA:m,mintB:d,lockLpVault:p,lpFeeAmount:f,cpmmProgram:y,cpmmAuthProgram:b}){let g=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:y!=null?y:go,isSigner:!1,isWritable:!1},{pubkey:b!=null?b:ca,isSigner:!1,isWritable:!1},{pubkey:r,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:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:$n,isSigner:!1,isWritable:!1},{pubkey:Tu,isSigner:!1,isWritable:!1},{pubkey:gn,isSigner:!1,isWritable:!1}],P=E([w("lpFeeAmount")]),k=Buffer.alloc(P.span);P.encode({lpFeeAmount:f},k);let B=Buffer.from([...ki.collectCpFee,...k]);return new wi({keys:g,programId:o,data:B})}var km=E([Re(8),q("bump"),Xe("disableCreatePool"),Dt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),O("protocolOwner"),O("fundOwner"),H(w(),16)]),gs=E([Re(8),O("configId"),O("poolCreator"),O("vaultA"),O("vaultB"),O("mintLp"),O("mintA"),O("mintB"),O("mintProgramA"),O("mintProgramB"),O("observationId"),q("bump"),q("status"),q("lpDecimals"),q("mintDecimalA"),q("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),H(w(),32)]);var ir=class extends De{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 Fe(this.scope.connection,e.map(m=>({pubkey:new Q(m)}))),i={},r=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=gs.decode(d.accountInfo.data);i[String(e[m])]=U(M({},p),{programId:d.accountInfo.owner}),r.add(String(p.configId)),s.push(p.vaultA,p.vaultB)}let a={};if(t){let m=[...r],d=await Fe(this.scope.connection,m.map(p=>({pubkey:new Q(p)})));for(let p=0;p<m.length;p++){let f=d[p].accountInfo;if(f===null)throw Error("fetch pool config error: "+m[p]);a[m[p]]=km.decode(f.data)}}let c={},u=await Fe(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 tt(Pb.decode(d.data).amount.toString())}let l={};for(let[m,d]of Object.entries(i)){let p=c[d.vaultA.toString()].sub(d.protocolFeesMintA).sub(d.fundFeesMintA),f=c[d.vaultB.toString()].sub(d.protocolFeesMintB).sub(d.fundFeesMintB);l[m]=U(M({},d),{baseReserve:p,quoteReserve:f,vaultAAmount:c[d.vaultA.toString()],vaultBAmount:c[d.vaultB.toString()],configInfo:a[d.configId.toString()],poolPrice:new N(f.toString()).div(new N(10).pow(d.mintDecimalB)).div(new N(p.toString()).div(new N(10).pow(d.mintDecimalA)))})}return l}toComputePoolInfos({pools:e,mintInfos:t}){return Object.keys(e).reduce((n,i)=>{var c,u,l,m;let r=e[i],[s,a]=[r.mintA.toBase58(),r.mintB.toBase58()];return U(M({},n),{[i]:U(M({},r),{id:new Q(i),configInfo:r.configInfo,version:7,authority:Yi(r.programId).publicKey,mintA:Bt({address:s,decimals:r.mintDecimalA,programId:r.mintProgramA.toBase58(),extensions:{feeConfig:(c=t[s])!=null&&c.feeConfig?Hn((u=t[s])==null?void 0:u.feeConfig):void 0}}),mintB:Bt({address:a,decimals:r.mintDecimalB,programId:r.mintProgramB.toBase58(),extensions:{feeConfig:(l=t[a])!=null&&l.feeConfig?Hn((m=t[a])==null?void 0:m.feeConfig):void 0}})})})},{})}async getPoolInfoFromRpc(e){let t=await this.getRpcPoolInfo(e,!0),n=await Si({connection:this.scope.connection,mints:[t.mintA,t.mintB]}),i=Bt({address:t.mintA.toBase58(),decimals:t.mintDecimalA,programId:t.mintProgramA.toBase58(),extensions:{feeConfig:n[t.mintA.toBase58()].feeConfig?Hn(n[t.mintA.toBase58()].feeConfig):void 0}}),r=Bt({address:t.mintB.toBase58(),decimals:t.mintDecimalB,programId:t.mintProgramB.toBase58(),extensions:{feeConfig:n[t.mintB.toBase58()].feeConfig?Hn(n[t.mintB.toBase58()].feeConfig):void 0}}),s=Bt({address:t.mintLp.toBase58(),decimals:t.lpDecimals,programId:Gt.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:i,mintB:r,rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:t.poolPrice.toNumber(),mintAmountA:new N(t.vaultAAmount.toString()).div(10**i.decimals).toNumber(),mintAmountB:new N(t.vaultBAmount.toString()).div(10**r.decimals).toNumber(),feeRate:t.configInfo.tradeFeeRate.toNumber(),openTime:t.openTime.toString(),tvl:0,burnPercent:0,day:c,week:c,month:c,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0},poolKeys:{programId:t.programId.toBase58(),id:e,mintA:i,mintB:r,openTime:t.openTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},authority:Yi(t.programId).publicKey.toBase58(),mintLp:s,config:a,observationId:er(t.programId,new Q(e)).publicKey.toBase58()},rpcData:t}}async createPool(f){var y=f,{poolId:e,programId:t,poolFeeAccount:n,startTime:i,ownerInfo:r,associatedOnly:s=!1,checkCreateATAOwner:a=!1,txVersion:c,feeConfig:u,computeBudgetConfig:l,txTipConfig:m,feePayer:d}=y,p=ze(y,["poolId","programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","feeConfig","computeBudgetConfig","txTipConfig","feePayer"]);var V,Y,te;let b=r.feePayer||((V=this.scope.owner)==null?void 0:V.publicKey),g=new tt(new Q(p.mintA.address).toBuffer()).lte(new tt(new Q(p.mintB.address).toBuffer())),[P,k]=g?[p.mintA,p.mintB]:[p.mintB,p.mintA],[B,T]=g?[p.mintAAmount,p.mintBAmount]:[p.mintBAmount,p.mintAAmount],h=r.useSOLBalance&&P.address===As.toBase58(),S=r.useSOLBalance&&k.address===As.toBase58(),[x,K]=[new Q(P.address),new Q(k.address)],I=this.createTxBuilder(d),{account:C,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({mint:x,tokenProgram:P.programId,owner:this.scope.ownerPubKey,createInfo:h?{payer:b,amount:B}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:s,checkCreateATAOwner:a});I.addInstruction(F||{});let{account:v,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({mint:new Q(k.address),tokenProgram:k.programId,owner:this.scope.ownerPubKey,createInfo:S?{payer:b,amount:T}:void 0,notUseTokenAccount:S,skipCloseAccount:!S,associatedOnly:S?!1:s,checkCreateATAOwner:a});if(I.addInstruction(R||{}),C===void 0||v===void 0)throw Error("you don't has some token account");let L=fm({poolId:e,programId:t,configId:new Q(u.id),mintA:x,mintB:K});return I.addInstruction({instructions:[bm(t,this.scope.ownerPubKey,new Q(u.id),L.authority,L.poolId,x,K,L.lpMint,C,v,Z(this.scope.ownerPubKey,L.lpMint).publicKey,L.vaultA,L.vaultB,n,new Q((Y=P.programId)!=null?Y:Gt),new Q((te=k.programId)!=null?te:Gt),L.observationId,B,T,i)],instructionTypes:[X.CpmmCreatePool]}),I.addCustomComputeBudget(l),I.addTipInstruction(m),I.versionBuild({txVersion:c,extInfo:{address:U(M({},L),{mintA:P,mintB:k,programId:t,poolFeeAccount:n,feeConfig:u})}})}async addLiquidity(e){let{poolInfo:t,poolKeys:n,inputAmount:i,baseIn:r,slippage:s,computeResult:a,computeBudgetConfig:c,txTipConfig:u,config:l,txVersion:m,feePayer:d}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),i.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:i.toString()});let{account:p}=this.scope,{bypassAssociatedCheck:f,checkCreateATAOwner:y}=M({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},l),b=a?void 0:await this.getRpcPoolInfo(t.id),{liquidity:g,inputAmountFee:P,anotherAmount:k}=a||this.computePairAmount({poolInfo:U(M({},t),{lpAmount:new N(b.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),baseReserve:b.baseReserve,quoteReserve:b.quoteReserve,slippage:new Ze(0),baseIn:r,epochInfo:await this.scope.fetchEpochInfo(),amount:new N(i.toString()).div(10**(r?t.mintA.decimals:t.mintB.decimals))}),B=k.amount,T=t.mintA.address===As.toString(),h=t.mintB.address===As.toString(),S=this.createTxBuilder(d),[x,K]=[new Q(t.mintA.address),new Q(t.mintB.address)],{account:I,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Q(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:T||(r?i:B).isZero()?{payer:this.scope.ownerPubKey,amount:r?i:B}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:!1,checkCreateATAOwner:y});S.addInstruction(C||{});let{account:F,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Q(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||(r?B:i).isZero()?{payer:this.scope.ownerPubKey,amount:r?B:i}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:!1,checkCreateATAOwner:y});S.addInstruction(v||{}),!I&&!F&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",p.tokenAccounts);let R=await p.getCreatedTokenAccount({mint:new Q(t.lpMint.address)}),le=await p.handleTokenAccount({side:"out",amount:0,mint:new Q(t.lpMint.address),tokenAccount:R,bypassAssociatedCheck:f,checkCreateATAOwner:y}),{tokenAccount:L}=le,V=ze(le,["tokenAccount"]);S.addInstruction(V);let Y=n!=null?n:await this.getCpmmPoolKeys(t.id),te=new Ze(new tt(1)).sub(s);return S.addInstruction({instructions:[gm(new Q(t.programId),this.scope.ownerPubKey,new Q(Y.authority),new Q(t.id),L,I,F,new Q(Y.vault.A),new Q(Y.vault.B),x,K,new Q(t.lpMint.address),a?a==null?void 0:a.liquidity:te.mul(g).quotient,r?P.amount:B,r?B:P.amount)],instructionTypes:[X.CpmmAddLiquidity],lookupTableAddress:Y.lookupTableAccount?[Y.lookupTableAccount]:[]}),S.addCustomComputeBudget(c),S.addTipInstruction(u),S.versionBuild({txVersion:m})}async withdrawLiquidity(e){var V,Y;let{poolInfo:t,poolKeys:n,lpAmount:i,slippage:r,computeBudgetConfig:s,txTipConfig:a,txVersion:c,feePayer:u,closeWsol:l=!0}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let m=new Ze(new tt(1)).sub(r),d=await this.getRpcPoolInfo(t.id),[p,f]=[m.mul(i.mul(d.baseReserve).div(d.lpAmount)).quotient,m.mul(i.mul(d.quoteReserve).div(d.lpAmount)).quotient],y=await this.scope.fetchEpochInfo(),[b,g]=[Ce(p,t.mintA.extensions.feeConfig,y,!1),Ce(f,t.mintB.extensions.feeConfig,y,!1)],{account:P}=this.scope,k=this.createTxBuilder(u),[B,T]=[new Q(t.mintA.address),new Q(t.mintB.address)],h=B.equals($),S=T.equals($),x,K,{account:I,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Q(t.mintA.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(h&&l),associatedOnly:!h,checkCreateATAOwner:!1});x=I,C&&k.addInstruction(C);let{account:F,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Q(t.mintB.address),notUseTokenAccount:S,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(S&&l),associatedOnly:!S,checkCreateATAOwner:!1});K=F,v&&k.addInstruction(v),(!x||!K)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",P.tokenAccounts);let R=await P.getCreatedTokenAccount({mint:new Q(t.lpMint.address)});R||this.logAndCreateError("cannot found lp token account","tokenAccounts",P.tokenAccounts);let L=n!=null?n:await this.getCpmmPoolKeys(t.id);return k.addInstruction({instructions:[Am(new Q(t.programId),this.scope.ownerPubKey,new Q(L.authority),new Q(t.id),R,x,K,new Q(L.vault.A),new Q(L.vault.B),B,T,new Q(t.lpMint.address),i,p.sub((V=b.fee)!=null?V:new tt(0)),f.sub((Y=g.fee)!=null?Y:new tt(0)))],instructionTypes:[X.CpmmWithdrawLiquidity],lookupTableAddress:L.lookupTableAccount?[L.lookupTableAccount]:[]}),k.addCustomComputeBudget(s),k.addTipInstruction(a),k.versionBuild({txVersion:c})}async swap(e){var C,F,v,R,L,V;let{poolInfo:t,poolKeys:n,baseIn:i,fixedOut:r,inputAmount:s,swapResult:a,slippage:c=0,config:u,computeBudgetConfig:l,txTipConfig:m,txVersion:d,feePayer:p}=e,{bypassAssociatedCheck:f,checkCreateATAOwner:y,associatedOnly:b}=M({bypassAssociatedCheck:!1,checkCreateATAOwner:!1,associatedOnly:!0},u),g=this.createTxBuilder(p),[P,k]=[new Q(t.mintA.address),new Q(t.mintB.address)];r?a.sourceAmountSwapped=a.sourceAmountSwapped.mul(new tt((1+c)*1e4)).div(new tt(1e4)):a.destinationAmountSwapped=a.destinationAmountSwapped.mul(new tt((1-c)*1e4)).div(new tt(1e4));let B=t.mintA.address===$.toBase58(),T=t.mintB.address===$.toBase58(),{account:h,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:P,tokenProgram:new Q((C=t.mintA.programId)!=null?C:Gt),owner:this.scope.ownerPubKey,createInfo:B||!i?{payer:this.scope.ownerPubKey,amount:i?a.sourceAmountSwapped:0}:void 0,notUseTokenAccount:B,skipCloseAccount:!B,associatedOnly:B?!1:b,checkCreateATAOwner:y});S&&g.addInstruction(S);let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({mint:k,tokenProgram:new Q((F=t.mintB.programId)!=null?F:Gt),owner:this.scope.ownerPubKey,createInfo:T||i?{payer:this.scope.ownerPubKey,amount:i?0:a.sourceAmountSwapped}:void 0,notUseTokenAccount:T,skipCloseAccount:!T,associatedOnly:T?!1:b,checkCreateATAOwner:y});K&&g.addInstruction(K),(!h||!x)&&this.logAndCreateError("user do not have token account",{mintA:t.mintA.symbol||t.mintA.address,mintB:t.mintB.symbol||t.mintB.address,mintATokenAcc:h,mintBTokenAcc:x,mintAUseSOLBalance:B,mintBUseSOLBalance:T,associatedOnly:b});let I=n!=null?n:await this.getCpmmPoolKeys(t.id);return g.addInstruction({instructions:[r?Pm(new Q(t.programId),this.scope.ownerPubKey,new Q(I.authority),new Q(I.config.id),new Q(t.id),i?h:x,i?x:h,new Q(I.vault[i?"A":"B"]),new Q(I.vault[i?"B":"A"]),new Q((L=t[i?"mintA":"mintB"].programId)!=null?L:Gt),new Q((V=t[i?"mintB":"mintA"].programId)!=null?V:Gt),i?P:k,i?k:P,er(new Q(t.programId),new Q(t.id)).publicKey,a.sourceAmountSwapped,a.destinationAmountSwapped):bs(new Q(t.programId),this.scope.ownerPubKey,new Q(I.authority),new Q(I.config.id),new Q(t.id),i?h:x,i?x:h,new Q(I.vault[i?"A":"B"]),new Q(I.vault[i?"B":"A"]),new Q((v=t[i?"mintA":"mintB"].programId)!=null?v:Gt),new Q((R=t[i?"mintB":"mintA"].programId)!=null?R:Gt),i?P:k,i?k:P,er(new Q(t.programId),new Q(t.id)).publicKey,s,a.destinationAmountSwapped)],instructionTypes:[r?X.CpmmSwapBaseOut:X.ClmmSwapBaseIn]}),g.addCustomComputeBudget(l),g.addTipInstruction(m),g.versionBuild({txVersion:d})}async lockLp(e){var d,p,f,y,b;let{poolInfo:t,lpAmount:n,computeBudgetConfig:i,txTipConfig:r,txVersion:s,feePayer:a,feeNftOwner:c}=e;n.isZero()&&this.logAndCreateError("lpAmount must greater than zero",{lpAmount:n.toString()});let u=this.createTxBuilder(a),l=(d=e.poolKeys)!=null?d:await this.getCpmmPoolKeys(t.id),m=await wm({poolInfo:t,poolKeys:l,ownerInfo:{wallet:this.scope.ownerPubKey,feePayer:(p=e.feePayer)!=null?p:this.scope.ownerPubKey},feeNftOwner:c!=null?c:this.scope.ownerPubKey,lockProgram:(f=e.programId)!=null?f:Ao,lockAuthProgram:(y=e.authProgram)!=null?y:Po,lpAmount:n,withMetadata:(b=e.withMetadata)!=null?b:!0,getEphemeralSigners:e.getEphemeralSigners});return u.addInstruction(m),u.addCustomComputeBudget(i),u.addTipInstruction(r),u.versionBuild({txVersion:s,extInfo:m.address})}async harvestLockLp(e){var F;let{poolInfo:t,lpFeeAmount:n,nftMint:i,programId:r=Ao,authProgram:s=Po,cpmmProgram:a,computeBudgetConfig:c,txTipConfig:u,txVersion:l,closeWsol:m=!0}=e;n.isZero()&&this.logAndCreateError("lpFeeAmount must greater than zero",{lpAmount:n.toString()});let d=e.feePayer||this.scope.ownerPubKey,p=this.createTxBuilder(d),[f,y]=[new Q(t.mintA.address),new Q(t.mintB.address)],b=f.equals($),g=y.equals($),P,k,{account:B,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Q(t.mintA.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(b&&m),associatedOnly:!b,checkCreateATAOwner:!1});P=B,T&&p.addInstruction(T);let{account:h,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Q(t.mintB.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(g&&m),associatedOnly:!g,checkCreateATAOwner:!1});k=h,S&&p.addInstruction(S),(!P||!k)&&this.logAndCreateError("cannot found target token accounts",{tokenAccountA:P,tokenAccountB:k});let x=(F=e.poolKeys)!=null?F:await this.getCpmmPoolKeys(t.id),{publicKey:K}=Z(d,i,Gt),{publicKey:I}=tr(r,i),{publicKey:C}=Z(s,new Q(t.lpMint.address),Gt);return p.addInstruction({instructions:[Iu({programId:r,nftOwner:this.scope.ownerPubKey,auth:s,nftMint:i,nftAccount:K,lockPda:I,poolId:new Q(t.id),mintLp:new Q(x.mintLp.address),userVaultA:P,userVaultB:k,poolVaultA:new Q(x.vault.A),poolVaultB:new Q(x.vault.B),mintA:f,mintB:y,lockLpVault:C,lpFeeAmount:n,cpmmProgram:a==null?void 0:a.programId,cpmmAuthProgram:a==null?void 0:a.authProgram})],instructionTypes:[X.CpmmCollectLockFee]}),p.addCustomComputeBudget(c),p.addTipInstruction(u),p.versionBuild({txVersion:l})}async harvestMultiLockLp(e){let{lockInfo:t,programId:n=Ao,authProgram:i=Po,cpmmProgram:r,computeBudgetConfig:s,txVersion:a,closeWsol:c=!0}=e,u=e.feePayer||this.scope.ownerPubKey,l=this.createTxBuilder(u);return t.forEach(async m=>{var K;let{poolInfo:d,lpFeeAmount:p,nftMint:f}=m;if(p.isZero())return;let[y,b]=[new Q(d.mintA.address),new Q(d.mintB.address)],g=y.equals($),P=b.equals($),k,B;if(g){let{account:I,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintA.programId,mint:new Q(d.mintA.address),notUseTokenAccount:!0,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!c,associatedOnly:!1,checkCreateATAOwner:!1});k=I,C&&l.addInstruction(C)}else{let I=new Q(d.mintA.address);k=this.scope.account.getAssociatedTokenAccount(I,new Q(d.mintA.programId)),l.addInstruction({instructions:[hm(this.scope.ownerPubKey,k,this.scope.ownerPubKey,I)]})}if(P){let{account:I,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:d.mintB.programId,mint:new Q(d.mintB.address),notUseTokenAccount:!0,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!c,associatedOnly:!1,checkCreateATAOwner:!1});B=I,C&&l.addInstruction(C)}else{let I=new Q(d.mintB.address);B=this.scope.account.getAssociatedTokenAccount(I,new Q(d.mintB.programId)),l.addInstruction({instructions:[hm(this.scope.ownerPubKey,B,this.scope.ownerPubKey,I)]})}(!k||!B)&&this.logAndCreateError("cannot found target token accounts",{tokenAccountA:k,tokenAccountB:B});let T=(K=m.poolKeys)!=null?K:await this.getCpmmPoolKeys(d.id),{publicKey:h}=Z(u,f,Gt),{publicKey:S}=tr(n,f),{publicKey:x}=Z(i,new Q(d.lpMint.address),Gt);l.addInstruction({instructions:[Iu({programId:n,nftOwner:this.scope.ownerPubKey,auth:i,nftMint:f,nftAccount:h,lockPda:S,poolId:new Q(d.id),mintLp:new Q(T.mintLp.address),userVaultA:k,userVaultB:B,poolVaultA:new Q(T.vault.A),poolVaultB:new Q(T.vault.B),mintA:y,mintB:b,lockLpVault:x,lpFeeAmount:p,cpmmProgram:r==null?void 0:r.programId,cpmmAuthProgram:r==null?void 0:r.authProgram})],instructionTypes:[X.CpmmCollectLockFee]})}),a===0?l.sizeCheckBuildV0({computeBudgetConfig:s}):l.sizeCheckBuild({computeBudgetConfig:s})}computeSwapAmount({pool:e,amountIn:t,outputMint:n,slippage:i}){let r=n.toString()===e.mintB.address,s=ys.swap(t,r?e.baseReserve:e.quoteReserve,r?e.quoteReserve:e.baseReserve,e.configInfo.tradeFeeRate),a=new N(s.destinationAmountSwapped.toString()).div(s.sourceAmountSwapped.toString()),c=s.destinationAmountSwapped.mul(new tt((1-i)*1e4)).div(new tt(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:i,slippage:r,epochInfo:s,baseIn:a}){var B,T,h,S,x,K,I,C,F;let c=1-Number(r.toSignificant())/100,u=new tt(new N(i).mul(10**e[a?"mintA":"mintB"].decimals).mul(c).toFixed(0)),l=Ce(u,e[a?"mintA":"mintB"].extensions.feeConfig,s,!1),m=u.sub((B=l.fee)!=null?B:new tt(0)),d=new tt(new N(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,N.ROUND_DOWN));this.logDebug("baseReserve:",t.toString(),"quoteReserve:",n.toString()),this.logDebug("tokenIn:",a?e.mintA.symbol:e.mintB.symbol,"amountIn:",u.toString(),"amountInFee:",(h=(T=l.fee)==null?void 0:T.toString())!=null?h:0,"anotherToken:",a?e.mintB.symbol:e.mintA.symbol,"slippage:",`${r.toSignificant()}%`);let p=a?"base":"quote";this.logDebug("input side:",p);let f=m.mul(d).div(p==="base"?t:n),y={amount:ot,fee:void 0,expirationTime:void 0};if(!m.isZero()){let v=wb(f,t,n,d);this.logDebug("lpAmountData:",{amountA:v.amountA.toString(),amountB:v.amountB.toString()}),y=Ce(v[a?"amountB":"amountA"],e[a?"mintB":"mintA"].extensions.feeConfig,s,!0)}let b=new Ze(new tt(1)).add(r),g=new Ze(new tt(1)).sub(r),P=Ce(b.mul(y.amount.sub((S=y.fee)!=null?S:new tt(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,s,!0),k=Ce(g.mul(y.amount.sub((x=y.fee)!=null?x:new tt(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,s,!0);return this.logDebug("anotherAmount:",y.amount.toString(),"anotherAmountFee:",(I=(K=y.fee)==null?void 0:K.toString())!=null?I:0,"maxAnotherAmount:",P.amount.toString(),"maxAnotherAmountFee:",(F=(C=P.fee)==null?void 0:C.toString())!=null?F:0),{inputAmountFee:l,anotherAmount:y,maxAnotherAmount:P,minAnotherAmount:k,liquidity:f}}};function wb(o,e,t,n){let i=o.mul(e).div(n);!i.isZero()&&!o.mul(e).mod(n).isZero()&&(i=i.add(new tt(1)));let r=o.mul(t).div(n);return!r.isZero()&&!o.mul(t).mod(n).isZero()&&(r=r.add(new tt(1))),{amountA:i,amountB:r}}import{PublicKey as hi}from"@solana/web3.js";import{createTransferInstruction as Km,TOKEN_PROGRAM_ID as nt,TOKEN_2022_PROGRAM_ID as ks}from"@solana/spl-token";import hs from"bn.js";var Tm={[Fr.toBase58()]:3},Im={3:Fr};var Bu=E([Re(5),Re(8),O("ownAddress"),w("vaultSignerNonce"),O("baseMint"),O("quoteMint"),O("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),O("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),O("requestQueue"),O("eventQueue"),O("bids"),O("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),Re(7)]),Bm={3:Bu};import{PublicKey as xm}from"@solana/web3.js";var Ps=Pe("Serum"),ws=class{static getProgramId(e){let t=Im[e];return t||Ps.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=Tm[t];return n||Ps.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=Bm[e];return t||Ps.logWithError(!!t,"invalid version","version",e),t}static getLayouts(e){return{state:this.getStateLayout(e)}}static getAssociatedAuthority({programId:e,marketId:t}){let n=[t.toBuffer()],i=0,r;for(;i<100;){try{let s=n.concat(Buffer.from([i]),Buffer.alloc(7));r=xm.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;i++;continue}return{publicKey:r,nonce:i}}return Ps.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:xm.default,nonce:i}}};import{PublicKey as _,SystemProgram as or,TransactionInstruction as rr}from"@solana/web3.js";import Pn from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as xu,TOKEN_2022_PROGRAM_ID as Su,TOKEN_PROGRAM_ID as Jn}from"@solana/spl-token";function h0(o,e,t,n,i,r,s,a,c,u,l,m){let d=E([q("instruction"),w("amountIn"),w("amountOut")]),p=[{pubkey:or.programId,isSigner:!1,isWritable:!1},{pubkey:Jn,isSigner:!1,isWritable:!1},{pubkey:new _(t.programId),isSigner:!1,isWritable:!1},{pubkey:new _(t.id),isSigner:!1,isWritable:!0},{pubkey:new _(n.id),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let y=Ve(t);p.push({pubkey:y.config.id,isSigner:!1,isWritable:!1},{pubkey:y.id,isSigner:!1,isWritable:!0},{pubkey:y.mintA.address.equals(c)?y.vault.A:y.vault.B,isSigner:!1,isWritable:!0},{pubkey:y.mintA.address.equals(c)?y.vault.B:y.vault.A,isSigner:!1,isWritable:!0},{pubkey:y.id,isSigner:!1,isWritable:!0},...m.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let y=Ve(t);p.push({pubkey:y.authority,isSigner:!1,isWritable:!1},{pubkey:y.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:y.id,isSigner:!1,isWritable:!0},{pubkey:new _("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:y.openOrders,isSigner:!1,isWritable:!0},{pubkey:y.vault.A,isSigner:!1,isWritable:!0},{pubkey:y.vault.B,isSigner:!1,isWritable:!0},{pubkey:y.marketId,isSigner:!1,isWritable:!0},{pubkey:y.marketBids,isSigner:!1,isWritable:!0},{pubkey:y.marketAsks,isSigner:!1,isWritable:!0},{pubkey:y.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:y.id,isSigner:!1,isWritable:!0},{pubkey:y.id,isSigner:!1,isWritable:!0})}else{let y=Ve(t);p.push({pubkey:y.authority,isSigner:!1,isWritable:!1},{pubkey:y.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:y.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:y.openOrders,isSigner:!1,isWritable:!0},{pubkey:y.vault.A,isSigner:!1,isWritable:!0},{pubkey:y.vault.B,isSigner:!1,isWritable:!0},{pubkey:y.marketId,isSigner:!1,isWritable:!0},{pubkey:y.marketBids,isSigner:!1,isWritable:!0},{pubkey:y.marketAsks,isSigner:!1,isWritable:!0},{pubkey:y.marketEventQueue,isSigner:!1,isWritable:!0},...y.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:y.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:y.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:y.id,isSigner:!1,isWritable:!0},{pubkey:y.id,isSigner:!1,isWritable:!0}])}let f=Buffer.alloc(d.span);return d.encode({instruction:4,amountIn:u,amountOut:l},f),new rr({keys:p,programId:o,data:f})}function T0(o,e,t,n,i,r,s,a,c,u){let l=E([q("instruction")]),m=[{pubkey:or.programId,isSigner:!1,isWritable:!1},{pubkey:Jn,isSigner:!1,isWritable:!1},{pubkey:new _(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new _(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new _(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let p=Ve(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(f=>({pubkey:f,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let p=Ve(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 _("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=Ve(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 rr({keys:m,programId:o,data:d})}function kb(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f){var h;let y=[],b=[A({pubkey:Jn,isWritable:!1}),A({pubkey:Su,isWritable:!1}),A({pubkey:xu,isWritable:!1}),A({pubkey:or.programId,isWritable:!1}),A({pubkey:e,isSigner:!0})];b.push(A({pubkey:t})),b.push(A({pubkey:i}));let g=[c,u],P=[l,m],k=[r,s,a];for(let S=0;S<g.length;S++){let x=g[S],K=k[S]===x.mintA.address;if(b.push(A({pubkey:new _(x.programId),isWritable:!1})),S===g.length-1?b.push(A({pubkey:i})):b.push(A({pubkey:n})),b.push(A({pubkey:new _(k[S])})),b.push(A({pubkey:new _(k[S+1])})),x.version===6){let I=P[S];b.push(A({pubkey:new _(I.config.id)})),b.push(A({pubkey:new _(I.id)})),b.push(A({pubkey:new _(K?I.vault.A:I.vault.B)})),b.push(A({pubkey:new _(K?I.vault.B:I.vault.A)})),b.push(A({pubkey:new _(x.observationId)})),b.push(A({pubkey:gn})),b.push(A({pubkey:et(new _(x.programId),new _(x.id)).publicKey})),y.push(Ku(x.sqrtPriceX64.toString(),K));for(let C of(h=f[S])!=null?h:[])b.push(A({pubkey:new _(C)}))}else if(x.version===5){let I=P[S];b.push(A({pubkey:new _(I.id)})),b.push(A({pubkey:new _(I.authority),isWritable:!1})),b.push(A({pubkey:new _(I.marketProgramId)})),b.push(A({pubkey:new _(I.marketAuthority)})),b.push(A({pubkey:Er,isWritable:!1})),b.push(A({pubkey:new _(I.openOrders)})),b.push(A({pubkey:new _(I.vault.A)})),b.push(A({pubkey:new _(I.vault.B)})),b.push(A({pubkey:new _(I.id)})),b.push(A({pubkey:new _(I.id)})),b.push(A({pubkey:new _(I.id)})),b.push(A({pubkey:new _(I.id)})),b.push(A({pubkey:new _(I.id)})),b.push(A({pubkey:new _(I.id)})),b.push(A({pubkey:new _(I.marketId)})),b.push(A({pubkey:new _(I.marketBids)})),b.push(A({pubkey:new _(I.marketAsks)})),b.push(A({pubkey:new _(I.marketEventQueue)})),b.push(A({pubkey:new _(I.marketBaseVault)})),b.push(A({pubkey:new _(I.marketQuoteVault)}))}else if(x.version===4){let I=P[S],C=x.status!==1;b.push(A({pubkey:new _(I.id)})),b.push(A({pubkey:new _(I.authority),isWritable:!1})),b.push(A({pubkey:new _(C?I.id:I.marketProgramId)})),b.push(A({pubkey:new _(C?I.id:I.marketAuthority)})),b.push(A({pubkey:new _(C?I.id:I.openOrders)})),b.push(A({pubkey:new _(I.vault.A)})),b.push(A({pubkey:new _(I.vault.B)})),b.push(A({pubkey:new _(C?I.id:I.marketId)})),b.push(A({pubkey:new _(C?I.id:I.marketBids)})),b.push(A({pubkey:new _(C?I.id:I.marketAsks)})),b.push(A({pubkey:new _(C?I.id:I.marketEventQueue)})),b.push(A({pubkey:new _(C?I.id:I.marketBaseVault)})),b.push(A({pubkey:new _(C?I.id:I.marketQuoteVault)}))}else if(x.version===7){let I=P[S];b.push(A({pubkey:new _(I.authority)})),b.push(A({pubkey:new _(I.config.id)})),b.push(A({pubkey:new _(I.id)})),b.push(A({pubkey:new _(K?I.vault.A:I.vault.B)})),b.push(A({pubkey:new _(K?I.vault.B:I.vault.A)})),b.push(A({pubkey:new _(x.observationId)}))}else throw Error("pool type error")}let B=E([q("insId"),w("amountIn"),w("amountOut"),H(ne(),y.length,"clmmPriceLimit")]),T=Buffer.alloc(B.span);return B.encode({insId:0,amountIn:d,amountOut:p,clmmPriceLimit:y},T),new rr({keys:b,programId:o,data:T})}function Ku(o,e){if(o)if(e){let t=new Pn(o).div(new Pn(25));return t.gt($r)?t:$r}else{let t=new Pn(o).mul(new Pn(25));return t.lt(Jr)?t:Jr}else return e?$r:Jr}function Sm({routeProgram:o,ownerInfo:e,inputMint:t,swapInfo:n}){var i,r,s,a,c,u,l;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let m=n.poolKey[0],d=Ve(m),p=t.equals(d.mintA.address)?Ht.add(Wt):jt.sub(Wt);return Me.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((r=(i=n.minAmountOut.fee)==null?void 0:i.raw)!=null?r:new Pn(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:[bs(m.programId,e.wallet,m.authority,m.configId,m.id,e.sourceToken,e.destinationToken,d?m.vaultA:m.vaultB,d?m.vaultB:m.vaultA,d?m.mintProgramA:m.mintProgramB,d?m.mintProgramB:m.mintProgramA,new _(m[d?"mintA":"mintB"].address),new _(m[d?"mintB":"mintA"].address),m.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw)],lookupTableAddress:[],instructionTypes:[d?X.CpmmSwapBaseIn:X.CpmmSwapBaseOut],address:{}}}else{let m=n.poolKey[0];return{signers:[],instructions:[ss({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 Pn(0)),fixedSide:"in"})],lookupTableAddress:m.lookupTableAccount?[m.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?X.AmmV5SwapBaseIn:X.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let m=n.poolInfo[0],d=n.poolInfo[1],p=n.poolKey[0],f=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[kb(o,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),n.outputMint.toString(),m,d,p,f,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((l=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?l:new Pn(0)),n.remainingAccounts)],instructionTypes:[X.RouteSwap],lookupTableAddress:[p.lookupTableAccount,f.lookupTableAccount].filter(y=>y!==void 0),address:{}}}else throw Error("route type error")}function I0({programId:o,wallet:e,amount:t,inputAccount:n,outputAccount:i,routeInfo:r,poolKeys:s}){var d;if(r.success===!1)throw Error("route info error");let a=[],c=[A({pubkey:Jn,isWritable:!1}),A({pubkey:Su,isWritable:!1}),A({pubkey:xu,isWritable:!1}),A({pubkey:or.programId,isWritable:!1}),A({pubkey:e,isSigner:!0})],u={[r.data.inputMint]:n,[r.data.outputMint]:i};c.push(A({pubkey:u[r.data.inputMint]})),c.push(A({pubkey:u[r.data.outputMint]}));for(let p=0;p<s.length;p++){let f=r.data.routePlan[p],y=s[p],b=f.inputMint===y.mintA.address;if(c.push(A({pubkey:new _(y.programId),isWritable:!1})),p===s.length-1)c.push(A({pubkey:u[f.outputMint]}));else{let g=f.outputMint;if(u[g]===void 0){let P=Z(e,new _(g),y.programId===St.CLMM_PROGRAM_ID.toBase58()||y.programId===St.CREATE_CPMM_POOL_PROGRAM.toBase58()?new _(b?y.mintB.programId:y.mintA.programId):Jn).publicKey;u[g]=P}c.push(A({pubkey:u[g]}))}if(c.push(A({pubkey:new _(f.inputMint)})),c.push(A({pubkey:new _(f.outputMint)})),y.programId===St.CLMM_PROGRAM_ID.toBase58()){let g=y;c.push(A({pubkey:new _(g.config.id)})),c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(b?g.vault.A:g.vault.B)})),c.push(A({pubkey:new _(b?g.vault.B:g.vault.A)})),c.push(A({pubkey:new _(g.observationId)})),c.push(A({pubkey:gn,isWritable:!1})),c.push(A({pubkey:new _(g.exBitmapAccount)})),a.push(Ku(f.lastPoolPriceX64,b));for(let P of(d=f.remainingAccounts)!=null?d:[])c.push(A({pubkey:new _(P)}))}else if(y.programId===St.AMM_STABLE.toBase58()){let g=y;c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(g.authority),isWritable:!1})),c.push(A({pubkey:new _(g.marketProgramId),isWritable:!1})),c.push(A({pubkey:new _(g.marketAuthority),isWritable:!1})),c.push(A({pubkey:Er,isWritable:!1})),c.push(A({pubkey:new _(g.openOrders)})),c.push(A({pubkey:new _(g.vault.A)})),c.push(A({pubkey:new _(g.vault.B)})),c.push(A({pubkey:new _(g.marketId)})),c.push(A({pubkey:new _(g.marketBids)})),c.push(A({pubkey:new _(g.marketAsks)})),c.push(A({pubkey:new _(g.marketEventQueue)})),c.push(A({pubkey:new _(g.marketBaseVault)})),c.push(A({pubkey:new _(g.marketQuoteVault)}))}else if(y.programId===St.AMM_V4.toBase58()){let g=y;c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(g.authority),isWritable:!1})),c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(g.vault.A)})),c.push(A({pubkey:new _(g.vault.B)})),c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(g.id)}))}else if(y.programId===St.CREATE_CPMM_POOL_PROGRAM.toBase58()){let g=y;c.push(A({pubkey:new _(g.authority)})),c.push(A({pubkey:new _(g.config.id)})),c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(b?g.vault.A:g.vault.B)})),c.push(A({pubkey:new _(b?g.vault.B:g.vault.A)})),c.push(A({pubkey:new _(g.observationId)}))}else throw Error("pool type error")}let l=E([q("insId"),w("amountIn"),w("amountOut"),H(ne(),a.length,"clmmPriceLimit")]),m=Buffer.alloc(l.span);return l.encode({insId:0,amountIn:t,amountOut:new Pn(r.data.otherAmountThreshold),clmmPriceLimit:a},m),new rr({keys:c,programId:o,data:m})}function B0({programId:o,wallet:e,inputAccount:t,outputAccount:n,routeInfo:i,poolKeys:r}){var m;if(i.success===!1)throw Error("route info error");let s=[],a=[A({pubkey:Jn,isWritable:!1}),A({pubkey:Su,isWritable:!1}),A({pubkey:xu,isWritable:!1}),A({pubkey:or.programId,isWritable:!1}),A({pubkey:e,isSigner:!0})],c={[i.data.inputMint]:t,[i.data.outputMint]:n};for(let d=r.length-1;d>=0;d--){let p=i.data.routePlan[d],f=r[d],y=p.inputMint===f.mintA.address;if(a.push(A({pubkey:new _(f.programId)})),d===0)a.push(A({pubkey:c[p.inputMint]}));else{let b=p.inputMint;if(c[b]===void 0){let g=Z(e,new _(b),f.programId===St.CLMM_PROGRAM_ID.toBase58()||f.programId===St.CREATE_CPMM_POOL_PROGRAM.toBase58()?new _(y?f.mintA.programId:f.mintB.programId):Jn).publicKey;c[b]=g}a.push(A({pubkey:c[b]}))}if(d===r.length-1)a.push(A({pubkey:c[p.outputMint]}));else{let b=p.outputMint;if(c[b]===void 0){let g=Z(e,new _(b),f.programId===St.CLMM_PROGRAM_ID.toBase58()||f.programId===St.CREATE_CPMM_POOL_PROGRAM.toBase58()?new _(y?f.mintB.programId:f.mintA.programId):Jn).publicKey;c[b]=g}a.push(A({pubkey:c[b]}))}if(a.push(A({pubkey:new _(p.inputMint)})),a.push(A({pubkey:new _(p.outputMint)})),f.programId===St.CLMM_PROGRAM_ID.toBase58()){let b=f;a.push(A({pubkey:new _(b.config.id)})),a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(y?b.vault.A:b.vault.B)})),a.push(A({pubkey:new _(y?b.vault.B:b.vault.A)})),a.push(A({pubkey:new _(b.observationId)})),a.push(A({pubkey:gn,isWritable:!1})),a.push(A({pubkey:new _(b.exBitmapAccount)})),s.push(Ku(p.lastPoolPriceX64,y));for(let g of(m=p.remainingAccounts)!=null?m:[])a.push(A({pubkey:new _(g)}))}else if(f.programId===St.AMM_STABLE.toBase58()){let b=f;a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(b.authority),isWritable:!1})),a.push(A({pubkey:new _(b.marketProgramId),isWritable:!1})),a.push(A({pubkey:new _(b.marketAuthority),isWritable:!1})),a.push(A({pubkey:Er,isWritable:!1})),a.push(A({pubkey:new _(b.openOrders)})),a.push(A({pubkey:new _(b.vault.A)})),a.push(A({pubkey:new _(b.vault.B)})),a.push(A({pubkey:new _(b.marketId)})),a.push(A({pubkey:new _(b.marketBids)})),a.push(A({pubkey:new _(b.marketAsks)})),a.push(A({pubkey:new _(b.marketEventQueue)})),a.push(A({pubkey:new _(b.marketBaseVault)})),a.push(A({pubkey:new _(b.marketQuoteVault)}))}else if(f.programId===St.AMM_V4.toBase58()){let b=f;a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(b.authority),isWritable:!1})),a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(b.vault.A)})),a.push(A({pubkey:new _(b.vault.B)})),a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(b.id)}))}else if(f.programId===St.CREATE_CPMM_POOL_PROGRAM.toBase58()){let b=f;a.push(A({pubkey:new _(b.authority)})),a.push(A({pubkey:new _(b.config.id)})),a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(y?b.vault.A:b.vault.B)})),a.push(A({pubkey:new _(y?b.vault.B:b.vault.A)})),a.push(A({pubkey:new _(b.observationId)}))}else throw Error("pool type error")}let u=E([q("insId"),w("amountIn"),w("amountOut"),H(ne(),s.length,"clmmPriceLimit")]),l=Buffer.alloc(u.span);return u.encode({insId:1,amountIn:new Pn(i.data.otherAmountThreshold),amountOut:new Pn(i.data.outputAmount),clmmPriceLimit:s},l),new rr({keys:a,programId:o,data:l})}var Mn=new hs(0),sr=class extends De{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:i=1,feePayer:r}=e,s=await this.getWSolAccounts(),a=this.createTxBuilder(r);a.addCustomComputeBudget(e.computeBudgetConfig);let c=ee(t);for(let u=0;u<s.length;u++)c.gte(s[u].amount)?(a.addInstruction({instructions:[Kn({tokenAccount:s[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),c.sub(s[u].amount)):a.addInstruction({instructions:[Kn({tokenAccount:s[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]});return a.versionBuild({txVersion:i})}async wrapWSol(e,t,n,i){let r=this.createTxBuilder(i),s=await zn({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return r.addInstruction(s),r.versionBuild({txVersion:n!=null?n:1})}async swap({swapInfo:e,swapPoolKeys:t,ownerInfo:n,computeBudgetConfig:i,routeProgram:r,txVersion:s,feePayer:a}){let c=this.createTxBuilder(a),u=e.amountIn,l=e.amountOut,m=u.amount.token.mint.equals($),d=l.amount.token.mint.equals($),p=u.amount.token.mint,f=l.amount.token.mint,{account:y,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.amount.token.isToken2022?ks:nt,mint:p,notUseTokenAccount:m,owner:this.scope.ownerPubKey,skipCloseAccount:!m,createInfo:m?{payer:this.scope.ownerPubKey,amount:u.amount.raw}:void 0,associatedOnly:m?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});if(b&&c.addInstruction(b),y===void 0)throw Error("input account check error");let g;if(e.routeType==="route"&&!d)g=this.scope.account.getAssociatedTokenAccount(f,l.amount.token.isToken2022?ks:nt);else{let{account:T,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:l.amount.token.isToken2022?ks:nt,mint:f,notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!0,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});g=T,h&&c.addInstruction(h)}d&&c.addInstruction({endInstructions:[Kn({owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,tokenAccount:g,programId:nt})],endInstructionTypes:[X.CloseAccount]});let P;if(e.routeType==="route"){let T=e.middleToken;P=this.scope.account.getAssociatedTokenAccount(T.mint,T.isToken2022?ks:nt)}let k=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),B=Sm({routeProgram:r,inputMint:p,swapInfo:U(M({},e),{poolInfo:[...e.poolInfoList],poolKey:k,outputMint:f}),ownerInfo:{wallet:this.scope.ownerPubKey,sourceToken:y,routeToken:P,destinationToken:g}});if(e.feeConfig!==void 0){let T=this.createTxBuilder();T.addInstruction({instructions:[Km(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[X.TransferAmount]}),T.addInstruction(B);let{transactions:h}=s===0?await T.sizeCheckBuildV0():await T.sizeCheckBuild();h.length<2&&c.addInstruction({instructions:[Km(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[X.TransferAmount]})}return c.addInstruction(B),s===0?c.sizeCheckBuildV0({computeBudgetConfig:i,address:B.address}):c.sizeCheckBuild({computeBudgetConfig:i,address:B.address})}async fetchRoutePoolBasicInfo(e){let{amm:t=yo,clmm:n=qn,cpmm:i=go}=e||{},r=await this.scope.connection.getProgramAccounts(t,{dataSlice:{offset:yi.offsetOf("baseMint"),length:64}}),s=E([O("baseMint"),O("quoteMint")]),a=r.map(p=>({id:p.pubkey,version:4,mintA:s.decode(p.account.data).baseMint,mintB:s.decode(p.account.data).quoteMint})),c=E([O("mintA"),O("mintB")]),l=(await this.scope.connection.getProgramAccounts(n,{filters:[{dataSize:pi.span}],dataSlice:{offset:pi.offsetOf("mintA"),length:64}})).map(p=>{let f=c.decode(p.account.data);return{id:p.pubkey,version:6,mintA:f.mintA,mintB:f.mintB}}),d=(await this.scope.connection.getProgramAccounts(i,{dataSlice:{offset:gs.offsetOf("mintA"),length:64}})).map(p=>{let f=c.decode(p.account.data);return{id:p.pubkey,version:7,mintA:f.mintA,mintB:f.mintB}});return{clmmPools:l,ammPools:a,cpmmPools:d}}getAllRoute({inputMint:e,outputMint:t,clmmPools:n,ammPools:i,cpmmPools:r}){e=e.toString()===hi.default.toString()?$:e,t=t.toString()===hi.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:nt,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:nt,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:nt,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:nt,in:[],out:[],mDecimals:0}),l[p].out.push(d)}}let m=[];for(let d of i)(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:nt,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:nt,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:nt,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:nt,in:[],out:[],mDecimals:0}),l[d.mintA.toBase58()].out.push(d));for(let d of r)(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:nt,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:nt,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:nt,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:nt,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 f of p.in)for(let y of p.out)f.version===6&&a[f.id.toString()]===void 0?a[f.id.toString()]=f:f.version===7&&c[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),y.version===6&&a[y.id.toString()]===void 0?a[y.id.toString()]=y:y.version===7&&c[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)}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 i=new Set([...e.needTickArray.map(y=>[y.mintA.toBase58(),y.mintB.toBase58()]).flat(),t.toString(),n.toString()]);console.log("fetching amm pools info, total: ",e.needSimulate.length);let r=await this.scope.liquidity.getRpcPoolInfos(e.needSimulate.map(y=>y.id)),s=us(r),a={};Object.values(s).forEach(y=>{i.delete(y.mintA.address),a[y.mintA.address]={address:new hi(y.mintA.address),programId:nt,mintAuthority:null,supply:BigInt(0),decimals:y.mintA.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0},i.delete(y.mintB.address),a[y.mintB.address]={address:new hi(y.mintB.address),programId:nt,mintAuthority:null,supply:BigInt(0),decimals:y.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(y=>y.id.toBase58()),!0);Object.values(c).forEach(y=>{let[b,g]=[y.mintA.toBase58(),y.mintB.toBase58()];y.mintProgramA.equals(nt)?(i.delete(b),a[b]={address:y.mintA,programId:y.mintProgramA,mintAuthority:null,supply:BigInt(0),decimals:y.mintDecimalA,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):i.add(b),y.mintProgramB.equals(nt)?(i.delete(g),a[g]={address:y.mintB,programId:y.mintProgramB,mintAuthority:null,supply:BigInt(0),decimals:y.mintDecimalB,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):i.add(g)}),console.log("fetching mints info, total: ",i.size);let u=await Si({connection:this.scope.connection,mints:Array.from(i).map(y=>new hi(y))});a=M(M({},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(y=>y.id)}),{computeClmmPoolInfo:d,computePoolTickData:p}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:m,mintInfos:a}),f=Object.keys(e.routePathDict).reduce((y,b)=>U(M({},y),{[b]:U(M({},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:r,ammSimulateCache:s,clmmPoolsRpcInfo:m,computeClmmPoolInfo:d,computePoolTickData:p,computeCpmmData:l,routePathDict:f}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:i,simulateCache:r,tickCache:s,slippage:a,chainTime:c,epochInfo:u,feeConfig:l}){var g,P,k,B,T,h,S,x,K;let m=l===void 0?new hs(0):e.raw.mul(new hs(l.feeBps.toNumber())).div(new hs(1e4)),d=e.raw.sub(m),p=new Ke(e.token,d),f=l===void 0?void 0:{feeAmount:m,feeAccount:l.feeAccount},y=U(M({},t),{address:kt(t.address).toString()}),b=[];for(let I of n)try{b.push(U(M({},this.computeAmountOut({itemPool:I,tickCache:s,simulateCache:r,chainTime:c,epochInfo:u,slippage:a,outputToken:y,amountIn:p})),{feeConfig:f}))}catch(C){this.logDebug("direct error",I.version,I.id.toString(),C.message)}this.logDebug("direct done");for(let[I,C]of Object.entries(i)){let F={chainId:101,address:I,programId:C.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:C.mDecimals,tags:[],extensions:{}},v=C.in.map(L=>{try{return{pool:L,data:this.computeAmountOut({itemPool:L,tickCache:s,simulateCache:r,chainTime:c,epochInfo:u,slippage:a,outputToken:F,amountIn:p})}}catch(V){this.logDebug("route in error",L.version,L.id.toString(),V.message);return}}).sort((L,V)=>{var le,Ie,pe,Ae;let Y=L===void 0?Mn:L.data.amountOut.amount.raw.sub((Ie=(le=L.data.amountOut.fee)==null?void 0:le.raw)!=null?Ie:Mn),te=V===void 0?Mn:V.data.amountOut.amount.raw.sub((Ae=(pe=V.data.amountOut.fee)==null?void 0:pe.raw)!=null?Ae:Mn);return Y.lt(te)?1:-1})[0];if(v===void 0)continue;let R=new Ke(os(F),v.data.amountOut.amount.raw.sub((P=(g=v.data.amountOut.fee)==null?void 0:g.raw)!=null?P:Mn));for(let L of C.out)try{let V=this.computeAmountOut({itemPool:L,tickCache:s,simulateCache:r,chainTime:c,epochInfo:u,slippage:a,outputToken:y,amountIn:R});b.push(U(M({},V),{allTrade:!!(v.data.allTrade&&V.allTrade),amountIn:v.data.amountIn,amountOut:V.amountOut,minAmountOut:V.minAmountOut,currentPrice:void 0,executionPrice:new N(new ft({baseToken:v.data.amountIn.amount.token,denominator:v.data.amountIn.amount.raw,quoteToken:V.amountOut.amount.token,numerator:V.amountOut.amount.raw.sub((B=(k=V.amountOut.fee)==null?void 0:k.raw)!=null?B:Mn)}).toFixed()),priceImpact:new N(v.data.priceImpact.add(V.priceImpact).toFixed()),fee:[v.data.fee[0],V.fee[0]],routeType:"route",poolInfoList:[v.pool,L],remainingAccounts:[v.data.remainingAccounts[0],V.remainingAccounts[0]],minMiddleAmountFee:(T=V.amountOut.fee)!=null&&T.raw?new Ke(v.data.amountOut.amount.token,((S=(h=v.data.amountOut.fee)==null?void 0:h.raw)!=null?S:Mn).add((K=(x=V.amountOut.fee)==null?void 0:x.raw)!=null?K:Mn)):void 0,middleToken:v.data.amountOut.amount.token,poolReady:v.data.poolReady&&V.poolReady,poolType:[v.data.poolType,V.poolType],feeConfig:f,expirationTime:un(v.data.expirationTime,V.expirationTime)}))}catch(V){this.logDebug("route out error",L.version,L.id.toString(),V.message)}}return b.filter(I=>(I.allTrade||this.logDebug(`pool ${I.poolInfoList.map(C=>C.id.toString()).join(",")} filter out since not all trade`),I.allTrade)).sort((I,C)=>I.amountOut.amount.raw.sub(C.amountOut.amount.raw).gt(Mn)?-1:1)}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:i,epochInfo:r,slippage:s,outputToken:a,amountIn:c}){if(e.version===6){let{allTrade:u,realAmountIn:l,amountOut:m,minAmountOut:d,expirationTime:p,currentPrice:f,executionPrice:y,priceImpact:b,fee:g,remainingAccounts:P,executionPriceX64:k}=_e.computeAmountOutFormat({poolInfo:e,tickArrayCache:t[e.id.toString()],amountIn:c.raw,tokenOut:a,slippage:s,epochInfo:r,catchLiquidityInsufficient:!0});return{allTrade:u,amountIn:l,amountOut:m,minAmountOut:d,currentPrice:new N(f.toFixed()),executionPrice:new N(y.toFixed()),priceImpact:new N(b.toFixed()),fee:[g],remainingAccounts:[P],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<i,poolType:"CLMM",slippage:s,clmmExPriceX64:[k],expirationTime:un(l.expirationTime,p)}}else if(e.version===7){let{allTrade:u,executionPrice:l,amountOut:m,minAmountOut:d,priceImpact:p,fee:f}=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:Xo(U(M({},a),{amount:m})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Xo(U(M({},a),{amount:d})),fee:void 0,expirationTime:void 0},currentPrice:e.poolPrice,executionPrice:l,priceImpact:p,fee:[new Ke(c.token,f)],remainingAccounts:[],routeType:"amm",poolInfoList:[e],poolReady:e.openTime.toNumber()<i,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:f}=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:Xo(U(M({},a),{amount:u})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Xo(U(M({},a),{amount:l})),fee:void 0,expirationTime:void 0},currentPrice:m,executionPrice:d,priceImpact:p,fee:[new Ke(c.token,f)],routeType:"amm",poolInfoList:[e],remainingAccounts:[],poolReady:Number(n[e.id].openTime)<i,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 i=new Set(e.filter(u=>u.version===6&&!t[u.id.toString()]).map(u=>u.id.toString()));if(i.size>0){let u=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(i)});Object.keys(u).forEach(l=>{t[l]=u[l]})}let r=new Set(e.filter(u=>u.version===4&&!n[u.id.toString()]).map(u=>u.id.toString()));if(r.size>0){let u=await 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 Fe(this.scope.connection,Array.from(s).map(l=>({pubkey:new hi(l)})))).forEach(l=>{if(!l.accountInfo)return;let m=Bu.decode(l.accountInfo.data);a[l.pubkey.toBase58()]={marketId:l.pubkey.toString(),marketProgramId:l.accountInfo.owner.toString(),marketAuthority:ws.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:U(M({},u.ammConfig),{id:u.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),rewardInfos:[],observationId:u.observationId.toBase58(),exBitmapAccount:u.exBitmapAccount.toBase58()};c.push(m)}else if(u.version===4){let l=n[u.id.toString()],m=M({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:Au({programId:new hi(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({observationId:u.observationId.toBase58(),programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),authority:Yi(u.programId).publicKey.toBase58(),vault:{A:u.vaultA.toBase58(),B:u.vaultB.toBase58()},mintLp:Bt({address:u.mintLp.toBase58(),programId:nt.toBase58(),decimals:u.lpDecimals}),config:U(M({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{PublicKey as hb,Transaction as Cu,TransactionInstruction as Tb}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ib}from"@solana/spl-token";import Cm from"bn.js";var xt=class extends De{static getPdaPoolId(e,t){return oe([xt.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return oe([xt.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Cm(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:i,chainTime:r}){if(n.length===0)return[];let s=n.map(l=>xt.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<xt.VERSION_PROJECT.length;l++)a.push(...s.map(m=>xt.getPdaOwnerId(t,m,i,l).publicKey));let c=await nn(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],f=a[l],y=c[d],b=c[n.length+l];if(!(y&&b)||y.data.length!==xt.POOL_LAYOUT.span||b.data.length!==xt.OWNER_LAYOUT.span)continue;let g=xt.POOL_LAYOUT.decode(y.data),P=xt.OWNER_LAYOUT.decode(b.data),k=g.openTime.toNumber(),B=g.endTime.toNumber(),T=P.tokenInfo.map(x=>x.debtAmount.gt(new Cm(0))).filter(x=>!x).length!==3,h=r>k&&r<B&&g.status===1,S=T&&h;u.push({programId:t,poolId:p,ammId:g.ammId,ownerAccountId:f,snapshotLpAmount:P.lpAmount,project:xt.VERSION_PROJECT[m],openTime:k,endTime:B,canClaim:S,canClaimErrorType:T?h?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,K)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:P.tokenInfo[K].debtAmount.add(P.tokenInfo[K].claimedAmount)}))})}return u}async makeClaimTransaction({poolInfo:e,ownerInfo:t,feePayer:n}){t.wallet||this.scope.checkOwner();let i=this.createTxBuilder(n),r=t.wallet||this.scope.ownerPubKey,s=[];for(let u of e.tokenInfo){let{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({mint:u.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:u.mintAddress.equals(Le.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!u.mintAddress.equals(Le.WSOL.mint),associatedOnly:u.mintAddress.equals(Le.WSOL.mint)?!1:t.associatedOnly});m&&i.addInstruction(m),s.push(l)}i.addInstruction({instructions:[xt.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:r,ownerPda:e.ownerAccountId,claimAddress:s}})]});let{transaction:a,signers:c}=i.build();return[{transaction:a,signer:c}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:n}){let i=this.createTxBuilder(n),r=t.wallet||this.scope.ownerPubKey,s={};for(let l of e){let m=[];for(let d of l.tokenInfo){let{account:p,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({mint:d.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:d.mintAddress.equals(Le.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!d.mintAddress.equals(Le.WSOL.mint),associatedOnly:d.mintAddress.equals(Le.WSOL.mint)?!1:t.associatedOnly});f&&i.addInstruction(f),p&&(s[d.mintAddress.toString()]=p,m.push(p))}i.addInstruction({instructions:[xt.makeClaimInstruction({programId:l.programId,poolInfo:l,ownerInfo:{wallet:r,ownerPda:l.ownerAccountId,claimAddress:m}})]})}let{transaction:a,signers:c}=i.build(),u=i.allInstructions;return vr(u,[r,...c.map(l=>l.publicKey)])?[{transaction:a,signer:c}]:[{transaction:new Cu().add(...u.slice(0,i.AllTxData.instructions.length-1)),signer:c},{transaction:new Cu().add(...u.slice(i.AllTxData.instructions.length-1)),signer:[]},{transaction:new Cu().add(...i.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=E([]),r=[{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:Ib,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new Tb({keys:r,programId:e,data:a})}},Zt=xt;Zt.CLAIMED_NUM=3,Zt.POOL_LAYOUT=E([Re(8),q("bump"),q("status"),w("openTime"),w("endTime"),O("ammId"),H(E([q("mintDecimals"),O("mintAddress"),O("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),xt.CLAIMED_NUM,"tokenInfo"),H(w(),10,"padding")]),Zt.OWNER_LAYOUT=E([Re(8),q("bump"),q("version"),O("poolId"),O("owner"),w("lpAmount"),H(E([O("mintAddress"),w("debtAmount"),w("claimedAmount")]),xt.CLAIMED_NUM,"tokenInfo"),H(w(),4,"padding")]),Zt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new hb(e)),Zt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},Zt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as ur}from"@solana/web3.js";import Rm from"bn.js";import{SYSVAR_CLOCK_PUBKEY as Bb,TransactionInstruction as Lu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Nu}from"@solana/spl-token";var Ru=E([q("instruction"),Yc("amount")]),ar=E([q("instruction")]);function A1({programId:o,amount:e,instructionKeys:t}){let n=[{pubkey:Kr,isSigner:!1,isWritable:!1},{pubkey:Nu,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:Hs,isSigner:!1,isWritable:!1},...Object.entries(t).map(([r,s])=>({pubkey:s,isSigner:r==="userOwner",isWritable:!["authority","userOwner","userIdoCheck","userStakeInfo"].includes(r)}))],i=Buffer.alloc(Ru.span);return Ru.encode({instruction:1,amount:Number(e)},i),new Lu({keys:n,programId:o,data:i})}function Ts({programId:o},e){let t=[{pubkey:Nu,isSigner:!1,isWritable:!1},{pubkey:Hs,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,r])=>({pubkey:r,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(ar.span);return ar.encode({instruction:2},n),new Lu({keys:t,programId:o,data:n})}function Ou(o){let{poolConfig:e,userKeys:t,side:n}=o,i=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,r=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(ar.span);ar.encode({instruction:2},s);let a=[{pubkey:Nu,isWritable:!1,isSigner:!1},{pubkey:Bb,isWritable:!1,isSigner:!1},{pubkey:e.id,isWritable:!0,isSigner:!1},{pubkey:e.authority,isWritable:!1,isSigner:!1},{pubkey:r,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new Lu({programId:e.programId,keys:a,data:s})}var xb={[wo.IDO_PROGRAM_ID_V1.toString()]:1,[wo.IDO_PROGRAM_ID_V2.toString()]:2,[wo.IDO_PROGRAM_ID_V3.toString()]:3,[wo.IDO_PROGRAM_ID_V4.toString()]:4},Hi=class extends De{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:r,feePayer:s}){let a=this.createTxBuilder(s),c=xb[t.programId];c||this.logAndCreateError("invalid version",c);let u=Ve(t),[l,m]=[!new Rm(e.coin).isZero(),!new Rm(e.pc).isZero()],d=u.projectInfo.mint.address.equals($),{account:p,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.projectInfo.mint.programId,mint:u.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!d,notUseTokenAccount:d,associatedOnly:d?!1:n,checkCreateATAOwner:i});!p&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&f&&a.addInstruction(f);let y=u.buyInfo.mint.address.equals($),{account:b,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.buyInfo.mint.programId,mint:u.buyInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:n,checkCreateATAOwner:i});if(!p&&m&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),m&&g&&a.addInstruction(g),(!p||!b)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),c===3)return a.addInstruction({instructions:[...l?[Ts({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:p,userIdoInfo:new ur(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...m?[Ts({programId:new ur(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:b,userIdoInfo:new ur(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:r});if(c<3)return!l&&!m&&this.logAndCreateError("no claimable rewards"),a.addInstruction({instructions:[Ts({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:b,userBaseTokenAccount:p,userIdoInfo:new ur(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:r});let P={poolConfig:{id:u.id,programId:u.programId,authority:u.authority,baseVault:u.projectInfo.vault,quoteVault:u.buyInfo.vault,baseToken:t.projectInfo.mint,quoteToken:t.buyInfo.mint},userKeys:{baseTokenAccount:p,quoteTokenAccount:b,ledgerAccount:new ur(e.userIdoInfo),owner:this.scope.ownerPubKey}};return a.addInstruction({instructions:[...l?[Ou(U(M({},P),{side:"base"}))]:[],...m?[Ou(U(M({},P),{side:"quote"}))]:[]]}).versionBuild({txVersion:r})}};var Sb=Buffer.from("vault_auth_seed","utf8"),Kb=Buffer.from("global_config","utf8"),Cb=Buffer.from("pool_vesting","utf8"),Rb=Buffer.from("platform_config","utf8"),Lb=Buffer.from("platform_fee_vault_auth_seed","utf8"),Nb=Buffer.from("creator_fee_vault_auth_seed","utf8");function wn(o){return oe([Sb],o)}function E1(o,e,t,n){return oe([Kb,e.toBuffer(),Ob(t),ts(n)],o)}function ji(o,e,t){return oe([$a,e.toBuffer(),t.toBuffer()],o)}function Mu(o,e,t){return oe([Ja,e.toBuffer(),t.toBuffer()],o)}function Ti(o){return oe([Buffer.from("__event_authority","utf8")],o)}function Ob(o){let e=new ArrayBuffer(1);return new DataView(e).setUint8(0,o),new Uint8Array(e)}function vu(o,e){return oe([Rb,e.toBuffer()],o)}function cr(o,e,t){return oe([Cb,e.toBuffer(),t.toBuffer()],o)}function Ii(o,e,t){return oe([e.toBuffer(),t.toBuffer()],o)}function Fu(o){return oe([Lb],o)}function Zi(o,e,t){return oe([e.toBuffer(),t.toBuffer()],o)}function Lm(o){return oe([Nb],o)}import{SystemProgram as $t,TransactionInstruction as Xt}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Is,TOKEN_2022_PROGRAM_ID as Mb,TOKEN_PROGRAM_ID as Eu}from"@solana/spl-token";import lr from"bn.js";var zt={initialize:Buffer.from([175,175,109,31,13,152,155,237]),buyExactIn:Buffer.from([250,234,13,123,213,156,19,236]),buyExactOut:Buffer.from([24,211,116,40,105,3,153,56]),sellExactIn:Buffer.from([149,39,222,155,211,124,152,26]),sellExactOut:Buffer.from([95,200,71,34,8,9,11,166]),createVestingAccount:Buffer.from([129,178,2,13,217,172,230,218]),claimVestedToken:Buffer.from([49,33,104,30,189,157,79,35]),createPlatformConfig:Buffer.from([176,90,196,175,253,113,220,20]),claimPlatformFee:Buffer.from([156,39,208,135,76,237,61,72]),updatePlaformConfig:Buffer.from([195,60,76,129,146,45,67,143]),initializeWithToken2022:Buffer.from([37,190,126,222,44,154,171,17]),claimPlatformFeeFromVault:Buffer.from([117,241,198,168,248,218,80,29]),claimCreatorFee:Buffer.from([26,97,138,203,132,171,141,252])};function Nm(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,k){let B=E([q("decimals"),vt("name"),vt("symbol"),vt("uri")]),T=E([w("totalLockedAmount"),w("cliffPeriod"),w("unlockPeriod")]),h=E([q("index"),w("supply"),w("totalFundRaisingB"),q("migrateType")]),S=E([q("index"),w("supply"),w("totalSellA"),w("totalFundRaisingB"),q("migrateType")]),x=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Eu,isSigner:!1,isWritable:!1},{pubkey:Eu,isSigner:!1,isWritable:!1},{pubkey:sn,isSigner:!1,isWritable:!1},{pubkey:$t.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:Ti(o).publicKey,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1}],K=Buffer.alloc(Buffer.from(p,"utf-8").length+Buffer.from(f,"utf-8").length+Buffer.from(y,"utf-8").length+4*3+1),I=Buffer.alloc(T.span),C=Buffer.alloc(b.type==="ConstantCurve"?S.span:h.span);return B.encode({decimals:d,name:p,symbol:f,uri:y},K),b.type==="ConstantCurve"?S.encode(U(M({index:0},b),{migrateType:b.migrateType==="amm"?0:1}),C):b.type==="FixedCurve"?h.encode(U(M({index:1},b),{migrateType:b.migrateType==="amm"?0:1}),C):b.type==="LinearCurve"&&h.encode(U(M({index:2},b),{migrateType:b.migrateType==="amm"?0:1}),C),T.encode({totalLockedAmount:g,cliffPeriod:P,unlockPeriod:k},I),new Xt({keys:x,programId:o,data:Buffer.from([...zt.initialize,...K,...C,...I])})}function Om(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,k){let B=E([q("decimals"),vt("name"),vt("symbol"),vt("uri")]),T=E([w("totalLockedAmount"),w("cliffPeriod"),w("unlockPeriod"),q("transferFeeExtensionParamsOption"),E([Dt("transferFeeBasePoints"),w("maxinumFee")]).replicate("transferFeeExtensionParams")]),h=E([q("index"),w("supply"),w("totalFundRaisingB"),q("migrateType")]),S=E([q("index"),w("supply"),w("totalSellA"),w("totalFundRaisingB"),q("migrateType")]),x=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Mb,isSigner:!1,isWritable:!1},{pubkey:Eu,isSigner:!1,isWritable:!1},{pubkey:$t.programId,isSigner:!1,isWritable:!1},{pubkey:Ti(o).publicKey,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1}],K=Buffer.alloc(Buffer.from(d,"utf-8").length+Buffer.from(p,"utf-8").length+Buffer.from(f,"utf-8").length+4*3+1),I=Buffer.alloc(T.span),C=Buffer.alloc(y.type==="ConstantCurve"?S.span:h.span);return B.encode({decimals:m,name:d,symbol:p,uri:f},K),y.type==="ConstantCurve"?S.encode(U(M({index:0},y),{migrateType:y.migrateType==="amm"?0:1}),C):y.type==="FixedCurve"?h.encode(U(M({index:1},y),{migrateType:y.migrateType==="amm"?0:1}),C):y.type==="LinearCurve"&&h.encode(U(M({index:2},y),{migrateType:y.migrateType==="amm"?0:1}),C),T.encode({totalLockedAmount:b,cliffPeriod:g,unlockPeriod:P,transferFeeExtensionParamsOption:k?1:0,transferFeeExtensionParams:k!=null?k:{transferFeeBasePoints:0,maxinumFee:new lr(0)}},I),new Xt({keys:x,programId:o,data:Buffer.from([...zt.initializeWithToken2022,...K,...C,...I])})}function Mm(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,k){let B=E([w("amountB"),w("minAmountA"),w("shareFeeRate")]),T=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,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:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:Ti(o).publicKey,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1}];k&&T.push({pubkey:k,isSigner:!1,isWritable:!0}),T.push({pubkey:$t.programId,isSigner:!1,isWritable:!1}),T.push({pubkey:f,isSigner:!1,isWritable:!0}),T.push({pubkey:y,isSigner:!1,isWritable:!0});let h=Buffer.alloc(B.span);return B.encode({amountB:b,minAmountA:g,shareFeeRate:P!=null?P:new lr(0)},h),new Xt({keys:T,programId:o,data:Buffer.from([...zt.buyExactIn,...h])})}function vm(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,k){let B=E([w("amountA"),w("maxAmountB"),w("shareFeeRate")]),T=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,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:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:Ti(o).publicKey,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1}];k&&T.push({pubkey:k,isSigner:!1,isWritable:!0}),T.push({pubkey:$t.programId,isSigner:!1,isWritable:!1}),T.push({pubkey:f,isSigner:!1,isWritable:!0}),T.push({pubkey:y,isSigner:!1,isWritable:!0});let h=Buffer.alloc(B.span);return B.encode({amountA:b,maxAmountB:g,shareFeeRate:P!=null?P:new lr(0)},h),new Xt({keys:T,programId:o,data:Buffer.from([...zt.buyExactOut,...h])})}function Fm(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,k){let B=E([w("amountA"),w("minAmountB"),w("shareFeeRate")]),T=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,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:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:Ti(o).publicKey,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1}];k&&T.push({pubkey:k,isSigner:!1,isWritable:!0}),T.push({pubkey:$t.programId,isSigner:!1,isWritable:!1}),T.push({pubkey:f,isSigner:!1,isWritable:!0}),T.push({pubkey:y,isSigner:!1,isWritable:!0});let h=Buffer.alloc(B.span);return B.encode({amountA:b,minAmountB:g,shareFeeRate:P!=null?P:new lr(0)},h),new Xt({keys:T,programId:o,data:Buffer.from([...zt.sellExactIn,...h])})}function Em(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,k){let B=E([w("amountB"),w("maxAmountA"),w("shareFeeRate")]),T=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,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:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:Ti(o).publicKey,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1}];k&&T.push({pubkey:k,isSigner:!1,isWritable:!0}),T.push({pubkey:$t.programId,isSigner:!1,isWritable:!1}),T.push({pubkey:f,isSigner:!1,isWritable:!0}),T.push({pubkey:y,isSigner:!1,isWritable:!0});let h=Buffer.alloc(B.span);return B.encode({amountB:b,maxAmountA:g,shareFeeRate:P!=null?P:new lr(0)},h),new Xt({keys:T,programId:o,data:Buffer.from([...zt.sellExactOut,...h])})}function _u(o,e,t,n,i,r,s,a,c){let u=E([]),l=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:$t.programId,isSigner:!1,isWritable:!1},{pubkey:Is,isSigner:!1,isWritable:!1}],m=Buffer.alloc(u.span);return u.encode({},m),new Xt({keys:l,programId:o,data:Buffer.from([...zt.claimVestedToken,...m])})}function Vu(o,e,t,n,i,r){let s=E([w("shareAmount")]),a=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:$t.programId,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);return s.encode({shareAmount:r},c),new Xt({keys:a,programId:o,data:Buffer.from([...zt.createVestingAccount,...c])})}function Du(o,e,t,n,i,r,s,a,c){let u=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:$t.programId,isSigner:!1,isWritable:!0},{pubkey:Is,isSigner:!1,isWritable:!0}];return new Xt({keys:u,programId:o,data:zt.claimPlatformFee})}function _m(o,e,t,n,i,r,s,a,c,u,l,m,d){let p=E([w("platformScale"),w("creatorScale"),w("burnScale"),w("feeRate"),vt("name"),vt("web"),vt("img"),w("creatorFeeRate")]),f=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:$t.programId,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1}],y=Buffer.alloc(8*5+Buffer.from(l,"utf-8").length+Buffer.from(m,"utf-8").length+Buffer.from(d,"utf-8").length+4*3);return p.encode({platformScale:a.platformScale,creatorScale:a.creatorScale,burnScale:a.burnScale,feeRate:c,name:l,web:m,img:d,creatorFeeRate:u},y),new Xt({keys:f,programId:o,data:Buffer.from([...zt.createPlatformConfig,...y])})}function Vm(o,e,t,n){let i=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0}],r;if(n.type==="updateClaimFeeWallet"){let s=E([q("index"),O("value")]);r=Buffer.alloc(s.span),s.encode({index:0,value:n.value},r)}else if(n.type==="updateLockNftWallet"){let s=E([q("index"),O("value")]);r=Buffer.alloc(s.span),s.encode({index:1,value:n.value},r)}else if(n.type==="migrateCpLockNftScale"){let s=E([q("index"),w("platformScale"),w("creatorScale"),w("burnScale")]);r=Buffer.alloc(s.span),s.encode(M({index:2},n.value),r)}else if(n.type==="updateFeeRate"){let s=E([q("index"),w("value")]);r=Buffer.alloc(s.span),s.encode({index:3,value:n.value},r)}else if(n.type==="updateImg"||n.type==="updateName"||n.type==="updateWeb"){let s=E([q("index"),vt("value")]);r=Buffer.alloc(Buffer.from(n.value,"utf-8").length+4+1*1),n.type==="updateName"?s.encode({index:4,value:n.value},r):n.type==="updateWeb"?s.encode({index:5,value:n.value},r):n.type==="updateImg"&&s.encode({index:6,value:n.value},r)}else if(n.type==="updateCpConfigId"){i.push({pubkey:n.value,isSigner:!1,isWritable:!1});let s=E([q("index")]);r=Buffer.alloc(s.span),s.encode({index:7},r)}else if(n.type==="updateAll"){i.push({pubkey:n.value.cpConfigId,isSigner:!1,isWritable:!1});let s=E([q("index"),O("platformClaimFeeWallet"),O("platformLockNftWallet"),w("platformScale"),w("creatorScale"),w("burnScale"),w("feeRate"),vt("name"),vt("web"),vt("img"),O("transferFeeExtensionAuth"),w("creatorFeeRate")]);r=Buffer.alloc(1+32+32+8*4+4*3+Buffer.from(n.value.name,"utf-8").length+Buffer.from(n.value.web,"utf-8").length+Buffer.from(n.value.img,"utf-8").length),s.encode({index:8,platformClaimFeeWallet:n.value.platformClaimFeeWallet,platformLockNftWallet:n.value.platformLockNftWallet,platformScale:n.value.migrateCpLockNftScale.platformScale,creatorScale:n.value.migrateCpLockNftScale.creatorScale,burnScale:n.value.migrateCpLockNftScale.burnScale,feeRate:n.value.feeRate,name:n.value.name,web:n.value.web,img:n.value.img,transferFeeExtensionAuth:n.value.transferFeeExtensionAuth,creatorFeeRate:n.value.creatorFeeRate},r)}else throw Error("updateInfo params type error");return new Xt({keys:i,programId:o,data:Buffer.from([...zt.updatePlaformConfig,...r])})}function Wu(o,e,t,n,i,r,s,a){let c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:$t.programId,isSigner:!1,isWritable:!1},{pubkey:Is,isSigner:!1,isWritable:!1}];return new Xt({keys:c,programId:o,data:zt.claimPlatformFeeFromVault})}function Dm(o,e,t,n,i,r,s){let a=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:$t.programId,isSigner:!1,isWritable:!1},{pubkey:Is,isSigner:!1,isWritable:!1}];return new Xt({keys:a,programId:o,data:zt.claimCreatorFee})}import{NATIVE_MINT as vn,TOKEN_2022_PROGRAM_ID as Bi,TOKEN_PROGRAM_ID as He,createAssociatedTokenAccountIdempotentInstruction as tn,getTransferFeeConfig as Rs,unpackMint as Ls}from"@solana/spl-token";import ce from"bn.js";import{PublicKey as Wm}from"@solana/web3.js";var ei=E([w(),w("epoch"),q("curveType"),Dt("index"),w("migrateFee"),w("tradeFeeRate"),w("maxShareFeeRate"),w("minSupplyA"),w("maxLockRate"),w("minSellRateA"),w("minMigrateRateA"),w("minFundRaisingB"),O("mintB"),O("protocolFeeOwner"),O("migrateFeeOwner"),O("migrateToAmmWallet"),O("migrateToCpmmWallet"),H(w(),16)]),vb=E([w("totalLockedAmount"),w("cliffPeriod"),w("unlockPeriod"),w("startTime"),w("totalAllocatedShare")]),pn=E([w(),w("epoch"),q("bump"),q("status"),q("mintDecimalsA"),q("mintDecimalsB"),q("migrateType"),w("supply"),w("totalSellA"),w("virtualA"),w("virtualB"),w("realA"),w("realB"),w("totalFundRaisingB"),w("protocolFee"),w("platformFee"),w("migrateFee"),vb.replicate("vestingSchedule"),O("configId"),O("platformId"),O("mintA"),O("mintB"),O("vaultA"),O("vaultB"),O("creator"),q("mintProgramFlag"),H(q(),63)]),H1=E([w(),w("epoch"),O("poolId"),O("beneficiary"),w("claimedAmount"),w("tokenShareAmount"),H(w(),8)]),$i=E([w(),w("epoch"),O("platformClaimFeeWallet"),O("platformLockNftWallet"),w("platformScale"),w("creatorScale"),w("burnScale"),w("feeRate"),H(q(),64,"name"),H(q(),256,"web"),H(q(),256,"img"),O("cpConfigId"),w("creatorFeeRate"),O("transferFeeExtensionAuth"),H(q(),184)]);import Jt from"bn.js";import Bs from"bn.js";var ti=class{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n}){throw Error()}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:i}){throw Error()}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:n}){throw Error()}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:n,totalFundRaising:i,migrateFee:r,decimalA:s,decimalB:a}){throw Error()}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:n}){throw Error()}static getInitParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:i,migrateFee:r}){throw Error()}static buyExactIn({poolInfo:e,amount:t}){throw Error()}static buyExactOut({poolInfo:e,amount:t}){throw Error()}static sellExactIn({poolInfo:e,amount:t}){throw Error()}static sellExactOut({poolInfo:e,amount:t}){throw Error()}};var xs=class extends ti{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n}){return new N(e.virtualB.toString()).div(e.virtualA.toString()).mul(10**(t-n))}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:i}){return new N(t.toString()).div(e.toString()).mul(10**(n-i))}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:n}){return new N(e.virtualB.add(e.realB).toString()).div(e.virtualA.sub(e.realA).toString()).mul(10**(t-n))}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:n,totalFundRaising:i,migrateFee:r,decimalA:s,decimalB:a}){return new N(i.sub(r).toString()).div(e.sub(t).sub(n).toString()).mul(10**(s-a))}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:n}){let i=e.totalSellA.sub(e.realA),r=e.totalFundRaisingB.sub(e.realB);return new N(e.virtualB.add(e.realB.add(r)).toString()).div(e.virtualA.sub(e.realA.add(i)).toString()).mul(10**(t-n))}static getInitParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:i,migrateFee:r}){if(e.lte(n))throw Error("supply need gt total sell");let s=e.sub(n).sub(i);if(s.lte(new Bs(0)))throw Error("supplyMinusSellLocked <= 0");let a=t.sub(r);if(a.lte(new Bs(0)))throw Error("tfMinusMf <= 0");let c=a.mul(n).mul(n).div(s),u=a.mul(n).div(s).sub(t),l=c.div(u),m=t.mul(t).div(u);if(l.lt(new Bs(0))||m.lt(new Bs(0)))throw Error("invalid input 0");return{a:l,b:m,c:n}}static buyExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,inputReserve:e.virtualB.add(e.realB),outputReserve:e.virtualA.sub(e.realA)})}static buyExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,inputReserve:e.virtualB.add(e.realB),outputReserve:e.virtualA.sub(e.realA)})}static sellExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,inputReserve:e.virtualA.sub(e.realA),outputReserve:e.virtualB.add(e.realB)})}static sellExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,inputReserve:e.virtualA.sub(e.realA),outputReserve:e.virtualB.add(e.realB)})}static getAmountOut({amountIn:e,inputReserve:t,outputReserve:n}){let i=e.mul(n),r=t.add(e);return i.div(r)}static getAmountIn({amountOut:e,inputReserve:t,outputReserve:n}){let i=t.mul(e),r=n.sub(e);return ui(i,r)}};import Ss from"bn.js";var Ks=class extends ti{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n}){return new N(e.virtualB.toString()).div(e.virtualA.toString()).mul(10**(t-n))}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:i}){return new N(t.toString()).div(e.toString()).mul(10**(n-i))}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:n}){return new N(e.virtualB.toString()).div(e.virtualA.toString()).mul(10**(t-n))}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:n,totalFundRaising:i,migrateFee:r,decimalA:s,decimalB:a}){return new N(i.sub(r).toString()).div(e.sub(t).sub(n).toString()).mul(10**(s-a))}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:n}){let i=e.totalSellA.sub(e.realA),r=e.totalFundRaisingB.sub(e.realB);return new N(e.virtualB.add(e.realB).add(r).toString()).div(e.virtualA.sub(e.realA).add(i).toString()).mul(10**(t-n))}static getInitParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:i,migrateFee:r}){let s=e.sub(i);if(s.lte(new Ss(0)))throw Error("invalid input 1");let a=new Ss(2).mul(t).sub(r),u=t.mul(s).div(a);if(u.lt(new Ss(0))||t.lt(new Ss(0)))throw Error("invalid input 0");return{a:u,b:t,c:u}}static buyExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,initInput:e.virtualB,initOutput:e.virtualA})}static buyExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,initInput:e.virtualB,initOutput:e.virtualA})}static sellExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,initInput:e.virtualA,initOutput:e.virtualB})}static sellExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,initInput:e.virtualA,initOutput:e.virtualB})}static getAmountOut({amountIn:e,initInput:t,initOutput:n}){return n.mul(e).div(t)}static getAmountIn({amountOut:e,initInput:t,initOutput:n}){let i=t.mul(e);return ui(i,n)}};import _t from"bn.js";import Ji from"bn.js";var mr=class{static _multipler(e){return new N(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new N(e.toString()).div(this._Q64).mul(this._multipler(t)).div(this._multipler(n))}static getPriceX64({price:e,decimalA:t,decimalB:n}){let i=e.mul(this._multipler(n)).div(this._multipler(t));return new Ji(i.mul(this._Q64).toFixed(0))}};mr._Q64=new N(new Ji(1).shln(64).toString());function dR({supply:o,totalFundRaisingB:e,totalLockedAmount:t,totalSellA:n,migrateType:i,decimalsA:r}){let s=o.sub(n).sub(t),a=new Ji(new N(s.mul(e).toString()).sqrt().toFixed(0));if(i==="amm"){if(a.gt(new Ji(10).pow(new Ji(r))))return!0}else if(i==="cpmm"){if(a.gt(new Ji(100)))return!0}else throw Error("migrate type error");return!1}var Cs=class extends ti{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n}){return new N(0)}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:i}){return new N(0)}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:n}){return new N(e.virtualA.mul(e.realA).toString()).div(mr._Q64).mul(10**(t-n))}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:n,totalFundRaising:i,migrateFee:r,decimalA:s,decimalB:a}){return new N(i.sub(r).toString()).div(e.sub(t).sub(n).toString()).mul(10**(s-a))}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:n}){let i=e.totalSellA.sub(e.realA),r=e.totalFundRaisingB.sub(e.realB);return new N(e.virtualB.add(e.realB).add(r).toString()).div(e.virtualA.sub(e.realA).add(i).toString()).mul(10**(t-n))}static getInitParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:i,migrateFee:r}){let s=e.sub(i);if(s.lte(new _t(0)))throw Error("supplyMinusLocked need gt 0");let a=t.mul(new _t(3)).sub(r),u=t.mul(new _t(2)).mul(s).div(a),l=u.mul(u),m=t.mul(new _t(2)).mul(lt).div(l);if(!m.gt(new _t(0)))throw Error("a need gt 0");if(!Eo.gt(m))throw Error("a need lt u64 max");if(m.lt(new _t(0))||u.lt(new _t(0)))throw Error("invalid input 0");return{a:m,b:new _t(0),c:u}}static buyExactIn({poolInfo:e,amount:t}){let n=e.realB.add(t),i=new _t(2).mul(n).mul(lt).div(e.virtualA);return new _t(new N(i.toString()).sqrt().toFixed(0)).sub(e.realA)}static buyExactOut({poolInfo:e,amount:t}){let n=e.realA.add(t),i=n.mul(n);return ui(e.virtualA.mul(i),new _t(2).mul(lt)).sub(e.realB)}static sellExactIn({poolInfo:e,amount:t}){let n=e.realA.sub(t),i=n.mul(n),r=ui(e.virtualA.mul(i),new _t(2).mul(lt));return e.realB.sub(r)}static sellExactOut({poolInfo:e,amount:t}){let n=e.realB.sub(t),i=new _t(2).mul(n).mul(lt).div(e.virtualA),r=new _t(new N(i.toString()).sqrt().toFixed(0));return e.realA.sub(r)}};var en=class{static getPoolCurvePointByPoolInfo({curveType:e,pointCount:t,poolInfo:n}){return this.getPoolCurvePointByInit({curveType:e,pointCount:t,supply:n.supply,totalFundRaising:n.totalFundRaisingB,totalSell:n.totalSellA,totalLockedAmount:n.vestingSchedule.totalLockedAmount,migrateFee:n.migrateFee,decimalA:n.mintDecimalsA,decimalB:n.mintDecimalsB})}static getPoolCurvePointByInit({curveType:e,pointCount:t,supply:n,totalFundRaising:i,totalSell:r,totalLockedAmount:s,migrateFee:a,decimalA:c,decimalB:u}){if(t<3)throw Error("point count < 3");let l=this.getCurve(e),m=l.getInitParam({supply:n,totalFundRaising:i,totalSell:r,totalLockedAmount:s,migrateFee:a}),d=l.getPoolInitPriceByInit(U(M({},m),{decimalA:c,decimalB:u})),p=i.div(new Jt(t-1)),f=new Jt(0),y=[{price:d,totalSellSupply:0}],{a:b,b:g}=m,P=f,k=f;for(let B=1;B<t;B++){let T=B!==t-1?p:i.sub(k),h=this.buyExactIn({poolInfo:{virtualA:b,virtualB:g,realA:P,realB:k,totalFundRaisingB:i,totalSellA:r},amountB:T,protocolFeeRate:f,platformFeeRate:f,curveType:e,shareFeeRate:f,creatorFeeRate:f,transferFeeConfigA:void 0,slot:0});P=P.add(h.amountA.amount),k=k.add(h.amountB);let S=this.getPrice({poolInfo:{virtualA:b,virtualB:g,realA:P,realB:k},decimalA:c,decimalB:u,curveType:e});y.push({price:S,totalSellSupply:new N(P.toString()).div(10**c).toNumber()})}return y}static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n,curveType:i}){return this.getCurve(i).getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n})}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:i,curveType:r}){return this.getCurve(r).getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:i})}static getPrice({poolInfo:e,curveType:t,decimalA:n,decimalB:i}){return this.getCurve(t).getPoolPrice({poolInfo:e,decimalA:n,decimalB:i})}static getEndPrice({poolInfo:e,curveType:t,decimalA:n,decimalB:i}){return this.getCurve(t).getPoolPrice({poolInfo:e,decimalA:n,decimalB:i})}static getPoolEndPriceReal({poolInfo:e,curveType:t,decimalA:n,decimalB:i}){return this.getCurve(t).getPoolEndPriceReal({poolInfo:e,decimalA:n,decimalB:i})}static checkParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:i,decimals:r,config:s,migrateType:a}){if(Number(r)!==6)throw Error("decimals = 6");if(e.mul(s.maxLockRate).div(cn).lt(i))throw Error("total lock amount gte max lock amount");if(e.lt(s.minSupplyA.mul(new Jt(10**r))))throw Error("supply lt min supply");let u=e.mul(s.minSellRateA).div(cn);if(n.lt(u))throw Error("invalid input");if(t.lt(s.minFundRaisingB))throw Error("total fund raising lt min fund raising");let l=e.sub(n).sub(i),m=e.mul(s.minMigrateRateA).div(cn);if(l.lt(m))throw Error("migrate lt min migrate amoount");let d=e.sub(n).sub(i),p=new Jt(new N(d.mul(t).toString()).sqrt().toFixed(0));if(a==="amm"){let f=new Jt(10).pow(new Jt(r));if(p.lte(f))throw Error("check migrate lp error")}else if(a==="cpmm"){let f=new Jt(100);if(p.lte(f))throw Error("check migrate lp error")}else throw Error("migrate type error")}static buyExactIn({poolInfo:e,amountB:t,protocolFeeRate:n,platformFeeRate:i,curveType:r,shareFeeRate:s,creatorFeeRate:a,transferFeeConfigA:c,slot:u}){let l=this.totalFeeRate({protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a}),m=this.calculateFee({amount:t,feeRate:l}),d=t.sub(m),p=this.getCurve(r),f=p.buyExactIn({poolInfo:e,amount:d}),y=e.totalSellA.sub(e.realA),b,g,P;if(f.gt(y)){b=y;let B=p.buyExactOut({poolInfo:e,amount:b});g=this.calculatePreFee({postFeeAmount:B,feeRate:l}),P=g.sub(B)}else b=f,g=t,P=m;let k=this.splitFee({totalFee:P,protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a});return{amountA:la(b,c,u),amountB:g,splitFee:k}}static buyExactOut({poolInfo:e,amountA:t,protocolFeeRate:n,platformFeeRate:i,curveType:r,shareFeeRate:s,creatorFeeRate:a,transferFeeConfigA:c,slot:u}){let l=e.totalSellA.sub(e.realA),m=ma(t,c,u),d=m.fee?m.amount.add(m.fee):m.amount;t.gt(l)&&(d=l);let f=this.getCurve(r).buyExactOut({poolInfo:e,amount:d}),y=this.totalFeeRate({protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a}),b=this.calculatePreFee({postFeeAmount:f,feeRate:y}),g=b.sub(f),P=this.splitFee({totalFee:g,protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a});return{amountA:m,amountB:b,splitFee:P}}static sellExactIn({poolInfo:e,amountA:t,protocolFeeRate:n,platformFeeRate:i,curveType:r,shareFeeRate:s,creatorFeeRate:a,transferFeeConfigA:c,slot:u}){let l=this.getCurve(r),m=la(t,c,u),d=m.fee?m.amount.sub(m.fee):m.amount,p=l.sellExactIn({poolInfo:e,amount:d}),f=this.calculateFee({amount:p,feeRate:this.totalFeeRate({protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a})}),y=this.splitFee({totalFee:f,protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a});return{amountA:m,amountB:p.sub(f),splitFee:y}}static sellExactOut({poolInfo:e,amountB:t,protocolFeeRate:n,platformFeeRate:i,curveType:r,shareFeeRate:s,creatorFeeRate:a,transferFeeConfigA:c,slot:u}){let l=this.totalFeeRate({protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a}),m=this.calculatePreFee({postFeeAmount:t,feeRate:l});if(e.realB.lt(m))throw Error("Insufficient liquidity");let d=m.sub(t),f=en.getCurve(r).sellExactOut({poolInfo:e,amount:m});if(f.gt(e.realA))throw Error();let y=this.splitFee({totalFee:d,protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a});return{amountA:ma(f,c,u),amountB:t,splitFee:y}}static splitFee({totalFee:e,protocolFeeRate:t,platformFeeRate:n,shareFeeRate:i,creatorFeeRate:r}){let s=this.totalFeeRate({protocolFeeRate:t,platformFeeRate:n,shareFeeRate:i,creatorFeeRate:r}),a=s.isZero()?new Jt(0):e.mul(n).div(s),c=s.isZero()?new Jt(0):e.mul(i).div(s),u=s.isZero()?new Jt(0):e.mul(r).div(s),l=e.sub(a).sub(c).sub(u);return{platformFee:a,shareFee:c,protocolFee:l,creatorFee:u}}static calculateFee({amount:e,feeRate:t}){return Rr(e,t,cn)}static calculatePreFee({postFeeAmount:e,feeRate:t}){if(t.isZero())return e;let n=e.mul(cn),i=cn.sub(t);return n.add(i).sub(new Jt(1)).div(i)}static totalFeeRate({protocolFeeRate:e,platformFeeRate:t,shareFeeRate:n,creatorFeeRate:i}){if(e.add(t).add(n).add(i).gt(new Jt(1e6)))throw Error("total fee rate gt 1_000_000");return e.add(t).add(n).add(i)}static getCurve(e){switch(e){case 0:return xs;case 1:return Ks;case 2:return Cs}throw Error("find curve error")}};var xi={initPriceX64:new ce("515752397214619"),supply:new ce(1e15),totalSellA:new ce(7931e11),totalFundRaisingB:new ce(85e9),totalLockedAmount:new ce("0"),cliffPeriod:new ce("0"),unlockPeriod:new ce("0"),decimals:6,virtualA:new ce("1073471847374405"),virtualB:new ce("30050573465"),realA:new ce(0),realB:new ce(0),protocolFee:new ce(0),platformId:new Wm("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new ce(0),cliffPeriod:new ce(0),unlockPeriod:new ce(0),startTime:new ce(0),totalAllocatedShare:new ce(0)}},ni=new ce(1e4),dr=class extends De{constructor(e){super(e)}async createLaunchpad(C){var F=C,{programId:e=yt,authProgramId:t,platformId:n=xi.platformId,mintA:i,decimals:r=6,mintBDecimals:s=9,name:a,symbol:c,uri:u,migrateType:l,configId:m,configInfo:d,platformFeeRate:p,txVersion:f,computeBudgetConfig:y,txTipConfig:b,feePayer:g,buyAmount:P,minMintAAmount:k,slippage:B,associatedOnly:T=!0,checkCreateATAOwner:h=!1,extraSigners:S,token2022:x,transferFeeExtensionParams:K}=F,I=ze(F,["programId","authProgramId","platformId","mintA","decimals","mintBDecimals","name","symbol","uri","migrateType","configId","configInfo","platformFeeRate","txVersion","computeBudgetConfig","txTipConfig","feePayer","buyAmount","minMintAAmount","slippage","associatedOnly","checkCreateATAOwner","extraSigners","token2022","transferFeeExtensionParams"]);var no,io,oo,ro,Vt,fr,Gu,Xu,zu,Qu;let v=this.createTxBuilder(g);t=t!=null?t:wn(e).publicKey,x=!!K,x&&(l="cpmm");let R=d;if(!R&&m){let fn=await this.scope.connection.getAccountInfo(m);fn&&(R=ei.decode(fn.data))}R||this.logAndCreateError("config not found");let L=R.mintB,V=R.curveType,{publicKey:Y}=ji(e,i,L),{publicKey:te}=Mu(e,Y,i),{publicKey:le}=Mu(e,Y,L),{publicKey:Ie}=Rn(i);this.logDebug(`create token: ${i.toBase58()}, mintB: ${L.toBase58()}, decimals A:${r}/B:${s}, config:${m.toBase58()}`),c.length>10&&this.logAndCreateError("Symbol length should shorter than 11"),u||this.logAndCreateError("uri should not empty");let pe=(no=I==null?void 0:I.supply)!=null?no:xi.supply,Ae=(io=I==null?void 0:I.totalSellA)!=null?io:xi.totalSellA,we=(oo=I==null?void 0:I.totalFundRaisingB)!=null?oo:xi.totalFundRaisingB,be=(ro=I==null?void 0:I.totalLockedAmount)!=null?ro:new ce(0),re=p;if(!p){let fn=await this.scope.connection.getAccountInfo(n);fn||this.logAndCreateError("platform id not found:",n.toString()),re=$i.decode(fn.data).feeRate}let Se=en.getCurve(R.curveType).getInitParam({supply:pe,totalFundRaising:we,totalSell:Ae,totalLockedAmount:be,migrateFee:R.migrateFee}),je={epoch:new ce(896),bump:254,status:0,mintDecimalsA:r,mintDecimalsB:s,supply:pe,totalSellA:Ae,mintA:new Wm(i),mintB:L,virtualA:Se.a,virtualB:Se.b,realA:xi.realA,realB:xi.realB,migrateFee:R.migrateFee,migrateType:l==="amm"?0:1,protocolFee:xi.protocolFee,platformFee:re,platformId:n,configId:m,vaultA:te,vaultB:le,creator:this.scope.ownerPubKey,totalFundRaisingB:we,vestingSchedule:{totalLockedAmount:be,cliffPeriod:new ce(0),unlockPeriod:new ce(0),startTime:new ce(0),totalAllocatedShare:new ce(0)},mintProgramFlag:x?1:0},ii=en.getCurve(R.curveType),{c:kn}=ii.getInitParam({supply:je.supply,totalFundRaising:je.totalFundRaisingB,totalLockedAmount:be,totalSell:R.curveType===0?je.totalSellA:new ce(0),migrateFee:R.migrateFee});try{en.checkParam({supply:je.supply,totalFundRaising:je.totalFundRaisingB,totalSell:kn,totalLockedAmount:be,decimals:je.mintDecimalsA,config:R,migrateType:l}),this.logDebug("check init params success")}catch(fn){this.logAndCreateError(`check create mint params failed, ${fn.message}`)}v.addInstruction({instructions:[x?Om(e,g!=null?g:this.scope.ownerPubKey,this.scope.ownerPubKey,m,n,t,Y,i,L,te,le,r,a,c,u||"https://",{type:V===0?"ConstantCurve":V===1?"FixedCurve":V===2?"LinearCurve":"ConstantCurve",totalSellA:Ae,migrateType:l,supply:pe,totalFundRaisingB:we},be,(Vt=I==null?void 0:I.cliffPeriod)!=null?Vt:new ce(0),(fr=I==null?void 0:I.unlockPeriod)!=null?fr:new ce(0),K):Nm(e,g!=null?g:this.scope.ownerPubKey,this.scope.ownerPubKey,m,n,t,Y,i,L,te,le,Ie,r,a,c,u||"https://",{type:V===0?"ConstantCurve":V===1?"FixedCurve":V===2?"LinearCurve":"ConstantCurve",totalSellA:Ae,migrateType:l,supply:pe,totalFundRaisingB:we},be,(Gu=I==null?void 0:I.cliffPeriod)!=null?Gu:new ce(0),(Xu=I==null?void 0:I.unlockPeriod)!=null?Xu:new ce(0))]});let st=x?await this.scope.connection.getEpochInfo():void 0,Fn=K?{epoch:BigInt((st==null?void 0:st.epoch)||0),maximumFee:BigInt((zu=K==null?void 0:K.maxinumFee.toString())!=null?zu:0),transferFeeBasisPoints:(Qu=K==null?void 0:K.transferFeeBasePoints)!=null?Qu:0}:void 0,eo={amountA:{amount:new ce(0),fee:void 0,expirationTime:void 0},amountB:new ce(0),splitFee:{platformFee:new ce(0),shareFee:new ce(0),protocolFee:new ce(0),creatorFee:new ce(0)}},to;if(S!=null&&S.length&&v.addInstruction({signers:S}),!I.createOnly){let{builder:fn,extInfo:qm}=await this.buyToken({programId:e,authProgramId:t,mintAProgram:x?Bi:void 0,mintA:i,mintB:L,poolInfo:je,buyAmount:P,minMintAAmount:k,shareFeeRate:I.shareFeeRate,shareFeeReceiver:I.shareFeeReceiver,configInfo:R,platformFeeRate:re,slippage:B,associatedOnly:T,checkCreateATAOwner:h,skipCheckMintA:!Fn,transferFeeConfigA:Fn?{transferFeeConfigAuthority:t,withdrawWithheldAuthority:t,withheldAmount:BigInt(0),olderTransferFee:Fn,newerTransferFee:Fn}:void 0});v.addInstruction(M({},fn.AllTxData)),eo=M({},qm),to=(this.scope.cluster==="devnet"||f===1)&&I.shareFeeReceiver?[fn.allInstructions[0]]:void 0}return v.addTipInstruction(b),f===0?v.sizeCheckBuildV0({computeBudgetConfig:y,swapInfo:eo,splitIns:to,address:U(M({},je),{poolId:Y})}):v.sizeCheckBuild({computeBudgetConfig:y,swapInfo:eo,splitIns:to,address:U(M({},je),{poolId:Y})})}async buyToken({programId:e=yt,authProgramId:t,mintA:n,mintAProgram:i=He,mintB:r=vn,poolInfo:s,configInfo:a,platformFeeRate:c,txVersion:u,computeBudgetConfig:l,txTipConfig:m,feePayer:d,buyAmount:p,minMintAAmount:f,slippage:y,shareFeeRate:b=new ce(0),shareFeeReceiver:g,associatedOnly:P=!0,checkCreateATAOwner:k=!1,transferFeeConfigA:B,skipCheckMintA:T=!1}){var be,re,Ue;p.lte(new ce(0))&&this.logAndCreateError("buy amount should gt 0:",p.toString());let h=this.createTxBuilder(d),{publicKey:S}=ji(e,n,r);t=t!=null?t:wn(e).publicKey;let x=B;if(!T)if(x)i=Bi;else{let Se=await this.scope.connection.getAccountInfo(n);if(Se&&Se.owner.equals(Bi)){i=Se.owner;let je=Ls(n,Se,i);x=Rs(je)||void 0}}let K=this.scope.account.getAssociatedTokenAccount(n,i),I=null,C=r.equals(vn);h.addInstruction({instructions:[tn(this.scope.ownerPubKey,K,this.scope.ownerPubKey,n,i)]});let{account:F,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({mint:r,owner:this.scope.ownerPubKey,createInfo:C?{payer:this.scope.ownerPubKey,amount:p}:void 0,skipCloseAccount:!C,notUseTokenAccount:C,associatedOnly:C?!1:P,checkCreateATAOwner:k});F&&(I=F),h.addInstruction(v||{}),I===void 0&&this.logAndCreateError(`cannot found mintB(${r.toBase58()}) token accounts`,"tokenAccounts",this.scope.account.tokenAccounts);let R=s;if(!R){let Se=await this.scope.connection.getAccountInfo(S,{commitment:"processed"});Se||this.logAndCreateError("cannot found pool:",S.toBase58()),R=pn.decode(Se.data)}let L=a,V=await Fe(this.scope.connection,[L?void 0:R.configId,R.platformId].filter(Boolean).map(Se=>({pubkey:Se})));if(!L){let Se=V.find(je=>je.pubkey.equals(R.configId));(!Se||!Se.accountInfo)&&this.logAndCreateError("config not found: ",R.configId.toBase58()),L=ei.decode(Se.accountInfo.data)}let Y=V.find(Se=>Se.pubkey.equals(R.platformId));(!Y||!Y.accountInfo)&&this.logAndCreateError("platform info not found: ",R.configId.toBase58());let te=$i.decode(Y.accountInfo.data);c=c||te.feeRate;let le=en.buyExactIn({poolInfo:R,amountB:p,protocolFeeRate:L.tradeFeeRate,platformFeeRate:c,curveType:L.curveType,shareFeeRate:b,creatorFeeRate:te.creatorFeeRate,transferFeeConfigA:x,slot:await this.scope.connection.getSlot()}),Ie=new N(le.amountA.amount.toString()).sub((re=(be=le.amountA.fee)==null?void 0:be.toString())!=null?re:0),pe=y?new N(ni.sub(y).toNumber()/ni.toNumber()).clampedTo(0,1):new N(1),Ae=f!=null?f:y?new ce(Ie.mul(pe).toFixed(0)):le.amountA.amount.sub((Ue=le.amountA.fee)!=null?Ue:new ce(0));le.amountB.lt(p)&&console.log(`maximum ${n.toBase58()} amount can buy is ${le.amountA.toString()}, input ${r.toBase58()} amount: ${le.amountB.toString()}`);let we=g?Z(g,r,He).publicKey:void 0;return we&&h.addInstruction({instructions:[tn(this.scope.ownerPubKey,we,g,r)]}),h.addInstruction({instructions:[Mm(e,this.scope.ownerPubKey,t,R.configId,R.platformId,S,K,I,R.vaultA,R.vaultB,n,r,i,He,Ii(e,R.platformId,r).publicKey,Zi(e,R.creator,r).publicKey,le.amountB.lt(p)?le.amountB:p,Ae,b,we)]}),h.addCustomComputeBudget(l),h.addTipInstruction(m),h.versionBuild({txVersion:u,extInfo:U(M({},le),{decimalOutAmount:Ie,minDecimalOutAmount:new N(Ae.toString())})})}async buyTokenExactOut({programId:e=yt,authProgramId:t,mintA:n,mintAProgram:i=He,mintB:r=vn,poolInfo:s,configInfo:a,transferFeeConfigA:c,platformFeeRate:u,txVersion:l,computeBudgetConfig:m,txTipConfig:d,feePayer:p,maxBuyAmount:f,outAmount:y,slippage:b,shareFeeRate:g=new ce(0),shareFeeReceiver:P,associatedOnly:k=!0,checkCreateATAOwner:B=!1,skipCheckMintA:T=!1}){y.lte(new ce(0))&&this.logAndCreateError("out amount should gt 0:",y.toString());let h=this.createTxBuilder(p),{publicKey:S}=ji(e,n,r);t=t!=null?t:wn(e).publicKey;let x=s;if(!x){let be=await this.scope.connection.getAccountInfo(S,{commitment:"processed"});be||this.logAndCreateError("cannot found pool:",S.toBase58()),x=pn.decode(be.data)}let K=a,I=await Fe(this.scope.connection,[K?void 0:x.configId,x.platformId].filter(Boolean).map(be=>({pubkey:be})));if(!K){let be=I.find(re=>re.pubkey.equals(x.configId));(!be||!be.accountInfo)&&this.logAndCreateError("config not found: ",x.configId.toBase58()),K=ei.decode(be.accountInfo.data)}let C=I.find(be=>be.pubkey.equals(x.platformId));(!C||!C.accountInfo)&&this.logAndCreateError("platform info not found: ",x.configId.toBase58());let F=$i.decode(C.accountInfo.data);u=u||F.feeRate;let v=c;if(!T)if(v)i=Bi;else{let be=await this.scope.connection.getAccountInfo(n);if(be&&be.owner.equals(Bi)){i=be.owner;let re=Ls(n,be,i);v=Rs(re)||void 0}}let R=en.buyExactOut({poolInfo:x,amountA:y,protocolFeeRate:K.tradeFeeRate,platformFeeRate:u,curveType:K.curveType,shareFeeRate:g,creatorFeeRate:F.creatorFeeRate,transferFeeConfigA:v,slot:await this.scope.connection.getSlot()}),L=new N(R.amountB.toString()),V=b?new N(ni.add(b).toNumber()/ni.toNumber()).clampedTo(0,Number.MIN_SAFE_INTEGER):new N(1),Y=(f!=null?f:b)?new ce(L.mul(V).toFixed(0)):R.amountB,te=this.scope.account.getAssociatedTokenAccount(n,i),le=null,Ie=r.equals(vn);h.addInstruction({instructions:[tn(this.scope.ownerPubKey,te,this.scope.ownerPubKey,n,i)]});let{account:pe,instructionParams:Ae}=await this.scope.account.getOrCreateTokenAccount({mint:r,owner:this.scope.ownerPubKey,createInfo:Ie?{payer:this.scope.ownerPubKey,amount:R.amountB}:void 0,skipCloseAccount:!Ie,notUseTokenAccount:Ie,associatedOnly:Ie?!1:k,checkCreateATAOwner:B});pe&&(le=pe),h.addInstruction(Ae||{}),le===void 0&&this.logAndCreateError(`cannot found mintB(${r.toBase58()}) token accounts`,"tokenAccounts",this.scope.account.tokenAccounts);let we=P?Z(P,r,He).publicKey:void 0;return we&&h.addInstruction({instructions:[tn(this.scope.ownerPubKey,we,P,r)]}),h.addInstruction({instructions:[vm(e,this.scope.ownerPubKey,t,x.configId,x.platformId,S,te,le,x.vaultA,x.vaultB,n,r,i,He,Ii(e,x.platformId,r).publicKey,Zi(e,x.creator,r).publicKey,y,Y,g,we)]}),h.addCustomComputeBudget(m),h.addTipInstruction(d),h.versionBuild({txVersion:l,extInfo:{maxSpentAmount:Y,outAmount:y}})}async sellToken({programId:e=yt,authProgramId:t,mintAProgram:n=He,mintA:i,mintB:r=vn,poolInfo:s,configInfo:a,platformFeeRate:c,txVersion:u,computeBudgetConfig:l,txTipConfig:m,feePayer:d,sellAmount:p,minAmountB:f,slippage:y,shareFeeRate:b=new ce(0),shareFeeReceiver:g,associatedOnly:P=!0,checkCreateATAOwner:k=!1,skipCheckMintA:B=!1}){t=t!=null?t:wn(e).publicKey;let T=this.createTxBuilder(d);p.lte(new ce(0))&&this.logAndCreateError("sell amount should be gt 0");let{publicKey:h}=ji(e,i,r),S;if(!B){let re=await this.scope.connection.getAccountInfo(i);if(re&&re.owner.equals(Bi)){n=re.owner;let Ue=Ls(i,re,n);S=Rs(Ue)||void 0}}let x=null,K=null,I=r.equals(vn),{account:C,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n,mint:i,owner:this.scope.ownerPubKey,createInfo:void 0,skipCloseAccount:!0,notUseTokenAccount:!1,associatedOnly:P,checkCreateATAOwner:k});C&&(x=C),T.addInstruction(F||{}),x===void 0&&this.logAndCreateError("cannot found mintA token accounts","tokenAccounts",this.scope.account.tokenAccounts);let{account:v,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({mint:r,owner:this.scope.ownerPubKey,createInfo:I?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!I,notUseTokenAccount:I,associatedOnly:I?!1:P,checkCreateATAOwner:k});v&&(K=v),T.addInstruction(R||{}),K===void 0&&this.logAndCreateError("cannot found mintB token accounts","tokenAccounts",this.scope.account.tokenAccounts);let L=s;if(!L){let re=await this.scope.connection.getAccountInfo(h,{commitment:"processed"});re||this.logAndCreateError("cannot found pool",h.toBase58()),L=pn.decode(re.data)}let V=a,Y=await Fe(this.scope.connection,[V?void 0:L.configId,L.platformId].filter(Boolean).map(re=>({pubkey:re})));if(!V){let re=Y.find(Ue=>Ue.pubkey.equals(L.configId));(!re||!re.accountInfo)&&this.logAndCreateError("config not found: ",L.configId.toBase58()),V=ei.decode(re.accountInfo.data)}let te=Y.find(re=>re.pubkey.equals(L.platformId));(!te||!te.accountInfo)&&this.logAndCreateError("platform info not found: ",L.configId.toBase58());let le=$i.decode(te.accountInfo.data);c=c||le.feeRate;let Ie=en.sellExactIn({poolInfo:L,amountA:p,protocolFeeRate:V.tradeFeeRate,platformFeeRate:c,curveType:V.curveType,shareFeeRate:b,creatorFeeRate:le.creatorFeeRate,transferFeeConfigA:S,slot:await this.scope.connection.getSlot()}),pe=new N(Ie.amountB.toString()),Ae=y?new N(ni.sub(y).toNumber()/ni.toNumber()).clampedTo(0,1):new N(1),we=f!=null?f:y?new ce(pe.mul(Ae).toFixed(0)):Ie.amountB;we.lte(new ce(0))&&this.logAndCreateError(`out ${r.toBase58()} amount should be gt 0`);let be=g?Z(g,r,He).publicKey:void 0;return be&&T.addInstruction({instructions:[tn(this.scope.ownerPubKey,be,g,r)]}),T.addInstruction({instructions:[Fm(e,this.scope.ownerPubKey,t,L.configId,L.platformId,h,x,K,L.vaultA,L.vaultB,i,r,n,He,Ii(e,L.platformId,r).publicKey,Zi(e,L.creator,r).publicKey,Ie.amountA.amount.lt(p)?Ie.amountA.amount:p,we,b,be)]}),T.addCustomComputeBudget(l),T.addTipInstruction(m),T.versionBuild({txVersion:u,extInfo:{outAmount:we}})}async sellTokenExactOut({programId:e=yt,authProgramId:t,mintAProgram:n=He,mintA:i,mintB:r=vn,poolInfo:s,configInfo:a,platformFeeRate:c,txVersion:u,computeBudgetConfig:l,txTipConfig:m,feePayer:d,inAmount:p,maxSellAmount:f,slippage:y,shareFeeRate:b=new ce(0),shareFeeReceiver:g,associatedOnly:P=!0,checkCreateATAOwner:k=!1,skipCheckMintA:B=!1}){t=t!=null?t:wn(e).publicKey;let T=this.createTxBuilder(d);f!=null&&f.lte(new ce(0))&&this.logAndCreateError("max sell amount should be gt 0");let{publicKey:h}=ji(e,i,r),S;if(!B){let re=await this.scope.connection.getAccountInfo(i);if(re&&re.owner.equals(Bi)){n=re.owner;let Ue=Ls(i,re,n);S=Rs(Ue)||void 0}}let x=null,K=null,I=r.equals(vn),{account:C,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n,mint:i,owner:this.scope.ownerPubKey,createInfo:void 0,skipCloseAccount:!0,notUseTokenAccount:!1,associatedOnly:P,checkCreateATAOwner:k});C&&(x=C),T.addInstruction(F||{}),x===void 0&&this.logAndCreateError("cannot found mintA token accounts","tokenAccounts",this.scope.account.tokenAccounts);let{account:v,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({mint:r,owner:this.scope.ownerPubKey,createInfo:I?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!I,notUseTokenAccount:I,associatedOnly:I?!1:P,checkCreateATAOwner:k});v&&(K=v),T.addInstruction(R||{}),K===void 0&&this.logAndCreateError("cannot found mintB token accounts","tokenAccounts",this.scope.account.tokenAccounts);let L=s;if(!L){let re=await this.scope.connection.getAccountInfo(h,{commitment:"processed"});re||this.logAndCreateError("cannot found pool",h.toBase58()),L=pn.decode(re.data)}let V=a,Y=await Fe(this.scope.connection,[V?void 0:L.configId,L.platformId].filter(Boolean).map(re=>({pubkey:re})));if(!V){let re=Y.find(Ue=>Ue.pubkey.equals(L.configId));(!re||!re.accountInfo)&&this.logAndCreateError("config not found: ",L.configId.toBase58()),V=ei.decode(re.accountInfo.data)}let te=Y.find(re=>re.pubkey.equals(L.platformId));(!te||!te.accountInfo)&&this.logAndCreateError("platform info not found: ",L.configId.toBase58());let le=$i.decode(te.accountInfo.data);c=c||le.feeRate;let Ie=en.sellExactOut({poolInfo:L,amountB:p,protocolFeeRate:V.tradeFeeRate,platformFeeRate:c,curveType:V.curveType,shareFeeRate:b,creatorFeeRate:le.creatorFeeRate,transferFeeConfigA:S,slot:await this.scope.connection.getSlot()}),pe=new N(Ie.amountA.amount.toString()),Ae=y?new N(ni.add(y).toNumber()/ni.toNumber()).clampedTo(0,Number.MAX_SAFE_INTEGER):new N(1),we=(f!=null?f:y)?new ce(pe.mul(Ae).toFixed(0)):Ie.amountA.amount,be=g?Z(g,r,He).publicKey:void 0;return be&&T.addInstruction({instructions:[tn(this.scope.ownerPubKey,be,g,r)]}),T.addInstruction({instructions:[Em(e,this.scope.ownerPubKey,t,L.configId,L.platformId,h,x,K,L.vaultA,L.vaultB,i,r,n,He,Ii(e,L.platformId,r).publicKey,Zi(e,L.creator,r).publicKey,p,we,b,be)]}),T.addCustomComputeBudget(l),T.addTipInstruction(m),T.versionBuild({txVersion:u,extInfo:{maxSellAmount:we}})}async createPlatformConfig({programId:e=yt,platformAdmin:t,platformClaimFeeWallet:n,platformLockNftWallet:i,cpConfigId:r,migrateCpLockNftScale:s,transferFeeExtensionAuth:a,creatorFeeRate:c,feeRate:u,name:l,web:m,img:d,txVersion:p,computeBudgetConfig:f,txTipConfig:y,feePayer:b}){let g=this.createTxBuilder(b),{publicKey:P}=vu(e,t);return g.addInstruction({instructions:[_m(e,t,n,i,P,r,a,s,u,c,l,m,d)]}),g.addCustomComputeBudget(f),g.addTipInstruction(y),g.versionBuild({txVersion:p,extInfo:{platformId:P}})}async updatePlatformConfig({programId:e=yt,platformAdmin:t,platformId:n,updateInfo:i,txVersion:r,computeBudgetConfig:s,txTipConfig:a,feePayer:c}){let u=this.createTxBuilder(c),l=n!=null?n:vu(e,t).publicKey;return u.addInstruction({instructions:[Vm(e,t,l,i)]}),u.addCustomComputeBudget(s),u.addTipInstruction(a),u.versionBuild({txVersion:r})}async claimPlatformFee({programId:e=yt,authProgramId:t,platformId:n,poolId:i,platformClaimFeeWallet:r,mintB:s,vaultB:a,mintBProgram:c=He,txVersion:u,computeBudgetConfig:l,txTipConfig:m,feePayer:d}){var g;let p=this.createTxBuilder(d);t=t!=null?t:wn(e).publicKey;let f=s,y=a;if(!f){let P=await this.scope.connection.getAccountInfo(i,{commitment:"processed"});P||this.logAndCreateError("cannot found pool:",i.toBase58());let k=pn.decode(P.data),B=await this.scope.connection.getAccountInfo(k.configId,{commitment:"processed"});B||this.logAndCreateError("cannot found config:",k.configId.toBase58()),f=ei.decode(B.data).mintB,y=y!=null?y:k.vaultB}(!f||!y)&&this.logAndCreateError("cannot found mint info, mintB: ",f.toBase58(),", vaultB: ",(g=y==null?void 0:y.toBase58())!=null?g:"");let b=Z(this.scope.ownerPubKey,f,He).publicKey;return p.addInstruction({instructions:[tn(this.scope.ownerPubKey,b,this.scope.ownerPubKey,f)]}),p.addInstruction({instructions:[Du(e,r,t,i,n,y,b,f,c)]}),p.addCustomComputeBudget(l),p.addTipInstruction(m),p.versionBuild({txVersion:u})}async claimAllPlatformFee({programId:e=yt,authProgramId:t,platformId:n,platformClaimFeeWallet:i,txVersion:r,computeBudgetConfig:s,txTipConfig:a,feePayer:c}){let u=this.createTxBuilder(c);return t=t!=null?t:wn(e).publicKey,(await this.scope.connection.getProgramAccounts(e,{filters:[{dataSize:pn.span},{memcmp:{offset:pn.offsetOf("platformId"),bytes:n.toString()}}]})).forEach(m=>{let d=pn.decode(m.account.data);if(d.platformFee.lte(new ce(0)))return;let p=Z(this.scope.ownerPubKey,d.mintB,He).publicKey;u.addInstruction({instructions:[tn(this.scope.ownerPubKey,p,this.scope.ownerPubKey,d.mintB)]}),u.addInstruction({instructions:[Du(e,i,t,m.pubkey,n,d.vaultB,p,d.mintB,He)]})}),u.addTipInstruction(a),r===0?u.sizeCheckBuildV0({computeBudgetConfig:s}):u.sizeCheckBuild({computeBudgetConfig:s})}async createVesting({programId:e=yt,poolId:t,beneficiary:n,shareAmount:i,txVersion:r,computeBudgetConfig:s,txTipConfig:a,feePayer:c}){let u=this.createTxBuilder(c),l=await this.getRpcPoolInfo({poolId:t});i.add(l.vestingSchedule.totalAllocatedShare).gt(l.vestingSchedule.totalLockedAmount)&&this.logAndCreateError("share amount exceed total locked amount");let m=cr(e,t,n).publicKey;return u.addInstruction({instructions:[Vu(e,this.scope.ownerPubKey,n,t,m,i)]}),u.addCustomComputeBudget(s),u.addTipInstruction(a),u.versionBuild({txVersion:r})}async createMultipleVesting({programId:e=yt,poolId:t,beneficiaryList:n,txVersion:i,computeBudgetConfig:r,feePayer:s}){let a=this.createTxBuilder(s);n.length===0&&this.logAndCreateError("beneficiaryList is null");let c=await this.getRpcPoolInfo({poolId:t});return n.reduce((l,m)=>l.add(m.shareAmount),c.vestingSchedule.totalAllocatedShare).gt(c.vestingSchedule.totalLockedAmount)&&this.logAndCreateError("share amount exceed total locked amount"),n.forEach(l=>{let m=cr(e,t,l.wallet).publicKey;a.addInstruction({instructions:[Vu(e,this.scope.ownerPubKey,l.wallet,t,m,l.shareAmount)]})}),i===0?a.sizeCheckBuildV0({computeBudgetConfig:r}):a.sizeCheckBuild({computeBudgetConfig:r})}async claimVesting({programId:e=yt,poolId:t,poolInfo:n,vestingRecord:i,txVersion:r,computeBudgetConfig:s,txTipConfig:a,feePayer:c}){let u=this.createTxBuilder(c),l=wn(e).publicKey,m=i||cr(e,t,this.scope.ownerPubKey).publicKey,d=n;if(!d){let f=await this.scope.connection.getAccountInfo(t);f||this.logAndCreateError("pool not found"),d=pn.decode(f.data)}let p=Z(this.scope.ownerPubKey,d.mintA,He).publicKey;return u.addInstruction({instructions:[tn(this.scope.ownerPubKey,p,this.scope.ownerPubKey,d.mintA)]}),u.addInstruction({instructions:[_u(e,this.scope.ownerPubKey,l,t,m,p,d.vaultA,d.mintA,He)]}),u.addCustomComputeBudget(s),u.addTipInstruction(a),u.versionBuild({txVersion:r})}async claimMultiVesting({programId:e=yt,poolIdList:t,poolsInfo:n={},vestingRecords:i={},txVersion:r,computeBudgetConfig:s,feePayer:a}){let c=this.createTxBuilder(a),u=M({},n),l=wn(e).publicKey,m=t.filter(d=>!u[d.toBase58()]);if(m.length){let d=await this.getRpcPoolsInfo({poolIdList:m});u=M(M({},u),d.poolInfoMap)}return t.forEach(d=>{let p=d.toBase58(),f=u[p];f||this.logAndCreateError(`pool info not found: ${p}`);let y=i[p]||cr(e,d,this.scope.ownerPubKey).publicKey,b=Z(this.scope.ownerPubKey,f.mintA,He).publicKey;c.addInstruction({instructions:[tn(this.scope.ownerPubKey,b,this.scope.ownerPubKey,f.mintA)]}),c.addInstruction({instructions:[_u(e,this.scope.ownerPubKey,l,d,y,b,f.vaultA,f.mintA,He)]})}),r===0?c.sizeCheckBuildV0({computeBudgetConfig:s}):c.sizeCheckBuild({computeBudgetConfig:s})}async claimVaultPlatformFee({programId:e=yt,platformId:t,mintB:n,mintBProgram:i=He,claimFeeWallet:r,txVersion:s,computeBudgetConfig:a,txTipConfig:c,feePayer:u}){let l=this.createTxBuilder(u),m=Ii(e,t,n).publicKey,d=Fu(e).publicKey,p=this.scope.account.getAssociatedTokenAccount(n,i);return l.addInstruction({instructions:[tn(this.scope.ownerPubKey,p,this.scope.ownerPubKey,n,i),Wu(e,t,r!=null?r:this.scope.ownerPubKey,d,m,p,n,i)]}),l.addCustomComputeBudget(a),l.addTipInstruction(c),l.versionBuild({txVersion:s})}async claimMultipleVaultPlatformFee({programId:e=yt,platformList:t,unwrapSol:n=!0,txVersion:i,computeBudgetConfig:r,feePayer:s,associatedOnly:a=!0,checkCreateATAOwner:c=!1}){let u=this.createTxBuilder(s),l={};return t.forEach(async m=>{var b,g;let d=Fu(e).publicKey,p=Ii(e,m.id,m.mintB).publicKey,f=m.mintB.equals(vn)&&n,y=l[m.mintB.toBase58()];if(!y){let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintB,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!f,notUseTokenAccount:f,associatedOnly:f?!1:a,checkCreateATAOwner:c});P&&(y=P),u.addInstruction(k||{}),y===void 0&&this.logAndCreateError(`cannot found platform ${m.id.toBase58()} mintB(${m.mintB.toBase58()}) token accounts`,"tokenAccounts",this.scope.account.tokenAccounts)}u.addInstruction({instructions:[Wu(e,m.id,(b=m.claimFeeWallet)!=null?b:this.scope.ownerPubKey,p,d,y,m.mintB,(g=m.mintBProgram)!=null?g:He)]})}),i===0?u.sizeCheckBuildV0({computeBudgetConfig:r}):u.sizeCheckBuild({computeBudgetConfig:r})}async claimCreatorFee({programId:e=yt,mintB:t,mintBProgram:n=He,txVersion:i,computeBudgetConfig:r,txTipConfig:s,feePayer:a}){let c=this.createTxBuilder(a),u=Zi(e,this.scope.ownerPubKey,t).publicKey,l=Lm(e).publicKey,m=this.scope.account.getAssociatedTokenAccount(t,n);return c.addInstruction({instructions:[tn(this.scope.ownerPubKey,m,this.scope.ownerPubKey,t,n),Dm(e,this.scope.ownerPubKey,l,u,m,t,n)]}),c.addCustomComputeBudget(r),c.addTipInstruction(s),c.versionBuild({txVersion:i})}async getRpcPoolInfo({poolId:e}){return(await this.getRpcPoolsInfo({poolIdList:[e]})).poolInfoMap[e.toBase58()]}async getRpcPoolsInfo({poolIdList:e,config:t}){let n=await Fe(this.scope.connection,e.map(c=>({pubkey:c})),t),i={},r=[];for(let c=0;c<e.length;c++){let u=n[c];if(u===null||!u.accountInfo)throw Error("fetch pool info error: "+e[c].toBase58());let l=pn.decode(u.accountInfo.data);i[e[c].toBase58()]=U(M({},l),{poolId:u.accountInfo.owner}),r.push(l.configId)}let s=await Fe(this.scope.connection,r.map(c=>({pubkey:c})),t),a={};for(let c=0;c<r.length;c++){let u=s[c];if(u===null||!u.accountInfo)throw Error("fetch config info error: "+r[c].toBase58());let l=ei.decode(u.accountInfo.data);a[r[c].toBase58()]=U(M({},l),{configId:u.accountInfo.owner})}return{poolInfoMap:Object.keys(i).reduce((c,u)=>U(M({},c),{[u]:U(M({},i[u]),{configInfo:a[i[u].configId.toBase58()]})}),{})}}};import{PublicKey as Fb}from"@solana/web3.js";import{MintLayout as Eb,TOKEN_2022_PROGRAM_ID as qu,TOKEN_PROGRAM_ID as Uu}from"@solana/spl-token";var pr=class extends De{constructor(t){super(t);this._tokenList=[];this._tokenMap=new Map;this._blackTokenMap=new Set;this._mintGroup={official:new Set,jup:new Set,extra:new Set};this._whiteMap=new Set;this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:i="strict"}=t||{},{mintList:r,blacklist:s,whiteList:a}=await this.scope.fetchV3TokenList(n),c=await this.scope.fetchJupTokenList(n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Set(s),this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._whiteMap=new Set(a),this._tokenMap.set(bn.address,bn),this._mintGroup.official.add(bn.address),r.forEach(u=>{var l;this._blackTokenMap.has(u.address)||(this._tokenMap.set(u.address,U(M({},u),{type:"raydium",priority:2,programId:(l=u.programId)!=null?l:u.tags.includes("token-2022")?qu.toBase58():Uu.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,U(M({},u),{type:"jupiter",priority:1,programId:(l=u.programId)!=null?l:u.tags.includes("token-2022")?qu.toBase58():Uu.toBase58(),tags:u.freezeAuthority?[...u.tags||[],"hasFreeze"]:u.tags})),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,U(M({},u),{type:"extra",priority:1,programId:u.programId||u.tags.includes("token-2022")?qu.toBase58():Uu.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(),i=this._tokenMap.get(n);if(i)return i;if(n.toLocaleUpperCase()==="SOL")return bn;let r=(await this.scope.api.getTokenInfo([n]))[0];if(r)return this._mintGroup.extra.add(n),this._tokenMap.set(n,U(M({},r),{priority:2})),r;let s=await this.scope.connection.getAccountInfo(new Fb(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=Eb.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 Ns=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:i,api:r,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:c,blockhashCommitment:u="confirmed",loopMultiTxStatus:l}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=i?new an(i):void 0,this._signAllTransactions=e.signAllTransactions,this.blockhashCommitment=u,this.loopMultiTxStatus=l,this.api=r,this._apiCacheTime=c||5*60*1e3,this.logger=Pe("Raydium"),this.farm=new Fo({scope:this,moduleName:"Raydium_Farm"}),this.account=new xo({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new jo({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new pr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new sr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new $o({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new ir({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new Zt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new zi({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new Hi({scope:this,moduleName:"Raydium_ido"}),this.launchpad=new dr({scope:this,moduleName:"Raydium_lauchpad"}),this.availability={};let m=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:m,value:{chainTime:s||Date.now()-a,offset:a}})}static async load(e){var l;let t=_b({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:r,logRequests:s,urlConfigs:a}=t,c=new qr({cluster:n,timeout:i,urlConfigs:a,logCount:r,logRequests:s}),u=new Ns(U(M({},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(Ur);return this._owner.publicKey}setOwner(e){return this._owner=e?new an(e):void 0,this.account.resetTokenAccounts(),this}get connection(){if(!this._connection)throw new Error(Vc);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 console.error(Ur),new Error(Ur)}isCacheInvalidate(e){return new Date().getTime()-e>this._apiCacheTime}async fetchChainTime(){try{let e=await this.api.getChainTimeOffset();this._chainTime={fetched:Date.now(),value:{chainTime:Date.now()+e.offset*1e3,offset:e.offset*1e3}}}catch{this._chainTime=void 0}}async fetchV3TokenList(e){if(this.apiData.tokenList&&!this.isCacheInvalidate(this.apiData.tokenList.fetched)&&!e)return this.apiData.tokenList.data;try{let t=await this.api.getTokenList(),n={fetched:Date.now(),data:t};return this.apiData.tokenList=n,n.data}catch(t){return console.error(t),{mintList:[],blacklist:[],whiteList:[]}}}async fetchJupTokenList(e){if(this.cluster==="devnet")return[];let t=this.apiData.jupTokenList;if(t&&!this.isCacheInvalidate(t.fetched)&&!e)return t.data;try{let n=await this.api.getJupTokenList();return this.apiData.jupTokenList={fetched:Date.now(),data:n.map(i=>U(M({},i),{mintAuthority:i.mint_authority||void 0,freezeAuthority:i.freeze_authority||void 0}))},this.apiData.jupTokenList.data}catch(n){return console.error(n),[]}}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 RL=o=>o;export{jb as ACCOUNT_TYPE_SIZE,St as ALL_PROGRAM_ID,gy as AMM_CONFIG_SEED,wp as AMM_STABLE,yo as AMM_V4,_g as ANAMint,bt as API_URLS,Sb as AUTH_SEED,Zm as AccountType,qr as Api,Il as BIT_PRECISION,Mt as BNDivCeil,ci as BNLayout,XA as BN_100,zA as BN_1000,QA as BN_10000,GA as BN_FIVE,hc as BN_ONE,ri as BN_TEN,UA as BN_THREE,qA as BN_TWO,ot as BN_ZERO,uk as BitStructure,Qc as Blob,bo as CLMM_LOCK_AUTH_ID,Ni as CLMM_LOCK_PROGRAM_ID,qn as CLMM_PROGRAM_ID,Hs as CLOCK_PROGRAM_ID,Kb as CONFIG_SEED,ca as CREATE_CPMM_POOL_AUTH,xp as CREATE_CPMM_POOL_FEE_ACC,go as CREATE_CPMM_POOL_PROGRAM,Nb as CREATOR_FEE_VAULT_AUTH_SEED,$o as Clmm,Vl as ClmmConfigLayout,Me as ClmmInstrument,ds as ConstantProductCurve,km as CpmmConfigInfoLayout,ps as CpmmFee,gs as CpmmPoolInfoLayout,mo as Currency,oi as CurrencyAmount,en as Curve,ti as CurveBase,ys as CurveCalculator,xn as DEVNET_PROGRAM_ID,pw as DEV_API_URLS,Zh as DEV_FARM_LOCK_MINT,$h as DEV_FARM_LOCK_VAULT,IP as DEV_LAUNCHPAD_AUTH,TP as DEV_LAUNCHPAD_PROGRAM,Oi as DEV_LOOKUP_TABLE_CACHE,Vy as DataElement,Vg as ETHMint,iu as EXTENSION_TICKARRAY_BITMAP_SIZE,ll as FARM_LOCK_MINT,ml as FARM_LOCK_VAULT,oa as FARM_PROGRAM_ID_V3,ra as FARM_PROGRAM_ID_V4,sa as FARM_PROGRAM_ID_V5,Li as FARM_PROGRAM_ID_V6,Qt as FARM_PROGRAM_TO_VERSION,pl as FARM_VERSION_TO_LEDGER_LAYOUT,dl as FARM_VERSION_TO_STATE_LAYOUT,ua as FEE_DESTINATION_ID,es as FEE_RATE_DENOMINATOR,cn as FEE_RATE_DENOMINATOR_VALUE,Iy as FETCH_TICKARRAY_COUNT,by as Fee,Ks as FixedPriceCurve,ye as Fraction,wo as IDO_ALL_PROGRAM,hp as IDO_PROGRAM_ID_V1,Tp as IDO_PROGRAM_ID_V2,Ip as IDO_PROGRAM_ID_V3,Bp as IDO_PROGRAM_ID_V4,Sr as INSTRUCTION_PROGRAM_ID,X as InstructionType,vc as JupTokenType,Sp as LAUNCHPAD_AUTH,Cp as LAUNCHPAD_CONFIG,Kp as LAUNCHPAD_PLATFORM,yt as LAUNCHPAD_PROGRAM,rs as LIQUIDITY_FEES_DENOMINATOR,au as LIQUIDITY_FEES_NUMERATOR,Er as LIQUIDITY_POOL_PROGRAM_ID_V5_MODEL,Oy as LIQUIDITY_VERSION_TO_SERUM_VERSION,Ax as LIQUIDITY_VERSION_TO_STATE_LAYOUT,Po as LOCK_CPMM_AUTH,Ao as LOCK_CPMM_PROGRAM,fb as LOCK_LIQUIDITY_SEED,Bl as LOG_B_2_X32,xl as LOG_B_P_ERR_MARGIN_LOWER_X64,Sl as LOG_B_P_ERR_MARGIN_UPPER_X64,_r as LOOKUP_TABLE_CACHE,xs as LaunchConstantProductCurve,ei as LaunchpadConfig,pn as LaunchpadPool,xi as LaunchpadPoolInitParam,H1 as LaunchpadVesting,Io as Layout,Cs as LinearPriceCurve,Te as LiquidityMath,ql as LockClPositionLayoutV2,RB as LockPositionLayout,zm as LogLevel,Ms as Logger,wu as MARKET_STATE_LAYOUT_V2,Bu as MARKET_STATE_LAYOUT_V3,Bm as MARKET_VERSION_TO_STATE_LAYOUT,Lc as MAX_BASE64_SIZE,jt as MAX_SQRT_PRICE_X64,Jr as MAX_SQRT_PRICE_X64_SUB_ONE,Rt as MAX_TICK,xr as MEMO_PROGRAM_ID,gn as MEMO_PROGRAM_ID2,sn as METADATA_PROGRAM_ID,Ht as MIN_SQRT_PRICE_X64,$r as MIN_SQRT_PRICE_X64_ADD_ONE,It as MIN_TICK,Un as MODEL_DATA_PUBKEY,ws as Market,mr as MathLaunch,de as MathUtil,Eo as MaxU64,Tl as MaxUint128,Cn as NEGATIVE_ONE,Eg as NRVMint,hy as OBSERVATION_SEED,Wt as ONE,aa as OPEN_BOOK_PROGRAM,wy as OPERATION_SEED,Dl as ObservationInfoLayout,Sy as ObservationLayout,Wl as OperationLayout,xa as OptionLayout,an as Owner,Rg as PAIMint,Lb as PLATFORM_FEE_VAULT_AUTH_SEED,Rb as PLATFORM_SEED,vl as POOL_LOCK_ID_SEED,Ay as POOL_REWARD_VAULT_SEED,$a as POOL_SEED,ky as POOL_TICK_ARRAY_BITMAP_SEED,Ja as POOL_VAULT_SEED,Cb as POOL_VESTING_SEED,Ll as POSITION_SEED,Ze as Percent,$i as PlatformConfig,Fc as PoolFetchType,pi as PoolInfoLayout,_e as PoolUtils,Ui as PositionInfoLayout,Cy as PositionRewardInfoLayout,Wo as PositionUtils,ft as Price,CB as ProtocolPositionLayout,Zr as Q128,lt as Q64,Cg as RAYMint,at as RENT_PROGRAM_ID,Ns as Raydium,Ky as RewardInfo,dm as RoundDirection,Gs as Rounding,kp as Router,Tm as SERUM_PROGRAMID_TO_VERSION,Fr as SERUM_PROGRAM_ID_V3,Im as SERUM_VERSION_TO_PROGRAMID,Ec as SESSION_KEY,pt as SOLMint,bn as SOL_INFO,zl as SPL_MINT_LAYOUT,Lg as SRMMint,ba as STORAGE_KEY,Ty as SUPPORT_MINT_SEED,Kr as SYSTEM_PROGRAM_ID,ae as SqrtPriceMath,Xi as StableLayout,Sa as Structure,di as SwapMath,mi as TICK_ARRAY_BITMAP_SIZE,Py as TICK_ARRAY_SEED,mt as TICK_ARRAY_SIZE,mI as TICK_SPACINGS,dt as TOKEN_WSOL,Ln as TickArrayBitmap,_l as TickArrayBitmapExtensionLayout,Uo as TickArrayBitmapExtensionUtils,qo as TickArrayLayout,Ry as TickLayout,fi as TickMath,xe as TickQuery,J as TickUtils,Le as Token,Ke as TokenAmount,Dr as TxBuilder,Tn as TxVersion,_o as U64Resolution,pI as U64_IGNORE_RANGE,Ta as UInt,Ng as USDCMint,Fg as USDHMint,Og as USDTMint,Pp as UTIL1216,Ka as Union,vb as VestingSchedule,cl as Voter,ty as VoterDepositEntry,ey as VoterLockup,ul as VoterRegistrar,Jf as VoterVotingMintConfig,$ as WSOLMint,Yr as WideBits,Sn as WrappedLayout,ke as ZERO,Ac as _100_PERCENT,A as accountMeta,TA as add,Or as addComputeBudget,mu as addLiquidityLayout,zt as anchorDataBuf,zk as array,Na as associatedLedgerAccountLayout,Ia as bits,Re as blob,Xe as bool,Mm as buyExactInInstruction,vm as buyExactOutInstruction,za as calFarmRewardAmount,Rr as ceilDiv,ui as ceilDivBN,po as checkLegacyTxSize,dR as checkPoolToAmm,fo as checkV0TxSize,Es as chunkArray,Dm as claimCreatorFee,ar as claimLayout,Du as claimPlatformFee,Wu as claimPlatformFeeFromVault,_u as claimVestedToken,El as clmmComputeInfoToApiInfo,Kn as closeAccountInstruction,Iu as collectCpFeeInstruction,zs as commonSystemAccountMeta,Mr as confirmTransaction,Ab as cpmmLockPositionInstruction,No as createAssociatedLedgerAccountInstruction,Pe as createLogger,_m as createPlatformConfig,Hl as createPoolFeeLayout,fu as createPoolV4InstructionV2,gx as createPoolV4Layout,Vu as createVestingAccount,zn as createWSolAccountInstructions,Fk as cstr,Yg as currencyEquals,lp as decimalToFraction,Of as decodeBool,PA as div,Cr as divCeil,Ct as dwLayout,Mf as encodeBool,Ew as endlessRetry,rp as eq,Lk as f32,Nk as f32be,Ok as f64,Mk as f64be,Fa as farmAddRewardLayout,Dh as farmLedgerLayoutV3_1,Ko as farmLedgerLayoutV3_2,Wh as farmLedgerLayoutV5_1,sl as farmLedgerLayoutV5_2,al as farmLedgerLayoutV6_1,yl as farmRewardInfoToConfig,Ma as farmRewardLayout,va as farmRewardRestartLayout,$f as farmRewardTimeInfoLayout,ol as farmStateV3Layout,rl as farmStateV5Layout,So as farmStateV6Layout,yT as fetchMultipleFarmInfoAndUpdate,iS as fetchMultipleInfo,Si as fetchMultipleMintInfos,oe as findProgramAddress,uu as fixedSwapInLayout,cu as fixedSwapOutLayout,na as floorDiv,vr as forecastTransactionSize,Hy as formatLayout,Je as generatePubKey,Z as getATAAddress,fl as getAssociatedAuthority,as as getAssociatedConfigId,Tt as getAssociatedLedgerAccount,Ro as getAssociatedLedgerPoolAccount,Jy as getAssociatedOpenOrders,Pu as getAssociatedPoolKeys,tr as getCpLockPda,nC as getCpmmPdaAmmConfigId,hu as getCpmmPdaPoolId,fm as getCreatePoolKeys,Bc as getDate,Qa as getDepositEntryIndex,fa as getDevLookupTableCache,im as getDxByDyBaseIn,nm as getDyByDxBaseIn,yP as getEpochInfo,Di as getFarmLedgerLayout,iy as getFarmStateLayout,Au as getLiquidityAssociatedAuthority,Ai as getLiquidityAssociatedId,rB as getLiquidityFromAmounts,hA as getMax,nn as getMultipleAccountsInfo,Fe as getMultipleAccountsInfoWithCustomFlags,pa as getMultipleLookupTableInfo,wI as getPdaAmmConfigId,Ti as getPdaCpiEvent,Lm as getPdaCreatorFeeVaultAuth,Zi as getPdaCreatorVault,et as getPdaExBitmapAccount,wn as getPdaLaunchpadAuth,E1 as getPdaLaunchpadConfigId,ji as getPdaLaunchpadPoolId,Mu as getPdaLaunchpadVaultId,qi as getPdaLockClPositionIdV2,tu as getPdaLockPositionId,db as getPdaLpMint,Rn as getPdaMetadataKey,nu as getPdaMintExAccount,Ml as getPdaObservationAccount,er as getPdaObservationId,Do as getPdaOperationAccount,Lt as getPdaPersonalPositionAddress,Fu as getPdaPlatformFeeVaultAuth,vu as getPdaPlatformId,Ii as getPdaPlatformVault,Yi as getPdaPoolAuthority,Nl as getPdaPoolId,Ol as getPdaPoolRewardVaulId,eu as getPdaPoolVaultId,dn as getPdaProtocolPositionAddress,he as getPdaTickArrayAddress,pm as getPdaVault,cr as getPdaVestId,Ri as getRecentBlockHash,Da as getRegistrarAddress,Op as getSessionKey,om as getStablePrice,dp as getTime,CA as getTimestamp,Xa as getTokenOwnerRecordAddress,SP as getTransferAmountFee,ma as getTransferAmountFeeFromPost,la as getTransferAmountFeeFromPre,Ce as getTransferAmountFeeV2,Ua as getVoterAddress,Ga as getVoterWeightRecordAddress,qa as getVotingMintAuthority,Wa as getVotingTokenMint,dy as governanceCreateTokenOwnerRecord,ck as greedy,op as gt,AA as gte,el as i128,yI as i16ToBytes,ns as i32ToBytes,Ei as i64,Jc as i8,lu as initPoolLayout,Ra as initTokenAccountInstruction,Nm as initialize,ib as initializeMarket,Om as initializeWithToken2022,eP as intersection,Sc as isDateAfter,xc as isDateBefore,mp as isDecimal,kA as isMeaningfulNumber,Ic as isNumber,_a as isValidFarmVersion,Vo as isZero,Ve as jsonInfo2PoolKeys,bT as judgeFarmType,ja as leadingZeros,Rl as leastSignificantBit,yi as liquidityStateV4Layout,My as liquidityStateV5Layout,bA as lt,gA as lte,Mg as mSOLMint,ss as makeAMMSwapInstruction,$l as makeAddLiquidityInstruction,Ha as makeAddNewRewardInstruction,Ts as makeClaimInstruction,Ou as makeClaimInstructionV4,wm as makeCpmmLockInstruction,bm as makeCreateCpmmPoolInInstruction,bl as makeCreateFarmInstruction,cs as makeCreateMarketInstruction,gl as makeCreatorWithdrawFarmRewardInstruction,gm as makeDepositCpmmInInstruction,Pl as makeDepositInstructionV3,wl as makeDepositInstructionV5,kl as makeDepositInstructionV6,NT as makeDepositTokenInstruction,MT as makeDepositWithdrawInstruction,Rx as makeInitPoolInstructionV4,A1 as makePurchaseInstruction,Ya as makeRestartRewardInstruction,Jl as makeSimulatePoolInfoInstruction,bs as makeSwapCpmmBaseInInstruction,Pm as makeSwapCpmmBaseOutInstruction,Ey as makeSwapFixedInInstruction,_y as makeSwapFixedOutInstruction,Sm as makeSwapInstruction,il as makeTransferInstruction,Am as makeWithdrawCpmmInInstruction,vo as makeWithdrawInstructionV3,Al as makeWithdrawInstructionV4,Mo as makeWithdrawInstructionV5,Oo as makeWithdrawInstructionV6,OT as makeWithdrawTokenInstruction,un as minExpirationTime,dI as mockCreatePoolInfo,Kl as mockV3CreatePoolInfo,Dy as modelDataInfoLayout,Cl as mostSignificantBit,ea as mul,ta as notInnerObject,Ik as ns64,Rk as ns64be,Yc as nu64,Ak as nu64be,Ba as offset,$A as offsetDateTime,qk as option,ee as parseBigNumberish,si as parseNumberInfo,Oc as parseSimulateLogToJson,Bn as parseSimulateValue,nl as parseTokenAccountResp,ix as parseTokenInfo,Yn as poolTypeV6,ai as printSimulate,O as publicKey,Ru as purchaseLayout,Hf as realFarmStateV3Layout,jf as realFarmStateV5Layout,Zf as realFarmV6Layout,kc as recursivelyDecimalToFraction,pu as removeLiquidityInstruction,du as removeLiquidityLayout,h0 as route1Instruction,T0 as route2Instruction,kb as routeInstruction,Xk as rustEnum,wk as s16,Bk as s16be,kk as s24,xk as s24be,We as s32,Sk as s32be,hk as s40,Kk as s40be,Tk as s48,Ck as s48be,Pk as s8,Fm as sellExactInInstruction,Em as sellExactOut,H as seq,Wb as setLoggerLevel,up as shakeFractionDecimal,Nc as simulateMultipleInstruction,Cx as simulatePoolInfoInstruction,yp as simulateTransaction,Pc as sleep,kt as solToWSol,rx as solToWSolToken,mn as splAccountLayout,yc as splitNumber,vg as stSOLMint,vt as str,E as struct,wA as sub,I0 as swapBaseInAutoAccount,B0 as swapBaseOutAutoAccount,Gk as tagged,Js as tenExponential,us as toAmmComputePoolInfo,Bt as toApiV3Token,cp as toBN,Mc as toBuffer,Hn as toFeeConfig,Tc as toFraction,yA as toFractionWithDecimals,YA as toPercent,os as toToken,Xo as toTokenAmount,ox as toTokenInfo,HA as toTokenPrice,jA as toTotalPrice,wc as toUsdCurrency,Za as trailingZeros,bP as transformTxToBase64,Ys as tryParsePublicKey,bp as txToBase64,ne as u128,Dt as u16,ts as u16ToBytes,pk as u16be,lk as u24,fk as u24be,Pt as u32,bI as u32ToBytes,yk as u32be,mk as u40,bk as u40be,dk as u48,gk as u48be,w as u64,q as u8,Ob as u8ToBytes,Qk as union,RL as unionArr,vk as unionLayoutDiscriminator,nP as uniq,oy as updateFarmPoolInfo,Vm as updatePlatformConfig,Wr as updateReqHistory,Ek as utf8,Qs as validateAndParsePublicKey,Va as validateFarmRewards,Uk as vec,vf as vecU8,fy as voterStakeRegistryCreateDepositEntry,py as voterStakeRegistryCreateVoter,cy as voterStakeRegistryDeposit,ly as voterStakeRegistryUpdateVoterWeightRecord,my as voterStakeRegistryWithdraw,sx as wSolToSolToken,Oa as withdrawRewardLayout,tP as xor,Yk as zeros};
|
|
1
|
+
var Um=Object.defineProperty,Gm=Object.defineProperties;var Xm=Object.getOwnPropertyDescriptors;var yr=Object.getOwnPropertySymbols;var Hu=Object.prototype.hasOwnProperty,ju=Object.prototype.propertyIsEnumerable;var Yu=(o,e,t)=>e in o?Um(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t,v=(o,e)=>{for(var t in e||(e={}))Hu.call(e,t)&&Yu(o,t,e[t]);if(yr)for(var t of yr(e))ju.call(e,t)&&Yu(o,t,e[t]);return o},U=(o,e)=>Gm(o,Xm(e));var ze=(o,e)=>{var t={};for(var n in o)Hu.call(o,n)&&e.indexOf(n)<0&&(t[n]=o[n]);if(o!=null&&yr)for(var n of yr(o))e.indexOf(n)<0&&ju.call(o,n)&&(t[n]=o[n]);return t};import _c from"axios";import{PublicKey as Ju}from"@solana/web3.js";import{get as Os,set as Zu}from"lodash";var zm=(i=>(i[i.Error=0]="Error",i[i.Warning=1]="Warning",i[i.Info=2]="Info",i[i.Debug=3]="Debug",i))(zm||{}),Ms=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 Date.now().toString()}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}},vs={},$u={};function Pe(o){let e=Os(vs,o);if(!e){let t=Os($u,o);e=new Ms({name:o,logLevel:t}),Zu(vs,o,e)}return e}function Wb(o,e){Zu($u,o,e);let t=Os(vs,o);t&&(t.level=e)}import{MINT_SIZE as Qm,TOKEN_PROGRAM_ID as Ym,getTransferFeeConfig as Hm,unpackMint as jm}from"@solana/spl-token";var Fs=Pe("Raydium_accountInfo_util");async function nn(o,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:r=100}=v({batchRequest:!1},t),s=Es(e,r),a=new Array(s.length).fill([]);if(n){let c=s.map(m=>{let d=o._buildArgs([m.map(p=>p.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:d}}),u=Es(c,10);a=(await(await Promise.all(u.map(async m=>await o._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&Fs.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(d=>{if(d){let{data:p,executable:f,lamports:y,owner:b,rentEpoch:g}=d;return p.length!==2&&p[1]!=="base64"&&Fs.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:f,lamports:y,owner:new Ju(b),rentEpoch:g}}return null})))}else try{a=await Promise.all(s.map(c=>o.getMultipleAccountsInfo(c,i)))}catch(c){c instanceof Error&&Fs.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function Fe(o,e,t){let n=await nn(o,e.map(i=>i.pubkey),t);return e.map((i,r)=>U(v({},i),{accountInfo:n[r]}))}var Zm=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",n))(Zm||{}),jb=1;async function Si({connection:o,mints:e,config:t}){var r,s,a;if(e.length===0)return{};let n=await Fe(o,e.map(c=>({pubkey:kt(c)})),t),i={};for(let c of n){if(!c.accountInfo||c.accountInfo.data.length<Qm){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=jm(c.pubkey,c.accountInfo,(r=c.accountInfo)==null?void 0:r.owner);i[c.pubkey.toString()]=U(v({},u),{programId:((s=c.accountInfo)==null?void 0:s.owner)||Ym,feeConfig:(a=Hm(u))!=null?a:void 0})}return i[Ju.default.toBase58()]=i[$.toBase58()],i}import $e from"bn.js";var Ki=9e15,Dn=1e9,_s="0123456789abcdef",gr="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",Ar="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",Vs={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Ki,maxE:Ki,crypto:!1},ic,hn,fe=!0,wr="[DecimalError] ",Vn=wr+"Invalid argument: ",oc=wr+"Precision limit exceeded",rc=wr+"crypto unavailable",sc="[object Decimal]",ht=Math.floor,ut=Math.pow,$m=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,Jm=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,ed=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ac=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,rn=1e7,ue=7,td=9007199254740991,nd=gr.length-1,Ds=Ar.length-1,G={toStringTag:sc};G.absoluteValue=G.abs=function(){var o=new this.constructor(this);return o.s<0&&(o.s=1),ie(o)};G.ceil=function(){return ie(new this.constructor(this),this.e+1,2)};G.clampedTo=G.clamp=function(o,e){var t,n=this,i=n.constructor;if(o=new i(o),e=new i(e),!o.s||!e.s)return new i(NaN);if(o.gt(e))throw Error(Vn+e);return t=n.cmp(o),t<0?o:n.cmp(e)>0?e:new i(n)};G.comparedTo=G.cmp=function(o){var e,t,n,i,r=this,s=r.d,a=(o=new r.constructor(o)).d,c=r.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(r.e!==o.e)return r.e>o.e^c<0?1:-1;for(n=s.length,i=a.length,e=0,t=n<i?n:i;e<t;++e)if(s[e]!==a[e])return s[e]>a[e]^c<0?1:-1;return n===i?0:n>i^c<0?1:-1};G.cosine=G.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())+ue,n.rounding=1,t=id(n,dc(n,t)),n.precision=o,n.rounding=e,ie(hn==2||hn==3?t.neg():t,o,e,!0)):new n(1):new n(NaN)};G.cubeRoot=G.cbrt=function(){var o,e,t,n,i,r,s,a,c,u,l=this,m=l.constructor;if(!l.isFinite()||l.isZero())return new m(l);for(fe=!1,r=l.s*ut(l.s*l,1/3),!r||Math.abs(r)==1/0?(t=At(l.d),o=l.e,(r=(o-t.length+1)%3)&&(t+=r==1||r==-2?"0":"00"),r=ut(t,1/3),o=ht((o+1)/3)-(o%3==(o<0?-1:2)),r==1/0?t="5e"+o:(t=r.toExponential(),t=t.slice(0,t.indexOf("e")+1)+o),n=new m(t),n.s=l.s):n=new m(r.toString()),s=(o=m.precision)+3;;)if(a=n,c=a.times(a).times(a),u=c.plus(l),n=Ee(u.plus(l).times(a),u.plus(c),s+2,1),At(a.d).slice(0,s)===(t=At(n.d)).slice(0,s))if(t=t.slice(s-3,s+1),t=="9999"||!i&&t=="4999"){if(!i&&(ie(a,o+1,0),a.times(a).times(a).eq(l))){n=a;break}s+=4,i=1}else{(!+t||!+t.slice(1)&&t.charAt(0)=="5")&&(ie(n,o+1,1),e=!n.times(n).times(n).eq(l));break}return fe=!0,ie(n,o,m.rounding,e)};G.decimalPlaces=G.dp=function(){var o,e=this.d,t=NaN;if(e){if(o=e.length-1,t=(o-ht(this.e/ue))*ue,o=e[o],o)for(;o%10==0;o/=10)t--;t<0&&(t=0)}return t};G.dividedBy=G.div=function(o){return Ee(this,new this.constructor(o))};G.dividedToIntegerBy=G.divToInt=function(o){var e=this,t=e.constructor;return ie(Ee(e,new t(o),0,1,1),t.precision,t.rounding)};G.equals=G.eq=function(o){return this.cmp(o)===0};G.floor=function(){return ie(new this.constructor(this),this.e+1,3)};G.greaterThan=G.gt=function(o){return this.cmp(o)>0};G.greaterThanOrEqualTo=G.gte=function(o){var e=this.cmp(o);return e==1||e===0};G.hyperbolicCosine=G.cosh=function(){var o,e,t,n,i,r=this,s=r.constructor,a=new s(1);if(!r.isFinite())return new s(r.s?1/0:NaN);if(r.isZero())return a;t=s.precision,n=s.rounding,s.precision=t+Math.max(r.e,r.sd())+4,s.rounding=1,i=r.d.length,i<32?(o=Math.ceil(i/3),e=(1/hr(4,o)).toString()):(o=16,e="2.3283064365386962890625e-10"),r=Ci(s,1,r.times(e),new s(1),!0);for(var c,u=o,l=new s(8);u--;)c=r.times(r),r=a.minus(c.times(l.minus(c.times(l))));return ie(r,s.precision=t,s.rounding=n,!0)};G.hyperbolicSine=G.sinh=function(){var o,e,t,n,i=this,r=i.constructor;if(!i.isFinite()||i.isZero())return new r(i);if(e=r.precision,t=r.rounding,r.precision=e+Math.max(i.e,i.sd())+4,r.rounding=1,n=i.d.length,n<3)i=Ci(r,2,i,i,!0);else{o=1.4*Math.sqrt(n),o=o>16?16:o|0,i=i.times(1/hr(5,o)),i=Ci(r,2,i,i,!0);for(var s,a=new r(5),c=new r(16),u=new r(20);o--;)s=i.times(i),i=i.times(a.plus(s.times(c.times(s).plus(u))))}return r.precision=e,r.rounding=t,ie(i,e,t,!0)};G.hyperbolicTangent=G.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,Ee(t.sinh(),t.cosh(),n.precision=o,n.rounding=e)):new n(t.s)};G.inverseCosine=G.acos=function(){var o,e=this,t=e.constructor,n=e.abs().cmp(1),i=t.precision,r=t.rounding;return n!==-1?n===0?e.isNeg()?on(t,i,r):new t(0):new t(NaN):e.isZero()?on(t,i+4,r).times(.5):(t.precision=i+6,t.rounding=1,e=e.asin(),o=on(t,i+4,r).times(.5),t.precision=i,t.rounding=r,o.minus(e))};G.inverseHyperbolicCosine=G.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,fe=!1,t=t.times(t).minus(1).sqrt().plus(t),fe=!0,n.precision=o,n.rounding=e,t.ln()):new n(t)};G.inverseHyperbolicSine=G.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,fe=!1,t=t.times(t).plus(1).sqrt().plus(t),fe=!0,n.precision=o,n.rounding=e,t.ln())};G.inverseHyperbolicTangent=G.atanh=function(){var o,e,t,n,i=this,r=i.constructor;return i.isFinite()?i.e>=0?new r(i.abs().eq(1)?i.s/0:i.isZero()?i:NaN):(o=r.precision,e=r.rounding,n=i.sd(),Math.max(n,o)<2*-i.e-1?ie(new r(i),o,e,!0):(r.precision=t=n-i.e,i=Ee(i.plus(1),new r(1).minus(i),t+o,1),r.precision=o+4,r.rounding=1,i=i.ln(),r.precision=o,r.rounding=e,i.times(.5))):new r(NaN)};G.inverseSine=G.asin=function(){var o,e,t,n,i=this,r=i.constructor;return i.isZero()?new r(i):(e=i.abs().cmp(1),t=r.precision,n=r.rounding,e!==-1?e===0?(o=on(r,t+4,n).times(.5),o.s=i.s,o):new r(NaN):(r.precision=t+6,r.rounding=1,i=i.div(new r(1).minus(i.times(i)).sqrt().plus(1)).atan(),r.precision=t,r.rounding=n,i.times(2)))};G.inverseTangent=G.atan=function(){var o,e,t,n,i,r,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<=Ds)return s=on(l,m+4,d).times(.25),s.s=u.s,s}else{if(!u.s)return new l(NaN);if(m+4<=Ds)return s=on(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/ue+2|0),o=t;o;--o)u=u.div(u.times(u).plus(1).sqrt().plus(1));for(fe=!1,e=Math.ceil(a/ue),n=1,c=u.times(u),s=new l(u),i=u;o!==-1;)if(i=i.times(c),r=s.minus(i.div(n+=2)),i=i.times(c),s=r.plus(i.div(n+=2)),s.d[e]!==void 0)for(o=e;s.d[o]===r.d[o]&&o--;);return t&&(s=s.times(2<<t-1)),fe=!0,ie(s,l.precision=m,l.rounding=d,!0)};G.isFinite=function(){return!!this.d};G.isInteger=G.isInt=function(){return!!this.d&&ht(this.e/ue)>this.d.length-2};G.isNaN=function(){return!this.s};G.isNegative=G.isNeg=function(){return this.s<0};G.isPositive=G.isPos=function(){return this.s>0};G.isZero=function(){return!!this.d&&this.d[0]===0};G.lessThan=G.lt=function(o){return this.cmp(o)<0};G.lessThanOrEqualTo=G.lte=function(o){return this.cmp(o)<1};G.logarithm=G.log=function(o){var e,t,n,i,r,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)r=!0;else{for(i=t[0];i%10===0;)i/=10;r=i!==1}if(fe=!1,a=m+p,s=_n(u,a),n=e?Pr(l,a+10):_n(o,a),c=Ee(s,n,a,1),so(c.d,i=m,d))do if(a+=10,s=_n(u,a),n=e?Pr(l,a+10):_n(o,a),c=Ee(s,n,a,1),!r){+At(c.d).slice(i+1,i+15)+1==1e14&&(c=ie(c,m+1,0));break}while(so(c.d,i+=10,d));return fe=!0,ie(c,m,d)};G.minus=G.sub=function(o){var e,t,n,i,r,s,a,c,u,l,m,d,p=this,f=p.constructor;if(o=new f(o),!p.d||!o.d)return!p.s||!o.s?o=new f(NaN):p.d?o.s=-o.s:o=new f(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=f.precision,c=f.rounding,!u[0]||!d[0]){if(d[0])o.s=-o.s;else if(u[0])o=new f(p);else return new f(c===3?-0:0);return fe?ie(o,a,c):o}if(t=ht(o.e/ue),l=ht(p.e/ue),u=u.slice(),r=l-t,r){for(m=r<0,m?(e=u,r=-r,s=d.length):(e=d,t=l,s=u.length),n=Math.max(Math.ceil(a/ue),s)+2,r>n&&(r=n,e.length=1),e.reverse(),n=r;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}r=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>r;){if(u[--n]<d[n]){for(i=n;i&&u[--i]===0;)u[i]=rn-1;--u[i],u[n]+=rn}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=kr(u,t),fe?ie(o,a,c):o):new f(c===3?-0:0)};G.modulo=G.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]?ie(new n(t),n.precision,n.rounding):(fe=!1,n.modulo==9?(e=Ee(t,o.abs(),0,3,1),e.s*=o.s):e=Ee(t,o,0,n.modulo,1),e=e.times(o),fe=!0,t.minus(e))};G.naturalExponential=G.exp=function(){return Ws(this)};G.naturalLogarithm=G.ln=function(){return _n(this)};G.negated=G.neg=function(){var o=new this.constructor(this);return o.s=-o.s,ie(o)};G.plus=G.add=function(o){var e,t,n,i,r,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)),fe?ie(o,a,c):o;if(r=ht(m.e/ue),n=ht(o.e/ue),u=u.slice(),i=r-n,i){for(i<0?(t=u,i=-i,s=l.length):(t=l,n=r,s=u.length),r=Math.ceil(a/ue),s=r>s?r+1:s+1,i>s&&(i=s,t.length=1),t.reverse();i--;)t.push(0);t.reverse()}for(s=u.length,i=l.length,s-i<0&&(i=s,t=l,l=u,u=t),e=0;i;)e=(u[--i]=u[i]+l[i]+e)/rn|0,u[i]%=rn;for(e&&(u.unshift(e),++n),s=u.length;u[--s]==0;)u.pop();return o.d=u,o.e=kr(u,n),fe?ie(o,a,c):o};G.precision=G.sd=function(o){var e,t=this;if(o!==void 0&&o!==!!o&&o!==1&&o!==0)throw Error(Vn+o);return t.d?(e=uc(t.d),o&&t.e+1>e&&(e=t.e+1)):e=NaN,e};G.round=function(){var o=this,e=o.constructor;return ie(new e(o),o.e+1,e.rounding)};G.sine=G.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())+ue,n.rounding=1,t=rd(n,dc(n,t)),n.precision=o,n.rounding=e,ie(hn>2?t.neg():t,o,e,!0)):new n(NaN)};G.squareRoot=G.sqrt=function(){var o,e,t,n,i,r,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(fe=!1,u=Math.sqrt(+s),u==0||u==1/0?(e=At(a),(e.length+c)%2==0&&(e+="0"),u=Math.sqrt(e),c=ht((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(r=n,n=r.plus(Ee(s,r,t+2,1)).times(.5),At(r.d).slice(0,t)===(e=At(n.d)).slice(0,t))if(e=e.slice(t-3,t+1),e=="9999"||!i&&e=="4999"){if(!i&&(ie(r,c+1,0),r.times(r).eq(s))){n=r;break}t+=4,i=1}else{(!+e||!+e.slice(1)&&e.charAt(0)=="5")&&(ie(n,c+1,1),o=!n.times(n).eq(s));break}return fe=!0,ie(n,c,l.rounding,o)};G.tangent=G.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=Ee(t,new n(1).minus(t.times(t)).sqrt(),o+10,0),n.precision=o,n.rounding=e,ie(hn==2||hn==4?t.neg():t,o,e,!0)):new n(NaN)};G.times=G.mul=function(o){var e,t,n,i,r,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=ht(l.e/ue)+ht(o.e/ue),c=d.length,u=p.length,c<u&&(r=d,d=p,p=r,s=c,c=u,u=s),r=[],s=c+u,n=s;n--;)r.push(0);for(n=u;--n>=0;){for(e=0,i=c+n;i>n;)a=r[i]+p[n]*d[i-n-1]+e,r[i--]=a%rn|0,e=a/rn|0;r[i]=(r[i]+e)%rn|0}for(;!r[--s];)r.pop();return e?++t:r.shift(),o.d=r,o.e=kr(r,t),fe?ie(o,m.precision,m.rounding):o};G.toBinary=function(o,e){return Us(this,2,o,e)};G.toDecimalPlaces=G.toDP=function(o,e){var t=this,n=t.constructor;return t=new n(t),o===void 0?t:(Ot(o,0,Dn),e===void 0?e=n.rounding:Ot(e,0,8),ie(t,o+t.e+1,e))};G.toExponential=function(o,e){var t,n=this,i=n.constructor;return o===void 0?t=yn(n,!0):(Ot(o,0,Dn),e===void 0?e=i.rounding:Ot(e,0,8),n=ie(new i(n),o+1,e),t=yn(n,!0,o+1)),n.isNeg()&&!n.isZero()?"-"+t:t};G.toFixed=function(o,e){var t,n,i=this,r=i.constructor;return o===void 0?t=yn(i):(Ot(o,0,Dn),e===void 0?e=r.rounding:Ot(e,0,8),n=ie(new r(i),o+i.e+1,e),t=yn(n,!1,o+n.e+1)),i.isNeg()&&!i.isZero()?"-"+t:t};G.toFraction=function(o){var e,t,n,i,r,s,a,c,u,l,m,d,p=this,f=p.d,y=p.constructor;if(!f)return new y(p);if(u=t=new y(1),n=c=new y(0),e=new y(n),r=e.e=uc(f)-p.e-1,s=r%ue,e.d[0]=ut(10,s<0?ue+s:s),o==null)o=r>0?e:u;else{if(a=new y(o),!a.isInt()||a.lt(u))throw Error(Vn+a);o=a.gt(e)?r>0?e:u:a}for(fe=!1,a=new y(At(f)),l=y.precision,y.precision=r=f.length*ue*2;m=Ee(a,e,0,1,1),i=t.plus(m.times(n)),i.cmp(o)!=1;)t=n,n=i,i=u,u=c.plus(m.times(i)),c=i,i=e,e=a.minus(m.times(i)),a=i;return i=Ee(o.minus(t),n,0,1,1),c=c.plus(i.times(u)),t=t.plus(i.times(n)),c.s=u.s=p.s,d=Ee(u,n,r,1).minus(p).abs().cmp(Ee(c,t,r,1).minus(p).abs())<1?[u,n]:[c,t],y.precision=l,fe=!0,d};G.toHexadecimal=G.toHex=function(o,e){return Us(this,16,o,e)};G.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:Ot(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]?(fe=!1,t=Ee(t,o,0,e,1).times(o),fe=!0,ie(t)):(o.s=t.s,t=o),t};G.toNumber=function(){return+this};G.toOctal=function(o,e){return Us(this,8,o,e)};G.toPower=G.pow=function(o){var e,t,n,i,r,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(ut(+a,u));if(a=new c(a),a.eq(1))return a;if(n=c.precision,r=c.rounding,o.eq(1))return ie(a,n,r);if(e=ht(o.e/ue),e>=o.d.length-1&&(t=u<0?-u:u)<=td)return i=cc(c,a,t,n),o.s<0?new c(1).div(i):ie(i,n,r);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=ut(+a,u),e=t==0||!isFinite(t)?ht(u*(Math.log("0."+At(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):(fe=!1,c.rounding=a.s=1,t=Math.min(12,(e+"").length),i=Ws(o.times(_n(a,n+t)),n),i.d&&(i=ie(i,n+5,1),so(i.d,n,r)&&(e=n+10,i=ie(Ws(o.times(_n(a,e+t)),e),e+5,1),+At(i.d).slice(n+1,n+15)+1==1e14&&(i=ie(i,n+1,0)))),i.s=s,fe=!0,c.rounding=r,ie(i,n,r))};G.toPrecision=function(o,e){var t,n=this,i=n.constructor;return o===void 0?t=yn(n,n.e<=i.toExpNeg||n.e>=i.toExpPos):(Ot(o,1,Dn),e===void 0?e=i.rounding:Ot(e,0,8),n=ie(new i(n),o,e),t=yn(n,o<=n.e||n.e<=i.toExpNeg,o)),n.isNeg()&&!n.isZero()?"-"+t:t};G.toSignificantDigits=G.toSD=function(o,e){var t=this,n=t.constructor;return o===void 0?(o=n.precision,e=n.rounding):(Ot(o,1,Dn),e===void 0?e=n.rounding:Ot(e,0,8)),ie(new n(t),o,e)};G.toString=function(){var o=this,e=o.constructor,t=yn(o,o.e<=e.toExpNeg||o.e>=e.toExpPos);return o.isNeg()&&!o.isZero()?"-"+t:t};G.truncated=G.trunc=function(){return ie(new this.constructor(this),this.e+1,1)};G.valueOf=G.toJSON=function(){var o=this,e=o.constructor,t=yn(o,o.e<=e.toExpNeg||o.e>=e.toExpPos);return o.isNeg()?"-"+t:t};function At(o){var e,t,n,i=o.length-1,r="",s=o[0];if(i>0){for(r+=s,e=1;e<i;e++)n=o[e]+"",t=ue-n.length,t&&(r+=En(t)),r+=n;s=o[e],n=s+"",t=ue-n.length,t&&(r+=En(t))}else if(s===0)return"0";for(;s%10===0;)s/=10;return r+s}function Ot(o,e,t){if(o!==~~o||o<e||o>t)throw Error(Vn+o)}function so(o,e,t,n){var i,r,s,a;for(r=o[0];r>=10;r/=10)--e;return--e<0?(e+=ue,i=0):(i=Math.ceil((e+1)/ue),e%=ue),r=ut(10,ue-e),a=o[i]%r|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==r||t>3&&a+1==r/2)&&(o[i+1]/r/100|0)==ut(10,e-2)-1||(a==r/2||a==0)&&(o[i+1]/r/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==r||!n&&t>3&&a+1==r/2)&&(o[i+1]/r/1e3|0)==ut(10,e-3)-1,s}function br(o,e,t){for(var n,i=[0],r,s=0,a=o.length;s<a;){for(r=i.length;r--;)i[r]*=e;for(i[0]+=_s.indexOf(o.charAt(s++)),n=0;n<i.length;n++)i[n]>t-1&&(i[n+1]===void 0&&(i[n+1]=0),i[n+1]+=i[n]/t|0,i[n]%=t)}return i.reverse()}function id(o,e){var t,n,i;if(e.isZero())return e;n=e.d.length,n<32?(t=Math.ceil(n/3),i=(1/hr(4,t)).toString()):(t=16,i="2.3283064365386962890625e-10"),o.precision+=t,e=Ci(o,1,e.times(i),new o(1));for(var r=t;r--;){var s=e.times(e);e=s.times(s).minus(s).times(8).plus(1)}return o.precision-=t,e}var Ee=function(){function o(n,i,r){var s,a=0,c=n.length;for(n=n.slice();c--;)s=n[c]*i+a,n[c]=s%r|0,a=s/r|0;return a&&n.unshift(a),n}function e(n,i,r,s){var a,c;if(r!=s)c=r>s?1:-1;else for(a=c=0;a<r;a++)if(n[a]!=i[a]){c=n[a]>i[a]?1:-1;break}return c}function t(n,i,r,s){for(var a=0;r--;)n[r]-=a,a=n[r]<i[r]?1:0,n[r]=a*s+n[r]-i[r];for(;!n[0]&&n.length>1;)n.shift()}return function(n,i,r,s,a,c){var u,l,m,d,p,f,y,b,g,P,h,B,T,k,S,x,K,I,C,M,F=n.constructor,R=n.s==i.s?1:-1,L=n.d,V=i.d;if(!L||!L[0]||!V||!V[0])return new F(!n.s||!i.s||(L?V&&L[0]==V[0]:!V)?NaN:L&&L[0]==0||!V?R*0:R/0);for(c?(p=1,l=n.e-i.e):(c=rn,p=ue,l=ht(n.e/p)-ht(i.e/p)),C=V.length,K=L.length,g=new F(R),P=g.d=[],m=0;V[m]==(L[m]||0);m++);if(V[m]>(L[m]||0)&&l--,r==null?(k=r=F.precision,s=F.rounding):a?k=r+(n.e-i.e)+1:k=r,k<0)P.push(1),f=!0;else{if(k=k/p+2|0,m=0,C==1){for(d=0,V=V[0],k++;(m<K||d)&&k--;m++)S=d*c+(L[m]||0),P[m]=S/V|0,d=S%V|0;f=d||m<K}else{for(d=c/(V[0]+1)|0,d>1&&(V=o(V,d,c),L=o(L,d,c),C=V.length,K=L.length),x=C,h=L.slice(0,C),B=h.length;B<C;)h[B++]=0;M=V.slice(),M.unshift(0),I=V[0],V[1]>=c/2&&++I;do d=0,u=e(V,h,C,B),u<0?(T=h[0],C!=B&&(T=T*c+(h[1]||0)),d=T/I|0,d>1?(d>=c&&(d=c-1),y=o(V,d,c),b=y.length,B=h.length,u=e(y,h,b,B),u==1&&(d--,t(y,C<b?M:V,b,c))):(d==0&&(u=d=1),y=V.slice()),b=y.length,b<B&&y.unshift(0),t(h,y,B,c),u==-1&&(B=h.length,u=e(V,h,C,B),u<1&&(d++,t(h,C<B?M:V,B,c))),B=h.length):u===0&&(d++,h=[0]),P[m++]=d,u&&h[0]?h[B++]=L[x]||0:(h=[L[x]],B=1);while((x++<K||h[0]!==void 0)&&k--);f=h[0]!==void 0}P[0]||P.shift()}if(p==1)g.e=l,ic=f;else{for(m=1,d=P[0];d>=10;d/=10)m++;g.e=m+l*p-1,ie(g,a?r+g.e+1:r,s,f)}return g}}();function ie(o,e,t,n){var i,r,s,a,c,u,l,m,d,p=o.constructor;e:if(e!=null){if(m=o.d,!m)return o;for(i=1,a=m[0];a>=10;a/=10)i++;if(r=e-i,r<0)r+=ue,s=e,l=m[d=0],c=l/ut(10,i-s-1)%10|0;else if(d=Math.ceil((r+1)/ue),a=m.length,d>=a)if(n){for(;a++<=d;)m.push(0);l=c=0,i=1,r%=ue,s=r-ue+1}else break e;else{for(l=a=m[d],i=1;a>=10;a/=10)i++;r%=ue,s=r-ue+i,c=s<0?0:l/ut(10,i-s-1)%10|0}if(n=n||e<0||m[d+1]!==void 0||(s<0?l:l%ut(10,i-s-1)),u=t<4?(c||n)&&(t==0||t==(o.s<0?3:2)):c>5||c==5&&(t==4||n||t==6&&(r>0?s>0?l/ut(10,i-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]=ut(10,(ue-e%ue)%ue),o.e=-e||0):m[0]=o.e=0,o;if(r==0?(m.length=d,a=1,d--):(m.length=d+1,a=ut(10,ue-r),m[d]=s>0?(l/ut(10,i-s)%ut(10,s)|0)*a:0),u)for(;;)if(d==0){for(r=1,s=m[0];s>=10;s/=10)r++;for(s=m[0]+=a,a=1;s>=10;s/=10)a++;r!=a&&(o.e++,m[0]==rn&&(m[0]=1));break}else{if(m[d]+=a,m[d]!=rn)break;m[d--]=0,a=1}for(r=m.length;m[--r]===0;)m.pop()}return fe&&(o.e>p.maxE?(o.d=null,o.e=NaN):o.e<p.minE&&(o.e=0,o.d=[0])),o}function yn(o,e,t){if(!o.isFinite())return mc(o);var n,i=o.e,r=At(o.d),s=r.length;return e?(t&&(n=t-s)>0?r=r.charAt(0)+"."+r.slice(1)+En(n):s>1&&(r=r.charAt(0)+"."+r.slice(1)),r=r+(o.e<0?"e":"e+")+o.e):i<0?(r="0."+En(-i-1)+r,t&&(n=t-s)>0&&(r+=En(n))):i>=s?(r+=En(i+1-s),t&&(n=t-i-1)>0&&(r=r+"."+En(n))):((n=i+1)<s&&(r=r.slice(0,n)+"."+r.slice(n)),t&&(n=t-s)>0&&(i+1===s&&(r+="."),r+=En(n))),r}function kr(o,e){var t=o[0];for(e*=ue;t>=10;t/=10)e++;return e}function Pr(o,e,t){if(e>nd)throw fe=!0,t&&(o.precision=t),Error(oc);return ie(new o(gr),e,1,!0)}function on(o,e,t){if(e>Ds)throw Error(oc);return ie(new o(Ar),e,t,!0)}function uc(o){var e=o.length-1,t=e*ue+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 En(o){for(var e="";o--;)e+="0";return e}function cc(o,e,t,n){var i,r=new o(1),s=Math.ceil(n/ue+4);for(fe=!1;;){if(t%2&&(r=r.times(e),tc(r.d,s)&&(i=!0)),t=ht(t/2),t===0){t=r.d.length-1,i&&r.d[t]===0&&++r.d[t];break}e=e.times(e),tc(e.d,s)}return fe=!0,r}function ec(o){return o.d[o.d.length-1]&1}function lc(o,e,t){for(var n,i=new o(e[0]),r=0;++r<e.length;)if(n=new o(e[r]),n.s)i[t](n)&&(i=n);else{i=n;break}return i}function Ws(o,e){var t,n,i,r,s,a,c,u=0,l=0,m=0,d=o.constructor,p=d.rounding,f=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?(fe=!1,c=f):c=e,a=new d(.03125);o.e>-2;)o=o.times(a),m+=5;for(n=Math.log(ut(2,m))/Math.LN10*2+5|0,c+=n,t=r=s=new d(1),d.precision=c;;){if(r=ie(r.times(o),c,1),t=t.times(++l),a=s.plus(Ee(r,t,c,1)),At(a.d).slice(0,c)===At(s.d).slice(0,c)){for(i=m;i--;)s=ie(s.times(s),c,1);if(e==null)if(u<3&&so(s.d,c-n,p,u))d.precision=c+=10,t=r=a=new d(1),l=0,u++;else return ie(s,d.precision=f,p,fe=!0);else return d.precision=f,s}s=a}}function _n(o,e){var t,n,i,r,s,a,c,u,l,m,d,p=1,f=10,y=o,b=y.d,g=y.constructor,P=g.rounding,h=g.precision;if(y.s<0||!b||!b[0]||!y.e&&b[0]==1&&b.length==1)return new g(b&&!b[0]?-1/0:y.s!=1?NaN:b?0:y);if(e==null?(fe=!1,l=h):l=e,g.precision=l+=f,t=At(b),n=t.charAt(0),Math.abs(r=y.e)<15e14){for(;n<7&&n!=1||n==1&&t.charAt(1)>3;)y=y.times(o),t=At(y.d),n=t.charAt(0),p++;r=y.e,n>1?(y=new g("0."+t),r++):y=new g(n+"."+t.slice(1))}else return u=Pr(g,l+2,h).times(r+""),y=_n(new g(n+"."+t.slice(1)),l-f).plus(u),g.precision=h,e==null?ie(y,h,P,fe=!0):y;for(m=y,c=s=y=Ee(y.minus(1),y.plus(1),l,1),d=ie(y.times(y),l,1),i=3;;){if(s=ie(s.times(d),l,1),u=c.plus(Ee(s,new g(i),l,1)),At(u.d).slice(0,l)===At(c.d).slice(0,l))if(c=c.times(2),r!==0&&(c=c.plus(Pr(g,l+2,h).times(r+""))),c=Ee(c,new g(p),l,1),e==null)if(so(c.d,l-f,P,a))g.precision=l+=f,u=s=y=Ee(m.minus(1),m.plus(1),l,1),d=ie(y.times(y),l,1),i=a=1;else return ie(c,g.precision=h,P,fe=!0);else return g.precision=h,c;c=u,i+=2}}function mc(o){return String(o.s*o.s/0)}function qs(o,e){var t,n,i;for((t=e.indexOf("."))>-1&&(e=e.replace(".","")),(n=e.search(/e/i))>0?(t<0&&(t=n),t+=+e.slice(n+1),e=e.substring(0,n)):t<0&&(t=e.length),n=0;e.charCodeAt(n)===48;n++);for(i=e.length;e.charCodeAt(i-1)===48;--i);if(e=e.slice(n,i),e){if(i-=n,o.e=t=t-n-1,o.d=[],n=(t+1)%ue,t<0&&(n+=ue),n<i){for(n&&o.d.push(+e.slice(0,n)),i-=ue;n<i;)o.d.push(+e.slice(n,n+=ue));e=e.slice(n),n=ue-e.length}else n-=i;for(;n--;)e+="0";o.d.push(+e),fe&&(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 od(o,e){var t,n,i,r,s,a,c,u,l;if(e.indexOf("_")>-1){if(e=e.replace(/(\d)_(?=\d)/g,"$1"),ac.test(e))return qs(o,e)}else if(e==="Infinity"||e==="NaN")return+e||(o.s=NaN),o.e=NaN,o.d=null,o;if(Jm.test(e))t=16,e=e.toLowerCase();else if($m.test(e))t=2;else if(ed.test(e))t=8;else throw Error(Vn+e);for(r=e.search(/p/i),r>0?(c=+e.slice(r+1),e=e.substring(2,r)):e=e.slice(2),r=e.indexOf("."),s=r>=0,n=o.constructor,s&&(e=e.replace(".",""),a=e.length,r=a-r,i=cc(n,new n(t),r,r*2)),u=br(e,t,rn),l=u.length-1,r=l;u[r]===0;--r)u.pop();return r<0?new n(o.s*0):(o.e=kr(u,l),o.d=u,fe=!1,s&&(o=Ee(o,i,a*4)),c&&(o=o.times(Math.abs(c)<54?ut(2,c):ao.pow(2,c))),fe=!0,o)}function rd(o,e){var t,n=e.d.length;if(n<3)return e.isZero()?e:Ci(o,2,e,e);t=1.4*Math.sqrt(n),t=t>16?16:t|0,e=e.times(1/hr(5,t)),e=Ci(o,2,e,e);for(var i,r=new o(5),s=new o(16),a=new o(20);t--;)i=e.times(e),e=e.times(r.plus(i.times(s.times(i).minus(a))));return e}function Ci(o,e,t,n,i){var r,s,a,c,u=1,l=o.precision,m=Math.ceil(l/ue);for(fe=!1,c=t.times(t),a=new o(n);;){if(s=Ee(a.times(c),new o(e++*e++),l,1),a=i?n.plus(s):n.minus(s),n=Ee(s.times(c),new o(e++*e++),l,1),s=a.plus(n),s.d[m]!==void 0){for(r=m;s.d[r]===a.d[r]&&r--;);if(r==-1)break}r=a,a=n,n=s,s=r,u++}return fe=!0,s.d.length=m+1,s}function hr(o,e){for(var t=o;--e;)t*=o;return t}function dc(o,e){var t,n=e.s<0,i=on(o,o.precision,1),r=i.times(.5);if(e=e.abs(),e.lte(r))return hn=n?4:1,e;if(t=e.divToInt(i),t.isZero())hn=n?3:2;else{if(e=e.minus(t.times(i)),e.lte(r))return hn=ec(t)?n?2:3:n?4:1,e;hn=ec(t)?n?1:4:n?3:2}return e.minus(i).abs()}function Us(o,e,t,n){var i,r,s,a,c,u,l,m,d,p=o.constructor,f=t!==void 0;if(f?(Ot(t,1,Dn),n===void 0?n=p.rounding:Ot(n,0,8)):(t=p.precision,n=p.rounding),!o.isFinite())l=mc(o);else{for(l=yn(o),s=l.indexOf("."),f?(i=2,e==16?t=t*4-3:e==8&&(t=t*3-2)):i=e,s>=0&&(l=l.replace(".",""),d=new p(1),d.e=l.length-s,d.d=br(yn(d),10,i),d.e=d.d.length),m=br(l,10,i),r=c=m.length;m[--c]==0;)m.pop();if(!m[0])l=f?"0p+0":"0";else{if(s<0?r--:(o=new p(o),o.d=m,o.e=r,o=Ee(o,d,t,n,0,i),m=o.d,r=o.e,u=ic),s=m[t],a=i/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]>i-1;)m[t]=0,t||(++r,m.unshift(1));for(c=m.length;!m[c-1];--c);for(s=0,l="";s<c;s++)l+=_s.charAt(m[s]);if(f){if(c>1)if(e==16||e==8){for(s=e==16?4:3,--c;c%s;c++)l+="0";for(m=br(l,i,e),c=m.length;!m[c-1];--c);for(s=1,l="1.";s<c;s++)l+=_s.charAt(m[s])}else l=l.charAt(0)+"."+l.slice(1);l=l+(r<0?"p":"p+")+r}else if(r<0){for(;++r;)l="0"+l;l="0."+l}else if(++r>c)for(r-=c;r--;)l+="0";else r<c&&(l=l.slice(0,r)+"."+l.slice(r))}l=(e==16?"0x":e==2?"0b":e==8?"0o":"")+l}return o.s<0?"-"+l:l}function tc(o,e){if(o.length>e)return o.length=e,!0}function sd(o){return new this(o).abs()}function ad(o){return new this(o).acos()}function ud(o){return new this(o).acosh()}function cd(o,e){return new this(o).plus(e)}function ld(o){return new this(o).asin()}function md(o){return new this(o).asinh()}function dd(o){return new this(o).atan()}function pd(o){return new this(o).atanh()}function fd(o,e){o=new this(o),e=new this(e);var t,n=this.precision,i=this.rounding,r=n+4;return!o.s||!e.s?t=new this(NaN):!o.d&&!e.d?(t=on(this,r,1).times(e.s>0?.25:.75),t.s=o.s):!e.d||o.isZero()?(t=e.s<0?on(this,n,i):new this(0),t.s=o.s):!o.d||e.isZero()?(t=on(this,r,1).times(.5),t.s=o.s):e.s<0?(this.precision=r,this.rounding=1,t=this.atan(Ee(o,e,r,1)),e=on(this,r,1),this.precision=n,this.rounding=i,t=o.s<0?t.minus(e):t.plus(e)):t=this.atan(Ee(o,e,r,1)),t}function yd(o){return new this(o).cbrt()}function bd(o){return ie(o=new this(o),o.e+1,2)}function gd(o,e,t){return new this(o).clamp(e,t)}function Ad(o){if(!o||typeof o!="object")throw Error(wr+"Object expected");var e,t,n,i=o.defaults===!0,r=["precision",1,Dn,"rounding",0,8,"toExpNeg",-Ki,0,"toExpPos",0,Ki,"maxE",0,Ki,"minE",-Ki,0,"modulo",0,9];for(e=0;e<r.length;e+=3)if(t=r[e],i&&(this[t]=Vs[t]),(n=o[t])!==void 0)if(ht(n)===n&&n>=r[e+1]&&n<=r[e+2])this[t]=n;else throw Error(Vn+t+": "+n);if(t="crypto",i&&(this[t]=Vs[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(rc);else this[t]=!1;else throw Error(Vn+t+": "+n);return this}function Pd(o){return new this(o).cos()}function wd(o){return new this(o).cosh()}function pc(o){var e,t,n;function i(r){var s,a,c,u=this;if(!(u instanceof i))return new i(r);if(u.constructor=i,nc(r)){u.s=r.s,fe?!r.d||r.e>i.maxE?(u.e=NaN,u.d=null):r.e<i.minE?(u.e=0,u.d=[0]):(u.e=r.e,u.d=r.d.slice()):(u.e=r.e,u.d=r.d?r.d.slice():r.d);return}if(c=typeof r,c==="number"){if(r===0){u.s=1/r<0?-1:1,u.e=0,u.d=[0];return}if(r<0?(r=-r,u.s=-1):u.s=1,r===~~r&&r<1e7){for(s=0,a=r;a>=10;a/=10)s++;fe?s>i.maxE?(u.e=NaN,u.d=null):s<i.minE?(u.e=0,u.d=[0]):(u.e=s,u.d=[r]):(u.e=s,u.d=[r]);return}else if(r*0!==0){r||(u.s=NaN),u.e=NaN,u.d=null;return}return qs(u,r.toString())}else if(c!=="string")throw Error(Vn+r);return(a=r.charCodeAt(0))===45?(r=r.slice(1),u.s=-1):(a===43&&(r=r.slice(1)),u.s=1),ac.test(r)?qs(u,r):od(u,r)}if(i.prototype=G,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.EUCLID=9,i.config=i.set=Ad,i.clone=pc,i.isDecimal=nc,i.abs=sd,i.acos=ad,i.acosh=ud,i.add=cd,i.asin=ld,i.asinh=md,i.atan=dd,i.atanh=pd,i.atan2=fd,i.cbrt=yd,i.ceil=bd,i.clamp=gd,i.cos=Pd,i.cosh=wd,i.div=kd,i.exp=hd,i.floor=Td,i.hypot=Id,i.ln=Bd,i.log=xd,i.log10=Kd,i.log2=Sd,i.max=Cd,i.min=Rd,i.mod=Ld,i.mul=Nd,i.pow=Od,i.random=Md,i.round=vd,i.sign=Fd,i.sin=Ed,i.sinh=_d,i.sqrt=Vd,i.sub=Dd,i.sum=Wd,i.tan=qd,i.tanh=Ud,i.trunc=Gd,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 i.config(o),i}function kd(o,e){return new this(o).div(e)}function hd(o){return new this(o).exp()}function Td(o){return ie(o=new this(o),o.e+1,3)}function Id(){var o,e,t=new this(0);for(fe=!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 fe=!0,new this(1/0);t=e}return fe=!0,t.sqrt()}function nc(o){return o instanceof ao||o&&o.toStringTag===sc||!1}function Bd(o){return new this(o).ln()}function xd(o,e){return new this(o).log(e)}function Sd(o){return new this(o).log(2)}function Kd(o){return new this(o).log(10)}function Cd(){return lc(this,arguments,"lt")}function Rd(){return lc(this,arguments,"gt")}function Ld(o,e){return new this(o).mod(e)}function Nd(o,e){return new this(o).mul(e)}function Od(o,e){return new this(o).pow(e)}function Md(o){var e,t,n,i,r=0,s=new this(1),a=[];if(o===void 0?o=this.precision:Ot(o,1,Dn),n=Math.ceil(o/ue),this.crypto)if(crypto.getRandomValues)for(e=crypto.getRandomValues(new Uint32Array(n));r<n;)i=e[r],i>=429e7?e[r]=crypto.getRandomValues(new Uint32Array(1))[0]:a[r++]=i%1e7;else if(crypto.randomBytes){for(e=crypto.randomBytes(n*=4);r<n;)i=e[r]+(e[r+1]<<8)+(e[r+2]<<16)+((e[r+3]&127)<<24),i>=214e7?crypto.randomBytes(4).copy(e,r):(a.push(i%1e7),r+=4);r=n/4}else throw Error(rc);else for(;r<n;)a[r++]=Math.random()*1e7|0;for(n=a[--r],o%=ue,n&&o&&(i=ut(10,ue-o),a[r]=(n/i|0)*i);a[r]===0;r--)a.pop();if(r<0)t=0,a=[0];else{for(t=-1;a[0]===0;t-=ue)a.shift();for(n=1,i=a[0];i>=10;i/=10)n++;n<ue&&(t-=ue-n)}return s.e=t,s.d=a,s}function vd(o){return ie(o=new this(o),o.e+1,this.rounding)}function Fd(o){return o=new this(o),o.d?o.d[0]?o.s:0*o.s:o.s||NaN}function Ed(o){return new this(o).sin()}function _d(o){return new this(o).sinh()}function Vd(o){return new this(o).sqrt()}function Dd(o,e){return new this(o).sub(e)}function Wd(){var o=0,e=arguments,t=new this(e[o]);for(fe=!1;t.s&&++o<e.length;)t=t.plus(e[o]);return fe=!0,ie(t,this.precision,this.rounding)}function qd(o){return new this(o).tan()}function Ud(o){return new this(o).tanh()}function Gd(o){return ie(o=new this(o),o.e+1,1)}G[Symbol.for("nodejs.util.inspect.custom")]=G.toString;G[Symbol.toStringTag]="Decimal";var ao=G.constructor=pc(Vs);gr=new ao(gr);Ar=new ao(Ar);var N=ao;import Zd from"big.js";import Wn from"bn.js";import Xd from"toformat";var zd=Xd,uo=zd;import Ir from"big.js";import Qd from"bn.js";import Yd from"decimal.js-light";import co from"bn.js";var Gs=(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))(Gs||{}),fc=9007199254740991;function ee(o){let e=Pe("Raydium_parseBigNumberish");if(o instanceof co)return o;if(typeof o=="string"){if(o.match(/^-?[0-9]+$/))return new co(o);e.logWithError(`invalid BigNumberish string: ${o}`)}return typeof o=="number"?(o%1&&e.logWithError(`BigNumberish number underflow: ${o}`),(o>=fc||o<=-fc)&&e.logWithError(`BigNumberish number overflow: ${o}`),new co(String(o))):typeof o=="bigint"?new co(o.toString()):(e.error(`invalid BigNumberish value: ${o}`),new co(0))}var Tr=Pe("module/fraction"),Xs=uo(Ir),lo=uo(Yd),Hd={[0]:lo.ROUND_DOWN,[1]:lo.ROUND_HALF_UP,[2]:lo.ROUND_UP},jd={[0]:Ir.roundDown,[1]:Ir.roundHalfUp,[2]:Ir.roundUp},ye=class{constructor(e,t=new Qd(1)){this.numerator=ee(e),this.denominator=ee(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new ye(this.denominator,this.numerator)}add(e){let t=e instanceof ye?e:new ye(ee(e));return this.denominator.eq(t.denominator)?new ye(this.numerator.add(t.numerator),this.denominator):new ye(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof ye?e:new ye(ee(e));return this.denominator.eq(t.denominator)?new ye(this.numerator.sub(t.numerator),this.denominator):new ye(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof ye?e:new ye(ee(e));return new ye(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof ye?e:new ye(ee(e));return new ye(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Tr.logWithError(`${e} is not an integer.`),e<=0&&Tr.logWithError(`${e} is not positive.`),lo.set({precision:e+1,rounding:Hd[n]});let i=new lo(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Tr.logWithError(`${e} is not an integer.`),e<0&&Tr.logWithError(`${e} is negative.`),Xs.DP=e,Xs.RM=jd[n]||1,new Xs(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var $d=Pe("Raydium_amount"),Br=uo(Zd);function yc(o,e){let t="0",n="0";if(o.includes(".")){let i=o.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):$d.logWithError(`invalid number string, num: ${o}`)}else t=o;return[t,n.slice(0,e)||n]}var Ke=class extends ye{constructor(t,n,i=!0,r){let s=new Wn(0),a=ri.pow(new Wn(t.decimals));if(i)s=ee(n);else{let c=new Wn(0),u=new Wn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=yc(n.toString(),t.decimals);c=ee(l),u=ee(m)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=Pe(r||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new Ke(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Ke(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Br.DP=this.token.decimals,new Br(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}},oi=class extends ye{constructor(t,n,i=!0,r){let s=new Wn(0),a=ri.pow(new Wn(t.decimals));if(i)s=ee(n);else{let c=new Wn(0),u=new Wn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=yc(n.toString(),t.decimals);c=ee(l),u=ee(m)}c=c.mul(a),s=c.add(u)}super(s,a);this.logger=Pe(r||"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 oi(this.currency,this.raw.add(t.raw))}sub(t){return this.currency.equals(t.currency)||this.logger.logWithError("sub currency not equals"),new oi(this.currency,this.raw.sub(t.raw))}toSignificant(t=this.currency.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.currency.decimals,n,i=0){return t>this.currency.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return Br.DP=this.currency.decimals,new Br(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Jd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as bc}from"@solana/spl-token";var bn={chainId:101,address:Jd.default.toBase58(),programId:bc.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},dt={chainId:101,address:"So11111111111111111111111111111111111111112",programId:bc.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};import{PublicKey as js}from"@solana/web3.js";import{PublicKey as Ge,SystemProgram as gc,SYSVAR_RENT_PUBKEY as ep}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as tp}from"@solana/spl-token";function A({pubkey:o,isSigner:e=!1,isWritable:t=!0}){return{pubkey:o,isWritable:t,isSigner:e}}var zs=[A({pubkey:tp,isWritable:!1}),A({pubkey:gc.programId,isWritable:!1}),A({pubkey:ep,isWritable:!1})];function Qs({publicKey:o,transformSol:e}){let t=Ys(o.toString());if(t instanceof Ge)return e&&t.equals(pt)?$:t;if(e&&t.toString()===pt.toBase58())return $;if(typeof t=="string"){if(t===Ge.default.toBase58())return Ge.default;try{return new Ge(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Ys(o){try{return new Ge(o)}catch{return o}}var xr=new Ge("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),gn=new Ge("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),at=new Ge("SysvarRent111111111111111111111111111111111"),Hs=new Ge("SysvarC1ock11111111111111111111111111111111"),sn=new Ge("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Sr=new Ge("Sysvar1nstructions1111111111111111111111111"),Kr=gc.programId,Cg=new Ge("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Rg=new Ge("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Lg=new Ge("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ng=new Ge("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Og=new Ge("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Mg=new Ge("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),vg=new Ge("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Fg=new Ge("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Eg=new Ge("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),_g=new Ge("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Vg=new Ge("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),$=new Ge("So11111111111111111111111111111111111111112"),pt=Ge.default;function kt(o){return Qs({publicKey:o,transformSol:!0})}var Zs=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:r=!1,isToken2022:s=!1}){if(e===pt.toBase58()||e instanceof js&&pt.equals(e)){this.decimals=dt.decimals,this.symbol=dt.symbol,this.name=dt.name,this.mint=new js(dt.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=r?js.default:Qs({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Le=Zs;Le.WSOL=new Zs(U(v({},dt),{mint:dt.address}));var $s=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},mo=$s;mo.SOL=new $s(bn);function Yg(o,e){return o instanceof Le&&e instanceof Le?o.equals(e):o instanceof Le||e instanceof Le?!1:o===e}import np from"bn.js";var Ac=new ye(new np(100)),Ze=class extends ye{toSignificant(e=5,t,n){return this.mul(Ac).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Ac).toFixed(e,t,n)}};var ip=Pe("Raydium_price"),ft=class extends ye{constructor(t){let{baseToken:n,quoteToken:i,numerator:r,denominator:s}=t;super(r,s);this.baseToken=n,this.quoteToken=i,this.scalar=new ye(Js(n.decimals),Js(i.decimals))}get raw(){return new ye(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new ft({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&ip.logWithError("mul token not equals");let n=super.mul(t);return new ft({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};function it(o){if(o instanceof Ze)return new ye(o.numerator,o.denominator);if(o instanceof ft)return o.adjusted;if(o instanceof Ke)try{return it(o.toExact())}catch{return new ye(ot)}if(o instanceof ye)return o;let e=String(o),t=si(e);return new ye(t.numerator,t.denominator)}function yA(o){var n;if(o instanceof Ze)return{fr:new ye(o.numerator,o.denominator)};if(o instanceof ft)return{fr:o.adjusted};if(o instanceof Ke)return{fr:it(o.toExact()),decimals:o.token.decimals};if(o instanceof ye)return{fr:o};let e=String(o),t=si(e);return{fr:new ye(t.numerator,t.denominator),decimals:(n=t.dec)==null?void 0:n.length}}function bA(o,e){if(o==null||e==null)return!1;let t=it(o),n=it(e);return t.sub(n).numerator,t.sub(n).numerator.lt(ot)}function op(o,e){if(o==null||e==null)return!1;let t=it(o),n=it(e);return t.sub(n).numerator.gt(ot)}function gA(o,e){if(o==null||e==null)return!1;let t=it(o),n=it(e);return t.sub(n).numerator.lte(ot)}function AA(o,e){if(o==null||e==null)return!1;let t=it(o),n=it(e);return t.sub(n).numerator.gte(ot)}function rp(o,e){if(o==null||e==null)return!1;let t=it(o),n=it(e);return t.sub(n).numerator.eq(ot)}function PA(o,e){if(o==null||e==null)return;let t=it(o),n=it(e);try{return t.div(n)}catch{return t}}function wA(o,e){if(o==null||e==null)return;let t=it(o),n=it(e);return t.sub(n)}function kA(o){return o==null?!1:!rp(o,0)}function hA(o,e){return op(e,o)?e:o}function ea(o,e){if(o==null||e==null)return;let t=it(o),n=it(e);return t.mul(n)}function TA(o,e){if(o==null||e==null)return;let t=it(o),n=it(e);return t.add(n)}import{PublicKey as sp}from"@solana/web3.js";import ap from"bn.js";async function Pc(o){new Promise(e=>setTimeout(e,o))}function CA(){return new Date().getTime()}function ta(o){return typeof o=="object"&&o!==null&&![Le,Ke,sp,ye,ap,ft,Ze].some(e=>typeof e=="object"&&o instanceof e)}function Ve(o){return typeof o=="string"?Ys(o):Array.isArray(o)?o.map(e=>Ve(e)):ta(o)?Object.fromEntries(Object.entries(o).map(([e,t])=>[e,Ve(t)])):o}var ot=new $e(0),hc=new $e(1),qA=new $e(2),UA=new $e(3),GA=new $e(5),ri=new $e(10),XA=new $e(100),zA=new $e(1e3),QA=new $e(1e4);function Js(o){return ri.pow(ee(o))}function si(o){var a;if(o===void 0)return{denominator:"1",numerator:"0"};if(o instanceof $e)return{numerator:o.toString(),denominator:"1"};if(o instanceof ye)return{denominator:o.denominator.toString(),numerator:o.numerator.toString()};let e=String(o),[,t="",n="",i=""]=(a=e.replace(",","").match(/(-?)(\d*)\.?(\d*)/))!=null?a:[],r="1"+"0".repeat(i.length),s=t+(n==="0"?"":n)+i||"0";return{denominator:r,numerator:s,sign:t,int:n,dec:i}}function Cr(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 up(o){var n;let[,e="",t=""]=(n=o.toFixed(2).match(/(-?)(\d*)\.?(\d*)/))!=null?n:[];return`${e}${t}`}function cp(o,e=0){return o instanceof $e?o:new $e(up(Tc(o).mul(ri.pow(new $e(String(e))))))}function Tc(o){if(o instanceof Ze)return new ye(o.numerator,o.denominator);if(o instanceof ft)return o.adjusted;if(o instanceof Ke)try{return Tc(o.toExact())}catch{return new ye(ot)}if(o instanceof ye)return o;let e=String(o),t=si(e);return new ye(t.numerator,t.denominator)}function Rr(o,e,t){return o.mul(e).add(t).sub(new $e(1)).div(t)}function na(o,e,t){return o.mul(e).div(t)}function YA(o,e){let{numerator:t,denominator:n}=si(o);return new Ze(new $e(t),new $e(n).mul(e!=null&&e.alreadyDecimaled?new $e(100):new $e(1)))}function HA(o){let{token:e,numberPrice:t,decimalDone:n}=o,i=new Le({mint:"",decimals:6,symbol:"usd",name:"usd",skipMint:!0}),{numerator:r,denominator:s}=si(t),a=n?new $e(r).mul(ri.pow(new $e(e.decimals))):r,c=new $e(s).mul(ri.pow(new $e(i.decimals)));return new ft({baseToken:i,denominator:c.toString(),quoteToken:new Le(U(v({},e),{skipMint:!0,mint:""})),numerator:a.toString()})}function wc(o){let e=new mo({decimals:6,symbol:"usd",name:"usd"}),t=cp(ea(o,10**e.decimals));return new oi(e,t)}function jA(o,e){return wc(!e||!o?0:ea(o,e))}function lp(o){if(o==null)return;let{numerator:e,denominator:t}=si(o.toString());return new ye(e,t)}function mp(o){return o instanceof N}function kc(o){return mp(o)?lp(o):Array.isArray(o)?o.map(e=>kc(e)):ta(o)?Object.fromEntries(Object.entries(o).map(([e,t])=>[e,kc(t)])):o}var Ic=o=>typeof o=="number",Bc=o=>o?new Date(o):new Date,dp=o=>Bc(o).getTime();function xc(o,e,t){let n=Ic(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(o).getTime()<=n}function Sc(o,e,t){let n=Ic(e)?e*((t==null?void 0:t.unit)==="s"?1e3:1):e;return new Date(o).getTime()>n}function $A(o,e){let n=dp(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 Bc(n)}function Es(o,e=1,t=[]){let n=[...o];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}function eP(o,...e){return o.filter(t=>e.every(n=>n.includes(t)))}function tP(o,...e){return o.filter(t=>e.every(n=>!n.includes(t)))}function nP(o){return[...new Set(o)]}var an=class{constructor(e){this._owner=e}get publicKey(){return an.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return an.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return an.isKeyPair(this._owner)}get isPublicKey(){return an.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!an.isKeyPair(e)}};import{PublicKey as gp}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ap}from"@solana/spl-token";import{ComputeBudgetProgram as Kc,Keypair as Cc,PublicKey as Rc,Transaction as Nr,TransactionMessage as pp,VersionedTransaction as ia}from"@solana/web3.js";var Tn=(t=>(t[t.V0=0]="V0",t[t.LEGACY=1]="LEGACY",t))(Tn||{}),X={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",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",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",FarmV4Withdraw:"FarmV4Withdraw",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",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{TOKEN_PROGRAM_ID as fp}from"@solana/spl-token";var In=Pe("Raydium_txUtil"),Lc=1644;function Or(o){let e=[],t=[];return o.microLamports&&(e.push(Kc.setComputeUnitPrice({microLamports:o.microLamports})),t.push(X.SetComputeUnitPrice)),o.units&&(e.push(Kc.setComputeUnitLimit({units:o.units})),t.push(X.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Ri(o,e){var n,i;let t=e!=null?e:"confirmed";return(i=await((n=o.getLatestBlockhash)==null?void 0:n.call(o,{commitment:t})))==null?void 0:i.blockhash}async function Mr(o,e){return o.getSignatureStatuses([e]),new Promise((t,n)=>{let i=setTimeout(n,6e4);o.onSignature(e,r=>{if(clearTimeout(i),!r.err){t("");return}n(Object.assign(r.err,{txId:e}))},"confirmed")})}function vr(o,e){o.length<1&&In.logWithError(`no instructions provided: ${o.toString()}`),e.length<1&&In.logWithError(`no signers provided:, ${e.toString()}`);let t=new Nr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...o);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Lc}catch{return!1}}async function Nc(o,e,t,n=!0){let i=new Rc("RaydiumSimuLateTransaction11111111111111111"),r=[],s=new Nr;s.feePayer=i;for(let u of e)vr([...s.instructions,u],[i])||(r.push(s),s=new Nr,s.feePayer=i),s.add(u);s.instructions.length>0&&r.push(s);let a=[];try{if(a=await yp(o,r,n),a.find(u=>u.err!==null))throw Error("rpc simulateTransaction error")}catch(u){u instanceof Error&&In.logWithError("failed to simulate for instructions","RPC_ERROR",{message:u.message})}let c=[];for(let u of a)if(In.debug("simulate result:",u),u.logs){let l=u.logs.filter(m=>m&&m.includes(t));In.debug("filteredLog:",c),l.length||In.logWithError("simulate log not match keyword","keyword",t),c.push(...l)}return c}function Oc(o,e){let t=o.match(/{["\w:,]+}/g);return!t||t.length!==1?In.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Bn(o,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(o);return!n||n.length!==2?In.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function oe(o,e){let[t,n]=Rc.findProgramAddressSync(o,e);return{publicKey:t,nonce:n}}async function yp(o,e,t){let n=[];if(t){let i=await o.getLatestBlockhash(),r=[];for(let u of e){u.recentBlockhash=i.blockhash,u.lastValidBlockHeight=i.lastValidBlockHeight;let m=u._compile().serialize(),p=u._serialize(m).toString("base64");r.push(p)}let s=r.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 i=>await(await o.simulateTransaction(i)).value))}catch(i){i instanceof Error&&In.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:i.message})}return n}function po({instructions:o,payer:e,signers:t}){return vr(o,[e,...t])}function fo({instructions:o,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Cc.generate().publicKey.toString()}){let r=new pp({payerKey:e,recentBlockhash:n,instructions:o}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new ia(r).serialize()).toString("base64").length<Lc}catch{return!1}}var Lr={time:0,data:void 0};async function yP(o){if(!Lr.data||(Date.now()-Lr.time)/1e3>30){let e=await o.getEpochInfo();return Lr={time:Date.now(),data:e},e}else return Lr.data}var Mc=o=>Buffer.isBuffer(o)?o:o instanceof Uint8Array?Buffer.from(o.buffer,o.byteOffset,o.byteLength):Buffer.from(o),bp=o=>{let e=o.serialize({requireAllSignatures:!1,verifySignatures:!1});o instanceof ia&&(e=Mc(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function ai(o){let e=[];return o.forEach(t=>{t instanceof Nr&&(t.recentBlockhash||(t.recentBlockhash=fp.toBase58()),t.feePayer||(t.feePayer=Cc.generate().publicKey)),e.push(bp(t))}),console.log("simulate tx string:",e),e}function bP(o){let e=o.serialize({requireAllSignatures:!1,verifySignatures:!1});return o instanceof ia&&(e=Mc(e)),e.toString("base64")}function Z(o,e,t){return oe([o.toBuffer(),(t!=null?t:Ap).toBuffer(),e.toBuffer()],new gp("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as se}from"@solana/web3.js";var oa=new se("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),ra=new se("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),sa=new se("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Li=new se("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Pp=new se("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),aa=new se("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Fr=new se("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),yo=new se("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),wp=new se("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Er=new se("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),qn=new se("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Ni=new se("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),bo=new se("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Un=new se("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),kp=new se("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),ua=new se("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),hp=new se("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Tp=new se("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Ip=new se("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Bp=new se("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),go=new se("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),ca=new se("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),xp=new se("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ao=new se("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Po=new se("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),yt=new se("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Sp=new se("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),TP=new se("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),IP=new se("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Kp=new se("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Cp=new se("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX"),wo={IDO_PROGRAM_ID_V1:hp,IDO_PROGRAM_ID_V2:Tp,IDO_PROGRAM_ID_V3:Ip,IDO_PROGRAM_ID_V4:Bp},St={AMM_V4:yo,AMM_STABLE:wp,CLMM_PROGRAM_ID:qn,CLMM_LOCK_PROGRAM_ID:Ni,CLMM_LOCK_AUTH_ID:bo,FARM_PROGRAM_ID_V3:oa,FARM_PROGRAM_ID_V4:ra,FARM_PROGRAM_ID_V5:sa,FARM_PROGRAM_ID_V6:Li,OPEN_BOOK_PROGRAM:aa,SERUM_PROGRAM_ID_V3:Fr,UTIL1216:Pp,Router:kp,CREATE_CPMM_POOL_PROGRAM:go,CREATE_CPMM_POOL_AUTH:ca,CREATE_CPMM_POOL_FEE_ACC:xp,LOCK_CPMM_PROGRAM:Ao,LOCK_CPMM_AUTH:Po,LAUNCHPAD_PROGRAM:yt,LAUNCHPAD_AUTH:Sp,LAUNCHPAD_PLATFORM:Kp,LAUNCHPAD_CONFIG:Cp,FEE_DESTINATION_ID:ua,MODEL_DATA_PUBKEY:Un},xn={OPEN_BOOK_PROGRAM:new se("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new se("Ray1111111111111111111111111111111111111111"),AMM_V4:new se("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new se("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new se("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new se("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new se("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new se("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new se("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new se("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new se("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new se("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:se.default,Router:new se("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new se("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new se("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new se("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new se("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new se("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new se("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new se("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new se("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new se("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new se("Ray1111111111111111111111111111111111111111")};import Be from"bn.js";var Kt=1e4;function SP(o,e,t,n){if(e===void 0)return{amount:o,fee:void 0,expirationTime:void 0};let i=t.epoch<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,r=new Be(i.maximumFee.toString()),s=t.epoch<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(i.transferFeeBasisPoints===Kt){let a=new Be(i.maximumFee.toString());return{amount:o.add(a),fee:a,expirationTime:s}}else{let a=Mt(o.mul(new Be(Kt)),new Be(Kt-i.transferFeeBasisPoints)),c=new Be(i.maximumFee.toString()),u=a.sub(o).gt(c)?o.add(c):a,l=Mt(u.mul(new Be(i.transferFeeBasisPoints)),new Be(Kt)),m=l.gt(r)?r:l;return{amount:u,fee:m,expirationTime:s}}else{let a=Mt(o.mul(new Be(i.transferFeeBasisPoints)),new Be(Kt)),c=a.gt(r)?r:a;return{amount:o,fee:c,expirationTime:s}}}function Ce(o,e,t,n){if(e===void 0)return{amount:o,fee:void 0,expirationTime:void 0};let i=U(v({},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}}),r=t.epoch<i.newerTransferFee.epoch?i.olderTransferFee:i.newerTransferFee,s=new Be(r.maximumFee.toString()),a=t.epoch<i.newerTransferFee.epoch?(Number(i.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(r.transferFeeBasisPoints===Kt){let c=new Be(r.maximumFee.toString());return{amount:o.add(c),fee:c,expirationTime:a}}else{let c=Mt(o.mul(new Be(Kt)),new Be(Kt-r.transferFeeBasisPoints)),u=new Be(r.maximumFee.toString()),l=c.sub(o).gt(u)?o.add(u):c,m=Mt(l.mul(new Be(r.transferFeeBasisPoints)),new Be(Kt)),d=m.gt(s)?s:m;return{amount:l,fee:d,expirationTime:a}}else{let c=Mt(o.mul(new Be(r.transferFeeBasisPoints)),new Be(Kt)),u=c.gt(s)?s:c;return{amount:o,fee:u,expirationTime:a}}}function un(o,e){return o===void 0?e:e===void 0?o:Math.min(o,e)}function Mt(o,e){let{div:t,mod:n}=o.divmod(e);return n.gt(new Be(0))?t.add(new Be(1)):t}function ui(o,e){if(o.isZero())return new Be(0);let t=o.div(e);return t.isZero()?new Be(1):o.mod(e).gt(new Be(0))?t.add(new Be(1)):t}function la(o,e,t){if(e===void 0)return{amount:o,fee:void 0,expirationTime:void 0};let n=Math.floor(t/432e3),i=n<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,r=new Be(i.maximumFee.toString()),s=n<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*432e3-t)*400/1e3:void 0,a=Mt(o.mul(new Be(i.transferFeeBasisPoints)),new Be(Kt)),c=a.gt(r)?r:a;return{amount:o,fee:c,expirationTime:s}}function ma(o,e,t){if(e===void 0)return{amount:o,fee:void 0,expirationTime:void 0};let n=Math.floor(t/432e3),i=n<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,r=new Be(i.maximumFee.toString()),s=n<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*432e3-t)*400/1e3:void 0;if(i.transferFeeBasisPoints===Kt){let a=new Be(i.maximumFee.toString());return{amount:o.add(a),fee:a,expirationTime:s}}else{let a=Mt(o.mul(new Be(Kt)),new Be(Kt-i.transferFeeBasisPoints)),c=new Be(i.maximumFee.toString()),u=a.sub(o).gt(c)?o.add(c):a,l=Mt(u.mul(new Be(i.transferFeeBasisPoints)),new Be(Kt)),m=l.gt(r)?r:l;return{amount:u,fee:m,expirationTime:s}}}import{PublicKey as da,AddressLookupTableAccount as Mi}from"@solana/web3.js";async function pa({connection:o,address:e,cluster:t="mainnet"}){let n=await nn(o,[...new Set(e.map(r=>r.toString()))].map(r=>new da(r))),i={};for(let r=0;r<e.length;r++){let s=n[r],a=e[r];if(!s)continue;let c=new Mi({key:a,state:Mi.deserialize(s.data)});i[a.toString()]=c,t==="devnet"?Oi[a.toString()]=c:_r[a.toString()]=c}return i}var _r={AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU:new Mi({key:new da("AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU"),state:Mi.deserialize(Buffer.from("AQAAAP//////////I1rcEwAAAAAvAQYwun9CU6c5Ikm2pAj+D9IEnCOR45nK+SFTGSdpd6J6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbd9uHXZaGT2cvhRs7reawctIXtX1s3kTqM9YV+/wCpBt324e51j94YQl285GzN2rYa/E2DuQ0n/r35KNihi/wFSlNQ+F3IgtYUpVZyeIopbd8eq6vQpgZ4iEky9O72oAVKU1qZKSEGTSTocWDaOHx8NbXdvJK7geQfqEBBBUSNBqfVFxksXFEhjMlMPUrxf1ja7gibof1E49vZigAAAAAGp9UXGMd0yShWY5hpHV62i164o5tLbVxzVVshAAAAAIyXJY9OJInxuz0QKRSODYMLWhOZ2v8QhASOe9jb6fhZC3BlsePRfEU4nVJ/awTDzVi4bHMaoP21SbbRvAP4KUbIScv+6Yw2LHF/6K0ZjUPibbSWXCirYPGuuVl7zT789IUPLW4CpHr4JNCatp3ELXDLKMv6JJ+37le50lbBJ2LvBkX2T9y7AHdNGviJAqQNtlDUDCnauQRWybsLji6nPM8Qkw5asQRvCdB3MbX6IEBwytOrpM32l4jQygKG9TKgR0vZScQ2AsM/IHeQ7RajUkyhuZdc8SGiqQz/7H34torNR/Wir3sl0ruUrVxJWEZfUg+QLNAxxODdBi53/OP7Ioil1cqeBM9dtZC3FLov4yyxWRM/wcGStyJX/QfTnLBAHqkqWotPKVlShCVQqpP9W5W1rOao65IMk5QuQ2kMIOxzDMKAy2vjGSxQODgBz0QwGA+eP4ZjIjrIAQaXENv31QfLlOdXSRCkaybRniDHF4C8YcwhcvsqrOVuTP4B2Na+9wLdtrB31uz2rtlFI5kahdsnp/d1SrASDInYCtTYtdoke4kX+hoKWcEWM4Tle8pTUkUVv4BxS6fje/EzKBE4Qu/YsA/yfEEFGcr8Z57VKDw8uQzpiru7g4lvjnfapW62W030syevD8k07SGoxUHiuT/ai7gAHWWhDsVmg/C63ajgpkH7Sn3GdutArDTfyqOkdqv4/IPC/EFFy7mGkfDd2C57N5a/4jC+BbmJy7wQaSEZr0CQU88lPtUxIVvzGjC95b8Ooss2TqmkrayGKofkPMGQn7Ux+9lfwBSNfxwH8NgbpqC/7LNlV4I7nCvsXf3p+ohQk9NrAJb2KAFpUqEIJ9ZBV7BYDzHF/ORKYlgtvPnXjudZQ6CEo5OzUDaNIomTCCsvhD16TxJjsbgne1kGnQPCFSoaxUbq2V1bPMFQ3VYP6wDZ9bKStCFKx9A3tNbwZFC5ZGAN83MFK7XoTy+OmmcFEr6rLOjfSuTfPvHJkSVxW6Qllwkl67XcBi5v00u2gQsbu+38sp+rd5pA/LvyWj4P94ZGZwc1tE2P88xekCLcAwZGb+UhFzL/7K26csOb57yM5bvF9xJrLEObOkAAAAAn+HWRkdcPKyFFMnVwEoD7vnD0jCKFIU1sImubYCxNTSVzsKpaQX+fzNxrLAI3L14JQnJx/D6Uk2LADIHGqnGELzjEbkBDAlaM77NkXMPfqXNLSveCkWI7UEgNs31WEWB6XHSYI/v5DklHOb4QTtDOR804PVbi3fjloZeLR2F8d4FuZmMMO7ck3Fnkn2zEMG5gOmqsygb6PjTitArVl52NhcSznTxVnguaIJxiZkAnurDmn3MWR0PC2GLghp2KJqHCc6QQ85odeIjFHKOlRlJyeSXVJmL8vb1UgOzsbJPVP8p6zM4M3C1Sd7uWIHP33G42AP2Zg8ucn/n6meQjjD266JgCWdxZD6PXs9CsnIeL7SSG0/6lGb9xfP0ZcWkCXB/3hjxHYVXjra/GPOeXGk0fLLKjCbk+mgs2w6d2oCwimBipTzuoZ30GiI8ij8VRzD5CzMWtu2m21eDBIfjGAEo4pQeNNonKcqzV/cleX8ySZLOHsz8PtBCrLqF+VkLm9hOzIT+6i/nIf6keR4GWKMOD4AvqfpjHoD4DuhBpz8P28+DxkGrDXXr/nr20x291VPvcTU/b+b+o2kC9G0kcXeTlLjU6a2TQXWlZ4gBUdBl1jgT7mObSTpLblNiXZsLkbmVXZwvFKXua5cUKlWed/w30skmEUraTuQqtqr5fHZPW9n57EmeTif6LjHL2YJFZkQU+TrJmFzqzmF4/b8OwrPQAprl8mX3q4LUIdAS/a+11B6DWD1Xk2++Sn94dLC4xjkO4Wtlw8c4XuzciVbepHOmnoWzVu/0y3KCrLCSfQxQ3br8DJCoVzhgtPsS2nZZjsBGIZgnU0QpMv+2MnRsnKwdp1VsrCX84j/qvaZn4WhKunippgTbN2EUs0tPTP55Qfgj+nKmjtWW5IYs72FrEwJKYoNfsmqaF4o5pf4v9zgPwVwY/5I4XJKUL2L25m9kAQcW/K+H1RTFEUoj8Z4ajpOmAB/dG0COmCphVMW2CCMvnxhcGiSgPnpDuWu6qiJ7NG7ye5kvHgefgqPLeicspNJ5EpL3XiRNLM2tmJLI1awAwOyd6iHv0dCkMYRKaa6rcaZeYwmKCkckm0kM2JNmnmmAaBQQ7mwmIM0IMxX4f5W6j9PqZWcJxF7r17T/lQBAmcjoupRiJifbnXCNUv9GhpRF19WcBdeKbivRJVlGop6I2RS6lGImJ9udcI1S/0aGlEXX1ZwF14puK9ElWUainojZFYVHLHD6dIP2ESjqBzg3ol1/wB7+/ylGwd9LS7wSZ2A630CJSVKwH47K9P4bB8PEQP8BwjMFa7xQHOqZFP1XqaQ==","base64"))})},Oi={},fa=async o=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Oi[e])return Oi;let t=new da(e),n=await o.getAccountInfo(t);return n&&(Oi[e]=new Mi({key:t,state:Mi.deserialize(n.data)})),Oi};import{PublicKey as vi,sendAndConfirmTransaction as ya,SystemProgram as Rp,Transaction as ko,TransactionMessage as ho,VersionedTransaction as To}from"@solana/web3.js";import Lp from"axios";var Vr=2e3,Dr=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,this.loopMultiTxStatus=!!e.loopMultiTxStatus}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 Lp.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}=Or(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(Rp.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new vi(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(X.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:r=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...r),this.lookupTableAddress.push(...s.filter(a=>a!==vi.default.toString())),this}async versionBuild({txVersion:e,extInfo:t}){return e===0?await this.buildV0(v({},t||{})):this.build(t)}build(e){var n;let t=new ko;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(i=>i.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 i=>{var l;let{recentBlockHash:r,skipPreflight:s=!0,sendAndConfirm:a,notSendToRpc:c}=i||{},u=r!=null?r:await Ri(this.connection,this.blockhashCommitment);if(t.recentBlockhash=u,this.signers.length&&t.sign(...this.signers),ai([t]),(l=this.owner)!=null&&l.isKeyPair)return{txId:a?await ya(this.connection,t,this.signers.find(d=>d.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 m=await this.signAllTransactions([t]);if(this.signers.length)for(let d of m)try{d.sign(...this.signers)}catch{}return{txId:c?"":await this.connection.sendRawTransaction(m[0].serialize(),{skipPreflight:s}),signedTx:m[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:i}=this.build(n),r=t.filter(l=>l.transaction.instructions.length>0),s=[i,...r.map(l=>l.transaction)],a=[this.signers,...r.map(l=>l.signers)],c=[...this.instructionTypes,...r.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 g;let{sequentially:m,onTxUpdate:d,skipTxCount:p=0,recentBlockHash:f,skipPreflight:y=!0}=l||{},b=f!=null?f:await Ri(this.connection,this.blockhashCommitment);if((g=this.owner)!=null&&g.isKeyPair){if(m){let P=[],h=0;for(let B of s){if(++h,h<=p)continue;let T=await ya(this.connection,B,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});P.push(T)}return{txIds:P,signedTxs:s}}return{txIds:await await Promise.all(s.map(async P=>(P.recentBlockhash=b,await this.connection.sendRawTransaction(P.serialize(),{skipPreflight:y})))),signedTxs:s}}if(this.signAllTransactions){let P=s.map((B,T)=>(B.recentBlockhash=b,a[T].length&&B.sign(...a[T]),B));ai(P);let h=await this.signAllTransactions(P);if(m){let B=0,T=[],k=async()=>{if(!h[B])return;let S=await this.connection.sendRawTransaction(h[B].serialize(),{skipPreflight:y});T.push({txId:S,status:"sent",signedTx:h[B]}),d==null||d([...T]),B++;let x=!1,K=null,I=null,C=M=>{K!==null&&clearInterval(K),I!==null&&this.connection.removeSignatureListener(I);let F=T.findIndex(R=>R.txId===S);if(F>-1){if(T[F].status==="error"||T[F].status==="success")return;T[F].status=M.err?"error":"success"}d==null||d([...T]),M.err||k()};this.loopMultiTxStatus&&(K=setInterval(async()=>{var M;if(x){clearInterval(K);return}try{let F=await this.connection.getTransaction(S,{commitment:"confirmed",maxSupportedTransactionVersion:0});F&&(x=!0,clearInterval(K),C({err:((M=F.meta)==null?void 0:M.err)||null}),console.log("tx status from getTransaction:",S))}catch(F){x=!0,clearInterval(K),console.error("getTransaction timeout:",F,S)}},Vr)),I=this.connection.onSignature(S,M=>{if(x){this.connection.removeSignatureListener(I);return}x=!0,C(M)},"confirmed"),this.connection.getSignatureStatus(S)};return await k(),{txIds:T.map(S=>S.txId),signedTxs:h}}else{let B=[];for(let T=0;T<h.length;T+=1){let k=await this.connection.sendRawTransaction(h[T].serialize(),{skipPreflight:y});B.push(k)}return{txIds:B,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 y;let f=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i,recentBlockhash:r}=f,s=ze(f,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),a=v(v({},this.cluster==="devnet"?await fa(this.connection):_r),t),c=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let b of c)a[b]===void 0&&u.push(new vi(b));let l=await pa({connection:this.connection,address:u});for(let[b,g]of Object.entries(l))a[b]=g;let m=i?vi.default.toBase58():r!=null?r:await Ri(this.connection,this.blockhashCommitment),d=new ho({payerKey:this.feePayer,recentBlockhash:m,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(a));((y=this.owner)==null?void 0:y.signer)&&!this.signers.some(b=>b.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let p=new To(d);return p.sign(this.signers),{builder:this,transaction:p,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async b=>{var B;let{skipPreflight:g=!0,sendAndConfirm:P,notSendToRpc:h}=b||{};if(ai([p]),(B=this.owner)!=null&&B.isKeyPair){let T=await this.connection.sendTransaction(p,{skipPreflight:g});return P&&await Mr(this.connection,T),{txId:T,signedTx:p}}if(this.signAllTransactions){let T=await this.signAllTransactions([p]);if(this.signers.length)for(let k of T)try{k.sign(this.signers)}catch{}return{txId:h?"":await this.connection.sendTransaction(T[0],{skipPreflight:g}),signedTx:T[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}async buildV0MultiTx(e){var u;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),r=t.filter(l=>l.builder.instructions.length>0),s=[i,...r.map(l=>l.transaction)],a=[this.signers,...r.map(l=>l.signers)],c=[...this.instructionTypes,...r.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 y;let{sequentially:m,onTxUpdate:d,recentBlockHash:p,skipPreflight:f=!0}=l||{};if(p&&s.forEach(b=>b.message.recentBlockhash=p),ai(s),(y=this.owner)!=null&&y.isKeyPair){if(m){let b=[];for(let g of s){let P=await this.connection.sendTransaction(g,{skipPreflight:f});await Mr(this.connection,P),b.push(P)}return{txIds:b,signedTxs:s}}return{txIds:await Promise.all(s.map(async b=>await this.connection.sendTransaction(b,{skipPreflight:f}))),signedTxs:s}}if(this.signAllTransactions){let b=await this.signAllTransactions(s);if(m){let g=0,P=[],h=async()=>{if(!b[g])return;let B=await this.connection.sendTransaction(b[g],{skipPreflight:f});P.push({txId:B,status:"sent",signedTx:b[g]}),d==null||d([...P]),g++;let T=!1,k=null,S=null,x=K=>{k!==null&&clearInterval(k),S!==null&&this.connection.removeSignatureListener(S);let I=P.findIndex(C=>C.txId===B);if(I>-1){if(P[I].status==="error"||P[I].status==="success")return;P[I].status=K.err?"error":"success"}d==null||d([...P]),K.err||h()};this.loopMultiTxStatus&&(k=setInterval(async()=>{var K;if(T){clearInterval(k);return}try{let I=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:0});I&&(T=!0,clearInterval(k),x({err:((K=I.meta)==null?void 0:K.err)||null}),console.log("tx status from getTransaction:",B))}catch(I){T=!0,clearInterval(k),console.error("getTransaction timeout:",I,B)}},Vr)),S=this.connection.onSignature(B,K=>{if(T){this.connection.removeSignatureListener(S);return}T=!0,x(K)},"confirmed"),this.connection.getSignatureStatus(B)};return h(),{txIds:[],signedTxs:b}}else{let g=[];for(let P=0;P<b.length;P+=1){let h=await this.connection.sendTransaction(b[P],{skipPreflight:f});g.push(h)}return{txIds:g,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var d;let m=e||{},{splitIns:t=[],computeBudgetConfig:n}=m,i=ze(m,["splitIns","computeBudgetConfig"]),r=n?Or(n):{instructions:[],instructionTypes:[]},s=this.signers.reduce((p,f)=>U(v({},p),{[f.publicKey.toBase58()]:f}),{}),a=[],c=[],u=[],l=0;if(this.allInstructions.forEach(p=>{let f=[...u,p],y=n?[...r.instructions,...f]:f,g=[...new Set(f.map(P=>P.keys.filter(h=>h.isSigner).map(h=>h.pubkey.toString())).flat()).values()].map(P=>new vi(P));if(p!==t[l]&&u.length<12&&(po({instructions:y,payer:this.feePayer,signers:g})||po({instructions:f,payer:this.feePayer,signers:g})))u.push(p);else{if(u.length===0)throw Error("item ins too big");l+=p===t[l]?1:0,po({instructions:n?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:g})?a.push(new ko().add(...r.instructions,...u)):a.push(new ko().add(...u)),c.push(Array.from(new Set(u.map(P=>P.keys.filter(h=>h.isSigner).map(h=>h.pubkey.toString())).flat())).map(P=>s[P]).filter(P=>P!==void 0)),u=[p]}}),u.length>0){let f=[...new Set(u.map(y=>y.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(y=>s[y]).filter(y=>y!==void 0);po({instructions:n?[...r.instructions,...u]:[...u],payer:this.feePayer,signers:f.map(y=>y.publicKey)})?a.push(new ko().add(...r.instructions,...u)):a.push(new ko().add(...u)),c.push(f)}return a.forEach(p=>p.feePayer=this.feePayer),(d=this.owner)!=null&&d.signer&&c.forEach(p=>{p.some(f=>f.publicKey.equals(this.owner.publicKey))||p.push(this.owner.signer)}),{builder:this,transactions:a,signers:c,instructionTypes:this.instructionTypes,execute:async p=>{var B;let{sequentially:f,onTxUpdate:y,skipTxCount:b=0,recentBlockHash:g,skipPreflight:P=!0}=p||{},h=g!=null?g:await Ri(this.connection,this.blockhashCommitment);if(a.forEach(async(T,k)=>{T.recentBlockhash=h,c[k].length&&T.sign(...c[k])}),ai(a),(B=this.owner)!=null&&B.isKeyPair){if(f){let T=0,k=[];for(let S of a){if(++T,T<=b){k.push("tx skipped");continue}let x=await ya(this.connection,S,this.signers.find(K=>K.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:P});k.push(x)}return{txIds:k,signedTxs:a}}return{txIds:await Promise.all(a.map(async T=>await this.connection.sendRawTransaction(T.serialize(),{skipPreflight:P}))),signedTxs:a}}if(this.signAllTransactions){let T=await this.signAllTransactions(a.slice(b,a.length)),k=[...a.slice(0,b),...T];if(f){let S=0,x=[],K=async()=>{if(!k[S])return;S<b&&(x.push({txId:"",status:"success",signedTx:k[S]}),y==null||y([...x]),S++,K());let I=await this.connection.sendRawTransaction(k[S].serialize(),{skipPreflight:P});x.push({txId:I,status:"sent",signedTx:k[S]}),y==null||y([...x]),S++;let C=!1,M=null,F=null,R=L=>{M!==null&&clearInterval(M),F!==null&&this.connection.removeSignatureListener(F);let V=x.findIndex(Y=>Y.txId===I);if(V>-1){if(x[V].status==="error"||x[V].status==="success")return;x[V].status=L.err?"error":"success"}y==null||y([...x]),L.err||K()};this.loopMultiTxStatus&&(M=setInterval(async()=>{var L;if(C){clearInterval(M);return}try{let V=await this.connection.getTransaction(I,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(C=!0,clearInterval(M),R({err:((L=V.meta)==null?void 0:L.err)||null}),console.log("tx status from getTransaction:",I))}catch(V){C=!0,clearInterval(M),console.error("getTransaction timeout:",V,I)}},Vr)),F=this.connection.onSignature(I,L=>{if(C){this.connection.removeSignatureListener(F);return}C=!0,R(L)},"confirmed"),this.connection.getSignatureStatus(I)};return await K(),{txIds:x.map(I=>I.txId),signedTxs:k}}else{let S=[];for(let x=0;x<k.length;x+=1){let K=await this.connection.sendRawTransaction(k[x].serialize(),{skipPreflight:P});S.push(K)}return{txIds:S,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var h;let P=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:i={},lookupTableAddress:r=[]}=P,s=ze(P,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress"]),a=v(v({},this.cluster==="devnet"?await fa(this.connection):_r),i),c=Array.from(new Set([...this.lookupTableAddress,...r])),u=[];for(let B of c)a[B]===void 0&&u.push(new vi(B));let l=await pa({connection:this.connection,address:u});for(let[B,T]of Object.entries(l))a[B]=T;let m=t?Or(t):{instructions:[],instructionTypes:[]},d=await Ri(this.connection,this.blockhashCommitment),p=this.signers.reduce((B,T)=>U(v({},B),{[T.publicKey.toBase58()]:T}),{}),f=[],y=[],b=[],g=0;if(this.allInstructions.forEach(B=>{let T=[...b,B],k=t?[...m.instructions,...T]:T;if(B!==n[g]&&b.length<12&&(fo({instructions:k,payer:this.feePayer,lookupTableAddressAccount:a})||fo({instructions:T,payer:this.feePayer,lookupTableAddressAccount:a})))b.push(B);else{if(b.length===0)throw Error("item ins too big");g+=B===n[g]?1:0;let S={};for(let x of[...new Set(c)])a[x]!==void 0&&(S[x]=a[x]);if(t&&fo({instructions:[...m.instructions,...b],payer:this.feePayer,lookupTableAddressAccount:a,recentBlockhash:d})){let x=new ho({payerKey:this.feePayer,recentBlockhash:d,instructions:[...m.instructions,...b]}).compileToV0Message(Object.values(a));f.push(new To(x))}else{let x=new ho({payerKey:this.feePayer,recentBlockhash:d,instructions:[...b]}).compileToV0Message(Object.values(a));f.push(new To(x))}y.push(Array.from(new Set(b.map(x=>x.keys.filter(K=>K.isSigner).map(K=>K.pubkey.toString())).flat())).map(x=>p[x]).filter(x=>x!==void 0)),b=[B]}}),b.length>0){let T=[...new Set(b.map(k=>k.keys.filter(S=>S.isSigner).map(S=>S.pubkey.toString())).flat()).values()].map(k=>p[k]).filter(k=>k!==void 0);if(t&&fo({instructions:[...m.instructions,...b],payer:this.feePayer,lookupTableAddressAccount:a,recentBlockhash:d})){let k=new ho({payerKey:this.feePayer,recentBlockhash:d,instructions:[...m.instructions,...b]}).compileToV0Message(Object.values(a));f.push(new To(k))}else{let k=new ho({payerKey:this.feePayer,recentBlockhash:d,instructions:[...b]}).compileToV0Message(Object.values(a));f.push(new To(k))}y.push(T)}return(h=this.owner)!=null&&h.signer&&y.forEach(B=>{B.some(T=>T.publicKey.equals(this.owner.publicKey))||B.push(this.owner.signer)}),f.forEach((B,T)=>{B.sign(y[T])}),{builder:this,transactions:f,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async B=>{var I;let{sequentially:T,onTxUpdate:k,skipTxCount:S=0,recentBlockHash:x,skipPreflight:K=!0}=B||{};if(f.map(async(C,M)=>{y[M].length&&C.sign(y[M]),x&&(C.message.recentBlockhash=x)}),ai(f),(I=this.owner)!=null&&I.isKeyPair){if(T){let C=0,M=[];for(let F of f){if(++C,C<=S){console.log("skip tx: ",C),M.push("tx skipped");continue}let R=await this.connection.sendTransaction(F,{skipPreflight:K});await Mr(this.connection,R),M.push(R)}return{txIds:M,signedTxs:f}}return{txIds:await Promise.all(f.map(async C=>await this.connection.sendTransaction(C,{skipPreflight:K}))),signedTxs:f}}if(this.signAllTransactions){let C=await this.signAllTransactions(f.slice(S,f.length)),M=[...f.slice(0,S),...C];if(T){let F=0,R=[],L=async()=>{if(!M[F])return;if(F<S){R.push({txId:"",status:"success",signedTx:M[F]}),k==null||k([...R]),F++,L();return}let V=await this.connection.sendTransaction(M[F],{skipPreflight:K});R.push({txId:V,status:"sent",signedTx:M[F]}),k==null||k([...R]),F++;let Y=!1,te=null,le=null,Ie=pe=>{te!==null&&clearInterval(te),le!==null&&this.connection.removeSignatureListener(le);let Ae=R.findIndex(we=>we.txId===V);if(Ae>-1){if(R[Ae].status==="error"||R[Ae].status==="success")return;R[Ae].status=pe.err?"error":"success"}k==null||k([...R]),pe.err||L()};this.loopMultiTxStatus&&(te=setInterval(async()=>{var pe;if(Y){clearInterval(te);return}try{let Ae=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});Ae&&(Y=!0,clearInterval(te),Ie({err:((pe=Ae.meta)==null?void 0:pe.err)||null}),console.log("tx status from getTransaction:",V))}catch(Ae){Y=!0,clearInterval(te),console.error("getTransaction timeout:",Ae,V)}},Vr)),le=this.connection.onSignature(V,pe=>{if(Y){this.connection.removeSignatureListener(le);return}Y=!0,Ie(pe)},"confirmed"),this.connection.getSignatureStatus(V)};return L(),{txIds:[],signedTxs:M}}else{let F=[];for(let R=0;R<M.length;R+=1){let L=await this.connection.sendTransaction(M[R],{skipPreflight:K});F.push(L)}return{txIds:F,signedTxs:M}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}};import Np from"bn.js";var cn=new Np(1e6);var vc=(t=>(t.ALL="all",t.Strict="strict",t))(vc||{}),Fc=(s=>(s.All="all",s.Standard="standard",s.Concentrated="concentrated",s.AllFarm="allFarm",s.StandardFarm="standardFarm",s.ConcentratedFarm="concentratedFarm",s))(Fc||{});var bt={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",MONITOR_BASE_HOST:"https://monitor.raydium.io",SERVICE_1_BASE_HOST:"https://service-v1.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",CPMM_CONFIG:"/main/cpmm-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://lite-api.jup.ag/tokens/v1/tagged/verified",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}",OWNER_LOCK_POSITION:"/position/clmm-lock/{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",CPMM_LOCK:"https://dynamic-ipfs.raydium.io/lock/cpmm/position"},pw=v({},bt);var Ec="ray_tab_hash",ba="ray_req_hash",Op=()=>{if(typeof window===void 0)return"";let o=sessionStorage.getItem(Ec);return o||(o=`ray-${Date.now()}`,sessionStorage.setItem(Ec,o)),o},Wr=async n=>{var i=n,{logCount:o=1e3,removeLastLog:e}=i,t=ze(i,["logCount","removeLastLog"]);if(typeof window===void 0)return new Promise(s=>s());let r=JSON.parse(localStorage.getItem(ba)||"[]").slice(0,o-1);e&&r.pop(),new Blob([JSON.stringify(t.data)]).size>1024&&(t.data=JSON.stringify(t.data).substring(0,200)+"..."),r.unshift(U(v({},t),{time:Date.now(),session:Op()}));try{localStorage.setItem(ba,JSON.stringify(r))}catch{if(e){let s=!1,a=JSON.stringify(t.data).substring(0,100);for(r[0].data=a+(a.length>100?"...":"");!s;){r.pop();let c=JSON.stringify(t.data).substring(0,100);r[0].data=c+(c.length>100?"...":"");try{localStorage.setItem(ba,JSON.stringify(r)),s=!0}catch{s=!1}}return new Promise(c=>c())}return Wr(U(v({},t),{logCount:o,removeLastLog:!0}))}};import{TOKEN_2022_PROGRAM_ID as Mp,TOKEN_PROGRAM_ID as vp}from"@solana/spl-token";var Fi=Pe("Raydium_Api"),ga=new Map;async function Ew(o,e,t=1e3){let n;for(;n==null;)try{Fi.debug(`Request ${o} through endlessRetry`),n=await e()}catch(i){Fi.error(`Request ${o} failed, retry after ${t} ms`,i),await Pc(t)}return n}var qr=class{constructor({cluster:e,timeout:t,logRequests:n,logCount:i,urlConfigs:r}){this.cluster=e,this.urlConfigs=r||{},this.logCount=i||1e3,this.api=_c.create({baseURL:this.urlConfigs.BASE_HOST||bt.BASE_HOST,timeout:t}),this.api.interceptors.request.use(s=>{let{method:a,baseURL:c,url:u}=s;return Fi.debug(`${a==null?void 0:a.toUpperCase()} ${c}${u}`),s},s=>(Fi.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&&Wr({status:u,url:`${m}${d}`,params:a.params,data:c,logCount:this.logCount}),Fi.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&&Wr({status:u,url:`${m}${d}`,params:a.params,data:s.message,logCount:this.logCount}),Fi.error(`${l.toUpperCase()} ${m}${d} ${u||s.message}`),Promise.reject(s)})}async getClmmConfigs(){return(await this.api.get(this.urlConfigs.CLMM_CONFIG||bt.CLMM_CONFIG)).data}async getCpmmConfigs(){return(await this.api.get(this.urlConfigs.CPMM_CONFIG||bt.CPMM_CONFIG)).data}async getClmmPoolLines(e){return(await this.api.get(`${this.urlConfigs.POOL_LIQUIDITY_LINE||bt.POOL_LIQUIDITY_LINE}?pool_id=${e}`)).data}async getBlockSlotCountForSecond(e){if(!e)return 2;let n=(await _c.post(e,{id:"getRecentPerformanceSamples",jsonrpc:"2.0",method:"getRecentPerformanceSamples",params:[4]})).result.map(i=>i.numSlots);return n.reduce((i,r)=>i+r,0)/n.length/60}async getChainTimeOffset(){return(await this.api.get(this.urlConfigs.CHAIN_TIME||bt.CHAIN_TIME)).data}async getRpcs(){return this.api.get(this.urlConfigs.RPCS||bt.RPCS)}async getTokenList(){return(await this.api.get(this.urlConfigs.TOKEN_LIST||bt.TOKEN_LIST)).data}async getJupTokenList(){return(await this.api.get("",{baseURL:this.urlConfigs.JUP_TOKEN_LIST||bt.JUP_TOKEN_LIST})).map(t=>U(v({},t),{chainId:101,programId:t.tags.includes("token-2022")?Mp.toBase58():vp.toBase58()}))}async getTokenInfo(e){return(await this.api.get((this.urlConfigs.MINT_INFO_ID||bt.MINT_INFO_ID)+`?mints=${e.map(n=>n.toString()).join(",")}`)).data}async getPoolList(e={}){let{type:t="all",sort:n="liquidity",order:i="desc",page:r=0,pageSize:s=100}=e;return(await this.api.get((this.urlConfigs.POOL_LIST||bt.POOL_LIST)+`?poolType=${t}&poolSortField=${n}&sortType=${i}&page=${r}&pageSize=${s}`)).data}async fetchPoolById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.POOL_SEARCH_BY_ID||bt.POOL_SEARCH_BY_ID)+`?ids=${t}`)).data}async fetchPoolKeysById(e){let{idList:t}=e,n=[],i=t.filter(s=>ga.has(s)?(n.push(ga.get(s)),!1):!0),r=[];return i.length&&(r=(await this.api.get((this.urlConfigs.POOL_KEY_BY_ID||bt.POOL_KEY_BY_ID)+`?ids=${i.join(",")}`)).data.filter(Boolean),r.forEach(a=>{ga.set(a.id,a)})),n.concat(r)}async fetchPoolByMints(e){let{mint1:t,mint2:n,type:i="all",sort:r="default",order:s="desc",page:a=1}=e,[c,u]=[t&&kt(t).toBase58(),n&&n!=="undefined"?kt(n).toBase58():""],[l,m]=u&&c>u?[u,c]:[c,u];return(await this.api.get((this.urlConfigs.POOL_SEARCH_MINT||bt.POOL_SEARCH_MINT)+`?mint1=${l}&mint2=${m}&poolType=${i}&poolSortField=${r}&sortType=${s}&pageSize=100&page=${a}`)).data}async fetchFarmInfoById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_INFO||bt.FARM_INFO)+`?ids=${t}`)).data}async fetchFarmKeysById(e){let{ids:t}=e;return(await this.api.get((this.urlConfigs.FARM_KEYS||bt.FARM_KEYS)+`?ids=${t}`)).data}async fetchAvailabilityStatus(){return(await this.api.get(this.urlConfigs.CHECK_AVAILABILITY||bt.CHECK_AVAILABILITY)).data}};import{merge as _b}from"lodash";var Ur="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",Vc="please provide connection in load() initialization or set it by raydium.setConnection(connection)";import{PublicKey as Hr,SystemProgram as zf}from"@solana/web3.js";import{AccountLayout as Vi,createAssociatedTokenAccountIdempotentInstruction as La,TOKEN_PROGRAM_ID as Qn,TOKEN_2022_PROGRAM_ID as Qf}from"@solana/spl-token";var Aa=(...o)=>o.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),De=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=Pe(t)}createTxBuilder(e){return this.scope.checkOwner(),new Dr({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,loopMultiTxStatus:this.scope.loopMultiTxStatus,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(Aa(e))}logInfo(...e){this.logger.info(Aa(e))}logAndCreateError(...e){let t=Aa(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Df,SystemProgram as Wf}from"@solana/web3.js";import qf from"bn.js";import{createCloseAccountInstruction as Uf,createInitializeAccountInstruction as Gf,createTransferInstruction as Xf,TOKEN_PROGRAM_ID as _i}from"@solana/spl-token";import{Keypair as Ff,PublicKey as tl}from"@solana/web3.js";import Ef from"bn.js";import{TOKEN_PROGRAM_ID as _f}from"@solana/spl-token";function Fp(o){return o instanceof Uint8Array||o!=null&&typeof o=="object"&&o.constructor.name==="Uint8Array"}function Pa(o,...e){if(!Fp(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 wa(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 Dc(o,e){Pa(o);let t=e.outputLen;if(o.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Xr=o=>new DataView(o.buffer,o.byteOffset,o.byteLength),ln=(o,e)=>o<<32-e|o>>>e;var Zw=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Ep(o){if(typeof o!="string")throw new Error(`utf8ToBytes expected string, got ${typeof o}`);return new Uint8Array(new TextEncoder().encode(o))}function ka(o){return typeof o=="string"&&(o=Ep(o)),Pa(o),o}var Gr=class{clone(){return this._cloneInto()}},$w={}.toString;function Wc(o){let e=n=>o().update(ka(n)).digest(),t=o();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>o(),e}function _p(o,e,t,n){if(typeof o.setBigUint64=="function")return o.setBigUint64(e,t,n);let i=BigInt(32),r=BigInt(4294967295),s=Number(t>>i&r),a=Number(t&r),c=n?4:0,u=n?0:4;o.setUint32(e+c,s,n),o.setUint32(e+u,a,n)}var qc=(o,e,t)=>o&e^~o&t,Uc=(o,e,t)=>o&e^o&t^e&t,zr=class extends Gr{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Xr(this.buffer)}update(e){wa(this);let{view:t,buffer:n,blockLen:i}=this;e=ka(e);let r=e.length;for(let s=0;s<r;){let a=Math.min(i-this.pos,r-s);if(a===i){let c=Xr(e);for(;i<=r-s;s+=i)this.process(c,s);continue}n.set(e.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===i&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){wa(this),Dc(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:i,isLE:r}=this,{pos:s}=this;t[s++]=128,this.buffer.subarray(s).fill(0),this.padOffset>i-s&&(this.process(n,0),s=0);for(let m=s;m<i;m++)t[m]=0;_p(n,i-8,BigInt(this.length*8),r),this.process(n,0);let a=Xr(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],r)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:i,finished:r,destroyed:s,pos:a}=this;return e.length=i,e.pos=a,e.finished=r,e.destroyed=s,i%t&&e.buffer.set(n),e}};var Vp=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]),Gn=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Xn=new Uint32Array(64),ha=class extends zr{constructor(){super(64,32,8,!1),this.A=Gn[0]|0,this.B=Gn[1]|0,this.C=Gn[2]|0,this.D=Gn[3]|0,this.E=Gn[4]|0,this.F=Gn[5]|0,this.G=Gn[6]|0,this.H=Gn[7]|0}get(){let{A:e,B:t,C:n,D:i,E:r,F:s,G:a,H:c}=this;return[e,t,n,i,r,s,a,c]}set(e,t,n,i,r,s,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=i|0,this.E=r|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)Xn[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let d=Xn[m-15],p=Xn[m-2],f=ln(d,7)^ln(d,18)^d>>>3,y=ln(p,17)^ln(p,19)^p>>>10;Xn[m]=y+Xn[m-7]+f+Xn[m-16]|0}let{A:n,B:i,C:r,D:s,E:a,F:c,G:u,H:l}=this;for(let m=0;m<64;m++){let d=ln(a,6)^ln(a,11)^ln(a,25),p=l+d+qc(a,c,u)+Vp[m]+Xn[m]|0,y=(ln(n,2)^ln(n,13)^ln(n,22))+Uc(n,i,r)|0;l=u,u=c,c=a,a=s+p|0,s=r,r=i,i=n,n=p+y|0}n=n+this.A|0,i=i+this.B|0,r=r+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,i,r,s,a,c,u,l)}roundClean(){Xn.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Gc=Wc(()=>new ha);import{PublicKey as Nf}from"@solana/web3.js";import Zc,{isBN as $c}from"bn.js";import{bits as Dp,BitStructure as Wp,blob as qp,Blob as Up,cstr as Gp,f32 as Xp,f32be as zp,f64 as Qp,f64be as Yp,greedy as Hp,Layout as jp,ns64 as Zp,ns64be as $p,nu64 as Jp,nu64be as ef,offset as tf,s16 as nf,s16be as of,s24 as rf,s24be as sf,s32 as af,s32be as uf,s40 as cf,s40be as lf,s48 as mf,s48be as df,s8 as pf,seq as ff,struct as ak,Structure as yf,u16 as bf,u16be as gf,u24 as Af,u24be as Pf,u32 as wf,u32be as kf,u40 as hf,u40be as Tf,u48 as If,u48be as Bf,u8 as xf,UInt as Sf,union as Kf,Union as Cf,unionLayoutDiscriminator as Rf,utf8 as Lf}from"@solana/buffer-layout";var Io=jp,Xc=yf,zc=Cf,uk=Wp,Ta=Sf,Qc=Up,ck=Hp,Qr=xf,Dt=bf,lk=Af,Bo=wf,mk=hf,dk=If,Yc=Jp,pk=gf,fk=Pf,yk=kf,bk=Tf,gk=Bf,Ak=ef,Pk=pf,wk=nf,kk=rf,We=af,hk=cf,Tk=mf,Ik=Zp,Bk=of,xk=sf,Sk=uf,Kk=lf,Ck=df,Rk=$p,Lk=Xp,Nk=zp,Ok=Qp,Mk=Yp;var Hc=ff,jc=Kf,vk=Rf,Re=qp,Fk=Gp,Ek=Lf,Ia=Dp,Ba=tf;var ci=class extends Io{constructor(t,n,i){super(t,i);this.blob=Re(t),this.signed=n}decode(t,n=0){let i=new Zc(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new Zc(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},Yr=class extends Io{constructor(t){super(8,t);this._lower=Ia(Bo(),!1),this._upper=Ia(Bo(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let i=this._lower.decode(t,n),r=this._upper.decode(t,n+this._lower.span);return v(v({},i),r)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function q(o){return new Ta(1,o)}function Pt(o){return new Ta(4,o)}function w(o){return new ci(8,!1,o)}function ne(o){return new ci(16,!1,o)}function Jc(o){return new ci(1,!0,o)}function Ei(o){return new ci(8,!0,o)}function el(o){return new ci(16,!0,o)}var Sn=class extends Io{constructor(t,n,i,r){super(t.span,r);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function O(o){return new Sn(Re(32),e=>new Nf(e),e=>e.toBuffer(),o)}var xa=class extends Io{constructor(t,n){super(-1,n);this.layout=t,this.discriminator=Qr()}encode(t,n,i=0){return t==null?this.discriminator.encode(0,n,i):(this.discriminator.encode(1,n,i),this.layout.encode(t,n,i+1)+1)}decode(t,n=0){let i=this.discriminator.decode(t,n);if(i===0)return null;if(i===1)return this.layout.decode(t,n+1);throw new Error("Invalid option "+this.property)}getSpan(t,n=0){let i=this.discriminator.decode(t,n);if(i===0)return 1;if(i===1)return this.layout.getSpan(t,n+1)+1;throw new Error("Invalid option "+this.property)}};function qk(o,e){return new xa(o,e)}function Xe(o){return new Sn(Qr(),Of,Mf,o)}function Of(o){if(o===0)return!1;if(o===1)return!0;throw new Error("Invalid bool: "+o)}function Mf(o){return o?1:0}function Uk(o,e){let t=Bo("length"),n=E([t,H(o,Ba(t,-t.span),"values")]);return new Sn(n,({values:i})=>i,i=>({values:i}),e)}function Gk(o,e,t){let n=E([w("tag"),e.replicate("data")]);function i({tag:r,data:s}){if(!r.eq(o))throw new Error("Invalid tag, expected: "+o.toString("hex")+", got: "+r.toString("hex"));return s}return new Sn(n,i,r=>({tag:o,data:r}),t)}function vf(o){let e=Bo("length"),t=E([e,Re(Ba(e,-e.span),"data")]);return new Sn(t,({data:n})=>n,n=>({data:n}),o)}function vt(o){return new Sn(vf(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),o)}function Xk(o,e){let t=jc(Qr(),e);return o.forEach((n,i)=>t.addVariant(i,n,n.property)),t}function zk(o,e,t){let n=E([H(o,e,"values")]);return new Sn(n,({values:i})=>i,i=>({values:i}),t)}var Sa=class extends Xc{decode(e,t){return super.decode(e,t)}};function E(o,e,t){return new Sa(o,e,t)}var Ka=class extends zc{encodeInstruction(e){let t=Math.max(...Object.values(this.registry).map(i=>i.span)),n=Buffer.alloc(t);return n.slice(0,this.encode(e,n))}decodeInstruction(e){return this.decode(e)}};function Qk(o,e,t){return new Ka(o,e,t)}var Ca=class extends Qc{decode(e,t){let n=super.decode(e,t);if(!n.every(i=>i===0))throw new Error("nonzero padding bytes");return n}};function Yk(o){return new Ca(o)}function H(o,e,t){let n,i=typeof e=="number"?e:$c(e)?e.toNumber():new Proxy(e,{get(r,s){if(!n){let a=Reflect.get(r,"count");n=$c(a)?a.toNumber():a,Reflect.set(r,"count",n)}return Reflect.get(r,s)},set(r,s,a){return s==="count"&&(n=a),Reflect.set(r,s,a)}});return Hc(o,i,t)}var mn=E([O("mint"),O("owner"),w("amount"),Pt("delegateOption"),O("delegate"),q("state"),Pt("isNativeOption"),w("isNative"),w("delegatedAmount"),Pt("closeAuthorityOption"),O("closeAuthority")]);var uh=Pe("Raydium_Util");function nl({owner:o,solAccountResp:e,tokenAccountResp:t}){let n=[],i=[];for(let{pubkey:r,account:s}of t.value){let a=mn.decode(s.data),{mint:c,amount:u}=a;n.push({publicKey:r,mint:c,amount:u,isAssociated:Z(o,c,s.owner).publicKey.equals(r),isNative:!1,programId:s.owner}),i.push({pubkey:r,accountInfo:a,programId:s.owner})}return e&&n.push({mint:tl.default,amount:new Ef(String(e.lamports)),isNative:!0,programId:e.owner}),{tokenAccounts:n,tokenAccountRawInfos:i}}function Je({fromPublicKey:o,programId:e=_f,assignSeed:t}){let n=t?btoa(t).slice(0,32):Ff.generate().publicKey.toBase58().slice(0,32);return{publicKey:Vf(o,n,e),seed:n}}function Vf(o,e,t){let n=Buffer.concat([o.toBuffer(),Buffer.from(e),t.toBuffer()]),i=Gc(n);return new tl(i)}function Ra(o){let{mint:e,tokenAccount:t,owner:n,programId:i=_i}=o;return Gf(t,e,n,i)}function Kn(o){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:i,programId:r=_i}=o;return Uf(e,t,i,n,r)}async function zn(o){let{connection:e,amount:t,commitment:n,payer:i,owner:r,skipCloseAccount:s}=o,a=await e.getMinimumBalanceForRentExemption(mn.span,n),c=ee(t).add(new qf(a)),u=Je({fromPublicKey:i,programId:_i});return{addresses:{newAccount:u.publicKey},signers:[],instructions:[Wf.createAccountWithSeed({fromPubkey:i,basePubkey:i,seed:u.seed,newAccountPubkey:u.publicKey,lamports:c.toNumber(),space:mn.span,programId:_i}),Ra({mint:new Df(dt.address),tokenAccount:u.publicKey,owner:r,programId:_i})],instructionTypes:[X.CreateAccount,X.InitAccount],endInstructionTypes:s?[]:[X.CloseAccount],endInstructions:s?[]:[Kn({tokenAccount:u.publicKey,payer:i,owner:r})]}}function il({source:o,destination:e,owner:t,amount:n,multiSigners:i=[],tokenProgram:r=_i}){return Xf(o,e,t,BigInt(String(n)),i,r)}var xo=class extends De{constructor(t){super(t);this._tokenAccounts=[];this._tokenAccountRawInfos=[];this._accountListener=[];this._clientOwnedToken=!1;this._notSubscribeAccountChange=!1;this._accountFetchTime=0;let{tokenAccounts:n,tokenAccountRawInfos:i,notSubscribeAccountChange:r}=t;this._tokenAccounts=n||[],this._tokenAccountRawInfos=i||[],this._notSubscribeAccountChange=r!=null?r:!0,this._clientOwnedToken=!!(n||i)}get tokenAccounts(){return this._tokenAccounts}get tokenAccountRawInfos(){return this._tokenAccountRawInfos}set notSubscribeAccountChange(t){this._notSubscribeAccountChange=t}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 Z(this.scope.ownerPubKey,t,n).publicKey}resetTokenAccounts(){this._clientOwnedToken||(this._tokenAccounts=[],this._tokenAccountRawInfos=[])}async fetchWalletTokenAccounts(t){if(this._clientOwnedToken||!(t!=null&&t.forceUpdate)&&this._tokenAccounts.length&&Date.now()-this._accountFetchTime<(this._notSubscribeAccountChange?1e3*5:1e3*60*3))return{tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos};this.scope.checkOwner();let i=v(v({},{}),t),[r,s,a]=await Promise.all([this.scope.connection.getAccountInfo(this.scope.ownerPubKey,i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Qn},i.commitment),this.scope.connection.getTokenAccountsByOwner(this.scope.ownerPubKey,{programId:Qf},i.commitment)]),{tokenAccounts:c,tokenAccountRawInfos:u}=nl({owner:this.scope.ownerPubKey,solAccountResp:r,tokenAccountResp:{context:s.context,value:[...s.value,...a.value]}});return this._tokenAccounts=c,this._tokenAccountRawInfos=u,this._accountFetchTime=Date.now(),this._notSubscribeAccountChange||(this._accountChangeListenerId&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId),this._accountChangeListenerId=this.scope.connection.onAccountChange(this.scope.ownerPubKey,()=>{this.fetchWalletTokenAccounts({forceUpdate:!0}),this._accountListener.forEach(l=>l({tokenAccounts:this._tokenAccounts,tokenAccountRawInfos:this._tokenAccountRawInfos}))},{commitment:t==null?void 0:t.commitment})),{tokenAccounts:c,tokenAccountRawInfos:u}}clearAccountChangeCkb(){this._accountChangeListenerId!==void 0&&this.scope.connection.removeAccountChangeListener(this._accountChangeListenerId)}async getCreatedTokenAccount({mint:t,programId:n=Qn,associatedOnly:i=!0}){await this.fetchWalletTokenAccounts();let r=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 r){let{publicKey:c}=a;if(c&&(!i||i&&s.equals(c)))return c}}async getOrCreateTokenAccount(t){var y,b,g,P;await this.fetchWalletTokenAccounts();let{mint:n,createInfo:i,associatedOnly:r,owner:s,notUseTokenAccount:a=!1,skipCloseAccount:c=!1,checkCreateATAOwner:u=!1,assignSeed:l}=t,m=new Hr(t.tokenProgram||Qn),d=this.getAssociatedTokenAccount(n,new Hr(m)),p=(a?[]:this.tokenAccountRawInfos).filter(h=>h.accountInfo.mint.equals(n)&&(!r||h.pubkey.equals(d))).sort((h,B)=>h.accountInfo.amount.lt(B.accountInfo.amount)?1:-1);if(i===void 0||p.length>0)return p.length>0?{account:p[0].pubkey}:{};let f={instructions:[],endInstructions:[],signers:[],instructionTypes:[],endInstructionTypes:[]};if(r){let h=La(s,d,s,n,m),B=this.tokenAccountRawInfos.find(T=>T.pubkey.equals(d));if(u){let T=await this.scope.connection.getAccountInfo(d);if(T===null)(y=f.instructions)==null||y.push(h),f.instructionTypes.push(X.CreateATA);else if(!(T.owner.equals(m)&&Vi.decode(T.data).mint.equals(n)&&Vi.decode(T.data).owner.equals(s)))throw Error(`create ata check error -> mint: ${n.toString()}, ata: ${d.toString()}`)}else B===void 0&&(f.instructions.push(h),f.instructionTypes.push(X.CreateATA));if(n.equals($)&&i.amount){let T=await zn({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:i.payer||this.scope.ownerPubKey,amount:(b=i.amount)!=null?b:0,skipCloseAccount:c});f.instructions.push(...T.instructions||[]),f.endInstructions.push(...T.endInstructions||[]),f.instructionTypes.push(...T.instructionTypes||[]),f.endInstructionTypes.push(...T.endInstructionTypes||[]),i.amount&&(f.instructions.push(il({source:T.addresses.newAccount,destination:d,owner:this.scope.ownerPubKey,amount:i.amount,tokenProgram:Qn})),f.instructionTypes.push(X.TransferAmount))}return!c&&B===void 0&&(f.endInstructions.push(Kn({owner:s,payer:i.payer||s,tokenAccount:d,programId:m})),f.endInstructionTypes.push(X.CloseAccount)),{account:d,instructionParams:f}}else{let h=Je({fromPublicKey:s,programId:m,assignSeed:l}),B=await this.scope.connection.getMinimumBalanceForRentExemption(Vi.span),T=zf.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:h.seed,newAccountPubkey:h.publicKey,lamports:B+Number((P=(g=i.amount)==null?void 0:g.toString())!=null?P:0),space:Vi.span,programId:m});return f.instructions.push(T,Ra({mint:n,tokenAccount:h.publicKey,owner:this.scope.ownerPubKey,programId:m})),f.instructionTypes.push(X.CreateAccount),f.instructionTypes.push(X.InitAccount),c||(f.endInstructions.push(Kn({owner:s,payer:i.payer||s,tokenAccount:h.publicKey,programId:m})),f.endInstructionTypes.push(X.CloseAccount)),{account:h.publicKey,instructionParams:f}}}async checkOrCreateAta({mint:t,programId:n=Qn,autoUnwrapWSOLToSOL:i}){var c;await this.fetchWalletTokenAccounts();let r=(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(!r){let u=this.getAssociatedTokenAccount(t,n),l=await La(s,u,s,t,n);a.instructions=[l],a.instructionTypes=[X.CreateATA],r=u}return i&&$.toBase58()===t.toBase58()&&(a.endInstructions=[Kn({owner:s,payer:s,tokenAccount:r,programId:n})],a.endInstructionTypes=[X.CloseAccount]),{pubKey:r,newInstructions:a}}async handleTokenAccount(t){let{side:n,amount:i,mint:r,programId:s=Qn,tokenAccount:a,payer:c=this.scope.ownerPubKey,bypassAssociatedCheck:u,skipCloseAccount:l,checkCreateATAOwner:m}=t,d=this.getAssociatedTokenAccount(r,s);if(new Hr($).equals(r)){let p=await zn({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:c,amount:i,skipCloseAccount:l});return v({tokenAccount:p.addresses.newAccount},p)}else if(!a||n==="out"&&!d.equals(a)&&!u){let p=[],f=La(this.scope.ownerPubKey,d,this.scope.ownerPubKey,r,s);if(m){let y=await this.scope.connection.getAccountInfo(d);if(y===null)p.push(f);else if(!(y.owner.equals(Qn)&&Vi.decode(y.data).mint.equals(r)&&Vi.decode(y.data).owner.equals(this.scope.ownerPubKey)))throw Error(`create ata check error -> mint: ${r.toString()}, ata: ${d.toString()}`)}else p.push(f);return{tokenAccount:d,instructions:p,instructionTypes:[X.CreateATA]}}return{tokenAccount:a}}async processTokenAccount(t){let{mint:n,programId:i=Qn,amount:r,useSOLBalance:s,handleTokenAccount:a,feePayer:c}=t,u,l=this.createTxBuilder(c);if(n.equals(new Hr($))&&s){let m=await this.handleTokenAccount({side:"in",amount:r||0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=m,f=ze(m,["tokenAccount"]);u=p,l.addInstruction(f)}else if(u=await this.getCreatedTokenAccount({mint:n,associatedOnly:!1,programId:i}),!u&&a){let d=await this.scope.account.handleTokenAccount({side:"in",amount:0,mint:n,bypassAssociatedCheck:!0,programId:i}),{tokenAccount:p}=d,f=ze(d,["tokenAccount"]);u=p,l.addInstruction(f)}return v({tokenAccount:u},l.AllTxData)}};import{PublicKey as Ne,SystemProgram as yy}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as hl}from"@solana/spl-token";import{PublicKey as Ea}from"@solana/web3.js";var Na=E([q("instruction")]),Oa=E([q("instruction")]),Yf=E([w("rewardState"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardLastUpdateTime"),w("totalReward"),w("totalRewardEmissioned"),w("rewardClaimed"),w("rewardPerSecond"),ne("accRewardPerShare"),O("rewardVault"),O("rewardMint"),O("rewardSender"),w("rewardType"),H(w(),15,"padding")]),Hf=E([w("state"),w("nonce"),O("lpVault"),O("rewardVault"),O(),O(),w(),w(),w("totalReward"),ne("perShareReward"),w("lastSlot"),w("perSlotReward")]),jf=E([w("state"),w("nonce"),O("lpVault"),O("rewardVaultA"),w("totalRewardA"),ne("perShareRewardA"),w("perSlotRewardA"),q("option"),O("rewardVaultB"),Re(7),w("totalRewardB"),ne("perShareRewardB"),w("perSlotRewardB"),w("lastSlot"),O()]),Zf=E([w(),w("state"),w("nonce"),w("validRewardTokenNum"),ne("rewardMultiplier"),w("rewardPeriodMax"),w("rewardPeriodMin"),w("rewardPeriodExtend"),O("lpMint"),O("lpVault"),H(Yf,5,"rewardInfos"),O("creator"),O(),H(w(),32,"padding")]),ol=new Proxy(Hf,{get(o,e,t){return e==="decode"?(...n)=>{let i=o.decode(...n);return U(v({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(o,e,t)}}),rl=new Proxy(jf,{get(o,e,t){return e==="decode"?(...n)=>{let i=o.decode(...n);return U(v({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(o,e,t)}}),So=new Proxy(Zf,{get(o,e,t){return e==="decode"?(...n)=>{let i=o.decode(...n);return U(v({},i),{version:6,rewardInfos:i.rewardInfos.map(r=>{var s;return U(v({},r),{rewardType:((s=Object.entries(Yn).find(a=>String(a[1])===r.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(o,e,t)}}),$f=E([w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Ma=E([q("instruction"),w("nonce"),H($f,5,"rewardTimeInfo")]),va=E([q("instruction"),w("rewardReopenTime"),w("rewardEndTime"),w("rewardPerSecond")]),Fa=E([q("instruction"),w("isSet"),w("rewardPerSecond"),w("rewardOpenTime"),w("rewardEndTime"),w("rewardType")]),Dh=E([w("state"),O("id"),O("owner"),w("deposited"),H(w(),1,"rewardDebts")]),Ko=E([w("state"),O("id"),O("owner"),w("deposited"),H(ne(),1,"rewardDebts"),w(""),w("voteLockedBalance"),H(w(),15)]),Wh=E([w("state"),O("id"),O("owner"),w("deposited"),H(w(),2,"rewardDebts")]),sl=E([w("state"),O("id"),O("owner"),w("deposited"),H(ne(),2,"rewardDebts"),H(w(),17)]),al=E([w(),w("state"),O("id"),O("owner"),w("deposited"),H(ne(),5,"rewardDebts"),H(w(),16)]),Ct=E([q("instruction"),w("amount")]),Jf=E([O("mint"),O("grantAuthority"),w("baselineVoteWeightScaledFactor"),w("maxExtraLockupVoteWeightScaledFactor"),w("lockupSaturationSecs"),Jc("digitShift"),H(q(),7,"reserved1"),H(w(),7,"reserved2")]),ul=E([Re(8),O("governanceProgramId"),O("realm"),O("realmGoverningTokenMint"),O("realmAuthority"),H(q(),32,"reserved1"),H(Jf,4,"votingMints"),Ei("timeOffset"),q("bump"),H(q(),7,"reserved2"),H(w(),11,"reserved3")]),ey=E([Ei("startTime"),Ei("endTime"),q("kind"),H(q(),15,"reserved")]),ty=E([H(ey,1,"lockup"),w("amountDeposited_native"),w("amountInitiallyLockedNative"),Xe("isUsed"),Xe("allowClawback"),q("votingMintConfigIdx"),H(q(),29,"reserved")]),cl=E([Re(8),O("voterAuthority"),O("registrar"),H(ty,32,"deposits"),q("voterBump"),q("voterWweightRecordBump"),H(q(),94,"reserved")]);import{NATIVE_MINT as ny}from"@solana/spl-token";var jh=Pe("Raydium_farm_config"),ll=new Ea("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ml=new Ea("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1"),Zh=ny,$h=new Ea("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX"),dl={3:ol,5:rl,6:So},pl={3:Ko,5:sl,6:al},_a=o=>[3,4,5,6].indexOf(o)!==-1,Va=o=>{var s;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:n}=o,i=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(n)}`,r={3:()=>{if(t.length!==1||n.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${i}`},5:()=>{if(t.length!==n.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${i}`},6:()=>{if(!n.length||t.length!==n.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${i}`}};return(s=r[e])==null?void 0:s.call(r)},Yn={"Standard SPL":0,"Option tokens":1},Qt={[oa.toString()]:3,[ra.toString()]:4,[sa.toString()]:5,[Li.toString()]:6,[xn.FARM_PROGRAM_ID_V3.toString()]:3,[xn.FARM_PROGRAM_ID_V4.toString()]:4,[xn.FARM_PROGRAM_ID_V5.toString()]:5,[xn.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as me,SystemProgram as li,SYSVAR_CLOCK_PUBKEY as Wi,SYSVAR_RENT_PUBKEY as ry,TransactionInstruction as ct}from"@solana/web3.js";import jr from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as sy,createAssociatedTokenAccountIdempotentInstruction as ay,TOKEN_PROGRAM_ID as Et}from"@solana/spl-token";function Da(o,e,t){return oe([e.toBuffer(),Buffer.from("registrar","utf8"),t.toBuffer()],o)}function Wa(o,e){return oe([e.toBuffer(),Buffer.from("voting_mint_seed","utf8")],o)}function qa(o,e){return oe([e.toBuffer()],o)}function Ua(o,e,t){return oe([e.toBuffer(),Buffer.from("voter","utf8"),t.toBuffer()],o)}function Ga(o,e,t){return oe([e.toBuffer(),Buffer.from("voter-weight-record","utf8"),t.toBuffer()],o)}function Xa(o,e,t,n){return oe([Buffer.from("governance","utf8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],o)}import Ft from"bn.js";var Co=Pe("Raydium.farm.util");function Ro({programId:o,poolId:e,mint:t,type:n}){let{publicKey:i}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(n==="lpVault"?"lp_vault_associated_seed":n==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],o);return i}function Tt({programId:o,poolId:e,owner:t,version:n}){let{publicKey:i}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],o);return i}var fl=({programId:o,poolId:e})=>oe([e.toBuffer()],o);function yl(o){return{isSet:new Ft(1),rewardPerSecond:ee(o.perSecond),rewardOpenTime:ee(o.openTime),rewardEndTime:ee(o.endTime),rewardType:ee(Yn[o.rewardType])}}function za(o){return ee(o.endTime).sub(ee(o.openTime)).mul(ee(o.perSecond))}function Di(o){let e=pl[o];return e||Co.logWithError("invalid version",o),e}function iy(o){let e=dl[o];return e||Co.logWithError("invalid version",o),e}function oy(o,e,t,n){if(o.version===3||o.version===5){if(o.lastSlot.gte(new Ft(t)))return o;let i=new Ft(t).sub(o.lastSlot);o.lastSlot=new Ft(t);for(let r of o.rewardInfos){if(e.amount.eq(new Ft(0)))continue;let s=r.perSlotReward.mul(i);r.perShareReward=r.perShareReward.add(s.mul(new Ft(10).pow(new Ft(o.version===3?9:15))).div(e.amount)),r.totalReward=r.totalReward.add(s)}}else if(o.version===6)for(let i of o.rewardInfos){if(i.rewardState.eq(new Ft(0)))continue;let r=Ft.min(new Ft(n),i.rewardEndTime);if(i.rewardOpenTime.gte(r))continue;let a=r.sub(i.rewardLastUpdateTime).mul(i.rewardPerSecond),c=i.totalReward.sub(i.totalRewardEmissioned);c.lt(a)?(a=c,i.rewardLastUpdateTime=i.rewardLastUpdateTime.add(c.div(i.rewardPerSecond))):i.rewardLastUpdateTime=r,!e.amount.eq(new Ft(0))&&(i.accRewardPerShare=i.accRewardPerShare.add(a.mul(o.rewardMultiplier).div(e.amount)),i.totalRewardEmissioned=i.totalRewardEmissioned.add(a))}return o}async function yT({connection:o,farmPools:e,owner:t,config:n,chainTime:i}){let r=!1,s=!1,a=new Ft(10),c=[];for(let d of e){let p=Ve(d);p.version===6?s=!0:r=!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:Tt({programId:p.programId,poolId:p.id,owner:t,version:d.version}),version:p.version,key:"ledger",poolId:p.id})}let u={},l=await Fe(o,c,n);for(let{pubkey:d,version:p,key:f,poolId:y,accountInfo:b}of l){let g=y.toBase58();if(u[g]=v({},u[g]),f==="state"){let P=iy(p);(!b||!b.data||b.data.length!==P.span)&&Co.logWithError(`invalid farm state account info, pools.id, ${d}`),u[g].state=P.decode(b.data)}else if(f==="lpVault")(!b||!b.data||b.data.length!==mn.span)&&Co.logWithError(`invalid farm lp vault account info, pools.lpVault, ${d}`),u[g].lpVault=mn.decode(b.data);else if(f==="ledger"){let P=Di(p);b&&b.data&&(b.data.length!==P.span&&Co.logWithError(`invalid farm ledger account info, ledger, ${d}`),u[g].ledger=P.decode(b.data))}}let m=s||r?await o.getSlot():0;for(let d of Object.keys(u))u[d]!==void 0&&(u[d].state=oy(u[d].state,u[d].lpVault,m,i));for(let[d,{state:p,ledger:f}]of Object.entries(u))if(f){let y=p.version===6?p.rewardMultiplier:p.rewardInfos.length===1?a.pow(new Ft(9)):a.pow(new Ft(15)),b=p.rewardInfos.map((g,P)=>{let h=f.rewardDebts[P];return f.deposited.mul(p.version===6?g.accRewardPerShare:g.perShareReward).div(y).sub(h)});u[d].wrapped=U(v({},u[d].wrapped),{pendingRewards:b})}return u}function bT(o,e=Date.now()){if(o.version===6){let t=o.state.rewardInfos;if(t.every(({rewardOpenTime:n})=>xc(e,n.toNumber(),{unit:"s"})))return"upcoming pool";if(t.every(({rewardEndTime:n})=>Sc(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 Qa(o,e,t,n){let i=await o.getAccountInfo(e);if(i===null)throw Error("registrar info check error");let s=ul.decode(i.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=cl.decode(a.data).deposits.findIndex(l=>l.isUsed&&l.votingMintConfigIdx===s);return u===-1?{index:s,isInit:!1}:{index:u,isInit:!0}}var uy=Pe("Raydium_farm_instruction"),Lo={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 No(o){let{version:e,id:t,ledger:n,programId:i,owner:r}=o,s={3:9,5:10}[e];s||uy.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Na.span);Na.encode({instruction:s},a);let c=[A({pubkey:t}),A({pubkey:n}),A({pubkey:r,isWritable:!1}),A({pubkey:li.programId,isWritable:!1}),A({pubkey:ry,isWritable:!1})];return{instruction:new ct({programId:i,keys:c,data:a}),instructionType:X.FarmV3CreateLedger}}function bl(o){var n;let e=Buffer.alloc(Ma.span);Ma.encode({instruction:0,nonce:new jr(o.nonce),rewardTimeInfo:o.rewardInfoConfig},e);let t=[...zs,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:pt}),A({pubkey:o.owner,isWritable:!1,isSigner:!0})];for(let i of o.rewardInfo)t.push(A({pubkey:i.rewardMint,isWritable:!1}),A({pubkey:i.rewardVault}),A({pubkey:i.userRewardToken}));return{instruction:new ct({programId:o.programId,keys:t,data:e}),instructionType:X.FarmV6Create}}function gl(o){let e=Buffer.alloc(Oa.span);Oa.encode({instruction:5},e);let t=[A({pubkey:Et,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 ct({programId:o.programId,keys:t,data:e}),instructionType:X.FarmV6CreatorWithdraw}}function cy(o,e,t,n,i,r,s,a,c,u,l,m,d){let p=E([q("depositEntryIndex"),w("amount")]),f=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:Et,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:Sr,isSigner:!1,isWritable:!1}],y=Buffer.alloc(p.span);p.encode({depositEntryIndex:m,amount:d},y);let b=Buffer.from([...Lo.voterStakeRegistryDeposit,...y]);return new ct({keys:f,programId:o,data:b})}function ly(o,e,t,n){let i=E([]),r=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:li.programId,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([...Lo.voterStakeRegistryUpdateVoterWeightRecord,...s]);return new ct({keys:r,programId:o,data:a})}function my(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f){let y=E([q("depositEntryIndex"),w("amount")]),b=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:Et,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:Sr,isSigner:!1,isWritable:!1}],g=Buffer.alloc(y.span);y.encode({depositEntryIndex:p,amount:f},g);let P=Buffer.from([...Lo.voterStakeRegistryWithdraw,...g]);return new ct({keys:b,programId:o,data:P})}function dy(o,e,t,n,i,r){let s=E([q("ins")]),a=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:li.programId,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);return s.encode({ins:23},c),new ct({keys:a,programId:o,data:c})}function py(o,e,t,n,i,r,s,a){let c=E([q("voterBump"),q("voterWeightRecordBump")]),u=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!0,isWritable:!0},{pubkey:li.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:Sr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({voterBump:s,voterWeightRecordBump:a},l);let m=Buffer.from([...Lo.voterStakeRegistryCreateVoter,...l]);return new ct({keys:u,programId:o,data:m})}function fy(o,e,t,n,i,r,s,a,c,u,l,m){let d=E([q("depositEntryIndex"),q("kind"),q("option"),w("startTs"),Pt("periods"),Xe("allowClawback")]),p=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:li.programId,isSigner:!1,isWritable:!1},{pubkey:Et,isSigner:!1,isWritable:!1},{pubkey:sy,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1}],f=Buffer.alloc(d.span);d.encode({depositEntryIndex:a,kind:c,option:u===void 0?0:1,startTs:u,periods:l,allowClawback:m},f);let y=Buffer.from([...Lo.voterStakeRegistryCreateDepositEntry,...f]);return new ct({keys:p,programId:o,data:y})}async function NT({connection:o,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:r,owner:s,poolId:a,tokenProgram:c}){let u=Da(n,i,r).publicKey,l=Tt({programId:e,poolId:a,owner:s,version:3}),m=await o.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=Ko.decode(m.data),p=d.deposited.sub(d.voteLockedBalance);if(console.log("amount",p.toString()),p.eq(new jr(0)))throw Error("user do not has new stake amount");let f=Wa(e,a).publicKey,y=qa(e,a).publicKey,{publicKey:b,nonce:g}=Ua(n,u,s),P=Z(b,f,c).publicKey,{publicKey:h,nonce:B}=Ga(n,u,s),T=Xa(t,i,r,s).publicKey,k=[],S=Z(s,f,c).publicKey;if(await o.getAccountInfo(S)===null&&k.push(ay(s,S,s,f)),await o.getAccountInfo(b)===null){let M=dy(t,i,s,r,s,T);k.push(M,py(n,u,b,h,s,s,g,B))}let{index:I,isInit:C}=await Qa(o,u,b,f);return C||k.push(fy(n,u,b,P,s,s,f,I,0,void 0,0,!1)),k.push(cy(n,u,b,P,S,s,l,a,f,y,e,I,p),ly(n,u,b,h)),k}async function OT({connection:o,programId:e,governanceProgramId:t,voteWeightAddinProgramId:n,realm:i,communityTokenMint:r,owner:s,poolId:a,tokenProgram:c}){let u=Da(n,i,r).publicKey,l=Tt({programId:e,poolId:a,owner:s,version:3}),m=await o.getAccountInfo(l);if(m===null)throw Error("user is not staker");let d=Ko.decode(m.data);if(d.voteLockedBalance.eq(new jr(0)))throw Error("user has vote locked balance = 0");let p=Wa(e,a).publicKey,f=qa(e,a).publicKey,{publicKey:y}=Ua(n,u,s),b=Z(y,p,c).publicKey,{publicKey:g}=Ga(n,u,s),P=Xa(t,i,r,s).publicKey,h=[],{index:B,isInit:T}=await Qa(o,u,y,p);if(!T)throw Error("deposit entry index check error");return h.push(my(n,u,y,s,P,g,b,Z(s,p,c).publicKey,l,a,p,f,e,B,d.voteLockedBalance)),h}function Ya({payer:o,rewardVault:e,userRewardTokenPub:t,farmKeys:n,rewardInfo:i}){let r=Buffer.alloc(va.span);va.encode({instruction:3,rewardReopenTime:ee(i.openTime),rewardEndTime:ee(i.endTime),rewardPerSecond:ee(i.perSecond)},r);let s=[A({pubkey:Et,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 ct({programId:n.programId,keys:s,data:r})}function Ha({payer:o,userRewardTokenPub:e,farmKeys:t,rewardVault:n,rewardInfo:i}){let r=Buffer.alloc(Fa.span);Fa.encode({instruction:4,isSet:new jr(1),rewardPerSecond:ee(i.perSecond),rewardOpenTime:ee(i.openTime),rewardEndTime:ee(i.endTime),rewardType:ee(Yn[i.rewardType])},r);let s=[...zs,A({pubkey:t.id}),A({pubkey:t.authority,isWritable:!1}),A({pubkey:i.mint,isWritable:!1}),A({pubkey:n}),A({pubkey:e}),A({pubkey:o,isWritable:!1,isSigner:!0})];return new ct({programId:t.programId,keys:s,data:r})}function MT(o){let{farmInfo:e,farmKeys:t,version:n,lpAccount:i,rewardAccounts:r,owner:s,instruction:a,amount:c,deposit:u}=o,[l,m]=[new me(e.programId),new me(e.id)],d=Tt({programId:l,poolId:m,owner:s,version:n}),p=Buffer.alloc(Ct.span);Ct.encode({instruction:a,amount:c},p);let f=n===6?[A({pubkey:Et,isWritable:!1}),...u?[A({pubkey:li.programId,isWritable:!1})]:[],A({pubkey:m}),A({pubkey:new me(t.authority),isWritable:!1}),A({pubkey:new me(t.lpVault)}),A({pubkey:d}),A({pubkey:s,isWritable:!1,isSigner:!0}),A({pubkey:i})]:[A({pubkey:m}),A({pubkey:new me(t.authority),isWritable:!1}),A({pubkey:d}),A({pubkey:s,isWritable:!1,isSigner:!0}),A({pubkey:i}),A({pubkey:new me(t.lpVault)}),A({pubkey:r[0]}),A({pubkey:new me(t.rewardInfos[0].vault)}),A({pubkey:Wi,isWritable:!1}),A({pubkey:Et,isWritable:!1})];if(n===5)for(let y=1;y<t.rewardInfos.length;y++)f.push(A({pubkey:r[y]})),f.push(A({pubkey:new me(t.rewardInfos[y].vault)}));if(n===6)for(let y=0;y<t.rewardInfos.length;y++)f.push(A({pubkey:new me(t.rewardInfos[y].vault)})),f.push(A({pubkey:r[y]}));return new ct({programId:l,keys:f,data:p})}function Oo(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:r,amount:s}=o,[a,c]=[new me(e.programId),new me(e.id)],u=Tt({programId:a,poolId:c,owner:r,version:6}),l=Buffer.alloc(Ct.span);Ct.encode({instruction:2,amount:ee(s)},l);let m=[A({pubkey:Et,isWritable:!1}),A({pubkey:c}),A({pubkey:new me(t.authority),isWritable:!1}),A({pubkey:new me(t.lpVault)}),A({pubkey:u}),A({pubkey:r,isWritable:!1,isSigner:!0}),A({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(A({pubkey:new me(t.rewardInfos[d].vault)})),m.push(A({pubkey:i[d]}));return new ct({programId:a,keys:m,data:l})}function Mo(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:r,amount:s,userAuxiliaryLedgers:a}=o,[c,u]=[new me(e.programId),new me(e.id)],l=Tt({programId:c,poolId:u,owner:r,version:5}),m=Buffer.alloc(Ct.span);Ct.encode({instruction:12,amount:ee(s)},m);let d=[A({pubkey:u}),A({pubkey:new me(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:r,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new me(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new me(t.rewardInfos[0].vault)}),A({pubkey:Wi,isWritable:!1}),A({pubkey:Et,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(A({pubkey:i[p]})),d.push(A({pubkey:new me(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(A({pubkey:p}));return new ct({programId:c,keys:d,data:m})}function Al(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:r,amount:s,userAuxiliaryLedgers:a}=o,[c,u]=[new me(e.programId),new me(e.id)],l=E([q("instruction"),w("amount")]),m=[A({pubkey:u}),A({pubkey:new me(t.authority),isWritable:!1}),A({pubkey:a[0]}),A({pubkey:r,isSigner:!0,isWritable:!1}),A({pubkey:n}),A({pubkey:new me(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new me(t.rewardInfos[0].vault)}),A({pubkey:Wi,isWritable:!1}),A({pubkey:Et,isWritable:!1}),A({pubkey:i[1]}),A({pubkey:new me(t.rewardInfos[1].vault)})],d=Buffer.alloc(l.span);return l.encode({instruction:2,amount:s},d),new ct({keys:m,programId:c,data:d})}function vo(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:r,amount:s,userAuxiliaryLedgers:a}=o,[c,u]=[new me(e.programId),new me(e.id)],l=Tt({programId:c,poolId:u,owner:r,version:3}),m=Buffer.alloc(Ct.span);Ct.encode({instruction:11,amount:ee(s)},m);let d=[A({pubkey:u}),A({pubkey:new me(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:r,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new me(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new me(t.rewardInfos[0].vault)}),A({pubkey:Wi,isWritable:!1}),A({pubkey:Et,isWritable:!1})];if(a)for(let p of a)d.push(A({pubkey:p}));return new ct({programId:c,keys:d,data:m})}function Pl(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:r,amount:s,userAuxiliaryLedgers:a}=o,[c,u]=[new me(e.programId),new me(e.id)],l=Tt({programId:c,poolId:u,owner:r,version:3}),m=Buffer.alloc(Ct.span);Ct.encode({instruction:10,amount:ee(s)},m);let d=[A({pubkey:u}),A({pubkey:new me(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:r,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new me(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new me(t.rewardInfos[0].vault)}),A({pubkey:Wi,isWritable:!1}),A({pubkey:Et,isWritable:!1})];if(a)for(let p of a)d.push(A({pubkey:p}));return new ct({programId:c,keys:d,data:m})}function wl(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:r,amount:s,userAuxiliaryLedgers:a}=o,[c,u]=[new me(e.programId),new me(e.id)],l=Tt({programId:c,poolId:u,owner:r,version:5}),m=Buffer.alloc(Ct.span);Ct.encode({instruction:11,amount:ee(s)},m);let d=[A({pubkey:u}),A({pubkey:new me(t.authority),isWritable:!1}),A({pubkey:l}),A({pubkey:r,isWritable:!1,isSigner:!0}),A({pubkey:n}),A({pubkey:new me(t.lpVault)}),A({pubkey:i[0]}),A({pubkey:new me(t.rewardInfos[0].vault)}),A({pubkey:Wi,isWritable:!1}),A({pubkey:Et,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)d.push(A({pubkey:i[p]})),d.push(A({pubkey:new me(t.rewardInfos[p].vault)}));if(a)for(let p of a)d.push(A({pubkey:p}));return new ct({programId:c,keys:d,data:m})}function kl(o){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:i,owner:r,amount:s}=o,[a,c]=[new me(e.programId),new me(e.id)],u=Tt({programId:a,poolId:c,owner:r,version:6}),l=Buffer.alloc(Ct.span);Ct.encode({instruction:1,amount:ee(s)},l);let m=[A({pubkey:Et,isWritable:!1}),A({pubkey:li.programId,isWritable:!1}),A({pubkey:c}),A({pubkey:new me(t.authority),isWritable:!1}),A({pubkey:new me(t.lpVault)}),A({pubkey:u}),A({pubkey:r,isWritable:!1,isSigner:!0}),A({pubkey:n})];for(let d=0;d<t.rewardInfos.length;d++)m.push(A({pubkey:new me(t.rewardInfos[d].vault)})),m.push(A({pubkey:i[d]}));return new ct({programId:a,keys:m,data:l})}var Fo=class extends De{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(pt)){let n=await zn({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:za(U(v({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:n.addresses.newAccount,newInstruction:n}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:n,programId:i=Li,txVersion:r,feePayer:s,lockProgram:a}){var S,x;this.checkDisabled(),this.scope.checkOwner();let u={lpMint:new Ne(e.lpMint.address),lockInfo:{lockMint:(S=a==null?void 0:a.mint)!=null?S:ll,lockVault:(x=a==null?void 0:a.vault)!=null?x:ml},version:6,rewardInfos:t,programId:i},l=this.createTxBuilder(s),m=n!=null?n:this.scope.ownerPubKey,d=Je({fromPublicKey:m,programId:u.programId}),p=await this.scope.connection.getMinimumBalanceForRentExemption(So.span);l.addInstruction({instructions:[yy.createAccountWithSeed({fromPubkey:m,basePubkey:m,seed:d.seed,newAccountPubkey:d.publicKey,lamports:p,space:So.span,programId:u.programId})]});let{publicKey:f,nonce:y}=fl({programId:new Ne(u.programId),poolId:d.publicKey}),b=Ro({programId:u.programId,poolId:d.publicKey,mint:u.lpMint,type:"lpVault"}),g=[],P=[];for(let K of u.rewardInfos){K.openTime>=K.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",K.openTime.toString()),isNaN(Yn[K.rewardType])&&this.logAndCreateError("rewardType error",K.rewardType),Number(K.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",K.perSecond),g.push(yl(K));let{rewardPubKey:I,newInstruction:C}=await this._getUserRewardInfo({rewardInfo:K,payer:m});C&&l.addInstruction(C),I||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let M=K.mint.equals(pt)?new Ne(dt.address):K.mint;P.push({rewardMint:M,rewardVault:Ro({programId:u.programId,poolId:d.publicKey,mint:M,type:"rewardVault"}),userRewardToken:I})}let{account:h,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:new Ne(u.lockInfo.lockMint),owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1});B&&l.addInstruction(B),h||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:T,instructionType:k}=bl({farmId:d.publicKey,owner:this.scope.ownerPubKey,farmAuthority:f,lpVault:b,lpMint:u.lpMint,lockVault:u.lockInfo.lockVault,lockMint:u.lockInfo.lockMint,lockUserAccount:h,programId:u.programId,rewardInfo:P,rewardInfoConfig:g,nonce:y});return l.addInstruction({instructions:[T],instructionTypes:[k]}).versionBuild({txVersion:r,extInfo:{farmId:d.publicKey,farmAuthority:f,lpVault:b,lockUserAccount:h,nonce:y}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:n,txVersion:i,feePayer:r}){var g;let s=Qt[e.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ve((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),c={id:a.id,rewardInfos:e.rewardInfos,lpVault:a.lpVault,programId:a.programId};n.openTime>=n.endTime&&this.logAndCreateError("start time error","newRewardInfo",n);let u=t||this.scope.ownerPubKey,l=n.mint.equals(pt)?new Ne(dt.address):n.mint,m=c.rewardInfos.findIndex(P=>new Ne(P.mint.address).equals(l)),d=a.rewardInfos[m];d||this.logAndCreateError("configuration does not exist","rewardMint",l);let p=(g=d.vault)!=null?g:pt,f=this.createTxBuilder(r),{rewardPubKey:y,newInstruction:b}=await this._getUserRewardInfo({rewardInfo:n,payer:u});return b&&f.addInstruction(b),y||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),f.addInstruction({instructions:[Ya({payer:this.scope.ownerPubKey,rewardVault:p,userRewardTokenPub:y,farmKeys:c,rewardInfo:n})],instructionTypes:[X.FarmV6Restart]}).versionBuild({txVersion:i})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:n,txVersion:i,feePayer:r}){var m;let s=Qt[e.programId];s!==6&&this.logAndCreateError("invalid farm version ",s);let a=Ve((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),c={id:a.id,rewardInfos:e.rewardInfos,lpVault:a.lpVault,programId:a.programId};n.forEach(d=>{d.openTime>=d.endTime&&this.logAndCreateError("start time error","newRewardInfo",d)});let u=t||this.scope.ownerPubKey,l=this.createTxBuilder(r);for(let d of n){let p=d.mint.equals(pt)?new Ne(dt.address):d.mint,f=c.rewardInfos.findIndex(B=>new Ne(B.mint.address).equals(p)),y=a.rewardInfos[f];y||this.logAndCreateError("configuration does not exist","rewardMint",p);let b=(m=y.vault)!=null?m:pt,{rewardPubKey:g,newInstruction:P}=await this._getUserRewardInfo({rewardInfo:d,payer:u});P&&l.addInstruction(P),g||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let h=Ya({payer:this.scope.ownerPubKey,rewardVault:b,userRewardTokenPub:g,farmKeys:c,rewardInfo:d});l.addInstruction({instructions:[h],instructionTypes:[X.FarmV6Restart]})}return l.versionBuild({txVersion:i})}async addNewRewardToken(e){let{txVersion:t,farmInfo:n,newRewardInfo:i,payer:r,feePayer:s}=e,a=Qt[n.programId];a!==6&&this.logAndCreateError("invalid farm version ",a);let c=Ve((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=r!=null?r:this.scope.ownerPubKey,l=this.createTxBuilder(s),m=i.mint.equals(pt)?new Ne(dt.address):i.mint,d=Ro({programId:new Ne(n.programId),poolId:new Ne(n.id),mint:m,type:"rewardVault"}),{rewardPubKey:p,newInstruction:f}=await this._getUserRewardInfo({rewardInfo:i,payer:u});return f&&l.addInstruction(f),p||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),i.mint=m,l.addInstruction({instructions:[Ha({payer:this.scope.ownerPubKey,userRewardTokenPub:p,farmKeys:c,rewardVault:d,rewardInfo:i})],instructionTypes:[X.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:n,newRewardInfos:i,payer:r,feePayer:s}=e,a=Qt[n.programId];a!==6&&this.logAndCreateError("invalid farm version ",a);let c=Ve((await this.scope.api.fetchFarmKeysById({ids:n.id}))[0]),u=r!=null?r:this.scope.ownerPubKey,l=this.createTxBuilder(s);for(let m of i){let d=m.mint.equals(pt)?new Ne(dt.address):m.mint,p=Ro({programId:new Ne(n.programId),poolId:new Ne(n.id),mint:d,type:"rewardVault"}),{rewardPubKey:f,newInstruction:y}=await this._getUserRewardInfo({rewardInfo:m,payer:u});y&&l.addInstruction(y),f||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let b=Ha({payer:this.scope.ownerPubKey,userRewardTokenPub:f,farmKeys:c,rewardVault:p,rewardInfo:U(v({},m),{mint:d})});l.addInstruction({instructions:[b],instructionTypes:[X.FarmV6CreatorAddReward]})}return l.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:n,amount:i,feePayer:r,useSOLBalance:s,associatedOnly:a=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:u,computeBudgetConfig:l,txTipConfig:m}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:d,programId:p}=n,f=Qt[p];f===4&&this.logAndCreateError("V4 has suspended deposits:",n.programId),_a(f)||this.logAndCreateError("invalid farm program:",n.programId);let[y,b]=[new Ne(n.programId),new Ne(n.id)],g=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],P=Tt({programId:y,poolId:b,owner:this.scope.ownerPubKey,version:f}),h=this.createTxBuilder(r);h.addCustomComputeBudget(l),h.addTipInstruction(m);let B={};for(let R of this.scope.account.tokenAccounts)if(a){let L=Z(this.scope.ownerPubKey,R.mint,R.programId).publicKey;R.publicKey&&L.equals(R.publicKey)&&(B[R.mint.toString()]=R.publicKey)}else B[R.mint.toString()]=R.publicKey;let T=g.lpMint,k=B[T.address];k||this.logAndCreateError("you don't have any lp","lp zero",B);let S=[];for(let R of d){let L=s&&R.mint.address===$.toString(),V=B[R.mint.address];if(!V){let{account:Y,instructionParams:te}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:R.mint.programId,mint:new Ne(R.mint.address),notUseTokenAccount:L,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!L,associatedOnly:L?!1:a,checkCreateATAOwner:c});V=Y,te&&h.addInstruction(te)}B[R.mint.address]=V,S.push(V)}let x,K=await this.scope.connection.getAccountInfo(P);if(K&&(x=Di(f).decode(K.data)),n.programId!==Li.toString()&&n.programId!==xn.FARM_PROGRAM_ID_V6.toString()&&!x){let{instruction:R,instructionType:L}=No({id:b,programId:y,version:f,ledger:P,owner:this.scope.ownerPubKey});h.addInstruction({instructions:[R],instructionTypes:[L]})}let I=Va({version:f,rewardInfos:d,rewardTokenAccountsPublicKeys:S});I&&this.logAndCreateError(I);let C={amount:ee(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:g,lpAccount:k,rewardAccounts:S,userAuxiliaryLedgers:u==null?void 0:u.map(R=>new Ne(R))},M=f===6?kl(C):f===5?wl(C):Pl(C),F={3:X.FarmV3Deposit,5:X.FarmV5Deposit,6:X.FarmV6Deposit};return h.addInstruction({instructions:[M],instructionTypes:[F[f]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:n,amount:i,deposited:r,useSOLBalance:s,feePayer:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,userAuxiliaryLedgers:l,computeBudgetConfig:m,txTipConfig:d}=e,{rewardInfos:p}=n;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let f=Qt[n.programId];_a(f)||this.logAndCreateError("invalid farm program:",n.programId);let y=(await this.scope.api.fetchFarmKeysById({ids:n.id}))[0],b=this.createTxBuilder(a);b.addCustomComputeBudget(m),b.addTipInstruction(d);let g={};for(let I of this.scope.account.tokenAccounts)if(c){let C=Z(this.scope.ownerPubKey,I.mint).publicKey;I.publicKey&&C.equals(I.publicKey)&&(g[I.mint.toString()]=I.publicKey)}else g[I.mint.toString()]=I.publicKey;if(f!==4){let I=Tt({programId:new Ne(n.programId),poolId:new Ne(n.id),owner:this.scope.ownerPubKey,version:f}),C=await this.scope.connection.getAccountInfo(I);if(C)Di(f).decode(C.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:n.id});else if(f!==6){let{instruction:M,instructionType:F}=No({id:new Ne(y.id),programId:new Ne(y.programId),version:f,ledger:I,owner:this.scope.ownerPubKey});b.addInstruction({instructions:[M],instructionTypes:[F]})}}r&&r.isZero()&&!(l||[]).length&&this.logAndCreateError("no deposited lp",{farmId:n.id});let P=y.lpMint.address,h=s&&P===$.toString(),B=g[P.toString()];if(!B){let{account:I,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.lpMint.programId,mint:new Ne(P),notUseTokenAccount:h,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:h?!1:c,checkCreateATAOwner:u});B=I,C&&b.addInstruction(C)}g[P.toString()]=B;let T=[];for(let I of p){let C=s&&I.mint.address===$.toString(),M=g[I.mint.address];if(!M){let{account:F,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:I.mint.programId,mint:new Ne(I.mint.address),notUseTokenAccount:C,createInfo:{payer:a||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!C,associatedOnly:C?!1:c,checkCreateATAOwner:u});M=F,R&&b.addInstruction(R)}g[I.mint.address]=M,T.push(M)}let k=Va({version:f,rewardInfos:p,rewardTokenAccountsPublicKeys:T});k&&this.logAndCreateError(k);let S={amount:ee(i),owner:this.scope.ownerPubKey,farmInfo:n,farmKeys:y,lpAccount:B,rewardAccounts:T,userAuxiliaryLedgers:l==null?void 0:l.map(I=>new Ne(I))},x=f===6?Oo(S):f===5?Mo(S):f===4?Al(S):vo(S),K={3:X.FarmV3Withdraw,4:X.FarmV4Withdraw,5:X.FarmV5Withdraw,6:X.FarmV6Withdraw};return b.addInstruction({instructions:[x],instructionTypes:[K[f]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:n,computeBudgetConfig:i,txTipConfig:r,feePayer:s}){var y;this.scope.checkOwner();let a=Ve((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),c=Qt[e.programId];c!==6&&this.logAndCreateError("invalid farm version",c);let u=a.rewardInfos.find(b=>kt(b.mint.address).equals(kt(t)));u||this.logAndCreateError("withdraw mint error","rewardInfos",e);let l=(y=u==null?void 0:u.vault)!=null?y:pt,m=this.createTxBuilder(s),d;if(t.equals(pt)||t.equals(Ne.default)){let b=await zn({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:za(U(v({},u),{openTime:u.openTime,endTime:u.endTime,perSecond:new N(u.perSecond).mul(10**u.mint.decimals).toString()}))});d=b.addresses.newAccount,m.addInstruction(b)}else{let b=await this.scope.account.getCreatedTokenAccount({mint:t});b===null?(d=await this.scope.account.getAssociatedTokenAccount(t),m.addInstruction({instructions:[hl(this.scope.ownerPubKey,d,this.scope.ownerPubKey,t)],instructionTypes:[X.CreateATA]})):d=b}let{instruction:p,instructionType:f}=gl({programId:a.programId,id:a.id,authority:a.authority,lpVault:a.lpVault,rewardVault:l,userRewardToken:d,owner:this.scope.ownerPubKey});return m.addCustomComputeBudget(i),m.addTipInstruction(r),m.addInstruction({instructions:[p],instructionTypes:[f]}).versionBuild({txVersion:n})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:n,feePayer:i,associatedOnly:r=!0,checkCreateATAOwner:s=!1,userAuxiliaryLedgers:a,txVersion:c,computeBudgetConfig:u}=e,l=this.createTxBuilder(i),m={};for(let f of this.scope.account.tokenAccounts)if(r){let y=Z(this.scope.ownerPubKey,f.mint).publicKey;f.publicKey&&y.equals(f.publicKey)&&(m[f.mint.toString()]=f.publicKey)}else m[f.mint.toString()]=f.publicKey;let p=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(f=>f.id).join(",")})).reduce((f,y)=>U(v({},f),{[y.id]:y}),{});for(let f of Object.values(t)){let{programId:y,lpMint:b,rewardInfos:g,id:P}=f,h=Qt[y],B=b.address,T=n&&B===$.toString(),k=m[B];if(!k){let{account:M,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.programId,mint:new Ne(B),notUseTokenAccount:T,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:T?!1:r,checkCreateATAOwner:s});k=M,F&&l.addInstruction(F)}m[B.toString()]=k;let S=[];for(let M of g){let F=n&&M.mint.address===$.toString(),R=m[M.mint.address];if(!R)if(F){let{account:L,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:M.mint.programId,mint:new Ne(M.mint.address),notUseTokenAccount:F,createInfo:{payer:i||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!F,associatedOnly:F?!1:r,checkCreateATAOwner:s});R=L,V&&l.addInstruction(V)}else{let L=new Ne(M.mint.address);R=this.scope.account.getAssociatedTokenAccount(L),l.addInstruction({instructions:[hl(this.scope.ownerPubKey,R,this.scope.ownerPubKey,L)]})}m[M.mint.address]=R,S.push(R)}let x=p[P],K={amount:ot,owner:this.scope.ownerPubKey,farmInfo:f,farmKeys:x,lpAccount:k,rewardAccounts:S,userAuxiliaryLedgers:a==null?void 0:a.map(M=>new Ne(M))},I=h===6?Oo(K):h===5?Mo(K):vo(K),C={3:X.FarmV3Withdraw,5:X.FarmV5Withdraw,6:X.FarmV6Withdraw};l.addInstruction({instructions:[I],instructionTypes:[C[h]]})}return c===1?l.sizeCheckBuild({computeBudgetConfig:u}):l.sizeCheckBuildV0({computeBudgetConfig:u})}};import{PublicKey as rt}from"@solana/web3.js";import{AccountLayout as ob,NATIVE_MINT as ls,TOKEN_PROGRAM_ID as jn}from"@solana/spl-token";import{Keypair as is,PublicKey as z,SystemProgram as Nn,TransactionInstruction as wt}from"@solana/web3.js";import su from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Go,TOKEN_2022_PROGRAM_ID as Qe,TOKEN_PROGRAM_ID as Oe}from"@solana/spl-token";import xy from"bn.js";import Yt from"bn.js";var ke=new Yt(0),Wt=new Yt(1),Cn=new Yt(-1),lt=new Yt(1).shln(64),Zr=new Yt(1).shln(128),Eo=lt.sub(Wt),_o=64,Tl=Zr.subn(1),It=-443636,Rt=-It,Ht=new Yt("4295048016"),jt=new Yt("79226673521066979257578248091"),$r=new Yt("4295048017"),Jr=new Yt("79226673521066979257578248090"),Il=16,Bl="59543866431248",xl="184467440737095516",Sl="15793534762490258745",es=new Yt(10).pow(new Yt(6)),by=(n=>(n[n.rate_500=500]="rate_500",n[n.rate_3000=3e3]="rate_3000",n[n.rate_10000=1e4]="rate_10000",n))(by||{}),mI={[500]:10,[3e3]:60,[1e4]:200},dI={version:6,liquidity:ke,tickCurrent:0,feeGrowthGlobalX64A:ke,feeGrowthGlobalX64B:ke,protocolFeesTokenA:ke,protocolFeesTokenB:ke,swapInAmountTokenA:ke,swapOutAmountTokenB:ke,swapInAmountTokenB:ke,swapOutAmountTokenA:ke,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},Kl={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:[]},pI=new Yt("18446744073700000000");import ge from"bn.js";function ts(o){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,o,!1),new Uint8Array(e)}function yI(o){let e=new ArrayBuffer(2);return new DataView(e).setInt16(0,o,!1),new Uint8Array(e)}function bI(o){let e=new ArrayBuffer(4);return new DataView(e).setUint32(0,o,!1),new Uint8Array(e)}function ns(o){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,o,!1),new Uint8Array(e)}function ja(o,e){let t=0;for(let n=o-1;n>=0&&!e.testn(n);n--)t++;return t}function Za(o,e){let t=0;for(let n=0;n<o&&!e.testn(n);n++)t++;return t}function Vo(o,e){for(let t=0;t<o;t++)if(e.testn(t))return!1;return!0}function Cl(o,e){return Vo(o,e)?null:ja(o,e)}function Rl(o,e){return Vo(o,e)?null:Za(o,e)}var gy=Buffer.from("amm_config","utf8"),$a=Buffer.from("pool","utf8"),Ja=Buffer.from("pool_vault","utf8"),Ay=Buffer.from("pool_reward_vault","utf8"),Ll=Buffer.from("position","utf8"),Py=Buffer.from("tick_array","utf8"),wy=Buffer.from("operation","utf8"),ky=Buffer.from("pool_tick_array_bitmap_extension","utf8"),hy=Buffer.from("observation","utf8");function wI(o,e){return oe([gy,ts(e)],o)}function Nl(o,e,t,n){return oe([$a,e.toBuffer(),t.toBuffer(),n.toBuffer()],o)}function eu(o,e,t){return oe([Ja,e.toBuffer(),t.toBuffer()],o)}function Ol(o,e,t){return oe([Ay,e.toBuffer(),t.toBuffer()],o)}function he(o,e,t){return oe([Py,e.toBuffer(),ns(t)],o)}function dn(o,e,t,n){return oe([Ll,e.toBuffer(),ns(t),ns(n)],o)}function Lt(o,e){return oe([Ll,e.toBuffer()],o)}function Rn(o){return oe([Buffer.from("metadata","utf8"),sn.toBuffer(),o.toBuffer()],sn)}function Do(o){return oe([wy],o)}function et(o,e){return oe([ky,e.toBuffer()],o)}function Ml(o,e){return oe([hy,e.toBuffer()],o)}var vl=Buffer.from("locked_position","utf8");function tu(o,e){return oe([vl,e.toBuffer()],o)}function qi(o,e){return oe([vl,e.toBuffer()],o)}var Ty=Buffer.from("support_mint","utf8");function nu(o,e){return oe([Ty,e.toBuffer()],o)}import{PublicKey as qt}from"@solana/web3.js";import{TOKEN_2022_PROGRAM_ID as Fl}from"@solana/spl-token";import qe from"bn.js";import An from"bn.js";var Wo=class{static getfeeGrowthInside(e,t,n){let i=new An(0),r=new An(0);e.tickCurrent>=t.tick?(i=t.feeGrowthOutsideX64A,r=t.feeGrowthOutsideX64B):(i=e.feeGrowthGlobalX64A.sub(t.feeGrowthOutsideX64A),r=e.feeGrowthGlobalX64B.sub(t.feeGrowthOutsideX64B));let s=new An(0),a=new An(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=de.wrappingSubU128(de.wrappingSubU128(e.feeGrowthGlobalX64A,i),s),u=de.wrappingSubU128(de.wrappingSubU128(e.feeGrowthGlobalX64B,r),a);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:u}}static GetPositionFees(e,t,n,i){let{feeGrowthInsideX64A:r,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=de.mulDivFloor(de.wrappingSubU128(r,t.feeGrowthInsideLastX64A),t.liquidity,lt),c=t.tokenFeesOwedA.add(a),u=de.mulDivFloor(de.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,lt),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionFeesV2(e,t,n,i){let{feeGrowthInsideX64A:r,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,i),a=de.mulDivFloor(de.wrappingSubU128(r,t.feeGrowthInsideLastX64A),t.liquidity,lt),c=t.tokenFeesOwedA.add(a),u=de.mulDivFloor(de.wrappingSubU128(s,t.feeGrowthInsideLastX64B),t.liquidity,lt),l=t.tokenFeesOwedB.add(u);return{tokenFeeAmountA:c,tokenFeeAmountB:l}}static GetPositionRewardsV2(e,t,n,i){let r=[],s=this.getRewardGrowthInsideV2(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let c=s[a],u=t.rewardInfos[a],l=de.wrappingSubU128(c,u.growthInsideLastX64),m=de.mulDivFloor(l,t.liquidity,lt),d=u.rewardAmountOwed.add(m);r.push(d)}return r}static GetPositionRewards(e,t,n,i){let r=[],s=this.getRewardGrowthInside(e.tickCurrent,n,i,e.rewardInfos);for(let a=0;a<s.length;a++){let c=s[a],u=t.rewardInfos[a],l=de.wrappingSubU128(c,u.growthInsideLastX64),m=de.mulDivFloor(l,t.liquidity,lt),d=u.rewardAmountOwed.add(m);r.push(d)}return r}static getRewardGrowthInside(e,t,n,i){let r=[];for(let s=0;s<i.length;s++){let a=new An(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let c=new An(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),r.push(de.wrappingSubU128(de.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),c))}return r}static getRewardGrowthInsideV2(e,t,n,i){let r=[];for(let s=0;s<i.length;s++){let a=new An(0);t.liquidityGross.eqn(0)?a=i[s].rewardGrowthGlobalX64:e<t.tick?a=i[s].rewardGrowthGlobalX64.sub(t.rewardGrowthsOutsideX64[s]):a=t.rewardGrowthsOutsideX64[s];let c=new An(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=i[s].rewardGrowthGlobalX64.sub(n.rewardGrowthsOutsideX64[s])),r.push(de.wrappingSubU128(de.wrappingSubU128(i[s].rewardGrowthGlobalX64,a),c))}return r}static getAmountsFromLiquidity({poolInfo:e,ownerPosition:t,liquidity:n,slippage:i,add:r,epochInfo:s}){var b,g,P,h;let a=ae.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),c=ae.getSqrtPriceX64FromTick(t.tickLower),u=ae.getSqrtPriceX64FromTick(t.tickUpper),l=r?1+i:1-i,m=Te.getAmountsFromLiquidity(a,c,u,n,r),[d,p]=[Ce(m.amountA,(b=e.mintA.extensions)==null?void 0:b.feeConfig,s,!0),Ce(m.amountB,(g=e.mintB.extensions)==null?void 0:g.feeConfig,s,!0)],[f,y]=[Ce(new An(new N(m.amountA.toString()).mul(l).toFixed(0)),(P=e.mintA.extensions)==null?void 0:P.feeConfig,s,!0),Ce(new An(new N(m.amountB.toString()).mul(l).toFixed(0)),(h=e.mintB.extensions)==null?void 0:h.feeConfig,s,!0)];return{liquidity:n,amountA:d,amountB:p,amountSlippageA:f,amountSlippageB:y,expirationTime:un(d.expirationTime,p.expirationTime)}}};var Iy=15,xe=class{static async getTickArrays(e,t,n,i,r,s,a){let c=[],u=J.getTickArrayStartIndexByTick(i,r),l=J.getInitializedTickArrayInRange(s,a,r,u,Math.floor(Iy/2));for(let p=0;p<l.length;p++){let{publicKey:f}=he(t,n,l[p]);c.push(f)}let m=(await nn(e,c)).map(p=>p!==null?qo.decode(p.data):null),d={};for(let p=0;p<c.length;p++){let f=m[p];f!==null&&(d[f.startTickIndex]=U(v({},f),{address:c[p]}))}return d}static nextInitializedTick(e,t,n,i,r,s){let{initializedTick:a,tickArrayAddress:c,tickArrayStartTickIndex:u}=this.nextInitializedTickInOneArray(e,t,n,i,r,s);for(;a==null||a.liquidityGross.lten(0);){if(u=J.getNextTickArrayStartIndex(u,r,s),this.checkIsValidStartIndex(u,r))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,i,r){let s=Math.floor(e/xe.tickCount(t)),a=n?J.searchLowBitFromStart(i,r,s-1,1,t):J.searchHightBitFromStart(i,r,s+1,1,t);return a.length>0?{isExist:!0,nextStartIndex:a[0]}:{isExist:!1,nextStartIndex:0}}static firstInitializedTickInOneArray(e,t,n,i){let r;if(i){let a=mt-1;for(;a>=0;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){r=c;break}a=a-1}}else{let a=0;for(;a<mt;){let c=n.ticks[a];if(c.liquidityGross.gtn(0)){r=c;break}a=a+1}}let{publicKey:s}=he(e,t,n.startTickIndex);return{nextTick:r,tickArrayAddress:s,tickArrayStartTickIndex:n.startTickIndex}}static nextInitializedTickInOneArray(e,t,n,i,r,s){let a=J.getTickArrayStartIndexByTick(i,r),c=Math.floor((i-a)/r),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<mt;){let d=u.ticks[c];if(d.liquidityGross.gtn(0)){l=d;break}c=c+1}let{publicKey:m}=he(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(J.checkIsOutOfBoundary(e)){if(e>Rt)return!1;let n=J.getTickArrayStartIndexByTick(It,t);return e==n}return e%this.tickCount(t)==0}static tickCount(e){return mt*e}};var iu=14,Ln=class{static maxTickInTickarrayBitmap(e){return e*mt*mi}static getBitmapTickBoundary(e,t){let n=this.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n);e<0&&Math.abs(e)%n!=0&&(i+=1);let r=n*i;return e<0?{minValue:-r,maxValue:-r+n}:{minValue:r,maxValue:r+n}}static nextInitializedTickArrayStartIndex(e,t,n,i){if(!xe.checkIsValidStartIndex(t,n))throw Error("nextInitializedTickArrayStartIndex check error");let r=this.maxTickInTickarrayBitmap(n),s=i?t-xe.tickCount(n):t+xe.tickCount(n);if(s<-r||s>=r)return{isInit:!1,tickIndex:t};let a=n*mt,c=s/a+512;s<0&&s%a!=0&&c--;let u=Math.abs(c);if(i){let l=e.shln(1024-u-1),m=Cl(1024,l);if(m!==null){let d=(u-m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:-r}}else{let l=e.shrn(u),m=Rl(1024,l);if(m!==null){let d=(u+m-512)*a;return{isInit:!0,tickIndex:d}}else return{isInit:!1,tickIndex:r-xe.tickCount(n)}}}},Uo=class{static getBitmapOffset(e,t){if(!xe.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");this.checkExtensionBoundary(e,t);let n=Ln.maxTickInTickarrayBitmap(t),i=Math.floor(Math.abs(e)/n)-1;return e<0&&Math.abs(e)%n===0&&i--,i}static getBitmap(e,t,n){let i=this.getBitmapOffset(e,t);return e<0?{offset:i,tickarrayBitmap:n.negativeTickArrayBitmap[i]}:{offset:i,tickarrayBitmap:n.positiveTickArrayBitmap[i]}}static checkExtensionBoundary(e,t){let{positiveTickBoundary:n,negativeTickBoundary:i}=this.extensionTickBoundary(t);if(e>=i&&e<n)throw Error("checkExtensionBoundary -> InvalidTickArrayBoundary")}static extensionTickBoundary(e){let t=Ln.maxTickInTickarrayBitmap(e),n=-t;if(Rt<=t)throw Error(`extensionTickBoundary check error: ${Rt}, ${t}`);if(n<=It)throw Error(`extensionTickBoundary check error: ${n}, ${It}`);return{positiveTickBoundary:t,negativeTickBoundary:n}}static checkTickArrayIsInit(e,t,n){let{tickarrayBitmap:i}=this.getBitmap(e,t,n),r=this.tickArrayOffsetInBitmap(e,t);return{isInitialized:J.mergeTickArrayBitmap(i).testn(r),startIndex:e}}static nextInitializedTickArrayFromOneBitmap(e,t,n,i){let r=xe.tickCount(t),s=n?e-r:e+r,{tickarrayBitmap:a}=this.getBitmap(s,t,i);return this.nextInitializedTickArrayInBitmap(a,s,t,n)}static nextInitializedTickArrayInBitmap(e,t,n,i){let{minValue:r,maxValue:s}=Ln.getBitmapTickBoundary(t,n),a=this.tickArrayOffsetInBitmap(t,n);if(i){let c=J.mergeTickArrayBitmap(e).shln(mi-1-a),u=Vo(512,c)?null:ja(512,c);if(u!==null){let l=t-u*xe.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:r}}else{let c=J.mergeTickArrayBitmap(e).shrn(a),u=Vo(512,c)?null:Za(512,c);if(u!==null){let l=t+u*xe.tickCount(n);return{isInit:!0,tickIndex:l}}else return{isInit:!1,tickIndex:s-xe.tickCount(n)}}}static tickArrayOffsetInBitmap(e,t){let n=Math.abs(e)%Ln.maxTickInTickarrayBitmap(t),i=Math.floor(n/xe.tickCount(t));return e<0&&n!=0&&(i=mi-i),i}};var _e=class{static getOutputAmountAndRemainAccounts(e,t,n,i,r,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:f,sqrtPriceX64:y,feeAmount:b}=di.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,a,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,l,r,s);return c.push(...f),{allTrade:d,expectedAmountOut:p.mul(Cn),remainingAccounts:c,executionPrice:y,feeAmount:b}}static getInputAmountAndRemainAccounts(e,t,n,i,r){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 y=this.preInitializedTickArrayStartIndex(e,s);if(y.isExist){let{publicKey:b}=he(e.programId,e.id,y.nextStartIndex);a.push(b)}}catch{}a.push(l);let{amountCalculated:m,accounts:d,sqrtPriceX64:p,feeAmount:f}=di.swapCompute(e.programId,e.id,t,e.tickArrayBitmap,e.exBitmapInfo,s,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(Cn),u,r);return a.push(...d),{expectedAmountIn:m,remainingAccounts:a,executionPrice:p,feeAmount:f}}static getFirstInitializedTickArray(e,t){let{isInitialized:n,startIndex:i}=_e.isOverflowDefaultTickarrayBitmap(e.tickSpacing,[e.tickCurrent])?Uo.checkTickArrayIsInit(xe.getArrayStartIndex(e.tickCurrent,e.tickSpacing),e.tickSpacing,e.exBitmapInfo):J.checkTickArrayIsInitialized(J.mergeTickArrayBitmap(e.tickArrayBitmap),e.tickCurrent,e.tickSpacing);if(n){let{publicKey:a}=he(e.programId,e.id,i);return{isExist:!0,startIndex:i,nextAccountMeta:a}}let{isExist:r,nextStartIndex:s}=this.nextInitializedTickArrayStartIndex(e,xe.getArrayStartIndex(e.tickCurrent,e.tickSpacing),t);if(r){let{publicKey:a}=he(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/xe.tickCount(e.tickSpacing)),i=t?J.searchHightBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n+1,1,e.tickSpacing):J.searchLowBitFromStart(e.tickArrayBitmap,e.exBitmapInfo,n-1,1,e.tickSpacing);return i.length>0?{isExist:!0,nextStartIndex:i[0]}:{isExist:!1,nextStartIndex:0}}static nextInitializedTickArrayStartIndex(e,t,n){for(t=xe.getArrayStartIndex(e.tickCurrent,e.tickSpacing);;){let{isInit:i,tickIndex:r}=Ln.nextInitializedTickArrayStartIndex(J.mergeTickArrayBitmap(e.tickArrayBitmap),t,e.tickSpacing,n);if(i)return{isExist:!0,nextStartIndex:r};t=r;let{isInit:s,tickIndex:a}=Uo.nextInitializedTickArrayFromOneBitmap(t,e.tickSpacing,n,e.exBitmapInfo);if(s)return{isExist:!0,nextStartIndex:a};if(t=a,t<It||t>Rt)return{isExist:!1,nextStartIndex:0}}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:r}){var a,c,u;let s=[];for(let l=0;l<r.length;l++){let m=r[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=U(v({},m),{perSecond:de.x64ToDecimal(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new qt(d)});if(p.tokenMint.equals(qt.default))continue;if(n<=p.openTime.toNumber()||i.eq(ke)){s.push(p);continue}let f=new qe(Math.min(p.endTime.toNumber(),n)),y=f.sub(p.lastUpdateTime),b=de.mulDivFloor(y,p.emissionsPerSecondX64,i),g=p.rewardGrowthGlobalX64.add(b),P=de.mulDivFloor(y,p.emissionsPerSecondX64,lt),h=p.rewardTotalEmissioned.add(P);s.push(U(v({},p),{rewardGrowthGlobalX64:g,rewardTotalEmissioned:h,lastUpdateTime:f}))}return s}static isOverflowDefaultTickarrayBitmap(e,t){let{maxTickBoundary:n,minTickBoundary:i}=this.tickRange(e);for(let r of t){let s=J.getTickArrayStartIndexByTick(r,e);if(s>=n||s<i)return!0}return!1}static tickRange(e){let t=Ln.maxTickInTickarrayBitmap(e),n=-t;return t>Rt&&(t=xe.getArrayStartIndex(Rt,e)+xe.tickCount(e)),n<It&&(n=xe.getArrayStartIndex(It,e)),{maxTickBoundary:t,minTickBoundary:n}}static get_tick_array_offset(e,t){if(!xe.checkIsValidStartIndex(e,t))throw new Error("No enough initialized tickArray");return e/xe.tickCount(t)*mi}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let i=await Fe(e,t.map(s=>({pubkey:s})),{batchRequest:n}),r={};for(let s of i)s.accountInfo!==null&&(r[s.pubkey.toString()]=_l.decode(s.accountInfo.data));return r}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let i={},r=[];for(let c of t){let u=J.getTickArrayStartIndexByTick(c.tickCurrent,c.tickSpacing),l=J.getInitializedTickArrayInRange(c.tickArrayBitmap,c.exBitmapInfo,c.tickSpacing,u,7);for(let m of l){let{publicKey:d}=he(c.programId,c.id,m);r.push({pubkey:d}),i[d.toString()]=c.id}}let s=await Fe(e,r,{batchRequest:n}),a={};for(let c of s){if(!c.accountInfo)continue;let u=i[c.pubkey.toString()];if(!u)continue;a[u.toString()]===void 0&&(a[u.toString()]={});let l=qo.decode(c.accountInfo.data);a[u.toString()][l.startTickIndex]=U(v({},l),{address:c.pubkey})}return a}static async fetchPoolsAccountPosition({pools:e,connection:t,ownerInfo:n,batchRequest:i=!1,updateOwnerRewardAndFee:r=!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(Lt(p,d).publicKey);let l=await nn(t,u,{batchRequest:i}),m={};for(let d of l){if(d===null)continue;let p=Ui.decode(d.data),f=p.poolId.toString(),y=e.find(x=>x.state.id.toBase58()===f);if(y===void 0)continue;let b=y.state,g=J._getTickPriceLegacy({poolInfo:b,tick:p.tickLower,baseIn:!0}),P=J._getTickPriceLegacy({poolInfo:b,tick:p.tickUpper,baseIn:!0}),{amountA:h,amountB:B}=Te.getAmountsFromLiquidity(b.sqrtPriceX64,g.tickSqrtPriceX64,P.tickSqrtPriceX64,p.liquidity,!1),T=1/(1-Math.sqrt(Math.sqrt(g.price.div(P.price).toNumber())));y.positionAccount=[...(a=y.positionAccount)!=null?a:[],{poolId:p.poolId,nftMint:p.nftMint,priceLower:g.price,priceUpper:P.price,amountA:h,amountB:B,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=>U(v({},x),{pendingReward:new qe(0)})),leverage:T,tokenFeeAmountA:new qe(0),tokenFeeAmountB:new qe(0)}];let k=await J.getTickArrayAddressByTick(y.state.programId,p.poolId,p.tickLower,y.state.tickSpacing),S=await J.getTickArrayAddressByTick(y.state.programId,p.poolId,p.tickUpper,y.state.tickSpacing);m[`${y.state.programId.toString()}-${p.poolId.toString()}-${p.tickLower}`]=k,m[`${y.state.programId.toString()}-${p.poolId.toString()}-${p.tickUpper}`]=S}if(r){let d=Object.values(m),p=await nn(t,d,{batchRequest:i}),f={};for(let y=0;y<d.length;y++){let b=p[y];if(b===null)continue;let g=d[y].toString();f[g]=qo.decode(b.data)}for(let{state:y,positionAccount:b}of e)if(!!b)for(let g of b){let P=`${y.programId.toString()}-${y.id.toString()}-${g.tickLower}`,h=`${y.programId.toString()}-${y.id.toString()}-${g.tickUpper}`,B=f[m[P].toString()],T=f[m[h].toString()],k=B.ticks[J.getTickOffsetInArray(g.tickLower,y.tickSpacing)],S=T.ticks[J.getTickOffsetInArray(g.tickUpper,y.tickSpacing)],{tokenFeeAmountA:x,tokenFeeAmountB:K}=await Wo.GetPositionFees(y,g,k,S),I=await Wo.GetPositionRewards(y,g,k,S);g.tokenFeeAmountA=x.gte(new qe(0))?x:new qe(0),g.tokenFeeAmountB=K.gte(new qe(0))?K:new qe(0);for(let C=0;C<I.length;C++)g.rewardInfos[C].pendingReward=I[C].gte(new qe(0))?I[C]:new qe(0)}}}return e}static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountIn:r,slippage:s,priceLimit:a=new N(0),catchLiquidityInsufficient:c=!1}){var M;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 N(0))?u=l?Ht.add(new qe(1)):jt.sub(new qe(1)):u=ae.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let p=Ce(r,m,i,!1),{allTrade:f,expectedAmountOut:y,remainingAccounts:b,executionPrice:g,feeAmount:P}=_e.getOutputAmountAndRemainAccounts(e,t,n,p.amount.sub((M=p.fee)!=null?M:ke),u,c),h=Ce(y,d,i,!1),B=ae.sqrtPriceX64ToPrice(g,e.mintA.decimals,e.mintB.decimals),T=l?B:new N(1).div(B),k=y.mul(new qe(Math.floor((1-s)*1e10))).div(new qe(1e10)),S=Ce(k,d,i,!1),x=l?e.currentPrice:new N(1).div(e.currentPrice),K=new N(T).sub(x).abs(),I=x,C=new Ze(new N(K).mul(10**15).toFixed(0),new N(I).mul(10**15).toFixed(0));return{allTrade:f,realAmountIn:p,amountOut:h,minAmountOut:S,expirationTime:un(p.expirationTime,h.expirationTime),currentPrice:e.currentPrice,executionPrice:T,priceImpact:C,fee:P,remainingAccounts:b,executionPriceX64:g}}static computeAmountOutFormat({poolInfo:e,tickArrayCache:t,amountIn:n,tokenOut:i,slippage:r,epochInfo:s,catchLiquidityInsufficient:a=!1}){let c=i.address===e.mintB.address,[u,l]=c?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,d]=[new Le(U(v({},u),{mint:u.address,isToken2022:u.programId===Fl.toBase58()})),new Le(U(v({},l),{mint:l.address,isToken2022:l.programId===Fl.toBase58()}))],{allTrade:p,realAmountIn:f,amountOut:y,minAmountOut:b,expirationTime:g,currentPrice:P,executionPrice:h,priceImpact:B,fee:T,remainingAccounts:k,executionPriceX64:S}=_e.computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:new qt(u.address),amountIn:n,slippage:r,epochInfo:s,catchLiquidityInsufficient:a}),x=U(v({},f),{amount:new Ke(m,f.amount),fee:f.fee===void 0?void 0:new Ke(m,f.fee)}),K=U(v({},y),{amount:new Ke(d,y.amount),fee:y.fee===void 0?void 0:new Ke(d,y.fee)}),I=U(v({},b),{amount:new Ke(d,b.amount),fee:b.fee===void 0?void 0:new Ke(d,b.fee)}),C=new ft({baseToken:m,denominator:new qe(10).pow(new qe(20+m.decimals)),quoteToken:d,numerator:P.mul(new N(10**(20+d.decimals))).toFixed(0)}),M=new ft({baseToken:m,denominator:new qe(10).pow(new qe(20+m.decimals)),quoteToken:d,numerator:h.mul(new N(10**(20+d.decimals))).toFixed(0)}),F=new Ke(m,T);return{allTrade:p,realAmountIn:x,amountOut:K,minAmountOut:I,expirationTime:g,currentPrice:C,executionPrice:M,priceImpact:B,fee:F,remainingAccounts:k,executionPriceX64:S}}static computeAmountIn({poolInfo:e,tickArrayCache:t,baseMint:n,epochInfo:i,amountOut:r,slippage:s,priceLimit:a=new N(0)}){var I;let c=n.toBase58()===e.mintA.address,u={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},l;a.equals(new N(0))?l=c?jt.sub(new qe(1)):Ht.add(new qe(1)):l=ae.priceToSqrtPriceX64(a,e.mintA.decimals,e.mintB.decimals);let m=Ce(r,u[n.toString()],i,!0),{expectedAmountIn:d,remainingAccounts:p,executionPrice:f,feeAmount:y}=_e.getInputAmountAndRemainAccounts(e,t,n,m.amount.sub((I=m.fee)!=null?I:ke),l),b=c?e.mintB.address:e.mintA.address,g=Ce(d,u[b],i,!1),P=ae.sqrtPriceX64ToPrice(f,e.mintA.decimals,e.mintB.decimals),h=c?P:new N(1).div(P),B=d.mul(new qe(Math.floor((1+s)*1e10))).div(new qe(1e10)),T=Ce(B,u[b],i,!0),k=c?e.currentPrice:new N(1).div(e.currentPrice),S=new N(h).sub(k).abs(),x=k,K=new Ze(new N(S).mul(10**15).toFixed(0),new N(x).mul(10**15).toFixed(0));return{amountIn:g,maxAmountIn:T,realAmountOut:m,expirationTime:un(g.expirationTime,m.expirationTime),currentPrice:e.currentPrice,executionPrice:h,priceImpact:K,fee:y,remainingAccounts:p}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:i}){var f,y,b;let r=e[t],s=J.getTickPrice({poolInfo:e,tick:n,baseIn:!0}).price.toNumber(),a=J.getTickPrice({poolInfo:e,tick:i,baseIn:!0}).price.toNumber(),c=Math.max(s,r.priceMin),l=Math.min(a,r.priceMax)-c,m=a-s,d=r.priceMax-r.priceMin,p;return l<=0?p=0:m===l?p=d/l:d===l?p=l/m:p=l/d*(l/m),{feeApr:r.feeApr*p,rewardsApr:[((f=r.rewardApr[0])!=null?f:0)*p,((y=r.rewardApr[1])!=null?y:0)*p,((b=r.rewardApr[2])!=null?b:0)*p],apr:r.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:i,liquidity:r,positionTickLowerIndex:s,positionTickUpperIndex:a,chainTime:c}){let u=n==="day"?1:n==="week"?7:n==="month"?30:0,l=e[n],m=i[kt(e.mintA.address).toString()],d=i[kt(e.mintB.address).toString()],p=e.mintA.decimals,f=e.mintB.decimals;if(!l||!m||!d)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let y=ae.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),b=ae.getSqrtPriceX64FromTick(s),g=ae.getSqrtPriceX64FromTick(a),{amountSlippageA:P,amountSlippageB:h}=Te.getAmountsFromLiquidityWithSlippage(y,b,g,t,!1,!1,0),{amountSlippageA:B,amountSlippageB:T}=Te.getAmountsFromLiquidityWithSlippage(y,b,g,r,!1,!1,0),k=new N(P.toString()).div(new N(10).pow(p)).mul(m.value).add(new N(h.toString()).div(new N(10).pow(f)).mul(d.value)),S=new N(B.toString()).div(new N(10).pow(p)).mul(m.value).add(new N(T.toString()).div(new N(10).pow(f)).mul(d.value)),x=new N(1).div(k.add(S)),I=new N(l.volumeFee).mul(365).div(u).mul(x).mul(100).toNumber(),C=3600*24*365,M=e.rewardDefaultInfos.map(F=>{var V,Y;let R=F.mint.decimals,L=i[F.mint.address];return c<((V=F.startTime)!=null?V:0)||c>((Y=F.endTime)!=null?Y:0)||!F.perSecond||!L||R===void 0?0:new N(L.value).mul(new N(F.perSecond).mul(C)).div(new N(10).pow(R)).mul(x).mul(100).toNumber()});return{feeApr:I,rewardsApr:M,apr:I+M.reduce((F,R)=>F+R,0)}}static async getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:i,amount:r,slippage:s,add:a,epochInfo:c,amountHasFee:u}){var g,P;let l=ae.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),m=ae.getSqrtPriceX64FromTick(n),d=ae.getSqrtPriceX64FromTick(i),p=Ce(r,(g=e[t?"mintA":"mintB"].extensions)==null?void 0:g.feeConfig,c,!u),f=new qe(new N(p.amount.sub((P=p.fee)!=null?P:ke).toString()).toFixed(0)),y;if(l.lte(m))y=t?Te.getLiquidityFromTokenAmountA(m,d,f,!a):new qe(0);else if(l.lte(d)){let h=Te.getLiquidityFromTokenAmountA(l,d,f,!a),B=Te.getLiquidityFromTokenAmountB(m,l,f);y=t?h:B}else y=t?new qe(0):Te.getLiquidityFromTokenAmountB(m,d,f);let b=await _e.getAmountsFromLiquidity({epochInfo:c,poolInfo:e,tickLower:n,tickUpper:i,liquidity:y,slippage:s,add:a});return{liquidity:y,amountA:t?p:b.amountA,amountB:t?b.amountB:p,amountSlippageA:t?p:b.amountSlippageA,amountSlippageB:t?b.amountSlippageB:p,expirationTime:b.expirationTime}}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:i,liquidity:r,slippage:s,add:a}){var b,g,P,h;let c=ae.getSqrtPriceX64FromTick(n),u=ae.getSqrtPriceX64FromTick(i),l=a?1+s:1-s,m=Te.getAmountsFromLiquidity(ae.priceToSqrtPriceX64(new N(t.price),t.mintA.decimals,t.mintB.decimals),c,u,r,a),[d,p]=[Ce(m.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),Ce(m.amountB,(g=t.mintB.extensions)==null?void 0:g.feeConfig,e,!0)],[f,y]=[Ce(m.amountA.muln(l),(P=t.mintA.extensions)==null?void 0:P.feeConfig,e,!0),Ce(m.amountB.muln(l),(h=t.mintB.extensions)==null?void 0:h.feeConfig,e,!0)];return{liquidity:r,amountA:d,amountB:p,amountSlippageA:f,amountSlippageB:y,expirationTime:un(d.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let i=t.filter(c=>!n[c.id]).map(c=>new qt(c.id));(await nn(e,i)).forEach((c,u)=>{!c||(n[i[u].toBase58()]=pi.decode(c.data))});let s=t.map(c=>et(new qt(c.programId),new qt(c.id)).publicKey),a=await _e.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1});return t.reduce((c,u)=>U(v({},c),{[u.id]:U(v({},n[u.id]),{id:new qt(u.id),version:6,programId:new qt(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:U(v({},u.config),{id:new qt(u.config.id),fundOwner:""}),currentPrice:new N(u.price),exBitmapAccount:et(new qt(u.programId),new qt(u.id)).publicKey,exBitmapInfo:a[et(new qt(u.programId),new qt(u.id)).publicKey.toBase58()],startTime:n[u.id].startTime.toNumber(),rewardInfos:n[u.id].rewardInfos})}),{})}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 rB({poolInfo:o,tickLower:e,tickUpper:t,amountA:n,amountB:i,slippage:r,add:s,epochInfo:a,amountHasFee:c}){var h,B,T,k;let[u,l,m,d]=e<t?[e,t,n,i]:[t,e,i,n],p=ae.priceToSqrtPriceX64(new N(o.price),o.mintA.decimals,o.mintB.decimals),f=ae.getSqrtPriceX64FromTick(u),y=ae.getSqrtPriceX64FromTick(l),[b,g]=[Ce(m,(h=o.mintA.extensions)==null?void 0:h.feeConfig,a,!c),Ce(d,(B=o.mintB.extensions)==null?void 0:B.feeConfig,a,!c)],P=Te.getLiquidityFromTokenAmounts(p,f,y,b.amount.sub((T=b.fee)!=null?T:ke),g.amount.sub((k=g.fee)!=null?k:ke));return Te.getAmountsOutFromLiquidity({poolInfo:o,tickLower:e,tickUpper:t,liquidity:P,slippage:r,add:s,epochInfo:a,amountAddFee:!c})}var ou={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};function El(o){return U(v({},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:ou,week:ou,month:ou,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,burnPercent:0,config:U(v({},o.ammConfig),{id:o.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]})})}var de=class{static mulDivRoundingUp(e,t,n){let i=e.mul(t),r=i.div(n);return i.mod(n).eq(ke)||(r=r.add(Wt)),r}static mulDivFloor(e,t,n){if(n.eq(ke))throw new Error("division by 0");return e.mul(t).div(n)}static mulDivCeil(e,t,n){if(n.eq(ke))throw new Error("division by 0");return e.mul(t).add(n.sub(Wt)).div(n)}static x64ToDecimal(e,t){return new N(e.toString()).div(N.pow(2,64)).toDecimalPlaces(t)}static decimalToX64(e){return new ge(e.mul(N.pow(2,64)).floor().toFixed())}static wrappingSubU128(e,t){return e.add(Zr).sub(t).mod(Zr)}};function gt(o,e){return ru(o.mul(e),64,256)}function By(o,e,t){let n=o.toTwos(t).shln(e);return n.imaskn(t+1),n.fromTwos(t)}function ru(o,e,t){let n=o.toTwos(t).shrn(e);return n.imaskn(t-e+1),n.fromTwos(t-e)}var ae=class{static sqrtPriceX64ToPrice(e,t,n){return de.x64ToDecimal(e).pow(2).mul(N.pow(10,t-n))}static priceToSqrtPriceX64(e,t,n){return de.decimalToX64(e.mul(N.pow(10,n-t)).sqrt())}static getNextSqrtPriceX64FromInput(e,t,n,i){if(!e.gt(ke))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ke))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceX64FromOutput(e,t,n,i){if(!e.gt(ke))throw new Error("sqrtPriceX64 must greater than 0");if(!t.gt(ke))throw new Error("liquidity must greater than 0");return i?this.getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,!1)}static getNextSqrtPriceFromTokenAmountARoundingUp(e,t,n,i){if(n.eq(ke))return e;let r=t.shln(_o);if(i){let s=r,a=r.add(n.mul(e));return a.gte(s)?de.mulDivCeil(s,e,a):de.mulDivRoundingUp(s,Wt,s.div(e).add(n))}else{let s=n.mul(e);if(!r.gt(s))throw new Error("getNextSqrtPriceFromTokenAmountARoundingUp,liquidityLeftShift must gt amountMulSqrtPrice");let a=r.sub(s);return de.mulDivCeil(r,e,a)}}static getNextSqrtPriceFromTokenAmountBRoundingDown(e,t,n,i){let r=n.shln(_o);if(i)return e.add(r.div(t));{let s=de.mulDivRoundingUp(r,Wt,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<It||e>Rt)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?e*-1:e,n=(t&1)!=0?new ge("18445821805675395072"):new ge("18446744073709551616");return(t&2)!=0&&(n=gt(n,new ge("18444899583751176192"))),(t&4)!=0&&(n=gt(n,new ge("18443055278223355904"))),(t&8)!=0&&(n=gt(n,new ge("18439367220385607680"))),(t&16)!=0&&(n=gt(n,new ge("18431993317065453568"))),(t&32)!=0&&(n=gt(n,new ge("18417254355718170624"))),(t&64)!=0&&(n=gt(n,new ge("18387811781193609216"))),(t&128)!=0&&(n=gt(n,new ge("18329067761203558400"))),(t&256)!=0&&(n=gt(n,new ge("18212142134806163456"))),(t&512)!=0&&(n=gt(n,new ge("17980523815641700352"))),(t&1024)!=0&&(n=gt(n,new ge("17526086738831433728"))),(t&2048)!=0&&(n=gt(n,new ge("16651378430235570176"))),(t&4096)!=0&&(n=gt(n,new ge("15030750278694412288"))),(t&8192)!=0&&(n=gt(n,new ge("12247334978884435968"))),(t&16384)!=0&&(n=gt(n,new ge("8131365268886854656"))),(t&32768)!=0&&(n=gt(n,new ge("3584323654725218816"))),(t&65536)!=0&&(n=gt(n,new ge("696457651848324352"))),(t&131072)!=0&&(n=gt(n,new ge("26294789957507116"))),(t&262144)!=0&&(n=gt(n,new ge("37481735321082"))),e>0&&(n=Tl.div(n)),n}static getTickFromPrice(e,t,n){return ae.getTickFromSqrtPriceX64(ae.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(jt)||e.lt(Ht))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=new ge(t-64),i=By(n,32,128),r=new ge("8000000000000000","hex"),s=0,a=new ge(0),c=t>=64?e.shrn(t-63):e.shln(63-t);for(;r.gt(new ge(0))&&s<Il;){c=c.mul(c);let f=c.shrn(127);c=c.shrn(63+f.toNumber()),a=a.add(r.mul(f)),r=r.shrn(1),s+=1}let u=a.shrn(32),m=i.add(u).mul(new ge(Bl)),d=ru(m.sub(new ge(xl)),64,128).toNumber(),p=ru(m.add(new ge(Sl)),64,128).toNumber();return d==p?d:ae.getSqrtPriceX64FromTick(p).lte(e)?p:d}},fi=class{static getTickWithPriceAndTickspacing(e,t,n,i){let s=ae.getTickFromSqrtPriceX64(ae.priceToSqrtPriceX64(e,n,i))/t;return s<0?s=Math.floor(s):s=Math.ceil(s),s*t}static roundPriceWithTickspacing(e,t,n,i){let r=fi.getTickWithPriceAndTickspacing(e,t,n,i),s=ae.getSqrtPriceX64FromTick(r);return ae.sqrtPriceX64ToPrice(s,n,i)}},Te=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(ke))throw new Error("sqrtPriceX64A must greater than 0");let r=n.ushln(_o),s=t.sub(e);return i?de.mulDivRoundingUp(de.mulDivCeil(r,s,t),Wt,e):de.mulDivFloor(r,s,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(ke))throw new Error("sqrtPriceX64A must greater than 0");return i?de.mulDivCeil(n,t.sub(e),lt):de.mulDivFloor(n,t.sub(e),lt)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let r=n.mul(e).mul(t),s=t.sub(e),a=r.div(s);return i?de.mulDivRoundingUp(a,Wt,Eo):a.shrn(_o)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),de.mulDivFloor(n,Eo,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,r){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return Te.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let s=Te.getLiquidityFromTokenAmountA(e,n,i,!1),a=Te.getLiquidityFromTokenAmountB(t,e,r);return s.lt(a)?s:a}else return Te.getLiquidityFromTokenAmountB(t,n,r)}static getAmountsFromLiquidity(e,t,n,i,r){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return{amountA:Te.getTokenAmountAFromLiquidity(t,n,i,r),amountB:new ge(0)};if(e.lt(n)){let s=Te.getTokenAmountAFromLiquidity(e,n,i,r),a=Te.getTokenAmountBFromLiquidity(t,e,i,r);return{amountA:s,amountB:a}}else return{amountA:new ge(0),amountB:Te.getTokenAmountBFromLiquidity(t,n,i,r)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,r,s,a){let{amountA:c,amountB:u}=Te.getAmountsFromLiquidity(e,t,n,i,s),l=r?1+a:1-a,m=new ge(new N(c.toString()).mul(l).toFixed(0)),d=new ge(new N(u.toString()).mul(l).toFixed(0));return{amountSlippageA:m,amountSlippageB:d}}static getAmountsOutFromLiquidity({poolInfo:e,tickLower:t,tickUpper:n,liquidity:i,slippage:r,add:s,epochInfo:a,amountAddFee:c}){var P,h,B,T;let u=ae.priceToSqrtPriceX64(new N(e.price),e.mintA.decimals,e.mintB.decimals),l=ae.getSqrtPriceX64FromTick(t),m=ae.getSqrtPriceX64FromTick(n),d=s?1+r:1-r,p=Te.getAmountsFromLiquidity(u,l,m,i,s),[f,y]=[Ce(p.amountA,(P=e.mintA.extensions)==null?void 0:P.feeConfig,a,c),Ce(p.amountB,(h=e.mintB.extensions)==null?void 0:h.feeConfig,a,c)],[b,g]=[Ce(new ge(new N(p.amountA.toString()).mul(d).toFixed(0)),(B=e.mintA.extensions)==null?void 0:B.feeConfig,a,c),Ce(new ge(new N(p.amountB.toString()).mul(d).toFixed(0)),(T=e.mintB.extensions)==null?void 0:T.feeConfig,a,c)];return{liquidity:i,amountA:f,amountB:y,amountSlippageA:b,amountSlippageB:g,expirationTime:un(f.expirationTime,y.expirationTime)}}},di=class{static swapCompute(e,t,n,i,r,s,a,c,u,l,m,d,p,f,y=!1){if(d.eq(ke))throw new Error("amountSpecified must not be 0");if(f||(f=s?Ht.add(Wt):jt.sub(Wt)),s){if(f.lt(Ht))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(f.gte(m))throw new Error("sqrtPriceX64 must smaller than current")}else{if(f.gt(jt))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(f.lte(m))throw new Error("sqrtPriceX64 must greater than current")}let b=d.gt(ke),g={amountSpecifiedRemaining:d,amountCalculated:ke,sqrtPriceX64:m,tick:u>p?Math.min(p+xe.tickCount(l)-1,u):p,accounts:[],liquidity:c,feeAmount:new ge(0)},P=p,h=n[p],B=0,T=!s&&h.startTickIndex===g.tick;for(;!g.amountSpecifiedRemaining.eq(ke)&&!g.sqrtPriceX64.eq(f);){B>10;let k={};k.sqrtPriceStartX64=g.sqrtPriceX64;let S=J.nextInitTick(h,g.tick,l,s,T),x=S||null,K=null;if(!(x!=null&&x.liquidityGross.gtn(0))){let C=_e.nextInitializedTickArrayStartIndex({tickCurrent:g.tick,tickSpacing:l,tickArrayBitmap:i,exBitmapInfo:r},P,s);if(!C.isExist){if(y)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")}P=C.nextStartIndex;let{publicKey:M}=he(e,t,P);K=M,h=n[P];try{x=J.firstInitializedTick(h,s)}catch{throw Error("not found next tick info")}}k.tickNext=x.tick,k.initialized=x.liquidityGross.gtn(0),p!==P&&K&&(g.accounts.push(K),p=P),k.tickNext<It?k.tickNext=It:k.tickNext>Rt&&(k.tickNext=Rt),k.sqrtPriceNextX64=ae.getSqrtPriceX64FromTick(k.tickNext);let I;if(s&&k.sqrtPriceNextX64.lt(f)||!s&&k.sqrtPriceNextX64.gt(f)?I=f:I=k.sqrtPriceNextX64,[g.sqrtPriceX64,k.amountIn,k.amountOut,k.feeAmount]=di.swapStepCompute(g.sqrtPriceX64,I,g.liquidity,g.amountSpecifiedRemaining,a,s),g.feeAmount=g.feeAmount.add(k.feeAmount),b?(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.sub(k.amountIn.add(k.feeAmount)),g.amountCalculated=g.amountCalculated.sub(k.amountOut)):(g.amountSpecifiedRemaining=g.amountSpecifiedRemaining.add(k.amountOut),g.amountCalculated=g.amountCalculated.add(k.amountIn.add(k.feeAmount))),g.sqrtPriceX64.eq(k.sqrtPriceNextX64)){if(k.initialized){let C=x.liquidityNet;s&&(C=C.mul(Cn)),g.liquidity=Te.addDelta(g.liquidity,C)}T=k.tickNext!=g.tick&&!s&&h.startTickIndex===k.tickNext,g.tick=s?k.tickNext-1:k.tickNext}else if(g.sqrtPriceX64!=k.sqrtPriceStartX64){let C=ae.getTickFromSqrtPriceX64(g.sqrtPriceX64);T=C!=g.tick&&!s&&h.startTickIndex===C,g.tick=C}++B}try{let{nextStartIndex:k,isExist:S}=xe.nextInitializedTickArray(g.tick,l,s,i,r);S&&p!==k&&(g.accounts.push(he(e,t,k).publicKey),p=k)}catch{}return{allTrade:!0,amountSpecifiedRemaining:ke,amountCalculated:g.amountCalculated,feeAmount:g.feeAmount,sqrtPriceX64:g.sqrtPriceX64,liquidity:g.liquidity,tickCurrent:g.tick,accounts:g.accounts}}static swapStepCompute(e,t,n,i,r,s){let a={sqrtPriceX64Next:new ge(0),amountIn:new ge(0),amountOut:new ge(0),feeAmount:new ge(0)},c=i.gte(ke);if(c){let l=de.mulDivFloor(i,es.sub(new ge(r.toString())),es);a.amountIn=s?Te.getTokenAmountAFromLiquidity(t,e,n,!0):Te.getTokenAmountBFromLiquidity(e,t,n,!0),l.gte(a.amountIn)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=ae.getNextSqrtPriceX64FromInput(e,n,l,s)}else a.amountOut=s?Te.getTokenAmountBFromLiquidity(t,e,n,!1):Te.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(Cn).gte(a.amountOut)?a.sqrtPriceX64Next=t:a.sqrtPriceX64Next=ae.getNextSqrtPriceX64FromOutput(e,n,i.mul(Cn),s);let u=t.eq(a.sqrtPriceX64Next);return s?(u&&c||(a.amountIn=Te.getTokenAmountAFromLiquidity(a.sqrtPriceX64Next,e,n,!0)),u&&!c||(a.amountOut=Te.getTokenAmountBFromLiquidity(a.sqrtPriceX64Next,e,n,!1))):(a.amountIn=u&&c?a.amountIn:Te.getTokenAmountBFromLiquidity(e,a.sqrtPriceX64Next,n,!0),a.amountOut=u&&!c?a.amountOut:Te.getTokenAmountAFromLiquidity(e,a.sqrtPriceX64Next,n,!1)),!c&&a.amountOut.gt(i.mul(Cn))&&(a.amountOut=i.mul(Cn)),c&&!a.sqrtPriceX64Next.eq(t)?a.feeAmount=i.sub(a.amountIn):a.feeAmount=de.mulDivCeil(a.amountIn,new ge(r),es.sub(new ge(r))),[a.sqrtPriceX64Next,a.amountIn,a.amountOut,a.feeAmount]}};var mt=60,mi=512,J=class{static getTickArrayAddressByTick(e,t,n,i){let r=J.getTickArrayStartIndexByTick(n,i),{publicKey:s}=he(e,t,r);return s}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=J.getTickArrayStartIndexByTick(e,t),i=Math.floor((e-n)/t);if(i<0||i>=mt)throw new Error("tick offset in array overflow");return i}static getTickArrayBitIndex(e,t){let n=xe.tickCount(t),i=e/n;return e<0&&e%n!=0?i=Math.ceil(i)-1:i=Math.floor(i),i}static getTickArrayStartIndexByTick(e,t){return this.getTickArrayBitIndex(e,t)*xe.tickCount(t)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*mt,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*mt,r=Math.floor(t/i)+512,s=Math.abs(r);return{isInitialized:e.testn(s),startIndex:(s-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*mt:e+t*mt}static mergeTickArrayBitmap(e){let t=new xy(0);for(let n=0;n<e.length;n++)t=t.add(e[n].shln(64*n));return t}static getInitializedTickArrayInRange(e,t,n,i,r){let s=Math.floor(i/(n*mt));return[...J.searchLowBitFromStart(e,t,s-1,r,n),...J.searchHightBitFromStart(e,t,s,r,n)]}static getAllInitializedTickArrayStartIndex(e,t,n){return J.searchHightBitFromStart(e,t,-7680,mi,n)}static getAllInitializedTickArrayInfo(e,t,n,i,r){let s=[],a=J.getAllInitializedTickArrayStartIndex(n,i,r);for(let c of a){let{publicKey:u}=he(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,i,r){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>J.mergeTickArrayBitmap(u)),a=[];for(;n>=-7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n--,a.length===i)break}let c=xe.tickCount(r);return a.map(u=>u*c)}static searchHightBitFromStart(e,t,n,i,r){let s=[...[...t.negativeTickArrayBitmap].reverse(),e.slice(0,8),e.slice(8,16),...t.positiveTickArrayBitmap].map(u=>J.mergeTickArrayBitmap(u)),a=[];for(;n<7680;){let u=Math.floor((n+7680)/512),l=(n+7680)%512;if(s[u].testn(l)&&a.push(n),n++,a.length===i)break}let c=xe.tickCount(r);return a.map(u=>u*c)}static checkIsOutOfBoundary(e){return e<It||e>Rt}static nextInitTick(e,t,n,i,r){if(xe.getArrayStartIndex(t,n)!=e.startTickIndex)return null;let a=Math.floor((t-e.startTickIndex)/n);if(i)for(;a>=0;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a-1}else for(r||(a=a+1);a<mt;){if(e.ticks[a].liquidityGross.gtn(0))return e.ticks[a];a=a+1}return null}static firstInitializedTick(e,t){if(t){let n=mt-1;for(;n>=0;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n-1}}else{let n=0;for(;n<mt;){if(e.ticks[n].liquidityGross.gtn(0))return e.ticks[n];n=n+1}}throw Error(`firstInitializedTick check error: ${e} - ${t}`)}static _getTickPriceLegacy({poolInfo:e,tick:t,baseIn:n}){let i=ae.getSqrtPriceX64FromTick(t),r=ae.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:r,tickSqrtPriceX64:i}:{tick:t,price:new N(1).div(r),tickSqrtPriceX64:i}}static _getPriceAndTickLegacy({poolInfo:e,price:t,baseIn:n}){let i=n?t:new N(1).div(t),r=fi.getTickWithPriceAndTickspacing(i,e.ammConfig.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=ae.getSqrtPriceX64FromTick(r),a=ae.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:r,price:a}:{tick:r,price:new N(1).div(a)}}static getTickPrice({poolInfo:e,tick:t,baseIn:n}){let i=ae.getSqrtPriceX64FromTick(t),r=ae.sqrtPriceX64ToPrice(i,e.mintA.decimals,e.mintB.decimals);return n?{tick:t,price:r,tickSqrtPriceX64:i}:{tick:t,price:new N(1).div(r),tickSqrtPriceX64:i}}static getPriceAndTick({poolInfo:e,price:t,baseIn:n}){let i=n?t:new N(1).div(t),r=fi.getTickWithPriceAndTickspacing(i,e.config.tickSpacing,e.mintA.decimals,e.mintB.decimals),s=ae.getSqrtPriceX64FromTick(r),a=ae.sqrtPriceX64ToPrice(s,e.mintA.decimals,e.mintB.decimals);return n?{tick:r,price:a}:{tick:r,price:new N(1).div(a)}}};var Vl=E([Re(8),q("bump"),Dt("index"),O(""),Pt("protocolFeeRate"),Pt("tradeFeeRate"),Dt("tickSpacing"),H(w(),8,"")]),Sy=E([Pt("blockTimestamp"),Ei("tickCumulative"),H(w(),4)]),Dl=E([Re(8),Xe("initialized"),w("recentEpoch"),Dt("observationIndex"),O("poolId"),H(Sy,100,"observations"),H(w(),4)]),Ky=E([q("rewardState"),w("openTime"),w("endTime"),w("lastUpdateTime"),ne("emissionsPerSecondX64"),w("rewardTotalEmissioned"),w("rewardClaimed"),O("tokenMint"),O("tokenVault"),O("creator"),ne("rewardGrowthGlobalX64")]),pi=E([Re(8),q("bump"),O("ammConfig"),O("creator"),O("mintA"),O("mintB"),O("vaultA"),O("vaultB"),O("observationId"),q("mintDecimalsA"),q("mintDecimalsB"),Dt("tickSpacing"),ne("liquidity"),ne("sqrtPriceX64"),We("tickCurrent"),Pt(),ne("feeGrowthGlobalX64A"),ne("feeGrowthGlobalX64B"),w("protocolFeesTokenA"),w("protocolFeesTokenB"),ne("swapInAmountTokenA"),ne("swapOutAmountTokenB"),ne("swapInAmountTokenB"),ne("swapOutAmountTokenA"),q("status"),H(q(),7,""),H(Ky,3,"rewardInfos"),H(w(),16,"tickArrayBitmap"),w("totalFeesTokenA"),w("totalFeesClaimedTokenA"),w("totalFeesTokenB"),w("totalFeesClaimedTokenB"),w("fundFeesTokenA"),w("fundFeesTokenB"),w("startTime"),H(w(),15*4-3,"padding")]),Cy=E([ne("growthInsideLastX64"),w("rewardAmountOwed")]),Ui=E([Re(8),q("bump"),O("nftMint"),O("poolId"),We("tickLower"),We("tickUpper"),ne("liquidity"),ne("feeGrowthInsideLastX64A"),ne("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),H(Cy,3,"rewardInfos"),H(w(),8,"")]),CB=E([Re(8),q("bump"),O("poolId"),We("tickLowerIndex"),We("tickUpperIndex"),ne("liquidity"),ne("feeGrowthInsideLastX64A"),ne("feeGrowthInsideLastX64B"),w("tokenFeesOwedA"),w("tokenFeesOwedB"),H(ne(),3,"rewardGrowthInside"),H(w(),8,"")]),Ry=E([We("tick"),el("liquidityNet"),ne("liquidityGross"),ne("feeGrowthOutsideX64A"),ne("feeGrowthOutsideX64B"),H(ne(),3,"rewardGrowthsOutsideX64"),H(Pt(),13,"")]),qo=E([Re(8),O("poolId"),We("startTickIndex"),H(Ry,mt,"ticks"),q("initializedTickCount"),H(q(),115,"")]),Wl=E([Re(329),H(O(),100,"whitelistMints")]),_l=E([Re(8),O("poolId"),H(H(w(),8),iu,"positiveTickArrayBitmap"),H(H(w(),8),iu,"negativeTickArrayBitmap")]),RB=E([w(),q("bump"),O("owner"),O("poolId"),O("positionId"),O("nftAccount"),H(w(),8)]),ql=E([Re(8),q("bump"),O("lockOwner"),O("poolId"),O("positionId"),O("nftAccount"),O("lockNftMint"),w("recentEpoch"),H(w(),8)]);Dl.span;var Ul=Pe("Raydium_Clmm"),Ut={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],openPositionWithTokenEx:[77,255,174,82,125,29,201,46],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]},Gl=[188,37,179,131,82,150,84,73],Xl=[16,72,250,198,14,162,212,19],Me=class{static createPoolInstruction(e,t,n,i,r,s,a,c,u,l,m,d,p,f){let y=E([ne("sqrtPriceX64"),w("zero")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},...(f==null?void 0:f.map(h=>({pubkey:h,isSigner:!1,isWritable:!1})))||[]],g=Buffer.alloc(y.span);y.encode({sqrtPriceX64:p,zero:ke},g);let P=Buffer.from([...Ut.createPool,...g]);return new wt({keys:b,programId:e,data:P})}static async createPoolInstructions(e){let{programId:t,owner:n,mintA:i,mintB:r,ammConfigId:s,initialPriceX64:a,extendMintAccount:c}=e,[u,l]=[new z(i.address),new z(r.address)],{publicKey:m}=Nl(t,s,u,l),{publicKey:d}=Ml(t,m),{publicKey:p}=eu(t,m,u),{publicKey:f}=eu(t,m,l),y=et(t,m).publicKey,b=[this.createPoolInstruction(t,m,n,s,d,u,p,new z(i.programId||Oe),l,f,new z(r.programId||Oe),y,a,c)];return{signers:[],instructions:b,instructionTypes:[X.CreateAccount,X.ClmmCreatePool],address:{poolId:m,observationId:d,exBitmapAccount:y,mintAVault:p,mintBVault:f},lookupTableAddress:[]}}static openPositionFromLiquidityInstruction(e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,h,B,T,k,S,x,K,I){let C=E([We("tickLowerIndex"),We("tickUpperIndex"),We("tickArrayLowerStartIndex"),We("tickArrayUpperStartIndex"),ne("liquidity"),w("amountMaxA"),w("amountMaxB"),Xe("withMetadata"),q("optionBaseFlag"),Xe("baseFlag")]),M=[...I?[{pubkey:I,isSigner:!1,isWritable:!0}]:[]],F=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,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:f,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:Go,isSigner:!1,isWritable:!1},{pubkey:sn,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...M],R=Buffer.alloc(C.span);C.encode({tickLowerIndex:P,tickUpperIndex:h,tickArrayLowerStartIndex:B,tickArrayUpperStartIndex:T,liquidity:k,amountMaxA:S,amountMaxB:x,withMetadata:K==="create",baseFlag:!1,optionBaseFlag:0},R);let L=Buffer.from([...Ut.openPosition,...R]);return new wt({keys:F,programId:e,data:L})}static openPositionFromLiquidityInstruction22(e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,h,B,T,k,S,x,K){let I=E([We("tickLowerIndex"),We("tickUpperIndex"),We("tickArrayLowerStartIndex"),We("tickArrayUpperStartIndex"),ne("liquidity"),w("amountMaxA"),w("amountMaxB"),Xe("withMetadata"),q("optionBaseFlag"),Xe("baseFlag")]),C=[...K?[{pubkey:K,isSigner:!1,isWritable:!0}]:[]],M=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,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:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:Go,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...C],F=Buffer.alloc(I.span);I.encode({tickLowerIndex:g,tickUpperIndex:P,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:B,liquidity:T,amountMaxA:k,amountMaxB:S,withMetadata:x==="create",baseFlag:!1,optionBaseFlag:0},F);let R=Buffer.from([...Ut.openPositionWithTokenEx,...F]);return new wt({keys:M,programId:e,data:R})}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:r,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l,nft2022:m}){let d=[],[p,f]=[new z(e.programId),new z(e.id)],y;if(l)y=new z((await l(1))[0]);else{let K=is.generate();d.push(K),y=K.publicKey}let b=J.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=J.getTickArrayStartIndexByTick(r,e.config.tickSpacing),{publicKey:P}=he(p,f,b),{publicKey:h}=he(p,f,g),{publicKey:B}=m?Z(n.wallet,y,Qe):Z(n.wallet,y,Oe),{publicKey:T}=Rn(y),{publicKey:k}=Lt(p,y),{publicKey:S}=dn(p,f,i,r),x=m?this.openPositionFromLiquidityInstruction22(p,n.feePayer,f,n.wallet,y,B,S,P,h,k,n.tokenAccountA,n.tokenAccountB,new z(t.vault.A),new z(t.vault.B),new z(e.mintA.address),new z(e.mintB.address),i,r,b,g,s,a,c,u,_e.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[b,g])?et(p,f).publicKey:void 0):this.openPositionFromLiquidityInstruction(p,n.feePayer,f,n.wallet,y,B,T,S,P,h,k,n.tokenAccountA,n.tokenAccountB,new z(t.vault.A),new z(t.vault.B),new z(e.mintA.address),new z(e.mintB.address),i,r,b,g,s,a,c,u,_e.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[b,g])?et(p,f).publicKey:void 0);return{signers:d,instructions:[x],instructionTypes:[X.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:y,tickArrayLower:P,tickArrayUpper:h,positionNftAccount:B,metadataAccount:T,personalPosition:k,protocolPosition:S}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:r,base:s,baseAmount:a,otherAmountMax:c,withMetadata:u,getEphemeralSigners:l,nft2022:m}){let d=[],[p,f]=[new z(e.programId),new z(e.id)],y;if(l)y=new z((await l(1))[0]);else{let K=is.generate();d.push(K),y=K.publicKey}let b=J.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=J.getTickArrayStartIndexByTick(r,e.config.tickSpacing),{publicKey:P}=he(p,f,b),{publicKey:h}=he(p,f,g),{publicKey:B}=m?Z(n.wallet,y,Qe):Z(n.wallet,y,Oe),{publicKey:T}=Rn(y),{publicKey:k}=Lt(p,y),{publicKey:S}=dn(p,f,i,r),x=m?this.openPositionFromBaseInstruction22(p,n.feePayer,f,n.wallet,y,B,S,P,h,k,n.tokenAccountA,n.tokenAccountB,new z(t.vault.A),new z(t.vault.B),new z(e.mintA.address),new z(e.mintB.address),i,r,b,g,u,s,a,c,_e.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[b,g])?et(p,f).publicKey:void 0):this.openPositionFromBaseInstruction(p,n.feePayer,f,n.wallet,y,B,T,S,P,h,k,n.tokenAccountA,n.tokenAccountB,new z(t.vault.A),new z(t.vault.B),new z(e.mintA.address),new z(e.mintB.address),i,r,b,g,u,s,a,c,_e.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[b,g])?et(p,f).publicKey:void 0);return{address:{nftMint:y,tickArrayLower:P,tickArrayUpper:h,positionNftAccount:B,metadataAccount:T,personalPosition:k,protocolPosition:S},instructions:[x],signers:d,instructionTypes:[X.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static openPositionFromBaseInstruction(e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,h,B,T,k,S,x,K,I){let C=E([We("tickLowerIndex"),We("tickUpperIndex"),We("tickArrayLowerStartIndex"),We("tickArrayUpperStartIndex"),ne("liquidity"),w("amountMaxA"),w("amountMaxB"),Xe("withMetadata"),q("optionBaseFlag"),Xe("baseFlag")]),M=[...I?[{pubkey:I,isSigner:!1,isWritable:!0}]:[]],F=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,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:f,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:Go,isSigner:!1,isWritable:!1},{pubkey:sn,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...M],R=Buffer.alloc(C.span);C.encode({tickLowerIndex:P,tickUpperIndex:h,tickArrayLowerStartIndex:B,tickArrayUpperStartIndex:T,liquidity:new su(0),amountMaxA:S==="MintA"?x:K,amountMaxB:S==="MintA"?K:x,withMetadata:k==="create",baseFlag:S==="MintA",optionBaseFlag:1},R);let L=Buffer.from([...Ut.openPosition,...R]);return new wt({keys:F,programId:e,data:L})}static openPositionFromBaseInstruction22(e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,h,B,T,k,S,x,K){let I=E([We("tickLowerIndex"),We("tickUpperIndex"),We("tickArrayLowerStartIndex"),We("tickArrayUpperStartIndex"),ne("liquidity"),w("amountMaxA"),w("amountMaxB"),Xe("withMetadata"),q("optionBaseFlag"),Xe("baseFlag")]),C=[...K?[{pubkey:K,isSigner:!1,isWritable:!0}]:[]],M=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:n,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:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:Go,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...C],F=Buffer.alloc(I.span);I.encode({tickLowerIndex:g,tickUpperIndex:P,tickArrayLowerStartIndex:h,tickArrayUpperStartIndex:B,liquidity:new su(0),amountMaxA:k==="MintA"?S:x,amountMaxB:k==="MintA"?x:S,withMetadata:T==="create",baseFlag:k==="MintA",optionBaseFlag:1},F);let R=Buffer.from([...Ut.openPositionWithTokenEx,...F]);return new wt({keys:M,programId:e,data:R})}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:r,liquidity:s,amountMaxA:a,amountMaxB:c,withMetadata:u,getEphemeralSigners:l,nft2022:m}){let d,p=[];if(l)d=new z((await l(1))[0]);else{let K=is.generate();p.push(K),d=K.publicKey}let[f,y]=[new z(e.programId),new z(e.id)],b=J.getTickArrayStartIndexByTick(i,e.config.tickSpacing),g=J.getTickArrayStartIndexByTick(r,e.config.tickSpacing),{publicKey:P}=he(f,y,b),{publicKey:h}=he(f,y,g),{publicKey:B}=m?Z(n.wallet,d,Qe):Z(n.wallet,d,Oe),{publicKey:T}=Rn(d),{publicKey:k}=Lt(f,d),{publicKey:S}=dn(f,y,i,r),x=m?this.openPositionFromLiquidityInstruction22(f,n.wallet,y,n.wallet,d,B,S,P,h,k,n.tokenAccountA,n.tokenAccountB,new z(t.vault.A),new z(t.vault.B),new z(t.mintA.address),new z(t.mintB.address),i,r,b,g,s,a,c,u,_e.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[b,g])?et(f,y).publicKey:void 0):this.openPositionFromLiquidityInstruction(f,n.wallet,y,n.wallet,d,B,T,S,P,h,k,n.tokenAccountA,n.tokenAccountB,new z(t.vault.A),new z(t.vault.B),new z(t.mintA.address),new z(t.mintB.address),i,r,b,g,s,a,c,u,_e.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[b,g])?et(f,y).publicKey:void 0);return{address:{nftMint:d,tickArrayLower:P,tickArrayUpper:h,positionNftAccount:B,metadataAccount:T,personalPosition:k,protocolPosition:S},instructions:[x],signers:p,instructionTypes:[X.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstruction(e,t,n,i,r,s){let a=E([]),c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:s?Qe:Oe,isSigner:!1,isWritable:!1}],u=Buffer.alloc(a.span);a.encode({},u);let l=Buffer.from([...Ut.closePosition,...u]);return new wt({keys:c,programId:e,data:l})}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i,nft2022:r}){let s=new z(e.programId),a=r?Z(n.wallet,i.nftMint,Qe).publicKey:Z(n.wallet,i.nftMint,Oe).publicKey,{publicKey:c}=Lt(s,i.nftMint),u=[];return u.push(this.closePositionInstruction(s,n.wallet,i.nftMint,a,c,r)),{address:{positionNftAccount:a,personalPosition:c},signers:[],instructions:u,instructionTypes:[X.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstruction(e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P){let h=E([ne("liquidity"),w("amountMaxA"),w("amountMaxB"),q("optionBaseFlag"),Xe("baseFlag")]),B=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,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:Oe,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...B],k=Buffer.alloc(h.span);h.encode({liquidity:y,amountMaxA:b,amountMaxB:g,optionBaseFlag:0,baseFlag:!1},k);let S=Buffer.from([...Ut.increaseLiquidity,...k]);return new wt({keys:T,programId:e,data:S})}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:r,amountMaxA:s,amountMaxB:a,nft2022:c}){let[u,l]=[new z(e.programId),new z(e.id)],m=J.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=J.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=he(u,l,m),{publicKey:f}=he(u,l,d),{publicKey:y}=c?Z(i.wallet,n.nftMint,Qe):Z(i.wallet,n.nftMint,Oe),{publicKey:b}=Lt(u,n.nftMint),{publicKey:g}=dn(u,l,n.tickLower,n.tickUpper),P=this.increasePositionFromLiquidityInstruction(u,i.wallet,y,b,l,g,p,f,i.tokenAccountA,i.tokenAccountB,new z(t.vault.A),new z(t.vault.B),new z(e.mintA.address),new z(e.mintB.address),r,s,a,_e.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?et(u,l).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:f,positionNftAccount:y,personalPosition:b,protocolPosition:g},signers:[],instructions:[P],instructionTypes:[X.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:r,baseAmount:s,otherAmountMax:a,nft2022:c}){let[u,l]=[new z(e.programId),new z(e.id)],m=J.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),d=J.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:p}=he(u,l,m),{publicKey:f}=he(u,l,d),{publicKey:y}=c?Z(i.wallet,n.nftMint,Qe):Z(i.wallet,n.nftMint,Oe),{publicKey:b}=Lt(u,n.nftMint),{publicKey:g}=dn(u,l,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:f,positionNftAccount:y,personalPosition:b,protocolPosition:g},instructions:[this.increasePositionFromBaseInstruction(u,i.wallet,y,b,l,g,p,f,i.tokenAccountA,i.tokenAccountB,new z(t.vault.A),new z(t.vault.B),new z(e.mintA.address),new z(e.mintB.address),r,s,a,_e.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[m,d])?et(u,l).publicKey:void 0)],signers:[],instructionTypes:[X.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstruction(e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P){let h=E([ne("liquidity"),w("amountMaxA"),w("amountMaxB"),q("optionBaseFlag"),Xe("baseFlag")]),B=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[]],T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,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:Oe,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...B],k=Buffer.alloc(h.span);h.encode({liquidity:new su(0),amountMaxA:y==="MintA"?b:g,amountMaxB:y==="MintA"?g:b,baseFlag:y==="MintA",optionBaseFlag:1},k);let S=Buffer.from([...Ut.increaseLiquidity,...k]);return new wt({keys:T,programId:e,data:S})}static decreaseLiquidityInstruction(e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,h){let B=E([ne("liquidity"),w("amountMinA"),w("amountMinB")]),T=[...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[],...y.map(K=>[{pubkey:K.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:K.rewardMint,isSigner:!1,isWritable:!1}]).flat()],k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,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:Oe,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:xr,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...T],S=Buffer.alloc(B.span);B.encode({liquidity:b,amountMinA:g,amountMinB:P},S);let x=Buffer.from([...Ut.decreaseLiquidity,...S]);return new wt({keys:k,programId:e,data:x})}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:r,amountMinA:s,amountMinB:a,programId:c,nft2022:u}){let[l,m]=[new z(e.programId),new z(e.id)],d=J.getTickArrayStartIndexByTick(n.tickLower,e.config.tickSpacing),p=J.getTickArrayStartIndexByTick(n.tickUpper,e.config.tickSpacing),{publicKey:f}=he(l,m,d),{publicKey:y}=he(l,m,p),{publicKey:b}=u?Z(i.wallet,n.nftMint,Qe):Z(i.wallet,n.nftMint,c),{publicKey:g}=Lt(l,n.nftMint),{publicKey:P}=dn(l,m,n.tickLower,n.tickUpper),h=[];for(let k=0;k<e.rewardDefaultInfos.length;k++)h.push({poolRewardVault:new z(t.rewardInfos[k].vault),ownerRewardVault:i.rewardAccounts[k],rewardMint:new z(e.rewardDefaultInfos[k].mint.address)});let B=[],T=this.decreaseLiquidityInstruction(l,i.wallet,b,g,m,P,f,y,i.tokenAccountA,i.tokenAccountB,new z(t.vault.A),new z(t.vault.B),new z(e.mintA.address),new z(e.mintB.address),h,r,s,a,_e.isOverflowDefaultTickarrayBitmap(e.config.tickSpacing,[d,p])?et(l,m).publicKey:void 0);return B.push(T),{address:{tickArrayLower:f,tickArrayUpper:y,positionNftAccount:b,personalPosition:g,protocolPosition:P},signers:[],instructions:B,instructionTypes:[X.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static swapInstruction(e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g){let P=E([w("amount"),w("otherAmountThreshold"),ne("sqrtPriceLimitX64"),Xe("isBaseInput")]),h=[...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[],...m.map(S=>({pubkey:S,isSigner:!1,isWritable:!0}))],B=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,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:Oe,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:xr,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...h],T=Buffer.alloc(P.span);P.encode({amount:p,otherAmountThreshold:f,sqrtPriceLimitX64:y,isBaseInput:b},T);let k=Buffer.from([...Ut.swap,...T]);return new wt({keys:B,programId:e,data:k})}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,inputMint:r,amountIn:s,amountOutMin:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,m]=[new z(e.programId),new z(e.id)],[d,p]=[new z(t.vault.A),new z(t.vault.B)],[f,y]=[new z(e.mintA.address),new z(e.mintB.address)],b=e.mintA.address===r.toString(),g=[this.swapInstruction(l,i.wallet,m,new z(e.config.id),b?i.tokenAccountA:i.tokenAccountB,b?i.tokenAccountB:i.tokenAccountA,b?d:p,b?p:d,b?f:y,b?y:f,u,n,s,a,c,!0,et(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[X.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,outputMint:r,amountOut:s,amountInMax:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[l,m]=[new z(e.programId),new z(e.id)],[d,p]=[new z(t.vault.A),new z(t.vault.B)],[f,y]=[new z(e.mintA.address),new z(e.mintB.address)],b=e.mintA.address===r.toBase58(),g=[this.swapInstruction(l,i.wallet,m,new z(e.config.id),b?i.tokenAccountB:i.tokenAccountA,b?i.tokenAccountA:i.tokenAccountB,b?p:d,b?d:p,b?y:f,b?f:y,u,n,s,a,c,!1,et(l,m).publicKey)];return{signers:[],instructions:g,instructionTypes:[X.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstruction(e,t,n,i,r,s,a,c,u,l,m,d){let p=E([w("openTime"),w("endTime"),ne("emissionsPerSecondX64")]),f=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1}],y=Buffer.alloc(p.span);p.encode({openTime:ee(l),endTime:ee(m),emissionsPerSecondX64:d},y);let b=Buffer.from([...Ut.initReward,...y]);return new wt({keys:f,programId:e,data:b})}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[r,s]=[new z(e.programId),new z(e.id)],a=Ol(r,s,i.mint).publicKey,c=Do(r).publicKey,u=[this.initRewardInstruction(r,n.wallet,s,c,new z(e.config.id),n.tokenAccount,i.programId,i.mint,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:u,instructionTypes:[X.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstruction(e,t,n,i,r,s,a,c,u,l,m,d){let p=E([q("rewardIndex"),ne("emissionsPerSecondX64"),w("openTime"),w("endTime")]),f=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],y=Buffer.alloc(p.span);p.encode({rewardIndex:u,emissionsPerSecondX64:d,openTime:ee(l),endTime:ee(m)},y);let b=Buffer.from([...Ut.setRewardEmissions,...y]);return new wt({keys:f,programId:e,data:b})}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[r,s]=[new z(e.programId),new z(e.id)],a,c,u;for(let d=0;d<e.rewardDefaultInfos.length;d++)e.rewardDefaultInfos[d].mint.address===i.mint.toString()&&(a=d,c=new z(t.rewardInfos[d].vault),u=new z(t.rewardInfos[d].mint.address));(a===void 0||c===void 0)&&Ul.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Do(r).publicKey,m=[this.setRewardInstruction(r,n.wallet,s,l,new z(e.config.id),n.tokenAccount,c,u,a,i.openTime,i.endTime,i.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:m,instructionTypes:[X.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstruction(e,t,n,i,r,s,a){let c=E([q("rewardIndex")]),u=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:xr,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let m=Buffer.from([...Ut.collectReward,...l]);return new wt({keys:u,programId:e,data:m})}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[r,s]=[new z(e.programId),new z(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===i.toString()&&(a=l,c=new z(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&Ul.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=[this.collectRewardInstruction(r,n.wallet,s,n.tokenAccount,c,i,a)];return{address:{rewardVault:c},signers:[],instructions:u,instructionTypes:[X.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async makeLockPositions({programId:e,authProgramId:t,poolProgramId:n,payer:i,wallet:r,nftMint:s,nft2022:a,getEphemeralSigners:c}){let u=[],l;if(c)l=new z((await c(1))[0]);else{let g=is.generate();u.push(g),l=g.publicKey}let m=a?Z(r,s,Qe).publicKey:Z(r,s,Oe).publicKey,{publicKey:d}=Lt(n,s),p=qi(e,l).publicKey,f=Z(r,l,Oe).publicKey,y=Rn(l).publicKey,b=Me.lockPositionInstructionV2({programId:e,auth:t,payer:i,positionOwner:r,lockOwner:r,positionNftAccount:m,positionId:d,lockPositionId:p,lockNftMint:l,lockNftAccount:f,metadataAccount:y,withMetadata:!0,nft2022:a,positionNftMint:s,authPositionNftAccount:Z(t,s,a?Qe:Oe).publicKey,positionNftProgram:a?Qe:Oe});return{address:{positionId:d,lockPositionId:p,lockNftAccount:f,lockNftMint:l,positionNftAccount:m,metadataAccount:y},instructions:[b],signers:u,instructionTypes:[X.ClmmLockPosition],lookupTableAddress:[]}}static lockPositionInstructionV2({programId:e,auth:t,payer:n,positionOwner:i,lockOwner:r,positionNftAccount:s,positionId:a,positionNftMint:c,authPositionNftAccount:u,positionNftProgram:l,lockPositionId:m,lockNftMint:d,lockNftAccount:p,metadataAccount:f,withMetadata:y}){let b=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:r,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:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!0,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:sn,isSigner:!1,isWritable:!1},{pubkey:Go,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1}],g=E([Xe("withMetadata")]),P=Buffer.alloc(g.span);g.encode({withMetadata:y},P);let h=Buffer.from([...Gl,...P]);return new wt({keys:b,programId:e,data:h})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:i,positionNft:r}){let{publicKey:s}=Z(i,r,Oe),{publicKey:a}=Lt(n,r),c=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:tu(e,a).publicKey,isSigner:!1,isWritable:!0},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:Nn.programId,isSigner:!1,isWritable:!1}];return new wt({keys:c,programId:e,data:Buffer.from(Gl)})}static harvestLockPositionInstruction(e){let[t,n]=[new z(e.poolKeys.programId),new z(e.poolKeys.id)],i=J.getTickArrayStartIndexByTick(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),r=J.getTickArrayStartIndexByTick(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:s}=he(t,n,i),{publicKey:a}=he(t,n,r),{publicKey:c}=Z(e.owner,e.ownerPosition.nftMint,Oe),{publicKey:u}=Lt(t,e.ownerPosition.nftMint),{publicKey:l}=dn(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),m=[];for(let f=0;f<e.poolKeys.rewardInfos.length;f++)m.push({poolRewardVault:new z(e.poolKeys.rewardInfos[f].vault),ownerRewardVault:e.ownerRewardAccounts[f],rewardMint:new z(e.poolKeys.rewardInfos[f].mint.address)});let d=[...m.map(f=>[{pubkey:f.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:f.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:f.rewardMint,isSigner:!1,isWritable:!1}]).flat()],p=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:tu(e.programId,u).publicKey,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e.owner,isSigner:!0,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:new z(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new z(e.poolKeys.vault.B),isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:e.userVaultA,isSigner:!1,isWritable:!0},{pubkey:e.userVaultB,isSigner:!1,isWritable:!0},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:gn,isSigner:!1,isWritable:!1},{pubkey:new z(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new z(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...d];return new wt({keys:p,programId:e.programId,data:Buffer.from(Xl)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:i,lockOwner:r,lockNftMint:s,lockNftAccount:a,positionNftAccount:c,positionId:u,poolId:l,protocolPosition:m,vaultA:d,vaultB:p,tickArrayLower:f,tickArrayUpper:y,userVaultA:b,userVaultB:g,mintA:P,mintB:h,rewardAccounts:B,exTickArrayBitmap:T}){let k=[...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[],...B.map(x=>[{pubkey:x.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:x.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:x.rewardMint,isSigner:!1,isWritable:!1}]).flat()],S=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!0,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{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:f,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:gn,isSigner:!1,isWritable:!1},{pubkey:P,isSigner:!1,isWritable:!1},{pubkey:h,isSigner:!1,isWritable:!1},...k];return new wt({keys:S,programId:e,data:Buffer.from(Xl)})}};var zl=E([Pt("mintAuthorityOption"),O("mintAuthority"),w("supply"),q("decimals"),q("isInitialized"),Pt("freezeAuthorityOption"),O("freezeAuthority")]);import{PublicKey as Ly}from"@solana/web3.js";import{MintLayout as Ql,TOKEN_PROGRAM_ID as Ny}from"@solana/spl-token";var ix=async({connection:o,mint:e})=>{let t=await o.getAccountInfo(new Ly(e));return!t||t.data.length!==Ql.span?void 0:Ql.decode(t.data)},ox=({mint:o,decimals:e,programId:t=Ny,logoURI:n="",priority:i=3})=>{let r=o.toBase58().substring(0,6);return{address:o.toBase58(),decimals:e,symbol:r,logoURI:n,extensions:{},chainId:101,programId:t.toString(),name:r,tags:[],priority:i}},os=o=>new Le({mint:o.address,decimals:o.decimals,symbol:o.symbol,name:o.name}),Xo=i=>{var r=i,{amount:o,isRaw:e,name:t}=r,n=ze(r,["amount","isRaw","name"]);return new Ke(new Le({mint:kt(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),o,e,t)};function rx(o){return o.address===bn.address?dt:o}function sx(o){return o.address===dt.address?bn:o}var Bt=i=>{var r=i,{address:o,programId:e,decimals:t}=r,n=ze(r,["address","programId","decimals"]);return v({chainId:101,address:kt(o).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)},Hn=o=>o?U(v({},o),{transferFeeConfigAuthority:o.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:o.withdrawWithheldAuthority.toBase58(),withheldAmount:o.withheldAmount.toString(),olderTransferFee:U(v({},o.olderTransferFee),{epoch:o.olderTransferFee.epoch.toString(),maximumFee:o.olderTransferFee.maximumFee.toString()}),newerTransferFee:U(v({},o.newerTransferFee),{epoch:o.newerTransferFee.epoch.toString(),maximumFee:o.newerTransferFee.maximumFee.toString()})}):void 0;import Yl from"bn.js";var au=new Yl(25),rs=new Yl(1e4),Oy={4:3,5:3};import{PublicKey as ve,SystemProgram as Zl,SYSVAR_RENT_PUBKEY as vy,TransactionInstruction as On}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Fy,TOKEN_PROGRAM_ID as Gi}from"@solana/spl-token";var uu=E([q("instruction"),w("amountIn"),w("minAmountOut")]),cu=E([q("instruction"),w("maxAmountIn"),w("amountOut")]),gx=E([q("instruction"),q("nonce")]),lu=E([q("instruction"),q("nonce"),w("startTime")]),yi=E([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"),ne("swapBaseInAmount"),ne("swapQuoteOutAmount"),w("swapBase2QuoteFee"),ne("swapQuoteInAmount"),ne("swapBaseOutAmount"),w("swapQuote2BaseFee"),O("baseVault"),O("quoteVault"),O("baseMint"),O("quoteMint"),O("lpMint"),O("openOrders"),O("marketId"),O("marketProgramId"),O("targetOrders"),O("withdrawQueue"),O("lpVault"),O("owner"),w("lpReserve"),H(w(),3,"padding")]),My=E([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"),ne("swapBaseInAmount"),ne("swapQuoteOutAmount"),ne("swapQuoteInAmount"),ne("swapBaseOutAmount"),w("swapQuote2BaseFee"),w("swapBase2QuoteFee"),O("baseVault"),O("quoteVault"),O("baseMint"),O("quoteMint"),O("lpMint"),O("modelDataAccount"),O("openOrders"),O("marketId"),O("marketProgramId"),O("targetOrders"),O("owner"),H(w(),64,"padding")]),mu=E([q("instruction"),w("baseAmountIn"),w("quoteAmountIn"),w("fixedSide"),w("otherAmountMin")]),du=E([q("instruction"),w("lpAmount"),w("baseAmountMin"),w("quoteAmountMin")]),Ax={4:yi,5:My},Hl=E([w("fee")]);var jl=Pe("Raydium_liquidity_instruction");function $l(o){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:i,quoteAmountIn:r,fixedSide:s,otherAmountMin:a,modelDataPubKey:c=Un}=o,u=Buffer.alloc(mu.span);mu.encode({instruction:3,baseAmountIn:ee(i),quoteAmountIn:ee(r),otherAmountMin:ee(a),fixedSide:s==="base"?ot:hc},u);let l=[A({pubkey:Gi,isWritable:!1}),A({pubkey:new ve(e.id)}),A({pubkey:new ve(t.authority),isWritable:!1}),A({pubkey:new ve(t.openOrders),isWritable:!1}),A({pubkey:new ve(t.targetOrders)}),A({pubkey:new ve(e.lpMint.address)}),A({pubkey:new ve(t.vault.A)}),A({pubkey:new ve(t.vault.B)})];return e.pooltype.includes("StablePool")&&l.push(A({pubkey:c})),l.push(A({pubkey:new ve(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 ve(t.marketEventQueue),isWritable:!1})),new On({programId:new ve(e.programId),keys:l,data:u})}function pu(o){let{poolInfo:e,poolKeys:t,userKeys:n,lpAmount:i,baseAmountMin:r,quoteAmountMin:s,modelDataPubKey:a=Un}=o,c=Ve(t),u=4;if(e.pooltype.includes("StablePool")&&(u=5),u===4||u===5){let l=Buffer.alloc(du.span);du.encode({instruction:4,lpAmount:ee(i),baseAmountMin:ee(r),quoteAmountMin:ee(s)},l);let m=[A({pubkey:Gi,isWritable:!1}),A({pubkey:c.id}),A({pubkey:c.authority,isWritable:!1}),A({pubkey:c.openOrders}),A({pubkey:c.targetOrders}),A({pubkey:c.mintLp.address}),A({pubkey:c.vault.A}),A({pubkey:c.vault.B})];return u===5?m.push(A({pubkey:a})):(m.push(A({pubkey:c.id})),m.push(A({pubkey:c.id}))),m.push(A({pubkey:c.marketProgramId,isWritable:!1}),A({pubkey:c.marketId}),A({pubkey:c.marketBaseVault}),A({pubkey:c.marketQuoteVault}),A({pubkey:c.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:c.marketEventQueue}),A({pubkey:c.marketBids}),A({pubkey:c.marketAsks})),new On({programId:c.programId,keys:m,data:l})}return new On({programId:c.programId,keys:[]})}function fu({programId:o,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:i,coinMint:r,pcMint:s,coinVault:a,pcVault:c,withdrawQueue:u,ammTargetOrders:l,poolTempLp:m,marketProgramId:d,marketId:p,userWallet:f,userCoinVault:y,userPcVault:b,userLpVault:g,nonce:P,openTime:h,coinAmount:B,pcAmount:T,ammConfigId:k,feeDestinationId:S}){let x=E([q("instruction"),q("nonce"),w("openTime"),w("pcAmount"),w("coinAmount")]),K=[{pubkey:Gi,isSigner:!1,isWritable:!1},{pubkey:Fy,isSigner:!1,isWritable:!1},{pubkey:Zl.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,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:k,isSigner:!1,isWritable:!1},{pubkey:S,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!0,isWritable:!0},{pubkey:y,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:P,openTime:h,coinAmount:B,pcAmount:T},I),{instruction:new On({keys:K,programId:o,data:I}),instructionType:X.AmmV4CreatePool}}function Cx(o){let e=E([q("instruction"),q("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[A({pubkey:new ve(o.id),isWritable:!1}),A({pubkey:new ve(o.authority),isWritable:!1}),A({pubkey:new ve(o.openOrders),isWritable:!1}),A({pubkey:new ve(o.vault.A),isWritable:!1}),A({pubkey:new ve(o.vault.B),isWritable:!1}),A({pubkey:new ve(o.mintLp.address),isWritable:!1}),A({pubkey:new ve(o.marketId),isWritable:!1}),A({pubkey:new ve(o.marketEventQueue),isWritable:!1})];return new On({programId:new ve(o.programId),keys:n,data:t})}function Ey({poolKeys:o,userKeys:e,amountIn:t,minAmountOut:n,modelDataPubKey:i=Un},r){let s=Ve(o),a=Buffer.alloc(uu.span);uu.encode({instruction:9,amountIn:ee(t),minAmountOut:ee(n)},a);let c=[A({pubkey:Gi,isWritable:!1}),A({pubkey:s.id}),A({pubkey:s.authority,isWritable:!1}),A({pubkey:s.openOrders})];return r===4&&c.push(A({pubkey:s.targetOrders})),c.push(A({pubkey:s.vault.A}),A({pubkey:s.vault.B})),r===5&&c.push(A({pubkey:i})),c.push(A({pubkey:s.marketProgramId,isWritable:!1}),A({pubkey:s.marketId}),A({pubkey:s.marketBids}),A({pubkey:s.marketAsks}),A({pubkey:s.marketEventQueue}),A({pubkey:s.marketBaseVault}),A({pubkey:s.marketQuoteVault}),A({pubkey:s.marketAuthority,isWritable:!1}),A({pubkey:e.tokenAccountIn}),A({pubkey:e.tokenAccountOut}),A({pubkey:e.owner,isWritable:!1,isSigner:!0})),new On({programId:s.programId,keys:c,data:a})}function _y({poolKeys:o,userKeys:e,maxAmountIn:t,amountOut:n,modelDataPubKey:i=Un},r){let s=Ve(o),a=Buffer.alloc(cu.span);cu.encode({instruction:11,maxAmountIn:ee(t),amountOut:ee(n)},a);let c=[A({pubkey:Gi,isWritable:!1}),A({pubkey:s.id}),A({pubkey:s.authority,isWritable:!1}),A({pubkey:s.openOrders}),A({pubkey:s.targetOrders}),A({pubkey:s.vault.A}),A({pubkey:s.vault.B})];return r===5&&c.push(A({pubkey:i})),c.push(A({pubkey:s.marketProgramId,isWritable:!1}),A({pubkey:s.marketId}),A({pubkey:s.marketBids}),A({pubkey:s.marketAsks}),A({pubkey:s.marketEventQueue}),A({pubkey:s.marketBaseVault}),A({pubkey:s.marketQuoteVault}),A({pubkey:s.marketAuthority,isWritable:!1}),A({pubkey:e.tokenAccountIn}),A({pubkey:e.tokenAccountOut}),A({pubkey:e.owner,isWritable:!1,isSigner:!0})),new On({programId:s.programId,keys:c,data:a})}function ss(o){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:r,fixedSide:s}=o;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(s==="in")return Ey(U(v({},a),{amountIn:i,minAmountOut:r}),t);if(s==="out")return _y(U(v({},a),{maxAmountIn:i,amountOut:r}),t);jl.logWithError("invalid params","params",o)}throw jl.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}function Rx({poolKeys:o,userKeys:e,startTime:t}){let n=Buffer.alloc(lu.span);lu.encode({instruction:0,nonce:5,startTime:ee(t)},n);let i=Ve(o),r=[A({pubkey:Gi,isWritable:!1}),A({pubkey:Zl.programId,isWritable:!1}),A({pubkey:vy,isWritable:!1}),A({pubkey:i.id}),A({pubkey:i.authority,isWritable:!1}),A({pubkey:i.openOrders}),A({pubkey:i.mintLp.address}),A({pubkey:i.mintA.address,isWritable:!1}),A({pubkey:i.mintB.address,isWritable:!1}),A({pubkey:i.vault.A,isWritable:!1}),A({pubkey:i.vault.B,isWritable:!1}),A({pubkey:i.id}),A({pubkey:i.targetOrders}),A({pubkey:e.lpTokenAccount}),A({pubkey:i.id,isWritable:!1}),A({pubkey:i.marketProgramId,isWritable:!1}),A({pubkey:i.marketId,isWritable:!1}),A({pubkey:e.payer,isSigner:!0})];return new On({programId:i.programId,keys:r,data:n})}function Jl({poolKeys:o}){let e=E([q("instruction"),q("simulateType")]),t=Buffer.alloc(e.span);e.encode({instruction:12,simulateType:0},t);let n=[A({pubkey:new ve(o.id),isWritable:!1}),A({pubkey:new ve(o.authority),isWritable:!1}),A({pubkey:new ve(o.openOrders),isWritable:!1}),A({pubkey:new ve(o.vault.A),isWritable:!1}),A({pubkey:new ve(o.vault.B),isWritable:!1}),A({pubkey:new ve(o.mintLp.address),isWritable:!1}),A({pubkey:new ve(o.marketId),isWritable:!1}),A({pubkey:new ve(o.marketEventQueue),isWritable:!1})];return{instruction:new On({programId:new ve(o.programId),keys:n,data:t})}}var gi=5e4,Vy=E([w("x"),w("y"),w("price")]),Dy=E([w("accountType"),w("status"),w("multiplier"),w("validDataCount"),H(Vy,gi,"DataElement")]);function Wy(o,e){return[0,gi-2]}function qy(o){return[0,gi-2]}function Uy(o){return[0,gi-2]}function Gy(o,e,t){let[n,i]=Wy(e,t),r=n,s=i,a=0,c=e*o.multiplier/t;for(;r<=s;){if(a=Math.floor((s+r)/2),a===0||a>=gi-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];r=a+1}}return[a,a,!1]}function yu(o,e,t){let[n,i,r]=Gy(o,e,t);if(!r)return 0;if(n===i){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[i].x,u=o.DataElement[i].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 bi(o,e,t){return e*o.multiplier/t}function em(o,e,t){return e*t/o.multiplier}function Xy(o,e){let[t,n]=qy(e),i=t,r=n,s=0,a=e;for(;i<r;){if(s=Math.floor((r+i)/2),s<=0||s>gi-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)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 zy(o,e){let[t,n]=Uy(e),i=t,r=n,s=0,a=e;for(;i<=r;){if(s=Math.floor((r+i)/2),s<=0||s>=gi-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)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 tm(o,e,t,n){let i=n?e+t:e-t,[r,s,a]=Xy(o,i);if(!a)return[0,0,!1,a];if(r===s)return[o.DataElement[s].price,o.DataElement[s].y,!1,a];{let c=o.DataElement[r].x,u=o.DataElement[s].x,l=o.DataElement[r].price,m=o.DataElement[s].price,d=o.DataElement[r].y,p=o.DataElement[s].y;if(e>=c&&e<=u)return n?[m,p,!0,a]:[l,d,!0,a];{let f,y;return n?(f=l+(m-l)*(e-c)/(u-c),y=d-(i-c)*o.multiplier/m):(f=l+(m-l)*(e-c)/(u-c),y=p+(u-i)*o.multiplier/l),[f,y,!1,a]}}}function Qy(o,e,t,n){let i=n?e-t:e+t,[r,s,a]=zy(o,i);if(!a)return[0,0,!1,a];if(r===s)return[o.DataElement[s].price,o.DataElement[s].x,!1,a];{let c=o.DataElement[r].x,u=o.DataElement[s].x,l=o.DataElement[r].price,m=o.DataElement[s].price,d=o.DataElement[r].y,p=o.DataElement[s].y;if(e>=p&&e<=d)return n?[m,u,!0,a]:[l,c,!0,a];{let f,y;return n?(f=l+(m-l)*(d-e)/(d-p),y=c+m*(d-i)/o.multiplier):(f=l+(m-l)*(d-e)/(d-p),y=u-l*(i-p)/o.multiplier),[f,y,!1,a]}}}function Yy(o,e){let t=tm(o,e,0,!1);return t[3]?t[0]:0}function nm(o,e,t,n){let i=yu(o,e,t),r=bi(o,e,i),s=bi(o,t,i),a=bi(o,n,i),c=!0,[u,l,m,d]=tm(o,r,a,c);if(!d)return 0;if(m)return n*o.multiplier/u;{let p=s-l;return em(o,p,i)}}function im(o,e,t,n){let i=yu(o,e,t),r=bi(o,e,i),s=bi(o,t,i),a=bi(o,n,i),c=!1,[u,l,m,d]=Qy(o,s,a,c);if(!d)return 0;if(m)return n*u/o.multiplier;{let p=r-l;return em(o,p,i)}}function Hy(o){let e=Dy.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 om(o,e,t,n){let i=Yy(o,bi(o,e,yu(o,e,t)))/o.multiplier;return n?i:1/i}var Xi=class{constructor({connection:e,modelDataPubKey:t=Un}){this._layoutData={accountType:0,status:0,multiplier:0,validDataCount:0,DataElement:[]};this.connection=e,this.modelDataPubKey=t}get stableModelData(){return this._layoutData}async initStableModelLayout(){if(this._layoutData.validDataCount===0&&this.connection){let e=await this.connection.getAccountInfo(this.modelDataPubKey);e&&(this._layoutData=Hy(e==null?void 0:e.data))}}};import{PublicKey as Qo}from"@solana/web3.js";import zo from"bn.js";import{TOKEN_PROGRAM_ID as $y}from"@solana/spl-token";import{PublicKey as jy}from"@solana/web3.js";var Zy=Pe("Raydium_liquidity_serum");function rm({programId:o,marketId:e}){let t=[e.toBuffer()],n=0,i;for(;n<100;){try{let r=t.concat(Buffer.from([n]),Buffer.alloc(7));i=jy.createProgramAddressSync(r,o)}catch(r){if(r instanceof TypeError)throw r;n++;continue}return{publicKey:i,nonce:n}}throw Zy.logWithError("unable to find a viable program address nonce","params",{programId:o,marketId:e}),new Error("unable to find a viable program address nonce")}function as({programId:o}){let{publicKey:e}=oe([Buffer.from("amm_config_account_seed","utf-8")],o);return e}function Ai({name:o,programId:e,marketId:t}){let{publicKey:n}=oe([e.toBuffer(),t.toBuffer(),Buffer.from(o,"utf-8")],e);return n}function Jy({programId:o,marketId:e}){let{publicKey:t}=oe([o.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],o);return t}function Au({programId:o}){return oe([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],o)}function Pu({version:o,marketVersion:e,marketId:t,baseMint:n,quoteMint:i,baseDecimals:r,quoteDecimals:s,programId:a,marketProgramId:c}){let u=Ai({name:"amm_associated_seed",programId:a,marketId:t}),l=Ai({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:d}=Au({programId:a}),p=Ai({name:"coin_vault_associated_seed",programId:a,marketId:t}),f=Ai({name:"pc_vault_associated_seed",programId:a,marketId:t}),y=Ai({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),b=Jy({programId:a,marketId:t}),g=Ai({name:"target_associated_seed",programId:a,marketId:t}),P=Ai({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:h}=rm({programId:c,marketId:t});return{id:u,baseMint:n,quoteMint:i,lpMint:l,baseDecimals:r,quoteDecimals:s,lpDecimals:r,version:o,programId:a,authority:m,nonce:d,baseVault:p,quoteVault:f,lpVault:y,openOrders:b,targetOrders:g,withdrawQueue:P,marketVersion:e,marketProgramId:c,marketId:t,marketAuthority:h,lookupTableAccount:Qo.default,configId:as({programId:a})}}var bu;async function iS({connection:o,poolKeysList:e,config:t,modelDataPubKey:n}){return e.find(r=>r.modelDataAccount)&&(bu||(bu=new Xi({connection:o,modelDataPubKey:n}),await bu.initStableModelLayout())),await Promise.all(e.map(async r=>{if(r.modelDataAccount){let s=Jl({poolKeys:r});return(await Nc(o,[s.instruction],"GetPoolData")).map(u=>{let l=Oc(u,"GetPoolData"),m=new zo(Bn(l,"status")),d=Number(Bn(l,"coin_decimals")),p=Number(Bn(l,"pc_decimals")),f=Number(Bn(l,"lp_decimals")),y=new zo(Bn(l,"pool_coin_amount")),b=new zo(Bn(l,"pool_pc_amount")),g=new zo(Bn(l,"pool_lp_supply")),P="0";try{P=Bn(l,"pool_open_time")}catch{}return{status:m,baseDecimals:d,quoteDecimals:p,lpDecimals:f,baseReserve:y,quoteReserve:b,lpSupply:g,startTime:new zo(P)}})[0]}else{let[s,a,c,u]=await o.getMultipleAccountsInfo([new Qo(r.id),new Qo(r.vault.A),new Qo(r.vault.B),new Qo(r.mintLp.address)]);if(s===null)throw Error("fetch pool error");if(a===null)throw Error("fetch vaultAccA error");if(c===null)throw Error("fetch vaultAccB error");if(u===null)throw Error("fetch mintAccLp error");let l=yi.decode(s.data),m=mn.decode(a.data),d=mn.decode(c.data),p=zl.decode(u.data);return{status:l.status,baseDecimals:l.baseDecimal.toNumber(),quoteDecimals:l.quoteDecimal.toNumber(),lpDecimals:p.decimals,baseReserve:m.amount.sub(l.baseNeedTakePnl),quoteReserve:d.amount.sub(l.quoteNeedTakePnl),lpSupply:l.lpReserve,startTime:l.poolOpenTime}}}))}var gu={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},us=o=>{let e={},t=$y.toBase58();return Object.keys(o).map(n=>{let i=o[n],[r,s]=[i.baseMint.toBase58(),i.quoteMint.toBase58()];e[n]={id:n,version:4,status:i.status.toNumber(),programId:i.programId.toBase58(),mintA:Bt({address:r,programId:t,decimals:i.baseDecimal.toNumber()}),mintB:Bt({address:s,programId:t,decimals:i.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:i.poolPrice.toNumber(),mintAmountA:new N(i.mintAAmount.toString()).div(10**i.baseDecimal.toNumber()).toNumber(),mintAmountB:new N(i.mintBAmount.toString()).div(10**i.quoteDecimal.toNumber()).toNumber(),baseReserve:i.baseReserve,quoteReserve:i.quoteReserve,feeRate:new N(i.tradeFeeNumerator.toString()).div(i.tradeFeeDenominator.toString()).toNumber(),openTime:i.poolOpenTime.toString(),tvl:0,day:gu,week:gu,month:gu,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:i.marketId.toBase58(),configId:as({programId:i.programId}).toBase58(),lpPrice:0,lpAmount:new N(i.lpReserve.toString()).div(10**Math.min(i.baseDecimal.toNumber(),i.quoteDecimal.toNumber())).toNumber(),lpMint:Bt({address:i.lpMint.toBase58(),programId:t,decimals:Math.min(i.baseDecimal.toNumber(),i.quoteDecimal.toNumber())}),burnPercent:0}}),e};import Ye from"bn.js";import{PublicKey as Yo}from"@solana/web3.js";import Ho from"bn.js";import{TOKEN_PROGRAM_ID as cm}from"@solana/spl-token";import{SystemProgram as Pi,SYSVAR_RENT_PUBKEY as tb,Transaction as sm,TransactionInstruction as nb}from"@solana/web3.js";import{createInitializeAccountInstruction as am,TOKEN_PROGRAM_ID as um}from"@solana/spl-token";function eb(o="accountFlags"){let e=new Yr(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 wu=E([Re(5),eb("accountFlags"),O("ownAddress"),w("vaultSignerNonce"),O("baseMint"),O("quoteMint"),O("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),O("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),O("requestQueue"),O("eventQueue"),O("bids"),O("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),Re(7)]);function ib({programId:o,marketInfo:e}){let t=E([q("version"),Pt("instruction"),w("baseLotSize"),w("quoteLotSize"),Dt("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:tb,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),i=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},i),new nb({keys:n,programId:o,data:i})}async function cs({connection:o,wallet:e,marketInfo:t}){var s,a,c,u,l,m,d,p;let n=new sm,i=await o.getMinimumBalanceForRentExemption(165);n.add(Pi.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:i,space:165,programId:um}),Pi.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:i,space:165,programId:um}),am(t.baseVault.publicKey,t.baseMint,t.vaultOwner),am(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner),Pi.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await o.getMinimumBalanceForRentExemption(wu.span),space:wu.span,programId:t.programId}));let r=new sm;return r.add(Pi.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:t.lowestFeeMarket?6208320:await o.getMinimumBalanceForRentExemption((s=t.requestQueueSpace)!=null?s:5120+12),space:t.lowestFeeMarket?764:(a=t.requestQueueSpace)!=null?a:5120+12,programId:t.programId}),Pi.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:t.lowestFeeMarket?79594560:await o.getMinimumBalanceForRentExemption((c=t.eventQueueSpace)!=null?c:262144+12),space:t.lowestFeeMarket?11308:(u=t.eventQueueSpace)!=null?u:262144+12,programId:t.programId}),Pi.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:t.lowestFeeMarket?101977920:await o.getMinimumBalanceForRentExemption((l=t.orderbookQueueSpace)!=null?l:65536+12),space:t.lowestFeeMarket?14524:(m=t.orderbookQueueSpace)!=null?m:65536+12,programId:t.programId}),Pi.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:t.lowestFeeMarket?101977920:await o.getMinimumBalanceForRentExemption((d=t.orderbookQueueSpace)!=null?d:65536+12),space:t.lowestFeeMarket?14524:(p=t.orderbookQueueSpace)!=null?p:65536+12,programId:t.programId}),ib({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:[X.CreateAccount,X.CreateAccount,X.InitAccount,X.InitAccount]},{transaction:r,signer:[],instructionTypes:[X.CreateAccount,X.CreateAccount,X.CreateAccount,X.CreateAccount,X.CreateAccount,X.InitMarket]}]}var zi=class extends De{async create({baseInfo:e,quoteInfo:t,lotSize:n,tickSize:i,dexProgramId:r,requestQueueSpace:s,eventQueueSpace:a,orderbookQueueSpace:c,lowestFeeMarket:u,assignSeed:l,txVersion:m,computeBudgetConfig:d,txTipConfig:p,feePayer:f}){let y=this.scope.ownerPubKey,b=l?`${e.mint.toBase58().slice(0,10)}-${t.mint.toBase58().slice(0,10)}-${l}`:void 0,g=Je({fromPublicKey:y,programId:r,assignSeed:b&&`${b}-market`}),P=Je({fromPublicKey:y,programId:r,assignSeed:b&&`${b}-request`}),h=Je({fromPublicKey:y,programId:r,assignSeed:b&&`${b}-event`}),B=Je({fromPublicKey:y,programId:r,assignSeed:b&&`${b}-bids`}),T=Je({fromPublicKey:y,programId:r,assignSeed:b&&`${b}-asks`}),k=Je({fromPublicKey:y,programId:cm,assignSeed:b&&`${b}-baseVault`}),S=Je({fromPublicKey:y,programId:cm,assignSeed:b&&`${b}-quoteVault`}),x=0,K=new Ho(100);function I(){let Y=new Ho(0);for(;;)try{return{vaultOwner:Yo.createProgramAddressSync([g.publicKey.toBuffer(),Y.toArrayLike(Buffer,"le",8)],r),vaultSignerNonce:Y}}catch{if(Y.iaddn(1),Y.gt(new Ho(25555)))throw Error("find vault owner error")}}let{vaultOwner:C,vaultSignerNonce:M}=I(),F=new Ho(Math.round(10**e.decimals*n)),R=new Ho(Math.round(n*10**t.decimals*i));if(F.eq(ot))throw Error("lot size is too small");if(R.eq(ot))throw Error("tick size or lot size is too small");let L=await cs({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:r,id:g,baseMint:e.mint,quoteMint:t.mint,baseVault:k,quoteVault:S,vaultOwner:C,requestQueue:P,eventQueue:h,bids:B,asks:T,feeRateBps:x,quoteDustThreshold:K,vaultSignerNonce:M,baseLotSize:F,quoteLotSize:R,requestQueueSpace:s,eventQueueSpace:a,orderbookQueueSpace:c,lowestFeeMarket:u}}),V=this.createTxBuilder(f);V.addInstruction({instructions:L[0].transaction.instructions,signers:L[0].signer});for await(let Y of L.slice(1,L.length))V.addInstruction({instructions:Y.transaction.instructions,signers:Y.signer,instructionTypes:Y.instructionTypes});return m===0?V.sizeCheckBuildV0({computeBudgetConfig:d,address:{marketId:g.publicKey,requestQueue:P.publicKey,eventQueue:h.publicKey,bids:B.publicKey,asks:T.publicKey,baseVault:k.publicKey,quoteVault:S.publicKey,baseMint:new Yo(e.mint),quoteMint:new Yo(t.mint)}}):V.sizeCheckBuild({computeBudgetConfig:d,address:{marketId:g.publicKey,requestQueue:P.publicKey,eventQueue:h.publicKey,bids:B.publicKey,asks:T.publicKey,baseVault:k.publicKey,quoteVault:S.publicKey,baseMint:new Yo(e.mint),quoteMint:new Yo(t.mint)}})}};var jo=class extends De{constructor(t){super(t);this.stableLayout=new Xi({connection:this.scope.connection,modelDataPubKey:this.scope.cluster==="mainnet"?void 0:xn.MODEL_DATA_PUBKEY})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:i,baseIn:r}){let s=new Ye(new N(n).mul(10**t[r?"mintA":"mintB"].decimals).toFixed(0)),a=os(t[r?"mintB":"mintA"]),[c,u]=[new Ye(new N(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new Ye(new N(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new Ye(new N(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,N.ROUND_DOWN));this.logDebug("baseReserve:",c.toString(),"quoteReserve:",u.toString()),this.logDebug("tokenIn:",r?t.mintA.symbol:t.mintB.symbol,"amountIn:",s.toString(),"anotherToken:",r?t.mintB.symbol:t.mintA.symbol,"slippage:",`${i.toSignificant()}%`,"baseReserve",c.toString(),"quoteReserve",u.toString());let m=r?"base":"quote";this.logDebug("input side:",m);let d=ot;s.isZero()||(d=m==="base"?Cr(s.mul(u),c):Cr(s.mul(c),u)),this.logDebug("amountRaw:",d.toString(),"lpAmount:",l.toString());let p=Cr(s.mul(l),m==="base"?c:u);this.logDebug("liquidity:",p.toString());let f=new Ze(new Ye(1)).add(i),y=new Ze(new Ye(1)).sub(i),b=f.mul(d).quotient,g=y.mul(d).quotient,P=new Ke(a,d),h=new Ke(a,b),B=new Ke(a,g);return this.logDebug("anotherAmount:",P.toFixed(),"maxAnotherAmount:",h.toFixed()),{anotherAmount:P,maxAnotherAmount:h,minAnotherAmount:B,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,poolKeys:i,amountInA:r,amountInB:s,otherAmountMin:a,fixedSide:c,config:u,txVersion:l,computeBudgetConfig:m,txTipConfig:d,feePayer:p}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",r,"amountInB:",s),(r.isZero()||s.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:r.toFixed(),amountInB:s.toFixed()});let{account:f}=this.scope,{bypassAssociatedCheck:y,checkCreateATAOwner:b}=v({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},u),[g,P]=[r.token,s.token],h=await f.getCreatedTokenAccount({mint:g.mint,associatedOnly:!1}),B=await f.getCreatedTokenAccount({mint:P.mint,associatedOnly:!1});!h&&!B&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",f.tokenAccounts);let T=await f.getCreatedTokenAccount({mint:new rt(n.lpMint.address)}),k=[g,P],S=[h,B],x=[r.raw,s.raw],K=r.token.mint.toBase58()===n.mintA.address?"base":"quote",I="base";["quote","base"].includes(K)||this.logAndCreateError("invalid fixedSide","fixedSide",c),K==="quote"?(k.reverse(),S.reverse(),x.reverse(),I=c==="a"?"quote":"base"):K==="base"&&(I=c==="a"?"base":"quote");let[C,M]=k,[F,R]=S,[L,V]=x,Y=i!=null?i:await this.getAmmPoolKeys(n.id),te=this.createTxBuilder(p),re=await f.handleTokenAccount({side:"in",amount:L,mint:C.mint,tokenAccount:F,bypassAssociatedCheck:y,checkCreateATAOwner:b}),{tokenAccount:le}=re,Ie=ze(re,["tokenAccount"]);te.addInstruction(Ie);let Ue=await f.handleTokenAccount({side:"in",amount:V,mint:M.mint,tokenAccount:R,bypassAssociatedCheck:y,checkCreateATAOwner:b}),{tokenAccount:pe}=Ue,Ae=ze(Ue,["tokenAccount"]);te.addInstruction(Ae);let Se=await f.handleTokenAccount({side:"out",amount:0,mint:new rt(n.lpMint.address),tokenAccount:T,bypassAssociatedCheck:y,checkCreateATAOwner:b}),{tokenAccount:we}=Se,be=ze(Se,["tokenAccount"]);return te.addInstruction(be),te.addInstruction({instructions:[$l({poolInfo:n,poolKeys:Y,userKeys:{baseTokenAccount:le,quoteTokenAccount:pe,lpTokenAccount:we,owner:this.scope.ownerPubKey},baseAmountIn:L,quoteAmountIn:V,otherAmountMin:a.raw,fixedSide:I})],instructionTypes:[n.pooltype.includes("StablePool")?X.AmmV5AddLiquidity:X.AmmV4AddLiquidity],lookupTableAddress:Y.lookupTableAccount?[Y.lookupTableAccount]:[]}),te.addCustomComputeBudget(m),te.addTipInstruction(d),l===0?await te.buildV0():te.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,poolKeys:i,lpAmount:r,baseAmountMin:s,quoteAmountMin:a,config:c,txVersion:u,computeBudgetConfig:l,txTipConfig:m,feePayer:d}=t,p=i!=null?i:await this.getAmmPoolKeys(n.id),[f,y,b]=[new rt(n.mintA.address),new rt(n.mintB.address),new rt(n.lpMint.address)];this.logDebug("lpAmount:",r),this.logDebug("baseAmountMin:",s),this.logDebug("quoteAmountMin:",a),r.isZero()&&this.logAndCreateError("amount must greater than zero","lpAmount",r.toString());let{account:g}=this.scope,P=await g.getCreatedTokenAccount({mint:b,associatedOnly:!1});P||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",g.tokenAccounts);let h=await g.getCreatedTokenAccount({mint:f}),B=await g.getCreatedTokenAccount({mint:y}),T=this.createTxBuilder(d),{bypassAssociatedCheck:k,checkCreateATAOwner:S}=v({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},c),M=await g.handleTokenAccount({side:"out",amount:0,mint:f,tokenAccount:h,bypassAssociatedCheck:k,checkCreateATAOwner:S}),{tokenAccount:x}=M,K=ze(M,["tokenAccount"]);T.addInstruction(K);let F=await g.handleTokenAccount({side:"out",amount:0,mint:y,tokenAccount:B,bypassAssociatedCheck:k,checkCreateATAOwner:S}),{tokenAccount:I}=F,C=ze(F,["tokenAccount"]);return T.addInstruction(C),T.addInstruction({instructions:[pu({poolInfo:n,poolKeys:p,userKeys:{lpTokenAccount:P,baseTokenAccount:x,quoteTokenAccount:I,owner:this.scope.ownerPubKey},lpAmount:r,baseAmountMin:s,quoteAmountMin:a})],lookupTableAddress:p.lookupTableAccount?[p.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?X.AmmV5RemoveLiquidity:X.AmmV4RemoveLiquidity]}),T.addCustomComputeBudget(l),T.addTipInstruction(m),u===0?await T.buildV0():T.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:i,createPositionInfo:r,farmInfo:s,userFarmLpAmount:a,base:c,computeBudgetConfig:u,payer:l,userAuxiliaryLedgers:m,tokenProgram:d=jn,checkCreateATAOwner:p=!0,getEphemeralSigners:f,txVersion:y,feePayer:b}){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 g=this.createTxBuilder(b),P={};for(let Y of this.scope.account.tokenAccountRawInfos)(P[Y.accountInfo.mint.toString()]===void 0||Z(this.scope.ownerPubKey,Y.accountInfo.mint,jn).publicKey.equals(Y.pubkey))&&(P[Y.accountInfo.mint.toString()]=Y.pubkey);let h=P[t.lpMint.address];if(h===void 0)throw Error("find lp account error in trade accounts");let B=i.add(a!=null?a:new Ye(0)),T=t.mintA.address===Le.WSOL.mint.toString(),k=t.mintB.address===Le.WSOL.mint.toString(),{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:jn,mint:new rt(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:T?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:!0,checkCreateATAOwner:p});if(g.addInstruction(x||{}),S===void 0)throw new Error("base token account not found");let{account:K,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:jn,mint:new rt(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!0,checkCreateATAOwner:p});if(g.addInstruction(I||{}),K===void 0)throw new Error("quote token account not found");if(P[t.mintA.address]=S,P[t.mintB.address]=K,s!==void 0&&!(a!=null&&a.isZero())){let Y=Qt[s.programId],te=Tt({programId:new rt(s.programId),poolId:new rt(s.id),owner:this.scope.ownerPubKey,version:Y}),le,Ie=await this.scope.connection.getAccountInfo(te);if(Ie&&(le=Di(Y).decode(Ie.data)),Y!==6&&!le){let{instruction:Se,instructionType:je}=No({id:new rt(s.id),programId:new rt(s.programId),version:Y,ledger:te,owner:this.scope.ownerPubKey});g.addInstruction({instructions:[Se],instructionTypes:[je]})}let pe=[];for(let Se of s.rewardInfos){let je=Se.mint.address===Le.WSOL.mint.toString();if(P[Se.mint.address])pe.push(P[Se.mint.address]);else{let{account:ii,instructionParams:kn}=await this.scope.account.getOrCreateTokenAccount({mint:new rt(Se.mint.address),tokenProgram:d,owner:this.scope.ownerPubKey,skipCloseAccount:!je,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});ii||this.logAndCreateError("farm reward account not found:",Se.mint.address),kn&&g.addInstruction(kn),pe.push(ii)}}let Ae=(await this.scope.api.fetchFarmKeysById({ids:s.id}))[0],we={userAuxiliaryLedgers:m,amount:a,owner:this.scope.ownerPubKey,farmInfo:s,farmKeys:Ae,lpAccount:h,rewardAccounts:pe},be=Qt[s.programId],re=be===6?Oo(we):be===5?Mo(we):vo(we),Ue={3:X.FarmV3Withdraw,5:X.FarmV5Withdraw,6:X.FarmV6Withdraw};g.addInstruction({instructions:[re],instructionTypes:[Ue[be]]})}let C=await this.getAmmPoolKeys(t.id),M=pu({poolInfo:t,poolKeys:C,userKeys:{lpTokenAccount:h,baseTokenAccount:S,quoteTokenAccount:K,owner:this.scope.ownerPubKey},lpAmount:B,baseAmountMin:0,quoteAmountMin:0});g.addInstruction({instructions:[M],instructionTypes:[t.pooltype.includes("StablePool")?X.AmmV5RemoveLiquidity:X.AmmV4RemoveLiquidity],lookupTableAddress:C.lookupTableAccount?[C.lookupTableAccount]:[]});let[F,R]=t.mintA.address===n.mintA.address?[S,K]:[K,S],L=await this.scope.clmm.getClmmPoolKeys(n.id),V=await Me.openPositionFromBaseInstructions(U(v({poolInfo:n,poolKeys:L,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:F,tokenAccountB:R},withMetadata:"create"},r),{base:c,getEphemeralSigners:f}));return g.addInstruction({instructions:[...V.instructions],signers:V.signers,instructionTypes:[...V.instructionTypes],lookupTableAddress:L.lookupTableAccount?[L.lookupTableAccount]:[]}),y===0?g.sizeCheckBuildV0({computeBudgetConfig:u}):g.sizeCheckBuild({computeBudgetConfig:u})}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:i,quoteMintInfo:r,baseAmount:s,quoteAmount:a,startTime:c,ownerInfo:u,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:d,txVersion:p,feeDestinationId:f,computeBudgetConfig:y,txTipConfig:b,feePayer:g}){var R;let P=u.feePayer||((R=this.scope.owner)==null?void 0:R.publicKey),h=u.useSOLBalance&&i.mint.equals(ls),B=u.useSOLBalance&&r.mint.equals(ls),T=this.createTxBuilder(g),{account:k,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:i.mint,owner:this.scope.ownerPubKey,createInfo:h?{payer:P,amount:s}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:l,checkCreateATAOwner:m});T.addInstruction(S||{});let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({mint:r.mint,owner:this.scope.ownerPubKey,createInfo:B?{payer:P,amount:a}:void 0,notUseTokenAccount:B,skipCloseAccount:!B,associatedOnly:B?!1:l,checkCreateATAOwner:m});if(T.addInstruction(K||{}),k===void 0||x===void 0)throw Error("you don't has some token account");let I=Pu({version:4,marketVersion:3,marketId:n.marketId,baseMint:i.mint,quoteMint:r.mint,baseDecimals:i.decimals,quoteDecimals:r.decimals,programId:t,marketProgramId:n.programId}),C={programId:t,ammId:I.id,ammAuthority:I.authority,ammOpenOrders:I.openOrders,lpMint:I.lpMint,coinMint:I.baseMint,pcMint:I.quoteMint,coinVault:I.baseVault,pcVault:I.quoteVault,withdrawQueue:I.withdrawQueue,ammTargetOrders:I.targetOrders,poolTempLp:I.lpVault,marketProgramId:I.marketProgramId,marketId:I.marketId,ammConfigId:I.configId,feeDestinationId:f},{instruction:M,instructionType:F}=fu(U(v({},C),{userWallet:this.scope.ownerPubKey,userCoinVault:k,userPcVault:x,userLpVault:Z(this.scope.ownerPubKey,I.lpMint,d).publicKey,nonce:I.nonce,openTime:c,coinAmount:s,pcAmount:a}));return T.addInstruction({instructions:[M],instructionTypes:[F]}),T.addCustomComputeBudget(y),T.addTipInstruction(b),T.versionBuild({txVersion:p,extInfo:{address:C}})}async createMarketAndPoolV4({programId:t=yo,marketProgram:n=aa,feeDestinationId:i=ua,tokenProgram:r,baseMintInfo:s,quoteMintInfo:a,baseAmount:c,quoteAmount:u,startTime:l,ownerInfo:m,lowestFeeMarket:d,assignSeed:p,associatedOnly:f=!1,checkCreateATAOwner:y=!1,lotSize:b=1,tickSize:g=.01,txVersion:P,computeBudgetConfig:h,txTipConfig:B,feePayer:T}){var io,oo,ro;let k=this.scope.ownerPubKey,S=m.feePayer||((io=this.scope.owner)==null?void 0:io.publicKey),x=m.useSOLBalance&&s.mint.equals(ls),K=m.useSOLBalance&&a.mint.equals(ls),I=p?`${s.mint.toBase58().slice(0,7)}-${a.mint.toBase58().slice(0,7)}-${p}`:void 0,C=Je({fromPublicKey:k,programId:n,assignSeed:I&&`${I}-market`}),M=Je({fromPublicKey:k,programId:n,assignSeed:I&&`${I}-request`}),F=Je({fromPublicKey:k,programId:n,assignSeed:I&&`${I}-event`}),R=Je({fromPublicKey:k,programId:n,assignSeed:I&&`${I}-bids`}),L=Je({fromPublicKey:k,programId:n,assignSeed:I&&`${I}-asks`}),V=Je({fromPublicKey:k,programId:jn,assignSeed:I&&`${I}-baseVault`}),Y=Je({fromPublicKey:k,programId:jn,assignSeed:I&&`${I}-quoteVault`}),te=0,le=new Ye(100);function Ie(){let Vt=new Ye(0);for(;;)try{return{vaultOwner:rt.createProgramAddressSync([C.publicKey.toBuffer(),Vt.toArrayLike(Buffer,"le",8)],n),vaultSignerNonce:Vt}}catch{if(Vt.iaddn(1),Vt.gt(new Ye(25555)))throw Error("find vault owner error")}}let{vaultOwner:pe,vaultSignerNonce:Ae}=Ie(),we=new Ye(Math.round(10**s.decimals*b)),be=new Ye(Math.round(b*10**a.decimals*g));if(we.eq(ot))throw Error("lot size is too small");if(be.eq(ot))throw Error("tick size or lot size is too small");let re=await cs({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:n,vaultOwner:pe,baseMint:s.mint,quoteMint:a.mint,id:C,baseVault:V,quoteVault:Y,requestQueue:M,eventQueue:F,bids:R,asks:L,feeRateBps:te,quoteDustThreshold:le,vaultSignerNonce:Ae,baseLotSize:we,quoteLotSize:be,lowestFeeMarket:d}}),Ue=this.createTxBuilder(T);Ue.addInstruction({instructions:re[0].transaction.instructions,signers:re[0].signer});for await(let Vt of re.slice(1,re.length))Ue.addInstruction({instructions:Vt.transaction.instructions,signers:Vt.signer,instructionTypes:Vt.instructionTypes});let{account:Se,instructionParams:je}=await this.scope.account.getOrCreateTokenAccount({mint:s.mint,owner:this.scope.ownerPubKey,createInfo:x?{payer:S,amount:c}:void 0,notUseTokenAccount:x,skipCloseAccount:!x,associatedOnly:x?!1:f,checkCreateATAOwner:y,assignSeed:x&&I?`${I}-wsol`:void 0});Ue.addInstruction(je||{});let{account:ii,instructionParams:kn}=await this.scope.account.getOrCreateTokenAccount({mint:a.mint,owner:this.scope.ownerPubKey,createInfo:K?{payer:S,amount:u}:void 0,notUseTokenAccount:K,skipCloseAccount:!K,associatedOnly:K?!1:f,checkCreateATAOwner:y,assignSeed:K&&I?`${I}-wsol`:void 0});if(Ue.addInstruction(kn||{}),Se===void 0)throw Error("you don't has base token account");if(ii===void 0)throw Error("you don't has quote token account");let st=Pu({version:4,marketVersion:3,marketId:C.publicKey,baseMint:s.mint,quoteMint:a.mint,baseDecimals:s.decimals,quoteDecimals:a.decimals,programId:t,marketProgramId:n}),Fn={programId:t,ammId:st.id,ammAuthority:st.authority,ammOpenOrders:st.openOrders,lpMint:st.lpMint,coinMint:st.baseMint,pcMint:st.quoteMint,coinVault:st.baseVault,pcVault:st.quoteVault,withdrawQueue:st.withdrawQueue,ammTargetOrders:st.targetOrders,poolTempLp:st.lpVault,marketProgramId:st.marketProgramId,marketId:st.marketId,ammConfigId:st.configId,feeDestinationId:i},{instruction:eo,instructionType:to}=fu(U(v({},Fn),{userWallet:this.scope.ownerPubKey,userCoinVault:Se,userPcVault:ii,userLpVault:Z(this.scope.ownerPubKey,st.lpMint,r).publicKey,nonce:st.nonce,openTime:l,coinAmount:c,pcAmount:u}));Ue.addInstruction({instructions:[eo],instructionTypes:[to]});let no=x||K?[((oo=je==null?void 0:je.instructions)==null?void 0:oo[0])||((ro=kn==null?void 0:kn.instructions)==null?void 0:ro[0])].filter(Vt=>!!Vt):void 0;return P===0?Ue.sizeCheckBuildV0({computeBudgetConfig:h,splitIns:no,address:v({requestQueue:M.publicKey,eventQueue:F.publicKey,bids:R.publicKey,asks:L.publicKey,baseVault:V.publicKey,quoteVault:Y.publicKey,baseMint:new rt(s.mint),quoteMint:new rt(a.mint)},Fn)}):Ue.sizeCheckBuild({computeBudgetConfig:h,splitIns:no,address:v({requestQueue:M.publicKey,eventQueue:F.publicKey,bids:R.publicKey,asks:L.publicKey,baseVault:V.publicKey,quoteVault:Y.publicKey,baseMint:new rt(s.mint),quoteMint:new rt(a.mint)},Fn)})}async getCreatePoolFee({programId:t}){let n=as({programId:t}),i=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(i===null)throw Error("get config account error");return Hl.decode(i.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:i,mintOut:r,slippage:s}){let[a,c]=[i.toString(),r.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=[t.mintA.decimals,t.mintB.decimals],p=a==t.mintA.address?"base":"quote";p==="quote"&&(m.reverse(),d.reverse());let[f,y]=m,[b,g]=d,P=t.version===4,h;if(P)h=new N(y.toString()).div(10**g).div(new N(f.toString()).div(10**b));else{let F=om(this.stableLayout.stableModelData,u.toNumber(),l.toNumber(),!1);p==="quote"?h=new N(1e6).div(F*1e6):h=new N(F*1e6).div(1e6)}let B=n,T=new Ye(0),k=new Ye(0);if(!B.isZero())if(P){k=Mt(B.mul(au),rs);let F=B.sub(k),R=f.add(F);T=y.mul(F).div(R)}else{k=B.mul(new Ye(2)).div(new Ye(1e4));let F=B.sub(k);p==="quote"?T=new Ye(nm(this.stableLayout.stableModelData,l.toNumber(),u.toNumber(),F.toNumber())):T=new Ye(im(this.stableLayout.stableModelData,l.toNumber(),u.toNumber(),F.toNumber()))}let S=new Ye(new N(T.toString()).mul(1-s).toFixed(0)),x=T,K=S,I=new N(T.toString()).div(new N(B.sub(k).toString()).toFixed(0));!B.isZero()&&!T.isZero()&&(I=new N(T.toString()).div(10**g).div(new N(B.sub(k).toString()).div(10**b)));let C=h.sub(I).div(h).mul(100);return{amountOut:x,minAmountOut:K,currentPrice:h,executionPrice:I,priceImpact:C,fee:k}}computeAmountIn({poolInfo:t,amountOut:n,mintIn:i,mintOut:r,slippage:s}){let{baseReserve:a,quoteReserve:c}=t;i.toString()!==t.mintA.address&&i.toString()!==t.mintB.address&&this.logAndCreateError("mintIn does not match pool"),r.toString()!==t.mintA.address&&r.toString()!==t.mintB.address&&this.logAndCreateError("mintOut does not match pool"),this.logDebug("baseReserve:",a.toString()),this.logDebug("quoteReserve:",c.toString());let u=i.toString()===t.mintA.address,[l,m]=u?[t.mintA,t.mintB]:[t.mintB,t.mintA];this.logDebug("currencyOut:",m.symbol||m.address),this.logDebug("amountOut:",new N(n.toString()).div(10**m.decimals).toDecimalPlaces(m.decimals).toString(),l.symbol||l.address),this.logDebug("slippage:",`${s*100}%`);let d=[a,c],p=u?"quote":"base";p==="base"&&d.reverse(),this.logDebug("output side:",p);let[f,y]=d,b=new N(y.toString()).div(10**t[u?"mintB":"mintA"].decimals).div(new N(f.toString()).div(10**t[u?"mintA":"mintB"].decimals));this.logDebug("currentPrice:",`1 ${l.symbol||l.address} \u2248 ${b.toString()} ${m.symbol||m.address}`),this.logDebug("currentPrice invert:",`1 ${m.symbol||m.address} \u2248 ${new N(1).div(b).toString()} ${l.symbol||l.address}`);let g=new Ye(0),P=n;if(!P.isZero()){P.gt(y)&&(P=y.sub(new Ye(1)));let K=y.sub(P);g=f.mul(P).div(K).mul(rs).div(rs.sub(au))}let h=new Ye(new N(g.toString()).mul(1+s).toFixed(0)),B=g,T=h;this.logDebug("amountIn:",new N(B.toString()).div(10**l.decimals).toDecimalPlaces(l.decimals).toString()),this.logDebug("maxAmountIn:",new N(T.toString()).div(10**l.decimals).toDecimalPlaces(l.decimals).toString());let k=null;!g.isZero()&&!P.isZero()&&(k=new N(P.toString()).div(10**m.decimals).div(new N(g.toString()).div(10**l.decimals)),this.logDebug("executionPrice:",`1 ${m.symbol||m.address} \u2248 ${k.toDecimalPlaces(Math.max(t.mintA.decimals,t.mintB.decimals)).toString()} ${l.symbol||l.address}`),this.logDebug("executionPrice invert:",`1 ${m.symbol||m.address} \u2248 ${new N(1).div(k).toDecimalPlaces(Math.max(t.mintA.decimals,t.mintB.decimals)).toString()} ${l.symbol||l.address}`));let S=b.mul(B.toString()),x=S.sub(n.toString()).abs().div(S);return this.logDebug("priceImpact:",`${x.toString()}%`),{amountIn:B,maxAmountIn:T,currentPrice:b,executionPrice:k,priceImpact:x}}async swap({poolInfo:t,poolKeys:n,amountIn:i,amountOut:r,inputMint:s,fixedSide:a,txVersion:c,config:u,computeBudgetConfig:l,txTipConfig:m,feePayer:d}){let p=this.createTxBuilder(d),{associatedOnly:f=!0,inputUseSolBalance:y=!0,outputUseSolBalance:b=!0}=u||{},[g,P]=s===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],h=y&&g.address===$.toBase58(),B=b&&P.address===$.toBase58(),{account:T,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:jn,mint:new rt(g.address),owner:this.scope.ownerPubKey,createInfo:h?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!h,notUseTokenAccount:h,associatedOnly:f});p.addInstruction(k||{}),T||this.logAndCreateError("input token account not found",{token:g.symbol||g.address,tokenAccountIn:T,inputTokenUseSolBalance:h,associatedOnly:f});let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:jn,mint:new rt(P.address),owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!B,notUseTokenAccount:B,associatedOnly:B?!1:f});p.addInstruction(x||{}),S===void 0&&this.logAndCreateError("output token account not found",{token:P.symbol||P.address,tokenAccountOut:S,outputTokenUseSolBalance:B,associatedOnly:f});let K=n||await this.getAmmPoolKeys(t.id),I=4;return t.pooltype.includes("StablePool")&&(I=5),p.addInstruction({instructions:[ss({version:I,poolKeys:K,userKeys:{tokenAccountIn:T,tokenAccountOut:S,owner:this.scope.ownerPubKey},amountIn:i,amountOut:r,fixedSide:a})],instructionTypes:[I===4?X.AmmV4SwapBaseIn:X.AmmV5SwapBaseIn]}),p.addCustomComputeBudget(l),p.addTipInstruction(m),p.versionBuild({txVersion:c})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t,n){let i=await Fe(this.scope.connection,t.map(l=>({pubkey:new rt(l)})),n),r={},s=[];for(let l=0;l<t.length;l++){let m=i[l];if(m===null||!m.accountInfo)throw Error("fetch pool info error: "+String(t[l]));let d=yi.decode(m.accountInfo.data);r[String(t[l])]=U(v({},d),{programId:m.accountInfo.owner}),s.push(d.baseVault,d.quoteVault)}let a={},c=await Fe(this.scope.connection,s.map(l=>({pubkey:new rt(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 Ye(ob.decode(m.data).amount.toString())}let u={};for(let[l,m]of Object.entries(r)){let d=a[m.baseVault.toString()].sub(m.baseNeedTakePnl),p=a[m.quoteVault.toString()].sub(m.quoteNeedTakePnl);u[l]=U(v({},m),{baseReserve:d,mintAAmount:a[m.baseVault.toString()],mintBAmount:a[m.quoteVault.toString()],quoteReserve:p,poolPrice:new N(p.toString()).div(new N(10).pow(m.quoteDecimal.toString())).div(new N(d.toString()).div(new N(10).pow(m.baseDecimal.toString())))})}return u}async getPoolInfoFromRpc({poolId:t}){let n=await this.getRpcPoolInfo(t),i=us({[t]:n}),r=i[t],s=await this.scope.tradeV2.computePoolToPoolKeys({pools:[i[t]],ammRpcData:{[t]:n}});return{poolRpcData:n,poolInfo:r,poolKeys:s[0]}}};import{PublicKey as j}from"@solana/web3.js";import Nt from"bn.js";import{AccountLayout as lm,createAssociatedTokenAccountIdempotentInstruction as mm,TOKEN_2022_PROGRAM_ID as Zn,TOKEN_PROGRAM_ID as Zo}from"@solana/spl-token";var $o=class extends De{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var S;let{programId:t,owner:n=((S=this.scope.owner)==null?void 0:S.publicKey)||j.default,mint1:i,mint2:r,ammConfig:s,initialPrice:a,computeBudgetConfig:c,forerunCreate:u,getObserveState:l,txVersion:m,txTipConfig:d,feePayer:p}=e,f=this.createTxBuilder(p),[y,b,g]=new Nt(new j(i.address).toBuffer()).gt(new Nt(new j(r.address).toBuffer()))?[r,i,new N(1).div(a)]:[i,r,a],P=ae.priceToSqrtPriceX64(g,y.decimals,b.decimals),h=[],B=[];y.programId===Zn.toBase58()&&B.push(nu(t,new j(y.address)).publicKey),b.programId===Zn.toBase58()&&B.push(nu(t,new j(b.address)).publicKey),(await this.scope.connection.getMultipleAccountsInfo(B)).forEach((x,K)=>{x&&h.push(B[K])});let k=await Me.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:y,mintB:b,ammConfigId:s.id,initialPriceX64:P,forerunCreate:!l&&u,extendMintAccount:h});return f.addInstruction(k),f.addCustomComputeBudget(c),f.addTipInstruction(d),f.versionBuild({txVersion:m,extInfo:{address:U(v({},k.address),{observationId:k.address.observationId.toBase58(),exBitmapAccount:k.address.exBitmapAccount.toBase58(),programId:t.toString(),id:k.address.poolId.toString(),mintA:y,mintB:b,openTime:"0",vault:{A:k.address.mintAVault.toString(),B:k.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:v({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:k.address.poolId.toString(),mintA:y,mintB:b,feeRate:s.tradeFeeRate,openTime:"0",programId:t.toString(),price:g.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:[]},burnPercent:0},Kl),forerunCreate:u}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:r,base:s,baseAmount:a,otherAmountMax:c,nft2022:u,associatedOnly:l=!0,checkCreateATAOwner:m=!1,withMetadata:d="create",getEphemeralSigners:p,computeBudgetConfig:f,txTipConfig:y,txVersion:b,feePayer:g}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let P=this.createTxBuilder(g),h=null,B=null,T=n.useSOLBalance&&e.mintA.address===$.toString(),k=n.useSOLBalance&&e.mintB.address===$.toString(),[S,x]=s==="MintA"?[a,c]:[c,a],{account:K,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new j(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:T||S.isZero()?{payer:this.scope.ownerPubKey,amount:S}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:T?!1:l,checkCreateATAOwner:m});K&&(h=K),P.addInstruction(I||{});let{account:C,instructionParams:M}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new j(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:k||x.isZero()?{payer:this.scope.ownerPubKey,amount:x}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:k?!1:l,checkCreateATAOwner:m});C&&(B=C),P.addInstruction(M||{}),(!h||!B)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",{ownerTokenAccountA:h==null?void 0:h.toBase58(),ownerTokenAccountB:B==null?void 0:B.toBase58()});let F=t||await this.getClmmPoolKeys(e.id),R=await Me.openPositionFromBaseInstructions({poolInfo:e,poolKeys:F,ownerInfo:U(v({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:h,tokenAccountB:B}),tickLower:i,tickUpper:r,base:s,baseAmount:a,otherAmountMax:c,withMetadata:d,getEphemeralSigners:p,nft2022:u});return P.addInstruction(R),P.addCustomComputeBudget(f),P.addTipInstruction(y),P.versionBuild({txVersion:b,extInfo:v({},R.address)})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:i,amountMaxB:r,tickLower:s,tickUpper:a,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,withMetadata:m="create",txVersion:d,computeBudgetConfig:p,txTipConfig:f,getEphemeralSigners:y,nft2022:b,feePayer:g}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let P=this.createTxBuilder(g),h=null,B=null,T=n.useSOLBalance&&e.mintA.address===$.toBase58(),k=n.useSOLBalance&&e.mintB.address===$.toBase58(),{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new j(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:T||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:T?!1:u,checkCreateATAOwner:l});S&&(h=S),P.addInstruction(x||{});let{account:K,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new j(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:k||r.isZero()?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:k?!1:u,checkCreateATAOwner:l});K&&(B=K),P.addInstruction(I||{}),(h===void 0||B===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let C=t||await this.getClmmPoolKeys(e.id),M=await Me.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:C,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:h,tokenAccountB:B},tickLower:s,tickUpper:a,liquidity:c,amountMaxA:i,amountMaxB:r,withMetadata:m,getEphemeralSigners:y,nft2022:b});return P.addInstruction(M),P.addCustomComputeBudget(p),P.addTipInstruction(f),P.versionBuild({txVersion:d,extInfo:{address:M.address}})}async increasePositionFromLiquidity(e){var I;let{poolInfo:t,poolKeys:n,ownerPosition:i,amountMaxA:r,amountMaxB:s,liquidity:a,ownerInfo:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,computeBudgetConfig:m,txTipConfig:d,txVersion:p,feePayer:f}=e,y=this.createTxBuilder(f),b,g,P=c.useSOLBalance&&t.mintA.address===$.toString(),h=c.useSOLBalance&&t.mintB.address===$.toString(),{account:B,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new j(t.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:P||r.isZero()?{payer:this.scope.ownerPubKey,amount:r}:void 0,skipCloseAccount:!P,associatedOnly:P?!1:u,checkCreateATAOwner:l});B&&(b=B),y.addInstruction(T||{});let{account:k,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new j(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:h||s.isZero()?{payer:this.scope.ownerPubKey,amount:s}:void 0,notUseTokenAccount:h,skipCloseAccount:!h,associatedOnly:h?!1:u,checkCreateATAOwner:l});k&&(g=k),y.addInstruction(S||{}),!b&&!g&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let x=n!=null?n:await this.getClmmPoolKeys(t.id),K=Me.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:x,ownerPosition:i,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:g},liquidity:a,amountMaxA:r,amountMaxB:s,nft2022:(I=await this.scope.connection.getAccountInfo(i.nftMint))==null?void 0:I.owner.equals(Zn)});return y.addInstruction(K),y.addCustomComputeBudget(m),y.addTipInstruction(d),y.versionBuild({txVersion:p,extInfo:{address:K.address}})}async increasePositionFromBase(e){var K;let{poolInfo:t,ownerPosition:n,base:i,baseAmount:r,otherAmountMax:s,ownerInfo:a,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txTipConfig:m,txVersion:d,feePayer:p}=e,f=this.createTxBuilder(p),y,b,g=a.useSOLBalance&&t.mintA.address===$.toString(),P=a.useSOLBalance&&t.mintB.address===$.toString(),{account:h,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new j(t.mintA.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,createInfo:g||(i==="MintA"?r:s).isZero()?{payer:this.scope.ownerPubKey,amount:i==="MintA"?r:s}:void 0,skipCloseAccount:!g,associatedOnly:g?!1:c,checkCreateATAOwner:u});h&&(y=h),f.addInstruction(B||{});let{account:T,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new j(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:P||(i==="MintA"?s:r).isZero()?{payer:this.scope.ownerPubKey,amount:i==="MintA"?s:r}:void 0,notUseTokenAccount:P,skipCloseAccount:!P,associatedOnly:P?!1:c,checkCreateATAOwner:u});T&&(b=T),f.addInstruction(k||{}),!y&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=await this.getClmmPoolKeys(t.id),x=Me.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:S,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:y,tokenAccountB:b},base:i,baseAmount:r,otherAmountMax:s,nft2022:(K=await this.scope.connection.getAccountInfo(n.nftMint))==null?void 0:K.owner.equals(Zn)});return f.addInstruction(x),f.addCustomComputeBudget(l),f.addTipInstruction(m),f.versionBuild({txVersion:d,extInfo:{address:x.address}})}async decreaseLiquidity(e){var F;let{poolInfo:t,poolKeys:n,ownerPosition:i,ownerInfo:r,amountMinA:s,amountMinB:a,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:l=!1,computeBudgetConfig:m,txTipConfig:d,txVersion:p,feePayer:f}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let y=this.createTxBuilder(f),b=r.useSOLBalance&&t.mintA.address===$.toString(),g=r.useSOLBalance&&t.mintB.address===$.toString(),P,h,{account:B,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new j(t.mintA.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!b,associatedOnly:b?!1:u,checkCreateATAOwner:l});P=B,T&&y.addInstruction(T);let{account:k,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new j(t.mintB.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!g,associatedOnly:g?!1:u,checkCreateATAOwner:l});h=k,S&&y.addInstruction(S);let x=[];for(let R of t.rewardDefaultInfos){let L=r.useSOLBalance&&R.mint.address===$.toString(),V;if(R.mint.address===t.mintA.address)V=P;else if(R.mint.address===t.mintB.address)V=h;else{let{account:Y,instructionParams:te}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new j(R.mint.programId),mint:new j(R.mint.address),notUseTokenAccount:L,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!L,associatedOnly:L?!1:u,checkCreateATAOwner:l});V=Y,te&&y.addInstruction(te)}x.push(V)}!P&&!h&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let K=n!=null?n:await this.getClmmPoolKeys(t.id),I=(F=await this.scope.connection.getAccountInfo(i.nftMint))==null?void 0:F.owner.equals(Zn),C=await Me.decreaseLiquidityInstructions({poolInfo:t,poolKeys:K,ownerPosition:i,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:P,tokenAccountB:h,rewardAccounts:x},liquidity:c,amountMinA:s,amountMinB:a,nft2022:I});y.addInstruction({instructions:C.instructions,instructionTypes:[X.ClmmDecreasePosition]});let M=v({},C.address);if(r.closePosition){let R=await Me.closePositionInstructions({poolInfo:t,poolKeys:K,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:i,nft2022:I});y.addInstruction({endInstructions:R.instructions,endInstructionTypes:R.instructionTypes}),M=v(v({},M),R.address)}return y.addCustomComputeBudget(m),y.addTipInstruction(d),y.versionBuild({txVersion:p,extInfo:{address:M}})}async lockPosition(e){var f;let{programId:t=Ni,authProgramId:n=bo,poolProgramId:i=qn,ownerPosition:r,payer:s,computeBudgetConfig:a,txTipConfig:c,txVersion:u,getEphemeralSigners:l,feePayer:m}=e,d=this.createTxBuilder(m),p=await Me.makeLockPositions({programId:t,authProgramId:n,poolProgramId:i,wallet:this.scope.ownerPubKey,payer:s!=null?s:this.scope.ownerPubKey,nftMint:r.nftMint,getEphemeralSigners:l,nft2022:(f=await this.scope.connection.getAccountInfo(r.nftMint))==null?void 0:f.owner.equals(Zn)});return d.addInstruction(p),d.addCustomComputeBudget(a),d.addTipInstruction(c),d.versionBuild({txVersion:u,extInfo:p.address})}async harvestLockPosition(e){let{programId:t=Ni,authProgramId:n=bo,clmmProgram:i=qn,poolKeys:r,lockData:s,ownerInfo:a={useSOLBalance:!0},associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:l,txTipConfig:m,txVersion:d,feePayer:p}=e,f=r||await this.getClmmPoolKeys(s.poolId.toString()),y=this.createTxBuilder(p),b=await this.scope.connection.getAccountInfo(s.positionId);b||this.logger.logWithError("position not found",s.positionId);let g=Ui.decode(b.data),P=a.useSOLBalance&&f.mintA.address===$.toString(),h=a.useSOLBalance&&f.mintB.address===$.toString(),B,T,{account:k,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f.mintA.programId,mint:new j(f.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!P,associatedOnly:P?!1:c,checkCreateATAOwner:u});B=k,S&&y.addInstruction(S);let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f.mintB.programId,mint:new j(f.mintB.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!h,associatedOnly:h?!1:c,checkCreateATAOwner:u});T=x,K&&y.addInstruction(K);let I={},C=[];for(let pe of f.rewardInfos){let Ae=a.useSOLBalance&&pe.mint.address===$.toString(),we=I[pe.mint.address];if(!we){let{account:be,instructionParams:re}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new j(pe.mint.programId),mint:new j(pe.mint.address),notUseTokenAccount:Ae,owner:this.scope.ownerPubKey,skipCloseAccount:!Ae,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:Ae?!1:c});we=be,re&&y.addInstruction(re)}I[pe.mint.address]=we,C.push(we)}let M=qi(t,s.lockNftMint).publicKey,F=Z(this.scope.ownerPubKey,s.lockNftMint,Zo).publicKey,R=J.getTickArrayStartIndexByTick(g.tickLower,f.config.tickSpacing),L=J.getTickArrayStartIndexByTick(g.tickUpper,f.config.tickSpacing),{publicKey:V}=he(new j(f.programId),s.poolId,R),{publicKey:Y}=he(new j(f.programId),s.poolId,L),{publicKey:te}=dn(new j(f.programId),s.poolId,g.tickLower,g.tickUpper),le=[];for(let pe=0;pe<f.rewardInfos.length;pe++)le.push({poolRewardVault:new j(f.rewardInfos[pe].vault),ownerRewardVault:C[pe],rewardMint:new j(f.rewardInfos[pe].mint.address)});let Ie=await Me.harvestLockPositionInstructionV2({programId:t,auth:n,lockPositionId:M,clmmProgram:i,lockOwner:this.scope.ownerPubKey,lockNftMint:s.lockNftMint,lockNftAccount:F,positionNftAccount:s.nftAccount,positionId:s.positionId,poolId:s.poolId,protocolPosition:te,vaultA:new j(f.vault.A),vaultB:new j(f.vault.B),tickArrayLower:V,tickArrayUpper:Y,userVaultA:B,userVaultB:T,mintA:new j(f.mintA.address),mintB:new j(f.mintB.address),rewardAccounts:le,exTickArrayBitmap:et(i,s.poolId).publicKey});return y.addInstruction({instructions:[Ie],instructionTypes:[X.ClmmHarvestLockPosition]}),y.addCustomComputeBudget(l),y.addTipInstruction(m),y.versionBuild({txVersion:d})}async closePosition({poolInfo:e,poolKeys:t,ownerPosition:n,txVersion:i,computeBudgetConfig:r,txTipConfig:s,feePayer:a}){var m;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let c=this.createTxBuilder(a),u=t!=null?t:await this.getClmmPoolKeys(e.id),l=Me.closePositionInstructions({poolInfo:e,poolKeys:u,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n,nft2022:(m=await this.scope.connection.getAccountInfo(n.nftMint))==null?void 0:m.owner.equals(Zn)});return c.addCustomComputeBudget(r),c.addTipInstruction(s),c.addInstruction(l).versionBuild({txVersion:i,extInfo:{address:l.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:r=!1,computeBudgetConfig:s,txVersion:a,feePayer:c}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(c),l=t.useSOLBalance&&n.mint.address.toString()===$.toString(),m=n.perSecond.mul(n.endTime-n.openTime),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new j(n.mint.address),mint:new j(n.mint.address),notUseTokenAccount:!!l,skipCloseAccount:!l,owner:this.scope.ownerPubKey,createInfo:l?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Nt(new N(m.toFixed(0)).gte(m)?m.toFixed(0):m.add(1).toFixed(0))}:void 0,associatedOnly:l?!1:i,checkCreateATAOwner:r});p&&u.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),y=Me.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{programId:new j(n.mint.programId),mint:new j(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:de.decimalToX64(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(s),u.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:i,associatedOnly:r=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txTipConfig:c,txVersion:u,feePayer:l}){for(let p of i)p.endTime<=p.openTime&&this.logAndCreateError("reward time error","rewardInfo",p);let m=this.createTxBuilder(l),d={};for(let p of i){let f=n.useSOLBalance&&p.mint.address===$.toString(),y=p.perSecond.mul(p.endTime-p.openTime),{account:b,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new j(p.mint.programId),mint:new j(p.mint.address),notUseTokenAccount:!!f,skipCloseAccount:!f,owner:this.scope.ownerPubKey,createInfo:f?{payer:n.feePayer||this.scope.ownerPubKey,amount:new Nt(new N(y.toFixed(0)).gte(y)?y.toFixed(0):y.add(1).toFixed(0))}:void 0,associatedOnly:f?!1:r,checkCreateATAOwner:s});g&&m.addInstruction(g),b||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let P=t!=null?t:await this.getClmmPoolKeys(e.id),h=Me.initRewardInstructions({poolInfo:e,poolKeys:P,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:b},rewardInfo:{programId:new j(p.mint.programId),mint:new j(p.mint.address),openTime:p.openTime,endTime:p.endTime,emissionsPerSecondX64:de.decimalToX64(p.perSecond)}});d=v(v({},d),h.address),m.addInstruction(h)}return m.addCustomComputeBudget(a),m.addTipInstruction(c),m.versionBuild({txVersion:u,extInfo:{address:d}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:i=!0,checkCreateATAOwner:r=!1,computeBudgetConfig:s,txTipConfig:a,txVersion:c,feePayer:u}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let l=this.createTxBuilder(u),m=t.useSOLBalance&&n.mint.equals($),{account:d,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:m,owner:this.scope.ownerPubKey,createInfo:m?{payer:t.feePayer||this.scope.ownerPubKey,amount:new Nt(new N(n.perSecond.mul(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.mul(n.endTime-n.openTime))?n.perSecond.mul(n.endTime-n.openTime).toFixed(0):n.perSecond.mul(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:m?!1:i,checkCreateATAOwner:r});p&&l.addInstruction(p),d||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),y=Me.setRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:d},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:de.decimalToX64(n.perSecond)}});return l.addInstruction(y),l.addCustomComputeBudget(s),l.addTipInstruction(a),l.versionBuild({txVersion:c,extInfo:{address:y.address}})}async setRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:i,associatedOnly:r=!0,checkCreateATAOwner:s=!1,computeBudgetConfig:a,txTipConfig:c,txVersion:u,feePayer:l}){let m=this.createTxBuilder(l),d={};for(let p of i){p.endTime<=p.openTime&&this.logAndCreateError("reward time error","rewardInfo",p);let f=n.useSOLBalance&&p.mint.address===$.toString(),{account:y,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new j(p.mint.programId),mint:new j(p.mint.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:n.feePayer||this.scope.ownerPubKey,amount:new Nt(new N(p.perSecond.mul(p.endTime-p.openTime).toFixed(0)).gte(p.perSecond.mul(p.endTime-p.openTime))?p.perSecond.mul(p.endTime-p.openTime).toFixed(0):p.perSecond.mul(p.endTime-p.openTime).add(1).toFixed(0))}:void 0,associatedOnly:f?!1:r,checkCreateATAOwner:s});b&&m.addInstruction(b),y||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let g=t!=null?t:await this.getClmmPoolKeys(e.id),P=Me.setRewardInstructions({poolInfo:e,poolKeys:g,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:y},rewardInfo:{mint:new j(p.mint.address),openTime:p.openTime,endTime:p.endTime,emissionsPerSecondX64:de.decimalToX64(p.perSecond)}});m.addInstruction(P),d=v(v({},d),P.address)}return m.addCustomComputeBudget(a),m.addTipInstruction(c),m.versionBuild({txVersion:u,extInfo:{address:d}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:i=!0,checkCreateATAOwner:r=!1,computeBudgetConfig:s,txTipConfig:a,txVersion:c,feePayer:u}){let l=e.rewardDefaultInfos.find(g=>g.mint.address===n.toString());l||this.logAndCreateError("reward mint error","not found reward mint",n);let m=this.createTxBuilder(u),d=t.useSOLBalance&&n.equals($),{account:p,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new j(l.mint.programId),mint:n,notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:i,checkCreateATAOwner:r});f&&m.addInstruction(f),p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),b=Me.collectRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardMint:n});return m.addInstruction(b),m.addCustomComputeBudget(s),m.addTipInstruction(a),m.versionBuild({txVersion:c,extInfo:{address:b.address}})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:i=!0,checkCreateATAOwner:r=!1,computeBudgetConfig:s,txTipConfig:a,feePayer:c}){let u=this.createTxBuilder(c),l={};for(let m of n){let d=e.rewardDefaultInfos.find(P=>P.mint.address===m.toString());if(!d){this.logAndCreateError("reward mint error","not found reward mint",m);continue}let p=t.useSOLBalance&&m.equals($),{account:f,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new j(d.mint.programId),mint:m,notUseTokenAccount:p,owner:this.scope.ownerPubKey,skipCloseAccount:!p,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:p?!1:i,checkCreateATAOwner:r});f||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),y&&u.addInstruction(y);let b=await this.getClmmPoolKeys(e.id),g=Me.collectRewardInstructions({poolInfo:e,poolKeys:b,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:f},rewardMint:m});u.addInstruction(g),l=v(v({},l),g.address)}return u.addCustomComputeBudget(s),u.addTipInstruction(a),u.build({address:l})}async swap({poolInfo:e,poolKeys:t,inputMint:n,amountIn:i,amountOutMin:r,priceLimit:s,observationId:a,ownerInfo:c,remainingAccounts:u,associatedOnly:l=!0,checkCreateATAOwner:m=!1,txVersion:d,computeBudgetConfig:p,txTipConfig:f,feePayer:y}){let b=this.createTxBuilder(y),g=n.toString()===e.mintA.address,P=c.useSOLBalance&&e.mintA.address===$.toBase58(),h=c.useSOLBalance&&e.mintB.address===$.toBase58(),B;!s||s.equals(new N(0))?B=g?Ht.add(new Nt(1)):jt.sub(new Nt(1)):B=ae.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let T;if(!T){let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new j(e.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,skipCloseAccount:!P,createInfo:P||!g?{payer:c.feePayer||this.scope.ownerPubKey,amount:g?i:0}:void 0,associatedOnly:P?!1:l,checkCreateATAOwner:m});T=x,K&&b.addInstruction(K)}let k;if(!k){let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new j(e.mintB.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,skipCloseAccount:!h,createInfo:h||g?{payer:c.feePayer||this.scope.ownerPubKey,amount:g?0:i}:void 0,associatedOnly:h?!1:l,checkCreateATAOwner:m});k=x,K&&b.addInstruction(K)}(!T||!k)&&this.logAndCreateError("user do not have token account",{tokenA:e.mintA.symbol||e.mintA.address,tokenB:e.mintB.symbol||e.mintB.address,ownerTokenAccountA:T,ownerTokenAccountB:k,mintAUseSOLBalance:P,mintBUseSOLBalance:h,associatedOnly:l});let S=t!=null?t:await this.getClmmPoolKeys(e.id);return b.addInstruction(Me.makeSwapBaseInInstructions({poolInfo:e,poolKeys:S,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:T,tokenAccountB:k},inputMint:new j(n),amountIn:i,amountOutMin:r,sqrtPriceLimitX64:B,remainingAccounts:u})),b.addCustomComputeBudget(p),b.addTipInstruction(f),b.versionBuild({txVersion:d})}async swapBaseOut({poolInfo:e,poolKeys:t,outputMint:n,amountOut:i,amountInMax:r,priceLimit:s,observationId:a,ownerInfo:c,remainingAccounts:u,associatedOnly:l=!0,checkCreateATAOwner:m=!1,txVersion:d,computeBudgetConfig:p,txTipConfig:f,feePayer:y}){let b=this.createTxBuilder(y),g=n.toString()===e.mintB.address,P=c.useSOLBalance&&e.mintA.address===$.toBase58(),h=c.useSOLBalance&&e.mintB.address===$.toBase58(),B;!s||s.equals(new N(0))?B=n.toString()===e.mintB.address?Ht.add(new Nt(1)):jt.sub(new Nt(1)):B=ae.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let T;if(!T){let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new j(e.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,skipCloseAccount:!P,createInfo:P||!g?{payer:c.feePayer||this.scope.ownerPubKey,amount:g?r:0}:void 0,associatedOnly:P?!1:l,checkCreateATAOwner:m});T=x,K&&b.addInstruction(K)}let k;if(!k){let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new j(e.mintB.address),notUseTokenAccount:h,owner:this.scope.ownerPubKey,skipCloseAccount:!h,createInfo:h||g?{payer:c.feePayer||this.scope.ownerPubKey,amount:g?0:r}:void 0,associatedOnly:h?!1:l,checkCreateATAOwner:m});k=x,K&&b.addInstruction(K)}(!T||!k)&&this.logAndCreateError("user do not have token account",{tokenA:e.mintA.symbol||e.mintA.address,tokenB:e.mintB.symbol||e.mintB.address,ownerTokenAccountA:T,ownerTokenAccountB:k,mintAUseSOLBalance:P,mintBUseSOLBalance:h,associatedOnly:l});let S=t!=null?t:await this.getClmmPoolKeys(e.id);return b.addInstruction(Me.makeSwapBaseOutInstructions({poolInfo:e,poolKeys:S,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:T,tokenAccountB:k},outputMint:new j(n),amountOut:i,amountInMax:r,sqrtPriceLimitX64:B,remainingAccounts:u})),b.addCustomComputeBudget(p),b.addTipInstruction(f),b.versionBuild({txVersion:d})}async harvestAllRewards({allPoolInfo:e,allPositions:t,lockInfo:n,ownerInfo:i,associatedOnly:r=!0,checkCreateATAOwner:s=!1,programId:a,txVersion:c,computeBudgetConfig:u,feePayer:l,lockProgram:m=Ni,lockAuth:d=bo,clmmProgram:p=qn}){var h,B;let f={};for(let T of this.scope.account.tokenAccountRawInfos)r?Z(this.scope.ownerPubKey,T.accountInfo.mint,a).publicKey.equals(T.pubkey)&&(f[T.accountInfo.mint.toString()]=T.pubkey):f[T.accountInfo.mint.toString()]=T.pubkey;let y=Object.values(t).flat().map(T=>T.nftMint),b=await Fe(this.scope.connection,y.map(T=>({pubkey:T}))),g={};b.forEach(T=>{var k,S;g[T.pubkey.toBase58()]=(S=(k=T==null?void 0:T.accountInfo)==null?void 0:k.owner)!=null?S:null});let P=this.createTxBuilder(l);for(let T of Object.values(e)){if(t[T.id]===void 0||!t[T.id].find(R=>!R.liquidity.isZero()||R.rewardInfos.find(L=>!L.rewardAmountOwed.isZero())))continue;let k=T,S=i.useSOLBalance&&k.mintA.address===$.toString(),x=i.useSOLBalance&&k.mintB.address===$.toString(),K=f[k.mintA.address];if(!K)if(S){let{account:R,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:k.mintA.programId,mint:new j(k.mintA.address),notUseTokenAccount:S,owner:this.scope.ownerPubKey,skipCloseAccount:!S,createInfo:{payer:i.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:S?!1:r,checkCreateATAOwner:s});K=R,L&&P.addInstruction(L)}else{let R=new j(k.mintA.address);K=this.scope.account.getAssociatedTokenAccount(R,new j(k.mintA.programId)),P.addInstruction({instructions:[mm(this.scope.ownerPubKey,K,this.scope.ownerPubKey,R,new j(k.mintA.programId))]})}let I=f[k.mintB.address];if(!I)if(x){let{account:R,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:k.mintB.programId,mint:new j(k.mintB.address),notUseTokenAccount:x,owner:this.scope.ownerPubKey,skipCloseAccount:!x,createInfo:{payer:i.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:x?!1:r,checkCreateATAOwner:s});I=R,L&&P.addInstruction(L)}else{let R=new j(k.mintB.address);I=this.scope.account.getAssociatedTokenAccount(R,new j(k.mintB.programId)),P.addInstruction({instructions:[mm(this.scope.ownerPubKey,I,this.scope.ownerPubKey,R,new j(k.mintB.programId))]})}f[k.mintA.address]=K,f[k.mintB.address]=I;let C=[];for(let R of k.rewardDefaultInfos){let L=i.useSOLBalance&&R.mint.address===$.toString(),V=f[R.mint.address];if(!V){let{account:Y,instructionParams:te}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new j(R.mint.programId),mint:new j(R.mint.address),notUseTokenAccount:L,owner:this.scope.ownerPubKey,skipCloseAccount:!L,createInfo:{payer:i.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:L?!1:r});V=Y,te&&P.addInstruction(te)}f[R.mint.address]=V,C.push(V)}let M=await this.getClmmPoolKeys(k.id),F=[];for(let R=0;R<M.rewardInfos.length;R++)F.push({poolRewardVault:new j(M.rewardInfos[R].vault),ownerRewardVault:C[R],rewardMint:new j(M.rewardInfos[R].mint.address)});for(let R of t[T.id]){let L=(h=n==null?void 0:n[T.id])==null?void 0:h[R.nftMint.toBase58()];if(L){let V=Z(this.scope.ownerPubKey,L.lockNftMint,Zo).publicKey,Y=J.getTickArrayStartIndexByTick(R.tickLower,M.config.tickSpacing),te=J.getTickArrayStartIndexByTick(R.tickUpper,M.config.tickSpacing),{publicKey:le}=he(new j(M.programId),L.poolId,Y),{publicKey:Ie}=he(new j(M.programId),L.poolId,te),{publicKey:pe}=dn(new j(M.programId),L.poolId,R.tickLower,R.tickUpper),Ae=qi(m,L.lockNftMint).publicKey,we=Me.harvestLockPositionInstructionV2({programId:m,auth:d,lockPositionId:Ae,clmmProgram:p,lockOwner:this.scope.ownerPubKey,lockNftMint:L.lockNftMint,lockNftAccount:V,positionNftAccount:L.nftAccount,positionId:L.positionId,poolId:L.poolId,protocolPosition:pe,vaultA:new j(M.vault.A),vaultB:new j(M.vault.B),tickArrayLower:le,tickArrayUpper:Ie,userVaultA:K,userVaultB:I,mintA:new j(M.mintA.address),mintB:new j(M.mintB.address),rewardAccounts:F,exTickArrayBitmap:et(p,L.poolId).publicKey});P.addInstruction({instructions:[we],instructionTypes:[X.ClmmHarvestLockPosition],lookupTableAddress:M.lookupTableAccount?[M.lookupTableAccount]:[]})}else{let V=Me.decreaseLiquidityInstructions({poolInfo:k,poolKeys:M,ownerPosition:R,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:K,tokenAccountB:I,rewardAccounts:C},liquidity:new Nt(0),amountMinA:new Nt(0),amountMinB:new Nt(0),nft2022:(B=g[R.nftMint.toBase58()])==null?void 0:B.equals(Zn)});P.addInstruction(V)}}}return c===0?P.sizeCheckBuildV0({computeBudgetConfig:u}):P.sizeCheckBuild({computeBudgetConfig:u})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(Do(e).publicKey);return t?Wl.decode(t.data).whitelistMints.filter(i=>!i.equals(j.default)):[]}async getOwnerPositionInfo({programId:e=qn}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new Nt(1))).map(s=>Lt(new j(e),s.accountInfo.mint).publicKey),i=await this.scope.connection.getMultipleAccountsInfo(n),r=[];return i.forEach(s=>{if(!s)return;let a=Ui.decode(s.data);r.push(a)}),r}async getOwnerLockedPositionInfo({programId:e=Ni}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(c=>c.accountInfo.amount.eq(new Nt(1))).map(c=>qi(new j(e),c.accountInfo.mint).publicKey),i=await this.scope.connection.getMultipleAccountsInfo(n),r=[];i.forEach(c=>{if(!c)return;let u=ql.decode(c.data);r.push(u)});let s=await this.scope.connection.getMultipleAccountsInfo(r.map(c=>c.positionId)),a=[];return s.forEach(c=>{if(!c)return;let u=Ui.decode(c.data);a.push(u)}),r.map((c,u)=>({position:a[u],lockInfo:c}))}async getRpcClmmPoolInfo({poolId:e}){return(await this.getRpcClmmPoolInfos({poolIds:[e]}))[String(e)]}async getRpcClmmPoolInfos({poolIds:e,config:t}){let n=await Fe(this.scope.connection,e.map(r=>({pubkey:new j(r)})),t),i={};for(let r=0;r<e.length;r++){let s=n[r];if(s===null||!s.accountInfo)throw Error("fetch pool info error: "+String(e[r]));let a=pi.decode(s.accountInfo.data),c=ae.sqrtPriceX64ToPrice(a.sqrtPriceX64,a.mintDecimalsA,a.mintDecimalsB).toNumber();i[String(e[r])]=U(v({},a),{currentPrice:c,programId:s.accountInfo.owner})}return i}async getComputeClmmPoolInfos({clmmPoolsRpcInfo:e,mintInfos:t}){let n=new Set(Object.keys(e).map(c=>e[c].ammConfig.toBase58())),i=await Fe(this.scope.connection,Array.from(n).map(c=>({pubkey:new j(c)}))),r={};i.forEach(c=>{!c.accountInfo||(r[c.pubkey.toBase58()]=Vl.decode(c.accountInfo.data))});let s=await _e.fetchComputeMultipleClmmInfo({connection:this.scope.connection,rpcDataMap:e,poolList:Object.keys(e).map(c=>{var m,d,p,f;let[u,l]=[e[c].mintA.toBase58(),e[c].mintB.toBase58()];return{id:c,programId:e[c].programId.toBase58(),mintA:Bt({address:u,decimals:e[c].mintDecimalsA,programId:t[u].programId.toBase58()||Zo.toBase58(),extensions:{feeConfig:(m=t[u])!=null&&m.feeConfig?Hn((d=t[u])==null?void 0:d.feeConfig):void 0}}),mintB:Bt({address:l,decimals:e[c].mintDecimalsB,programId:t[l].programId.toBase58()||Zo.toBase58(),extensions:{feeConfig:(p=t[l])!=null&&p.feeConfig?Hn((f=t[l])==null?void 0:f.feeConfig):void 0}}),price:e[c].currentPrice,config:U(v({},r[e[c].ammConfig.toBase58()]),{id:e[c].ammConfig.toBase58(),fundFeeRate:0,description:"",defaultRange:0,defaultRangePoint:[]})}})}),a=await _e.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()]),i=await Si({connection:this.scope.connection,mints:Array.from(n).map(m=>new j(m))}),{computeClmmPoolInfo:r,computePoolTickData:s}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:{[e]:t},mintInfos:i}),a=await Fe(this.scope.connection,[{pubkey:t.vaultA},{pubkey:t.vaultB}]),c=El(r[e]);if(!a[0].accountInfo||!a[1].accountInfo)throw new Error("pool vault data not found");c.mintAmountA=Number(lm.decode(a[0].accountInfo.data).amount.toString()),c.mintAmountB=Number(lm.decode((l=a[1].accountInfo)==null?void 0:l.data).amount.toString());let u=U(v({},r[e]),{exBitmapAccount:r[e].exBitmapAccount.toBase58(),observationId:r[e].observationId.toBase58(),id:e,programId:t.programId.toBase58(),openTime:t.startTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},config:c.config,rewardInfos:r[e].rewardInfos.filter(m=>!m.tokenVault.equals(j.default)).map(m=>({mint:Bt({address:m.tokenMint.toBase58(),programId:Zo.toBase58(),decimals:10}),vault:m.tokenVault.toBase58()}))});return{poolInfo:c,poolKeys:u,computePoolInfo:r[e],tickData:s}}};import{PublicKey as Q}from"@solana/web3.js";import{AccountLayout as Pb,NATIVE_MINT as As,TOKEN_PROGRAM_ID as Gt,createAssociatedTokenAccountIdempotentInstruction as hm}from"@solana/spl-token";import ku from"bn.js";import fs from"decimal.js-light";import Jo from"bn.js";function ms(o,e){if(e.isZero())throw Error("divisor is zero");return o.mod(e)}function rb(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=ms(o,e);return n.gt(Qi)&&(t=t.add(new Jo(1)),e=o.div(t),n=ms(o,t),n.gt(Qi)&&(e=e.add(new Jo(1)))),[t,e]}var Qi=new Jo(0),ds=class{static swapWithoutFees(e,t,n){let i=t.mul(n),r=t.add(e),[s]=rb(i,r),a=n.sub(s);if(a.isZero())throw Error("destinationAmountSwapped is zero");return{destinationAmountSwapped:a}}static lpTokensToTradingTokens(e,t,n,i,r){let s=e.mul(n).div(t),a=e.mul(i).div(t);if(r===0)return{tokenAmount0:s,tokenAmount1:a};if(r===1)return ms(e.mul(n),t).gt(Qi)&&s.gt(Qi)&&(s=s.add(new Jo(1))),ms(e.mul(i),t).gt(Qi)&&a.gt(Qi)&&(a=a.add(new Jo(1))),{tokenAmount0:s,tokenAmount1:a};throw Error("roundDirection value error")}};var ps=class{static tradingFee(e,t){return Rr(e,t,cn)}static protocolFee(e,t){return na(e,t,cn)}static fundFee(e,t){return na(e,t,cn)}};var dm=(t=>(t[t.Floor=0]="Floor",t[t.Ceiling=1]="Ceiling",t))(dm||{}),ys=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swap(e,t,n,i){let r=ps.tradingFee(e,i),s=e.sub(r),{destinationAmountSwapped:a}=ds.swapWithoutFees(s,t,n);return{newSwapDestinationAmount:n.sub(a),sourceAmountSwapped:e,destinationAmountSwapped:a,tradeFee:r}}static swapBaseOut({poolMintA:e,poolMintB:t,tradeFeeRate:n,baseReserve:i,quoteReserve:r,outputMint:s,outputAmount:a}){let[c,u,l,m,d]=t.address===s.toString()?[i,r,e.decimals,t.decimals,e.address]:[r,i,t.decimals,e.decimals,t.address],p=new fs(u.toString()).div(10**m).div(new fs(c.toString()).div(10**l)),f=a.gte(u)?u.sub(new ku(1)):a,y=u.sub(f),b=Mt(c.mul(f),y),g=Mt(b.mul(new ku(1e6)),new ku(1e6).sub(n)),P=g.sub(b),h=new fs(f.toString()).div(10**m).div(new fs(g.toString()).div(10**l)),B=p.isZero()?0:h.sub(p).div(p).abs().toNumber();return{amountRealOut:f,amountIn:g,amountInWithoutFee:b,tradeFee:P,priceImpact:B}}};import tt from"bn.js";import{PublicKey as nr,TransactionInstruction as wi,Keypair as yb,SystemProgram as bb}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as ym,TOKEN_2022_PROGRAM_ID as Tu,TOKEN_PROGRAM_ID as $n}from"@solana/spl-token";var sb=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),ab=Buffer.from("amm_config","utf8"),ub=Buffer.from("pool","utf8"),cb=Buffer.from("pool_lp_mint","utf8"),lb=Buffer.from("pool_vault","utf8"),mb=Buffer.from("observation","utf8");function Yi(o){return oe([sb],o)}function nC(o,e){return oe([ab,pb(e)],o)}function hu(o,e,t,n){return oe([ub,e.toBuffer(),t.toBuffer(),n.toBuffer()],o)}function db(o,e){return oe([cb,e.toBuffer()],o)}function pm(o,e,t){return oe([lb,e.toBuffer(),t.toBuffer()],o)}function er(o,e){return oe([mb,e.toBuffer()],o)}function pb(o){let e=new ArrayBuffer(2);return new DataView(e).setUint16(0,o,!1),new Uint8Array(e)}function fm({poolId:o,programId:e,configId:t,mintA:n,mintB:i}){let r=Yi(e).publicKey,s=o||hu(e,t,n,i).publicKey,a=db(e,s).publicKey,c=pm(e,s,n).publicKey,u=pm(e,s,i).publicKey,l=er(e,s).publicKey;return{poolId:s,configId:t,authority:r,lpMint:a,vaultA:c,vaultB:u,observationId:l}}var fb=Buffer.from("locked_liquidity","utf8");function tr(o,e){return oe([fb,e.toBuffer()],o)}var gb=Pe("Raydium_cpmm"),ki={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],lockCpLiquidity:[216,157,29,78,38,51,31,26],collectCpFee:[8,30,51,199,209,184,247,133]};function bm(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,h){let B=E([w("amountMaxA"),w("amountMaxB"),w("openTime")]),T=hu(o,t,r,s).publicKey,k=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!i.equals(T),isWritable:!0},{pubkey:r,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:$n,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:ym,isSigner:!1,isWritable:!1},{pubkey:Kr,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1}],S=Buffer.alloc(B.span);return B.encode({amountMaxA:g,amountMaxB:P,openTime:h},S),new wi({keys:k,programId:o,data:Buffer.from([...ki.initialize,...S])})}function gm(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f){let y=E([w("lpAmount"),w("amountMaxA"),w("amountMaxB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:$n,isSigner:!1,isWritable:!1},{pubkey:Tu,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(y.span);return gb.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:p.toString(),amountMaxB:f.toString()}),y.encode({lpAmount:d,amountMaxA:p,amountMaxB:f},g),new wi({keys:b,programId:o,data:Buffer.from([...ki.deposit,...g])})}function Am(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f){let y=E([w("lpAmount"),w("amountMinA"),w("amountMinB")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:$n,isSigner:!1,isWritable:!1},{pubkey:Tu,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:gn,isSigner:!1,isWritable:!1}],g=Buffer.alloc(y.span);return y.encode({lpAmount:d,amountMinA:p,amountMinB:f},g),new wi({keys:b,programId:o,data:Buffer.from([...ki.withdraw,...g])})}function bs(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f,y){let b=E([w("amountIn"),w("amounOutMin")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,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}],P=Buffer.alloc(b.span);return b.encode({amountIn:f,amounOutMin:y},P),new wi({keys:g,programId:o,data:Buffer.from([...ki.swapBaseInput,...P])})}function Pm(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f,y){let b=E([w("amountInMax"),w("amountOut")]),g=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,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}],P=Buffer.alloc(b.span);return b.encode({amountInMax:f,amountOut:y},P),new wi({keys:g,programId:o,data:Buffer.from([...ki.swapBaseOutput,...P])})}async function wm(o){var b;let{ownerInfo:e,poolInfo:t,poolKeys:n,feeNftOwner:i,getEphemeralSigners:r}=o,s=[],[a,c]=[new nr(t.id),new nr(t.lpMint.address)],u;if(r)u=new nr((await r(1))[0]);else{let g=yb.generate();s.push(g),u=g.publicKey}let{publicKey:l}=Z(i,u,$n),{publicKey:m}=Rn(u),{publicKey:d}=tr(o.lockProgram,u),{publicKey:p}=Z(e.wallet,c,$n),{publicKey:f}=Z(o.lockAuthProgram,c,$n),y=Ab({programId:o.lockProgram,auth:o.lockAuthProgram,payer:e.feePayer,liquidityOwner:e.wallet,nftOwner:i,nftMint:u,nftAccount:l,poolId:a,lockPda:d,mintLp:c,userLpVault:p,lockLpVault:f,poolVaultA:new nr(n.vault.A),poolVaultB:new nr(n.vault.B),metadataAccount:m,lpAmount:o.lpAmount,withMetadata:(b=o.withMetadata)!=null?b:!0});return{address:{nftMint:u,nftAccount:l,metadataAccount:m,lockPda:d,userLpVault:p,lockLpVault:f},instructions:[y],signers:s,instructionTypes:[X.CpmmLockLp],lookupTableAddress:[]}}function Ab({programId:o,auth:e,payer:t,liquidityOwner:n,nftOwner:i,nftMint:r,nftAccount:s,poolId:a,lockPda:c,mintLp:u,userLpVault:l,lockLpVault:m,poolVaultA:d,poolVaultB:p,metadataAccount:f,lpAmount:y,withMetadata:b}){let g=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!0,isWritable:!0},{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:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:bb.programId,isSigner:!1,isWritable:!1},{pubkey:$n,isSigner:!1,isWritable:!1},{pubkey:ym,isSigner:!1,isWritable:!1},{pubkey:sn,isSigner:!1,isWritable:!1}],P=E([w("lpAmount"),Xe("withMetadata")]),h=Buffer.alloc(P.span);P.encode({lpAmount:y,withMetadata:b},h);let B=Buffer.from([...ki.lockCpLiquidity,...h]);return new wi({keys:g,programId:o,data:B})}function Iu({programId:o,nftOwner:e,auth:t,nftAccount:n,lockPda:i,poolId:r,mintLp:s,userVaultA:a,userVaultB:c,poolVaultA:u,poolVaultB:l,mintA:m,mintB:d,lockLpVault:p,lpFeeAmount:f,cpmmProgram:y,cpmmAuthProgram:b}){let g=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:y!=null?y:go,isSigner:!1,isWritable:!1},{pubkey:b!=null?b:ca,isSigner:!1,isWritable:!1},{pubkey:r,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:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:$n,isSigner:!1,isWritable:!1},{pubkey:Tu,isSigner:!1,isWritable:!1},{pubkey:gn,isSigner:!1,isWritable:!1}],P=E([w("lpFeeAmount")]),h=Buffer.alloc(P.span);P.encode({lpFeeAmount:f},h);let B=Buffer.from([...ki.collectCpFee,...h]);return new wi({keys:g,programId:o,data:B})}var km=E([Re(8),q("bump"),Xe("disableCreatePool"),Dt("index"),w("tradeFeeRate"),w("protocolFeeRate"),w("fundFeeRate"),w("createPoolFee"),O("protocolOwner"),O("fundOwner"),H(w(),16)]),gs=E([Re(8),O("configId"),O("poolCreator"),O("vaultA"),O("vaultB"),O("mintLp"),O("mintA"),O("mintB"),O("mintProgramA"),O("mintProgramB"),O("observationId"),q("bump"),q("status"),q("lpDecimals"),q("mintDecimalA"),q("mintDecimalB"),w("lpAmount"),w("protocolFeesMintA"),w("protocolFeesMintB"),w("fundFeesMintA"),w("fundFeesMintB"),w("openTime"),H(w(),32)]);var ir=class extends De{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 Fe(this.scope.connection,e.map(m=>({pubkey:new Q(m)}))),i={},r=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=gs.decode(d.accountInfo.data);i[String(e[m])]=U(v({},p),{programId:d.accountInfo.owner}),r.add(String(p.configId)),s.push(p.vaultA,p.vaultB)}let a={};if(t){let m=[...r],d=await Fe(this.scope.connection,m.map(p=>({pubkey:new Q(p)})));for(let p=0;p<m.length;p++){let f=d[p].accountInfo;if(f===null)throw Error("fetch pool config error: "+m[p]);a[m[p]]=km.decode(f.data)}}let c={},u=await Fe(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 tt(Pb.decode(d.data).amount.toString())}let l={};for(let[m,d]of Object.entries(i)){let p=c[d.vaultA.toString()].sub(d.protocolFeesMintA).sub(d.fundFeesMintA),f=c[d.vaultB.toString()].sub(d.protocolFeesMintB).sub(d.fundFeesMintB);l[m]=U(v({},d),{baseReserve:p,quoteReserve:f,vaultAAmount:c[d.vaultA.toString()],vaultBAmount:c[d.vaultB.toString()],configInfo:a[d.configId.toString()],poolPrice:new N(f.toString()).div(new N(10).pow(d.mintDecimalB)).div(new N(p.toString()).div(new N(10).pow(d.mintDecimalA)))})}return l}toComputePoolInfos({pools:e,mintInfos:t}){return Object.keys(e).reduce((n,i)=>{var c,u,l,m;let r=e[i],[s,a]=[r.mintA.toBase58(),r.mintB.toBase58()];return U(v({},n),{[i]:U(v({},r),{id:new Q(i),configInfo:r.configInfo,version:7,authority:Yi(r.programId).publicKey,mintA:Bt({address:s,decimals:r.mintDecimalA,programId:r.mintProgramA.toBase58(),extensions:{feeConfig:(c=t[s])!=null&&c.feeConfig?Hn((u=t[s])==null?void 0:u.feeConfig):void 0}}),mintB:Bt({address:a,decimals:r.mintDecimalB,programId:r.mintProgramB.toBase58(),extensions:{feeConfig:(l=t[a])!=null&&l.feeConfig?Hn((m=t[a])==null?void 0:m.feeConfig):void 0}})})})},{})}async getPoolInfoFromRpc(e){let t=await this.getRpcPoolInfo(e,!0),n=await Si({connection:this.scope.connection,mints:[t.mintA,t.mintB]}),i=Bt({address:t.mintA.toBase58(),decimals:t.mintDecimalA,programId:t.mintProgramA.toBase58(),extensions:{feeConfig:n[t.mintA.toBase58()].feeConfig?Hn(n[t.mintA.toBase58()].feeConfig):void 0}}),r=Bt({address:t.mintB.toBase58(),decimals:t.mintDecimalB,programId:t.mintProgramB.toBase58(),extensions:{feeConfig:n[t.mintB.toBase58()].feeConfig?Hn(n[t.mintB.toBase58()].feeConfig):void 0}}),s=Bt({address:t.mintLp.toBase58(),decimals:t.lpDecimals,programId:Gt.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:i,mintB:r,rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:t.poolPrice.toNumber(),mintAmountA:new N(t.vaultAAmount.toString()).div(10**i.decimals).toNumber(),mintAmountB:new N(t.vaultBAmount.toString()).div(10**r.decimals).toNumber(),feeRate:t.configInfo.tradeFeeRate.toNumber(),openTime:t.openTime.toString(),tvl:0,burnPercent:0,day:c,week:c,month:c,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0},poolKeys:{programId:t.programId.toBase58(),id:e,mintA:i,mintB:r,openTime:t.openTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},authority:Yi(t.programId).publicKey.toBase58(),mintLp:s,config:a,observationId:er(t.programId,new Q(e)).publicKey.toBase58()},rpcData:t}}async createPool(f){var y=f,{poolId:e,programId:t,poolFeeAccount:n,startTime:i,ownerInfo:r,associatedOnly:s=!1,checkCreateATAOwner:a=!1,txVersion:c,feeConfig:u,computeBudgetConfig:l,txTipConfig:m,feePayer:d}=y,p=ze(y,["poolId","programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","feeConfig","computeBudgetConfig","txTipConfig","feePayer"]);var V,Y,te;let b=r.feePayer||((V=this.scope.owner)==null?void 0:V.publicKey),g=new tt(new Q(p.mintA.address).toBuffer()).lte(new tt(new Q(p.mintB.address).toBuffer())),[P,h]=g?[p.mintA,p.mintB]:[p.mintB,p.mintA],[B,T]=g?[p.mintAAmount,p.mintBAmount]:[p.mintBAmount,p.mintAAmount],k=r.useSOLBalance&&P.address===As.toBase58(),S=r.useSOLBalance&&h.address===As.toBase58(),[x,K]=[new Q(P.address),new Q(h.address)],I=this.createTxBuilder(d),{account:C,instructionParams:M}=await this.scope.account.getOrCreateTokenAccount({mint:x,tokenProgram:P.programId,owner:this.scope.ownerPubKey,createInfo:k?{payer:b,amount:B}:void 0,notUseTokenAccount:k,skipCloseAccount:!k,associatedOnly:k?!1:s,checkCreateATAOwner:a});I.addInstruction(M||{});let{account:F,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({mint:new Q(h.address),tokenProgram:h.programId,owner:this.scope.ownerPubKey,createInfo:S?{payer:b,amount:T}:void 0,notUseTokenAccount:S,skipCloseAccount:!S,associatedOnly:S?!1:s,checkCreateATAOwner:a});if(I.addInstruction(R||{}),C===void 0||F===void 0)throw Error("you don't has some token account");let L=fm({poolId:e,programId:t,configId:new Q(u.id),mintA:x,mintB:K});return I.addInstruction({instructions:[bm(t,this.scope.ownerPubKey,new Q(u.id),L.authority,L.poolId,x,K,L.lpMint,C,F,Z(this.scope.ownerPubKey,L.lpMint).publicKey,L.vaultA,L.vaultB,n,new Q((Y=P.programId)!=null?Y:Gt),new Q((te=h.programId)!=null?te:Gt),L.observationId,B,T,i)],instructionTypes:[X.CpmmCreatePool]}),I.addCustomComputeBudget(l),I.addTipInstruction(m),I.versionBuild({txVersion:c,extInfo:{address:U(v({},L),{mintA:P,mintB:h,programId:t,poolFeeAccount:n,feeConfig:u})}})}async addLiquidity(e){let{poolInfo:t,poolKeys:n,inputAmount:i,baseIn:r,slippage:s,computeResult:a,computeBudgetConfig:c,txTipConfig:u,config:l,txVersion:m,feePayer:d}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),i.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:i.toString()});let{account:p}=this.scope,{bypassAssociatedCheck:f,checkCreateATAOwner:y}=v({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},l),b=a?void 0:await this.getRpcPoolInfo(t.id),{liquidity:g,inputAmountFee:P,anotherAmount:h}=a||this.computePairAmount({poolInfo:U(v({},t),{lpAmount:new N(b.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),baseReserve:b.baseReserve,quoteReserve:b.quoteReserve,slippage:new Ze(0),baseIn:r,epochInfo:await this.scope.fetchEpochInfo(),amount:new N(i.toString()).div(10**(r?t.mintA.decimals:t.mintB.decimals))}),B=h.amount,T=t.mintA.address===As.toString(),k=t.mintB.address===As.toString(),S=this.createTxBuilder(d),[x,K]=[new Q(t.mintA.address),new Q(t.mintB.address)],{account:I,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Q(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:T||(r?i:B).isZero()?{payer:this.scope.ownerPubKey,amount:r?i:B}:void 0,skipCloseAccount:!T,notUseTokenAccount:T,associatedOnly:!1,checkCreateATAOwner:y});S.addInstruction(C||{});let{account:M,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Q(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:k||(r?B:i).isZero()?{payer:this.scope.ownerPubKey,amount:r?B:i}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!1,checkCreateATAOwner:y});S.addInstruction(F||{}),!I&&!M&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",p.tokenAccounts);let R=await p.getCreatedTokenAccount({mint:new Q(t.lpMint.address)}),le=await p.handleTokenAccount({side:"out",amount:0,mint:new Q(t.lpMint.address),tokenAccount:R,bypassAssociatedCheck:f,checkCreateATAOwner:y}),{tokenAccount:L}=le,V=ze(le,["tokenAccount"]);S.addInstruction(V);let Y=n!=null?n:await this.getCpmmPoolKeys(t.id),te=new Ze(new tt(1)).sub(s);return S.addInstruction({instructions:[gm(new Q(t.programId),this.scope.ownerPubKey,new Q(Y.authority),new Q(t.id),L,I,M,new Q(Y.vault.A),new Q(Y.vault.B),x,K,new Q(t.lpMint.address),a?a==null?void 0:a.liquidity:te.mul(g).quotient,r?P.amount:B,r?B:P.amount)],instructionTypes:[X.CpmmAddLiquidity],lookupTableAddress:Y.lookupTableAccount?[Y.lookupTableAccount]:[]}),S.addCustomComputeBudget(c),S.addTipInstruction(u),S.versionBuild({txVersion:m})}async withdrawLiquidity(e){var V,Y;let{poolInfo:t,poolKeys:n,lpAmount:i,slippage:r,computeBudgetConfig:s,txTipConfig:a,txVersion:c,feePayer:u,closeWsol:l=!0}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let m=new Ze(new tt(1)).sub(r),d=await this.getRpcPoolInfo(t.id),[p,f]=[m.mul(i.mul(d.baseReserve).div(d.lpAmount)).quotient,m.mul(i.mul(d.quoteReserve).div(d.lpAmount)).quotient],y=await this.scope.fetchEpochInfo(),[b,g]=[Ce(p,t.mintA.extensions.feeConfig,y,!1),Ce(f,t.mintB.extensions.feeConfig,y,!1)],{account:P}=this.scope,h=this.createTxBuilder(u),[B,T]=[new Q(t.mintA.address),new Q(t.mintB.address)],k=B.equals($),S=T.equals($),x,K,{account:I,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Q(t.mintA.address),notUseTokenAccount:k,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(k&&l),associatedOnly:!k,checkCreateATAOwner:!1});x=I,C&&h.addInstruction(C);let{account:M,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Q(t.mintB.address),notUseTokenAccount:S,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(S&&l),associatedOnly:!S,checkCreateATAOwner:!1});K=M,F&&h.addInstruction(F),(!x||!K)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",P.tokenAccounts);let R=await P.getCreatedTokenAccount({mint:new Q(t.lpMint.address)});R||this.logAndCreateError("cannot found lp token account","tokenAccounts",P.tokenAccounts);let L=n!=null?n:await this.getCpmmPoolKeys(t.id);return h.addInstruction({instructions:[Am(new Q(t.programId),this.scope.ownerPubKey,new Q(L.authority),new Q(t.id),R,x,K,new Q(L.vault.A),new Q(L.vault.B),B,T,new Q(t.lpMint.address),i,p.sub((V=b.fee)!=null?V:new tt(0)),f.sub((Y=g.fee)!=null?Y:new tt(0)))],instructionTypes:[X.CpmmWithdrawLiquidity],lookupTableAddress:L.lookupTableAccount?[L.lookupTableAccount]:[]}),h.addCustomComputeBudget(s),h.addTipInstruction(a),h.versionBuild({txVersion:c})}async swap(e){var C,M,F,R,L,V;let{poolInfo:t,poolKeys:n,baseIn:i,fixedOut:r,inputAmount:s,swapResult:a,slippage:c=0,config:u,computeBudgetConfig:l,txTipConfig:m,txVersion:d,feePayer:p}=e,{bypassAssociatedCheck:f,checkCreateATAOwner:y,associatedOnly:b}=v({bypassAssociatedCheck:!1,checkCreateATAOwner:!1,associatedOnly:!0},u),g=this.createTxBuilder(p),[P,h]=[new Q(t.mintA.address),new Q(t.mintB.address)];r?a.sourceAmountSwapped=a.sourceAmountSwapped.mul(new tt((1+c)*1e4)).div(new tt(1e4)):a.destinationAmountSwapped=a.destinationAmountSwapped.mul(new tt((1-c)*1e4)).div(new tt(1e4));let B=t.mintA.address===$.toBase58(),T=t.mintB.address===$.toBase58(),{account:k,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:P,tokenProgram:new Q((C=t.mintA.programId)!=null?C:Gt),owner:this.scope.ownerPubKey,createInfo:B||!i?{payer:this.scope.ownerPubKey,amount:i?a.sourceAmountSwapped:0}:void 0,notUseTokenAccount:B,skipCloseAccount:!B,associatedOnly:B?!1:b,checkCreateATAOwner:y});S&&g.addInstruction(S);let{account:x,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({mint:h,tokenProgram:new Q((M=t.mintB.programId)!=null?M:Gt),owner:this.scope.ownerPubKey,createInfo:T||i?{payer:this.scope.ownerPubKey,amount:i?0:a.sourceAmountSwapped}:void 0,notUseTokenAccount:T,skipCloseAccount:!T,associatedOnly:T?!1:b,checkCreateATAOwner:y});K&&g.addInstruction(K),(!k||!x)&&this.logAndCreateError("user do not have token account",{mintA:t.mintA.symbol||t.mintA.address,mintB:t.mintB.symbol||t.mintB.address,mintATokenAcc:k,mintBTokenAcc:x,mintAUseSOLBalance:B,mintBUseSOLBalance:T,associatedOnly:b});let I=n!=null?n:await this.getCpmmPoolKeys(t.id);return g.addInstruction({instructions:[r?Pm(new Q(t.programId),this.scope.ownerPubKey,new Q(I.authority),new Q(I.config.id),new Q(t.id),i?k:x,i?x:k,new Q(I.vault[i?"A":"B"]),new Q(I.vault[i?"B":"A"]),new Q((L=t[i?"mintA":"mintB"].programId)!=null?L:Gt),new Q((V=t[i?"mintB":"mintA"].programId)!=null?V:Gt),i?P:h,i?h:P,er(new Q(t.programId),new Q(t.id)).publicKey,a.sourceAmountSwapped,a.destinationAmountSwapped):bs(new Q(t.programId),this.scope.ownerPubKey,new Q(I.authority),new Q(I.config.id),new Q(t.id),i?k:x,i?x:k,new Q(I.vault[i?"A":"B"]),new Q(I.vault[i?"B":"A"]),new Q((F=t[i?"mintA":"mintB"].programId)!=null?F:Gt),new Q((R=t[i?"mintB":"mintA"].programId)!=null?R:Gt),i?P:h,i?h:P,er(new Q(t.programId),new Q(t.id)).publicKey,s,a.destinationAmountSwapped)],instructionTypes:[r?X.CpmmSwapBaseOut:X.ClmmSwapBaseIn]}),g.addCustomComputeBudget(l),g.addTipInstruction(m),g.versionBuild({txVersion:d})}async lockLp(e){var d,p,f,y,b;let{poolInfo:t,lpAmount:n,computeBudgetConfig:i,txTipConfig:r,txVersion:s,feePayer:a,feeNftOwner:c}=e;n.isZero()&&this.logAndCreateError("lpAmount must greater than zero",{lpAmount:n.toString()});let u=this.createTxBuilder(a),l=(d=e.poolKeys)!=null?d:await this.getCpmmPoolKeys(t.id),m=await wm({poolInfo:t,poolKeys:l,ownerInfo:{wallet:this.scope.ownerPubKey,feePayer:(p=e.feePayer)!=null?p:this.scope.ownerPubKey},feeNftOwner:c!=null?c:this.scope.ownerPubKey,lockProgram:(f=e.programId)!=null?f:Ao,lockAuthProgram:(y=e.authProgram)!=null?y:Po,lpAmount:n,withMetadata:(b=e.withMetadata)!=null?b:!0,getEphemeralSigners:e.getEphemeralSigners});return u.addInstruction(m),u.addCustomComputeBudget(i),u.addTipInstruction(r),u.versionBuild({txVersion:s,extInfo:m.address})}async harvestLockLp(e){var M;let{poolInfo:t,lpFeeAmount:n,nftMint:i,programId:r=Ao,authProgram:s=Po,cpmmProgram:a,computeBudgetConfig:c,txTipConfig:u,txVersion:l,closeWsol:m=!0}=e;n.isZero()&&this.logAndCreateError("lpFeeAmount must greater than zero",{lpAmount:n.toString()});let d=e.feePayer||this.scope.ownerPubKey,p=this.createTxBuilder(d),[f,y]=[new Q(t.mintA.address),new Q(t.mintB.address)],b=f.equals($),g=y.equals($),P,h,{account:B,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new Q(t.mintA.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(b&&m),associatedOnly:!b,checkCreateATAOwner:!1});P=B,T&&p.addInstruction(T);let{account:k,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new Q(t.mintB.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(g&&m),associatedOnly:!g,checkCreateATAOwner:!1});h=k,S&&p.addInstruction(S),(!P||!h)&&this.logAndCreateError("cannot found target token accounts",{tokenAccountA:P,tokenAccountB:h});let x=(M=e.poolKeys)!=null?M:await this.getCpmmPoolKeys(t.id),{publicKey:K}=Z(d,i,Gt),{publicKey:I}=tr(r,i),{publicKey:C}=Z(s,new Q(t.lpMint.address),Gt);return p.addInstruction({instructions:[Iu({programId:r,nftOwner:this.scope.ownerPubKey,auth:s,nftMint:i,nftAccount:K,lockPda:I,poolId:new Q(t.id),mintLp:new Q(x.mintLp.address),userVaultA:P,userVaultB:h,poolVaultA:new Q(x.vault.A),poolVaultB:new Q(x.vault.B),mintA:f,mintB:y,lockLpVault:C,lpFeeAmount:n,cpmmProgram:a==null?void 0:a.programId,cpmmAuthProgram:a==null?void 0:a.authProgram})],instructionTypes:[X.CpmmCollectLockFee]}),p.addCustomComputeBudget(c),p.addTipInstruction(u),p.versionBuild({txVersion:l})}async harvestMultiLockLp(e){let{lockInfo:t,programId:n=Ao,authProgram:i=Po,cpmmProgram:r,computeBudgetConfig:s,txVersion:a,closeWsol:c=!0}=e,u=e.feePayer||this.scope.ownerPubKey,l=this.createTxBuilder(u),m={};return t.forEach(async d=>{var I;let{poolInfo:p,lpFeeAmount:f,nftMint:y}=d;if(f.isZero())return;let[b,g]=[new Q(p.mintA.address),new Q(p.mintB.address)],P=b.equals($),h=g.equals($),B=m[p.mintA.address],T=m[p.mintB.address];if(!B)if(P){let{account:C,instructionParams:M}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintA.programId,mint:new Q(p.mintA.address),notUseTokenAccount:!0,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!c,associatedOnly:!1,checkCreateATAOwner:!1});B=C,M&&l.addInstruction(M),m[p.mintA.address]=C}else{let C=new Q(p.mintA.address);B=this.scope.account.getAssociatedTokenAccount(C,new Q(p.mintA.programId)),l.addInstruction({instructions:[hm(this.scope.ownerPubKey,B,this.scope.ownerPubKey,C)]}),m[p.mintA.address]=B}if(!T)if(h){let{account:C,instructionParams:M}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintB.programId,mint:new Q(p.mintB.address),notUseTokenAccount:!0,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!c,associatedOnly:!1,checkCreateATAOwner:!1});T=C,M&&l.addInstruction(M),m[p.mintB.address]=C}else{let C=new Q(p.mintB.address);T=this.scope.account.getAssociatedTokenAccount(C,new Q(p.mintB.programId)),l.addInstruction({instructions:[hm(this.scope.ownerPubKey,T,this.scope.ownerPubKey,C)]}),m[p.mintB.address]=T}(!B||!T)&&this.logAndCreateError("cannot found target token accounts",{tokenAccountA:B,tokenAccountB:T});let k=(I=d.poolKeys)!=null?I:await this.getCpmmPoolKeys(p.id),{publicKey:S}=Z(u,y,Gt),{publicKey:x}=tr(n,y),{publicKey:K}=Z(i,new Q(p.lpMint.address),Gt);l.addInstruction({instructions:[Iu({programId:n,nftOwner:this.scope.ownerPubKey,auth:i,nftMint:y,nftAccount:S,lockPda:x,poolId:new Q(p.id),mintLp:new Q(k.mintLp.address),userVaultA:B,userVaultB:T,poolVaultA:new Q(k.vault.A),poolVaultB:new Q(k.vault.B),mintA:b,mintB:g,lockLpVault:K,lpFeeAmount:f,cpmmProgram:r==null?void 0:r.programId,cpmmAuthProgram:r==null?void 0:r.authProgram})],instructionTypes:[X.CpmmCollectLockFee]})}),a===0?l.sizeCheckBuildV0({computeBudgetConfig:s}):l.sizeCheckBuild({computeBudgetConfig:s})}computeSwapAmount({pool:e,amountIn:t,outputMint:n,slippage:i}){let r=n.toString()===e.mintB.address,s=ys.swap(t,r?e.baseReserve:e.quoteReserve,r?e.quoteReserve:e.baseReserve,e.configInfo.tradeFeeRate),a=new N(s.destinationAmountSwapped.toString()).div(s.sourceAmountSwapped.toString()),c=s.destinationAmountSwapped.mul(new tt((1-i)*1e4)).div(new tt(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:i,slippage:r,epochInfo:s,baseIn:a}){var B,T,k,S,x,K,I,C,M;let c=1-Number(r.toSignificant())/100,u=new tt(new N(i).mul(10**e[a?"mintA":"mintB"].decimals).mul(c).toFixed(0)),l=Ce(u,e[a?"mintA":"mintB"].extensions.feeConfig,s,!1),m=u.sub((B=l.fee)!=null?B:new tt(0)),d=new tt(new N(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,N.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=(T=l.fee)==null?void 0:T.toString())!=null?k:0,"anotherToken:",a?e.mintB.symbol:e.mintA.symbol,"slippage:",`${r.toSignificant()}%`);let p=a?"base":"quote";this.logDebug("input side:",p);let f=m.mul(d).div(p==="base"?t:n),y={amount:ot,fee:void 0,expirationTime:void 0};if(!m.isZero()){let F=wb(f,t,n,d);this.logDebug("lpAmountData:",{amountA:F.amountA.toString(),amountB:F.amountB.toString()}),y=Ce(F[a?"amountB":"amountA"],e[a?"mintB":"mintA"].extensions.feeConfig,s,!0)}let b=new Ze(new tt(1)).add(r),g=new Ze(new tt(1)).sub(r),P=Ce(b.mul(y.amount.sub((S=y.fee)!=null?S:new tt(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,s,!0),h=Ce(g.mul(y.amount.sub((x=y.fee)!=null?x:new tt(0))).quotient,e[a?"mintB":"mintA"].extensions.feeConfig,s,!0);return this.logDebug("anotherAmount:",y.amount.toString(),"anotherAmountFee:",(I=(K=y.fee)==null?void 0:K.toString())!=null?I:0,"maxAnotherAmount:",P.amount.toString(),"maxAnotherAmountFee:",(M=(C=P.fee)==null?void 0:C.toString())!=null?M:0),{inputAmountFee:l,anotherAmount:y,maxAnotherAmount:P,minAnotherAmount:h,liquidity:f}}};function wb(o,e,t,n){let i=o.mul(e).div(n);!i.isZero()&&!o.mul(e).mod(n).isZero()&&(i=i.add(new tt(1)));let r=o.mul(t).div(n);return!r.isZero()&&!o.mul(t).mod(n).isZero()&&(r=r.add(new tt(1))),{amountA:i,amountB:r}}import{PublicKey as hi}from"@solana/web3.js";import{createTransferInstruction as Km,TOKEN_PROGRAM_ID as nt,TOKEN_2022_PROGRAM_ID as ks}from"@solana/spl-token";import hs from"bn.js";var Tm={[Fr.toBase58()]:3},Im={3:Fr};var Bu=E([Re(5),Re(8),O("ownAddress"),w("vaultSignerNonce"),O("baseMint"),O("quoteMint"),O("baseVault"),w("baseDepositsTotal"),w("baseFeesAccrued"),O("quoteVault"),w("quoteDepositsTotal"),w("quoteFeesAccrued"),w("quoteDustThreshold"),O("requestQueue"),O("eventQueue"),O("bids"),O("asks"),w("baseLotSize"),w("quoteLotSize"),w("feeRateBps"),w("referrerRebatesAccrued"),Re(7)]),Bm={3:Bu};import{PublicKey as xm}from"@solana/web3.js";var Ps=Pe("Serum"),ws=class{static getProgramId(e){let t=Im[e];return t||Ps.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=Tm[t];return n||Ps.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=Bm[e];return t||Ps.logWithError(!!t,"invalid version","version",e),t}static getLayouts(e){return{state:this.getStateLayout(e)}}static getAssociatedAuthority({programId:e,marketId:t}){let n=[t.toBuffer()],i=0,r;for(;i<100;){try{let s=n.concat(Buffer.from([i]),Buffer.alloc(7));r=xm.createProgramAddressSync(s,e)}catch(s){if(s instanceof TypeError)throw s;i++;continue}return{publicKey:r,nonce:i}}return Ps.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:xm.default,nonce:i}}};import{PublicKey as _,SystemProgram as or,TransactionInstruction as rr}from"@solana/web3.js";import Pn from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as xu,TOKEN_2022_PROGRAM_ID as Su,TOKEN_PROGRAM_ID as Jn}from"@solana/spl-token";function h0(o,e,t,n,i,r,s,a,c,u,l,m){let d=E([q("instruction"),w("amountIn"),w("amountOut")]),p=[{pubkey:or.programId,isSigner:!1,isWritable:!1},{pubkey:Jn,isSigner:!1,isWritable:!1},{pubkey:new _(t.programId),isSigner:!1,isWritable:!1},{pubkey:new _(t.id),isSigner:!1,isWritable:!0},{pubkey:new _(n.id),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let y=Ve(t);p.push({pubkey:y.config.id,isSigner:!1,isWritable:!1},{pubkey:y.id,isSigner:!1,isWritable:!0},{pubkey:y.mintA.address.equals(c)?y.vault.A:y.vault.B,isSigner:!1,isWritable:!0},{pubkey:y.mintA.address.equals(c)?y.vault.B:y.vault.A,isSigner:!1,isWritable:!0},{pubkey:y.id,isSigner:!1,isWritable:!0},...m.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let y=Ve(t);p.push({pubkey:y.authority,isSigner:!1,isWritable:!1},{pubkey:y.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:y.id,isSigner:!1,isWritable:!0},{pubkey:new _("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:y.openOrders,isSigner:!1,isWritable:!0},{pubkey:y.vault.A,isSigner:!1,isWritable:!0},{pubkey:y.vault.B,isSigner:!1,isWritable:!0},{pubkey:y.marketId,isSigner:!1,isWritable:!0},{pubkey:y.marketBids,isSigner:!1,isWritable:!0},{pubkey:y.marketAsks,isSigner:!1,isWritable:!0},{pubkey:y.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:y.id,isSigner:!1,isWritable:!0},{pubkey:y.id,isSigner:!1,isWritable:!0})}else{let y=Ve(t);p.push({pubkey:y.authority,isSigner:!1,isWritable:!1},{pubkey:y.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:y.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:y.openOrders,isSigner:!1,isWritable:!0},{pubkey:y.vault.A,isSigner:!1,isWritable:!0},{pubkey:y.vault.B,isSigner:!1,isWritable:!0},{pubkey:y.marketId,isSigner:!1,isWritable:!0},{pubkey:y.marketBids,isSigner:!1,isWritable:!0},{pubkey:y.marketAsks,isSigner:!1,isWritable:!0},{pubkey:y.marketEventQueue,isSigner:!1,isWritable:!0},...y.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:y.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:y.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:y.id,isSigner:!1,isWritable:!0},{pubkey:y.id,isSigner:!1,isWritable:!0}])}let f=Buffer.alloc(d.span);return d.encode({instruction:4,amountIn:u,amountOut:l},f),new rr({keys:p,programId:o,data:f})}function T0(o,e,t,n,i,r,s,a,c,u){let l=E([q("instruction")]),m=[{pubkey:or.programId,isSigner:!1,isWritable:!1},{pubkey:Jn,isSigner:!1,isWritable:!1},{pubkey:new _(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new _(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new _(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let p=Ve(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(f=>({pubkey:f,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let p=Ve(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 _("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=Ve(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 rr({keys:m,programId:o,data:d})}function kb(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f){var k;let y=[],b=[A({pubkey:Jn,isWritable:!1}),A({pubkey:Su,isWritable:!1}),A({pubkey:xu,isWritable:!1}),A({pubkey:or.programId,isWritable:!1}),A({pubkey:e,isSigner:!0})];b.push(A({pubkey:t})),b.push(A({pubkey:i}));let g=[c,u],P=[l,m],h=[r,s,a];for(let S=0;S<g.length;S++){let x=g[S],K=h[S]===x.mintA.address;if(b.push(A({pubkey:new _(x.programId),isWritable:!1})),S===g.length-1?b.push(A({pubkey:i})):b.push(A({pubkey:n})),b.push(A({pubkey:new _(h[S])})),b.push(A({pubkey:new _(h[S+1])})),x.version===6){let I=P[S];b.push(A({pubkey:new _(I.config.id)})),b.push(A({pubkey:new _(I.id)})),b.push(A({pubkey:new _(K?I.vault.A:I.vault.B)})),b.push(A({pubkey:new _(K?I.vault.B:I.vault.A)})),b.push(A({pubkey:new _(x.observationId)})),b.push(A({pubkey:gn})),b.push(A({pubkey:et(new _(x.programId),new _(x.id)).publicKey})),y.push(Ku(x.sqrtPriceX64.toString(),K));for(let C of(k=f[S])!=null?k:[])b.push(A({pubkey:new _(C)}))}else if(x.version===5){let I=P[S];b.push(A({pubkey:new _(I.id)})),b.push(A({pubkey:new _(I.authority),isWritable:!1})),b.push(A({pubkey:new _(I.marketProgramId)})),b.push(A({pubkey:new _(I.marketAuthority)})),b.push(A({pubkey:Er,isWritable:!1})),b.push(A({pubkey:new _(I.openOrders)})),b.push(A({pubkey:new _(I.vault.A)})),b.push(A({pubkey:new _(I.vault.B)})),b.push(A({pubkey:new _(I.id)})),b.push(A({pubkey:new _(I.id)})),b.push(A({pubkey:new _(I.id)})),b.push(A({pubkey:new _(I.id)})),b.push(A({pubkey:new _(I.id)})),b.push(A({pubkey:new _(I.id)})),b.push(A({pubkey:new _(I.marketId)})),b.push(A({pubkey:new _(I.marketBids)})),b.push(A({pubkey:new _(I.marketAsks)})),b.push(A({pubkey:new _(I.marketEventQueue)})),b.push(A({pubkey:new _(I.marketBaseVault)})),b.push(A({pubkey:new _(I.marketQuoteVault)}))}else if(x.version===4){let I=P[S],C=x.status!==1;b.push(A({pubkey:new _(I.id)})),b.push(A({pubkey:new _(I.authority),isWritable:!1})),b.push(A({pubkey:new _(C?I.id:I.marketProgramId)})),b.push(A({pubkey:new _(C?I.id:I.marketAuthority)})),b.push(A({pubkey:new _(C?I.id:I.openOrders)})),b.push(A({pubkey:new _(I.vault.A)})),b.push(A({pubkey:new _(I.vault.B)})),b.push(A({pubkey:new _(C?I.id:I.marketId)})),b.push(A({pubkey:new _(C?I.id:I.marketBids)})),b.push(A({pubkey:new _(C?I.id:I.marketAsks)})),b.push(A({pubkey:new _(C?I.id:I.marketEventQueue)})),b.push(A({pubkey:new _(C?I.id:I.marketBaseVault)})),b.push(A({pubkey:new _(C?I.id:I.marketQuoteVault)}))}else if(x.version===7){let I=P[S];b.push(A({pubkey:new _(I.authority)})),b.push(A({pubkey:new _(I.config.id)})),b.push(A({pubkey:new _(I.id)})),b.push(A({pubkey:new _(K?I.vault.A:I.vault.B)})),b.push(A({pubkey:new _(K?I.vault.B:I.vault.A)})),b.push(A({pubkey:new _(x.observationId)}))}else throw Error("pool type error")}let B=E([q("insId"),w("amountIn"),w("amountOut"),H(ne(),y.length,"clmmPriceLimit")]),T=Buffer.alloc(B.span);return B.encode({insId:0,amountIn:d,amountOut:p,clmmPriceLimit:y},T),new rr({keys:b,programId:o,data:T})}function Ku(o,e){if(o)if(e){let t=new Pn(o).div(new Pn(25));return t.gt($r)?t:$r}else{let t=new Pn(o).mul(new Pn(25));return t.lt(Jr)?t:Jr}else return e?$r:Jr}function Sm({routeProgram:o,ownerInfo:e,inputMint:t,swapInfo:n}){var i,r,s,a,c,u,l;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let m=n.poolKey[0],d=Ve(m),p=t.equals(d.mintA.address)?Ht.add(Wt):jt.sub(Wt);return Me.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((r=(i=n.minAmountOut.fee)==null?void 0:i.raw)!=null?r:new Pn(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:[bs(m.programId,e.wallet,m.authority,m.configId,m.id,e.sourceToken,e.destinationToken,d?m.vaultA:m.vaultB,d?m.vaultB:m.vaultA,d?m.mintProgramA:m.mintProgramB,d?m.mintProgramB:m.mintProgramA,new _(m[d?"mintA":"mintB"].address),new _(m[d?"mintB":"mintA"].address),m.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw)],lookupTableAddress:[],instructionTypes:[d?X.CpmmSwapBaseIn:X.CpmmSwapBaseOut],address:{}}}else{let m=n.poolKey[0];return{signers:[],instructions:[ss({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 Pn(0)),fixedSide:"in"})],lookupTableAddress:m.lookupTableAccount?[m.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?X.AmmV5SwapBaseIn:X.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let m=n.poolInfo[0],d=n.poolInfo[1],p=n.poolKey[0],f=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[kb(o,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),n.outputMint.toString(),m,d,p,f,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((l=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?l:new Pn(0)),n.remainingAccounts)],instructionTypes:[X.RouteSwap],lookupTableAddress:[p.lookupTableAccount,f.lookupTableAccount].filter(y=>y!==void 0),address:{}}}else throw Error("route type error")}function I0({programId:o,wallet:e,amount:t,inputAccount:n,outputAccount:i,routeInfo:r,poolKeys:s}){var d;if(r.success===!1)throw Error("route info error");let a=[],c=[A({pubkey:Jn,isWritable:!1}),A({pubkey:Su,isWritable:!1}),A({pubkey:xu,isWritable:!1}),A({pubkey:or.programId,isWritable:!1}),A({pubkey:e,isSigner:!0})],u={[r.data.inputMint]:n,[r.data.outputMint]:i};c.push(A({pubkey:u[r.data.inputMint]})),c.push(A({pubkey:u[r.data.outputMint]}));for(let p=0;p<s.length;p++){let f=r.data.routePlan[p],y=s[p],b=f.inputMint===y.mintA.address;if(c.push(A({pubkey:new _(y.programId),isWritable:!1})),p===s.length-1)c.push(A({pubkey:u[f.outputMint]}));else{let g=f.outputMint;if(u[g]===void 0){let P=Z(e,new _(g),y.programId===St.CLMM_PROGRAM_ID.toBase58()||y.programId===St.CREATE_CPMM_POOL_PROGRAM.toBase58()?new _(b?y.mintB.programId:y.mintA.programId):Jn).publicKey;u[g]=P}c.push(A({pubkey:u[g]}))}if(c.push(A({pubkey:new _(f.inputMint)})),c.push(A({pubkey:new _(f.outputMint)})),y.programId===St.CLMM_PROGRAM_ID.toBase58()){let g=y;c.push(A({pubkey:new _(g.config.id)})),c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(b?g.vault.A:g.vault.B)})),c.push(A({pubkey:new _(b?g.vault.B:g.vault.A)})),c.push(A({pubkey:new _(g.observationId)})),c.push(A({pubkey:gn,isWritable:!1})),c.push(A({pubkey:new _(g.exBitmapAccount)})),a.push(Ku(f.lastPoolPriceX64,b));for(let P of(d=f.remainingAccounts)!=null?d:[])c.push(A({pubkey:new _(P)}))}else if(y.programId===St.AMM_STABLE.toBase58()){let g=y;c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(g.authority),isWritable:!1})),c.push(A({pubkey:new _(g.marketProgramId),isWritable:!1})),c.push(A({pubkey:new _(g.marketAuthority),isWritable:!1})),c.push(A({pubkey:Er,isWritable:!1})),c.push(A({pubkey:new _(g.openOrders)})),c.push(A({pubkey:new _(g.vault.A)})),c.push(A({pubkey:new _(g.vault.B)})),c.push(A({pubkey:new _(g.marketId)})),c.push(A({pubkey:new _(g.marketBids)})),c.push(A({pubkey:new _(g.marketAsks)})),c.push(A({pubkey:new _(g.marketEventQueue)})),c.push(A({pubkey:new _(g.marketBaseVault)})),c.push(A({pubkey:new _(g.marketQuoteVault)}))}else if(y.programId===St.AMM_V4.toBase58()){let g=y;c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(g.authority),isWritable:!1})),c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(g.vault.A)})),c.push(A({pubkey:new _(g.vault.B)})),c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(g.id)}))}else if(y.programId===St.CREATE_CPMM_POOL_PROGRAM.toBase58()){let g=y;c.push(A({pubkey:new _(g.authority)})),c.push(A({pubkey:new _(g.config.id)})),c.push(A({pubkey:new _(g.id)})),c.push(A({pubkey:new _(b?g.vault.A:g.vault.B)})),c.push(A({pubkey:new _(b?g.vault.B:g.vault.A)})),c.push(A({pubkey:new _(g.observationId)}))}else throw Error("pool type error")}let l=E([q("insId"),w("amountIn"),w("amountOut"),H(ne(),a.length,"clmmPriceLimit")]),m=Buffer.alloc(l.span);return l.encode({insId:0,amountIn:t,amountOut:new Pn(r.data.otherAmountThreshold),clmmPriceLimit:a},m),new rr({keys:c,programId:o,data:m})}function B0({programId:o,wallet:e,inputAccount:t,outputAccount:n,routeInfo:i,poolKeys:r}){var m;if(i.success===!1)throw Error("route info error");let s=[],a=[A({pubkey:Jn,isWritable:!1}),A({pubkey:Su,isWritable:!1}),A({pubkey:xu,isWritable:!1}),A({pubkey:or.programId,isWritable:!1}),A({pubkey:e,isSigner:!0})],c={[i.data.inputMint]:t,[i.data.outputMint]:n};for(let d=r.length-1;d>=0;d--){let p=i.data.routePlan[d],f=r[d],y=p.inputMint===f.mintA.address;if(a.push(A({pubkey:new _(f.programId)})),d===0)a.push(A({pubkey:c[p.inputMint]}));else{let b=p.inputMint;if(c[b]===void 0){let g=Z(e,new _(b),f.programId===St.CLMM_PROGRAM_ID.toBase58()||f.programId===St.CREATE_CPMM_POOL_PROGRAM.toBase58()?new _(y?f.mintA.programId:f.mintB.programId):Jn).publicKey;c[b]=g}a.push(A({pubkey:c[b]}))}if(d===r.length-1)a.push(A({pubkey:c[p.outputMint]}));else{let b=p.outputMint;if(c[b]===void 0){let g=Z(e,new _(b),f.programId===St.CLMM_PROGRAM_ID.toBase58()||f.programId===St.CREATE_CPMM_POOL_PROGRAM.toBase58()?new _(y?f.mintB.programId:f.mintA.programId):Jn).publicKey;c[b]=g}a.push(A({pubkey:c[b]}))}if(a.push(A({pubkey:new _(p.inputMint)})),a.push(A({pubkey:new _(p.outputMint)})),f.programId===St.CLMM_PROGRAM_ID.toBase58()){let b=f;a.push(A({pubkey:new _(b.config.id)})),a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(y?b.vault.A:b.vault.B)})),a.push(A({pubkey:new _(y?b.vault.B:b.vault.A)})),a.push(A({pubkey:new _(b.observationId)})),a.push(A({pubkey:gn,isWritable:!1})),a.push(A({pubkey:new _(b.exBitmapAccount)})),s.push(Ku(p.lastPoolPriceX64,y));for(let g of(m=p.remainingAccounts)!=null?m:[])a.push(A({pubkey:new _(g)}))}else if(f.programId===St.AMM_STABLE.toBase58()){let b=f;a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(b.authority),isWritable:!1})),a.push(A({pubkey:new _(b.marketProgramId),isWritable:!1})),a.push(A({pubkey:new _(b.marketAuthority),isWritable:!1})),a.push(A({pubkey:Er,isWritable:!1})),a.push(A({pubkey:new _(b.openOrders)})),a.push(A({pubkey:new _(b.vault.A)})),a.push(A({pubkey:new _(b.vault.B)})),a.push(A({pubkey:new _(b.marketId)})),a.push(A({pubkey:new _(b.marketBids)})),a.push(A({pubkey:new _(b.marketAsks)})),a.push(A({pubkey:new _(b.marketEventQueue)})),a.push(A({pubkey:new _(b.marketBaseVault)})),a.push(A({pubkey:new _(b.marketQuoteVault)}))}else if(f.programId===St.AMM_V4.toBase58()){let b=f;a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(b.authority),isWritable:!1})),a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(b.vault.A)})),a.push(A({pubkey:new _(b.vault.B)})),a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(b.id)}))}else if(f.programId===St.CREATE_CPMM_POOL_PROGRAM.toBase58()){let b=f;a.push(A({pubkey:new _(b.authority)})),a.push(A({pubkey:new _(b.config.id)})),a.push(A({pubkey:new _(b.id)})),a.push(A({pubkey:new _(y?b.vault.A:b.vault.B)})),a.push(A({pubkey:new _(y?b.vault.B:b.vault.A)})),a.push(A({pubkey:new _(b.observationId)}))}else throw Error("pool type error")}let u=E([q("insId"),w("amountIn"),w("amountOut"),H(ne(),s.length,"clmmPriceLimit")]),l=Buffer.alloc(u.span);return u.encode({insId:1,amountIn:new Pn(i.data.otherAmountThreshold),amountOut:new Pn(i.data.outputAmount),clmmPriceLimit:s},l),new rr({keys:a,programId:o,data:l})}var Mn=new hs(0),sr=class extends De{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:i=1,feePayer:r}=e,s=await this.getWSolAccounts(),a=this.createTxBuilder(r);a.addCustomComputeBudget(e.computeBudgetConfig);let c=ee(t);for(let u=0;u<s.length;u++)c.gte(s[u].amount)?(a.addInstruction({instructions:[Kn({tokenAccount:s[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),c.sub(s[u].amount)):a.addInstruction({instructions:[Kn({tokenAccount:s[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]});return a.versionBuild({txVersion:i})}async wrapWSol(e,t,n,i){let r=this.createTxBuilder(i),s=await zn({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return r.addInstruction(s),r.versionBuild({txVersion:n!=null?n:1})}async swap({swapInfo:e,swapPoolKeys:t,ownerInfo:n,computeBudgetConfig:i,routeProgram:r,txVersion:s,feePayer:a}){let c=this.createTxBuilder(a),u=e.amountIn,l=e.amountOut,m=u.amount.token.mint.equals($),d=l.amount.token.mint.equals($),p=u.amount.token.mint,f=l.amount.token.mint,{account:y,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.amount.token.isToken2022?ks:nt,mint:p,notUseTokenAccount:m,owner:this.scope.ownerPubKey,skipCloseAccount:!m,createInfo:m?{payer:this.scope.ownerPubKey,amount:u.amount.raw}:void 0,associatedOnly:m?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});if(b&&c.addInstruction(b),y===void 0)throw Error("input account check error");let g;if(e.routeType==="route"&&!d)g=this.scope.account.getAssociatedTokenAccount(f,l.amount.token.isToken2022?ks:nt);else{let{account:T,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:l.amount.token.isToken2022?ks:nt,mint:f,notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!0,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});g=T,k&&c.addInstruction(k)}d&&c.addInstruction({endInstructions:[Kn({owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,tokenAccount:g,programId:nt})],endInstructionTypes:[X.CloseAccount]});let P;if(e.routeType==="route"){let T=e.middleToken;P=this.scope.account.getAssociatedTokenAccount(T.mint,T.isToken2022?ks:nt)}let h=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),B=Sm({routeProgram:r,inputMint:p,swapInfo:U(v({},e),{poolInfo:[...e.poolInfoList],poolKey:h,outputMint:f}),ownerInfo:{wallet:this.scope.ownerPubKey,sourceToken:y,routeToken:P,destinationToken:g}});if(e.feeConfig!==void 0){let T=this.createTxBuilder();T.addInstruction({instructions:[Km(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[X.TransferAmount]}),T.addInstruction(B);let{transactions:k}=s===0?await T.sizeCheckBuildV0():await T.sizeCheckBuild();k.length<2&&c.addInstruction({instructions:[Km(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[X.TransferAmount]})}return c.addInstruction(B),s===0?c.sizeCheckBuildV0({computeBudgetConfig:i,address:B.address}):c.sizeCheckBuild({computeBudgetConfig:i,address:B.address})}async fetchRoutePoolBasicInfo(e){let{amm:t=yo,clmm:n=qn,cpmm:i=go}=e||{},r=await this.scope.connection.getProgramAccounts(t,{dataSlice:{offset:yi.offsetOf("baseMint"),length:64}}),s=E([O("baseMint"),O("quoteMint")]),a=r.map(p=>({id:p.pubkey,version:4,mintA:s.decode(p.account.data).baseMint,mintB:s.decode(p.account.data).quoteMint})),c=E([O("mintA"),O("mintB")]),l=(await this.scope.connection.getProgramAccounts(n,{filters:[{dataSize:pi.span}],dataSlice:{offset:pi.offsetOf("mintA"),length:64}})).map(p=>{let f=c.decode(p.account.data);return{id:p.pubkey,version:6,mintA:f.mintA,mintB:f.mintB}}),d=(await this.scope.connection.getProgramAccounts(i,{dataSlice:{offset:gs.offsetOf("mintA"),length:64}})).map(p=>{let f=c.decode(p.account.data);return{id:p.pubkey,version:7,mintA:f.mintA,mintB:f.mintB}});return{clmmPools:l,ammPools:a,cpmmPools:d}}getAllRoute({inputMint:e,outputMint:t,clmmPools:n,ammPools:i,cpmmPools:r}){e=e.toString()===hi.default.toString()?$:e,t=t.toString()===hi.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:nt,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:nt,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:nt,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:nt,in:[],out:[],mDecimals:0}),l[p].out.push(d)}}let m=[];for(let d of i)(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:nt,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:nt,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:nt,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:nt,in:[],out:[],mDecimals:0}),l[d.mintA.toBase58()].out.push(d));for(let d of r)(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:nt,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:nt,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:nt,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:nt,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 f of p.in)for(let y of p.out)f.version===6&&a[f.id.toString()]===void 0?a[f.id.toString()]=f:f.version===7&&c[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),y.version===6&&a[y.id.toString()]===void 0?a[y.id.toString()]=y:y.version===7&&c[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)}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 i=new Set([...e.needTickArray.map(y=>[y.mintA.toBase58(),y.mintB.toBase58()]).flat(),t.toString(),n.toString()]);console.log("fetching amm pools info, total: ",e.needSimulate.length);let r=await this.scope.liquidity.getRpcPoolInfos(e.needSimulate.map(y=>y.id)),s=us(r),a={};Object.values(s).forEach(y=>{i.delete(y.mintA.address),a[y.mintA.address]={address:new hi(y.mintA.address),programId:nt,mintAuthority:null,supply:BigInt(0),decimals:y.mintA.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0},i.delete(y.mintB.address),a[y.mintB.address]={address:new hi(y.mintB.address),programId:nt,mintAuthority:null,supply:BigInt(0),decimals:y.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(y=>y.id.toBase58()),!0);Object.values(c).forEach(y=>{let[b,g]=[y.mintA.toBase58(),y.mintB.toBase58()];y.mintProgramA.equals(nt)?(i.delete(b),a[b]={address:y.mintA,programId:y.mintProgramA,mintAuthority:null,supply:BigInt(0),decimals:y.mintDecimalA,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):i.add(b),y.mintProgramB.equals(nt)?(i.delete(g),a[g]={address:y.mintB,programId:y.mintProgramB,mintAuthority:null,supply:BigInt(0),decimals:y.mintDecimalB,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):i.add(g)}),console.log("fetching mints info, total: ",i.size);let u=await Si({connection:this.scope.connection,mints:Array.from(i).map(y=>new hi(y))});a=v(v({},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(y=>y.id)}),{computeClmmPoolInfo:d,computePoolTickData:p}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:m,mintInfos:a}),f=Object.keys(e.routePathDict).reduce((y,b)=>U(v({},y),{[b]:U(v({},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:r,ammSimulateCache:s,clmmPoolsRpcInfo:m,computeClmmPoolInfo:d,computePoolTickData:p,computeCpmmData:l,routePathDict:f}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:i,simulateCache:r,tickCache:s,slippage:a,chainTime:c,epochInfo:u,feeConfig:l}){var g,P,h,B,T,k,S,x,K;let m=l===void 0?new hs(0):e.raw.mul(new hs(l.feeBps.toNumber())).div(new hs(1e4)),d=e.raw.sub(m),p=new Ke(e.token,d),f=l===void 0?void 0:{feeAmount:m,feeAccount:l.feeAccount},y=U(v({},t),{address:kt(t.address).toString()}),b=[];for(let I of n)try{b.push(U(v({},this.computeAmountOut({itemPool:I,tickCache:s,simulateCache:r,chainTime:c,epochInfo:u,slippage:a,outputToken:y,amountIn:p})),{feeConfig:f}))}catch(C){this.logDebug("direct error",I.version,I.id.toString(),C.message)}this.logDebug("direct done");for(let[I,C]of Object.entries(i)){let M={chainId:101,address:I,programId:C.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:C.mDecimals,tags:[],extensions:{}},F=C.in.map(L=>{try{return{pool:L,data:this.computeAmountOut({itemPool:L,tickCache:s,simulateCache:r,chainTime:c,epochInfo:u,slippage:a,outputToken:M,amountIn:p})}}catch(V){this.logDebug("route in error",L.version,L.id.toString(),V.message);return}}).sort((L,V)=>{var le,Ie,pe,Ae;let Y=L===void 0?Mn:L.data.amountOut.amount.raw.sub((Ie=(le=L.data.amountOut.fee)==null?void 0:le.raw)!=null?Ie:Mn),te=V===void 0?Mn:V.data.amountOut.amount.raw.sub((Ae=(pe=V.data.amountOut.fee)==null?void 0:pe.raw)!=null?Ae:Mn);return Y.lt(te)?1:-1})[0];if(F===void 0)continue;let R=new Ke(os(M),F.data.amountOut.amount.raw.sub((P=(g=F.data.amountOut.fee)==null?void 0:g.raw)!=null?P:Mn));for(let L of C.out)try{let V=this.computeAmountOut({itemPool:L,tickCache:s,simulateCache:r,chainTime:c,epochInfo:u,slippage:a,outputToken:y,amountIn:R});b.push(U(v({},V),{allTrade:!!(F.data.allTrade&&V.allTrade),amountIn:F.data.amountIn,amountOut:V.amountOut,minAmountOut:V.minAmountOut,currentPrice:void 0,executionPrice:new N(new ft({baseToken:F.data.amountIn.amount.token,denominator:F.data.amountIn.amount.raw,quoteToken:V.amountOut.amount.token,numerator:V.amountOut.amount.raw.sub((B=(h=V.amountOut.fee)==null?void 0:h.raw)!=null?B:Mn)}).toFixed()),priceImpact:new N(F.data.priceImpact.add(V.priceImpact).toFixed()),fee:[F.data.fee[0],V.fee[0]],routeType:"route",poolInfoList:[F.pool,L],remainingAccounts:[F.data.remainingAccounts[0],V.remainingAccounts[0]],minMiddleAmountFee:(T=V.amountOut.fee)!=null&&T.raw?new Ke(F.data.amountOut.amount.token,((S=(k=F.data.amountOut.fee)==null?void 0:k.raw)!=null?S:Mn).add((K=(x=V.amountOut.fee)==null?void 0:x.raw)!=null?K:Mn)):void 0,middleToken:F.data.amountOut.amount.token,poolReady:F.data.poolReady&&V.poolReady,poolType:[F.data.poolType,V.poolType],feeConfig:f,expirationTime:un(F.data.expirationTime,V.expirationTime)}))}catch(V){this.logDebug("route out error",L.version,L.id.toString(),V.message)}}return b.filter(I=>(I.allTrade||this.logDebug(`pool ${I.poolInfoList.map(C=>C.id.toString()).join(",")} filter out since not all trade`),I.allTrade)).sort((I,C)=>I.amountOut.amount.raw.sub(C.amountOut.amount.raw).gt(Mn)?-1:1)}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:i,epochInfo:r,slippage:s,outputToken:a,amountIn:c}){if(e.version===6){let{allTrade:u,realAmountIn:l,amountOut:m,minAmountOut:d,expirationTime:p,currentPrice:f,executionPrice:y,priceImpact:b,fee:g,remainingAccounts:P,executionPriceX64:h}=_e.computeAmountOutFormat({poolInfo:e,tickArrayCache:t[e.id.toString()],amountIn:c.raw,tokenOut:a,slippage:s,epochInfo:r,catchLiquidityInsufficient:!0});return{allTrade:u,amountIn:l,amountOut:m,minAmountOut:d,currentPrice:new N(f.toFixed()),executionPrice:new N(y.toFixed()),priceImpact:new N(b.toFixed()),fee:[g],remainingAccounts:[P],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<i,poolType:"CLMM",slippage:s,clmmExPriceX64:[h],expirationTime:un(l.expirationTime,p)}}else if(e.version===7){let{allTrade:u,executionPrice:l,amountOut:m,minAmountOut:d,priceImpact:p,fee:f}=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:Xo(U(v({},a),{amount:m})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Xo(U(v({},a),{amount:d})),fee:void 0,expirationTime:void 0},currentPrice:e.poolPrice,executionPrice:l,priceImpact:p,fee:[new Ke(c.token,f)],remainingAccounts:[],routeType:"amm",poolInfoList:[e],poolReady:e.openTime.toNumber()<i,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:f}=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:Xo(U(v({},a),{amount:u})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Xo(U(v({},a),{amount:l})),fee:void 0,expirationTime:void 0},currentPrice:m,executionPrice:d,priceImpact:p,fee:[new Ke(c.token,f)],routeType:"amm",poolInfoList:[e],remainingAccounts:[],poolReady:Number(n[e.id].openTime)<i,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 i=new Set(e.filter(u=>u.version===6&&!t[u.id.toString()]).map(u=>u.id.toString()));if(i.size>0){let u=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(i)});Object.keys(u).forEach(l=>{t[l]=u[l]})}let r=new Set(e.filter(u=>u.version===4&&!n[u.id.toString()]).map(u=>u.id.toString()));if(r.size>0){let u=await 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 Fe(this.scope.connection,Array.from(s).map(l=>({pubkey:new hi(l)})))).forEach(l=>{if(!l.accountInfo)return;let m=Bu.decode(l.accountInfo.data);a[l.pubkey.toBase58()]={marketId:l.pubkey.toString(),marketProgramId:l.accountInfo.owner.toString(),marketAuthority:ws.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:U(v({},u.ammConfig),{id:u.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),rewardInfos:[],observationId:u.observationId.toBase58(),exBitmapAccount:u.exBitmapAccount.toBase58()};c.push(m)}else if(u.version===4){let l=n[u.id.toString()],m=v({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:Au({programId:new hi(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({observationId:u.observationId.toBase58(),programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),authority:Yi(u.programId).publicKey.toBase58(),vault:{A:u.vaultA.toBase58(),B:u.vaultB.toBase58()},mintLp:Bt({address:u.mintLp.toBase58(),programId:nt.toBase58(),decimals:u.lpDecimals}),config:U(v({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{PublicKey as hb,Transaction as Cu,TransactionInstruction as Tb}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ib}from"@solana/spl-token";import Cm from"bn.js";var xt=class extends De{static getPdaPoolId(e,t){return oe([xt.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return oe([xt.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Cm(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:i,chainTime:r}){if(n.length===0)return[];let s=n.map(l=>xt.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<xt.VERSION_PROJECT.length;l++)a.push(...s.map(m=>xt.getPdaOwnerId(t,m,i,l).publicKey));let c=await nn(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],f=a[l],y=c[d],b=c[n.length+l];if(!(y&&b)||y.data.length!==xt.POOL_LAYOUT.span||b.data.length!==xt.OWNER_LAYOUT.span)continue;let g=xt.POOL_LAYOUT.decode(y.data),P=xt.OWNER_LAYOUT.decode(b.data),h=g.openTime.toNumber(),B=g.endTime.toNumber(),T=P.tokenInfo.map(x=>x.debtAmount.gt(new Cm(0))).filter(x=>!x).length!==3,k=r>h&&r<B&&g.status===1,S=T&&k;u.push({programId:t,poolId:p,ammId:g.ammId,ownerAccountId:f,snapshotLpAmount:P.lpAmount,project:xt.VERSION_PROJECT[m],openTime:h,endTime:B,canClaim:S,canClaimErrorType:T?k?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:g.tokenInfo.map((x,K)=>({mintAddress:x.mintAddress,mintVault:x.mintVault,mintDecimals:x.mintDecimals,perLpLoss:x.perLpLoss,debtAmount:P.tokenInfo[K].debtAmount.add(P.tokenInfo[K].claimedAmount)}))})}return u}async makeClaimTransaction({poolInfo:e,ownerInfo:t,feePayer:n}){t.wallet||this.scope.checkOwner();let i=this.createTxBuilder(n),r=t.wallet||this.scope.ownerPubKey,s=[];for(let u of e.tokenInfo){let{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({mint:u.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:u.mintAddress.equals(Le.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!u.mintAddress.equals(Le.WSOL.mint),associatedOnly:u.mintAddress.equals(Le.WSOL.mint)?!1:t.associatedOnly});m&&i.addInstruction(m),s.push(l)}i.addInstruction({instructions:[xt.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:r,ownerPda:e.ownerAccountId,claimAddress:s}})]});let{transaction:a,signers:c}=i.build();return[{transaction:a,signer:c}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:n}){let i=this.createTxBuilder(n),r=t.wallet||this.scope.ownerPubKey,s={};for(let l of e){let m=[];for(let d of l.tokenInfo){let{account:p,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({mint:d.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:d.mintAddress.equals(Le.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!d.mintAddress.equals(Le.WSOL.mint),associatedOnly:d.mintAddress.equals(Le.WSOL.mint)?!1:t.associatedOnly});f&&i.addInstruction(f),p&&(s[d.mintAddress.toString()]=p,m.push(p))}i.addInstruction({instructions:[xt.makeClaimInstruction({programId:l.programId,poolInfo:l,ownerInfo:{wallet:r,ownerPda:l.ownerAccountId,claimAddress:m}})]})}let{transaction:a,signers:c}=i.build(),u=i.allInstructions;return vr(u,[r,...c.map(l=>l.publicKey)])?[{transaction:a,signer:c}]:[{transaction:new Cu().add(...u.slice(0,i.AllTxData.instructions.length-1)),signer:c},{transaction:new Cu().add(...u.slice(i.AllTxData.instructions.length-1)),signer:[]},{transaction:new Cu().add(...i.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=E([]),r=[{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:Ib,isSigner:!1,isWritable:!1}],s=Buffer.alloc(i.span);i.encode({},s);let a=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new Tb({keys:r,programId:e,data:a})}},Zt=xt;Zt.CLAIMED_NUM=3,Zt.POOL_LAYOUT=E([Re(8),q("bump"),q("status"),w("openTime"),w("endTime"),O("ammId"),H(E([q("mintDecimals"),O("mintAddress"),O("mintVault"),w("perLpLoss"),w("totalClaimedAmount")]),xt.CLAIMED_NUM,"tokenInfo"),H(w(),10,"padding")]),Zt.OWNER_LAYOUT=E([Re(8),q("bump"),q("version"),O("poolId"),O("owner"),w("lpAmount"),H(E([O("mintAddress"),w("debtAmount"),w("claimedAmount")]),xt.CLAIMED_NUM,"tokenInfo"),H(w(),4,"padding")]),Zt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new hb(e)),Zt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},Zt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as ur}from"@solana/web3.js";import Rm from"bn.js";import{SYSVAR_CLOCK_PUBKEY as Bb,TransactionInstruction as Lu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Nu}from"@solana/spl-token";var Ru=E([q("instruction"),Yc("amount")]),ar=E([q("instruction")]);function A1({programId:o,amount:e,instructionKeys:t}){let n=[{pubkey:Kr,isSigner:!1,isWritable:!1},{pubkey:Nu,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:Hs,isSigner:!1,isWritable:!1},...Object.entries(t).map(([r,s])=>({pubkey:s,isSigner:r==="userOwner",isWritable:!["authority","userOwner","userIdoCheck","userStakeInfo"].includes(r)}))],i=Buffer.alloc(Ru.span);return Ru.encode({instruction:1,amount:Number(e)},i),new Lu({keys:n,programId:o,data:i})}function Ts({programId:o},e){let t=[{pubkey:Nu,isSigner:!1,isWritable:!1},{pubkey:Hs,isSigner:!1,isWritable:!1},...Object.entries(e).map(([i,r])=>({pubkey:r,isSigner:i==="userOwner",isWritable:!["authority","userOwner"].includes(i)}))],n=Buffer.alloc(ar.span);return ar.encode({instruction:2},n),new Lu({keys:t,programId:o,data:n})}function Ou(o){let{poolConfig:e,userKeys:t,side:n}=o,i=n==="base"?t.baseTokenAccount:t.quoteTokenAccount,r=n==="base"?e.baseVault:e.quoteVault,s=Buffer.alloc(ar.span);ar.encode({instruction:2},s);let a=[{pubkey:Nu,isWritable:!1,isSigner:!1},{pubkey:Bb,isWritable:!1,isSigner:!1},{pubkey:e.id,isWritable:!0,isSigner:!1},{pubkey:e.authority,isWritable:!1,isSigner:!1},{pubkey:r,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:t.ledgerAccount,isWritable:!0,isSigner:!1},{pubkey:t.owner,isWritable:!1,isSigner:!0}];return new Lu({programId:e.programId,keys:a,data:s})}var xb={[wo.IDO_PROGRAM_ID_V1.toString()]:1,[wo.IDO_PROGRAM_ID_V2.toString()]:2,[wo.IDO_PROGRAM_ID_V3.toString()]:3,[wo.IDO_PROGRAM_ID_V4.toString()]:4},Hi=class extends De{async claim({ownerInfo:e,idoKeys:t,associatedOnly:n=!0,checkCreateATAOwner:i=!1,txVersion:r,feePayer:s}){let a=this.createTxBuilder(s),c=xb[t.programId];c||this.logAndCreateError("invalid version",c);let u=Ve(t),[l,m]=[!new Rm(e.coin).isZero(),!new Rm(e.pc).isZero()],d=u.projectInfo.mint.address.equals($),{account:p,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.projectInfo.mint.programId,mint:u.projectInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!d,notUseTokenAccount:d,associatedOnly:d?!1:n,checkCreateATAOwner:i});!p&&l&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),l&&f&&a.addInstruction(f);let y=u.buyInfo.mint.address.equals($),{account:b,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.buyInfo.mint.programId,mint:u.buyInfo.mint.address,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!y,notUseTokenAccount:y,associatedOnly:y?!1:n,checkCreateATAOwner:i});if(!p&&m&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address),m&&g&&a.addInstruction(g),(!p||!b)&&this.logAndCreateError("target token accounts not found","mint",t.projectInfo.mint.address,t.buyInfo.mint.address),c===3)return a.addInstruction({instructions:[...l?[Ts({programId:u.programId},{idoId:u.id,authority:u.authority,poolTokenAccount:u.projectInfo.vault,userTokenAccount:p,userIdoInfo:new ur(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[],...m?[Ts({programId:new ur(t.programId)},{idoId:u.id,authority:u.authority,poolTokenAccount:u.buyInfo.vault,userTokenAccount:b,userIdoInfo:new ur(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]:[]]}).versionBuild({txVersion:r});if(c<3)return!l&&!m&&this.logAndCreateError("no claimable rewards"),a.addInstruction({instructions:[Ts({programId:u.programId},{idoId:u.id,authority:u.authority,poolQuoteTokenAccount:u.buyInfo.vault,poolBaseTokenAccount:u.projectInfo.vault,userQuoteTokenAccount:b,userBaseTokenAccount:p,userIdoInfo:new ur(e.userIdoInfo),userOwner:this.scope.ownerPubKey})]}).versionBuild({txVersion:r});let P={poolConfig:{id:u.id,programId:u.programId,authority:u.authority,baseVault:u.projectInfo.vault,quoteVault:u.buyInfo.vault,baseToken:t.projectInfo.mint,quoteToken:t.buyInfo.mint},userKeys:{baseTokenAccount:p,quoteTokenAccount:b,ledgerAccount:new ur(e.userIdoInfo),owner:this.scope.ownerPubKey}};return a.addInstruction({instructions:[...l?[Ou(U(v({},P),{side:"base"}))]:[],...m?[Ou(U(v({},P),{side:"quote"}))]:[]]}).versionBuild({txVersion:r})}};var Sb=Buffer.from("vault_auth_seed","utf8"),Kb=Buffer.from("global_config","utf8"),Cb=Buffer.from("pool_vesting","utf8"),Rb=Buffer.from("platform_config","utf8"),Lb=Buffer.from("platform_fee_vault_auth_seed","utf8"),Nb=Buffer.from("creator_fee_vault_auth_seed","utf8");function wn(o){return oe([Sb],o)}function E1(o,e,t,n){return oe([Kb,e.toBuffer(),Ob(t),ts(n)],o)}function ji(o,e,t){return oe([$a,e.toBuffer(),t.toBuffer()],o)}function Mu(o,e,t){return oe([Ja,e.toBuffer(),t.toBuffer()],o)}function Ti(o){return oe([Buffer.from("__event_authority","utf8")],o)}function Ob(o){let e=new ArrayBuffer(1);return new DataView(e).setUint8(0,o),new Uint8Array(e)}function vu(o,e){return oe([Rb,e.toBuffer()],o)}function cr(o,e,t){return oe([Cb,e.toBuffer(),t.toBuffer()],o)}function Ii(o,e,t){return oe([e.toBuffer(),t.toBuffer()],o)}function Fu(o){return oe([Lb],o)}function Zi(o,e,t){return oe([e.toBuffer(),t.toBuffer()],o)}function Lm(o){return oe([Nb],o)}import{SystemProgram as $t,TransactionInstruction as Xt}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Is,TOKEN_2022_PROGRAM_ID as Mb,TOKEN_PROGRAM_ID as Eu}from"@solana/spl-token";import lr from"bn.js";var zt={initialize:Buffer.from([175,175,109,31,13,152,155,237]),buyExactIn:Buffer.from([250,234,13,123,213,156,19,236]),buyExactOut:Buffer.from([24,211,116,40,105,3,153,56]),sellExactIn:Buffer.from([149,39,222,155,211,124,152,26]),sellExactOut:Buffer.from([95,200,71,34,8,9,11,166]),createVestingAccount:Buffer.from([129,178,2,13,217,172,230,218]),claimVestedToken:Buffer.from([49,33,104,30,189,157,79,35]),createPlatformConfig:Buffer.from([176,90,196,175,253,113,220,20]),claimPlatformFee:Buffer.from([156,39,208,135,76,237,61,72]),updatePlaformConfig:Buffer.from([195,60,76,129,146,45,67,143]),initializeWithToken2022:Buffer.from([37,190,126,222,44,154,171,17]),claimPlatformFeeFromVault:Buffer.from([117,241,198,168,248,218,80,29]),claimCreatorFee:Buffer.from([26,97,138,203,132,171,141,252])};function Nm(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,h){let B=E([q("decimals"),vt("name"),vt("symbol"),vt("uri")]),T=E([w("totalLockedAmount"),w("cliffPeriod"),w("unlockPeriod")]),k=E([q("index"),w("supply"),w("totalFundRaisingB"),q("migrateType")]),S=E([q("index"),w("supply"),w("totalSellA"),w("totalFundRaisingB"),q("migrateType")]),x=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:Eu,isSigner:!1,isWritable:!1},{pubkey:Eu,isSigner:!1,isWritable:!1},{pubkey:sn,isSigner:!1,isWritable:!1},{pubkey:$t.programId,isSigner:!1,isWritable:!1},{pubkey:at,isSigner:!1,isWritable:!1},{pubkey:Ti(o).publicKey,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1}],K=Buffer.alloc(Buffer.from(p,"utf-8").length+Buffer.from(f,"utf-8").length+Buffer.from(y,"utf-8").length+4*3+1),I=Buffer.alloc(T.span),C=Buffer.alloc(b.type==="ConstantCurve"?S.span:k.span);return B.encode({decimals:d,name:p,symbol:f,uri:y},K),b.type==="ConstantCurve"?S.encode(U(v({index:0},b),{migrateType:b.migrateType==="amm"?0:1}),C):b.type==="FixedCurve"?k.encode(U(v({index:1},b),{migrateType:b.migrateType==="amm"?0:1}),C):b.type==="LinearCurve"&&k.encode(U(v({index:2},b),{migrateType:b.migrateType==="amm"?0:1}),C),T.encode({totalLockedAmount:g,cliffPeriod:P,unlockPeriod:h},I),new Xt({keys:x,programId:o,data:Buffer.from([...zt.initialize,...K,...C,...I])})}function Om(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,h){let B=E([q("decimals"),vt("name"),vt("symbol"),vt("uri")]),T=E([w("totalLockedAmount"),w("cliffPeriod"),w("unlockPeriod"),q("transferFeeExtensionParamsOption"),E([Dt("transferFeeBasePoints"),w("maxinumFee")]).replicate("transferFeeExtensionParams")]),k=E([q("index"),w("supply"),w("totalFundRaisingB"),q("migrateType")]),S=E([q("index"),w("supply"),w("totalSellA"),w("totalFundRaisingB"),q("migrateType")]),x=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!0,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:Mb,isSigner:!1,isWritable:!1},{pubkey:Eu,isSigner:!1,isWritable:!1},{pubkey:$t.programId,isSigner:!1,isWritable:!1},{pubkey:Ti(o).publicKey,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1}],K=Buffer.alloc(Buffer.from(d,"utf-8").length+Buffer.from(p,"utf-8").length+Buffer.from(f,"utf-8").length+4*3+1),I=Buffer.alloc(T.span),C=Buffer.alloc(y.type==="ConstantCurve"?S.span:k.span);return B.encode({decimals:m,name:d,symbol:p,uri:f},K),y.type==="ConstantCurve"?S.encode(U(v({index:0},y),{migrateType:y.migrateType==="amm"?0:1}),C):y.type==="FixedCurve"?k.encode(U(v({index:1},y),{migrateType:y.migrateType==="amm"?0:1}),C):y.type==="LinearCurve"&&k.encode(U(v({index:2},y),{migrateType:y.migrateType==="amm"?0:1}),C),T.encode({totalLockedAmount:b,cliffPeriod:g,unlockPeriod:P,transferFeeExtensionParamsOption:h?1:0,transferFeeExtensionParams:h!=null?h:{transferFeeBasePoints:0,maxinumFee:new lr(0)}},I),new Xt({keys:x,programId:o,data:Buffer.from([...zt.initializeWithToken2022,...K,...C,...I])})}function Mm(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,h){let B=E([w("amountB"),w("minAmountA"),w("shareFeeRate")]),T=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,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:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:Ti(o).publicKey,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1}];h&&T.push({pubkey:h,isSigner:!1,isWritable:!0}),T.push({pubkey:$t.programId,isSigner:!1,isWritable:!1}),T.push({pubkey:f,isSigner:!1,isWritable:!0}),T.push({pubkey:y,isSigner:!1,isWritable:!0});let k=Buffer.alloc(B.span);return B.encode({amountB:b,minAmountA:g,shareFeeRate:P!=null?P:new lr(0)},k),new Xt({keys:T,programId:o,data:Buffer.from([...zt.buyExactIn,...k])})}function vm(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,h){let B=E([w("amountA"),w("maxAmountB"),w("shareFeeRate")]),T=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,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:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:Ti(o).publicKey,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1}];h&&T.push({pubkey:h,isSigner:!1,isWritable:!0}),T.push({pubkey:$t.programId,isSigner:!1,isWritable:!1}),T.push({pubkey:f,isSigner:!1,isWritable:!0}),T.push({pubkey:y,isSigner:!1,isWritable:!0});let k=Buffer.alloc(B.span);return B.encode({amountA:b,maxAmountB:g,shareFeeRate:P!=null?P:new lr(0)},k),new Xt({keys:T,programId:o,data:Buffer.from([...zt.buyExactOut,...k])})}function Fm(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,h){let B=E([w("amountA"),w("minAmountB"),w("shareFeeRate")]),T=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,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:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:Ti(o).publicKey,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1}];h&&T.push({pubkey:h,isSigner:!1,isWritable:!0}),T.push({pubkey:$t.programId,isSigner:!1,isWritable:!1}),T.push({pubkey:f,isSigner:!1,isWritable:!0}),T.push({pubkey:y,isSigner:!1,isWritable:!0});let k=Buffer.alloc(B.span);return B.encode({amountA:b,minAmountB:g,shareFeeRate:P!=null?P:new lr(0)},k),new Xt({keys:T,programId:o,data:Buffer.from([...zt.sellExactIn,...k])})}function Em(o,e,t,n,i,r,s,a,c,u,l,m,d,p,f,y,b,g,P,h){let B=E([w("amountB"),w("maxAmountA"),w("shareFeeRate")]),T=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,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:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:Ti(o).publicKey,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1}];h&&T.push({pubkey:h,isSigner:!1,isWritable:!0}),T.push({pubkey:$t.programId,isSigner:!1,isWritable:!1}),T.push({pubkey:f,isSigner:!1,isWritable:!0}),T.push({pubkey:y,isSigner:!1,isWritable:!0});let k=Buffer.alloc(B.span);return B.encode({amountB:b,maxAmountA:g,shareFeeRate:P!=null?P:new lr(0)},k),new Xt({keys:T,programId:o,data:Buffer.from([...zt.sellExactOut,...k])})}function _u(o,e,t,n,i,r,s,a,c){let u=E([]),l=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:$t.programId,isSigner:!1,isWritable:!1},{pubkey:Is,isSigner:!1,isWritable:!1}],m=Buffer.alloc(u.span);return u.encode({},m),new Xt({keys:l,programId:o,data:Buffer.from([...zt.claimVestedToken,...m])})}function Vu(o,e,t,n,i,r){let s=E([w("shareAmount")]),a=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:$t.programId,isSigner:!1,isWritable:!1}],c=Buffer.alloc(s.span);return s.encode({shareAmount:r},c),new Xt({keys:a,programId:o,data:Buffer.from([...zt.createVestingAccount,...c])})}function Du(o,e,t,n,i,r,s,a,c){let u=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:$t.programId,isSigner:!1,isWritable:!0},{pubkey:Is,isSigner:!1,isWritable:!0}];return new Xt({keys:u,programId:o,data:zt.claimPlatformFee})}function _m(o,e,t,n,i,r,s,a,c,u,l,m,d){let p=E([w("platformScale"),w("creatorScale"),w("burnScale"),w("feeRate"),vt("name"),vt("web"),vt("img"),w("creatorFeeRate")]),f=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:$t.programId,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1}],y=Buffer.alloc(8*5+Buffer.from(l,"utf-8").length+Buffer.from(m,"utf-8").length+Buffer.from(d,"utf-8").length+4*3);return p.encode({platformScale:a.platformScale,creatorScale:a.creatorScale,burnScale:a.burnScale,feeRate:c,name:l,web:m,img:d,creatorFeeRate:u},y),new Xt({keys:f,programId:o,data:Buffer.from([...zt.createPlatformConfig,...y])})}function Vm(o,e,t,n){let i=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0}],r;if(n.type==="updateClaimFeeWallet"){let s=E([q("index"),O("value")]);r=Buffer.alloc(s.span),s.encode({index:0,value:n.value},r)}else if(n.type==="updateLockNftWallet"){let s=E([q("index"),O("value")]);r=Buffer.alloc(s.span),s.encode({index:1,value:n.value},r)}else if(n.type==="migrateCpLockNftScale"){let s=E([q("index"),w("platformScale"),w("creatorScale"),w("burnScale")]);r=Buffer.alloc(s.span),s.encode(v({index:2},n.value),r)}else if(n.type==="updateFeeRate"){let s=E([q("index"),w("value")]);r=Buffer.alloc(s.span),s.encode({index:3,value:n.value},r)}else if(n.type==="updateImg"||n.type==="updateName"||n.type==="updateWeb"){let s=E([q("index"),vt("value")]);r=Buffer.alloc(Buffer.from(n.value,"utf-8").length+4+1*1),n.type==="updateName"?s.encode({index:4,value:n.value},r):n.type==="updateWeb"?s.encode({index:5,value:n.value},r):n.type==="updateImg"&&s.encode({index:6,value:n.value},r)}else if(n.type==="updateCpConfigId"){i.push({pubkey:n.value,isSigner:!1,isWritable:!1});let s=E([q("index")]);r=Buffer.alloc(s.span),s.encode({index:7},r)}else if(n.type==="updateAll"){i.push({pubkey:n.value.cpConfigId,isSigner:!1,isWritable:!1});let s=E([q("index"),O("platformClaimFeeWallet"),O("platformLockNftWallet"),w("platformScale"),w("creatorScale"),w("burnScale"),w("feeRate"),vt("name"),vt("web"),vt("img"),O("transferFeeExtensionAuth"),w("creatorFeeRate")]);r=Buffer.alloc(1+32+32+8*4+4*3+Buffer.from(n.value.name,"utf-8").length+Buffer.from(n.value.web,"utf-8").length+Buffer.from(n.value.img,"utf-8").length),s.encode({index:8,platformClaimFeeWallet:n.value.platformClaimFeeWallet,platformLockNftWallet:n.value.platformLockNftWallet,platformScale:n.value.migrateCpLockNftScale.platformScale,creatorScale:n.value.migrateCpLockNftScale.creatorScale,burnScale:n.value.migrateCpLockNftScale.burnScale,feeRate:n.value.feeRate,name:n.value.name,web:n.value.web,img:n.value.img,transferFeeExtensionAuth:n.value.transferFeeExtensionAuth,creatorFeeRate:n.value.creatorFeeRate},r)}else throw Error("updateInfo params type error");return new Xt({keys:i,programId:o,data:Buffer.from([...zt.updatePlaformConfig,...r])})}function Wu(o,e,t,n,i,r,s,a){let c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:$t.programId,isSigner:!1,isWritable:!1},{pubkey:Is,isSigner:!1,isWritable:!1}];return new Xt({keys:c,programId:o,data:zt.claimPlatformFeeFromVault})}function Dm(o,e,t,n,i,r,s){let a=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:$t.programId,isSigner:!1,isWritable:!1},{pubkey:Is,isSigner:!1,isWritable:!1}];return new Xt({keys:a,programId:o,data:zt.claimCreatorFee})}import{NATIVE_MINT as vn,TOKEN_2022_PROGRAM_ID as Bi,TOKEN_PROGRAM_ID as He,createAssociatedTokenAccountIdempotentInstruction as tn,getTransferFeeConfig as Rs,unpackMint as Ls}from"@solana/spl-token";import ce from"bn.js";import{PublicKey as Wm}from"@solana/web3.js";var ei=E([w(),w("epoch"),q("curveType"),Dt("index"),w("migrateFee"),w("tradeFeeRate"),w("maxShareFeeRate"),w("minSupplyA"),w("maxLockRate"),w("minSellRateA"),w("minMigrateRateA"),w("minFundRaisingB"),O("mintB"),O("protocolFeeOwner"),O("migrateFeeOwner"),O("migrateToAmmWallet"),O("migrateToCpmmWallet"),H(w(),16)]),vb=E([w("totalLockedAmount"),w("cliffPeriod"),w("unlockPeriod"),w("startTime"),w("totalAllocatedShare")]),pn=E([w(),w("epoch"),q("bump"),q("status"),q("mintDecimalsA"),q("mintDecimalsB"),q("migrateType"),w("supply"),w("totalSellA"),w("virtualA"),w("virtualB"),w("realA"),w("realB"),w("totalFundRaisingB"),w("protocolFee"),w("platformFee"),w("migrateFee"),vb.replicate("vestingSchedule"),O("configId"),O("platformId"),O("mintA"),O("mintB"),O("vaultA"),O("vaultB"),O("creator"),q("mintProgramFlag"),H(q(),63)]),H1=E([w(),w("epoch"),O("poolId"),O("beneficiary"),w("claimedAmount"),w("tokenShareAmount"),H(w(),8)]),$i=E([w(),w("epoch"),O("platformClaimFeeWallet"),O("platformLockNftWallet"),w("platformScale"),w("creatorScale"),w("burnScale"),w("feeRate"),H(q(),64,"name"),H(q(),256,"web"),H(q(),256,"img"),O("cpConfigId"),w("creatorFeeRate"),O("transferFeeExtensionAuth"),H(q(),184)]);import Jt from"bn.js";import Bs from"bn.js";var ti=class{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n}){throw Error()}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:i}){throw Error()}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:n}){throw Error()}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:n,totalFundRaising:i,migrateFee:r,decimalA:s,decimalB:a}){throw Error()}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:n}){throw Error()}static getInitParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:i,migrateFee:r}){throw Error()}static buyExactIn({poolInfo:e,amount:t}){throw Error()}static buyExactOut({poolInfo:e,amount:t}){throw Error()}static sellExactIn({poolInfo:e,amount:t}){throw Error()}static sellExactOut({poolInfo:e,amount:t}){throw Error()}};var xs=class extends ti{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n}){return new N(e.virtualB.toString()).div(e.virtualA.toString()).mul(10**(t-n))}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:i}){return new N(t.toString()).div(e.toString()).mul(10**(n-i))}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:n}){return new N(e.virtualB.add(e.realB).toString()).div(e.virtualA.sub(e.realA).toString()).mul(10**(t-n))}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:n,totalFundRaising:i,migrateFee:r,decimalA:s,decimalB:a}){return new N(i.sub(r).toString()).div(e.sub(t).sub(n).toString()).mul(10**(s-a))}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:n}){let i=e.totalSellA.sub(e.realA),r=e.totalFundRaisingB.sub(e.realB);return new N(e.virtualB.add(e.realB.add(r)).toString()).div(e.virtualA.sub(e.realA.add(i)).toString()).mul(10**(t-n))}static getInitParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:i,migrateFee:r}){if(e.lte(n))throw Error("supply need gt total sell");let s=e.sub(n).sub(i);if(s.lte(new Bs(0)))throw Error("supplyMinusSellLocked <= 0");let a=t.sub(r);if(a.lte(new Bs(0)))throw Error("tfMinusMf <= 0");let c=a.mul(n).mul(n).div(s),u=a.mul(n).div(s).sub(t),l=c.div(u),m=t.mul(t).div(u);if(l.lt(new Bs(0))||m.lt(new Bs(0)))throw Error("invalid input 0");return{a:l,b:m,c:n}}static buyExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,inputReserve:e.virtualB.add(e.realB),outputReserve:e.virtualA.sub(e.realA)})}static buyExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,inputReserve:e.virtualB.add(e.realB),outputReserve:e.virtualA.sub(e.realA)})}static sellExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,inputReserve:e.virtualA.sub(e.realA),outputReserve:e.virtualB.add(e.realB)})}static sellExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,inputReserve:e.virtualA.sub(e.realA),outputReserve:e.virtualB.add(e.realB)})}static getAmountOut({amountIn:e,inputReserve:t,outputReserve:n}){let i=e.mul(n),r=t.add(e);return i.div(r)}static getAmountIn({amountOut:e,inputReserve:t,outputReserve:n}){let i=t.mul(e),r=n.sub(e);return ui(i,r)}};import Ss from"bn.js";var Ks=class extends ti{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n}){return new N(e.virtualB.toString()).div(e.virtualA.toString()).mul(10**(t-n))}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:i}){return new N(t.toString()).div(e.toString()).mul(10**(n-i))}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:n}){return new N(e.virtualB.toString()).div(e.virtualA.toString()).mul(10**(t-n))}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:n,totalFundRaising:i,migrateFee:r,decimalA:s,decimalB:a}){return new N(i.sub(r).toString()).div(e.sub(t).sub(n).toString()).mul(10**(s-a))}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:n}){let i=e.totalSellA.sub(e.realA),r=e.totalFundRaisingB.sub(e.realB);return new N(e.virtualB.add(e.realB).add(r).toString()).div(e.virtualA.sub(e.realA).add(i).toString()).mul(10**(t-n))}static getInitParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:i,migrateFee:r}){let s=e.sub(i);if(s.lte(new Ss(0)))throw Error("invalid input 1");let a=new Ss(2).mul(t).sub(r),u=t.mul(s).div(a);if(u.lt(new Ss(0))||t.lt(new Ss(0)))throw Error("invalid input 0");return{a:u,b:t,c:u}}static buyExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,initInput:e.virtualB,initOutput:e.virtualA})}static buyExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,initInput:e.virtualB,initOutput:e.virtualA})}static sellExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,initInput:e.virtualA,initOutput:e.virtualB})}static sellExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,initInput:e.virtualA,initOutput:e.virtualB})}static getAmountOut({amountIn:e,initInput:t,initOutput:n}){return n.mul(e).div(t)}static getAmountIn({amountOut:e,initInput:t,initOutput:n}){let i=t.mul(e);return ui(i,n)}};import _t from"bn.js";import Ji from"bn.js";var mr=class{static _multipler(e){return new N(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new N(e.toString()).div(this._Q64).mul(this._multipler(t)).div(this._multipler(n))}static getPriceX64({price:e,decimalA:t,decimalB:n}){let i=e.mul(this._multipler(n)).div(this._multipler(t));return new Ji(i.mul(this._Q64).toFixed(0))}};mr._Q64=new N(new Ji(1).shln(64).toString());function dR({supply:o,totalFundRaisingB:e,totalLockedAmount:t,totalSellA:n,migrateType:i,decimalsA:r}){let s=o.sub(n).sub(t),a=new Ji(new N(s.mul(e).toString()).sqrt().toFixed(0));if(i==="amm"){if(a.gt(new Ji(10).pow(new Ji(r))))return!0}else if(i==="cpmm"){if(a.gt(new Ji(100)))return!0}else throw Error("migrate type error");return!1}var Cs=class extends ti{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n}){return new N(0)}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:i}){return new N(0)}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:n}){return new N(e.virtualA.mul(e.realA).toString()).div(mr._Q64).mul(10**(t-n))}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:n,totalFundRaising:i,migrateFee:r,decimalA:s,decimalB:a}){return new N(i.sub(r).toString()).div(e.sub(t).sub(n).toString()).mul(10**(s-a))}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:n}){let i=e.totalSellA.sub(e.realA),r=e.totalFundRaisingB.sub(e.realB);return new N(e.virtualB.add(e.realB).add(r).toString()).div(e.virtualA.sub(e.realA).add(i).toString()).mul(10**(t-n))}static getInitParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:i,migrateFee:r}){let s=e.sub(i);if(s.lte(new _t(0)))throw Error("supplyMinusLocked need gt 0");let a=t.mul(new _t(3)).sub(r),u=t.mul(new _t(2)).mul(s).div(a),l=u.mul(u),m=t.mul(new _t(2)).mul(lt).div(l);if(!m.gt(new _t(0)))throw Error("a need gt 0");if(!Eo.gt(m))throw Error("a need lt u64 max");if(m.lt(new _t(0))||u.lt(new _t(0)))throw Error("invalid input 0");return{a:m,b:new _t(0),c:u}}static buyExactIn({poolInfo:e,amount:t}){let n=e.realB.add(t),i=new _t(2).mul(n).mul(lt).div(e.virtualA);return new _t(new N(i.toString()).sqrt().toFixed(0)).sub(e.realA)}static buyExactOut({poolInfo:e,amount:t}){let n=e.realA.add(t),i=n.mul(n);return ui(e.virtualA.mul(i),new _t(2).mul(lt)).sub(e.realB)}static sellExactIn({poolInfo:e,amount:t}){let n=e.realA.sub(t),i=n.mul(n),r=ui(e.virtualA.mul(i),new _t(2).mul(lt));return e.realB.sub(r)}static sellExactOut({poolInfo:e,amount:t}){let n=e.realB.sub(t),i=new _t(2).mul(n).mul(lt).div(e.virtualA),r=new _t(new N(i.toString()).sqrt().toFixed(0));return e.realA.sub(r)}};var en=class{static getPoolCurvePointByPoolInfo({curveType:e,pointCount:t,poolInfo:n}){return this.getPoolCurvePointByInit({curveType:e,pointCount:t,supply:n.supply,totalFundRaising:n.totalFundRaisingB,totalSell:n.totalSellA,totalLockedAmount:n.vestingSchedule.totalLockedAmount,migrateFee:n.migrateFee,decimalA:n.mintDecimalsA,decimalB:n.mintDecimalsB})}static getPoolCurvePointByInit({curveType:e,pointCount:t,supply:n,totalFundRaising:i,totalSell:r,totalLockedAmount:s,migrateFee:a,decimalA:c,decimalB:u}){if(t<3)throw Error("point count < 3");let l=this.getCurve(e),m=l.getInitParam({supply:n,totalFundRaising:i,totalSell:r,totalLockedAmount:s,migrateFee:a}),d=l.getPoolInitPriceByInit(U(v({},m),{decimalA:c,decimalB:u})),p=i.div(new Jt(t-1)),f=new Jt(0),y=[{price:d,totalSellSupply:0}],{a:b,b:g}=m,P=f,h=f;for(let B=1;B<t;B++){let T=B!==t-1?p:i.sub(h),k=this.buyExactIn({poolInfo:{virtualA:b,virtualB:g,realA:P,realB:h,totalFundRaisingB:i,totalSellA:r},amountB:T,protocolFeeRate:f,platformFeeRate:f,curveType:e,shareFeeRate:f,creatorFeeRate:f,transferFeeConfigA:void 0,slot:0});P=P.add(k.amountA.amount),h=h.add(k.amountB);let S=this.getPrice({poolInfo:{virtualA:b,virtualB:g,realA:P,realB:h},decimalA:c,decimalB:u,curveType:e});y.push({price:S,totalSellSupply:new N(P.toString()).div(10**c).toNumber()})}return y}static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n,curveType:i}){return this.getCurve(i).getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n})}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:i,curveType:r}){return this.getCurve(r).getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:i})}static getPrice({poolInfo:e,curveType:t,decimalA:n,decimalB:i}){return this.getCurve(t).getPoolPrice({poolInfo:e,decimalA:n,decimalB:i})}static getEndPrice({poolInfo:e,curveType:t,decimalA:n,decimalB:i}){return this.getCurve(t).getPoolPrice({poolInfo:e,decimalA:n,decimalB:i})}static getPoolEndPriceReal({poolInfo:e,curveType:t,decimalA:n,decimalB:i}){return this.getCurve(t).getPoolEndPriceReal({poolInfo:e,decimalA:n,decimalB:i})}static checkParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:i,decimals:r,config:s,migrateType:a}){if(Number(r)!==6)throw Error("decimals = 6");if(e.mul(s.maxLockRate).div(cn).lt(i))throw Error("total lock amount gte max lock amount");if(e.lt(s.minSupplyA.mul(new Jt(10**r))))throw Error("supply lt min supply");let u=e.mul(s.minSellRateA).div(cn);if(n.lt(u))throw Error("invalid input");if(t.lt(s.minFundRaisingB))throw Error("total fund raising lt min fund raising");let l=e.sub(n).sub(i),m=e.mul(s.minMigrateRateA).div(cn);if(l.lt(m))throw Error("migrate lt min migrate amoount");let d=e.sub(n).sub(i),p=new Jt(new N(d.mul(t).toString()).sqrt().toFixed(0));if(a==="amm"){let f=new Jt(10).pow(new Jt(r));if(p.lte(f))throw Error("check migrate lp error")}else if(a==="cpmm"){let f=new Jt(100);if(p.lte(f))throw Error("check migrate lp error")}else throw Error("migrate type error")}static buyExactIn({poolInfo:e,amountB:t,protocolFeeRate:n,platformFeeRate:i,curveType:r,shareFeeRate:s,creatorFeeRate:a,transferFeeConfigA:c,slot:u}){let l=this.totalFeeRate({protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a}),m=this.calculateFee({amount:t,feeRate:l}),d=t.sub(m),p=this.getCurve(r),f=p.buyExactIn({poolInfo:e,amount:d}),y=e.totalSellA.sub(e.realA),b,g,P;if(f.gt(y)){b=y;let B=p.buyExactOut({poolInfo:e,amount:b});g=this.calculatePreFee({postFeeAmount:B,feeRate:l}),P=g.sub(B)}else b=f,g=t,P=m;let h=this.splitFee({totalFee:P,protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a});return{amountA:la(b,c,u),amountB:g,splitFee:h}}static buyExactOut({poolInfo:e,amountA:t,protocolFeeRate:n,platformFeeRate:i,curveType:r,shareFeeRate:s,creatorFeeRate:a,transferFeeConfigA:c,slot:u}){let l=e.totalSellA.sub(e.realA),m=ma(t,c,u),d=m.fee?m.amount.add(m.fee):m.amount;t.gt(l)&&(d=l);let f=this.getCurve(r).buyExactOut({poolInfo:e,amount:d}),y=this.totalFeeRate({protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a}),b=this.calculatePreFee({postFeeAmount:f,feeRate:y}),g=b.sub(f),P=this.splitFee({totalFee:g,protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a});return{amountA:m,amountB:b,splitFee:P}}static sellExactIn({poolInfo:e,amountA:t,protocolFeeRate:n,platformFeeRate:i,curveType:r,shareFeeRate:s,creatorFeeRate:a,transferFeeConfigA:c,slot:u}){let l=this.getCurve(r),m=la(t,c,u),d=m.fee?m.amount.sub(m.fee):m.amount,p=l.sellExactIn({poolInfo:e,amount:d}),f=this.calculateFee({amount:p,feeRate:this.totalFeeRate({protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a})}),y=this.splitFee({totalFee:f,protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a});return{amountA:m,amountB:p.sub(f),splitFee:y}}static sellExactOut({poolInfo:e,amountB:t,protocolFeeRate:n,platformFeeRate:i,curveType:r,shareFeeRate:s,creatorFeeRate:a,transferFeeConfigA:c,slot:u}){let l=this.totalFeeRate({protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a}),m=this.calculatePreFee({postFeeAmount:t,feeRate:l});if(e.realB.lt(m))throw Error("Insufficient liquidity");let d=m.sub(t),f=en.getCurve(r).sellExactOut({poolInfo:e,amount:m});if(f.gt(e.realA))throw Error();let y=this.splitFee({totalFee:d,protocolFeeRate:n,platformFeeRate:i,shareFeeRate:s,creatorFeeRate:a});return{amountA:ma(f,c,u),amountB:t,splitFee:y}}static splitFee({totalFee:e,protocolFeeRate:t,platformFeeRate:n,shareFeeRate:i,creatorFeeRate:r}){let s=this.totalFeeRate({protocolFeeRate:t,platformFeeRate:n,shareFeeRate:i,creatorFeeRate:r}),a=s.isZero()?new Jt(0):e.mul(n).div(s),c=s.isZero()?new Jt(0):e.mul(i).div(s),u=s.isZero()?new Jt(0):e.mul(r).div(s),l=e.sub(a).sub(c).sub(u);return{platformFee:a,shareFee:c,protocolFee:l,creatorFee:u}}static calculateFee({amount:e,feeRate:t}){return Rr(e,t,cn)}static calculatePreFee({postFeeAmount:e,feeRate:t}){if(t.isZero())return e;let n=e.mul(cn),i=cn.sub(t);return n.add(i).sub(new Jt(1)).div(i)}static totalFeeRate({protocolFeeRate:e,platformFeeRate:t,shareFeeRate:n,creatorFeeRate:i}){if(e.add(t).add(n).add(i).gt(new Jt(1e6)))throw Error("total fee rate gt 1_000_000");return e.add(t).add(n).add(i)}static getCurve(e){switch(e){case 0:return xs;case 1:return Ks;case 2:return Cs}throw Error("find curve error")}};var xi={initPriceX64:new ce("515752397214619"),supply:new ce(1e15),totalSellA:new ce(7931e11),totalFundRaisingB:new ce(85e9),totalLockedAmount:new ce("0"),cliffPeriod:new ce("0"),unlockPeriod:new ce("0"),decimals:6,virtualA:new ce("1073471847374405"),virtualB:new ce("30050573465"),realA:new ce(0),realB:new ce(0),protocolFee:new ce(0),platformId:new Wm("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new ce(0),cliffPeriod:new ce(0),unlockPeriod:new ce(0),startTime:new ce(0),totalAllocatedShare:new ce(0)}},ni=new ce(1e4),dr=class extends De{constructor(e){super(e)}async createLaunchpad(C){var M=C,{programId:e=yt,authProgramId:t,platformId:n=xi.platformId,mintA:i,decimals:r=6,mintBDecimals:s=9,name:a,symbol:c,uri:u,migrateType:l,configId:m,configInfo:d,platformFeeRate:p,txVersion:f,computeBudgetConfig:y,txTipConfig:b,feePayer:g,buyAmount:P,minMintAAmount:h,slippage:B,associatedOnly:T=!0,checkCreateATAOwner:k=!1,extraSigners:S,token2022:x,transferFeeExtensionParams:K}=M,I=ze(M,["programId","authProgramId","platformId","mintA","decimals","mintBDecimals","name","symbol","uri","migrateType","configId","configInfo","platformFeeRate","txVersion","computeBudgetConfig","txTipConfig","feePayer","buyAmount","minMintAAmount","slippage","associatedOnly","checkCreateATAOwner","extraSigners","token2022","transferFeeExtensionParams"]);var no,io,oo,ro,Vt,fr,Gu,Xu,zu,Qu;let F=this.createTxBuilder(g);t=t!=null?t:wn(e).publicKey,x=!!K,x&&(l="cpmm");let R=d;if(!R&&m){let fn=await this.scope.connection.getAccountInfo(m);fn&&(R=ei.decode(fn.data))}R||this.logAndCreateError("config not found");let L=R.mintB,V=R.curveType,{publicKey:Y}=ji(e,i,L),{publicKey:te}=Mu(e,Y,i),{publicKey:le}=Mu(e,Y,L),{publicKey:Ie}=Rn(i);this.logDebug(`create token: ${i.toBase58()}, mintB: ${L.toBase58()}, decimals A:${r}/B:${s}, config:${m.toBase58()}`),c.length>10&&this.logAndCreateError("Symbol length should shorter than 11"),u||this.logAndCreateError("uri should not empty");let pe=(no=I==null?void 0:I.supply)!=null?no:xi.supply,Ae=(io=I==null?void 0:I.totalSellA)!=null?io:xi.totalSellA,we=(oo=I==null?void 0:I.totalFundRaisingB)!=null?oo:xi.totalFundRaisingB,be=(ro=I==null?void 0:I.totalLockedAmount)!=null?ro:new ce(0),re=p;if(!p){let fn=await this.scope.connection.getAccountInfo(n);fn||this.logAndCreateError("platform id not found:",n.toString()),re=$i.decode(fn.data).feeRate}let Se=en.getCurve(R.curveType).getInitParam({supply:pe,totalFundRaising:we,totalSell:Ae,totalLockedAmount:be,migrateFee:R.migrateFee}),je={epoch:new ce(896),bump:254,status:0,mintDecimalsA:r,mintDecimalsB:s,supply:pe,totalSellA:Ae,mintA:new Wm(i),mintB:L,virtualA:Se.a,virtualB:Se.b,realA:xi.realA,realB:xi.realB,migrateFee:R.migrateFee,migrateType:l==="amm"?0:1,protocolFee:xi.protocolFee,platformFee:re,platformId:n,configId:m,vaultA:te,vaultB:le,creator:this.scope.ownerPubKey,totalFundRaisingB:we,vestingSchedule:{totalLockedAmount:be,cliffPeriod:new ce(0),unlockPeriod:new ce(0),startTime:new ce(0),totalAllocatedShare:new ce(0)},mintProgramFlag:x?1:0},ii=en.getCurve(R.curveType),{c:kn}=ii.getInitParam({supply:je.supply,totalFundRaising:je.totalFundRaisingB,totalLockedAmount:be,totalSell:R.curveType===0?je.totalSellA:new ce(0),migrateFee:R.migrateFee});try{en.checkParam({supply:je.supply,totalFundRaising:je.totalFundRaisingB,totalSell:kn,totalLockedAmount:be,decimals:je.mintDecimalsA,config:R,migrateType:l}),this.logDebug("check init params success")}catch(fn){this.logAndCreateError(`check create mint params failed, ${fn.message}`)}F.addInstruction({instructions:[x?Om(e,g!=null?g:this.scope.ownerPubKey,this.scope.ownerPubKey,m,n,t,Y,i,L,te,le,r,a,c,u||"https://",{type:V===0?"ConstantCurve":V===1?"FixedCurve":V===2?"LinearCurve":"ConstantCurve",totalSellA:Ae,migrateType:l,supply:pe,totalFundRaisingB:we},be,(Vt=I==null?void 0:I.cliffPeriod)!=null?Vt:new ce(0),(fr=I==null?void 0:I.unlockPeriod)!=null?fr:new ce(0),K):Nm(e,g!=null?g:this.scope.ownerPubKey,this.scope.ownerPubKey,m,n,t,Y,i,L,te,le,Ie,r,a,c,u||"https://",{type:V===0?"ConstantCurve":V===1?"FixedCurve":V===2?"LinearCurve":"ConstantCurve",totalSellA:Ae,migrateType:l,supply:pe,totalFundRaisingB:we},be,(Gu=I==null?void 0:I.cliffPeriod)!=null?Gu:new ce(0),(Xu=I==null?void 0:I.unlockPeriod)!=null?Xu:new ce(0))]});let st=x?await this.scope.connection.getEpochInfo():void 0,Fn=K?{epoch:BigInt((st==null?void 0:st.epoch)||0),maximumFee:BigInt((zu=K==null?void 0:K.maxinumFee.toString())!=null?zu:0),transferFeeBasisPoints:(Qu=K==null?void 0:K.transferFeeBasePoints)!=null?Qu:0}:void 0,eo={amountA:{amount:new ce(0),fee:void 0,expirationTime:void 0},amountB:new ce(0),splitFee:{platformFee:new ce(0),shareFee:new ce(0),protocolFee:new ce(0),creatorFee:new ce(0)}},to;if(S!=null&&S.length&&F.addInstruction({signers:S}),!I.createOnly){let{builder:fn,extInfo:qm}=await this.buyToken({programId:e,authProgramId:t,mintAProgram:x?Bi:void 0,mintA:i,mintB:L,poolInfo:je,buyAmount:P,minMintAAmount:h,shareFeeRate:I.shareFeeRate,shareFeeReceiver:I.shareFeeReceiver,configInfo:R,platformFeeRate:re,slippage:B,associatedOnly:T,checkCreateATAOwner:k,skipCheckMintA:!Fn,transferFeeConfigA:Fn?{transferFeeConfigAuthority:t,withdrawWithheldAuthority:t,withheldAmount:BigInt(0),olderTransferFee:Fn,newerTransferFee:Fn}:void 0});F.addInstruction(v({},fn.AllTxData)),eo=v({},qm),to=(this.scope.cluster==="devnet"||f===1)&&I.shareFeeReceiver?[fn.allInstructions[0]]:void 0}return F.addTipInstruction(b),f===0?F.sizeCheckBuildV0({computeBudgetConfig:y,swapInfo:eo,splitIns:to,address:U(v({},je),{poolId:Y})}):F.sizeCheckBuild({computeBudgetConfig:y,swapInfo:eo,splitIns:to,address:U(v({},je),{poolId:Y})})}async buyToken({programId:e=yt,authProgramId:t,mintA:n,mintAProgram:i=He,mintB:r=vn,poolInfo:s,configInfo:a,platformFeeRate:c,txVersion:u,computeBudgetConfig:l,txTipConfig:m,feePayer:d,buyAmount:p,minMintAAmount:f,slippage:y,shareFeeRate:b=new ce(0),shareFeeReceiver:g,associatedOnly:P=!0,checkCreateATAOwner:h=!1,transferFeeConfigA:B,skipCheckMintA:T=!1}){var be,re,Ue;p.lte(new ce(0))&&this.logAndCreateError("buy amount should gt 0:",p.toString());let k=this.createTxBuilder(d),{publicKey:S}=ji(e,n,r);t=t!=null?t:wn(e).publicKey;let x=B;if(!T)if(x)i=Bi;else{let Se=await this.scope.connection.getAccountInfo(n);if(Se&&Se.owner.equals(Bi)){i=Se.owner;let je=Ls(n,Se,i);x=Rs(je)||void 0}}let K=this.scope.account.getAssociatedTokenAccount(n,i),I=null,C=r.equals(vn);k.addInstruction({instructions:[tn(this.scope.ownerPubKey,K,this.scope.ownerPubKey,n,i)]});let{account:M,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({mint:r,owner:this.scope.ownerPubKey,createInfo:C?{payer:this.scope.ownerPubKey,amount:p}:void 0,skipCloseAccount:!C,notUseTokenAccount:C,associatedOnly:C?!1:P,checkCreateATAOwner:h});M&&(I=M),k.addInstruction(F||{}),I===void 0&&this.logAndCreateError(`cannot found mintB(${r.toBase58()}) token accounts`,"tokenAccounts",this.scope.account.tokenAccounts);let R=s;if(!R){let Se=await this.scope.connection.getAccountInfo(S,{commitment:"processed"});Se||this.logAndCreateError("cannot found pool:",S.toBase58()),R=pn.decode(Se.data)}let L=a,V=await Fe(this.scope.connection,[L?void 0:R.configId,R.platformId].filter(Boolean).map(Se=>({pubkey:Se})));if(!L){let Se=V.find(je=>je.pubkey.equals(R.configId));(!Se||!Se.accountInfo)&&this.logAndCreateError("config not found: ",R.configId.toBase58()),L=ei.decode(Se.accountInfo.data)}let Y=V.find(Se=>Se.pubkey.equals(R.platformId));(!Y||!Y.accountInfo)&&this.logAndCreateError("platform info not found: ",R.configId.toBase58());let te=$i.decode(Y.accountInfo.data);c=c||te.feeRate;let le=en.buyExactIn({poolInfo:R,amountB:p,protocolFeeRate:L.tradeFeeRate,platformFeeRate:c,curveType:L.curveType,shareFeeRate:b,creatorFeeRate:te.creatorFeeRate,transferFeeConfigA:x,slot:await this.scope.connection.getSlot()}),Ie=new N(le.amountA.amount.toString()).sub((re=(be=le.amountA.fee)==null?void 0:be.toString())!=null?re:0),pe=y?new N(ni.sub(y).toNumber()/ni.toNumber()).clampedTo(0,1):new N(1),Ae=f!=null?f:y?new ce(Ie.mul(pe).toFixed(0)):le.amountA.amount.sub((Ue=le.amountA.fee)!=null?Ue:new ce(0));le.amountB.lt(p)&&console.log(`maximum ${n.toBase58()} amount can buy is ${le.amountA.toString()}, input ${r.toBase58()} amount: ${le.amountB.toString()}`);let we=g?Z(g,r,He).publicKey:void 0;return we&&k.addInstruction({instructions:[tn(this.scope.ownerPubKey,we,g,r)]}),k.addInstruction({instructions:[Mm(e,this.scope.ownerPubKey,t,R.configId,R.platformId,S,K,I,R.vaultA,R.vaultB,n,r,i,He,Ii(e,R.platformId,r).publicKey,Zi(e,R.creator,r).publicKey,le.amountB.lt(p)?le.amountB:p,Ae,b,we)]}),k.addCustomComputeBudget(l),k.addTipInstruction(m),k.versionBuild({txVersion:u,extInfo:U(v({},le),{decimalOutAmount:Ie,minDecimalOutAmount:new N(Ae.toString())})})}async buyTokenExactOut({programId:e=yt,authProgramId:t,mintA:n,mintAProgram:i=He,mintB:r=vn,poolInfo:s,configInfo:a,transferFeeConfigA:c,platformFeeRate:u,txVersion:l,computeBudgetConfig:m,txTipConfig:d,feePayer:p,maxBuyAmount:f,outAmount:y,slippage:b,shareFeeRate:g=new ce(0),shareFeeReceiver:P,associatedOnly:h=!0,checkCreateATAOwner:B=!1,skipCheckMintA:T=!1}){y.lte(new ce(0))&&this.logAndCreateError("out amount should gt 0:",y.toString());let k=this.createTxBuilder(p),{publicKey:S}=ji(e,n,r);t=t!=null?t:wn(e).publicKey;let x=s;if(!x){let be=await this.scope.connection.getAccountInfo(S,{commitment:"processed"});be||this.logAndCreateError("cannot found pool:",S.toBase58()),x=pn.decode(be.data)}let K=a,I=await Fe(this.scope.connection,[K?void 0:x.configId,x.platformId].filter(Boolean).map(be=>({pubkey:be})));if(!K){let be=I.find(re=>re.pubkey.equals(x.configId));(!be||!be.accountInfo)&&this.logAndCreateError("config not found: ",x.configId.toBase58()),K=ei.decode(be.accountInfo.data)}let C=I.find(be=>be.pubkey.equals(x.platformId));(!C||!C.accountInfo)&&this.logAndCreateError("platform info not found: ",x.configId.toBase58());let M=$i.decode(C.accountInfo.data);u=u||M.feeRate;let F=c;if(!T)if(F)i=Bi;else{let be=await this.scope.connection.getAccountInfo(n);if(be&&be.owner.equals(Bi)){i=be.owner;let re=Ls(n,be,i);F=Rs(re)||void 0}}let R=en.buyExactOut({poolInfo:x,amountA:y,protocolFeeRate:K.tradeFeeRate,platformFeeRate:u,curveType:K.curveType,shareFeeRate:g,creatorFeeRate:M.creatorFeeRate,transferFeeConfigA:F,slot:await this.scope.connection.getSlot()}),L=new N(R.amountB.toString()),V=b?new N(ni.add(b).toNumber()/ni.toNumber()).clampedTo(0,Number.MIN_SAFE_INTEGER):new N(1),Y=(f!=null?f:b)?new ce(L.mul(V).toFixed(0)):R.amountB,te=this.scope.account.getAssociatedTokenAccount(n,i),le=null,Ie=r.equals(vn);k.addInstruction({instructions:[tn(this.scope.ownerPubKey,te,this.scope.ownerPubKey,n,i)]});let{account:pe,instructionParams:Ae}=await this.scope.account.getOrCreateTokenAccount({mint:r,owner:this.scope.ownerPubKey,createInfo:Ie?{payer:this.scope.ownerPubKey,amount:R.amountB}:void 0,skipCloseAccount:!Ie,notUseTokenAccount:Ie,associatedOnly:Ie?!1:h,checkCreateATAOwner:B});pe&&(le=pe),k.addInstruction(Ae||{}),le===void 0&&this.logAndCreateError(`cannot found mintB(${r.toBase58()}) token accounts`,"tokenAccounts",this.scope.account.tokenAccounts);let we=P?Z(P,r,He).publicKey:void 0;return we&&k.addInstruction({instructions:[tn(this.scope.ownerPubKey,we,P,r)]}),k.addInstruction({instructions:[vm(e,this.scope.ownerPubKey,t,x.configId,x.platformId,S,te,le,x.vaultA,x.vaultB,n,r,i,He,Ii(e,x.platformId,r).publicKey,Zi(e,x.creator,r).publicKey,y,Y,g,we)]}),k.addCustomComputeBudget(m),k.addTipInstruction(d),k.versionBuild({txVersion:l,extInfo:{maxSpentAmount:Y,outAmount:y}})}async sellToken({programId:e=yt,authProgramId:t,mintAProgram:n=He,mintA:i,mintB:r=vn,poolInfo:s,configInfo:a,platformFeeRate:c,txVersion:u,computeBudgetConfig:l,txTipConfig:m,feePayer:d,sellAmount:p,minAmountB:f,slippage:y,shareFeeRate:b=new ce(0),shareFeeReceiver:g,associatedOnly:P=!0,checkCreateATAOwner:h=!1,skipCheckMintA:B=!1}){t=t!=null?t:wn(e).publicKey;let T=this.createTxBuilder(d);p.lte(new ce(0))&&this.logAndCreateError("sell amount should be gt 0");let{publicKey:k}=ji(e,i,r),S;if(!B){let re=await this.scope.connection.getAccountInfo(i);if(re&&re.owner.equals(Bi)){n=re.owner;let Ue=Ls(i,re,n);S=Rs(Ue)||void 0}}let x=null,K=null,I=r.equals(vn),{account:C,instructionParams:M}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n,mint:i,owner:this.scope.ownerPubKey,createInfo:void 0,skipCloseAccount:!0,notUseTokenAccount:!1,associatedOnly:P,checkCreateATAOwner:h});C&&(x=C),T.addInstruction(M||{}),x===void 0&&this.logAndCreateError("cannot found mintA token accounts","tokenAccounts",this.scope.account.tokenAccounts);let{account:F,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({mint:r,owner:this.scope.ownerPubKey,createInfo:I?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!I,notUseTokenAccount:I,associatedOnly:I?!1:P,checkCreateATAOwner:h});F&&(K=F),T.addInstruction(R||{}),K===void 0&&this.logAndCreateError("cannot found mintB token accounts","tokenAccounts",this.scope.account.tokenAccounts);let L=s;if(!L){let re=await this.scope.connection.getAccountInfo(k,{commitment:"processed"});re||this.logAndCreateError("cannot found pool",k.toBase58()),L=pn.decode(re.data)}let V=a,Y=await Fe(this.scope.connection,[V?void 0:L.configId,L.platformId].filter(Boolean).map(re=>({pubkey:re})));if(!V){let re=Y.find(Ue=>Ue.pubkey.equals(L.configId));(!re||!re.accountInfo)&&this.logAndCreateError("config not found: ",L.configId.toBase58()),V=ei.decode(re.accountInfo.data)}let te=Y.find(re=>re.pubkey.equals(L.platformId));(!te||!te.accountInfo)&&this.logAndCreateError("platform info not found: ",L.configId.toBase58());let le=$i.decode(te.accountInfo.data);c=c||le.feeRate;let Ie=en.sellExactIn({poolInfo:L,amountA:p,protocolFeeRate:V.tradeFeeRate,platformFeeRate:c,curveType:V.curveType,shareFeeRate:b,creatorFeeRate:le.creatorFeeRate,transferFeeConfigA:S,slot:await this.scope.connection.getSlot()}),pe=new N(Ie.amountB.toString()),Ae=y?new N(ni.sub(y).toNumber()/ni.toNumber()).clampedTo(0,1):new N(1),we=f!=null?f:y?new ce(pe.mul(Ae).toFixed(0)):Ie.amountB;we.lte(new ce(0))&&this.logAndCreateError(`out ${r.toBase58()} amount should be gt 0`);let be=g?Z(g,r,He).publicKey:void 0;return be&&T.addInstruction({instructions:[tn(this.scope.ownerPubKey,be,g,r)]}),T.addInstruction({instructions:[Fm(e,this.scope.ownerPubKey,t,L.configId,L.platformId,k,x,K,L.vaultA,L.vaultB,i,r,n,He,Ii(e,L.platformId,r).publicKey,Zi(e,L.creator,r).publicKey,Ie.amountA.amount.lt(p)?Ie.amountA.amount:p,we,b,be)]}),T.addCustomComputeBudget(l),T.addTipInstruction(m),T.versionBuild({txVersion:u,extInfo:{outAmount:we}})}async sellTokenExactOut({programId:e=yt,authProgramId:t,mintAProgram:n=He,mintA:i,mintB:r=vn,poolInfo:s,configInfo:a,platformFeeRate:c,txVersion:u,computeBudgetConfig:l,txTipConfig:m,feePayer:d,inAmount:p,maxSellAmount:f,slippage:y,shareFeeRate:b=new ce(0),shareFeeReceiver:g,associatedOnly:P=!0,checkCreateATAOwner:h=!1,skipCheckMintA:B=!1}){t=t!=null?t:wn(e).publicKey;let T=this.createTxBuilder(d);f!=null&&f.lte(new ce(0))&&this.logAndCreateError("max sell amount should be gt 0");let{publicKey:k}=ji(e,i,r),S;if(!B){let re=await this.scope.connection.getAccountInfo(i);if(re&&re.owner.equals(Bi)){n=re.owner;let Ue=Ls(i,re,n);S=Rs(Ue)||void 0}}let x=null,K=null,I=r.equals(vn),{account:C,instructionParams:M}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n,mint:i,owner:this.scope.ownerPubKey,createInfo:void 0,skipCloseAccount:!0,notUseTokenAccount:!1,associatedOnly:P,checkCreateATAOwner:h});C&&(x=C),T.addInstruction(M||{}),x===void 0&&this.logAndCreateError("cannot found mintA token accounts","tokenAccounts",this.scope.account.tokenAccounts);let{account:F,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({mint:r,owner:this.scope.ownerPubKey,createInfo:I?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!I,notUseTokenAccount:I,associatedOnly:I?!1:P,checkCreateATAOwner:h});F&&(K=F),T.addInstruction(R||{}),K===void 0&&this.logAndCreateError("cannot found mintB token accounts","tokenAccounts",this.scope.account.tokenAccounts);let L=s;if(!L){let re=await this.scope.connection.getAccountInfo(k,{commitment:"processed"});re||this.logAndCreateError("cannot found pool",k.toBase58()),L=pn.decode(re.data)}let V=a,Y=await Fe(this.scope.connection,[V?void 0:L.configId,L.platformId].filter(Boolean).map(re=>({pubkey:re})));if(!V){let re=Y.find(Ue=>Ue.pubkey.equals(L.configId));(!re||!re.accountInfo)&&this.logAndCreateError("config not found: ",L.configId.toBase58()),V=ei.decode(re.accountInfo.data)}let te=Y.find(re=>re.pubkey.equals(L.platformId));(!te||!te.accountInfo)&&this.logAndCreateError("platform info not found: ",L.configId.toBase58());let le=$i.decode(te.accountInfo.data);c=c||le.feeRate;let Ie=en.sellExactOut({poolInfo:L,amountB:p,protocolFeeRate:V.tradeFeeRate,platformFeeRate:c,curveType:V.curveType,shareFeeRate:b,creatorFeeRate:le.creatorFeeRate,transferFeeConfigA:S,slot:await this.scope.connection.getSlot()}),pe=new N(Ie.amountA.amount.toString()),Ae=y?new N(ni.add(y).toNumber()/ni.toNumber()).clampedTo(0,Number.MAX_SAFE_INTEGER):new N(1),we=(f!=null?f:y)?new ce(pe.mul(Ae).toFixed(0)):Ie.amountA.amount,be=g?Z(g,r,He).publicKey:void 0;return be&&T.addInstruction({instructions:[tn(this.scope.ownerPubKey,be,g,r)]}),T.addInstruction({instructions:[Em(e,this.scope.ownerPubKey,t,L.configId,L.platformId,k,x,K,L.vaultA,L.vaultB,i,r,n,He,Ii(e,L.platformId,r).publicKey,Zi(e,L.creator,r).publicKey,p,we,b,be)]}),T.addCustomComputeBudget(l),T.addTipInstruction(m),T.versionBuild({txVersion:u,extInfo:{maxSellAmount:we}})}async createPlatformConfig({programId:e=yt,platformAdmin:t,platformClaimFeeWallet:n,platformLockNftWallet:i,cpConfigId:r,migrateCpLockNftScale:s,transferFeeExtensionAuth:a,creatorFeeRate:c,feeRate:u,name:l,web:m,img:d,txVersion:p,computeBudgetConfig:f,txTipConfig:y,feePayer:b}){let g=this.createTxBuilder(b),{publicKey:P}=vu(e,t);return g.addInstruction({instructions:[_m(e,t,n,i,P,r,a,s,u,c,l,m,d)]}),g.addCustomComputeBudget(f),g.addTipInstruction(y),g.versionBuild({txVersion:p,extInfo:{platformId:P}})}async updatePlatformConfig({programId:e=yt,platformAdmin:t,platformId:n,updateInfo:i,txVersion:r,computeBudgetConfig:s,txTipConfig:a,feePayer:c}){let u=this.createTxBuilder(c),l=n!=null?n:vu(e,t).publicKey;return u.addInstruction({instructions:[Vm(e,t,l,i)]}),u.addCustomComputeBudget(s),u.addTipInstruction(a),u.versionBuild({txVersion:r})}async claimPlatformFee({programId:e=yt,authProgramId:t,platformId:n,poolId:i,platformClaimFeeWallet:r,mintB:s,vaultB:a,mintBProgram:c=He,txVersion:u,computeBudgetConfig:l,txTipConfig:m,feePayer:d}){var g;let p=this.createTxBuilder(d);t=t!=null?t:wn(e).publicKey;let f=s,y=a;if(!f){let P=await this.scope.connection.getAccountInfo(i,{commitment:"processed"});P||this.logAndCreateError("cannot found pool:",i.toBase58());let h=pn.decode(P.data),B=await this.scope.connection.getAccountInfo(h.configId,{commitment:"processed"});B||this.logAndCreateError("cannot found config:",h.configId.toBase58()),f=ei.decode(B.data).mintB,y=y!=null?y:h.vaultB}(!f||!y)&&this.logAndCreateError("cannot found mint info, mintB: ",f.toBase58(),", vaultB: ",(g=y==null?void 0:y.toBase58())!=null?g:"");let b=Z(this.scope.ownerPubKey,f,He).publicKey;return p.addInstruction({instructions:[tn(this.scope.ownerPubKey,b,this.scope.ownerPubKey,f)]}),p.addInstruction({instructions:[Du(e,r,t,i,n,y,b,f,c)]}),p.addCustomComputeBudget(l),p.addTipInstruction(m),p.versionBuild({txVersion:u})}async claimAllPlatformFee({programId:e=yt,authProgramId:t,platformId:n,platformClaimFeeWallet:i,txVersion:r,computeBudgetConfig:s,txTipConfig:a,feePayer:c}){let u=this.createTxBuilder(c);return t=t!=null?t:wn(e).publicKey,(await this.scope.connection.getProgramAccounts(e,{filters:[{dataSize:pn.span},{memcmp:{offset:pn.offsetOf("platformId"),bytes:n.toString()}}]})).forEach(m=>{let d=pn.decode(m.account.data);if(d.platformFee.lte(new ce(0)))return;let p=Z(this.scope.ownerPubKey,d.mintB,He).publicKey;u.addInstruction({instructions:[tn(this.scope.ownerPubKey,p,this.scope.ownerPubKey,d.mintB)]}),u.addInstruction({instructions:[Du(e,i,t,m.pubkey,n,d.vaultB,p,d.mintB,He)]})}),u.addTipInstruction(a),r===0?u.sizeCheckBuildV0({computeBudgetConfig:s}):u.sizeCheckBuild({computeBudgetConfig:s})}async createVesting({programId:e=yt,poolId:t,beneficiary:n,shareAmount:i,txVersion:r,computeBudgetConfig:s,txTipConfig:a,feePayer:c}){let u=this.createTxBuilder(c),l=await this.getRpcPoolInfo({poolId:t});i.add(l.vestingSchedule.totalAllocatedShare).gt(l.vestingSchedule.totalLockedAmount)&&this.logAndCreateError("share amount exceed total locked amount");let m=cr(e,t,n).publicKey;return u.addInstruction({instructions:[Vu(e,this.scope.ownerPubKey,n,t,m,i)]}),u.addCustomComputeBudget(s),u.addTipInstruction(a),u.versionBuild({txVersion:r})}async createMultipleVesting({programId:e=yt,poolId:t,beneficiaryList:n,txVersion:i,computeBudgetConfig:r,feePayer:s}){let a=this.createTxBuilder(s);n.length===0&&this.logAndCreateError("beneficiaryList is null");let c=await this.getRpcPoolInfo({poolId:t});return n.reduce((l,m)=>l.add(m.shareAmount),c.vestingSchedule.totalAllocatedShare).gt(c.vestingSchedule.totalLockedAmount)&&this.logAndCreateError("share amount exceed total locked amount"),n.forEach(l=>{let m=cr(e,t,l.wallet).publicKey;a.addInstruction({instructions:[Vu(e,this.scope.ownerPubKey,l.wallet,t,m,l.shareAmount)]})}),i===0?a.sizeCheckBuildV0({computeBudgetConfig:r}):a.sizeCheckBuild({computeBudgetConfig:r})}async claimVesting({programId:e=yt,poolId:t,poolInfo:n,vestingRecord:i,txVersion:r,computeBudgetConfig:s,txTipConfig:a,feePayer:c}){let u=this.createTxBuilder(c),l=wn(e).publicKey,m=i||cr(e,t,this.scope.ownerPubKey).publicKey,d=n;if(!d){let f=await this.scope.connection.getAccountInfo(t);f||this.logAndCreateError("pool not found"),d=pn.decode(f.data)}let p=Z(this.scope.ownerPubKey,d.mintA,He).publicKey;return u.addInstruction({instructions:[tn(this.scope.ownerPubKey,p,this.scope.ownerPubKey,d.mintA)]}),u.addInstruction({instructions:[_u(e,this.scope.ownerPubKey,l,t,m,p,d.vaultA,d.mintA,He)]}),u.addCustomComputeBudget(s),u.addTipInstruction(a),u.versionBuild({txVersion:r})}async claimMultiVesting({programId:e=yt,poolIdList:t,poolsInfo:n={},vestingRecords:i={},txVersion:r,computeBudgetConfig:s,feePayer:a}){let c=this.createTxBuilder(a),u=v({},n),l=wn(e).publicKey,m=t.filter(d=>!u[d.toBase58()]);if(m.length){let d=await this.getRpcPoolsInfo({poolIdList:m});u=v(v({},u),d.poolInfoMap)}return t.forEach(d=>{let p=d.toBase58(),f=u[p];f||this.logAndCreateError(`pool info not found: ${p}`);let y=i[p]||cr(e,d,this.scope.ownerPubKey).publicKey,b=Z(this.scope.ownerPubKey,f.mintA,He).publicKey;c.addInstruction({instructions:[tn(this.scope.ownerPubKey,b,this.scope.ownerPubKey,f.mintA)]}),c.addInstruction({instructions:[_u(e,this.scope.ownerPubKey,l,d,y,b,f.vaultA,f.mintA,He)]})}),r===0?c.sizeCheckBuildV0({computeBudgetConfig:s}):c.sizeCheckBuild({computeBudgetConfig:s})}async claimVaultPlatformFee({programId:e=yt,platformId:t,mintB:n,mintBProgram:i=He,claimFeeWallet:r,txVersion:s,computeBudgetConfig:a,txTipConfig:c,feePayer:u}){let l=this.createTxBuilder(u),m=Ii(e,t,n).publicKey,d=Fu(e).publicKey,p=this.scope.account.getAssociatedTokenAccount(n,i);return l.addInstruction({instructions:[tn(this.scope.ownerPubKey,p,this.scope.ownerPubKey,n,i),Wu(e,t,r!=null?r:this.scope.ownerPubKey,d,m,p,n,i)]}),l.addCustomComputeBudget(a),l.addTipInstruction(c),l.versionBuild({txVersion:s})}async claimMultipleVaultPlatformFee({programId:e=yt,platformList:t,unwrapSol:n=!0,txVersion:i,computeBudgetConfig:r,feePayer:s,associatedOnly:a=!0,checkCreateATAOwner:c=!1}){let u=this.createTxBuilder(s),l={};return t.forEach(async m=>{var b,g;let d=Fu(e).publicKey,p=Ii(e,m.id,m.mintB).publicKey,f=m.mintB.equals(vn)&&n,y=l[m.mintB.toBase58()];if(!y){let{account:P,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintB,owner:this.scope.ownerPubKey,createInfo:f?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!f,notUseTokenAccount:f,associatedOnly:f?!1:a,checkCreateATAOwner:c});P&&(y=P),u.addInstruction(h||{}),y===void 0&&this.logAndCreateError(`cannot found platform ${m.id.toBase58()} mintB(${m.mintB.toBase58()}) token accounts`,"tokenAccounts",this.scope.account.tokenAccounts)}u.addInstruction({instructions:[Wu(e,m.id,(b=m.claimFeeWallet)!=null?b:this.scope.ownerPubKey,p,d,y,m.mintB,(g=m.mintBProgram)!=null?g:He)]})}),i===0?u.sizeCheckBuildV0({computeBudgetConfig:r}):u.sizeCheckBuild({computeBudgetConfig:r})}async claimCreatorFee({programId:e=yt,mintB:t,mintBProgram:n=He,txVersion:i,computeBudgetConfig:r,txTipConfig:s,feePayer:a}){let c=this.createTxBuilder(a),u=Zi(e,this.scope.ownerPubKey,t).publicKey,l=Lm(e).publicKey,m=this.scope.account.getAssociatedTokenAccount(t,n);return c.addInstruction({instructions:[tn(this.scope.ownerPubKey,m,this.scope.ownerPubKey,t,n),Dm(e,this.scope.ownerPubKey,l,u,m,t,n)]}),c.addCustomComputeBudget(r),c.addTipInstruction(s),c.versionBuild({txVersion:i})}async getRpcPoolInfo({poolId:e}){return(await this.getRpcPoolsInfo({poolIdList:[e]})).poolInfoMap[e.toBase58()]}async getRpcPoolsInfo({poolIdList:e,config:t}){let n=await Fe(this.scope.connection,e.map(c=>({pubkey:c})),t),i={},r=[];for(let c=0;c<e.length;c++){let u=n[c];if(u===null||!u.accountInfo)throw Error("fetch pool info error: "+e[c].toBase58());let l=pn.decode(u.accountInfo.data);i[e[c].toBase58()]=U(v({},l),{poolId:u.accountInfo.owner}),r.push(l.configId)}let s=await Fe(this.scope.connection,r.map(c=>({pubkey:c})),t),a={};for(let c=0;c<r.length;c++){let u=s[c];if(u===null||!u.accountInfo)throw Error("fetch config info error: "+r[c].toBase58());let l=ei.decode(u.accountInfo.data);a[r[c].toBase58()]=U(v({},l),{configId:u.accountInfo.owner})}return{poolInfoMap:Object.keys(i).reduce((c,u)=>U(v({},c),{[u]:U(v({},i[u]),{configInfo:a[i[u].configId.toBase58()]})}),{})}}};import{PublicKey as Fb}from"@solana/web3.js";import{MintLayout as Eb,TOKEN_2022_PROGRAM_ID as qu,TOKEN_PROGRAM_ID as Uu}from"@solana/spl-token";var pr=class extends De{constructor(t){super(t);this._tokenList=[];this._tokenMap=new Map;this._blackTokenMap=new Set;this._mintGroup={official:new Set,jup:new Set,extra:new Set};this._whiteMap=new Set;this._extraTokenList=[]}async load(t){this.checkDisabled();let{forceUpdate:n=!1,type:i="strict"}=t||{},{mintList:r,blacklist:s,whiteList:a}=await this.scope.fetchV3TokenList(n),c=await this.scope.fetchJupTokenList(n);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Set(s),this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._whiteMap=new Set(a),this._tokenMap.set(bn.address,bn),this._mintGroup.official.add(bn.address),r.forEach(u=>{var l;this._blackTokenMap.has(u.address)||(this._tokenMap.set(u.address,U(v({},u),{type:"raydium",priority:2,programId:(l=u.programId)!=null?l:u.tags.includes("token-2022")?qu.toBase58():Uu.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,U(v({},u),{type:"jupiter",priority:1,programId:(l=u.programId)!=null?l:u.tags.includes("token-2022")?qu.toBase58():Uu.toBase58(),tags:u.freezeAuthority?[...u.tags||[],"hasFreeze"]:u.tags})),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,U(v({},u),{type:"extra",priority:1,programId:u.programId||u.tags.includes("token-2022")?qu.toBase58():Uu.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(),i=this._tokenMap.get(n);if(i)return i;if(n.toLocaleUpperCase()==="SOL")return bn;let r=(await this.scope.api.getTokenInfo([n]))[0];if(r)return this._mintGroup.extra.add(n),this._tokenMap.set(n,U(v({},r),{priority:2})),r;let s=await this.scope.connection.getAccountInfo(new Fb(n));if(!s)throw new Error(`mint address not found: ${n}`);let a=Eb.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 Ns=class{constructor(e){this.rawBalances=new Map;let{connection:t,cluster:n,owner:i,api:r,defaultChainTime:s,defaultChainTimeOffset:a,apiCacheTime:c,blockhashCommitment:u="confirmed",loopMultiTxStatus:l}=e;this._connection=t,this.cluster=n||"mainnet",this._owner=i?new an(i):void 0,this._signAllTransactions=e.signAllTransactions,this.blockhashCommitment=u,this.loopMultiTxStatus=l,this.api=r,this._apiCacheTime=c||5*60*1e3,this.logger=Pe("Raydium"),this.farm=new Fo({scope:this,moduleName:"Raydium_Farm"}),this.account=new xo({scope:this,moduleName:"Raydium_Account",tokenAccounts:e.tokenAccounts,tokenAccountRawInfos:e.tokenAccountRawInfos}),this.liquidity=new jo({scope:this,moduleName:"Raydium_LiquidityV2"}),this.token=new pr({scope:this,moduleName:"Raydium_tokenV2"}),this.tradeV2=new sr({scope:this,moduleName:"Raydium_tradeV2"}),this.clmm=new $o({scope:this,moduleName:"Raydium_clmm"}),this.cpmm=new ir({scope:this,moduleName:"Raydium_cpmm"}),this.utils1216=new Zt({scope:this,moduleName:"Raydium_utils1216"}),this.marketV2=new zi({scope:this,moduleName:"Raydium_marketV2"}),this.ido=new Hi({scope:this,moduleName:"Raydium_ido"}),this.launchpad=new dr({scope:this,moduleName:"Raydium_lauchpad"}),this.availability={};let m=new Date().getTime();this.apiData={},a&&(this._chainTime={fetched:m,value:{chainTime:s||Date.now()-a,offset:a}})}static async load(e){var l;let t=_b({cluster:"mainnet",owner:null,apiRequestInterval:3e5,apiRequestTimeout:1e4},e),{cluster:n,apiRequestTimeout:i,logCount:r,logRequests:s,urlConfigs:a}=t,c=new qr({cluster:n,timeout:i,urlConfigs:a,logCount:r,logRequests:s}),u=new Ns(U(v({},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(Ur);return this._owner.publicKey}setOwner(e){return this._owner=e?new an(e):void 0,this.account.resetTokenAccounts(),this}get connection(){if(!this._connection)throw new Error(Vc);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 console.error(Ur),new Error(Ur)}isCacheInvalidate(e){return new Date().getTime()-e>this._apiCacheTime}async fetchChainTime(){try{let e=await this.api.getChainTimeOffset();this._chainTime={fetched:Date.now(),value:{chainTime:Date.now()+e.offset*1e3,offset:e.offset*1e3}}}catch{this._chainTime=void 0}}async fetchV3TokenList(e){if(this.apiData.tokenList&&!this.isCacheInvalidate(this.apiData.tokenList.fetched)&&!e)return this.apiData.tokenList.data;try{let t=await this.api.getTokenList(),n={fetched:Date.now(),data:t};return this.apiData.tokenList=n,n.data}catch(t){return console.error(t),{mintList:[],blacklist:[],whiteList:[]}}}async fetchJupTokenList(e){if(this.cluster==="devnet")return[];let t=this.apiData.jupTokenList;if(t&&!this.isCacheInvalidate(t.fetched)&&!e)return t.data;try{let n=await this.api.getJupTokenList();return this.apiData.jupTokenList={fetched:Date.now(),data:n.map(i=>U(v({},i),{mintAuthority:i.mint_authority||void 0,freezeAuthority:i.freeze_authority||void 0}))},this.apiData.jupTokenList.data}catch(n){return console.error(n),[]}}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 RL=o=>o;export{jb as ACCOUNT_TYPE_SIZE,St as ALL_PROGRAM_ID,gy as AMM_CONFIG_SEED,wp as AMM_STABLE,yo as AMM_V4,_g as ANAMint,bt as API_URLS,Sb as AUTH_SEED,Zm as AccountType,qr as Api,Il as BIT_PRECISION,Mt as BNDivCeil,ci as BNLayout,XA as BN_100,zA as BN_1000,QA as BN_10000,GA as BN_FIVE,hc as BN_ONE,ri as BN_TEN,UA as BN_THREE,qA as BN_TWO,ot as BN_ZERO,uk as BitStructure,Qc as Blob,bo as CLMM_LOCK_AUTH_ID,Ni as CLMM_LOCK_PROGRAM_ID,qn as CLMM_PROGRAM_ID,Hs as CLOCK_PROGRAM_ID,Kb as CONFIG_SEED,ca as CREATE_CPMM_POOL_AUTH,xp as CREATE_CPMM_POOL_FEE_ACC,go as CREATE_CPMM_POOL_PROGRAM,Nb as CREATOR_FEE_VAULT_AUTH_SEED,$o as Clmm,Vl as ClmmConfigLayout,Me as ClmmInstrument,ds as ConstantProductCurve,km as CpmmConfigInfoLayout,ps as CpmmFee,gs as CpmmPoolInfoLayout,mo as Currency,oi as CurrencyAmount,en as Curve,ti as CurveBase,ys as CurveCalculator,xn as DEVNET_PROGRAM_ID,pw as DEV_API_URLS,Zh as DEV_FARM_LOCK_MINT,$h as DEV_FARM_LOCK_VAULT,IP as DEV_LAUNCHPAD_AUTH,TP as DEV_LAUNCHPAD_PROGRAM,Oi as DEV_LOOKUP_TABLE_CACHE,Vy as DataElement,Vg as ETHMint,iu as EXTENSION_TICKARRAY_BITMAP_SIZE,ll as FARM_LOCK_MINT,ml as FARM_LOCK_VAULT,oa as FARM_PROGRAM_ID_V3,ra as FARM_PROGRAM_ID_V4,sa as FARM_PROGRAM_ID_V5,Li as FARM_PROGRAM_ID_V6,Qt as FARM_PROGRAM_TO_VERSION,pl as FARM_VERSION_TO_LEDGER_LAYOUT,dl as FARM_VERSION_TO_STATE_LAYOUT,ua as FEE_DESTINATION_ID,es as FEE_RATE_DENOMINATOR,cn as FEE_RATE_DENOMINATOR_VALUE,Iy as FETCH_TICKARRAY_COUNT,by as Fee,Ks as FixedPriceCurve,ye as Fraction,wo as IDO_ALL_PROGRAM,hp as IDO_PROGRAM_ID_V1,Tp as IDO_PROGRAM_ID_V2,Ip as IDO_PROGRAM_ID_V3,Bp as IDO_PROGRAM_ID_V4,Sr as INSTRUCTION_PROGRAM_ID,X as InstructionType,vc as JupTokenType,Sp as LAUNCHPAD_AUTH,Cp as LAUNCHPAD_CONFIG,Kp as LAUNCHPAD_PLATFORM,yt as LAUNCHPAD_PROGRAM,rs as LIQUIDITY_FEES_DENOMINATOR,au as LIQUIDITY_FEES_NUMERATOR,Er as LIQUIDITY_POOL_PROGRAM_ID_V5_MODEL,Oy as LIQUIDITY_VERSION_TO_SERUM_VERSION,Ax as LIQUIDITY_VERSION_TO_STATE_LAYOUT,Po as LOCK_CPMM_AUTH,Ao as LOCK_CPMM_PROGRAM,fb as LOCK_LIQUIDITY_SEED,Bl as LOG_B_2_X32,xl as LOG_B_P_ERR_MARGIN_LOWER_X64,Sl as LOG_B_P_ERR_MARGIN_UPPER_X64,_r as LOOKUP_TABLE_CACHE,xs as LaunchConstantProductCurve,ei as LaunchpadConfig,pn as LaunchpadPool,xi as LaunchpadPoolInitParam,H1 as LaunchpadVesting,Io as Layout,Cs as LinearPriceCurve,Te as LiquidityMath,ql as LockClPositionLayoutV2,RB as LockPositionLayout,zm as LogLevel,Ms as Logger,wu as MARKET_STATE_LAYOUT_V2,Bu as MARKET_STATE_LAYOUT_V3,Bm as MARKET_VERSION_TO_STATE_LAYOUT,Lc as MAX_BASE64_SIZE,jt as MAX_SQRT_PRICE_X64,Jr as MAX_SQRT_PRICE_X64_SUB_ONE,Rt as MAX_TICK,xr as MEMO_PROGRAM_ID,gn as MEMO_PROGRAM_ID2,sn as METADATA_PROGRAM_ID,Ht as MIN_SQRT_PRICE_X64,$r as MIN_SQRT_PRICE_X64_ADD_ONE,It as MIN_TICK,Un as MODEL_DATA_PUBKEY,ws as Market,mr as MathLaunch,de as MathUtil,Eo as MaxU64,Tl as MaxUint128,Cn as NEGATIVE_ONE,Eg as NRVMint,hy as OBSERVATION_SEED,Wt as ONE,aa as OPEN_BOOK_PROGRAM,wy as OPERATION_SEED,Dl as ObservationInfoLayout,Sy as ObservationLayout,Wl as OperationLayout,xa as OptionLayout,an as Owner,Rg as PAIMint,Lb as PLATFORM_FEE_VAULT_AUTH_SEED,Rb as PLATFORM_SEED,vl as POOL_LOCK_ID_SEED,Ay as POOL_REWARD_VAULT_SEED,$a as POOL_SEED,ky as POOL_TICK_ARRAY_BITMAP_SEED,Ja as POOL_VAULT_SEED,Cb as POOL_VESTING_SEED,Ll as POSITION_SEED,Ze as Percent,$i as PlatformConfig,Fc as PoolFetchType,pi as PoolInfoLayout,_e as PoolUtils,Ui as PositionInfoLayout,Cy as PositionRewardInfoLayout,Wo as PositionUtils,ft as Price,CB as ProtocolPositionLayout,Zr as Q128,lt as Q64,Cg as RAYMint,at as RENT_PROGRAM_ID,Ns as Raydium,Ky as RewardInfo,dm as RoundDirection,Gs as Rounding,kp as Router,Tm as SERUM_PROGRAMID_TO_VERSION,Fr as SERUM_PROGRAM_ID_V3,Im as SERUM_VERSION_TO_PROGRAMID,Ec as SESSION_KEY,pt as SOLMint,bn as SOL_INFO,zl as SPL_MINT_LAYOUT,Lg as SRMMint,ba as STORAGE_KEY,Ty as SUPPORT_MINT_SEED,Kr as SYSTEM_PROGRAM_ID,ae as SqrtPriceMath,Xi as StableLayout,Sa as Structure,di as SwapMath,mi as TICK_ARRAY_BITMAP_SIZE,Py as TICK_ARRAY_SEED,mt as TICK_ARRAY_SIZE,mI as TICK_SPACINGS,dt as TOKEN_WSOL,Ln as TickArrayBitmap,_l as TickArrayBitmapExtensionLayout,Uo as TickArrayBitmapExtensionUtils,qo as TickArrayLayout,Ry as TickLayout,fi as TickMath,xe as TickQuery,J as TickUtils,Le as Token,Ke as TokenAmount,Dr as TxBuilder,Tn as TxVersion,_o as U64Resolution,pI as U64_IGNORE_RANGE,Ta as UInt,Ng as USDCMint,Fg as USDHMint,Og as USDTMint,Pp as UTIL1216,Ka as Union,vb as VestingSchedule,cl as Voter,ty as VoterDepositEntry,ey as VoterLockup,ul as VoterRegistrar,Jf as VoterVotingMintConfig,$ as WSOLMint,Yr as WideBits,Sn as WrappedLayout,ke as ZERO,Ac as _100_PERCENT,A as accountMeta,TA as add,Or as addComputeBudget,mu as addLiquidityLayout,zt as anchorDataBuf,zk as array,Na as associatedLedgerAccountLayout,Ia as bits,Re as blob,Xe as bool,Mm as buyExactInInstruction,vm as buyExactOutInstruction,za as calFarmRewardAmount,Rr as ceilDiv,ui as ceilDivBN,po as checkLegacyTxSize,dR as checkPoolToAmm,fo as checkV0TxSize,Es as chunkArray,Dm as claimCreatorFee,ar as claimLayout,Du as claimPlatformFee,Wu as claimPlatformFeeFromVault,_u as claimVestedToken,El as clmmComputeInfoToApiInfo,Kn as closeAccountInstruction,Iu as collectCpFeeInstruction,zs as commonSystemAccountMeta,Mr as confirmTransaction,Ab as cpmmLockPositionInstruction,No as createAssociatedLedgerAccountInstruction,Pe as createLogger,_m as createPlatformConfig,Hl as createPoolFeeLayout,fu as createPoolV4InstructionV2,gx as createPoolV4Layout,Vu as createVestingAccount,zn as createWSolAccountInstructions,Fk as cstr,Yg as currencyEquals,lp as decimalToFraction,Of as decodeBool,PA as div,Cr as divCeil,Ct as dwLayout,Mf as encodeBool,Ew as endlessRetry,rp as eq,Lk as f32,Nk as f32be,Ok as f64,Mk as f64be,Fa as farmAddRewardLayout,Dh as farmLedgerLayoutV3_1,Ko as farmLedgerLayoutV3_2,Wh as farmLedgerLayoutV5_1,sl as farmLedgerLayoutV5_2,al as farmLedgerLayoutV6_1,yl as farmRewardInfoToConfig,Ma as farmRewardLayout,va as farmRewardRestartLayout,$f as farmRewardTimeInfoLayout,ol as farmStateV3Layout,rl as farmStateV5Layout,So as farmStateV6Layout,yT as fetchMultipleFarmInfoAndUpdate,iS as fetchMultipleInfo,Si as fetchMultipleMintInfos,oe as findProgramAddress,uu as fixedSwapInLayout,cu as fixedSwapOutLayout,na as floorDiv,vr as forecastTransactionSize,Hy as formatLayout,Je as generatePubKey,Z as getATAAddress,fl as getAssociatedAuthority,as as getAssociatedConfigId,Tt as getAssociatedLedgerAccount,Ro as getAssociatedLedgerPoolAccount,Jy as getAssociatedOpenOrders,Pu as getAssociatedPoolKeys,tr as getCpLockPda,nC as getCpmmPdaAmmConfigId,hu as getCpmmPdaPoolId,fm as getCreatePoolKeys,Bc as getDate,Qa as getDepositEntryIndex,fa as getDevLookupTableCache,im as getDxByDyBaseIn,nm as getDyByDxBaseIn,yP as getEpochInfo,Di as getFarmLedgerLayout,iy as getFarmStateLayout,Au as getLiquidityAssociatedAuthority,Ai as getLiquidityAssociatedId,rB as getLiquidityFromAmounts,hA as getMax,nn as getMultipleAccountsInfo,Fe as getMultipleAccountsInfoWithCustomFlags,pa as getMultipleLookupTableInfo,wI as getPdaAmmConfigId,Ti as getPdaCpiEvent,Lm as getPdaCreatorFeeVaultAuth,Zi as getPdaCreatorVault,et as getPdaExBitmapAccount,wn as getPdaLaunchpadAuth,E1 as getPdaLaunchpadConfigId,ji as getPdaLaunchpadPoolId,Mu as getPdaLaunchpadVaultId,qi as getPdaLockClPositionIdV2,tu as getPdaLockPositionId,db as getPdaLpMint,Rn as getPdaMetadataKey,nu as getPdaMintExAccount,Ml as getPdaObservationAccount,er as getPdaObservationId,Do as getPdaOperationAccount,Lt as getPdaPersonalPositionAddress,Fu as getPdaPlatformFeeVaultAuth,vu as getPdaPlatformId,Ii as getPdaPlatformVault,Yi as getPdaPoolAuthority,Nl as getPdaPoolId,Ol as getPdaPoolRewardVaulId,eu as getPdaPoolVaultId,dn as getPdaProtocolPositionAddress,he as getPdaTickArrayAddress,pm as getPdaVault,cr as getPdaVestId,Ri as getRecentBlockHash,Da as getRegistrarAddress,Op as getSessionKey,om as getStablePrice,dp as getTime,CA as getTimestamp,Xa as getTokenOwnerRecordAddress,SP as getTransferAmountFee,ma as getTransferAmountFeeFromPost,la as getTransferAmountFeeFromPre,Ce as getTransferAmountFeeV2,Ua as getVoterAddress,Ga as getVoterWeightRecordAddress,qa as getVotingMintAuthority,Wa as getVotingTokenMint,dy as governanceCreateTokenOwnerRecord,ck as greedy,op as gt,AA as gte,el as i128,yI as i16ToBytes,ns as i32ToBytes,Ei as i64,Jc as i8,lu as initPoolLayout,Ra as initTokenAccountInstruction,Nm as initialize,ib as initializeMarket,Om as initializeWithToken2022,eP as intersection,Sc as isDateAfter,xc as isDateBefore,mp as isDecimal,kA as isMeaningfulNumber,Ic as isNumber,_a as isValidFarmVersion,Vo as isZero,Ve as jsonInfo2PoolKeys,bT as judgeFarmType,ja as leadingZeros,Rl as leastSignificantBit,yi as liquidityStateV4Layout,My as liquidityStateV5Layout,bA as lt,gA as lte,Mg as mSOLMint,ss as makeAMMSwapInstruction,$l as makeAddLiquidityInstruction,Ha as makeAddNewRewardInstruction,Ts as makeClaimInstruction,Ou as makeClaimInstructionV4,wm as makeCpmmLockInstruction,bm as makeCreateCpmmPoolInInstruction,bl as makeCreateFarmInstruction,cs as makeCreateMarketInstruction,gl as makeCreatorWithdrawFarmRewardInstruction,gm as makeDepositCpmmInInstruction,Pl as makeDepositInstructionV3,wl as makeDepositInstructionV5,kl as makeDepositInstructionV6,NT as makeDepositTokenInstruction,MT as makeDepositWithdrawInstruction,Rx as makeInitPoolInstructionV4,A1 as makePurchaseInstruction,Ya as makeRestartRewardInstruction,Jl as makeSimulatePoolInfoInstruction,bs as makeSwapCpmmBaseInInstruction,Pm as makeSwapCpmmBaseOutInstruction,Ey as makeSwapFixedInInstruction,_y as makeSwapFixedOutInstruction,Sm as makeSwapInstruction,il as makeTransferInstruction,Am as makeWithdrawCpmmInInstruction,vo as makeWithdrawInstructionV3,Al as makeWithdrawInstructionV4,Mo as makeWithdrawInstructionV5,Oo as makeWithdrawInstructionV6,OT as makeWithdrawTokenInstruction,un as minExpirationTime,dI as mockCreatePoolInfo,Kl as mockV3CreatePoolInfo,Dy as modelDataInfoLayout,Cl as mostSignificantBit,ea as mul,ta as notInnerObject,Ik as ns64,Rk as ns64be,Yc as nu64,Ak as nu64be,Ba as offset,$A as offsetDateTime,qk as option,ee as parseBigNumberish,si as parseNumberInfo,Oc as parseSimulateLogToJson,Bn as parseSimulateValue,nl as parseTokenAccountResp,ix as parseTokenInfo,Yn as poolTypeV6,ai as printSimulate,O as publicKey,Ru as purchaseLayout,Hf as realFarmStateV3Layout,jf as realFarmStateV5Layout,Zf as realFarmV6Layout,kc as recursivelyDecimalToFraction,pu as removeLiquidityInstruction,du as removeLiquidityLayout,h0 as route1Instruction,T0 as route2Instruction,kb as routeInstruction,Xk as rustEnum,wk as s16,Bk as s16be,kk as s24,xk as s24be,We as s32,Sk as s32be,hk as s40,Kk as s40be,Tk as s48,Ck as s48be,Pk as s8,Fm as sellExactInInstruction,Em as sellExactOut,H as seq,Wb as setLoggerLevel,up as shakeFractionDecimal,Nc as simulateMultipleInstruction,Cx as simulatePoolInfoInstruction,yp as simulateTransaction,Pc as sleep,kt as solToWSol,rx as solToWSolToken,mn as splAccountLayout,yc as splitNumber,vg as stSOLMint,vt as str,E as struct,wA as sub,I0 as swapBaseInAutoAccount,B0 as swapBaseOutAutoAccount,Gk as tagged,Js as tenExponential,us as toAmmComputePoolInfo,Bt as toApiV3Token,cp as toBN,Mc as toBuffer,Hn as toFeeConfig,Tc as toFraction,yA as toFractionWithDecimals,YA as toPercent,os as toToken,Xo as toTokenAmount,ox as toTokenInfo,HA as toTokenPrice,jA as toTotalPrice,wc as toUsdCurrency,Za as trailingZeros,bP as transformTxToBase64,Ys as tryParsePublicKey,bp as txToBase64,ne as u128,Dt as u16,ts as u16ToBytes,pk as u16be,lk as u24,fk as u24be,Pt as u32,bI as u32ToBytes,yk as u32be,mk as u40,bk as u40be,dk as u48,gk as u48be,w as u64,q as u8,Ob as u8ToBytes,Qk as union,RL as unionArr,vk as unionLayoutDiscriminator,nP as uniq,oy as updateFarmPoolInfo,Vm as updatePlatformConfig,Wr as updateReqHistory,Ek as utf8,Qs as validateAndParsePublicKey,Va as validateFarmRewards,Uk as vec,vf as vecU8,fy as voterStakeRegistryCreateDepositEntry,py as voterStakeRegistryCreateVoter,cy as voterStakeRegistryDeposit,ly as voterStakeRegistryUpdateVoterWeightRecord,my as voterStakeRegistryWithdraw,sx as wSolToSolToken,Oa as withdrawRewardLayout,tP as xor,Yk as zeros};
|
|
2
2
|
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
3
3
|
//# sourceMappingURL=index.mjs.map
|