@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 97.9 kB
JavaScript
var Do=Object.defineProperty,Wo=Object.defineProperties;var qo=Object.getOwnPropertyDescriptors;var Bt=Object.getOwnPropertySymbols;var Bn=Object.prototype.hasOwnProperty,Sn=Object.prototype.propertyIsEnumerable;var In=(a,e,t)=>e in a?Do(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,N=(a,e)=>{for(var t in e||(e={}))Bn.call(e,t)&&In(a,t,e[t]);if(Bt)for(var t of Bt(e))Sn.call(e,t)&&In(a,t,e[t]);return a},D=(a,e)=>Wo(a,qo(e));var Te=(a,e)=>{var t={};for(var o in a)Bn.call(a,o)&&e.indexOf(o)<0&&(t[o]=a[o]);if(a!=null&&Bt)for(var o of Bt(a))e.indexOf(o)<0&&Sn.call(a,o)&&(t[o]=a[o]);return t};import nt from"bn.js";import W from"bn.js";var X=new W(1).shln(64),qe=64,Uo=new W(1).shln(128),xe=new W(1).shln(64).subn(1),Go=new W(1).shln(128).subn(1),fe=-443636,ye=443636,Oe=new W("4295048016"),Ne=new W("79226673521066979257578248091"),Kn=new W("59543866431248"),xn=new W("184467440737095516"),Cn=new W("15793534762490258745"),Rn=16,St=512,me=60,qa=new W("18446743708227953217"),Ln=[{bit:0,factor:new W("fffcb933bd6fb800",16)},{bit:1,factor:new W("fff97272373d4000",16)},{bit:2,factor:new W("fff2e50f5f657000",16)},{bit:3,factor:new W("ffe5caca7e10f000",16)},{bit:4,factor:new W("ffcb9843d60f7000",16)},{bit:5,factor:new W("ff973b41fa98e800",16)},{bit:6,factor:new W("ff2ea16466c9b000",16)},{bit:7,factor:new W("fe5dee046a9a3800",16)},{bit:8,factor:new W("fcbe86c7900bb000",16)},{bit:9,factor:new W("f987a7253ac65800",16)},{bit:10,factor:new W("f3392b0822bb6000",16)},{bit:11,factor:new W("e7159475a2caf000",16)},{bit:12,factor:new W("d097f3bdfd2f2000",16)},{bit:13,factor:new W("a9f746462d9f8000",16)},{bit:14,factor:new W("70d869a156f31c00",16)},{bit:15,factor:new W("31be135f97ed3200",16)},{bit:16,factor:new W("9aa508b5b85a500",16)},{bit:17,factor:new W("5d6af8dedc582c",16)},{bit:18,factor:new W("2216e584f5fa",16)}],Ce=1e6;var Kt=1e5,it=1e4,On=1e4,Nn=1e5;var rt=3,Mn=100;var Fn=10,vn=100,Ue=14;var x=new W(0),he=new W(1),Ua=new W(-1);var Ga=new W("18446744073700000000");import Ct from"bn.js";import Dn from"decimal.js";import zo from"bn.js";import _n from"decimal.js";function $(a,e,t){if(t.isZero())throw new Error("Division by zero");return a.mul(e).div(t)}function H(a,e,t){if(t.isZero())throw new Error("Division by zero");let o=a.mul(e),i=o.div(t);return o.mod(t).isZero()?i:i.addn(1)}function xt(a,e){return a.div(e).add(a.mod(e).isZero()?x:he)}var Qa=new zo(1).shln(256).subn(1);function Vn(a){return a.isZero()?-1:a.bitLength()-1}function En(a,e){return new _n(a.toString()).div(_n.pow(2,64)).toDecimalPlaces(e)}var de=class{static getDeltaAmountAUnsigned(e,t,o,i){e.gt(t)&&([e,t]=[t,e]);let r=o.shln(qe),c=t.sub(e);if(!e.gt(x))throw Error("!sqrtPriceX64A.gt(BN_ZERO)");let u=i?xt(H(r,c,t),e):$(r,c,t).div(e);if(u.gt(xe))throw Error("MaxTokenOverflow");return u}static getDeltaAmountBUnsigned(e,t,o,i){e.gt(t)&&([e,t]=[t,e]);let r=i?H(o,t.sub(e),X):$(o,t.sub(e),X);if(r.gt(xe))throw Error("MaxTokenOverflow");return r}static addDelta(e,t){if(t.isNeg()){let o=t.neg();if(e.lt(o))throw new Error("Liquidity underflow");return e.sub(o)}else return e.add(t)}static getLiquidityFromAmountA(e,t,o){if(o.isZero())return x;e.gt(t)&&([e,t]=[t,e]);let i=$(e,t,X),r=t.sub(e);return $(o,i,r)}static getLiquidityFromAmountB(e,t,o){if(o.isZero())return x;e.gt(t)&&([e,t]=[t,e]);let i=t.sub(e);return $(o,X,i)}static getLiquidityFromAmounts(e,t,o,i,r){if(t.gt(o)&&([t,o]=[o,t]),e.lte(t))return this.getLiquidityFromAmountA(t,o,i);if(e.lt(o)){let c=this.getLiquidityFromAmountA(e,o,i),u=this.getLiquidityFromAmountB(t,e,r);return c.lt(u)?c:u}else return this.getLiquidityFromAmountB(t,o,r)}static getAmountsForLiquidity(e,t,o,i,r){t.gt(o)&&([t,o]=[o,t]);let c=x,u=x;return e.lte(t)?c=this.getDeltaAmountAUnsigned(t,o,i,r):e.lt(o)?(c=this.getDeltaAmountAUnsigned(e,o,i,r),u=this.getDeltaAmountBUnsigned(t,e,i,r)):u=this.getDeltaAmountBUnsigned(t,o,i,r),{amountA:c,amountB:u}}static getAmountsFromLiquidityWithSlippage(e,t,o,i,r,c,u){let{amountA:p,amountB:d}=this.getAmountsForLiquidity(e,t,o,i,c),y=r?1+u:1-u,P=new Ct(new Dn(p.toString()).mul(y).toFixed(0)),k=new Ct(new Dn(d.toString()).mul(y).toFixed(0));return{amountSlippageA:P,amountSlippageB:k}}static getLiquidityAndAmountsFromAmount({sqrtPriceCurrentX64:e,sqrtPriceLowerX64:t,sqrtPriceUpperX64:o,amountInfo:i}){let r;if(i.type==="liquidity")r=i.amount;else if(i.type==="amountA")r=e.gte(o)?x:this.getLiquidityFromAmountA(Ct.max(e,t),o,i.amount);else if(i.type==="amountB")r=e.lte(t)?x:this.getLiquidityFromAmountB(t,Ct.min(e,o),i.amount);else throw Error("amount info type check error");return N({liquidity:r},this.getAmountsForLiquidity(e,t,o,i.amount,!0))}};import{PublicKey as Vo}from"@solana/web3.js";import Tn from"bn.js";import{PublicKey as oi}from"@solana/web3.js";import zn,{isBN as Xn}from"bn.js";import{bits as Xo,BitStructure as os,blob as Yo,Blob as is,cstr as rs,f32 as as,f32be as ss,f64 as us,f64be as cs,greedy as ls,Layout as Ho,ns64 as ms,ns64be as ds,nu64 as ps,nu64be as fs,offset as Qo,s16 as ys,s16be as bs,s24 as gs,s24be as Ps,s32 as Zo,s32be as As,s40 as ws,s40be as ks,s48 as Ts,s48be as hs,s8 as Is,seq as $o,struct as Bs,Structure as jo,u16 as Jo,u16be as Ss,u24 as Ks,u24be as xs,u32 as ei,u32be as Cs,u40 as Rs,u40be as Ls,u48 as Os,u48be as Ns,u8 as ti,UInt as ni,union as Ms,Union as Fs,unionLayoutDiscriminator as vs,utf8 as _s}from"@solana/buffer-layout";var Rt=Ho,Wn=jo;var Ht=ni;var qn=ti,j=Jo;var Lt=ei;var Pe=Zo;var Un=$o;var E=Yo;var Qt=Xo,Gn=Qo;var ve=class extends Rt{constructor(t,o,i){super(t,i);this.blob=E(t),this.signed=o}decode(t,o=0){let i=new zn(this.blob.decode(t,o),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,o,i=0){return typeof t=="number"&&(t=new zn(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),o,i)}},Ot=class extends Rt{constructor(t){super(8,t);this._lower=Qt(Lt(),!1),this._upper=Qt(Lt(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,o=0){let i=this._lower.decode(t,o),r=this._upper.decode(t,o+this._lower.span);return N(N({},i),r)}encode(t,o,i=0){return this._lower.encode(t,o,i)+this._upper.encode(t,o,i+this._lower.span)}};function b(a){return new Ht(1,a)}function Q(a){return new Ht(4,a)}function n(a){return new ve(8,!1,a)}function M(a){return new ve(16,!1,a)}function Yn(a){return new ve(1,!0,a)}function Ge(a){return new ve(8,!0,a)}function Hn(a){return new ve(16,!0,a)}var at=class extends Rt{constructor(t,o,i,r){super(t.span,r);this.layout=t,this.decoder=o,this.encoder=i}decode(t,o){return this.decoder(this.layout.decode(t,o))}encode(t,o,i){return this.layout.encode(this.encoder(t),o,i)}getSpan(t,o){return this.layout.getSpan(t,o)}};function s(a){return new at(E(32),e=>new oi(e),e=>e.toBuffer(),a)}function be(a){return new at(qn(),ii,ri,a)}function ii(a){if(a===0)return!1;if(a===1)return!0;throw new Error("Invalid bool: "+a)}function ri(a){return a?1:0}function $t(a,e){let t=Lt("length"),o=g([t,A(a,Gn(t,-t.span),"values")]);return new at(o,({values:i})=>i,i=>({values:i}),e)}var Zt=class extends Wn{decode(e,t){return super.decode(e,t)}};function g(a,e,t){return new Zt(a,e,t)}function A(a,e,t){let o,i=typeof e=="number"?e:Xn(e)?e.toNumber():new Proxy(e,{get(r,c){if(!o){let u=Reflect.get(r,"count");o=Xn(u)?u.toNumber():u,Reflect.set(r,"count",o)}return Reflect.get(r,c)},set(r,c,u){return c==="count"&&(o=u),Reflect.set(r,c,u)}});return Un(a,i,t)}var ai=g([E(8),b("bump"),j("index"),s("owner"),Q("protocolFeeRate"),Q("tradeFeeRate"),j("tickSpacing"),Q("fundFeeRate"),A(Q(),1),s("fundOwner"),A(n(),3)]),si=g([Q("blockTimestamp"),Ge("tickCumulative"),A(n(),4)]),Qn=g([E(8),be("initialized"),n("recentEpoch"),j("observationIndex"),s("poolId"),A(si,Mn,"observations"),A(n(),4)]),ui=g([j("filterPeriod"),j("decayPeriod"),j("reductionFactor"),Q("dynamicFeeControl"),Q("maxVolatilityAccumulator"),Pe("tickSpacingIndexReference"),Q("volatilityReference"),Q("volatilityAccumulator"),n("lastUpdateTimestamp"),A(b(),46)]),ci=g([b("state"),n("openTime"),n("endTime"),n("lastUpdateTime"),M("emissionsPerSecondX64"),n("totalEmissioned"),n("claimed"),s("mint"),s("vault"),s("creator"),M("growthGlobalX64")]),jt=g([E(8),b("bump"),s("configId"),s("creator"),s("mintA"),s("mintB"),s("vaultA"),s("vaultB"),s("observationId"),b("mintDecimalsA"),b("mintDecimalsB"),j("tickSpacing"),M("liquidity"),M("sqrtPriceX64"),Pe("tickCurrent"),Q(),M("feeGrowthGlobalX64A"),M("feeGrowthGlobalX64B"),n("protocolFeesTokenA"),n("protocolFeesTokenB"),A(M(),4),b("status"),b("feeOn"),E(6),A(ci,rt,"rewardInfos"),E(8*16,"tickArrayBitmap"),A(n(),4),n("fundFeesTokenA"),n("fundFeesTokenB"),n("startTime"),n("recentEpoch"),ui.replicate("dynamicFeeInfo"),A(n(),46)]),li=g([M("growthInsideLastX64"),n("rewardAmountOwed")]),mi=g([E(8),b("bump"),s("nftMint"),s("poolId"),Pe("tickLower"),Pe("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),A(li,rt,"rewardInfos"),n("recentEpoch"),A(n(),7)]),Qs=g([E(8),b("bump"),s("poolId"),Pe("tickLower"),Pe("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),A(M(),rt,"rewardGrowthInside"),n("recentEpoch"),A(n(),7)]),di=g([Pe("tick"),Hn("liquidityNet"),M("liquidityGross"),M("feeGrowthOutsideX64A"),M("feeGrowthOutsideX64B"),A(M(),rt,"rewardGrowthsOutsideX64"),n("orderPhase"),n("ordersAmount"),n("partFilledOrdersRemaining"),M("unfilledRatioX64"),A(Q(),3)]),Zn=g([E(8),s("poolId"),Pe("startTickIndex"),A(di,me,"ticks"),b("initializedTickCount"),n("recentEpoch"),A(b(),107)]),pi=g([E(8),b("bump"),A(s(),Fn,"operationOwners"),A(s(),vn,"whitelistMints")]),fi=g([E(8),s("poolId"),s("owner"),Pe("tick"),be("zeroForOne"),n("orderPhase"),n("totalAmount"),n("filledAmount"),n("settleBase"),n("settleOutput"),n("openTime"),M("unfilledRatioX64"),A(n(),4)]),$n=g([E(8),s("poolId"),E(8*8*Ue,"positiveTickArrayBitmap"),E(8*8*Ue,"negativeTickArrayBitmap")]),Zs=g([E(8),j("index"),j("filterPeriod"),j("decayPeriod"),j("reductionFactor"),Q("dynamicFeeControl"),Q("maxVolatilityAccumulator"),A(n(),8)]),yi=g([E(8),s("wallet"),b("nonceIndex"),n("orderNonce"),A(n(),4)]),$s=g([n(),b("bump"),s("owner"),s("poolId"),s("positionId"),s("nftAccount"),A(n(),8)]),bi=g([E(8),b("bump"),s("lockOwner"),s("poolId"),s("positionId"),s("nftAccount"),s("lockNftMint"),n("recentEpoch"),A(n(),8)]);import{PublicKey as Ai}from"@solana/web3.js";import{get as jn,set as gi}from"lodash";var Jt=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(o=>typeof o=="object"?JSON.stringify(o):o).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}},Jn={},Pi={};function q(a){let e=jn(Jn,a);if(!e){let t=jn(Pi,a);e=new Jt({name:a,logLevel:t}),gi(Jn,a,e)}return e}import{MINT_SIZE as uu,TOKEN_PROGRAM_ID as cu,getTransferFeeConfig as lu,unpackMint as mu}from"@solana/spl-token";var en=q("Raydium_accountInfo_util");async function Re(a,e,t){let{batchRequest:o,commitment:i="confirmed",chunkCount:r=100}=N({batchRequest:!1},t),c=tn(e,r),u=new Array(c.length).fill([]);if(o){let p=c.map(P=>{let k=a._buildArgs([P.map(w=>w.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:k}}),d=tn(p,10);u=(await(await Promise.all(d.map(async P=>await a._rpcBatchRequest(P)))).flat()).map(P=>(P.error&&en.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${P.error.message}`),P.result.value.map(k=>{if(k){let{data:w,executable:C,lamports:h,owner:I,rentEpoch:B}=k;return w.length!==2&&w[1]!=="base64"&&en.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(w[0],"base64"),executable:C,lamports:h,owner:new Ai(I),rentEpoch:B}}return null})))}else try{u=await Promise.all(c.map(p=>a.getMultipleAccountsInfo(p,i)))}catch(p){p instanceof Error&&en.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${p.message}`)}return u.flat()}import De from"bn.js";import NC from"decimal.js";import Ki from"big.js";import xu from"bn.js";import wi from"toformat";var ki=wi,ut=ki;import Mt from"big.js";import hi from"bn.js";import Ii from"decimal.js-light";import ct from"bn.js";var eo=9007199254740991;function ce(a){let e=q("Raydium_parseBigNumberish");if(a instanceof ct)return a;if(typeof a=="string"){if(a.match(/^-?[0-9]+$/))return new ct(a);e.logWithError(`invalid BigNumberish string: ${a}`)}return typeof a=="number"?(a%1&&e.logWithError(`BigNumberish number underflow: ${a}`),(a>=eo||a<=-eo)&&e.logWithError(`BigNumberish number overflow: ${a}`),new ct(String(a))):typeof a=="bigint"?new ct(a.toString()):(e.error(`invalid BigNumberish value: ${a}`),new ct(0))}var Nt=q("module/fraction"),nn=ut(Mt),lt=ut(Ii),Bi={[0]:lt.ROUND_DOWN,[1]:lt.ROUND_HALF_UP,[2]:lt.ROUND_UP},Si={[0]:Mt.roundDown,[1]:Mt.roundHalfUp,[2]:Mt.roundUp},Y=class{constructor(e,t=new hi(1)){this.numerator=ce(e),this.denominator=ce(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new Y(this.denominator,this.numerator)}add(e){let t=e instanceof Y?e:new Y(ce(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.add(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof Y?e:new Y(ce(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.sub(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof Y?e:new Y(ce(e));return new Y(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof Y?e:new Y(ce(e));return new Y(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},o=1){Number.isInteger(e)||Nt.logWithError(`${e} is not an integer.`),e<=0&&Nt.logWithError(`${e} is not positive.`),lt.set({precision:e+1,rounding:Bi[o]});let i=new lt(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},o=1){return Number.isInteger(e)||Nt.logWithError(`${e} is not an integer.`),e<0&&Nt.logWithError(`${e} is negative.`),nn.DP=e,nn.RM=Si[o]||1,new nn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var _u=q("Raydium_amount"),Vu=ut(Ki);import{PublicKey as Ci}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as to}from"@solana/spl-token";var Ft={chainId:101,address:Ci.default.toBase58(),programId:to.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Ie={chainId:101,address:"So11111111111111111111111111111111111111112",programId:to.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 rn}from"@solana/web3.js";import{PublicKey as Z,SystemProgram as no,SYSVAR_RENT_PUBKEY as Ri}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Li}from"@solana/spl-token";function ze({pubkey:a,isSigner:e=!1,isWritable:t=!0}){return{pubkey:a,isWritable:t,isSigner:e}}var Oi=[ze({pubkey:Li,isWritable:!1}),ze({pubkey:no.programId,isWritable:!1}),ze({pubkey:Ri,isWritable:!1})];function oo({publicKey:a,transformSol:e}){let t=io(a.toString());if(t instanceof Z)return e&&t.equals(_e)?Le:t;if(e&&t.toString()===_e.toBase58())return Le;if(typeof t=="string"){if(t===Z.default.toBase58())return Z.default;try{return new Z(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function io(a){try{return new Z(a)}catch{return a}}var on=new Z("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),mt=new Z("SysvarRent111111111111111111111111111111111"),Xu=new Z("SysvarC1ock11111111111111111111111111111111"),vt=new Z("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Ni=new Z("Sysvar1nstructions1111111111111111111111111"),Mi=no.programId,Yu=new Z("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Hu=new Z("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Qu=new Z("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Zu=new Z("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),$u=new Z("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),ju=new Z("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ju=new Z("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),ec=new Z("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),tc=new Z("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),nc=new Z("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),oc=new Z("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Le=new Z("So11111111111111111111111111111111111111112"),_e=Z.default;var an=class{constructor({mint:e,decimals:t,symbol:o,name:i,skipMint:r=!1,isToken2022:c=!1}){if(e===_e.toBase58()||e instanceof rn&&_e.equals(e)){this.decimals=Ie.decimals,this.symbol=Ie.symbol,this.name=Ie.name,this.mint=new rn(Ie.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=o||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=r?rn.default:oo({publicKey:e}),this.isToken2022=c}equals(e){return this===e?!0:this.mint.equals(e.mint)}},se=an;se.WSOL=new an(D(N({},Ie),{mint:Ie.address}));var sn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:o="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=o}equals(e){return this===e}},_t=sn;_t.SOL=new sn(Ft);import Fi from"bn.js";var yc=new Y(new Fi(100));var kc=q("Raydium_price");import{merge as Fx}from"lodash";import Rc from"axios";var ro={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",TEMP_HOST:"https://temp-api-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",CLMM_DYNAMIC_CONFIG:"/main/clmm-dynamic-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/v2/tag?query=verified",POOL_LIST:"/pools/info/list-v2",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/list-v2",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_STAKE_FARMS:"/position/stake/{owner}",OWNER_LOCK_POSITION:"/position/clmm-lock/{owner}",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",LAUNCH_AUTH_HOST:"https://launch-auth-v1.raydium.io",LAUNCH_COMMENT_HOST:"hhttps://launch-forum-v1.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1.raydium.io"},vi=D(N({},ro),{BASE_HOST:"https://api-v3-devnet.raydium.io",OWNER_BASE_HOST:"https://owner-v1-devnet.raydium.io",SWAP_HOST:"https://transaction-v1-devnet.raydium.io",CPMM_LOCK:"https://dynamic-ipfs-devnet.raydium.io/lock/cpmm/position",TEMP_HOST:"https://temp-api-v1-devnet.raydium.io",LAUNCH_AUTH_HOST:"https://launch-auth-v1-devnet.raydium.io",LAUNCH_COMMENT_HOST:"https://launch-forum-v1-devnet.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1-devnet.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1-devnet.raydium.io"});var Jc=q("Raydium_Api");import{PublicKey as Km,SystemProgram as xm}from"@solana/web3.js";import{AccountLayout as Nm,createAssociatedTokenAccountIdempotentInstruction as Mm,TOKEN_PROGRAM_ID as Fm,TOKEN_2022_PROGRAM_ID as vm}from"@solana/spl-token";import{PublicKey as Ze,sendAndConfirmTransaction as pn,SystemProgram as qi,Transaction as ft,TransactionMessage as yt,VersionedTransaction as bt}from"@solana/web3.js";import Ui from"axios";import{PublicKey as un,AddressLookupTableAccount as He}from"@solana/web3.js";async function cn({connection:a,address:e,cluster:t="mainnet"}){let o=await Re(a,[...new Set(e.map(r=>r.toString()))].map(r=>new un(r))),i={};for(let r=0;r<e.length;r++){let c=o[r],u=e[r];if(!c)continue;let p=new He({key:u,state:He.deserialize(c.data)});i[u.toString()]=p,t==="devnet"?Ye[u.toString()]=p:Xe[u.toString()]=p}return i}var Xe={},ln=async a=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Xe[e])return Xe;let t=new un(e),o=await a.getAccountInfo(t);return o&&(Xe[e]=new He({key:t,state:He.deserialize(o.data)})),Xe},Ye={},mn=async a=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Ye[e])return Ye;let t=new un(e),o=await a.getAccountInfo(t);return o&&(Ye[e]=new He({key:t,state:He.deserialize(o.data)})),Ye};var oe={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",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{ComputeBudgetProgram as ao,Keypair as uo,PublicKey as _i,Transaction as co,TransactionMessage as Vi,VersionedTransaction as lo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ei}from"@solana/spl-token";var so=q("Raydium_txUtil"),mo=1644;function Vt(a){let e=[],t=[];return a.microLamports&&(e.push(ao.setComputeUnitPrice({microLamports:a.microLamports})),t.push(oe.SetComputeUnitPrice)),a.units&&(e.push(ao.setComputeUnitLimit({units:a.units})),t.push(oe.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Qe(a,e){var o,i;let t=e!=null?e:"confirmed";return(i=await((o=a.getLatestBlockhash)==null?void 0:o.call(a,{commitment:t})))==null?void 0:i.blockhash}async function Et(a,e){return a.getSignatureStatuses([e]),new Promise((t,o)=>{let i=setTimeout(o,6e4);a.onSignature(e,r=>{if(clearTimeout(i),!r.err){t("");return}o(Object.assign(r.err,{txId:e}))},"confirmed")})}function dn(a,e){a.length<1&&so.logWithError(`no instructions provided: ${a.toString()}`),e.length<1&&so.logWithError(`no signers provided:, ${e.toString()}`);let t=new co;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...a);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<mo}catch{return!1}}function Ae(a,e){let[t,o]=_i.findProgramAddressSync(a,e);return{publicKey:t,nonce:o}}function dt({instructions:a,payer:e,signers:t}){return dn(a,[e,...t])}function pt({instructions:a,payer:e,lookupTableAddressAccount:t,recentBlockhash:o=uo.generate().publicKey.toString()}){let r=new Vi({payerKey:e,recentBlockhash:o,instructions:a}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new lo(r).serialize()).toString("base64").length<mo}catch{return!1}}var Di=a=>Buffer.isBuffer(a)?a:a instanceof Uint8Array?Buffer.from(a.buffer,a.byteOffset,a.byteLength):Buffer.from(a),Wi=a=>{let e=a.serialize({requireAllSignatures:!1,verifySignatures:!1});a instanceof lo&&(e=Di(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Ve(a){let e=[];return a.forEach(t=>{t instanceof co&&(t.recentBlockhash||(t.recentBlockhash=Ei.toBase58()),t.feePayer||(t.feePayer=uo.generate().publicKey)),e.push(Wi(t))}),console.log("simulate tx string:",e),e}var Dt=2e3,Wt=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 o;let e=(await Ui.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(o=e==null?void 0:e[15])!=null?o:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:o}=Vt(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(qi.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new Ze(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(oe.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let o=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(o))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:o=[],instructionTypes:i=[],endInstructionTypes:r=[],lookupTableAddress:c=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...o),this.instructionTypes.push(...i),this.endInstructionTypes.push(...r),this.lookupTableAddress.push(...c.filter(u=>u!==Ze.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:o}){return e===0?await this.buildV0(D(N({},t||{}),{lookupTableAddress:o})):this.build(t)}build(e){var o;let t=new ft;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((o=this.owner)==null?void 0:o.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 y;let{recentBlockHash:r,skipPreflight:c=!0,sendAndConfirm:u,notSendToRpc:p}=i||{},d=r!=null?r:await Qe(this.connection,this.blockhashCommitment);if(t.recentBlockhash=d,this.signers.length&&t.sign(...this.signers),Ve([t]),(y=this.owner)!=null&&y.isKeyPair)return{txId:u?await pn(this.connection,t,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:c}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:c}),signedTx:t};if(this.signAllTransactions){let P=await this.signAllTransactions([t]);if(this.signers.length)for(let k of P)try{k.sign(...this.signers)}catch{}return{txId:p?"":await this.connection.sendRawTransaction(P[0].serialize(),{skipPreflight:c}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var d;let{extraPreBuildData:t=[],extInfo:o}=e,{transaction:i}=this.build(o),r=t.filter(y=>y.transaction.instructions.length>0),c=[i,...r.map(y=>y.transaction)],u=[this.signers,...r.map(y=>y.signers)],p=[...this.instructionTypes,...r.map(y=>y.instructionTypes).flat()];return(d=this.owner)!=null&&d.signer&&u.forEach(y=>{y.some(P=>P.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:c,signers:u,instructionTypes:p,execute:async y=>{var B;let{sequentially:P,onTxUpdate:k,skipTxCount:w=0,recentBlockHash:C,skipPreflight:h=!0}=y||{},I=C!=null?C:await Qe(this.connection,this.blockhashCommitment);if((B=this.owner)!=null&&B.isKeyPair){if(P){let S=[],F=0;for(let v of c){if(++F,F<=w)continue;let f=await pn(this.connection,v,this.signers.find(T=>T.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:h});S.push(f)}return{txIds:S,signedTxs:c}}return{txIds:await await Promise.all(c.map(async S=>(S.recentBlockhash=I,await this.connection.sendRawTransaction(S.serialize(),{skipPreflight:h})))),signedTxs:c}}if(this.signAllTransactions){let S=c.map((v,f)=>(v.recentBlockhash=I,u[f].length&&v.sign(...u[f]),v));Ve(S);let F=await this.signAllTransactions(S);if(P){let v=0,f=[],T=async()=>{if(!F[v])return;let K=await this.connection.sendRawTransaction(F[v].serialize(),{skipPreflight:h});f.push({txId:K,status:"sent",signedTx:F[v]}),k==null||k([...f]),v++;let O=!1,L=null,_=null,re=z=>{L!==null&&clearInterval(L),_!==null&&this.connection.removeSignatureListener(_);let V=f.findIndex(ee=>ee.txId===K);if(V>-1){if(f[V].status==="error"||f[V].status==="success")return;f[V].status=z.err?"error":"success"}k==null||k([...f]),z.err||T()};this.loopMultiTxStatus&&(L=setInterval(async()=>{var z;if(O){clearInterval(L);return}try{let V=await this.connection.getTransaction(K,{commitment:"confirmed",maxSupportedTransactionVersion:1});V&&(O=!0,clearInterval(L),re({err:((z=V.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",K))}catch(V){O=!0,clearInterval(L),console.error("getTransaction timeout:",V,K)}},Dt)),_=this.connection.onSignature(K,z=>{if(O){this.connection.removeSignatureListener(_);return}O=!0,re(z)},"confirmed"),this.connection.getSignatureStatus(K)};return await T(),{txIds:f.map(K=>K.txId),signedTxs:F}}else{let v=[];for(let f=0;f<F.length;f+=1){let T=await this.connection.sendRawTransaction(F[f].serialize(),{skipPreflight:h});v.push(T)}return{txIds:v,signedTxs:F}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:o}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:o||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:o})}async buildV0(e){var h;let C=e||{},{lookupTableCache:t={},lookupTableAddress:o=[],forerunCreate:i,recentBlockhash:r}=C,c=Te(C,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),u=N(N({},this.cluster==="devnet"?await mn(this.connection):await ln(this.connection)),t),p=Array.from(new Set([...o,...this.lookupTableAddress])),d=[];for(let I of p)u[I]===void 0&&d.push(new Ze(I));let y=await cn({connection:this.connection,address:d});for(let[I,B]of Object.entries(y))u[I]=B;let P=i?Ze.default.toBase58():r!=null?r:await Qe(this.connection,this.blockhashCommitment),k=new yt({payerKey:this.feePayer,recentBlockhash:P,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(u));((h=this.owner)==null?void 0:h.signer)&&!this.signers.some(I=>I.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let w=new bt(k);return w.sign(this.signers),{builder:this,transaction:w,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async I=>{var v;let{skipPreflight:B=!0,sendAndConfirm:S,notSendToRpc:F}=I||{};if(Ve([w]),(v=this.owner)!=null&&v.isKeyPair){let f=await this.connection.sendTransaction(w,{skipPreflight:B});return S&&await Et(this.connection,f),{txId:f,signedTx:w}}if(this.signAllTransactions){let f=await this.signAllTransactions([w]);if(this.signers.length)for(let T of f)try{T.sign(this.signers)}catch{}return{txId:F?"":await this.connection.sendTransaction(f[0],{skipPreflight:B}),signedTx:f[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:c||{}}}async buildV0MultiTx(e){var d;let{extraPreBuildData:t=[],buildProps:o}=e,{transaction:i}=await this.buildV0(o),r=t.filter(y=>y.builder.instructions.length>0),c=[i,...r.map(y=>y.transaction)],u=[this.signers,...r.map(y=>y.signers)],p=[...this.instructionTypes,...r.map(y=>y.instructionTypes).flat()];return(d=this.owner)!=null&&d.signer&&u.forEach(y=>{y.some(P=>P.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),c.forEach(async(y,P)=>{y.sign(u[P])}),{builder:this,transactions:c,signers:u,instructionTypes:p,buildProps:o,execute:async y=>{var h;let{sequentially:P,onTxUpdate:k,recentBlockHash:w,skipPreflight:C=!0}=y||{};if(w&&c.forEach(I=>I.message.recentBlockhash=w),Ve(c),(h=this.owner)!=null&&h.isKeyPair){if(P){let I=[];for(let B of c){let S=await this.connection.sendTransaction(B,{skipPreflight:C});await Et(this.connection,S),I.push(S)}return{txIds:I,signedTxs:c}}return{txIds:await Promise.all(c.map(async I=>await this.connection.sendTransaction(I,{skipPreflight:C}))),signedTxs:c}}if(this.signAllTransactions){let I=await this.signAllTransactions(c);if(P){let B=0,S=[],F=async()=>{if(!I[B])return;let v=await this.connection.sendTransaction(I[B],{skipPreflight:C});S.push({txId:v,status:"sent",signedTx:I[B]}),k==null||k([...S]),B++;let f=!1,T=null,K=null,O=L=>{T!==null&&clearInterval(T),K!==null&&this.connection.removeSignatureListener(K);let _=S.findIndex(re=>re.txId===v);if(_>-1){if(S[_].status==="error"||S[_].status==="success")return;S[_].status=L.err?"error":"success"}k==null||k([...S]),L.err||F()};this.loopMultiTxStatus&&(T=setInterval(async()=>{var L;if(f){clearInterval(T);return}try{let _=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:1});_&&(f=!0,clearInterval(T),O({err:((L=_.meta)==null?void 0:L.err)||null}),console.log("tx status from getTransaction:",v))}catch(_){f=!0,clearInterval(T),console.error("getTransaction timeout:",_,v)}},Dt)),K=this.connection.onSignature(v,L=>{if(f){this.connection.removeSignatureListener(K);return}f=!0,O(L)},"confirmed"),this.connection.getSignatureStatus(v)};return F(),{txIds:[],signedTxs:I}}else{let B=[];for(let S=0;S<I.length;S+=1){let F=await this.connection.sendTransaction(I[S],{skipPreflight:C});B.push(F)}return{txIds:B,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var k;let P=e||{},{splitIns:t=[],computeBudgetConfig:o}=P,i=Te(P,["splitIns","computeBudgetConfig"]),r=o?Vt(o):{instructions:[],instructionTypes:[]},c=this.signers.reduce((w,C)=>D(N({},w),{[C.publicKey.toBase58()]:C}),{}),u=[],p=[],d=[],y=0;if(this.allInstructions.forEach(w=>{let C=[...d,w],h=o?[...r.instructions,...C]:C,B=[...new Set(C.map(S=>S.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat()).values()].map(S=>new Ze(S));if(w!==t[y]&&d.length<12&&(dt({instructions:h,payer:this.feePayer,signers:B})||dt({instructions:C,payer:this.feePayer,signers:B})))d.push(w);else{if(d.length===0)throw Error("item ins too big");y+=w===t[y]?1:0,dt({instructions:o?[...r.instructions,...d]:[...d],payer:this.feePayer,signers:B})?u.push(new ft().add(...r.instructions,...d)):u.push(new ft().add(...d)),p.push(Array.from(new Set(d.map(S=>S.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat())).map(S=>c[S]).filter(S=>S!==void 0)),d=[w]}}),d.length>0){let C=[...new Set(d.map(h=>h.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat()).values()].map(h=>c[h]).filter(h=>h!==void 0);dt({instructions:o?[...r.instructions,...d]:[...d],payer:this.feePayer,signers:C.map(h=>h.publicKey)})?u.push(new ft().add(...r.instructions,...d)):u.push(new ft().add(...d)),p.push(C)}return u.forEach(w=>w.feePayer=this.feePayer),(k=this.owner)!=null&&k.signer&&p.forEach(w=>{w.some(C=>C.publicKey.equals(this.owner.publicKey))||w.push(this.owner.signer)}),{builder:this,transactions:u,signers:p,instructionTypes:this.instructionTypes,execute:async w=>{var v;let{sequentially:C,onTxUpdate:h,skipTxCount:I=0,recentBlockHash:B,skipPreflight:S=!0}=w||{},F=B!=null?B:await Qe(this.connection,this.blockhashCommitment);if(u.forEach(async(f,T)=>{f.recentBlockhash=F,p[T].length&&f.sign(...p[T])}),Ve(u),(v=this.owner)!=null&&v.isKeyPair){if(C){let f=0,T=[];for(let K of u){if(++f,f<=I){T.push("tx skipped");continue}let O=await pn(this.connection,K,this.signers.find(L=>L.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:S});T.push(O)}return{txIds:T,signedTxs:u}}return{txIds:await Promise.all(u.map(async f=>await this.connection.sendRawTransaction(f.serialize(),{skipPreflight:S}))),signedTxs:u}}if(this.signAllTransactions){let f=await this.signAllTransactions(u.slice(I,u.length)),T=[...u.slice(0,I),...f];if(C){let K=0,O=[],L=async()=>{if(!T[K])return;K<I&&(O.push({txId:"",status:"success",signedTx:T[K]}),h==null||h([...O]),K++,L());let _=await this.connection.sendRawTransaction(T[K].serialize(),{skipPreflight:S});O.push({txId:_,status:"sent",signedTx:T[K]}),h==null||h([...O]),K++;let re=!1,z=null,V=null,ee=G=>{z!==null&&clearInterval(z),V!==null&&this.connection.removeSignatureListener(V);let ae=O.findIndex(Se=>Se.txId===_);if(ae>-1){if(O[ae].status==="error"||O[ae].status==="success")return;O[ae].status=G.err?"error":"success"}h==null||h([...O]),G.err||L()};this.loopMultiTxStatus&&(z=setInterval(async()=>{var G;if(re){clearInterval(z);return}try{let ae=await this.connection.getTransaction(_,{commitment:"confirmed",maxSupportedTransactionVersion:1});ae&&(re=!0,clearInterval(z),ee({err:((G=ae.meta)==null?void 0:G.err)||null}),console.log("tx status from getTransaction:",_))}catch(ae){re=!0,clearInterval(z),console.error("getTransaction timeout:",ae,_)}},Dt)),V=this.connection.onSignature(_,G=>{if(re){this.connection.removeSignatureListener(V);return}re=!0,ee(G)},"confirmed"),this.connection.getSignatureStatus(_)};return await L(),{txIds:O.map(_=>_.txId),signedTxs:T}}else{let K=[];for(let O=0;O<T.length;O+=1){let L=await this.connection.sendRawTransaction(T[O].serialize(),{skipPreflight:S});K.push(L)}return{txIds:K,signedTxs:T}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var v;let F=e||{},{computeBudgetConfig:t,splitIns:o=[],lookupTableCache:i={},lookupTableAddress:r=[],insCountLimit:c=12}=F,u=Te(F,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),p=N(N({},this.cluster==="devnet"?await mn(this.connection):await ln(this.connection)),i),d=Array.from(new Set([...this.lookupTableAddress,...r])),y=[];for(let f of d)p[f]===void 0&&y.push(new Ze(f));let P=await cn({connection:this.connection,address:y});for(let[f,T]of Object.entries(P))p[f]=T;let k=t?Vt(t):{instructions:[],instructionTypes:[]},w=await Qe(this.connection,this.blockhashCommitment),C=this.signers.reduce((f,T)=>D(N({},f),{[T.publicKey.toBase58()]:T}),{}),h=[],I=[],B=[],S=0;if(this.allInstructions.forEach(f=>{let T=[...B,f],K=t?[...k.instructions,...T]:T;if(f!==o[S]&&B.length<c&&(pt({instructions:K,payer:this.feePayer,lookupTableAddressAccount:p})||pt({instructions:T,payer:this.feePayer,lookupTableAddressAccount:p})))B.push(f);else{if(B.length===0)throw Error("item ins too big");S+=f===o[S]?1:0;let O={};for(let L of[...new Set(d)])p[L]!==void 0&&(O[L]=p[L]);if(t&&pt({instructions:[...k.instructions,...B],payer:this.feePayer,lookupTableAddressAccount:p,recentBlockhash:w})){let L=new yt({payerKey:this.feePayer,recentBlockhash:w,instructions:[...k.instructions,...B]}).compileToV0Message(Object.values(p));h.push(new bt(L))}else{let L=new yt({payerKey:this.feePayer,recentBlockhash:w,instructions:[...B]}).compileToV0Message(Object.values(p));h.push(new bt(L))}I.push(Array.from(new Set(B.map(L=>L.keys.filter(_=>_.isSigner).map(_=>_.pubkey.toString())).flat())).map(L=>C[L]).filter(L=>L!==void 0)),B=[f]}}),B.length>0){let T=[...new Set(B.map(K=>K.keys.filter(O=>O.isSigner).map(O=>O.pubkey.toString())).flat()).values()].map(K=>C[K]).filter(K=>K!==void 0);if(t&&pt({instructions:[...k.instructions,...B],payer:this.feePayer,lookupTableAddressAccount:p,recentBlockhash:w})){let K=new yt({payerKey:this.feePayer,recentBlockhash:w,instructions:[...k.instructions,...B]}).compileToV0Message(Object.values(p));h.push(new bt(K))}else{let K=new yt({payerKey:this.feePayer,recentBlockhash:w,instructions:[...B]}).compileToV0Message(Object.values(p));h.push(new bt(K))}I.push(T)}return(v=this.owner)!=null&&v.signer&&I.forEach(f=>{f.some(T=>T.publicKey.equals(this.owner.publicKey))||f.push(this.owner.signer)}),h.forEach((f,T)=>{f.sign(I[T])}),{builder:this,transactions:h,buildProps:e,signers:I,instructionTypes:this.instructionTypes,execute:async f=>{var re;let{sequentially:T,onTxUpdate:K,skipTxCount:O=0,recentBlockHash:L,skipPreflight:_=!0}=f||{};if(h.map(async(z,V)=>{I[V].length&&z.sign(I[V]),L&&(z.message.recentBlockhash=L)}),Ve(h),(re=this.owner)!=null&&re.isKeyPair){if(T){let z=0,V=[];for(let ee of h){if(++z,z<=O){console.log("skip tx: ",z),V.push("tx skipped");continue}let G=await this.connection.sendTransaction(ee,{skipPreflight:_});await Et(this.connection,G),V.push(G)}return{txIds:V,signedTxs:h}}return{txIds:await Promise.all(h.map(async z=>await this.connection.sendTransaction(z,{skipPreflight:_}))),signedTxs:h}}if(this.signAllTransactions){let z=await this.signAllTransactions(h.slice(O,h.length)),V=[...h.slice(0,O),...z];if(T){let ee=0,G=[],ae=async()=>{if(!V[ee])return;if(ee<O){G.push({txId:"",status:"success",signedTx:V[ee]}),K==null||K([...G]),ee++,ae();return}let Se=await this.connection.sendTransaction(V[ee],{skipPreflight:_});G.push({txId:Se,status:"sent",signedTx:V[ee]}),K==null||K([...G]),ee++;let ot=!1,We=null,It=null,hn=Fe=>{We!==null&&clearInterval(We),It!==null&&this.connection.removeSignatureListener(It);let Ke=G.findIndex(Eo=>Eo.txId===Se);if(Ke>-1){if(G[Ke].status==="error"||G[Ke].status==="success")return;G[Ke].status=Fe.err?"error":"success"}K==null||K([...G]),Fe.err||ae()};this.loopMultiTxStatus&&(We=setInterval(async()=>{var Fe;if(ot){clearInterval(We);return}try{let Ke=await this.connection.getTransaction(Se,{commitment:"confirmed",maxSupportedTransactionVersion:1});Ke&&(ot=!0,clearInterval(We),hn({err:((Fe=Ke.meta)==null?void 0:Fe.err)||null}),console.log("tx status from getTransaction:",Se))}catch(Ke){ot=!0,clearInterval(We),console.error("getTransaction timeout:",Ke,Se)}},Dt)),It=this.connection.onSignature(Se,Fe=>{if(ot){this.connection.removeSignatureListener(It);return}ot=!0,hn(Fe)},"confirmed"),this.connection.getSignatureStatus(Se)};return ae(),{txIds:[],signedTxs:V}}else{let ee=[];for(let G=0;G<V.length;G+=1){let ae=await this.connection.sendTransaction(V[G],{skipPreflight:_});ee.push(ae)}return{txIds:ee,signedTxs:V}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:u||{}}}};var fn=(...a)=>a.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),pe=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=q(t)}createTxBuilder(e){return this.scope.checkOwner(),new Wt({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(fn(e))}logInfo(...e){this.logger.info(fn(e))}logAndCreateError(...e){let t=fn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as im,SystemProgram as am}from"@solana/web3.js";import cm from"bn.js";import{createCloseAccountInstruction as pm,createInitializeAccountInstruction as fm,createTransferInstruction as ym,TOKEN_PROGRAM_ID as bm}from"@solana/spl-token";import{Keypair as zl,PublicKey as Xl}from"@solana/web3.js";import Ql from"bn.js";import{TOKEN_PROGRAM_ID as jl}from"@solana/spl-token";var qt=g([s("mint"),s("owner"),n("amount"),Q("delegateOption"),s("delegate"),b("state"),Q("isNativeOption"),n("isNative"),n("delegatedAmount"),Q("closeAuthorityOption"),s("closeAuthority")]);import{PublicKey as Qb,SystemProgram as Zb}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as jb}from"@solana/spl-token";import{PublicKey as Um}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as zm}from"@solana/spl-token";import{PublicKey as R}from"@solana/web3.js";var fo=new R("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),yo=new R("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),bo=new R("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),yn=new R("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Qm=new R("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),zi=new R("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),go=new R("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Po=new R("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Zm=new R("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Xi=new R("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Ao=new R("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Yi=new R("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Hi=new R("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),wo=new R("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),$m=new R("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Qi=new R("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),bn=new R("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Zi=new R("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),jm=new R("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),$i=new R("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),ji=new R("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Ji=new R("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Jm=new R("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),ed=new R("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),td=new R("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),nd=new R("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),od=new R("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Me={OPEN_BOOK_PROGRAM:new R("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new R("Ray1111111111111111111111111111111111111111"),AMM_V4:new R("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new R("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new R("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new R("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new R("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new R("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new R("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new R("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new R("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new R("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:R.default,Router:new R("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new R("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new R("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new R("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new R("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new R("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new R("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new R("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new R("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new R("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new R("Ray1111111111111111111111111111111111111111")};import ug from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as xf,TOKEN_2022_PROGRAM_ID as Cf,TOKEN_PROGRAM_ID as Rf}from"@solana/spl-token";import{PublicKey as Of}from"@solana/web3.js";import Mf from"bn.js";import vf from"decimal.js";import{TOKEN_PROGRAM_ID as gd}from"@solana/spl-token";import{PublicKey as kd}from"@solana/web3.js";var er=g([Q("mintAuthorityOption"),s("mintAuthority"),n("supply"),b("decimals"),b("isInitialized"),Q("freezeAuthorityOption"),s("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as Zp,TOKEN_2022_PROGRAM_ID as $p,TOKEN_PROGRAM_ID as jp}from"@solana/spl-token";import{Keypair as tf,PublicKey as nf,SystemProgram as rf,TransactionInstruction as af}from"@solana/web3.js";import uf from"bn.js";import Nd from"bn.js";function ko(a){let e=Buffer.alloc(4);return e.writeInt32BE(a),e}var Ud=Buffer.from("amm_config","utf8"),nr=Buffer.from("pool","utf8"),or=Buffer.from("pool_vault","utf8"),Gd=Buffer.from("pool_reward_vault","utf8"),zd=Buffer.from("position","utf8"),ir=Buffer.from("tick_array","utf8"),Xd=Buffer.from("operation","utf8"),Yd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Hd=Buffer.from("observation","utf8"),Qd=Buffer.from("support_mint","utf8"),Zd=Buffer.from("dynamic_fee_config","utf8"),$d=Buffer.from("permission","utf8");function gt(a,e,t){return Ae([ir,e.toBuffer(),ko(t)],a)}var jd=Buffer.from("locked_position","utf8");import{sha256 as lr}from"js-sha256";import tp from"bn.js";import cp from"bn.js";var Pt=class{static getNextSqrtPriceFromAmountARoundingUp(e,t,o,i){if(o.isZero())return e;let r=t.shln(qe);if(i){let c=o.mul(e),u=r.add(c);if(u.gte(r))return H(r,e,u);let p=$(r,he,e);return H(r,he,p.add(o))}else{let c=o.mul(e);if(r.lte(c))throw new Error("Insufficient liquidity for token0 removal");let u=r.sub(c);return H(r,e,u)}}static getNextSqrtPriceFromAmountBRoundingDown(e,t,o,i){if(o.isZero())return e;if(i){let r=o.shln(qe).div(t);return e.add(r)}else{let r=xt(o.shln(qe),t);return e.sub(r)}}static getNextSqrtPriceFromInput(e,t,o,i){if(!e.gt(x))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(x))throw Error("liquidity.gt(BN_ZERO)");return i?this.getNextSqrtPriceFromAmountARoundingUp(e,t,o,!0):this.getNextSqrtPriceFromAmountBRoundingDown(e,t,o,!0)}static getNextSqrtPriceFromOutput(e,t,o,i){if(!e.gt(x))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(x))throw Error("liquidity.gt(BN_ZERO)");return i?this.getNextSqrtPriceFromAmountBRoundingDown(e,t,o,!1):this.getNextSqrtPriceFromAmountARoundingUp(e,t,o,!1)}};import J from"bn.js";var we=class{static newValue({poolInfo:e,amountSpecified:t,zeroForOne:o,feeRate:i,blockTimestamp:r}){let c={amountSpecifiedRemaining:t,amountCalculated:x,sqrtPriceX64:e.sqrtPriceX64,tick:e.tickCurrent,feeGrowthGlobalX64:o?e.feeGrowthGlobalX64A:e.feeGrowthGlobalX64B,lpFee:x,protocolFee:x,fundFee:x,liquidity:e.liquidity,sqrtPriceNextX64:x,tickNext:0,baseFeeRate:i,tickSpacing:e.tickSpacing,tickSpacingIndex:0,dynamicFeeInfo:je.getDynamicFeeInfo({poolInfo:e})};return c.dynamicFeeInfo&&(c.tickSpacingIndex=wt.tickSpacingIndexFromTick(c.tick,c.tickSpacing),je.updateReference({dynamicFeeInfo:c.dynamicFeeInfo,tickSpacingIndex:c.tickSpacingIndex,currentTimestamp:r})),c}static getTargetPriceBasedOnNextTick({data:e,tickNext:t,zeroForOne:o,sqrtPriceLimitX64:i}){e.tickNext=t,e.tickNext<fe?e.tickNext=fe:e.tickNext>ye&&(e.tickNext=ye),e.sqrtPriceNextX64=U.getSqrtPriceAtTick(e.tickNext);let r;if(o&&e.sqrtPriceNextX64.lt(i)||!o&&e.sqrtPriceNextX64.gt(i)?r=i:r=e.sqrtPriceNextX64,o){if(e.tick<e.tickNext)throw Error("data.tick < data.tickNext");if(e.sqrtPriceX64.lt(e.sqrtPriceNextX64))throw Error("data.sqrtPriceX64.lt(data.sqrtPriceNextX64)");if(e.sqrtPriceX64.lt(r))throw Error("data.sqrtPriceX64.lt(targetPrice)")}else{if(e.tickNext<=e.tick)throw Error("data.tickNext <= data.tick");if(e.sqrtPriceNextX64.lt(e.sqrtPriceX64))throw Error("data.sqrtPriceNextX64.lt(data.sqrtPriceX64)");if(r.lt(e.sqrtPriceX64))throw Error("targetPrice.lt(data.sqrtPriceX64)")}return r}static updateVolatilityAccumulator({state:e}){!e.dynamicFeeInfo||je.updateVolatilityAccumulator({state:e.dynamicFeeInfo,tickSpacingIndex:e.tickSpacingIndex})}static computeDynamicFeeRate({data:e,tickSpacing:t}){let o=e.volatilityAccumulator*t,i=o*o,r=Nn*it*it,c=H(new J(e.dynamicFeeControl),new J(i),new J(r)).toNumber();return c>Kt?Kt:c}static getTotalFeeRate({data:e}){if(e.dynamicFeeInfo){let t=this.computeDynamicFeeRate({data:e.dynamicFeeInfo,tickSpacing:e.tickSpacing}),o=e.baseFeeRate+t;return Math.min(Kt,o)}return e.baseFeeRate}static getSpacingBoundedPrice({data:e,targetPrice:t,zeroForOne:o}){if(e.dynamicFeeInfo===void 0)return{isSkipped:!0,boundedPrice:t};if(e.liquidity.isZero()||e.dynamicFeeInfo.volatilityAccumulator===e.dynamicFeeInfo.maxVolatilityAccumulator)return{isSkipped:!0,boundedPrice:t};let i=e.tickSpacing,r=o?e.tickSpacingIndex*i:(e.tickSpacingIndex+1)*i,c=Math.max(fe,Math.min(ye,r)),u=U.getSqrtPriceAtTick(c);return o?{isSkipped:!1,boundedPrice:J.max(t,u)}:{isSkipped:!1,boundedPrice:J.min(t,u)}}static applySwapAmounts({state:e,amountIn:t,amountOut:o,feeAmount:i,isBaseInput:r,isFeeOnInput:c,protocolFeeRate:u,fundFeeRate:p}){let d=c?t.add(i):t;r?(e.amountSpecifiedRemaining=e.amountSpecifiedRemaining.sub(d),e.amountCalculated=e.amountCalculated.add(o)):(e.amountSpecifiedRemaining=e.amountSpecifiedRemaining.sub(o),e.amountCalculated=e.amountCalculated.add(d)),this.splitFee({state:e,feeAmount:i,protocolFeeRate:u,fundFeeRate:p})}static updateDynamicFeeIndex({state:e,zeroForOne:t,isSkippedTickSpacing:o}){if(e.dynamicFeeInfo!==void 0){if(o){let i=e.sqrtPriceX64.eq(e.sqrtPriceNextX64)?e.tickNext:e.tick,r=wt.tickSpacingIndexFromTick(i,e.tickSpacing);!t&&i%e.tickSpacing===0&&(r=r-1),e.tickSpacingIndex=r,e.dynamicFeeInfo.volatilityAccumulator!==e.dynamicFeeInfo.maxVolatilityAccumulator&&this.updateVolatilityAccumulator({state:e})}e.tickSpacingIndex+=t?-1:1}}static splitFee({state:e,feeAmount:t,protocolFeeRate:o,fundFeeRate:i}){let r=t;if(o.gt(x)){let c=t.mul(o).div(new J(ge));e.protocolFee=e.protocolFee.add(c),r=r.sub(c)}if(i.gt(x)){let c=t.mul(i).div(new J(ge));e.fundFee=e.fundFee.add(c),r=r.sub(c)}if(e.liquidity.gt(x)){let c=$(r,X,e.liquidity);e.feeGrowthGlobalX64=e.feeGrowthGlobalX64.add(c),e.lpFee=e.lpFee.add(r)}}},At=class{static newSwapComputationResult({sqrtPriceNextX64:e}){return{sqrtPriceNextX64:e!=null?e:x,amountIn:x,amountOut:x,feeAmount:x}}static calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:o,zeroForOne:i,isBaseInput:r}){if(r)try{return i?de.getDeltaAmountAUnsigned(t,e,o,!0):de.getDeltaAmountBUnsigned(e,t,o,!0)}catch(c){if(c.message==="MaxTokenOverflow")return null;throw c}else try{return i?de.getDeltaAmountBUnsigned(t,e,o,!1):de.getDeltaAmountAUnsigned(e,t,o,!1)}catch(c){if(c.message==="MaxTokenOverflow")return null;throw c}}static computeSwap(e,t,o,i,r,c,u,p){let d=this.newSwapComputationResult({});if(c){let P=p?$(i,new J(Ce-r),new J(Ce)):i,k=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:o,zeroForOne:u,isBaseInput:c});k!==null&&(d.amountIn=k),d.sqrtPriceNextX64=k!==null&&P.gte(d.amountIn)?t:Pt.getNextSqrtPriceFromInput(e,o,P,u)}else{let P=p?i:H(i,new J(Ce),new J(Ce-r)),k=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:o,zeroForOne:u,isBaseInput:c});k!==null&&(d.amountOut=k),d.sqrtPriceNextX64=k!==null&&P.gte(d.amountOut)?t:Pt.getNextSqrtPriceFromOutput(e,o,P,u)}if(u){if(!d.sqrtPriceNextX64.gte(t))throw Error("!result.sqrtPriceNextX64.gte(sqrtPriceTargetX64)")}else if(!t.gte(d.sqrtPriceNextX64))throw Error("!sqrtPriceTargetX64.gte(result.sqrtPriceNextX64)");let y=t.eq(d.sqrtPriceNextX64);if(u?(y&&c||(d.amountIn=de.getDeltaAmountAUnsigned(d.sqrtPriceNextX64,e,o,!0)),y&&!c||(d.amountOut=de.getDeltaAmountBUnsigned(d.sqrtPriceNextX64,e,o,!1))):(y&&c||(d.amountIn=de.getDeltaAmountBUnsigned(e,d.sqrtPriceNextX64,o,!0)),y&&!c||(d.amountOut=de.getDeltaAmountAUnsigned(e,d.sqrtPriceNextX64,o,!1))),c)p?d.sqrtPriceNextX64.eq(t)?d.feeAmount=H(d.amountIn,new J(r),new J(Ce-r)):d.feeAmount=i.sub(d.amountIn):(d.feeAmount=H(d.amountOut,new J(r),new J(Ce)),d.amountOut=d.amountOut.sub(d.feeAmount),y||(d.amountIn=i));else if(p)d.amountOut=J.min(d.amountOut,i),d.feeAmount=H(d.amountIn,new J(r),new J(Ce-r));else{d.feeAmount=H(d.amountOut,new J(r),new J(Ce));let P=d.amountOut.sub(d.feeAmount);P.gt(i)?(d.feeAmount=d.amountOut.sub(i),d.amountOut=i):d.amountOut=P}return d}};function ie(a){let e=`global:${a}`;return Buffer.from(lr.digest(e)).slice(0,8)}Qn.span;var gf=q("Raydium_Clmm"),Pf={createPool:ie("create_pool"),createCustomizablePool:ie("create_customizable_pool"),createPermissionedPool:ie("create_permissioned_pool"),openPositionV2:ie("open_position_v2"),openPositionWithToken22Nft:ie("open_position_with_token22_nft"),closePosition:ie("close_position"),increaseLiquidityV2:ie("increase_liquidity_v2"),decreaseLiquidityV2:ie("decrease_liquidity_v2"),initializeReward:ie("initialize_reward"),setRewardParams:ie("set_reward_params"),updateRewardInfos:ie("update_reward_infos"),collectRemainingRewards:ie("collect_remaining_rewards"),swapV2:ie("swap_v2"),openLimitOrder:ie("open_limit_order"),increaseLimitOrder:ie("increase_limit_order"),decreaseLimitOrder:ie("decrease_limit_order"),settleLimitOrder:ie("settle_limit_order"),closeLimitOrder:ie("close_limit_order")};import{PublicKey as Pn}from"@solana/web3.js";var yr=g([b("instruction")]),br=g([b("instruction")]),gr=g([n("rewardState"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardLastUpdateTime"),n("totalReward"),n("totalRewardEmissioned"),n("rewardClaimed"),n("rewardPerSecond"),M("accRewardPerShare"),s("rewardVault"),s("rewardMint"),s("rewardSender"),n("rewardType"),A(n(),15,"padding")]),Pr=g([n("state"),n("nonce"),s("lpVault"),s("rewardVault"),s(),s(),n(),n(),n("totalReward"),M("perShareReward"),n("lastSlot"),n("perSlotReward")]),Ar=g([n("state"),n("nonce"),s("lpVault"),s("rewardVaultA"),n("totalRewardA"),M("perShareRewardA"),n("perSlotRewardA"),b("option"),s("rewardVaultB"),E(7),n("totalRewardB"),M("perShareRewardB"),n("perSlotRewardB"),n("lastSlot"),s()]),wr=g([n(),n("state"),n("nonce"),n("validRewardTokenNum"),M("rewardMultiplier"),n("rewardPeriodMax"),n("rewardPeriodMin"),n("rewardPeriodExtend"),s("lpMint"),s("lpVault"),A(gr,5,"rewardInfos"),s("creator"),s(),A(n(),32,"padding")]),kr=new Proxy(Pr,{get(a,e,t){return e==="decode"?(...o)=>{let i=a.decode(...o);return D(N({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(a,e,t)}}),Tr=new Proxy(Ar,{get(a,e,t){return e==="decode"?(...o)=>{let i=a.decode(...o);return D(N({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(a,e,t)}}),Bo=new Proxy(wr,{get(a,e,t){return e==="decode"?(...o)=>{let i=a.decode(...o);return D(N({},i),{version:6,rewardInfos:i.rewardInfos.map(r=>{var c;return D(N({},r),{rewardType:((c=Object.entries(Tt).find(u=>String(u[1])===r.rewardType.toString()))!=null?c:["Standard SPL"])[0]})})})}:Reflect.get(a,e,t)}}),hr=g([n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),Ir=g([b("instruction"),n("nonce"),A(hr,5,"rewardTimeInfo")]),Br=g([b("instruction"),n("rewardReopenTime"),n("rewardEndTime"),n("rewardPerSecond")]),Sr=g([b("instruction"),n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),py=g([n("state"),s("id"),s("owner"),n("deposited"),A(n(),1,"rewardDebts")]),So=g([n("state"),s("id"),s("owner"),n("deposited"),A(M(),1,"rewardDebts"),n(""),n("voteLockedBalance"),A(n(),15)]),fy=g([n("state"),s("id"),s("owner"),n("deposited"),A(n(),2,"rewardDebts")]),Kr=g([n("state"),s("id"),s("owner"),n("deposited"),A(M(),2,"rewardDebts"),A(n(),17)]),xr=g([n(),n("state"),s("id"),s("owner"),n("deposited"),A(M(),5,"rewardDebts"),A(n(),16)]),Cr=g([b("instruction"),n("amount")]),Rr=g([s("mint"),s("grantAuthority"),n("baselineVoteWeightScaledFactor"),n("maxExtraLockupVoteWeightScaledFactor"),n("lockupSaturationSecs"),Yn("digitShift"),A(b(),7,"reserved1"),A(n(),7,"reserved2")]),Lr=g([E(8),s("governanceProgramId"),s("realm"),s("realmGoverningTokenMint"),s("realmAuthority"),A(b(),32,"reserved1"),A(Rr,4,"votingMints"),Ge("timeOffset"),b("bump"),A(b(),7,"reserved2"),A(n(),11,"reserved3")]),Or=g([Ge("startTime"),Ge("endTime"),b("kind"),A(b(),15,"reserved")]),Nr=g([A(Or,1,"lockup"),n("amountDeposited_native"),n("amountInitiallyLockedNative"),be("isUsed"),be("allowClawback"),b("votingMintConfigIdx"),A(b(),29,"reserved")]),Mr=g([E(8),s("voterAuthority"),s("registrar"),A(Nr,32,"deposits"),b("voterBump"),b("voterWweightRecordBump"),A(b(),94,"reserved")]);import{NATIVE_MINT as hy}from"@solana/spl-token";var Iy=q("Raydium_farm_config"),Fr=new Pn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),vr=new Pn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var By=new Pn("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var Tt={"Standard SPL":0,"Option tokens":1},Ko={[fo.toString()]:3,[yo.toString()]:4,[bo.toString()]:5,[yn.toString()]:6,[Me.FARM_PROGRAM_ID_V3.toString()]:3,[Me.FARM_PROGRAM_ID_V4.toString()]:4,[Me.FARM_PROGRAM_ID_V5.toString()]:5,[Me.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as lb,SystemProgram as mb,SYSVAR_CLOCK_PUBKEY as db,SYSVAR_RENT_PUBKEY as pb,TransactionInstruction as fb}from"@solana/web3.js";import bb from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Pb,createAssociatedTokenAccountIdempotentInstruction as Ab,TOKEN_PROGRAM_ID as wb}from"@solana/spl-token";import Dy from"bn.js";import{PublicKey as Ly}from"@solana/web3.js";import Ny from"bn.js";var Jy=q("Raydium.farm.util");var Lb=q("Raydium_farm_instruction"),Ob={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])};import Ag from"bn.js";import{PublicKey as KA}from"@solana/web3.js";import{AccountLayout as RA,MintLayout as LA,NATIVE_MINT as OA,TOKEN_PROGRAM_ID as MA}from"@solana/spl-token";import Tg from"bn.js";import Co from"bn.js";var Gr=new Co(25),zr=new Co(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as Gg,TOKEN_PROGRAM_ID as zg}from"@solana/spl-token";import{PublicKey as Yg,SystemProgram as Hg,SYSVAR_RENT_PUBKEY as Qg,TransactionInstruction as Zg}from"@solana/web3.js";import iP from"bn.js";var Xr=g([b("instruction"),n("amountIn"),n("minAmountOut")]),Yr=g([b("instruction"),n("maxAmountIn"),n("amountOut")]),Dg=g([b("instruction"),b("nonce")]),Hr=g([b("instruction"),b("nonce"),n("startTime")]),Ro=g([n("status"),n("nonce"),n("maxOrder"),n("depth"),n("baseDecimal"),n("quoteDecimal"),n("state"),n("resetFlag"),n("minSize"),n("volMaxCutRatio"),n("amountWaveRatio"),n("baseLotSize"),n("quoteLotSize"),n("minPriceMultiplier"),n("maxPriceMultiplier"),n("systemDecimalValue"),n("minSeparateNumerator"),n("minSeparateDenominator"),n("tradeFeeNumerator"),n("tradeFeeDenominator"),n("pnlNumerator"),n("pnlDenominator"),n("swapFeeNumerator"),n("swapFeeDenominator"),n("baseNeedTakePnl"),n("quoteNeedTakePnl"),n("quoteTotalPnl"),n("baseTotalPnl"),n("poolOpenTime"),n("punishPcAmount"),n("punishCoinAmount"),n("orderbookToInitTime"),M("swapBaseInAmount"),M("swapQuoteOutAmount"),n("swapBase2QuoteFee"),M("swapQuoteInAmount"),M("swapBaseOutAmount"),n("swapQuote2BaseFee"),s("baseVault"),s("quoteVault"),s("baseMint"),s("quoteMint"),s("lpMint"),s("openOrders"),s("marketId"),s("marketProgramId"),s("targetOrders"),s("withdrawQueue"),s("lpVault"),s("owner"),n("lpReserve"),A(n(),3,"padding")]),Wg=g([n("accountType"),n("status"),n("nonce"),n("maxOrder"),n("depth"),n("baseDecimal"),n("quoteDecimal"),n("state"),n("resetFlag"),n("minSize"),n("volMaxCutRatio"),n("amountWaveRatio"),n("baseLotSize"),n("quoteLotSize"),n("minPriceMultiplier"),n("maxPriceMultiplier"),n("systemDecimalsValue"),n("abortTradeFactor"),n("priceTickMultiplier"),n("priceTick"),n("minSeparateNumerator"),n("minSeparateDenominator"),n("tradeFeeNumerator"),n("tradeFeeDenominator"),n("pnlNumerator"),n("pnlDenominator"),n("swapFeeNumerator"),n("swapFeeDenominator"),n("baseNeedTakePnl"),n("quoteNeedTakePnl"),n("quoteTotalPnl"),n("baseTotalPnl"),n("poolOpenTime"),n("punishPcAmount"),n("punishCoinAmount"),n("orderbookToInitTime"),M("swapBaseInAmount"),M("swapQuoteOutAmount"),M("swapQuoteInAmount"),M("swapBaseOutAmount"),n("swapQuote2BaseFee"),n("swapBase2QuoteFee"),s("baseVault"),s("quoteVault"),s("baseMint"),s("quoteMint"),s("lpMint"),s("modelDataAccount"),s("openOrders"),s("marketId"),s("marketProgramId"),s("targetOrders"),s("owner"),A(n(),64,"padding")]),Qr=g([b("instruction"),n("baseAmountIn"),n("quoteAmountIn"),n("fixedSide"),n("otherAmountMin")]),Zr=g([b("instruction"),n("lpAmount"),n("baseAmountMin"),n("quoteAmountMin")]);var $r=g([n("fee")]);var sP=q("Raydium_liquidity_instruction");var jr=5e4,Jr=g([n("x"),n("y"),n("price")]),mP=g([n("accountType"),n("status"),n("multiplier"),n("validDataCount"),A(Jr,jr,"DataElement")]);import{PublicKey as hP}from"@solana/web3.js";import BP from"decimal.js";import{TOKEN_PROGRAM_ID as KP}from"@solana/spl-token";import{PublicKey as yP}from"@solana/web3.js";var PP=q("Raydium_liquidity_serum");import ew from"bn.js";import nw from"decimal.js";import{TOKEN_PROGRAM_ID as eA}from"@solana/spl-token";import{PublicKey as nA}from"@solana/web3.js";import iA from"bn.js";import{SystemProgram as WP,SYSVAR_RENT_PUBKEY as qP,Transaction as UP,TransactionInstruction as GP}from"@solana/web3.js";import{createInitializeAccountInstruction as XP,TOKEN_PROGRAM_ID as YP}from"@solana/spl-token";function ea(a="accountFlags"){let e=new Ot(a);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var ta=g([E(5),ea("accountFlags"),s("ownAddress"),n("vaultSignerNonce"),s("baseMint"),s("quoteMint"),s("baseVault"),n("baseDepositsTotal"),n("baseFeesAccrued"),s("quoteVault"),n("quoteDepositsTotal"),n("quoteFeesAccrued"),n("quoteDustThreshold"),s("requestQueue"),s("eventQueue"),s("bids"),s("asks"),n("baseLotSize"),n("quoteLotSize"),n("feeRateBps"),n("referrerRebatesAccrued"),E(7)]);import{PublicKey as Rk}from"@solana/web3.js";import{AccountLayout as Ok,NATIVE_MINT as Nk,TOKEN_2022_PROGRAM_ID as Mk,TOKEN_PROGRAM_ID as Fk,createAssociatedTokenAccountIdempotentInstruction as vk}from"@solana/spl-token";import Sw from"bn.js";import ua from"bn.js";var dw=new ua(0);import Pw from"bn.js";import ca from"bn.js";var ge=new ca(1e6);import Gk from"bn.js";import Xk from"decimal.js";import{PublicKey as Xw,TransactionInstruction as Yw,Keypair as Qw,SystemProgram as Zw}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as jw,TOKEN_2022_PROGRAM_ID as Jw,TOKEN_PROGRAM_ID as ek}from"@solana/spl-token";var Lw=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Ow=Buffer.from("amm_config","utf8"),Nw=Buffer.from("pool","utf8"),Mw=Buffer.from("pool_lp_mint","utf8"),Fw=Buffer.from("pool_vault","utf8"),vw=Buffer.from("observation","utf8"),_w=Buffer.from("permission","utf8"),Vw=Buffer.from("support_mint","utf8"),Ew=Buffer.from("creator_fee_share","utf8");var Dw=Buffer.from("locked_liquidity","utf8");var sk=q("Raydium_cpmm"),uk={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],createPermissionPda:Buffer.from([135,136,2,216,137,169,181,202]),closePermissionPda:Buffer.from([156,84,32,118,69,135,70,123]),initializeWithPermission:Buffer.from([63,55,254,65,49,178,89,121]),collectCreatorFee:Buffer.from([20,22,86,123,198,28,219,132]),collectCreatorFeePermissionless:Buffer.from([202,202,34,83,226,122,145,229])};var da=g([E(8),b("bump"),be("disableCreatePool"),j("index"),n("tradeFeeRate"),n("protocolFeeRate"),n("fundFeeRate"),n("createPoolFee"),s("protocolOwner"),s("fundOwner"),n("creatorFeeRate"),n("creatorFeeShareRate"),A(n(),14)]),Lo=g([E(8),s("configId"),s("poolCreator"),s("vaultA"),s("vaultB"),s("mintLp"),s("mintA"),s("mintB"),s("mintProgramA"),s("mintProgramB"),s("observationId"),b("bump"),b("status"),b("lpDecimals"),b("mintDecimalA"),b("mintDecimalB"),n("lpAmount"),n("protocolFeesMintA"),n("protocolFeesMintB"),n("fundFeesMintA"),n("fundFeesMintB"),n("openTime"),n("epoch"),b("feeOn"),be("enableCreatorFee"),A(b(),6),n("creatorFeesMintA"),n("creatorFeesMintB"),A(n(),28)]),mk=g([E(8),s("configId"),A(n(),30)]),dk=g([E(8),b("bump"),s("creator"),s("ammConfig"),n("shareRate"),A(n(),8)]);import{PublicKey as iK,SystemProgram as rK}from"@solana/web3.js";import{createTransferInstruction as sK,TOKEN_PROGRAM_ID as uK,TOKEN_2022_PROGRAM_ID as cK,createAssociatedTokenAccountIdempotentInstruction as lK,createSyncNativeInstruction as dK,createTransferCheckedInstruction as pK}from"@solana/spl-token";import Fa from"bn.js";import bK from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as eh,TOKEN_2022_PROGRAM_ID as th,TOKEN_PROGRAM_ID as nh}from"@solana/spl-token";import{SystemProgram as ah,TransactionInstruction as sh}from"@solana/web3.js";import ba from"bn.js";var ET=Buffer.from("vault_auth_seed","utf8"),DT=Buffer.from("global_config","utf8"),WT=Buffer.from("pool_vesting","utf8"),qT=Buffer.from("platform_config","utf8"),UT=Buffer.from("platform_fee_vault_auth_seed","utf8"),GT=Buffer.from("creator_fee_vault_auth_seed","utf8"),zT=Buffer.from("platform_global_access","utf8"),XT=Buffer.from("platform_allow_config","utf8"),YT=Buffer.from("platform_curve_rule","utf8");var lh={initialize:Buffer.from([175,175,109,31,13,152,155,237]),initializeV2:Buffer.from([67,153,175,39,218,16,38,32]),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]),createPlatformVestingAccount:Buffer.from([146,71,173,69,98,19,15,106]),createPlatformAllowConfig:Buffer.from([69,71,168,7,214,250,107,102]),closePlatformAllowConfig:Buffer.from([82,205,36,216,16,6,240,215]),createPlatformCurveRule:Buffer.from([148,71,180,136,122,144,59,21]),updatePlatformCurveRule:Buffer.from([90,100,206,196,54,117,120,139]),removePlatformCurveRule:Buffer.from([236,77,154,138,32,145,127,219]),closePlatformCurveRule:Buffer.from([194,114,82,45,136,88,169,159])};var mh=new ba("18446744073709551615");var ga=g([n(),n("epoch"),b("curveType"),j("index"),n("migrateFee"),n("tradeFeeRate"),n("maxShareFeeRate"),n("minSupplyA"),n("maxLockRate"),n("minSellRateA"),n("minMigrateRateA"),n("minFundRaisingB"),s("mintB"),s("protocolFeeOwner"),s("migrateFeeOwner"),s("migrateToAmmWallet"),s("migrateToCpmmWallet"),A(n(),16)]),Pa=g([n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod"),n("startTime"),n("totalAllocatedShare")]),Aa=g([n(),n("epoch"),b("bump"),b("status"),b("mintDecimalsA"),b("mintDecimalsB"),b("migrateType"),n("supply"),n("totalSellA"),n("virtualA"),n("virtualB"),n("realA"),n("realB"),n("totalFundRaisingB"),n("protocolFee"),n("platformFee"),n("migrateFee"),Pa.replicate("vestingSchedule"),s("configId"),s("platformId"),s("mintA"),s("mintB"),s("vaultA"),s("vaultB"),s("creator"),b("mintProgramFlag"),b("cpmmCreatorFeeOn"),n("platformVestingShare"),A(b(),54)]),yh=g([n(),n("epoch"),s("poolId"),s("beneficiary"),n("claimedAmount"),n("tokenShareAmount"),A(n(),8)]),wa=g([b("migrateType"),b("migrateCpmmFeeOn"),n("supply"),n("totalSellA"),n("totalFundRaisingB"),n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod")]),bh=g([n("epoch"),b("index"),s("configId"),wa.replicate("bondingCurveParam"),A(n(),50)]),No=g([n(),n("epoch"),s("platformClaimFeeWallet"),s("platformLockNftWallet"),n("platformScale"),n("creatorScale"),n("burnScale"),n("feeRate"),A(b(),64,"name"),A(b(),256,"web"),A(b(),256,"img"),s("cpConfigId"),n("creatorFeeRate"),s("transferFeeExtensionAuth"),s("platformVestingWallet"),n("platformVestingScale"),s("platformCpCreator"),b("restrictGlobalConfig"),b("restrictCurveParam"),s("curveRuleManager"),A(b(),78)]),ka=g([b("field"),b("op"),M("value")]),Ta=g([j("groupId"),n("epoch"),$t(ka,"constraints")]),ha=g([n(),b("bump"),b("version"),s("platformId"),s("configId"),n("epoch"),A(n(),8),$t(Ta,"groups")]);import{TOKEN_2022_PROGRAM_ID as Ah,TOKEN_PROGRAM_ID as wh}from"@solana/spl-token";import Ia from"bn.js";var Oh=new Ia(1e6);import vh from"bn.js";import Vh from"decimal.js";import bI from"bn.js";import PI from"decimal.js";import Gh from"bn.js";import Xh from"decimal.js";import nI from"bn.js";import iI from"decimal.js";import vo from"bn.js";import wn from"decimal.js";var Yt=class{static _multipler(e){return new wn(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:o}){return new wn(e.toString()).div(this._Q64).mul(this._multipler(t)).div(this._multipler(o))}static getPriceX64({price:e,decimalA:t,decimalB:o}){let i=e.mul(this._multipler(o)).div(this._multipler(t));return new vo(i.mul(this._Q64).toFixed(0))}};Yt._Q64=new wn(new vo(1).shln(64).toString());import{NATIVE_MINT as NB,TOKEN_2022_PROGRAM_ID as MB,TOKEN_PROGRAM_ID as FB,createAssociatedTokenAccountIdempotentInstruction as _B,createSyncNativeInstruction as VB,getTransferFeeConfig as EB,unpackMint as DB}from"@solana/spl-token";import te from"bn.js";import{PublicKey as La,SystemProgram as UB}from"@solana/web3.js";import ZB from"decimal.js";var $B={initPriceX64:new te("515752397214619"),supply:new te(1e15),totalSellA:new te(7931e11),totalFundRaisingB:new te(85e9),totalFundRaisingBUSD:new te(125e8),totalLockedAmount:new te("0"),cliffPeriod:new te("0"),unlockPeriod:new te("0"),decimals:6,virtualA:new te("1073471847374405"),virtualB:new te("30050573465"),realA:new te(0),realB:new te(0),protocolFee:new te(0),platformId:new La("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new te(0),cliffPeriod:new te(0),unlockPeriod:new te(0),startTime:new te(0),totalAllocatedShare:new te(0)}},jB=new te(1e4);var Oa={[go.toBase58()]:3};var Na=g([E(5),E(8),s("ownAddress"),n("vaultSignerNonce"),s("baseMint"),s("quoteMint"),s("baseVault"),n("baseDepositsTotal"),n("baseFeesAccrued"),s("quoteVault"),n("quoteDepositsTotal"),n("quoteFeesAccrued"),n("quoteDustThreshold"),s("requestQueue"),s("eventQueue"),s("bids"),s("asks"),n("baseLotSize"),n("quoteLotSize"),n("feeRateBps"),n("referrerRebatesAccrued"),E(7)]);import{PublicKey as TS}from"@solana/web3.js";var KS=q("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as vS,TOKEN_2022_PROGRAM_ID as _S,TOKEN_PROGRAM_ID as VS}from"@solana/spl-token";import{PublicKey as DS,SystemProgram as WS,TransactionInstruction as qS}from"@solana/web3.js";import GS from"bn.js";var XK=new Fa(0);import{PublicKey as va,Transaction as kn,TransactionInstruction as _a}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Va}from"@solana/spl-token";import _o from"bn.js";var ue=class extends pe{static getPdaPoolId(e,t){return Ae([ue.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,o,i){return Ae([ue.SEED_CONFIG.owner.id,t.toBuffer(),o.toBuffer(),Buffer.from(new _o(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:o,wallet:i,chainTime:r}){if(o.length===0)return[];let c=o.map(y=>ue.getPdaPoolId(t,y).publicKey),u=[];for(let y=0;y<ue.VERSION_PROJECT.length;y++)u.push(...c.map(P=>ue.getPdaOwnerId(t,P,i,y).publicKey));let p=await Re(e,[...c,...u]),d=[];for(let y=0;y<p.length;y++){let P=Math.floor(y/o.length),k=y%o.length,w=c[k],C=u[y],h=p[k],I=p[o.length+y];if(!(h&&I)||h.data.length!==ue.POOL_LAYOUT.span||I.data.length!==ue.OWNER_LAYOUT.span)continue;let B=ue.POOL_LAYOUT.decode(h.data),S=ue.OWNER_LAYOUT.decode(I.data),F=B.openTime.toNumber(),v=B.endTime.toNumber(),f=S.tokenInfo.map(O=>O.debtAmount.gt(new _o(0))).filter(O=>!O).length!==3,T=r>F&&r<v&&B.status===1,K=f&&T;d.push({programId:t,poolId:w,ammId:B.ammId,ownerAccountId:C,snapshotLpAmount:S.lpAmount,project:ue.VERSION_PROJECT[P],openTime:F,endTime:v,canClaim:K,canClaimErrorType:f?T?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:B.tokenInfo.map((O,L)=>({mintAddress:O.mintAddress,mintVault:O.mintVault,mintDecimals:O.mintDecimals,perLpLoss:O.perLpLoss,debtAmount:S.tokenInfo[L].debtAmount.add(S.tokenInfo[L].claimedAmount)}))})}return d}async makeClaimTransaction({poolInfo:e,ownerInfo:t,feePayer:o}){t.wallet||this.scope.checkOwner();let i=this.createTxBuilder(o),r=t.wallet||this.scope.ownerPubKey,c=[];for(let d of e.tokenInfo){let{account:y,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({mint:d.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:d.mintAddress.equals(se.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!d.mintAddress.equals(se.WSOL.mint),associatedOnly:d.mintAddress.equals(se.WSOL.mint)?!1:t.associatedOnly});P&&i.addInstruction(P),c.push(y)}i.addInstruction({instructions:[ue.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:r,ownerPda:e.ownerAccountId,claimAddress:c}})]});let{transaction:u,signers:p}=i.build();return[{transaction:u,signer:p}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:o}){let i=this.createTxBuilder(o),r=t.wallet||this.scope.ownerPubKey,c={};for(let y of e){let P=[];for(let k of y.tokenInfo){let{account:w,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({mint:k.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:k.mintAddress.equals(se.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!k.mintAddress.equals(se.WSOL.mint),associatedOnly:k.mintAddress.equals(se.WSOL.mint)?!1:t.associatedOnly});C&&i.addInstruction(C),w&&(c[k.mintAddress.toString()]=w,P.push(w))}i.addInstruction({instructions:[ue.makeClaimInstruction({programId:y.programId,poolInfo:y,ownerInfo:{wallet:r,ownerPda:y.ownerAccountId,claimAddress:P}})]})}let{transaction:u,signers:p}=i.build(),d=i.allInstructions;return dn(d,[r,...p.map(y=>y.publicKey)])?[{transaction:u,signer:p}]:[{transaction:new kn().add(...d.slice(0,i.AllTxData.instructions.length-1)),signer:p},{transaction:new kn().add(...d.slice(i.AllTxData.instructions.length-1)),signer:[]},{transaction:new kn().add(...i.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:o}){let i=g([]),r=[{pubkey:o.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:o.ownerPda,isSigner:!1,isWritable:!0},...o.claimAddress.map(p=>({pubkey:p,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:p})=>({pubkey:p,isSigner:!1,isWritable:!0})),{pubkey:Va,isSigner:!1,isWritable:!1}],c=Buffer.alloc(i.span);i.encode({},c);let u=Buffer.from([10,66,208,184,161,6,191,98,...c]);return new _a({keys:r,programId:e,data:u})}},ke=ue;ke.CLAIMED_NUM=3,ke.POOL_LAYOUT=g([E(8),b("bump"),b("status"),n("openTime"),n("endTime"),s("ammId"),A(g([b("mintDecimals"),s("mintAddress"),s("mintVault"),n("perLpLoss"),n("totalClaimedAmount")]),ue.CLAIMED_NUM,"tokenInfo"),A(n(),10,"padding")]),ke.OWNER_LAYOUT=g([E(8),b("bump"),b("version"),s("poolId"),s("owner"),n("lpAmount"),A(g([s("mintAddress"),n("debtAmount"),n("claimedAmount")]),ue.CLAIMED_NUM,"tokenInfo"),A(n(),4,"padding")]),ke.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new va(e)),ke.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},ke.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as cx}from"@solana/web3.js";import{getTransferFeeConfig as mx,MintLayout as dx,TOKEN_2022_PROGRAM_ID as px,TOKEN_PROGRAM_ID as fx,unpackMint as yx}from"@solana/spl-token";var UC=new De(2),GC=new De(3),zC=new De(5),xi=new De(10),XC=new De(100),YC=new De(1e3),HC=new De(1e4);function tn(a,e=1,t=[]){let o=[...a];if(e<=0)return t;for(;o.length;)t.push(o.splice(0,e));return t}import ne from"bn.js";import et from"decimal.js";var tt=class{static scanLinearBitmap({bitmap:e,tickSpacing:t,offset:o,checkInfo:i}){let r=[],c=e.length*8,u=0,p=c-1;if(i){let P=i.tick/(t*me)-o;i.valueType==="gte"?u=Math.max(0,Math.ceil(P)):p=Math.min(c-1,Math.floor(P))}if(u>p)return r;let d=Math.floor(u/8),y=Math.floor(p/8);for(let P=d;P<=y;P++){if(!e[P])continue;let k=P===d?u%8:0,w=P===y?p%8:7;for(let C=k;C<=w;C++)e[P]&1<<C&&r.push((P*8+C+o)*t*me)}return r}static findPoolBitmap({bitmap:e,tickSpacing:t,checkInfo:o}){if(o){let i=Math.floor(o.tick/me/t);if(o.valueType==="lte"&&i<-512)return[];if(o.valueType==="gte"&&i>512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:-St,checkInfo:o})}static findPositiveTickArrayBitmap({bitmap:e,tickSpacing:t,checkInfo:o}){if(o){let i=Math.floor(o.tick/me/t);if(o.valueType==="lte"&&i<512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:St,checkInfo:o})}static findNegativeTickArrayBitmap({bitmap:e,tickSpacing:t,count:o,checkInfo:i}){let r=[];if(i){let p=Math.floor(i.tick/me/t);if(i.valueType==="gte"&&p>=-512)return r}let c=(i==null?void 0:i.valueType)==="lte"?Math.floor(i.tick/(me*t))+7680:1/0,u=(i==null?void 0:i.valueType)==="gte"?Math.ceil(i.tick/(me*t))+7680:0;e:for(let p=0;p<Ue;p++){let d=Ue-1-p;for(let y=0;y<512;y++){let P=p*512+y;if(P>c)break e;if(P<u)continue;let k=d*64+Math.floor(y/8);if(!e[k]){y=Math.floor(y/8)*8+7;continue}if(e[k]&1<<y%8){let w=(p*512+y-7680)*me*t;if(r.push(w),o!==void 0&&r.length>=o)break e}}}return r}static findTickArrayStartIndex({tickSpacing:e,poolBitmap:t,tickArrayBitmap:o,findInfo:i}){if(i.type==="all")return[...this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:o.negativeTickArrayBitmap}),...this.findPoolBitmap({tickSpacing:e,bitmap:t}),...this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:o.positiveTickArrayBitmap})];let r=le.getTickArrayStartIndex(i.tickArrayCurrent,e),{count:c}=i;if(i.type==="oneForZero"){let u={tick:r,valueType:"gte"},p=[()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:o.negativeTickArrayBitmap,checkInfo:u}),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:u}),()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:o.positiveTickArrayBitmap,checkInfo:u})];return this.collectUntil(p,c)}if(i.type==="zeroForOne"){let u={tick:r,valueType:"lte"},p=[()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:o.positiveTickArrayBitmap,checkInfo:u}).sort((d,y)=>y-d),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:u}).sort((d,y)=>y-d),()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:o.negativeTickArrayBitmap,checkInfo:u}).sort((d,y)=>y-d)];return this.collectUntil(p,c)}throw new Error("find info type check error")}static collectUntil(e,t){let o=[];for(let i of e){if(t!==void 0&&o.length>=t)break;o.push(...i())}return o.slice(0,t)}static findTickArrayAddress(e){return this.findTickArrayStartIndex(e).map(t=>gt(e.programId,e.poolId,t).publicKey)}static maxTickInTickarrayBitmap(e){return e*me*St}},le=class{static firstinitializedTick({data:e,zeroForOne:t}){if(t){for(let o=e.ticks.length-1;o>=0;o--)if(U.isInitialized({data:e.ticks[o]}))return e.ticks[o]}else for(let o=0;o<e.ticks.length;o++)if(U.isInitialized({data:e.ticks[o]}))return e.ticks[o]}static nextInitalizedTick({data:e,currentTickIndex:t,tickSpacing:o,zeroForOne:i}){if(this.getTickArrayStartIndex(t,o)!==e.startTickIndex)return;let c=Math.floor((t-e.startTickIndex)/o);if(i){for(let u=c;u>=0;u--)if(U.isInitialized({data:e.ticks[u]}))return e.ticks[u]}else for(let u=c+1;u<me;u++)if(U.isInitialized({data:e.ticks[u]}))return e.ticks[u]}static getTickArrayStartIndex(e,t){let o=this.tickCount(t);return Math.floor(e/o)*o}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let o=this.getTickArrayStartIndex(e,t);return Math.floor((e-o)/t)}static tickCount(e){return me*e}static getMinTick(e){return Math.ceil(fe/e)*e}static getMaxTick(e){return Math.floor(ye/e)*e}},U=class{static isInitialized({data:e}){return this.hasLiquidity({data:e})||this.hasLimitOrders({data:e})}static hasLimitOrders({data:e}){return!e.ordersAmount.isZero()||!e.partFilledOrdersRemaining.isZero()}static hasLiquidity({data:e}){return!e.liquidityGross.isZero()}static isValidTick(e){return e>=fe&&e<=ye}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${fe}, ${ye}]`)}static getSqrtPriceAtTick(e){this.checkTick(e);let t=Math.abs(e),o=X.clone();for(let{bit:i,factor:r}of Ln)(t&1<<i)!==0&&(o=$(o,r,X));return e>0&&(o=$(X,X,o)),o}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:o}){if(o){let i=U.getPriceAtTick(t,!1);return $(e,i,X)}else{let i=U.getPriceAtTick(t,!0);return $(e,X,i)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:o}){if(o){let i=U.getPriceAtTick(t,!0);return H(e,i,X)}else{let i=U.getPriceAtTick(t,!1);return H(e,X,i)}}static limitOrderUnfilledAmount({tick:e}){return e.ordersAmount.add(e.partFilledOrdersRemaining)}static matchLimitOrder({tick:e,swapAmount:t,swapDirectionZeroForOne:o,isBaseInput:i,feeRate:r,isFeeOnInput:c}){let u={amountIn:x,amountOut:x,ammFeeAmount:x},p=this.limitOrderUnfilledAmount({tick:e});if(t.isZero()||p.isZero())return u;if(i)c?(u.ammFeeAmount=H(t,new ne(r),ge),u.amountIn=t.sub(u.ammFeeAmount)):u.amountIn=t,u.amountOut=this.getLimitOrderOutput({amountIn:u.amountIn,tick:e.tick,zeroForOne:o}),u.amountOut.gt(p)&&(u.amountOut=p,u.amountIn=this.getLimitOrderInput({amountOut:p,tick:e.tick,zeroForOne:!o}),c&&(u.ammFeeAmount=H(u.amountIn,new ne(r),ge.sub(new ne(r)))));else{let P=ne.min(t,p);c?u.amountOut=P:u.amountOut=ne.min(H(P,ge,ge.sub(new ne(r))),p),u.amountIn=this.getLimitOrderInput({amountOut:u.amountOut,tick:e.tick,zeroForOne:!o}),c&&(u.ammFeeAmount=H(u.amountIn,new ne(r),ge.sub(new ne(r))))}let d=x;e.partFilledOrdersRemaining.gt(x)&&(d=ne.min(e.partFilledOrdersRemaining,u.amountOut),d.gt(x)&&(e.unfilledRatioX64=$(e.unfilledRatioX64,e.partFilledOrdersRemaining.sub(d),e.partFilledOrdersRemaining)),e.partFilledOrdersRemaining=e.partFilledOrdersRemaining.sub(d));let y=u.amountOut.sub(d);if(y.gt(x)){if(!e.partFilledOrdersRemaining.isZero())throw Error("!tick.partFilledOrdersRemaining.isZero()");if(e.ordersAmount.lt(y))throw Error("InvalidLimitOrderAmount");e.orderPhase=e.orderPhase.add(he),e.unfilledRatioX64=$(X,e.ordersAmount.sub(y),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(y),e.ordersAmount=x}return c||(u.ammFeeAmount=H(u.amountOut,new ne(r),ge),u.amountOut=u.amountOut.sub(u.ammFeeAmount)),u}static getPriceAtTick(e,t){let o=this.getSqrtPriceAtTick(e);return t?o.mul(o).add(X.subn(1)).div(X):o.mul(o).div(X)}static getTickAtSqrtPrice(e){if(!(e.gte(Oe)&&e.lte(Ne)))throw Error("SqrtPriceX64");let t=Vn(e),o=t-64,i;o>=0?i=new ne(o).shln(32):i=new ne(-o).shln(32).neg();let r;t>=64?r=e.shrn(t-63):r=e.shln(63-t);let c=new ne(0),u=new ne(1).shln(63);for(let I=0;I<Rn&&!u.isZero();I++){r=r.mul(r);let B=r.shrn(127).toNumber();r=r.shrn(63+B),B&&(c=c.add(u)),u=u.shrn(1)}let p=c.shrn(32),y=i.add(p).mul(Kn),P=y.sub(xn),k=y.add(Cn),w=this.signedShrn64(P),C=this.signedShrn64(k);return w===C?w:U.getSqrtPriceAtTick(C).lte(e)?C:w}static signedShrn64(e){if(e.isNeg()){let t=new ne(1).shln(64),o=e.div(t);return!e.mod(t).isZero()&&e.isNeg()?o.subn(1).toNumber():o.toNumber()}else return e.shrn(64).toNumber()}static sqrtPriceX64ToPrice(e,t,o){let i=e.mul(e),r=t-o,c=20,u=new ne(10).pow(new ne(c)),p=i.mul(u),d=new ne(1).shln(128),P=p.div(d).toString();for(;P.length<=c;)P="0"+P;let k=P.slice(0,-c),w=P.slice(-c),C=k+"."+w;return new et(C).mul(new et(10).pow(r))}static tickToPrice(e,t,o){let i=U.getSqrtPriceAtTick(e);return this.sqrtPriceX64ToPrice(i,t,o)}static priceToTick(e,t,o){let r=e.div(Math.pow(10,t-o)).log().div(new et(1.0001).log()).floor();return Math.max(fe,Math.min(ye,r.toNumber()))}static priceToSqrtPriceX64(e,t,o){let c=e.div(Math.pow(10,t-o)).sqrt().mul(new et(2).pow(64));return new ne(c.toFixed(0))}static toTickIndex(e,t){return e>=0?e-e%t:e-e%t-(e%t!==0?t:0)}static getPriceAndTick({price:e,mintADecimals:t,mintBDecimals:o,zeroForOne:i,tickSpacing:r}){let c=e.clamp(1/10**Math.max(t,o),Number.MAX_SAFE_INTEGER);i||(c=new et(1).div(c));let u=U.toTickIndex(U.priceToTick(c,t,o),r),p=U.tickToPrice(u,t,o);return{price:i?p:new et(1).div(p),tick:u}}};import{TOKEN_2022_PROGRAM_ID as FR,TOKEN_PROGRAM_ID as vR}from"@solana/spl-token";import DR from"decimal.js";var wt=class{static tickSpacingIndexFromTick(e,t){return Math.floor(e/t)}},je=class{static getDynamicFeeInfo({poolInfo:e}){if(!(e.dynamicFeeInfo.filterPeriod===0&&e.dynamicFeeInfo.decayPeriod===0&&e.dynamicFeeInfo.reductionFactor===0&&e.dynamicFeeInfo.dynamicFeeControl===0&&e.dynamicFeeInfo.maxVolatilityAccumulator===0&&e.dynamicFeeInfo.tickSpacingIndexReference===0&&e.dynamicFeeInfo.volatilityReference===0&&e.dynamicFeeInfo.volatilityAccumulator===0&&e.dynamicFeeInfo.lastUpdateTimestamp.isZero()))return e.dynamicFeeInfo}static updateReference({dynamicFeeInfo:e,tickSpacingIndex:t,currentTimestamp:o}){let i=o-e.lastUpdateTimestamp.toNumber();i<e.filterPeriod||(i<e.decayPeriod?(e.tickSpacingIndexReference=t,e.volatilityReference=Math.floor(e.volatilityAccumulator*e.reductionFactor/On),e.lastUpdateTimestamp=new Tn(o)):(e.tickSpacingIndexReference=t,e.volatilityReference=0,e.lastUpdateTimestamp=new Tn(o)))}static updateVolatilityAccumulator({state:e,tickSpacingIndex:t}){let o=Math.abs(e.tickSpacingIndexReference-t),i=e.volatilityReference+o*it;e.volatilityAccumulator=Math.min(i,e.maxVolatilityAccumulator)}},kt=class{static isFeeOnInput(e,t){switch(e){case 0:return!0;case 1:return t;case 2:return!t;default:return!0}}static isFeeOnTokenA(e,t){return e.feeOn===0?t:e.feeOn===1}static isOverflowDefaultTickarrayBitmap({tickSpacing:e,tickIndexs:t}){let{maxTickBoundary:o,minTickBoundary:i}=this.tickArrayStartIndexRange({tickSpacing:e});for(let r of t){let c=le.getTickArrayStartIndex(r,e);if(c>=o||c<i)return!0}return!1}static tickArrayStartIndexRange({tickSpacing:e}){let t=tt.maxTickInTickarrayBitmap(e),o=-t;return t>ye&&(t=le.getTickArrayStartIndex(ye,e)+le.tickCount(e)),o<fe&&(o=le.getTickArrayStartIndex(fe,e)),{maxTickBoundary:t,minTickBoundary:o}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:o,poolLiquidity:i,rewardInfos:r}){var u,p,d;let c=[];for(let y=0;y<r.length;y++){let P=r[y],k=(d=(u=t.rewardDefaultInfos[y])==null?void 0:u.mint.programId)!=null?d:(p=await e.getAccountInfo(P.mint))==null?void 0:p.owner;if(k===void 0)throw Error("get new reward mint info error");let w=D(N({},P),{perSecond:En(P.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Vo(k)});if(w.mint.equals(Vo.default)||w.totalEmissioned.eq(xe))continue;if(o<=w.openTime.toNumber()||i.eq(x)){c.push(w);continue}let C=new Tn(Math.min(w.endTime.toNumber(),o)),h=C.sub(w.lastUpdateTime);if(h.isZero()){c.push(w);continue}let I=H(h,w.emissionsPerSecondX64,X),B=$(h,w.emissionsPerSecondX64,i),S,F=w.totalEmissioned.add(I);if(F.lte(xe))S=F;else{let f=xe.sub(w.totalEmissioned);S=xe,B=$(f,X,i)}let v=w.growthGlobalX64.add(B);c.push(D(N({},w),{growthGlobalX64:v,totalEmissioned:S,lastUpdateTime:C}))}return c}};function Ea({programId:a,poolId:e,poolInfo:t,tickArrays:o,configInfo:i,tickarrayBitmapExtension:r,amountSpecified:c,sqrtPriceLimitX64:u,zeroForOne:p,isBaseInput:d,blockTimestamp:y,includeExtraTickArrays:P}){u.isZero()&&(u=p?new nt(Oe).addn(1):new nt(Ne).subn(1));let k=0;if(o.length===0)return{allTrade:!1,amountSpecifiedRemaining:c,amountCalculated:x,feeAmount:x,sqrtPriceX64:t.sqrtPriceX64,liquidity:t.liquidity,tickCurrent:t.tickCurrent,accounts:[]};let w=P?tt.findTickArrayAddress({programId:a,poolId:e,tickSpacing:t.tickSpacing,poolBitmap:t.tickArrayBitmap,tickArrayBitmap:r,findInfo:{type:p?"oneForZero":"zeroForOne",count:2,tickArrayCurrent:t.tickCurrent}}).filter(T=>T.toString()!==o[0].address.toString()):[],C=le.getTickArrayStartIndex(t.tickCurrent,t.tickSpacing),{firstItckArrayContainsPoolTick:h,firstValidTickArrayStartIndex:I}={firstItckArrayContainsPoolTick:o[k].value.startTickIndex===C,firstValidTickArrayStartIndex:o[k].value.startTickIndex},B=h,S=I,F=o[k],v=kt.isFeeOnInput(t.feeOn,p),f=we.newValue({poolInfo:t,amountSpecified:c,zeroForOne:p,feeRate:i.tradeFeeRate,blockTimestamp:y});for(;!f.amountSpecifiedRemaining.isZero()&&!f.sqrtPriceX64.eq(u);){let T=(()=>{let L=le.nextInitalizedTick({data:F.value,tickSpacing:f.tickSpacing,zeroForOne:p,currentTickIndex:f.tick});if(L!==void 0)return L;if(B){let _=o[++k];return _===void 0?void 0:(S=_.value.startTickIndex,F=_,le.firstinitializedTick({data:_.value,zeroForOne:p}))}else return B=!0,le.firstinitializedTick({data:F.value,zeroForOne:p})})();if(T===void 0)return{allTrade:!1,amountSpecifiedRemaining:f.amountSpecifiedRemaining,amountCalculated:f.amountCalculated,feeAmount:f.lpFee.add(f.fundFee).add(f.protocolFee),sqrtPriceX64:f.sqrtPriceX64,liquidity:f.liquidity,tickCurrent:f.tick,accounts:o.slice(0,k).map(L=>L.address)};let K=we.getTargetPriceBasedOnNextTick({data:f,tickNext:T.tick,zeroForOne:p,sqrtPriceLimitX64:u}),O=f.liquidity;do{we.updateVolatilityAccumulator({state:f});let L=we.getTotalFeeRate({data:f}),{isSkipped:_,boundedPrice:re}=we.getSpacingBoundedPrice({data:f,targetPrice:K,zeroForOne:p}),z=!f.sqrtPriceX64.eq(re),V;z?(V=At.computeSwap(f.sqrtPriceX64,re,f.liquidity,f.amountSpecifiedRemaining,L,d,p,v),we.applySwapAmounts({state:f,amountIn:V.amountIn,amountOut:V.amountOut,feeAmount:V.feeAmount,isBaseInput:d,isFeeOnInput:v,protocolFeeRate:new nt(i.protocolFeeRate),fundFeeRate:new nt(i.fundFeeRate)})):V=At.newSwapComputationResult({sqrtPriceNextX64:re});let ee=U.limitOrderUnfilledAmount({tick:T});if(f.sqrtPriceNextX64.eq(V.sqrtPriceNextX64)){let G=U.matchLimitOrder({tick:T,swapAmount:f.amountSpecifiedRemaining,swapDirectionZeroForOne:p,isBaseInput:d,feeRate:L,isFeeOnInput:v});if(G.amountIn.gt(x)&&we.applySwapAmounts({state:f,amountIn:G.amountIn,amountOut:G.amountOut,feeAmount:G.ammFeeAmount,isBaseInput:d,isFeeOnInput:v,protocolFeeRate:new nt(i.protocolFeeRate),fundFeeRate:new nt(i.fundFeeRate)}),U.hasLiquidity({data:T})&&!U.hasLimitOrders({data:T})){let ae=p?T.liquidityNet.neg():T.liquidityNet;O=de.addDelta(f.liquidity,ae)}f.tick=p&&!U.hasLimitOrders({data:T})||!p&&U.hasLimitOrders({data:T})?f.tickNext-1:f.tickNext}else f.sqrtPriceX64.eq(V.sqrtPriceNextX64)||(f.tick=U.getTickAtSqrtPrice(V.sqrtPriceNextX64));if(f.sqrtPriceX64=V.sqrtPriceNextX64,we.updateDynamicFeeIndex({state:f,zeroForOne:p,isSkippedTickSpacing:_}),f.amountSpecifiedRemaining.isZero()||f.sqrtPriceX64.eq(K)){let G=U.limitOrderUnfilledAmount({tick:T});if(!f.amountSpecifiedRemaining.isZero()&&!G.eq(ee)&&!G.isZero())throw Error("!limitOrderUnfilledAmountAfter.isZero()");break}}while(!0);f.liquidity=O}return{allTrade:!0,amountSpecifiedRemaining:x,amountCalculated:f.amountCalculated,feeAmount:f.lpFee.add(f.fundFee).add(f.protocolFee),sqrtPriceX64:f.sqrtPriceX64,liquidity:f.liquidity,tickCurrent:f.tick,accounts:[...w,...o.slice(0,k+1+(P?1:0)).map(T=>T.address)]}}export{Ea as swapInternal};
//# sourceMappingURL=swapSimulator.mjs.map