@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
1 lines • 114 kB
JavaScript
var ti=Object.defineProperty,ni=Object.defineProperties;var oi=Object.getOwnPropertyDescriptors;var Vt=Object.getOwnPropertySymbols;var Dn=Object.prototype.hasOwnProperty,Wn=Object.prototype.propertyIsEnumerable;var En=(a,e,t)=>e in a?ti(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,L=(a,e)=>{for(var t in e||(e={}))Dn.call(e,t)&&En(a,t,e[t]);if(Vt)for(var t of Vt(e))Wn.call(e,t)&&En(a,t,e[t]);return a},E=(a,e)=>ni(a,oi(e));var xe=(a,e)=>{var t={};for(var n in a)Dn.call(a,n)&&e.indexOf(n)<0&&(t[n]=a[n]);if(a!=null&&Vt)for(var n of Vt(a))e.indexOf(n)<0&&Wn.call(a,n)&&(t[n]=a[n]);return t};import{PublicKey as ye}from"@solana/web3.js";import de from"bn.js";import{PublicKey as yi}from"@solana/web3.js";import Xn,{isBN as Yn}from"bn.js";import{bits as ii,BitStructure as es,blob as ri,Blob as ts,cstr as ns,f32 as os,f32be as is,f64 as rs,f64be as as,greedy as ss,Layout as ai,ns64 as us,ns64be as cs,nu64 as ls,nu64be as ms,offset as si,s16 as ds,s16be as ps,s24 as fs,s24be as ys,s32 as ui,s32be as bs,s40 as gs,s40be as Ps,s48 as As,s48be as ws,s8 as ks,seq as ci,struct as Ts,Structure as li,u16 as mi,u16be as hs,u24 as Is,u24be as Bs,u32 as di,u32be as Ss,u40 as xs,u40be as Ks,u48 as Cs,u48be as Rs,u8 as pi,UInt as fi,union as Ls,Union as Os,unionLayoutDiscriminator as Ns,utf8 as Ms}from"@solana/buffer-layout";var _t=ai,qn=li;var sn=fi;var Un=pi,ce=mi;var Et=di;var Ke=ui;var Gn=ci;var W=ri;var un=ii,zn=si;var He=class extends _t{constructor(t,n,i){super(t,i);this.blob=W(t),this.signed=n}decode(t,n=0){let i=new Xn(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 Xn(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},Dt=class extends _t{constructor(t){super(8,t);this._lower=un(Et(),!1),this._upper=un(Et(),!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 L(L({},i),r)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function w(a){return new sn(1,a)}function $(a){return new sn(4,a)}function o(a){return new He(8,!1,a)}function D(a){return new He(16,!1,a)}function Qn(a){return new He(1,!0,a)}function nt(a){return new He(8,!0,a)}function Zn(a){return new He(16,!0,a)}var bt=class extends _t{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 d(a){return new bt(W(32),e=>new yi(e),e=>e.toBuffer(),a)}function we(a){return new bt(Un(),bi,gi,a)}function bi(a){if(a===0)return!1;if(a===1)return!0;throw new Error("Invalid bool: "+a)}function gi(a){return a?1:0}function Hn(a,e){let t=Et("length"),n=k([t,B(a,zn(t,-t.span),"values")]);return new bt(n,({values:i})=>i,i=>({values:i}),e)}var cn=class extends qn{decode(e,t){return super.decode(e,t)}};function k(a,e,t){return new cn(a,e,t)}function B(a,e,t){let n,i=typeof e=="number"?e:Yn(e)?e.toNumber():new Proxy(e,{get(r,s){if(!n){let u=Reflect.get(r,"count");n=Yn(u)?u.toNumber():u,Reflect.set(r,"count",n)}return Reflect.get(r,s)},set(r,s,u){return s==="count"&&(n=u),Reflect.set(r,s,u)}});return Gn(a,i,t)}import X from"bn.js";var H=new X(1).shln(64),ot=64,Pi=new X(1).shln(128),De=new X(1).shln(64).subn(1),Ai=new X(1).shln(128).subn(1),ke=-443636,Te=443636,Oe=new X("4295048016"),Ne=new X("79226673521066979257578248091"),jn=new X("59543866431248"),$n=new X("184467440737095516"),Jn=new X("15793534762490258745"),eo=16,Wt=512,be=60,zs=new X("18446743708227953217"),to=[{bit:0,factor:new X("fffcb933bd6fb800",16)},{bit:1,factor:new X("fff97272373d4000",16)},{bit:2,factor:new X("fff2e50f5f657000",16)},{bit:3,factor:new X("ffe5caca7e10f000",16)},{bit:4,factor:new X("ffcb9843d60f7000",16)},{bit:5,factor:new X("ff973b41fa98e800",16)},{bit:6,factor:new X("ff2ea16466c9b000",16)},{bit:7,factor:new X("fe5dee046a9a3800",16)},{bit:8,factor:new X("fcbe86c7900bb000",16)},{bit:9,factor:new X("f987a7253ac65800",16)},{bit:10,factor:new X("f3392b0822bb6000",16)},{bit:11,factor:new X("e7159475a2caf000",16)},{bit:12,factor:new X("d097f3bdfd2f2000",16)},{bit:13,factor:new X("a9f746462d9f8000",16)},{bit:14,factor:new X("70d869a156f31c00",16)},{bit:15,factor:new X("31be135f97ed3200",16)},{bit:16,factor:new X("9aa508b5b85a500",16)},{bit:17,factor:new X("5d6af8dedc582c",16)},{bit:18,factor:new X("2216e584f5fa",16)}],We=1e6;var qt=1e5,gt=1e4,no=1e4,oo=1e5;var Pt=3,io=100;var ro=10,ao=100,it=14;var C=new X(0),Me=new X(1),Xs=new X(-1);var Ys=new X("18446744073700000000");var wi=k([W(8),w("bump"),ce("index"),d("owner"),$("protocolFeeRate"),$("tradeFeeRate"),ce("tickSpacing"),$("fundFeeRate"),B($(),1),d("fundOwner"),B(o(),3)]),ki=k([$("blockTimestamp"),nt("tickCumulative"),B(o(),4)]),so=k([W(8),we("initialized"),o("recentEpoch"),ce("observationIndex"),d("poolId"),B(ki,io,"observations"),B(o(),4)]),Ti=k([ce("filterPeriod"),ce("decayPeriod"),ce("reductionFactor"),$("dynamicFeeControl"),$("maxVolatilityAccumulator"),Ke("tickSpacingIndexReference"),$("volatilityReference"),$("volatilityAccumulator"),o("lastUpdateTimestamp"),B(w(),46)]),hi=k([w("state"),o("openTime"),o("endTime"),o("lastUpdateTime"),D("emissionsPerSecondX64"),o("totalEmissioned"),o("claimed"),d("mint"),d("vault"),d("creator"),D("growthGlobalX64")]),Ut=k([W(8),w("bump"),d("configId"),d("creator"),d("mintA"),d("mintB"),d("vaultA"),d("vaultB"),d("observationId"),w("mintDecimalsA"),w("mintDecimalsB"),ce("tickSpacing"),D("liquidity"),D("sqrtPriceX64"),Ke("tickCurrent"),$(),D("feeGrowthGlobalX64A"),D("feeGrowthGlobalX64B"),o("protocolFeesTokenA"),o("protocolFeesTokenB"),B(D(),4),w("status"),w("feeOn"),W(6),B(hi,Pt,"rewardInfos"),W(8*16,"tickArrayBitmap"),B(o(),4),o("fundFeesTokenA"),o("fundFeesTokenB"),o("startTime"),o("recentEpoch"),Ti.replicate("dynamicFeeInfo"),B(o(),46)]),Ii=k([D("growthInsideLastX64"),o("rewardAmountOwed")]),Bi=k([W(8),w("bump"),d("nftMint"),d("poolId"),Ke("tickLower"),Ke("tickUpper"),D("liquidity"),D("feeGrowthInsideLastX64A"),D("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),B(Ii,Pt,"rewardInfos"),o("recentEpoch"),B(o(),7)]),js=k([W(8),w("bump"),d("poolId"),Ke("tickLower"),Ke("tickUpper"),D("liquidity"),D("feeGrowthInsideLastX64A"),D("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),B(D(),Pt,"rewardGrowthInside"),o("recentEpoch"),B(o(),7)]),Si=k([Ke("tick"),Zn("liquidityNet"),D("liquidityGross"),D("feeGrowthOutsideX64A"),D("feeGrowthOutsideX64B"),B(D(),Pt,"rewardGrowthsOutsideX64"),o("orderPhase"),o("ordersAmount"),o("partFilledOrdersRemaining"),D("unfilledRatioX64"),B($(),3)]),At=k([W(8),d("poolId"),Ke("startTickIndex"),B(Si,be,"ticks"),w("initializedTickCount"),o("recentEpoch"),B(w(),107)]),xi=k([W(8),w("bump"),B(d(),ro,"operationOwners"),B(d(),ao,"whitelistMints")]),Ki=k([W(8),d("poolId"),d("owner"),Ke("tick"),we("zeroForOne"),o("orderPhase"),o("totalAmount"),o("filledAmount"),o("settleBase"),o("settleOutput"),o("openTime"),D("unfilledRatioX64"),B(o(),4)]),ln=k([W(8),d("poolId"),W(8*8*it,"positiveTickArrayBitmap"),W(8*8*it,"negativeTickArrayBitmap")]),$s=k([W(8),ce("index"),ce("filterPeriod"),ce("decayPeriod"),ce("reductionFactor"),$("dynamicFeeControl"),$("maxVolatilityAccumulator"),B(o(),8)]),Ci=k([W(8),d("wallet"),w("nonceIndex"),o("orderNonce"),B(o(),4)]),Js=k([o(),w("bump"),d("owner"),d("poolId"),d("positionId"),d("nftAccount"),B(o(),8)]),Ri=k([W(8),w("bump"),d("lockOwner"),d("poolId"),d("positionId"),d("nftAccount"),d("lockNftMint"),o("recentEpoch"),B(o(),8)]);import Li from"bn.js";import uo from"decimal.js";function ee(a,e,t){if(t.isZero())throw new Error("Division by zero");return a.mul(e).div(t)}function j(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 Gt(a,e){return a.div(e).add(a.mod(e).isZero()?C:Me)}var iu=new Li(1).shln(256).subn(1);function co(a){return a.isZero()?-1:a.bitLength()-1}function lo(a,e){return new uo(a.toString()).div(uo.pow(2,64)).toDecimalPlaces(e)}import{PublicKey as Mi}from"@solana/web3.js";import{get as mo,set as Oi}from"lodash";var mn=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}},po={},Ni={};function G(a){let e=mo(po,a);if(!e){let t=mo(Ni,a);e=new mn({name:a,logLevel:t}),Oi(po,a,e)}return e}import{MINT_SIZE as yu,TOKEN_PROGRAM_ID as bu,getTransferFeeConfig as gu,unpackMint as Pu}from"@solana/spl-token";var dn=G("Raydium_accountInfo_util");async function he(a,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:r=100}=L({batchRequest:!1},t),s=pn(e,r),u=new Array(s.length).fill([]);if(n){let c=s.map(p=>{let P=a._buildArgs([p.map(g=>g.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:P}}),l=pn(c,10);u=(await(await Promise.all(l.map(async p=>await a._rpcBatchRequest(p)))).flat()).map(p=>(p.error&&dn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${p.error.message}`),p.result.value.map(P=>{if(P){let{data:g,executable:h,lamports:A,owner:T,rentEpoch:S}=P;return g.length!==2&&g[1]!=="base64"&&dn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(g[0],"base64"),executable:h,lamports:A,owner:new Mi(T),rentEpoch:S}}return null})))}else try{u=await Promise.all(s.map(c=>a.getMultipleAccountsInfo(c,i)))}catch(c){c instanceof Error&&dn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return u.flat()}async function qe(a,e,t){let n=await he(a,e.map(i=>i.pubkey),t);return e.map((i,r)=>E(L({},i),{accountInfo:n[r]}))}import et from"bn.js";import tC from"decimal.js";import qi from"big.js";import Yt from"bn.js";import Fi from"toformat";var vi=Fi,wt=vi;import Xt from"big.js";import _i from"bn.js";import Ei from"decimal.js-light";import kt from"bn.js";var fo=9007199254740991;function ie(a){let e=G("Raydium_parseBigNumberish");if(a instanceof kt)return a;if(typeof a=="string"){if(a.match(/^-?[0-9]+$/))return new kt(a);e.logWithError(`invalid BigNumberish string: ${a}`)}return typeof a=="number"?(a%1&&e.logWithError(`BigNumberish number underflow: ${a}`),(a>=fo||a<=-fo)&&e.logWithError(`BigNumberish number overflow: ${a}`),new kt(String(a))):typeof a=="bigint"?new kt(a.toString()):(e.error(`invalid BigNumberish value: ${a}`),new kt(0))}var zt=G("module/fraction"),fn=wt(Xt),Tt=wt(Ei),Di={[0]:Tt.ROUND_DOWN,[1]:Tt.ROUND_HALF_UP,[2]:Tt.ROUND_UP},Wi={[0]:Xt.roundDown,[1]:Xt.roundHalfUp,[2]:Xt.roundUp},Y=class{constructor(e,t=new _i(1)){this.numerator=ie(e),this.denominator=ie(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(ie(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(ie(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(ie(e));return new Y(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof Y?e:new Y(ie(e));return new Y(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||zt.logWithError(`${e} is not an integer.`),e<=0&&zt.logWithError(`${e} is not positive.`),Tt.set({precision:e+1,rounding:Di[n]});let i=new Tt(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)||zt.logWithError(`${e} is not an integer.`),e<0&&zt.logWithError(`${e} is negative.`),fn.DP=e,fn.RM=Wi[n]||1,new fn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Ui=G("Raydium_amount"),yo=wt(qi);function Gi(a,e){let t="0",n="0";if(a.includes(".")){let i=a.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):Ui.logWithError(`invalid number string, num: ${a}`)}else t=a;return[t,n.slice(0,e)||n]}var re=class extends Y{constructor(t,n,i=!0,r){let s=new Yt(0),u=yn.pow(new Yt(t.decimals));if(i)s=ie(n);else{let c=new Yt(0),l=new Yt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[m,p]=Gi(n.toString(),t.decimals);c=ie(m),l=ie(p)}c=c.mul(u),s=c.add(l)}super(s,u);this.logger=G(r||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new re(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new re(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return yo.DP=this.token.decimals,new yo(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as zi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as bo}from"@solana/spl-token";var Qt={chainId:101,address:zi.default.toBase58(),programId:bo.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Fe={chainId:101,address:"So11111111111111111111111111111111111111112",programId:bo.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 Pn}from"@solana/web3.js";import{PublicKey as J,SystemProgram as go,SYSVAR_RENT_PUBKEY as Xi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Yi}from"@solana/spl-token";function rt({pubkey:a,isSigner:e=!1,isWritable:t=!0}){return{pubkey:a,isWritable:t,isSigner:e}}var Qi=[rt({pubkey:Yi,isWritable:!1}),rt({pubkey:go.programId,isWritable:!1}),rt({pubkey:Xi,isWritable:!1})];function bn({publicKey:a,transformSol:e}){let t=Po(a.toString());if(t instanceof J)return e&&t.equals(je)?Ue:t;if(e&&t.toString()===je.toBase58())return Ue;if(typeof t=="string"){if(t===J.default.toBase58())return J.default;try{return new J(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Po(a){try{return new J(a)}catch{return a}}var gn=new J("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ht=new J("SysvarRent111111111111111111111111111111111"),Hu=new J("SysvarC1ock11111111111111111111111111111111"),Zt=new J("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Zi=new J("Sysvar1nstructions1111111111111111111111111"),Hi=go.programId,ju=new J("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),$u=new J("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ju=new J("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),ec=new J("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),tc=new J("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),nc=new J("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),oc=new J("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),ic=new J("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),rc=new J("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),ac=new J("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),sc=new J("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ue=new J("So11111111111111111111111111111111111111112"),je=J.default;function Ge(a){return bn({publicKey:a,transformSol:!0})}var An=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:r=!1,isToken2022:s=!1}){if(e===je.toBase58()||e instanceof Pn&&je.equals(e)){this.decimals=Fe.decimals,this.symbol=Fe.symbol,this.name=Fe.name,this.mint=new Pn(Fe.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?Pn.default:bn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},le=An;le.WSOL=new An(E(L({},Fe),{mint:Fe.address}));var wn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Ht=wn;Ht.SOL=new wn(Qt);import ji from"bn.js";var Ao=new Y(new ji(100)),ve=class extends Y{toSignificant(e=5,t,n){return this.mul(Ao).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Ao).toFixed(e,t,n)}};var $i=G("Raydium_price"),Ie=class extends Y{constructor(t){let{baseToken:n,quoteToken:i,numerator:r,denominator:s}=t;super(r,s);this.baseToken=n,this.quoteToken=i,this.scalar=new Y(kn(n.decimals),kn(i.decimals))}get raw(){return new Y(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ie({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&$i.logWithError("mul token not equals");let n=super.mul(t);return new Ie({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};import{merge as oK}from"lodash";import Lc from"axios";var wo={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"},Ji=E(L({},wo),{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 el=G("Raydium_Api");import{PublicKey as Km,SystemProgram as Cm}from"@solana/web3.js";import{AccountLayout as Mm,createAssociatedTokenAccountIdempotentInstruction as Fm,TOKEN_PROGRAM_ID as vm,TOKEN_2022_PROGRAM_ID as Vm}from"@solana/spl-token";import{PublicKey as lt,sendAndConfirmTransaction as xn,SystemProgram as rr,Transaction as St,TransactionMessage as xt,VersionedTransaction as Kt}from"@solana/web3.js";import ar from"axios";import{PublicKey as Tn,AddressLookupTableAccount as ut}from"@solana/web3.js";async function hn({connection:a,address:e,cluster:t="mainnet"}){let n=await he(a,[...new Set(e.map(r=>r.toString()))].map(r=>new Tn(r))),i={};for(let r=0;r<e.length;r++){let s=n[r],u=e[r];if(!s)continue;let c=new ut({key:u,state:ut.deserialize(s.data)});i[u.toString()]=c,t==="devnet"?st[u.toString()]=c:at[u.toString()]=c}return i}var at={},In=async a=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(at[e])return at;let t=new Tn(e),n=await a.getAccountInfo(t);return n&&(at[e]=new ut({key:t,state:ut.deserialize(n.data)})),at},st={},Bn=async a=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(st[e])return st;let t=new Tn(e),n=await a.getAccountInfo(t);return n&&(st[e]=new ut({key:t,state:ut.deserialize(n.data)})),st};var me={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 ko,Keypair as ho,PublicKey as er,Transaction as Io,TransactionMessage as tr,VersionedTransaction as Bo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as nr}from"@solana/spl-token";var To=G("Raydium_txUtil"),So=1644;function jt(a){let e=[],t=[];return a.microLamports&&(e.push(ko.setComputeUnitPrice({microLamports:a.microLamports})),t.push(me.SetComputeUnitPrice)),a.units&&(e.push(ko.setComputeUnitLimit({units:a.units})),t.push(me.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function ct(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 $t(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 Sn(a,e){a.length<1&&To.logWithError(`no instructions provided: ${a.toString()}`),e.length<1&&To.logWithError(`no signers provided:, ${e.toString()}`);let t=new Io;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...a);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<So}catch{return!1}}function Be(a,e){let[t,n]=er.findProgramAddressSync(a,e);return{publicKey:t,nonce:n}}function It({instructions:a,payer:e,signers:t}){return Sn(a,[e,...t])}function Bt({instructions:a,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=ho.generate().publicKey.toString()}){let r=new tr({payerKey:e,recentBlockhash:n,instructions:a}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Bo(r).serialize()).toString("base64").length<So}catch{return!1}}var or=a=>Buffer.isBuffer(a)?a:a instanceof Uint8Array?Buffer.from(a.buffer,a.byteOffset,a.byteLength):Buffer.from(a),ir=a=>{let e=a.serialize({requireAllSignatures:!1,verifySignatures:!1});a instanceof Bo&&(e=or(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 Io&&(t.recentBlockhash||(t.recentBlockhash=nr.toBase58()),t.feePayer||(t.feePayer=ho.generate().publicKey)),e.push(ir(t))}),console.log("simulate tx string:",e),e}var Jt=2e3,en=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 ar.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}=jt(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(rr.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new lt(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(me.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:r=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...r),this.lookupTableAddress.push(...s.filter(u=>u!==lt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:n}){return e===0?await this.buildV0(E(L({},t||{}),{lookupTableAddress:n})):this.build(t)}build(e){var n;let t=new St;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 m;let{recentBlockHash:r,skipPreflight:s=!0,sendAndConfirm:u,notSendToRpc:c}=i||{},l=r!=null?r:await ct(this.connection,this.blockhashCommitment);if(t.recentBlockhash=l,this.signers.length&&t.sign(...this.signers),$e([t]),(m=this.owner)!=null&&m.isKeyPair)return{txId:u?await xn(this.connection,t,this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let p=await this.signAllTransactions([t]);if(this.signers.length)for(let P of p)try{P.sign(...this.signers)}catch{}return{txId:c?"":await this.connection.sendRawTransaction(p[0].serialize(),{skipPreflight:s}),signedTx:p[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var l;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),r=t.filter(m=>m.transaction.instructions.length>0),s=[i,...r.map(m=>m.transaction)],u=[this.signers,...r.map(m=>m.signers)],c=[...this.instructionTypes,...r.map(m=>m.instructionTypes).flat()];return(l=this.owner)!=null&&l.signer&&u.forEach(m=>{m.some(p=>p.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:u,instructionTypes:c,execute:async m=>{var S;let{sequentially:p,onTxUpdate:P,skipTxCount:g=0,recentBlockHash:h,skipPreflight:A=!0}=m||{},T=h!=null?h:await ct(this.connection,this.blockhashCommitment);if((S=this.owner)!=null&&S.isKeyPair){if(p){let x=[],M=0;for(let F of s){if(++M,M<=g)continue;let b=await xn(this.connection,F,this.signers.find(I=>I.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:A});x.push(b)}return{txIds:x,signedTxs:s}}return{txIds:await await Promise.all(s.map(async x=>(x.recentBlockhash=T,await this.connection.sendRawTransaction(x.serialize(),{skipPreflight:A})))),signedTxs:s}}if(this.signAllTransactions){let x=s.map((F,b)=>(F.recentBlockhash=T,u[b].length&&F.sign(...u[b]),F));$e(x);let M=await this.signAllTransactions(x);if(p){let F=0,b=[],I=async()=>{if(!M[F])return;let K=await this.connection.sendRawTransaction(M[F].serialize(),{skipPreflight:A});b.push({txId:K,status:"sent",signedTx:M[F]}),P==null||P([...b]),F++;let O=!1,R=null,V=null,Z=U=>{R!==null&&clearInterval(R),V!==null&&this.connection.removeSignatureListener(V);let N=b.findIndex(Q=>Q.txId===K);if(N>-1){if(b[N].status==="error"||b[N].status==="success")return;b[N].status=U.err?"error":"success"}P==null||P([...b]),U.err||I()};this.loopMultiTxStatus&&(R=setInterval(async()=>{var U;if(O){clearInterval(R);return}try{let N=await this.connection.getTransaction(K,{commitment:"confirmed",maxSupportedTransactionVersion:0});N&&(O=!0,clearInterval(R),Z({err:((U=N.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",K))}catch(N){O=!0,clearInterval(R),console.error("getTransaction timeout:",N,K)}},Jt)),V=this.connection.onSignature(K,U=>{if(O){this.connection.removeSignatureListener(V);return}O=!0,Z(U)},"confirmed"),this.connection.getSignatureStatus(K)};return await I(),{txIds:b.map(K=>K.txId),signedTxs:M}}else{let F=[];for(let b=0;b<M.length;b+=1){let I=await this.connection.sendRawTransaction(M[b].serialize(),{skipPreflight:A});F.push(I)}return{txIds:F,signedTxs:M}}}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 A;let h=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i,recentBlockhash:r}=h,s=xe(h,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),u=L(L({},this.cluster==="devnet"?await Bn(this.connection):await In(this.connection)),t),c=Array.from(new Set([...n,...this.lookupTableAddress])),l=[];for(let T of c)u[T]===void 0&&l.push(new lt(T));let m=await hn({connection:this.connection,address:l});for(let[T,S]of Object.entries(m))u[T]=S;let p=i?lt.default.toBase58():r!=null?r:await ct(this.connection,this.blockhashCommitment),P=new xt({payerKey:this.feePayer,recentBlockhash:p,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(u));((A=this.owner)==null?void 0:A.signer)&&!this.signers.some(T=>T.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let g=new Kt(P);return g.sign(this.signers),{builder:this,transaction:g,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async T=>{var F;let{skipPreflight:S=!0,sendAndConfirm:x,notSendToRpc:M}=T||{};if($e([g]),(F=this.owner)!=null&&F.isKeyPair){let b=await this.connection.sendTransaction(g,{skipPreflight:S});return x&&await $t(this.connection,b),{txId:b,signedTx:g}}if(this.signAllTransactions){let b=await this.signAllTransactions([g]);if(this.signers.length)for(let I of b)try{I.sign(this.signers)}catch{}return{txId:M?"":await this.connection.sendTransaction(b[0],{skipPreflight:S}),signedTx:b[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}async buildV0MultiTx(e){var l;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),r=t.filter(m=>m.builder.instructions.length>0),s=[i,...r.map(m=>m.transaction)],u=[this.signers,...r.map(m=>m.signers)],c=[...this.instructionTypes,...r.map(m=>m.instructionTypes).flat()];return(l=this.owner)!=null&&l.signer&&u.forEach(m=>{m.some(p=>p.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(m,p)=>{m.sign(u[p])}),{builder:this,transactions:s,signers:u,instructionTypes:c,buildProps:n,execute:async m=>{var A;let{sequentially:p,onTxUpdate:P,recentBlockHash:g,skipPreflight:h=!0}=m||{};if(g&&s.forEach(T=>T.message.recentBlockhash=g),$e(s),(A=this.owner)!=null&&A.isKeyPair){if(p){let T=[];for(let S of s){let x=await this.connection.sendTransaction(S,{skipPreflight:h});await $t(this.connection,x),T.push(x)}return{txIds:T,signedTxs:s}}return{txIds:await Promise.all(s.map(async T=>await this.connection.sendTransaction(T,{skipPreflight:h}))),signedTxs:s}}if(this.signAllTransactions){let T=await this.signAllTransactions(s);if(p){let S=0,x=[],M=async()=>{if(!T[S])return;let F=await this.connection.sendTransaction(T[S],{skipPreflight:h});x.push({txId:F,status:"sent",signedTx:T[S]}),P==null||P([...x]),S++;let b=!1,I=null,K=null,O=R=>{I!==null&&clearInterval(I),K!==null&&this.connection.removeSignatureListener(K);let V=x.findIndex(Z=>Z.txId===F);if(V>-1){if(x[V].status==="error"||x[V].status==="success")return;x[V].status=R.err?"error":"success"}P==null||P([...x]),R.err||M()};this.loopMultiTxStatus&&(I=setInterval(async()=>{var R;if(b){clearInterval(I);return}try{let V=await this.connection.getTransaction(F,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(b=!0,clearInterval(I),O({err:((R=V.meta)==null?void 0:R.err)||null}),console.log("tx status from getTransaction:",F))}catch(V){b=!0,clearInterval(I),console.error("getTransaction timeout:",V,F)}},Jt)),K=this.connection.onSignature(F,R=>{if(b){this.connection.removeSignatureListener(K);return}b=!0,O(R)},"confirmed"),this.connection.getSignatureStatus(F)};return M(),{txIds:[],signedTxs:T}}else{let S=[];for(let x=0;x<T.length;x+=1){let M=await this.connection.sendTransaction(T[x],{skipPreflight:h});S.push(M)}return{txIds:S,signedTxs:T}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var P;let p=e||{},{splitIns:t=[],computeBudgetConfig:n}=p,i=xe(p,["splitIns","computeBudgetConfig"]),r=n?jt(n):{instructions:[],instructionTypes:[]},s=this.signers.reduce((g,h)=>E(L({},g),{[h.publicKey.toBase58()]:h}),{}),u=[],c=[],l=[],m=0;if(this.allInstructions.forEach(g=>{let h=[...l,g],A=n?[...r.instructions,...h]:h,S=[...new Set(h.map(x=>x.keys.filter(M=>M.isSigner).map(M=>M.pubkey.toString())).flat()).values()].map(x=>new lt(x));if(g!==t[m]&&l.length<12&&(It({instructions:A,payer:this.feePayer,signers:S})||It({instructions:h,payer:this.feePayer,signers:S})))l.push(g);else{if(l.length===0)throw Error("item ins too big");m+=g===t[m]?1:0,It({instructions:n?[...r.instructions,...l]:[...l],payer:this.feePayer,signers:S})?u.push(new St().add(...r.instructions,...l)):u.push(new St().add(...l)),c.push(Array.from(new Set(l.map(x=>x.keys.filter(M=>M.isSigner).map(M=>M.pubkey.toString())).flat())).map(x=>s[x]).filter(x=>x!==void 0)),l=[g]}}),l.length>0){let h=[...new Set(l.map(A=>A.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(A=>s[A]).filter(A=>A!==void 0);It({instructions:n?[...r.instructions,...l]:[...l],payer:this.feePayer,signers:h.map(A=>A.publicKey)})?u.push(new St().add(...r.instructions,...l)):u.push(new St().add(...l)),c.push(h)}return u.forEach(g=>g.feePayer=this.feePayer),(P=this.owner)!=null&&P.signer&&c.forEach(g=>{g.some(h=>h.publicKey.equals(this.owner.publicKey))||g.push(this.owner.signer)}),{builder:this,transactions:u,signers:c,instructionTypes:this.instructionTypes,execute:async g=>{var F;let{sequentially:h,onTxUpdate:A,skipTxCount:T=0,recentBlockHash:S,skipPreflight:x=!0}=g||{},M=S!=null?S:await ct(this.connection,this.blockhashCommitment);if(u.forEach(async(b,I)=>{b.recentBlockhash=M,c[I].length&&b.sign(...c[I])}),$e(u),(F=this.owner)!=null&&F.isKeyPair){if(h){let b=0,I=[];for(let K of u){if(++b,b<=T){I.push("tx skipped");continue}let O=await xn(this.connection,K,this.signers.find(R=>R.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:x});I.push(O)}return{txIds:I,signedTxs:u}}return{txIds:await Promise.all(u.map(async b=>await this.connection.sendRawTransaction(b.serialize(),{skipPreflight:x}))),signedTxs:u}}if(this.signAllTransactions){let b=await this.signAllTransactions(u.slice(T,u.length)),I=[...u.slice(0,T),...b];if(h){let K=0,O=[],R=async()=>{if(!I[K])return;K<T&&(O.push({txId:"",status:"success",signedTx:I[K]}),A==null||A([...O]),K++,R());let V=await this.connection.sendRawTransaction(I[K].serialize(),{skipPreflight:x});O.push({txId:V,status:"sent",signedTx:I[K]}),A==null||A([...O]),K++;let Z=!1,U=null,N=null,Q=q=>{U!==null&&clearInterval(U),N!==null&&this.connection.removeSignatureListener(N);let ne=O.findIndex(Ae=>Ae.txId===V);if(ne>-1){if(O[ne].status==="error"||O[ne].status==="success")return;O[ne].status=q.err?"error":"success"}A==null||A([...O]),q.err||R()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var q;if(Z){clearInterval(U);return}try{let ne=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});ne&&(Z=!0,clearInterval(U),Q({err:((q=ne.meta)==null?void 0:q.err)||null}),console.log("tx status from getTransaction:",V))}catch(ne){Z=!0,clearInterval(U),console.error("getTransaction timeout:",ne,V)}},Jt)),N=this.connection.onSignature(V,q=>{if(Z){this.connection.removeSignatureListener(N);return}Z=!0,Q(q)},"confirmed"),this.connection.getSignatureStatus(V)};return await R(),{txIds:O.map(V=>V.txId),signedTxs:I}}else{let K=[];for(let O=0;O<I.length;O+=1){let R=await this.connection.sendRawTransaction(I[O].serialize(),{skipPreflight:x});K.push(R)}return{txIds:K,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var F;let M=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:i={},lookupTableAddress:r=[],insCountLimit:s=12}=M,u=xe(M,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),c=L(L({},this.cluster==="devnet"?await Bn(this.connection):await In(this.connection)),i),l=Array.from(new Set([...this.lookupTableAddress,...r])),m=[];for(let b of l)c[b]===void 0&&m.push(new lt(b));let p=await hn({connection:this.connection,address:m});for(let[b,I]of Object.entries(p))c[b]=I;let P=t?jt(t):{instructions:[],instructionTypes:[]},g=await ct(this.connection,this.blockhashCommitment),h=this.signers.reduce((b,I)=>E(L({},b),{[I.publicKey.toBase58()]:I}),{}),A=[],T=[],S=[],x=0;if(this.allInstructions.forEach(b=>{let I=[...S,b],K=t?[...P.instructions,...I]:I;if(b!==n[x]&&S.length<s&&(Bt({instructions:K,payer:this.feePayer,lookupTableAddressAccount:c})||Bt({instructions:I,payer:this.feePayer,lookupTableAddressAccount:c})))S.push(b);else{if(S.length===0)throw Error("item ins too big");x+=b===n[x]?1:0;let O={};for(let R of[...new Set(l)])c[R]!==void 0&&(O[R]=c[R]);if(t&&Bt({instructions:[...P.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:g})){let R=new xt({payerKey:this.feePayer,recentBlockhash:g,instructions:[...P.instructions,...S]}).compileToV0Message(Object.values(c));A.push(new Kt(R))}else{let R=new xt({payerKey:this.feePayer,recentBlockhash:g,instructions:[...S]}).compileToV0Message(Object.values(c));A.push(new Kt(R))}T.push(Array.from(new Set(S.map(R=>R.keys.filter(V=>V.isSigner).map(V=>V.pubkey.toString())).flat())).map(R=>h[R]).filter(R=>R!==void 0)),S=[b]}}),S.length>0){let I=[...new Set(S.map(K=>K.keys.filter(O=>O.isSigner).map(O=>O.pubkey.toString())).flat()).values()].map(K=>h[K]).filter(K=>K!==void 0);if(t&&Bt({instructions:[...P.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:g})){let K=new xt({payerKey:this.feePayer,recentBlockhash:g,instructions:[...P.instructions,...S]}).compileToV0Message(Object.values(c));A.push(new Kt(K))}else{let K=new xt({payerKey:this.feePayer,recentBlockhash:g,instructions:[...S]}).compileToV0Message(Object.values(c));A.push(new Kt(K))}T.push(I)}return(F=this.owner)!=null&&F.signer&&T.forEach(b=>{b.some(I=>I.publicKey.equals(this.owner.publicKey))||b.push(this.owner.signer)}),A.forEach((b,I)=>{b.sign(T[I])}),{builder:this,transactions:A,buildProps:e,signers:T,instructionTypes:this.instructionTypes,execute:async b=>{var Z;let{sequentially:I,onTxUpdate:K,skipTxCount:O=0,recentBlockHash:R,skipPreflight:V=!0}=b||{};if(A.map(async(U,N)=>{T[N].length&&U.sign(T[N]),R&&(U.message.recentBlockhash=R)}),$e(A),(Z=this.owner)!=null&&Z.isKeyPair){if(I){let U=0,N=[];for(let Q of A){if(++U,U<=O){console.log("skip tx: ",U),N.push("tx skipped");continue}let q=await this.connection.sendTransaction(Q,{skipPreflight:V});await $t(this.connection,q),N.push(q)}return{txIds:N,signedTxs:A}}return{txIds:await Promise.all(A.map(async U=>await this.connection.sendTransaction(U,{skipPreflight:V}))),signedTxs:A}}if(this.signAllTransactions){let U=await this.signAllTransactions(A.slice(O,A.length)),N=[...A.slice(0,O),...U];if(I){let Q=0,q=[],ne=async()=>{if(!N[Q])return;if(Q<O){q.push({txId:"",status:"success",signedTx:N[Q]}),K==null||K([...q]),Q++,ne();return}let Ae=await this.connection.sendTransaction(N[Q],{skipPreflight:V});q.push({txId:Ae,status:"sent",signedTx:N[Q]}),K==null||K([...q]),Q++;let yt=!1,tt=null,vt=null,_n=Ze=>{tt!==null&&clearInterval(tt),vt!==null&&this.connection.removeSignatureListener(vt);let Ee=q.findIndex(ei=>ei.txId===Ae);if(Ee>-1){if(q[Ee].status==="error"||q[Ee].status==="success")return;q[Ee].status=Ze.err?"error":"success"}K==null||K([...q]),Ze.err||ne()};this.loopMultiTxStatus&&(tt=setInterval(async()=>{var Ze;if(yt){clearInterval(tt);return}try{let Ee=await this.connection.getTransaction(Ae,{commitment:"confirmed",maxSupportedTransactionVersion:0});Ee&&(yt=!0,clearInterval(tt),_n({err:((Ze=Ee.meta)==null?void 0:Ze.err)||null}),console.log("tx status from getTransaction:",Ae))}catch(Ee){yt=!0,clearInterval(tt),console.error("getTransaction timeout:",Ee,Ae)}},Jt)),vt=this.connection.onSignature(Ae,Ze=>{if(yt){this.connection.removeSignatureListener(vt);return}yt=!0,_n(Ze)},"confirmed"),this.connection.getSignatureStatus(Ae)};return ne(),{txIds:[],signedTxs:N}}else{let Q=[];for(let q=0;q<N.length;q+=1){let ne=await this.connection.sendTransaction(N[q],{skipPreflight:V});Q.push(ne)}return{txIds:Q,signedTxs:N}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:u||{}}}};var Kn=(...a)=>a.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),ge=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=G(t)}createTxBuilder(e){return this.scope.checkOwner(),new en({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(Kn(e))}logInfo(...e){this.logger.info(Kn(e))}logAndCreateError(...e){let t=Kn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as rm,SystemProgram as sm}from"@solana/web3.js";import lm from"bn.js";import{createCloseAccountInstruction as fm,createInitializeAccountInstruction as ym,createTransferInstruction as bm,TOKEN_PROGRAM_ID as gm}from"@solana/spl-token";import{Keypair as Xl,PublicKey as Yl}from"@solana/web3.js";import Hl from"bn.js";import{TOKEN_PROGRAM_ID as Jl}from"@solana/spl-token";var tn=k([d("mint"),d("owner"),o("amount"),$("delegateOption"),d("delegate"),w("state"),$("isNativeOption"),o("isNative"),o("delegatedAmount"),$("closeAuthorityOption"),d("closeAuthority")]);import{PublicKey as ag,SystemProgram as sg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as cg}from"@solana/spl-token";import{PublicKey as Gm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Xm}from"@solana/spl-token";import{PublicKey as v}from"@solana/web3.js";var Ko=new v("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Co=new v("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Ro=new v("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Cn=new v("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Hm=new v("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),ur=new v("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Lo=new v("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Oo=new v("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),jm=new v("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),cr=new v("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),No=new v("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),lr=new v("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),mr=new v("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Mo=new v("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),$m=new v("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),dr=new v("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Rn=new v("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),pr=new v("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Jm=new v("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),fr=new v("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),yr=new v("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),br=new v("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),ed=new v("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),td=new v("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),nd=new v("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),od=new v("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),id=new v("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var ze={OPEN_BOOK_PROGRAM:new v("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new v("Ray1111111111111111111111111111111111111111"),AMM_V4:new v("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new v("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new v("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new v("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new v("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new v("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new v("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new v("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new v("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new v("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:v.default,Router:new v("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new v("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new v("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new v("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new v("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new v("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new v("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new v("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new v("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new v("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSf