@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 97.3 kB
JavaScript
var Wo=Object.defineProperty,qo=Object.defineProperties;var Uo=Object.getOwnPropertyDescriptors;var Bt=Object.getOwnPropertySymbols;var In=Object.prototype.hasOwnProperty,Bn=Object.prototype.propertyIsEnumerable;var hn=(a,e,t)=>e in a?Wo(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,N=(a,e)=>{for(var t in e||(e={}))In.call(e,t)&&hn(a,t,e[t]);if(Bt)for(var t of Bt(e))Bn.call(e,t)&&hn(a,t,e[t]);return a},D=(a,e)=>qo(a,Uo(e));var Te=(a,e)=>{var t={};for(var n in a)In.call(a,n)&&e.indexOf(n)<0&&(t[n]=a[n]);if(a!=null&&Bt)for(var n of Bt(a))e.indexOf(n)<0&&Bn.call(a,n)&&(t[n]=a[n]);return t};import nt from"bn.js";import W from"bn.js";var X=new W(1).shln(64),qe=64,Go=new W(1).shln(128),xe=new W(1).shln(64).subn(1),zo=new W(1).shln(128).subn(1),fe=-443636,ye=443636,Oe=new W("4295048016"),Ne=new W("79226673521066979257578248091"),Sn=new W("59543866431248"),Kn=new W("184467440737095516"),xn=new W("15793534762490258745"),Cn=16,St=512,me=60,Ea=new W("18446743708227953217"),Rn=[{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,Ln=1e4,On=1e5;var rt=3,Nn=100;var Mn=10,Fn=100,Ue=14;var x=new W(0),he=new W(1),Da=new W(-1);var Wa=new W("18446744073700000000");import Ct from"bn.js";import En from"decimal.js";import Xo from"bn.js";import vn from"decimal.js";function j(a,e,t){if(t.isZero())throw new Error("Division by zero");return a.mul(e).div(t)}function Q(a,e,t){if(t.isZero())throw new Error("Division by zero");let n=a.mul(e),i=n.div(t);return n.mod(t).isZero()?i:i.addn(1)}function xt(a,e){return a.div(e).add(a.mod(e).isZero()?x:he)}var Xa=new Xo(1).shln(256).subn(1);function Vn(a){return a.isZero()?-1:a.bitLength()-1}function _n(a,e){return new vn(a.toString()).div(vn.pow(2,64)).toDecimalPlaces(e)}var de=class{static getDeltaAmountAUnsigned(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let r=n.shln(qe),c=t.sub(e);if(!e.gt(x))throw Error("!sqrtPriceX64A.gt(BN_ZERO)");let u=i?xt(Q(r,c,t),e):j(r,c,t).div(e);if(u.gt(xe))throw Error("MaxTokenOverflow");return u}static getDeltaAmountBUnsigned(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let r=i?Q(n,t.sub(e),X):j(n,t.sub(e),X);if(r.gt(xe))throw Error("MaxTokenOverflow");return r}static addDelta(e,t){if(t.isNeg()){let n=t.neg();if(e.lt(n))throw new Error("Liquidity underflow");return e.sub(n)}else return e.add(t)}static getLiquidityFromAmountA(e,t,n){if(n.isZero())return x;e.gt(t)&&([e,t]=[t,e]);let i=j(e,t,X),r=t.sub(e);return j(n,i,r)}static getLiquidityFromAmountB(e,t,n){if(n.isZero())return x;e.gt(t)&&([e,t]=[t,e]);let i=t.sub(e);return j(n,X,i)}static getLiquidityFromAmounts(e,t,n,i,r){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return this.getLiquidityFromAmountA(t,n,i);if(e.lt(n)){let c=this.getLiquidityFromAmountA(e,n,i),u=this.getLiquidityFromAmountB(t,e,r);return c.lt(u)?c:u}else return this.getLiquidityFromAmountB(t,n,r)}static getAmountsForLiquidity(e,t,n,i,r){t.gt(n)&&([t,n]=[n,t]);let c=x,u=x;return e.lte(t)?c=this.getDeltaAmountAUnsigned(t,n,i,r):e.lt(n)?(c=this.getDeltaAmountAUnsigned(e,n,i,r),u=this.getDeltaAmountBUnsigned(t,e,i,r)):u=this.getDeltaAmountBUnsigned(t,n,i,r),{amountA:c,amountB:u}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,r,c,u){let{amountA:p,amountB:d}=this.getAmountsForLiquidity(e,t,n,i,c),y=r?1+u:1-u,P=new Ct(new En(p.toString()).mul(y).toFixed(0)),k=new Ct(new En(d.toString()).mul(y).toFixed(0));return{amountSlippageA:P,amountSlippageB:k}}static getLiquidityAndAmountsFromAmount({sqrtPriceCurrentX64:e,sqrtPriceLowerX64:t,sqrtPriceUpperX64:n,amountInfo:i}){let r;if(i.type==="liquidity")r=i.amount;else if(i.type==="amountA")r=e.gte(n)?x:this.getLiquidityFromAmountA(Ct.max(e,t),n,i.amount);else if(i.type==="amountB")r=e.lte(t)?x:this.getLiquidityFromAmountB(t,Ct.min(e,n),i.amount);else throw Error("amount info type check error");return N({liquidity:r},this.getAmountsForLiquidity(e,t,n,i.amount,!0))}};import{PublicKey as Eo}from"@solana/web3.js";import kn from"bn.js";import{PublicKey as ii}from"@solana/web3.js";import Gn,{isBN as zn}from"bn.js";import{bits as Yo,BitStructure as es,blob as Qo,Blob as ts,cstr as ns,f32 as os,f32be as is,f64 as rs,f64be as as,greedy as ss,Layout as Zo,ns64 as us,ns64be as cs,nu64 as ls,nu64be as ms,offset as Ho,s16 as ds,s16be as ps,s24 as fs,s24be as ys,s32 as jo,s32be as bs,s40 as gs,s40be as Ps,s48 as As,s48be as ws,s8 as ks,seq as $o,struct as Ts,Structure as Jo,u16 as ei,u16be as hs,u24 as Is,u24be as Bs,u32 as ti,u32be as Ss,u40 as Ks,u40be as xs,u48 as Cs,u48be as Rs,u8 as ni,UInt as oi,union as Ls,Union as Os,unionLayoutDiscriminator as Ns,utf8 as Ms}from"@solana/buffer-layout";var Rt=Zo,Dn=Jo;var Qt=oi;var Wn=ni,ee=ei;var Lt=ti;var Pe=jo;var qn=$o;var E=Qo;var Zt=Yo,Un=Ho;var ve=class extends Rt{constructor(t,n,i){super(t,i);this.blob=E(t),this.signed=n}decode(t,n=0){let i=new Gn(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new Gn(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},Ot=class extends Rt{constructor(t){super(8,t);this._lower=Zt(Lt(),!1),this._upper=Zt(Lt(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let i=this._lower.decode(t,n),r=this._upper.decode(t,n+this._lower.span);return N(N({},i),r)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function b(a){return new Qt(1,a)}function Z(a){return new Qt(4,a)}function o(a){return new ve(8,!1,a)}function M(a){return new ve(16,!1,a)}function Xn(a){return new ve(1,!0,a)}function Ge(a){return new ve(8,!0,a)}function Yn(a){return new ve(16,!0,a)}var at=class extends Rt{constructor(t,n,i,r){super(t.span,r);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function s(a){return new at(E(32),e=>new ii(e),e=>e.toBuffer(),a)}function be(a){return new at(Wn(),ri,ai,a)}function ri(a){if(a===0)return!1;if(a===1)return!0;throw new Error("Invalid bool: "+a)}function ai(a){return a?1:0}function Qn(a,e){let t=Lt("length"),n=g([t,A(a,Un(t,-t.span),"values")]);return new at(n,({values:i})=>i,i=>({values:i}),e)}var Ht=class extends Dn{decode(e,t){return super.decode(e,t)}};function g(a,e,t){return new Ht(a,e,t)}function A(a,e,t){let n,i=typeof e=="number"?e:zn(e)?e.toNumber():new Proxy(e,{get(r,c){if(!n){let u=Reflect.get(r,"count");n=zn(u)?u.toNumber():u,Reflect.set(r,"count",n)}return Reflect.get(r,c)},set(r,c,u){return c==="count"&&(n=u),Reflect.set(r,c,u)}});return qn(a,i,t)}var si=g([E(8),b("bump"),ee("index"),s("owner"),Z("protocolFeeRate"),Z("tradeFeeRate"),ee("tickSpacing"),Z("fundFeeRate"),A(Z(),1),s("fundOwner"),A(o(),3)]),ui=g([Z("blockTimestamp"),Ge("tickCumulative"),A(o(),4)]),Zn=g([E(8),be("initialized"),o("recentEpoch"),ee("observationIndex"),s("poolId"),A(ui,Nn,"observations"),A(o(),4)]),ci=g([ee("filterPeriod"),ee("decayPeriod"),ee("reductionFactor"),Z("dynamicFeeControl"),Z("maxVolatilityAccumulator"),Pe("tickSpacingIndexReference"),Z("volatilityReference"),Z("volatilityAccumulator"),o("lastUpdateTimestamp"),A(b(),46)]),li=g([b("state"),o("openTime"),o("endTime"),o("lastUpdateTime"),M("emissionsPerSecondX64"),o("totalEmissioned"),o("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"),ee("tickSpacing"),M("liquidity"),M("sqrtPriceX64"),Pe("tickCurrent"),Z(),M("feeGrowthGlobalX64A"),M("feeGrowthGlobalX64B"),o("protocolFeesTokenA"),o("protocolFeesTokenB"),A(M(),4),b("status"),b("feeOn"),E(6),A(li,rt,"rewardInfos"),E(8*16,"tickArrayBitmap"),A(o(),4),o("fundFeesTokenA"),o("fundFeesTokenB"),o("startTime"),o("recentEpoch"),ci.replicate("dynamicFeeInfo"),A(o(),46)]),mi=g([M("growthInsideLastX64"),o("rewardAmountOwed")]),di=g([E(8),b("bump"),s("nftMint"),s("poolId"),Pe("tickLower"),Pe("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),A(mi,rt,"rewardInfos"),o("recentEpoch"),A(o(),7)]),Xs=g([E(8),b("bump"),s("poolId"),Pe("tickLower"),Pe("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),A(M(),rt,"rewardGrowthInside"),o("recentEpoch"),A(o(),7)]),pi=g([Pe("tick"),Yn("liquidityNet"),M("liquidityGross"),M("feeGrowthOutsideX64A"),M("feeGrowthOutsideX64B"),A(M(),rt,"rewardGrowthsOutsideX64"),o("orderPhase"),o("ordersAmount"),o("partFilledOrdersRemaining"),M("unfilledRatioX64"),A(Z(),3)]),Hn=g([E(8),s("poolId"),Pe("startTickIndex"),A(pi,me,"ticks"),b("initializedTickCount"),o("recentEpoch"),A(b(),107)]),fi=g([E(8),b("bump"),A(s(),Mn,"operationOwners"),A(s(),Fn,"whitelistMints")]),yi=g([E(8),s("poolId"),s("owner"),Pe("tick"),be("zeroForOne"),o("orderPhase"),o("totalAmount"),o("filledAmount"),o("settleBase"),o("settleOutput"),o("openTime"),M("unfilledRatioX64"),A(o(),4)]),jn=g([E(8),s("poolId"),E(8*8*Ue,"positiveTickArrayBitmap"),E(8*8*Ue,"negativeTickArrayBitmap")]),Ys=g([E(8),ee("index"),ee("filterPeriod"),ee("decayPeriod"),ee("reductionFactor"),Z("dynamicFeeControl"),Z("maxVolatilityAccumulator"),A(o(),8)]),bi=g([E(8),s("wallet"),b("nonceIndex"),o("orderNonce"),A(o(),4)]),Qs=g([o(),b("bump"),s("owner"),s("poolId"),s("positionId"),s("nftAccount"),A(o(),8)]),gi=g([E(8),b("bump"),s("lockOwner"),s("poolId"),s("positionId"),s("nftAccount"),s("lockNftMint"),o("recentEpoch"),A(o(),8)]);import{PublicKey as wi}from"@solana/web3.js";import{get as $n,set as Pi}from"lodash";var $t=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(n=>typeof n=="object"?JSON.stringify(n):n).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},Jn={},Ai={};function q(a){let e=$n(Jn,a);if(!e){let t=$n(Ai,a);e=new $t({name:a,logLevel:t}),Pi(Jn,a,e)}return e}import{MINT_SIZE as ru,TOKEN_PROGRAM_ID as au,getTransferFeeConfig as su,unpackMint as uu}from"@solana/spl-token";var Jt=q("Raydium_accountInfo_util");async function Re(a,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:r=100}=N({batchRequest:!1},t),c=en(e,r),u=new Array(c.length).fill([]);if(n){let p=c.map(P=>{let k=a._buildArgs([P.map(w=>w.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:k}}),d=en(p,10);u=(await(await Promise.all(d.map(async P=>await a._rpcBatchRequest(P)))).flat()).map(P=>(P.error&&Jt.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"&&Jt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(w[0],"base64"),executable:C,lamports:h,owner:new wi(I),rentEpoch:B}}return null})))}else try{u=await Promise.all(c.map(p=>a.getMultipleAccountsInfo(p,i)))}catch(p){p instanceof Error&&Jt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${p.message}`)}return u.flat()}import De from"bn.js";import cC from"decimal.js";import xi from"big.js";import Bu from"bn.js";import ki from"toformat";var Ti=ki,ut=Ti;import Mt from"big.js";import Ii from"bn.js";import Bi 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"),tn=ut(Mt),lt=ut(Bi),Si={[0]:lt.ROUND_DOWN,[1]:lt.ROUND_HALF_UP,[2]:lt.ROUND_UP},Ki={[0]:Mt.roundDown,[1]:Mt.roundHalfUp,[2]:Mt.roundUp},Y=class{constructor(e,t=new Ii(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:""},n=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:Si[n]});let i=new lt(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Nt.logWithError(`${e} is not an integer.`),e<0&&Nt.logWithError(`${e} is negative.`),tn.DP=e,tn.RM=Ki[n]||1,new tn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Mu=q("Raydium_amount"),Fu=ut(xi);import{PublicKey as Ri}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as to}from"@solana/spl-token";var Ft={chainId:101,address:Ri.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 on}from"@solana/web3.js";import{PublicKey as H,SystemProgram as no,SYSVAR_RENT_PUBKEY as Li}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Oi}from"@solana/spl-token";function ze({pubkey:a,isSigner:e=!1,isWritable:t=!0}){return{pubkey:a,isWritable:t,isSigner:e}}var Ni=[ze({pubkey:Oi,isWritable:!1}),ze({pubkey:no.programId,isWritable:!1}),ze({pubkey:Li,isWritable:!1})];function oo({publicKey:a,transformSol:e}){let t=io(a.toString());if(t instanceof H)return e&&t.equals(Ve)?Le:t;if(e&&t.toString()===Ve.toBase58())return Le;if(typeof t=="string"){if(t===H.default.toBase58())return H.default;try{return new H(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function io(a){try{return new H(a)}catch{return a}}var nn=new H("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),mt=new H("SysvarRent111111111111111111111111111111111"),Uu=new H("SysvarC1ock11111111111111111111111111111111"),vt=new H("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Mi=new H("Sysvar1nstructions1111111111111111111111111"),Fi=no.programId,Gu=new H("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),zu=new H("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Xu=new H("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Yu=new H("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Qu=new H("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Zu=new H("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Hu=new H("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),ju=new H("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),$u=new H("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ju=new H("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),ec=new H("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Le=new H("So11111111111111111111111111111111111111112"),Ve=H.default;var rn=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:r=!1,isToken2022:c=!1}){if(e===Ve.toBase58()||e instanceof on&&Ve.equals(e)){this.decimals=Ie.decimals,this.symbol=Ie.symbol,this.name=Ie.name,this.mint=new on(Ie.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=r?on.default:oo({publicKey:e}),this.isToken2022=c}equals(e){return this===e?!0:this.mint.equals(e.mint)}},se=rn;se.WSOL=new rn(D(N({},Ie),{mint:Ie.address}));var an=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Vt=an;Vt.SOL=new an(Ft);import vi from"bn.js";var dc=new Y(new vi(100));var Pc=q("Raydium_price");import{merge as mx}from"lodash";import Kc 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 Hc=q("Raydium_Api");import{PublicKey as Im,SystemProgram as Bm}from"@solana/web3.js";import{AccountLayout as Rm,createAssociatedTokenAccountIdempotentInstruction as Lm,TOKEN_PROGRAM_ID as Om,TOKEN_2022_PROGRAM_ID as Nm}from"@solana/spl-token";import{PublicKey as He,sendAndConfirmTransaction as dn,SystemProgram as Ui,Transaction as ft,TransactionMessage as yt,VersionedTransaction as bt}from"@solana/web3.js";import Gi from"axios";import{PublicKey as sn,AddressLookupTableAccount as Qe}from"@solana/web3.js";async function un({connection:a,address:e,cluster:t="mainnet"}){let n=await Re(a,[...new Set(e.map(r=>r.toString()))].map(r=>new sn(r))),i={};for(let r=0;r<e.length;r++){let c=n[r],u=e[r];if(!c)continue;let p=new Qe({key:u,state:Qe.deserialize(c.data)});i[u.toString()]=p,t==="devnet"?Ye[u.toString()]=p:Xe[u.toString()]=p}return i}var Xe={},cn=async a=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Xe[e])return Xe;let t=new sn(e),n=await a.getAccountInfo(t);return n&&(Xe[e]=new Qe({key:t,state:Qe.deserialize(n.data)})),Xe},Ye={},ln=async a=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Ye[e])return Ye;let t=new sn(e),n=await a.getAccountInfo(t);return n&&(Ye[e]=new Qe({key:t,state:Qe.deserialize(n.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 Ei,VersionedTransaction as lo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Di}from"@solana/spl-token";var so=q("Raydium_txUtil"),mo=1644;function _t(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 Ze(a,e){var n,i;let t=e!=null?e:"confirmed";return(i=await((n=a.getLatestBlockhash)==null?void 0:n.call(a,{commitment:t})))==null?void 0:i.blockhash}async function Et(a,e){return a.getSignatureStatuses([e]),new Promise((t,n)=>{let i=setTimeout(n,6e4);a.onSignature(e,r=>{if(clearTimeout(i),!r.err){t("");return}n(Object.assign(r.err,{txId:e}))},"confirmed")})}function mn(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,n]=_i.findProgramAddressSync(a,e);return{publicKey:t,nonce:n}}function dt({instructions:a,payer:e,signers:t}){return mn(a,[e,...t])}function pt({instructions:a,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=uo.generate().publicKey.toString()}){let r=new Ei({payerKey:e,recentBlockhash:n,instructions:a}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new lo(r).serialize()).toString("base64").length<mo}catch{return!1}}var Wi=a=>Buffer.isBuffer(a)?a:a instanceof Uint8Array?Buffer.from(a.buffer,a.byteOffset,a.byteLength):Buffer.from(a),qi=a=>{let e=a.serialize({requireAllSignatures:!1,verifySignatures:!1});a instanceof lo&&(e=Wi(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function _e(a){let e=[];return a.forEach(t=>{t instanceof co&&(t.recentBlockhash||(t.recentBlockhash=Di.toBase58()),t.feePayer||(t.feePayer=uo.generate().publicKey)),e.push(qi(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 n;let e=(await Gi.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=_t(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(Ui.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new He(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(oe.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:r=[],lookupTableAddress:c=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...r),this.lookupTableAddress.push(...c.filter(u=>u!==He.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:n}){return e===0?await this.buildV0(D(N({},t||{}),{lookupTableAddress:n})):this.build(t)}build(e){var n;let t=new ft;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(i=>i.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async i=>{var y;let{recentBlockHash:r,skipPreflight:c=!0,sendAndConfirm:u,notSendToRpc:p}=i||{},d=r!=null?r:await Ze(this.connection,this.blockhashCommitment);if(t.recentBlockhash=d,this.signers.length&&t.sign(...this.signers),_e([t]),(y=this.owner)!=null&&y.isKeyPair)return{txId:u?await dn(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:n}=e,{transaction:i}=this.build(n),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 Ze(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 dn(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));_e(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,V=null,re=z=>{L!==null&&clearInterval(L),V!==null&&this.connection.removeSignatureListener(V);let _=f.findIndex(J=>J.txId===K);if(_>-1){if(f[_].status==="error"||f[_].status==="success")return;f[_].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 _=await this.connection.getTransaction(K,{commitment:"confirmed",maxSupportedTransactionVersion:0});_&&(O=!0,clearInterval(L),re({err:((z=_.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",K))}catch(_){O=!0,clearInterval(L),console.error("getTransaction timeout:",_,K)}},Dt)),V=this.connection.onSignature(K,z=>{if(O){this.connection.removeSignatureListener(V);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:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){var h;let C=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i,recentBlockhash:r}=C,c=Te(C,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),u=N(N({},this.cluster==="devnet"?await ln(this.connection):await cn(this.connection)),t),p=Array.from(new Set([...n,...this.lookupTableAddress])),d=[];for(let I of p)u[I]===void 0&&d.push(new He(I));let y=await un({connection:this.connection,address:d});for(let[I,B]of Object.entries(y))u[I]=B;let P=i?He.default.toBase58():r!=null?r:await Ze(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(_e([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:n}=e,{transaction:i}=await this.buildV0(n),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:n,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),_e(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 V=S.findIndex(re=>re.txId===v);if(V>-1){if(S[V].status==="error"||S[V].status==="success")return;S[V].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 V=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(f=!0,clearInterval(T),O({err:((L=V.meta)==null?void 0:L.err)||null}),console.log("tx status from getTransaction:",v))}catch(V){f=!0,clearInterval(T),console.error("getTransaction timeout:",V,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:n||{}}}async sizeCheckBuild(e){var k;let P=e||{},{splitIns:t=[],computeBudgetConfig:n}=P,i=Te(P,["splitIns","computeBudgetConfig"]),r=n?_t(n):{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=n?[...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 He(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:n?[...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:n?[...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 Ze(this.connection,this.blockhashCommitment);if(u.forEach(async(f,T)=>{f.recentBlockhash=F,p[T].length&&f.sign(...p[T])}),_e(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 dn(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 V=await this.connection.sendRawTransaction(T[K].serialize(),{skipPreflight:S});O.push({txId:V,status:"sent",signedTx:T[K]}),h==null||h([...O]),K++;let re=!1,z=null,_=null,J=G=>{z!==null&&clearInterval(z),_!==null&&this.connection.removeSignatureListener(_);let ae=O.findIndex(Se=>Se.txId===V);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(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});ae&&(re=!0,clearInterval(z),J({err:((G=ae.meta)==null?void 0:G.err)||null}),console.log("tx status from getTransaction:",V))}catch(ae){re=!0,clearInterval(z),console.error("getTransaction timeout:",ae,V)}},Dt)),_=this.connection.onSignature(V,G=>{if(re){this.connection.removeSignatureListener(_);return}re=!0,J(G)},"confirmed"),this.connection.getSignatureStatus(V)};return await L(),{txIds:O.map(V=>V.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:n=[],lookupTableCache:i={},lookupTableAddress:r=[],insCountLimit:c=12}=F,u=Te(F,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),p=N(N({},this.cluster==="devnet"?await ln(this.connection):await cn(this.connection)),i),d=Array.from(new Set([...this.lookupTableAddress,...r])),y=[];for(let f of d)p[f]===void 0&&y.push(new He(f));let P=await un({connection:this.connection,address:y});for(let[f,T]of Object.entries(P))p[f]=T;let k=t?_t(t):{instructions:[],instructionTypes:[]},w=await Ze(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!==n[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===n[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(V=>V.isSigner).map(V=>V.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:V=!0}=f||{};if(h.map(async(z,_)=>{I[_].length&&z.sign(I[_]),L&&(z.message.recentBlockhash=L)}),_e(h),(re=this.owner)!=null&&re.isKeyPair){if(T){let z=0,_=[];for(let J of h){if(++z,z<=O){console.log("skip tx: ",z),_.push("tx skipped");continue}let G=await this.connection.sendTransaction(J,{skipPreflight:V});await Et(this.connection,G),_.push(G)}return{txIds:_,signedTxs:h}}return{txIds:await Promise.all(h.map(async z=>await this.connection.sendTransaction(z,{skipPreflight:V}))),signedTxs:h}}if(this.signAllTransactions){let z=await this.signAllTransactions(h.slice(O,h.length)),_=[...h.slice(0,O),...z];if(T){let J=0,G=[],ae=async()=>{if(!_[J])return;if(J<O){G.push({txId:"",status:"success",signedTx:_[J]}),K==null||K([...G]),J++,ae();return}let Se=await this.connection.sendTransaction(_[J],{skipPreflight:V});G.push({txId:Se,status:"sent",signedTx:_[J]}),K==null||K([...G]),J++;let ot=!1,We=null,It=null,Tn=Fe=>{We!==null&&clearInterval(We),It!==null&&this.connection.removeSignatureListener(It);let Ke=G.findIndex(Do=>Do.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:0});Ke&&(ot=!0,clearInterval(We),Tn({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,Tn(Fe)},"confirmed"),this.connection.getSignatureStatus(Se)};return ae(),{txIds:[],signedTxs:_}}else{let J=[];for(let G=0;G<_.length;G+=1){let ae=await this.connection.sendTransaction(_[G],{skipPreflight:V});J.push(ae)}return{txIds:J,signedTxs:_}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:u||{}}}};var pn=(...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(pn(e))}logInfo(...e){this.logger.info(pn(e))}logAndCreateError(...e){let t=pn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as tm,SystemProgram as om}from"@solana/web3.js";import am from"bn.js";import{createCloseAccountInstruction as lm,createInitializeAccountInstruction as mm,createTransferInstruction as dm,TOKEN_PROGRAM_ID as pm}from"@solana/spl-token";import{Keypair as ql,PublicKey as Ul}from"@solana/web3.js";import Xl from"bn.js";import{TOKEN_PROGRAM_ID as Zl}from"@solana/spl-token";var qt=g([s("mint"),s("owner"),o("amount"),Z("delegateOption"),s("delegate"),b("state"),Z("isNativeOption"),o("isNative"),o("delegatedAmount"),Z("closeAuthorityOption"),s("closeAuthority")]);import{PublicKey as Zb,SystemProgram as Hb}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as $b}from"@solana/spl-token";import{PublicKey as Dm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as qm}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"),fn=new R("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Xm=new R("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Xi=new R("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),go=new R("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Po=new R("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Ym=new R("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Yi=new R("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Ao=new R("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Qi=new R("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Zi=new R("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),wo=new R("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Qm=new R("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Hi=new R("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),yn=new R("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),ji=new R("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Zm=new R("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),$i=new R("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ji=new R("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),er=new R("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Hm=new R("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),jm=new R("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),$m=new R("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Jm=new R("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),ed=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 If,TOKEN_2022_PROGRAM_ID as Bf,TOKEN_PROGRAM_ID as Sf}from"@solana/spl-token";import{PublicKey as xf}from"@solana/web3.js";import Rf from"bn.js";import Of from"decimal.js";import{TOKEN_PROGRAM_ID as fd}from"@solana/spl-token";import{PublicKey as Pd}from"@solana/web3.js";var tr=g([Z("mintAuthorityOption"),s("mintAuthority"),o("supply"),b("decimals"),b("isInitialized"),Z("freezeAuthorityOption"),s("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as Yp,TOKEN_2022_PROGRAM_ID as Qp,TOKEN_PROGRAM_ID as Zp}from"@solana/spl-token";import{Keypair as $p,PublicKey as Jp,SystemProgram as tf,TransactionInstruction as nf}from"@solana/web3.js";import rf from"bn.js";import Rd from"bn.js";function ko(a){let e=Buffer.alloc(4);return e.writeInt32BE(a),e}var Dd=Buffer.from("amm_config","utf8"),or=Buffer.from("pool","utf8"),ir=Buffer.from("pool_vault","utf8"),Wd=Buffer.from("pool_reward_vault","utf8"),qd=Buffer.from("position","utf8"),rr=Buffer.from("tick_array","utf8"),Ud=Buffer.from("operation","utf8"),Gd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),zd=Buffer.from("observation","utf8"),Xd=Buffer.from("support_mint","utf8"),Yd=Buffer.from("dynamic_fee_config","utf8"),Qd=Buffer.from("permission","utf8");function gt(a,e,t){return Ae([rr,e.toBuffer(),ko(t)],a)}var Zd=Buffer.from("locked_position","utf8");import{sha256 as mr}from"js-sha256";import $d from"bn.js";import ap from"bn.js";var Pt=class{static getNextSqrtPriceFromAmountARoundingUp(e,t,n,i){if(n.isZero())return e;let r=t.shln(qe);if(i){let c=n.mul(e),u=r.add(c);if(u.gte(r))return Q(r,e,u);let p=j(r,he,e);return Q(r,he,p.add(n))}else{let c=n.mul(e);if(r.lte(c))throw new Error("Insufficient liquidity for token0 removal");let u=r.sub(c);return Q(r,e,u)}}static getNextSqrtPriceFromAmountBRoundingDown(e,t,n,i){if(n.isZero())return e;if(i){let r=n.shln(qe).div(t);return e.add(r)}else{let r=xt(n.shln(qe),t);return e.sub(r)}}static getNextSqrtPriceFromInput(e,t,n,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,n,!0):this.getNextSqrtPriceFromAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceFromOutput(e,t,n,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,n,!1):this.getNextSqrtPriceFromAmountARoundingUp(e,t,n,!1)}};import $ from"bn.js";var we=class{static newValue({poolInfo:e,amountSpecified:t,zeroForOne:n,feeRate:i,blockTimestamp:r}){let c={amountSpecifiedRemaining:t,amountCalculated:x,sqrtPriceX64:e.sqrtPriceX64,tick:e.tickCurrent,feeGrowthGlobalX64:n?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:$e.getDynamicFeeInfo({poolInfo:e})};return c.dynamicFeeInfo&&(c.tickSpacingIndex=wt.tickSpacingIndexFromTick(c.tick,c.tickSpacing),$e.updateReference({dynamicFeeInfo:c.dynamicFeeInfo,tickSpacingIndex:c.tickSpacingIndex,currentTimestamp:r})),c}static getTargetPriceBasedOnNextTick({data:e,tickNext:t,zeroForOne:n,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(n&&e.sqrtPriceNextX64.lt(i)||!n&&e.sqrtPriceNextX64.gt(i)?r=i:r=e.sqrtPriceNextX64,n){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||$e.updateVolatilityAccumulator({state:e.dynamicFeeInfo,tickSpacingIndex:e.tickSpacingIndex})}static computeDynamicFeeRate({data:e,tickSpacing:t}){let n=e.volatilityAccumulator*t,i=n*n,r=On*it*it,c=Q(new $(e.dynamicFeeControl),new $(i),new $(r)).toNumber();return c>Kt?Kt:c}static getTotalFeeRate({data:e}){if(e.dynamicFeeInfo){let t=this.computeDynamicFeeRate({data:e.dynamicFeeInfo,tickSpacing:e.tickSpacing}),n=e.baseFeeRate+t;return Math.min(Kt,n)}return e.baseFeeRate}static getSpacingBoundedPrice({data:e,targetPrice:t,zeroForOne:n}){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=n?e.tickSpacingIndex*i:(e.tickSpacingIndex+1)*i,c=Math.max(fe,Math.min(ye,r)),u=U.getSqrtPriceAtTick(c);return n?{isSkipped:!1,boundedPrice:$.max(t,u)}:{isSkipped:!1,boundedPrice:$.min(t,u)}}static applySwapAmounts({state:e,amountIn:t,amountOut:n,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(n)):(e.amountSpecifiedRemaining=e.amountSpecifiedRemaining.sub(n),e.amountCalculated=e.amountCalculated.add(d)),this.splitFee({state:e,feeAmount:i,protocolFeeRate:u,fundFeeRate:p})}static updateDynamicFeeIndex({state:e,zeroForOne:t,isSkippedTickSpacing:n}){if(e.dynamicFeeInfo!==void 0){if(n){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:n,fundFeeRate:i}){let r=t;if(n.gt(x)){let c=t.mul(n).div(new $(ge));e.protocolFee=e.protocolFee.add(c),r=r.sub(c)}if(i.gt(x)){let c=t.mul(i).div(new $(ge));e.fundFee=e.fundFee.add(c),r=r.sub(c)}if(e.liquidity.gt(x)){let c=j(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:n,zeroForOne:i,isBaseInput:r}){if(r)try{return i?de.getDeltaAmountAUnsigned(t,e,n,!0):de.getDeltaAmountBUnsigned(e,t,n,!0)}catch(c){if(c.message==="MaxTokenOverflow")return null;throw c}else try{return i?de.getDeltaAmountBUnsigned(t,e,n,!1):de.getDeltaAmountAUnsigned(e,t,n,!1)}catch(c){if(c.message==="MaxTokenOverflow")return null;throw c}}static computeSwap(e,t,n,i,r,c,u,p){let d=this.newSwapComputationResult({});if(c){let P=p?j(i,new $(Ce-r),new $(Ce)):i,k=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:u,isBaseInput:c});k!==null&&(d.amountIn=k),d.sqrtPriceNextX64=k!==null&&P.gte(d.amountIn)?t:Pt.getNextSqrtPriceFromInput(e,n,P,u)}else{let P=p?i:Q(i,new $(Ce),new $(Ce-r)),k=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:u,isBaseInput:c});k!==null&&(d.amountOut=k),d.sqrtPriceNextX64=k!==null&&P.gte(d.amountOut)?t:Pt.getNextSqrtPriceFromOutput(e,n,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,n,!0)),y&&!c||(d.amountOut=de.getDeltaAmountBUnsigned(d.sqrtPriceNextX64,e,n,!1))):(y&&c||(d.amountIn=de.getDeltaAmountBUnsigned(e,d.sqrtPriceNextX64,n,!0)),y&&!c||(d.amountOut=de.getDeltaAmountAUnsigned(e,d.sqrtPriceNextX64,n,!1))),c)p?d.sqrtPriceNextX64.eq(t)?d.feeAmount=Q(d.amountIn,new $(r),new $(Ce-r)):d.feeAmount=i.sub(d.amountIn):(d.feeAmount=Q(d.amountOut,new $(r),new $(Ce)),d.amountOut=d.amountOut.sub(d.feeAmount),y||(d.amountIn=i));else if(p)d.amountOut=$.min(d.amountOut,i),d.feeAmount=Q(d.amountIn,new $(r),new $(Ce-r));else{d.feeAmount=Q(d.amountOut,new $(r),new $(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(mr.digest(e)).slice(0,8)}Zn.span;var pf=q("Raydium_Clmm"),ff={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 gn}from"@solana/web3.js";var br=g([b("instruction")]),gr=g([b("instruction")]),Pr=g([o("rewardState"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardLastUpdateTime"),o("totalReward"),o("totalRewardEmissioned"),o("rewardClaimed"),o("rewardPerSecond"),M("accRewardPerShare"),s("rewardVault"),s("rewardMint"),s("rewardSender"),o("rewardType"),A(o(),15,"padding")]),Ar=g([o("state"),o("nonce"),s("lpVault"),s("rewardVault"),s(),s(),o(),o(),o("totalReward"),M("perShareReward"),o("lastSlot"),o("perSlotReward")]),wr=g([o("state"),o("nonce"),s("lpVault"),s("rewardVaultA"),o("totalRewardA"),M("perShareRewardA"),o("perSlotRewardA"),b("option"),s("rewardVaultB"),E(7),o("totalRewardB"),M("perShareRewardB"),o("perSlotRewardB"),o("lastSlot"),s()]),kr=g([o(),o("state"),o("nonce"),o("validRewardTokenNum"),M("rewardMultiplier"),o("rewardPeriodMax"),o("rewardPeriodMin"),o("rewardPeriodExtend"),s("lpMint"),s("lpVault"),A(Pr,5,"rewardInfos"),s("creator"),s(),A(o(),32,"padding")]),Tr=new Proxy(Ar,{get(a,e,t){return e==="decode"?(...n)=>{let i=a.decode(...n);return D(N({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(a,e,t)}}),hr=new Proxy(wr,{get(a,e,t){return e==="decode"?(...n)=>{let i=a.decode(...n);return D(N({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(a,e,t)}}),Bo=new Proxy(kr,{get(a,e,t){return e==="decode"?(...n)=>{let i=a.decode(...n);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)}}),Ir=g([o("isSet"),o("rewardPerSecond"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardType")]),Br=g([b("instruction"),o("nonce"),A(Ir,5,"rewardTimeInfo")]),Sr=g([b("instruction"),o("rewardReopenTime"),o("rewardEndTime"),o("rewardPerSecond")]),Kr=g([b("instruction"),o("isSet"),o("rewardPerSecond"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardType")]),py=g([o("state"),s("id"),s("owner"),o("deposited"),A(o(),1,"rewardDebts")]),So=g([o("state"),s("id"),s("owner"),o("deposited"),A(M(),1,"rewardDebts"),o(""),o("voteLockedBalance"),A(o(),15)]),fy=g([o("state"),s("id"),s("owner"),o("deposited"),A(o(),2,"rewardDebts")]),xr=g([o("state"),s("id"),s("owner"),o("deposited"),A(M(),2,"rewardDebts"),A(o(),17)]),Cr=g([o(),o("state"),s("id"),s("owner"),o("deposited"),A(M(),5,"rewardDebts"),A(o(),16)]),Rr=g([b("instruction"),o("amount")]),Lr=g([s("mint"),s("grantAuthority"),o("baselineVoteWeightScaledFactor"),o("maxExtraLockupVoteWeightScaledFactor"),o("lockupSaturationSecs"),Xn("digitShift"),A(b(),7,"reserved1"),A(o(),7,"reserved2")]),Or=g([E(8),s("governanceProgramId"),s("realm"),s("realmGoverningTokenMint"),s("realmAuthority"),A(b(),32,"reserved1"),A(Lr,4,"votingMints"),Ge("timeOffset"),b("bump"),A(b(),7,"reserved2"),A(o(),11,"reserved3")]),Nr=g([Ge("startTime"),Ge("endTime"),b("kind"),A(b(),15,"reserved")]),Mr=g([A(Nr,1,"lockup"),o("amountDeposited_native"),o("amountInitiallyLockedNative"),be("isUsed"),be("allowClawback"),b("votingMintConfigIdx"),A(b(),29,"reserved")]),Fr=g([E(8),s("voterAuthority"),s("registrar"),A(Mr,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"),vr=new gn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Vr=new gn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var By=new gn("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var Tt={"Standard SPL":0,"Option tokens":1},Ko={[fo.toString()]:3,[yo.toString()]:4,[bo.toString()]:5,[fn.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 zr=new Co(25),Xr=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 Qg,SYSVAR_RENT_PUBKEY as Zg,TransactionInstruction as Hg}from"@solana/web3.js";import iP from"bn.js";var Yr=g([b("instruction"),o("amountIn"),o("minAmountOut")]),Qr=g([b("instruction"),o("maxAmountIn"),o("amountOut")]),Dg=g([b("instruction"),b("nonce")]),Zr=g([b("instruction"),b("nonce"),o("startTime")]),Ro=g([o("status"),o("nonce"),o("maxOrder"),o("depth"),o("baseDecimal"),o("quoteDecimal"),o("state"),o("resetFlag"),o("minSize"),o("volMaxCutRatio"),o("amountWaveRatio"),o("baseLotSize"),o("quoteLotSize"),o("minPriceMultiplier"),o("maxPriceMultiplier"),o("systemDecimalValue"),o("minSeparateNumerator"),o("minSeparateDenominator"),o("tradeFeeNumerator"),o("tradeFeeDenominator"),o("pnlNumerator"),o("pnlDenominator"),o("swapFeeNumerator"),o("swapFeeDenominator"),o("baseNeedTakePnl"),o("quoteNeedTakePnl"),o("quoteTotalPnl"),o("baseTotalPnl"),o("poolOpenTime"),o("punishPcAmount"),o("punishCoinAmount"),o("orderbookToInitTime"),M("swapBaseInAmount"),M("swapQuoteOutAmount"),o("swapBase2QuoteFee"),M("swapQuoteInAmount"),M("swapBaseOutAmount"),o("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"),o("lpReserve"),A(o(),3,"padding")]),Wg=g([o("accountType"),o("status"),o("nonce"),o("maxOrder"),o("depth"),o("baseDecimal"),o("quoteDecimal"),o("state"),o("resetFlag"),o("minSize"),o("volMaxCutRatio"),o("amountWaveRatio"),o("baseLotSize"),o("quoteLotSize"),o("minPriceMultiplier"),o("maxPriceMultiplier"),o("systemDecimalsValue"),o("abortTradeFactor"),o("priceTickMultiplier"),o("priceTick"),o("minSeparateNumerator"),o("minSeparateDenominator"),o("tradeFeeNumerator"),o("tradeFeeDenominator"),o("pnlNumerator"),o("pnlDenominator"),o("swapFeeNumerator"),o("swapFeeDenominator"),o("baseNeedTakePnl"),o("quoteNeedTakePnl"),o("quoteTotalPnl"),o("baseTotalPnl"),o("poolOpenTime"),o("punishPcAmount"),o("punishCoinAmount"),o("orderbookToInitTime"),M("swapBaseInAmount"),M("swapQuoteOutAmount"),M("swapQuoteInAmount"),M("swapBaseOutAmount"),o("swapQuote2BaseFee"),o("swapBase2QuoteFee"),s("baseVault"),s("quoteVault"),s("baseMint"),s("quoteMint"),s("lpMint"),s("modelDataAccount"),s("openOrders"),s("marketId"),s("marketProgramId"),s("targetOrders"),s("owner"),A(o(),64,"padding")]),Hr=g([b("instruction"),o("baseAmountIn"),o("quoteAmountIn"),o("fixedSide"),o("otherAmountMin")]),jr=g([b("instruction"),o("lpAmount"),o("baseAmountMin"),o("quoteAmountMin")]);var $r=g([o("fee")]);var sP=q("Raydium_liquidity_instruction");var Jr=5e4,ea=g([o("x"),o("y"),o("price")]),mP=g([o("accountType"),o("status"),o("multiplier"),o("validDataCount"),A(ea,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 ta(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 na=g([E(5),ta("accountFlags"),s("ownAddress"),o("vaultSignerNonce"),s("baseMint"),s("quoteMint"),s("baseVault"),o("baseDepositsTotal"),o("baseFeesAccrued"),s("quoteVault"),o("quoteDepositsTotal"),o("quoteFeesAccrued"),o("quoteDustThreshold"),s("requestQueue"),s("eventQueue"),s("bids"),s("asks"),o("baseLotSize"),o("quoteLotSize"),o("feeRateBps"),o("referrerRebatesAccrued"),E(7)]);import{PublicKey as Kk}from"@solana/web3.js";import{AccountLayout as Ck,NATIVE_MINT as Rk,TOKEN_2022_PROGRAM_ID as Lk,TOKEN_PROGRAM_ID as Ok,createAssociatedTokenAccountIdempotentInstruction as Nk}from"@solana/spl-token";import Sw from"bn.js";import ca from"bn.js";var dw=new ca(0);import Pw from"bn.js";import la from"bn.js";var ge=new la(1e6);import Wk from"bn.js";import Uk from"decimal.js";import{PublicKey as Gw,TransactionInstruction as zw,Keypair as Yw,SystemProgram as Qw}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Hw,TOKEN_2022_PROGRAM_ID as jw,TOKEN_PROGRAM_ID as $w}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"),Vw=Buffer.from("permission","utf8"),_w=Buffer.from("support_mint","utf8");var Ew=Buffer.from("locked_liquidity","utf8");var rk=q("Raydium_cpmm"),ak={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 pa=g([E(8),b("bump"),be("disableCreatePool"),ee("index"),o("tradeFeeRate"),o("protocolFeeRate"),o("fundFeeRate"),o("createPoolFee"),s("protocolOwner"),s("fundOwner"),o("creatorFeeRate"),A(o(),15)]),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"),o("lpAmount"),o("protocolFeesMintA"),o("protocolFeesMintB"),o("fundFeesMintA"),o("fundFeesMintB"),o("openTime"),o("epoch"),b("feeOn"),be("enableCreatorFee"),A(b(),6),o("creatorFeesMintA"),o("creatorFeesMintB"),A(o(),28)]),ck=g([E(8),s("configId"),A(o(),30)]);import{PublicKey as MS,SystemProgram as FS}from"@solana/web3.js";import{createTransferInstruction as VS,TOKEN_PROGRAM_ID as _S,TOKEN_2022_PROGRAM_ID as ES,createAssociatedTokenAccountIdempotentInstruction as DS,createSyncNativeInstruction as qS,createTransferCheckedInstruction as US}from"@solana/spl-token";import Oa from"bn.js";import XS from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as JT,TOKEN_2022_PROGRAM_ID as eh,TOKEN_PROGRAM_ID as th}from"@solana/spl-token";import{SystemProgram as rh,TransactionInstruction as ah}from"@solana/web3.js";import ka from"bn.js";var ga=g([o(),o("epoch"),b("curveType"),ee("index"),o("migrateFee"),o("tradeFeeRate"),o("maxShareFeeRate"),o("minSupplyA"),o("maxLockRate"),o("minSellRateA"),o("minMigrateRateA"),o("minFundRaisingB"),s("mintB"),s("protocolFeeOwner"),s("migrateFeeOwner"),s("migrateToAmmWallet"),s("migrateToCpmmWallet"),A(o(),16)]),Pa=g([o("totalLockedAmount"),o("cliffPeriod"),o("unlockPeriod"),o("startTime"),o("totalAllocatedShare")]),Aa=g([o(),o("epoch"),b("bump"),b("status"),b("mintDecimalsA"),b("mintDecimalsB"),b("migrateType"),o("supply"),o("totalSellA"),o("virtualA"),o("virtualB"),o("realA"),o("realB"),o("totalFundRaisingB"),o("protocolFee"),o("platformFee"),o("migrateFee"),Pa.replicate("vestingSchedule"),s("configId"),s("platformId"),s("mintA"),s("mintB"),s("vaultA"),s("vaultB"),s("creator"),b("mintProgramFlag"),b("cpmmCreatorFeeOn"),o("platformVestingShare"),A(b(),54)]),MT=g([o(),o("epoch"),s("poolId"),s("beneficiary"),o("claimedAmount"),o("tokenShareAmount"),A(o(),8)]),No=g([b("migrateType"),b("migrateCpmmFeeOn"),o("supply"),o("totalSellA"),o("totalFundRaisingB"),o("totalLockedAmount"),o("cliffPeriod"),o("unlockPeriod")]),wa=g([o("epoch"),b("index"),s("configId"),No.replicate("bondingCurveParam"),A(o(),50)]),Mo=g([o(),o("epoch"),s("platformClaimFeeWallet"),s("platformLockNftWallet"),o("platformScale"),o("creatorScale"),o("burnScale"),o("feeRate"),A(b(),64,"name"),A(b(),256,"web"),A(b(),256,"img"),s("cpConfigId"),o("creatorFeeRate"),s("transferFeeExtensionAuth"),s("platformVestingWallet"),o("platformVestingScale"),s("platformCpCreator"),b("restrictGlobalConfig"),A(b(),107),Qn(wa,"platformCurve")]);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");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]),updatePlatformCurveParam:Buffer.from([138,144,138,250,220,128,4,57]),removePlatformCurveParam:Buffer.from([27,30,62,169,93,224,24,145]),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])};var mh=new ka("18446744073709551615");import{TOKEN_2022_PROGRAM_ID as yh,TOKEN_PROGRAM_ID as bh}from"@solana/spl-token";import wh from"bn.js";import Th from"decimal.js";import eI from"bn.js";import nI from"decimal.js";import xh from"bn.js";import Rh from"decimal.js";import Dh from"bn.js";import qh from"decimal.js";import Vo from"bn.js";import An from"decimal.js";var Yt=class{static _multipler(e){return new An(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new An(e.toString()).div(this._Q64).mul(this._multipler(t)).div(this._multipler(n))}static getPriceX64({price:e,decimalA:t,decimalB:n}){let i=e.mul(this._multipler(n)).div(this._multipler(t));return new Vo(i.mul(this._Q64).toFixed(0))}};Yt._Q64=new An(new Vo(1).shln(64).toString());import{NATIVE_MINT as lB,TOKEN_2022_PROGRAM_ID as mB,TOKEN_PROGRAM_ID as dB,createAssociatedTokenAccountIdempotentInstruction as fB,createSyncNativeInstruction as yB,getTransferFeeConfig as bB,unpackMint as gB}from"@solana/spl-token";import te from"bn.js";import{PublicKey as xa,SystemProgram as wB}from"@solana/web3.js";import KB from"decimal.js";var xB={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 xa("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new te(0),cliffPeriod:new te(0),unlockPeriod:new te(0),startTime:new te(0),totalAllocatedShare:new te(0)}},CB=new te(1e4);var Ca={[go.toBase58()]:3};var Ra=g([E(5),E(8),s("ownAddress"),o("vaultSignerNonce"),s("baseMint"),s("quoteMint"),s("baseVault"),o("baseDepositsTotal"),o("baseFeesAccrued"),s("quoteVault"),o("quoteDepositsTotal"),o("quoteFeesAccrued"),o("quoteDustThreshold"),s("requestQueue"),s("eventQueue"),s("bids"),s("asks"),o("baseLotSize"),o("quoteLotSize"),o("feeRateBps"),o("referrerRebatesAccrued"),E(7)]);import{PublicKey as $B}from"@solana/web3.js";var oS=q("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as dS,TOKEN_2022_PROGRAM_ID as pS,TOKEN_PROGRAM_ID as fS}from"@solana/spl-token";import{PublicKey as bS,SystemProgram as gS,TransactionInstruction as PS}from"@solana/web3.js";import wS from"bn.js";var TK=new Oa(0);import{PublicKey as Na,Transaction as wn,TransactionInstruction as Ma}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Fa}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,n,i){return Ae([ue.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new _o(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:i,chainTime:r}){if(n.length===0)return[];let c=n.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/n.length),k=y%n.length,w=c[k],C=u[y],h=p[k],I=p[n.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:n}){t.wallet||this.scope.checkOwner();let i=this.createTxBuilder(n),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:n}){let i=this.createTxBuilder(n),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 mn(d,[r,...p.map(y=>y.publicKey)])?[{transaction:u,signer:p}]:[{transaction:new wn().add(...d.slice(0,i.AllTxData.instructions.length-1)),signer:p},{transaction:new wn().add(...d.slice(i.AllTxData.instructions.length-1)),signer:[]},{transaction:new wn().add(...i.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=g([]),r=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(p=>({pubkey:p,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:p})=>({pubkey:p,isSigner:!1,isWritable:!0})),{pubkey:Fa,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 Ma({keys:r,programId:e,data:u})}},ke=ue;ke.CLAIMED_NUM=3,ke.POOL_LAYOUT=g([E(8),b("bump"),b("status"),o("openTime"),o("endTime"),s("ammId"),A(g([b("mintDecimals"),s("mintAddress"),s("mintVault"),o("perLpLoss"),o("totalClaimedAmount")]),ue.CLAIMED_NUM,"tokenInfo"),A(o(),10,"padding")]),ke.OWNER_LAYOUT=g([E(8),b("bump"),b("version"),s("poolId"),s("owner"),o("lpAmount"),A(g([s("mintAddress"),o("debtAmount"),o("claimedAmount")]),ue.CLAIMED_NUM,"tokenInfo"),A(o(),4,"padding")]),ke.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Na(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 EK}from"@solana/web3.js";import{getTransferFeeConfig as WK,MintLayout as qK,TOKEN_2022_PROGRAM_ID as UK,TOKEN_PROGRAM_ID as GK,unpackMint as zK}from"@solana/spl-token";var AC=new De(2),wC=new De(3),kC=new De(5),Ci=new De(10),TC=new De(100),hC=new De(1e3),IC=new De(1e4);function en(a,e=1,t=[]){let n=[...a];if(e<=0)return t;for(;n.length;)t.push(n.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:n,checkInfo:i}){let r=[],c=e.length*8,u=0,p=c-1;if(i){let P=i.tick/(t*me)-n;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+n)*t*me)}return r}static findPoolBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let i=Math.floor(n.tick/me/t);if(n.valueType==="lte"&&i<-512)return[];if(n.valueType==="gte"&&i>512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:-St,checkInfo:n})}static findPositiveTickArrayBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let i=Math.floor(n.tick/me/t);if(n.valueType==="lte"&&i<512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:St,checkInfo:n})}static findNegativeTickArrayBitmap({bitmap:e,tickSpacing:t,count:n,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),n!==void 0&&r.length>=n)break e}}}return r}static findTickArrayStartIndex({tickSpacing:e,poolBitmap:t,tickArrayBitmap:n,findInfo:i}){if(i.type==="all")return[...this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap}),...this.findPoolBitmap({tickSpacing:e,bitmap:t}),...this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.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:n.negativeTickArrayBitmap,checkInfo:u}),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:u}),()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap,checkInfo:u})];return this.collectUntil(p,c)}if(i.type==="zeroForOne"){let u={tick:r,valueType:"lte"},p=[()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.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:n.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 n=[];for(let i of e){if(t!==void 0&&n.length>=t)break;n.push(...i())}return n.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 n=e.ticks.length-1;n>=0;n--)if(U.isInitialized({data:e.ticks[n]}))return e.ticks[n]}else for(let n=0;n<e.ticks.length;n++)if(U.isInitialized({data:e.ticks[n]}))return e.ticks[n]}static nextInitalizedTick({data:e,currentTickIndex:t,tickSpacing:n,zeroForOne:i}){if(this.getTickArrayStartIndex(t,n)!==e.startTickIndex)return;let c=Math.floor((t-e.startTickIndex)/n);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 n=this.tickCount(t);return Math.floor(e/n)*n}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=this.getTickArrayStartIndex(e,t);return Math.floor((e-n)/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),n=X.clone();for(let{bit:i,factor:r}of Rn)(t&1<<i)!==0&&(n=j(n,r,X));return e>0&&(n=j(X,X,n)),n}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:n}){if(n){let i=U.getPriceAtTick(t,!1);return j(e,i,X)}else{let i=U.getPriceAtTick(t,!0);return j(e,X,i)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:n}){if(n){let i=U.getPriceAtTick(t,!0);return Q(e,i,X)}else{let i=U.getPriceAtTick(t,!1);return Q(e,X,i)}}static limitOrderUnfilledAmount({tick:e}){return e.ordersAmount.add(e.partFilledOrdersRemaining)}static matchLimitOrder({tick:e,swapAmount:t,swapDirectionZeroForOne:n,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=Q(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:n}),u.amountOut.gt(p)&&(u.amountOut=p,u.amountIn=this.getLimitOrderInput({amountOut:p,tick:e.tick,zeroForOne:!n}),c&&(u.ammFeeAmount=Q(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(Q(P,ge,ge.sub(new ne(r))),p),u.amountIn=this.getLimitOrderInput({amountOut:u.amountOut,tick:e.tick,zeroForOne:!n}),c&&(u.ammFeeAmount=Q(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=j(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=j(X,e.ordersAmount.sub(y),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(y),e.ordersAmount=x}return c||(u.ammFeeAmount=Q(u.amountOut,new ne(r),ge),u.amountOut=u.amountOut.sub(u.ammFeeAmount)),u}static getPriceAtTick(e,t){let n=this.getSqrtPriceAtTick(e);return t?n.mul(n).add(X.subn(1)).div(X):n.mul(n).div(X)}static getTickAtSqrtPrice(e){if(!(e.gte(Oe)&&e.lte(Ne)))throw Error("SqrtPriceX64");let t=Vn(e),n=t-64,i;n>=0?i=new ne(n).shln(32):i=new ne(-n).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<Cn&&!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(Sn),P=y.sub(Kn),k=y.add(xn),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),n=e.div(t);return!e.mod(t).isZero()&&e.isNeg()?n.subn(1).toNumber():n.toNumber()}else return e.shrn(64).toNumber()}static sqrtPriceX64ToPrice(e,t,n){let i=e.mul(e),r=t-n,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,n){let i=U.getSqrtPriceAtTick(e);return this.sqrtPriceX64ToPrice(i,t,n)}static priceToTick(e,t,n){let r=e.div(Math.pow(10,t-n)).log().div(new et(1.0001).log()).floor();return Math.max(fe,Math.min(ye,r.toNumber()))}static priceToSqrtPriceX64(e,t,n){let c=e.div(Math.pow(10,t-n)).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:n,zeroForOne:i,tickSpacing:r}){let c=e.clamp(1/10**Math.max(t,n),Number.MAX_SAFE_INTEGER);i||(c=new et(1).div(c));let u=U.toTickIndex(U.priceToTick(c,t,n),r),p=U.tickToPrice(u,t,n);return{price:i?p:new et(1).div(p),tick:u}}};import{TOKEN_2022_PROGRAM_ID as mR,TOKEN_PROGRAM_ID as dR}from"@solana/spl-token";import bR from"decimal.js";var wt=class{static tickSpacingIndexFromTick(e,t){return Math.floor(e/t)}},$e=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:n}){let i=n-e.lastUpdateTimestamp.toNumber();i<e.filterPeriod||(i<e.decayPeriod?(e.tickSpacingIndexReference=t,e.volatilityReference=Math.floor(e.volatilityAccumulator*e.reductionFactor/Ln),e.lastUpdateTimestamp=new kn(n)):(e.tickSpacingIndexReference=t,e.volatilityReference=0,e.lastUpdateTimestamp=new kn(n)))}static updateVolatilityAccumulator({state:e,tickSpacingIndex:t}){let n=Math.abs(e.tickSpacingIndexReference-t),i=e.volatilityReference+n*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:n,minTickBoundary:i}=this.tickArrayStartIndexRange({tickSpacing:e});for(let r of t){let c=le.getTickArrayStartIndex(r,e);if(c>=n||c<i)return!0}return!1}static tickArrayStartIndexRange({tickSpacing:e}){let t=tt.maxTickInTickarrayBitmap(e),n=-t;return t>ye&&(t=le.getTickArrayStartIndex(ye,e)+le.tickCount(e)),n<fe&&(n=le.getTickArrayStartIndex(fe,e)),{maxTickBoundary:t,minTickBoundary:n}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,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:_n(P.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Eo(k)});if(w.mint.equals(Eo.default)||w.totalEmissioned.eq(xe))continue;if(n<=w.openTime.toNumber()||i.eq(x)){c.push(w);continue}let C=new kn(Math.min(w.endTime.toNumber(),n)),h=C.sub(w.lastUpdateTime);if(h.isZero()){c.push(w);continue}let I=Q(h,w.emissionsPerSecondX64,X),B=j(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=j(f,X,i)}let v=w.growthGlobalX64.add(B);c.push(D(N({},w),{growthGlobalX64:v,totalEmissioned:S,lastUpdateTime:C}))}return c}};function va({programId:a,poolId:e,poolInfo:t,tickArrays:n,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(n.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()!==n[0].address.toString()):[],C=le.getTickArrayStartIndex(t.tickCurrent,t.tickSpacing),{firstItckArrayContainsPoolTick:h,firstValidTickArrayStartIndex:I}={firstItckArrayContainsPoolTick:n[k].value.startTickIndex===C,firstValidTickArrayStartIndex:n[k].value.startTickIndex},B=h,S=I,F=n[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 V=n[++k];return V===void 0?void 0:(S=V.value.startTickIndex,F=V,le.firstinitializedTick({data:V.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:n.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:V,boundedPrice:re}=we.getSpacingBoundedPrice({data:f,targetPrice:K,zeroForOne:p}),z=!f.sqrtPriceX64.eq(re),_;z?(_=At.computeSwap(f.sqrtPriceX64,re,f.liquidity,f.amountSpecifiedRemaining,L,d,p,v),we.applySwapAmounts({state:f,amountIn:_.amountIn,amountOut:_.amountOut,feeAmount:_.feeAmount,isBaseInput:d,isFeeOnInput:v,protocolFeeRate:new nt(i.protocolFeeRate),fundFeeRate:new nt(i.fundFeeRate)})):_=At.newSwapComputationResult({sqrtPriceNextX64:re});let J=U.limitOrderUnfilledAmount({tick:T});if(f.sqrtPriceNextX64.eq(_.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(_.sqrtPriceNextX64)||(f.tick=U.getTickAtSqrtPrice(_.sqrtPriceNextX64));if(f.sqrtPriceX64=_.sqrtPriceNextX64,we.updateDynamicFeeIndex({state:f,zeroForOne:p,isSkippedTickSpacing:V}),f.amountSpecifiedRemaining.isZero()||f.sqrtPriceX64.eq(K)){let G=U.limitOrderUnfilledAmount({tick:T});if(!f.amountSpecifiedRemaining.isZero()&&!G.eq(J)&&!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,...n.slice(0,k+1+(P?1:0)).map(T=>T.address)]}}export{va as swapInternal};
//# sourceMappingURL=swapSimulator.mjs.map