@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
1 lines • 114 kB
JavaScript
var ii=Object.defineProperty,ri=Object.defineProperties;var ai=Object.getOwnPropertyDescriptors;var Vt=Object.getOwnPropertySymbols;var Wn=Object.prototype.hasOwnProperty,qn=Object.prototype.propertyIsEnumerable;var Dn=(a,e,t)=>e in a?ii(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t,L=(a,e)=>{for(var t in e||(e={}))Wn.call(e,t)&&Dn(a,t,e[t]);if(Vt)for(var t of Vt(e))qn.call(e,t)&&Dn(a,t,e[t]);return a},_=(a,e)=>ri(a,ai(e));var Le=(a,e)=>{var t={};for(var n in a)Wn.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&&qn.call(a,n)&&(t[n]=a[n]);return t};import{PublicKey as ge}from"@solana/web3.js";import de from"bn.js";import{PublicKey as Ai}from"@solana/web3.js";import Qn,{isBN as Zn}from"bn.js";import{bits as si,BitStructure as ls,blob as ui,Blob as ms,cstr as ds,f32 as ps,f32be as fs,f64 as ys,f64be as bs,greedy as gs,Layout as ci,ns64 as Ps,ns64be as As,nu64 as li,nu64be as ws,offset as mi,s16 as ks,s16be as Ts,s24 as hs,s24be as Is,s32 as di,s32be as Bs,s40 as Ss,s40be as xs,s48 as Ks,s48be as Cs,s8 as Rs,seq as pi,struct as Ls,Structure as fi,u16 as yi,u16be as Os,u24 as Ns,u24be as Ms,u32 as bi,u32be as Fs,u40 as vs,u40be as Vs,u48 as _s,u48be as Es,u8 as gi,UInt as Pi,union as Ds,Union as Ws,unionLayoutDiscriminator as qs,utf8 as Us}from"@solana/buffer-layout";var _t=ci,Un=fi;var un=Pi;var Gn=gi,ce=yi;var Et=bi;var zn=li;var xe=di;var Xn=pi;var W=ui;var cn=si,Yn=mi;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 Qn(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 Qn(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=cn(Et(),!1),this._upper=cn(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 un(1,a)}function $(a){return new un(4,a)}function o(a){return new He(8,!1,a)}function D(a){return new He(16,!1,a)}function Hn(a){return new He(1,!0,a)}function nt(a){return new He(8,!0,a)}function jn(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 Ai(e),e=>e.toBuffer(),a)}function we(a){return new bt(Gn(),wi,ki,a)}function wi(a){if(a===0)return!1;if(a===1)return!0;throw new Error("Invalid bool: "+a)}function ki(a){return a?1:0}function $n(a,e){let t=Et("length"),n=k([t,B(a,Yn(t,-t.span),"values")]);return new bt(n,({values:i})=>i,i=>({values:i}),e)}var ln=class extends Un{decode(e,t){return super.decode(e,t)}};function k(a,e,t){return new ln(a,e,t)}function B(a,e,t){let n,i=typeof e=="number"?e:Zn(e)?e.toNumber():new Proxy(e,{get(r,s){if(!n){let u=Reflect.get(r,"count");n=Zn(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 Xn(a,i,t)}import X from"bn.js";var H=new X(1).shln(64),ot=64,Ti=new X(1).shln(128),We=new X(1).shln(64).subn(1),hi=new X(1).shln(128).subn(1),ke=-443636,Te=443636,Oe=new X("4295048016"),Ne=new X("79226673521066979257578248091"),Jn=new X("59543866431248"),eo=new X("184467440737095516"),to=new X("15793534762490258745"),no=16,Wt=512,be=60,eu=new X("18446743708227953217"),oo=[{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)}],qe=1e6;var qt=1e5,gt=1e4,io=1e4,ro=1e5;var Pt=3,ao=100;var so=10,uo=100,it=14;var C=new X(0),Me=new X(1),tu=new X(-1);var nu=new X("18446744073700000000");var Ii=k([W(8),w("bump"),ce("index"),d("owner"),$("protocolFeeRate"),$("tradeFeeRate"),ce("tickSpacing"),$("fundFeeRate"),B($(),1),d("fundOwner"),B(o(),3)]),Bi=k([$("blockTimestamp"),nt("tickCumulative"),B(o(),4)]),co=k([W(8),we("initialized"),o("recentEpoch"),ce("observationIndex"),d("poolId"),B(Bi,ao,"observations"),B(o(),4)]),Si=k([ce("filterPeriod"),ce("decayPeriod"),ce("reductionFactor"),$("dynamicFeeControl"),$("maxVolatilityAccumulator"),xe("tickSpacingIndexReference"),$("volatilityReference"),$("volatilityAccumulator"),o("lastUpdateTimestamp"),B(w(),46)]),xi=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"),xe("tickCurrent"),$(),D("feeGrowthGlobalX64A"),D("feeGrowthGlobalX64B"),o("protocolFeesTokenA"),o("protocolFeesTokenB"),B(D(),4),w("status"),w("feeOn"),W(6),B(xi,Pt,"rewardInfos"),W(8*16,"tickArrayBitmap"),B(o(),4),o("fundFeesTokenA"),o("fundFeesTokenB"),o("startTime"),o("recentEpoch"),Si.replicate("dynamicFeeInfo"),B(o(),46)]),Ki=k([D("growthInsideLastX64"),o("rewardAmountOwed")]),Ci=k([W(8),w("bump"),d("nftMint"),d("poolId"),xe("tickLower"),xe("tickUpper"),D("liquidity"),D("feeGrowthInsideLastX64A"),D("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),B(Ki,Pt,"rewardInfos"),o("recentEpoch"),B(o(),7)]),au=k([W(8),w("bump"),d("poolId"),xe("tickLower"),xe("tickUpper"),D("liquidity"),D("feeGrowthInsideLastX64A"),D("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),B(D(),Pt,"rewardGrowthInside"),o("recentEpoch"),B(o(),7)]),Ri=k([xe("tick"),jn("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"),xe("startTickIndex"),B(Ri,be,"ticks"),w("initializedTickCount"),o("recentEpoch"),B(w(),107)]),Li=k([W(8),w("bump"),B(d(),so,"operationOwners"),B(d(),uo,"whitelistMints")]),Oi=k([W(8),d("poolId"),d("owner"),xe("tick"),we("zeroForOne"),o("orderPhase"),o("totalAmount"),o("filledAmount"),o("settleBase"),o("settleOutput"),o("openTime"),D("unfilledRatioX64"),B(o(),4)]),mn=k([W(8),d("poolId"),W(8*8*it,"positiveTickArrayBitmap"),W(8*8*it,"negativeTickArrayBitmap")]),su=k([W(8),ce("index"),ce("filterPeriod"),ce("decayPeriod"),ce("reductionFactor"),$("dynamicFeeControl"),$("maxVolatilityAccumulator"),B(o(),8)]),Ni=k([W(8),d("wallet"),w("nonceIndex"),o("orderNonce"),B(o(),4)]),uu=k([o(),w("bump"),d("owner"),d("poolId"),d("positionId"),d("nftAccount"),B(o(),8)]),Mi=k([W(8),w("bump"),d("lockOwner"),d("poolId"),d("positionId"),d("nftAccount"),d("lockNftMint"),o("recentEpoch"),B(o(),8)]);import Fi from"bn.js";import lo 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 pu=new Fi(1).shln(256).subn(1);function mo(a){return a.isZero()?-1:a.bitLength()-1}function po(a,e){return new lo(a.toString()).div(lo.pow(2,64)).toDecimalPlaces(e)}import{PublicKey as _i}from"@solana/web3.js";import{get as fo,set as vi}from"lodash";var dn=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}},yo={},Vi={};function G(a){let e=fo(yo,a);if(!e){let t=fo(Vi,a);e=new dn({name:a,logLevel:t}),vi(yo,a,e)}return e}import{MINT_SIZE as Iu,TOKEN_PROGRAM_ID as Bu,getTransferFeeConfig as Su,unpackMint as xu}from"@solana/spl-token";var pn=G("Raydium_accountInfo_util");async function he(a,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:r=100}=L({batchRequest:!1},t),s=fn(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=fn(c,10);u=(await(await Promise.all(l.map(async p=>await a._rpcBatchRequest(p)))).flat()).map(p=>(p.error&&pn.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"&&pn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(g[0],"base64"),executable:h,lamports:A,owner:new _i(T),rentEpoch:S}}return null})))}else try{u=await Promise.all(s.map(c=>a.getMultipleAccountsInfo(c,i)))}catch(c){c instanceof Error&&pn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return u.flat()}async function Ue(a,e,t){let n=await he(a,e.map(i=>i.pubkey),t);return e.map((i,r)=>_(L({},i),{accountInfo:n[r]}))}import et from"bn.js";import WC from"decimal.js";import Xi from"big.js";import Yt from"bn.js";import Ei from"toformat";var Di=Ei,wt=Di;import Xt from"big.js";import qi from"bn.js";import Ui from"decimal.js-light";import kt from"bn.js";var bo=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>=bo||a<=-bo)&&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"),yn=wt(Xt),Tt=wt(Ui),Gi={[0]:Tt.ROUND_DOWN,[1]:Tt.ROUND_HALF_UP,[2]:Tt.ROUND_UP},zi={[0]:Xt.roundDown,[1]:Xt.roundHalfUp,[2]:Xt.roundUp},Y=class{constructor(e,t=new qi(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:Gi[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.`),yn.DP=e,yn.RM=zi[n]||1,new yn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Yi=G("Raydium_amount"),go=wt(Xi);function Qi(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")):Yi.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=bn.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]=Qi(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 go.DP=this.token.decimals,new go(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Zi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Po}from"@solana/spl-token";var Qt={chainId:101,address:Zi.default.toBase58(),programId:Po.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ve={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Po.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 An}from"@solana/web3.js";import{PublicKey as J,SystemProgram as Ao,SYSVAR_RENT_PUBKEY as Hi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ji}from"@solana/spl-token";function rt({pubkey:a,isSigner:e=!1,isWritable:t=!0}){return{pubkey:a,isWritable:t,isSigner:e}}var $i=[rt({pubkey:ji,isWritable:!1}),rt({pubkey:Ao.programId,isWritable:!1}),rt({pubkey:Hi,isWritable:!1})];function gn({publicKey:a,transformSol:e}){let t=wo(a.toString());if(t instanceof J)return e&&t.equals(je)?Fe:t;if(e&&t.toString()===je.toBase58())return Fe;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 wo(a){try{return new J(a)}catch{return a}}var Pn=new J("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),at=new J("SysvarRent111111111111111111111111111111111"),Ji=new J("SysvarC1ock11111111111111111111111111111111"),Zt=new J("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),er=new J("Sysvar1nstructions1111111111111111111111111"),ko=Ao.programId,rc=new J("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ac=new J("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),sc=new J("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),uc=new J("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),cc=new J("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),lc=new J("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),mc=new J("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),dc=new J("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),pc=new J("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),fc=new J("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),yc=new J("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Fe=new J("So11111111111111111111111111111111111111112"),je=J.default;function Ge(a){return gn({publicKey:a,transformSol:!0})}var wn=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:r=!1,isToken2022:s=!1}){if(e===je.toBase58()||e instanceof An&&je.equals(e)){this.decimals=ve.decimals,this.symbol=ve.symbol,this.name=ve.name,this.mint=new An(ve.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?An.default:gn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},le=wn;le.WSOL=new wn(_(L({},ve),{mint:ve.address}));var kn=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=kn;Ht.SOL=new kn(Qt);import tr from"bn.js";var To=new Y(new tr(100)),Ve=class extends Y{toSignificant(e=5,t,n){return this.mul(To).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(To).toFixed(e,t,n)}};var nr=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(Tn(n.decimals),Tn(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&&nr.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 WK}from"lodash";import Ec from"axios";var ho={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_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",OWNER_LOCK_POSITION:"/position/clmm-lock/{owner}",IDO_KEYS:"/ido/key/ids",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee",CPMM_LOCK:"https://dynamic-ipfs.raydium.io/lock/cpmm/position",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"},or=_(L({},ho),{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 ul=G("Raydium_Api");import{PublicKey as vm,SystemProgram as Vm}from"@solana/web3.js";import{AccountLayout as qm,createAssociatedTokenAccountIdempotentInstruction as Um,TOKEN_PROGRAM_ID as Gm,TOKEN_2022_PROGRAM_ID as zm}from"@solana/spl-token";import{PublicKey as mt,sendAndConfirmTransaction as Kn,SystemProgram as cr,Transaction as Bt,TransactionMessage as St,VersionedTransaction as xt}from"@solana/web3.js";import lr from"axios";import{PublicKey as hn,AddressLookupTableAccount as ct}from"@solana/web3.js";async function In({connection:a,address:e,cluster:t="mainnet"}){let n=await he(a,[...new Set(e.map(r=>r.toString()))].map(r=>new hn(r))),i={};for(let r=0;r<e.length;r++){let s=n[r],u=e[r];if(!s)continue;let c=new ct({key:u,state:ct.deserialize(s.data)});i[u.toString()]=c,t==="devnet"?ut[u.toString()]=c:st[u.toString()]=c}return i}var st={},Bn=async a=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(st[e])return st;let t=new hn(e),n=await a.getAccountInfo(t);return n&&(st[e]=new ct({key:t,state:ct.deserialize(n.data)})),st},ut={},Sn=async a=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(ut[e])return ut;let t=new hn(e),n=await a.getAccountInfo(t);return n&&(ut[e]=new ct({key:t,state:ct.deserialize(n.data)})),ut};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 Io,Keypair as So,PublicKey as ir,Transaction as xo,TransactionMessage as rr,VersionedTransaction as Ko}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ar}from"@solana/spl-token";var Bo=G("Raydium_txUtil"),Co=1644;function jt(a){let e=[],t=[];return a.microLamports&&(e.push(Io.setComputeUnitPrice({microLamports:a.microLamports})),t.push(me.SetComputeUnitPrice)),a.units&&(e.push(Io.setComputeUnitLimit({units:a.units})),t.push(me.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function lt(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 xn(a,e){a.length<1&&Bo.logWithError(`no instructions provided: ${a.toString()}`),e.length<1&&Bo.logWithError(`no signers provided:, ${e.toString()}`);let t=new xo;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...a);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Co}catch{return!1}}function Be(a,e){let[t,n]=ir.findProgramAddressSync(a,e);return{publicKey:t,nonce:n}}function ht({instructions:a,payer:e,signers:t}){return xn(a,[e,...t])}function It({instructions:a,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=So.generate().publicKey.toString()}){let r=new rr({payerKey:e,recentBlockhash:n,instructions:a}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Ko(r).serialize()).toString("base64").length<Co}catch{return!1}}var sr=a=>Buffer.isBuffer(a)?a:a instanceof Uint8Array?Buffer.from(a.buffer,a.byteOffset,a.byteLength):Buffer.from(a),ur=a=>{let e=a.serialize({requireAllSignatures:!1,verifySignatures:!1});a instanceof Ko&&(e=sr(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 xo&&(t.recentBlockhash||(t.recentBlockhash=ar.toBase58()),t.feePayer||(t.feePayer=So.generate().publicKey)),e.push(ur(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 lr.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(cr.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new mt(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!==mt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:n}){return e===0?await this.buildV0(_(L({},t||{}),{lookupTableAddress:n})):this.build(t)}build(e){var n;let t=new Bt;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 lt(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 Kn(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 lt(this.connection,this.blockhashCommitment);if((S=this.owner)!=null&&S.isKeyPair){if(p){let x=[],F=0;for(let v of s){if(++F,F<=g)continue;let b=await Kn(this.connection,v,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((v,b)=>(v.recentBlockhash=T,u[b].length&&v.sign(...u[b]),v));$e(x);let F=await this.signAllTransactions(x);if(p){let v=0,b=[],I=async()=>{if(!F[v])return;let K=await this.connection.sendRawTransaction(F[v].serialize(),{skipPreflight:A});b.push({txId:K,status:"sent",signedTx:F[v]}),P==null||P([...b]),v++;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:F}}else{let v=[];for(let b=0;b<F.length;b+=1){let I=await this.connection.sendRawTransaction(F[b].serialize(),{skipPreflight:A});v.push(I)}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 A;let h=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i,recentBlockhash:r}=h,s=Le(h,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),u=L(L({},this.cluster==="devnet"?await Sn(this.connection):await Bn(this.connection)),t),c=Array.from(new Set([...n,...this.lookupTableAddress])),l=[];for(let T of c)u[T]===void 0&&l.push(new mt(T));let m=await In({connection:this.connection,address:l});for(let[T,S]of Object.entries(m))u[T]=S;let p=i?mt.default.toBase58():r!=null?r:await lt(this.connection,this.blockhashCommitment),P=new St({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 xt(P);return g.sign(this.signers),{builder:this,transaction:g,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async T=>{var v;let{skipPreflight:S=!0,sendAndConfirm:x,notSendToRpc:F}=T||{};if($e([g]),(v=this.owner)!=null&&v.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:F?"":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=[],F=async()=>{if(!T[S])return;let v=await this.connection.sendTransaction(T[S],{skipPreflight:h});x.push({txId:v,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===v);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||F()};this.loopMultiTxStatus&&(I=setInterval(async()=>{var R;if(b){clearInterval(I);return}try{let V=await this.connection.getTransaction(v,{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:",v))}catch(V){b=!0,clearInterval(I),console.error("getTransaction timeout:",V,v)}},Jt)),K=this.connection.onSignature(v,R=>{if(b){this.connection.removeSignatureListener(K);return}b=!0,O(R)},"confirmed"),this.connection.getSignatureStatus(v)};return F(),{txIds:[],signedTxs:T}}else{let S=[];for(let x=0;x<T.length;x+=1){let F=await this.connection.sendTransaction(T[x],{skipPreflight:h});S.push(F)}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=Le(p,["splitIns","computeBudgetConfig"]),r=n?jt(n):{instructions:[],instructionTypes:[]},s=this.signers.reduce((g,h)=>_(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(F=>F.isSigner).map(F=>F.pubkey.toString())).flat()).values()].map(x=>new mt(x));if(g!==t[m]&&l.length<12&&(ht({instructions:A,payer:this.feePayer,signers:S})||ht({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,ht({instructions:n?[...r.instructions,...l]:[...l],payer:this.feePayer,signers:S})?u.push(new Bt().add(...r.instructions,...l)):u.push(new Bt().add(...l)),c.push(Array.from(new Set(l.map(x=>x.keys.filter(F=>F.isSigner).map(F=>F.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);ht({instructions:n?[...r.instructions,...l]:[...l],payer:this.feePayer,signers:h.map(A=>A.publicKey)})?u.push(new Bt().add(...r.instructions,...l)):u.push(new Bt().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 v;let{sequentially:h,onTxUpdate:A,skipTxCount:T=0,recentBlockHash:S,skipPreflight:x=!0}=g||{},F=S!=null?S:await lt(this.connection,this.blockhashCommitment);if(u.forEach(async(b,I)=>{b.recentBlockhash=F,c[I].length&&b.sign(...c[I])}),$e(u),(v=this.owner)!=null&&v.isKeyPair){if(h){let b=0,I=[];for(let K of u){if(++b,b<=T){I.push("tx skipped");continue}let O=await Kn(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 v;let F=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:i={},lookupTableAddress:r=[],insCountLimit:s=12}=F,u=Le(F,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),c=L(L({},this.cluster==="devnet"?await Sn(this.connection):await Bn(this.connection)),i),l=Array.from(new Set([...this.lookupTableAddress,...r])),m=[];for(let b of l)c[b]===void 0&&m.push(new mt(b));let p=await In({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 lt(this.connection,this.blockhashCommitment),h=this.signers.reduce((b,I)=>_(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&&(It({instructions:K,payer:this.feePayer,lookupTableAddressAccount:c})||It({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&&It({instructions:[...P.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:g})){let R=new St({payerKey:this.feePayer,recentBlockhash:g,instructions:[...P.instructions,...S]}).compileToV0Message(Object.values(c));A.push(new xt(R))}else{let R=new St({payerKey:this.feePayer,recentBlockhash:g,instructions:[...S]}).compileToV0Message(Object.values(c));A.push(new xt(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&&It({instructions:[...P.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:g})){let K=new St({payerKey:this.feePayer,recentBlockhash:g,instructions:[...P.instructions,...S]}).compileToV0Message(Object.values(c));A.push(new xt(K))}else{let K=new St({payerKey:this.feePayer,recentBlockhash:g,instructions:[...S]}).compileToV0Message(Object.values(c));A.push(new xt(K))}T.push(I)}return(v=this.owner)!=null&&v.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,En=Ze=>{tt!==null&&clearInterval(tt),vt!==null&&this.connection.removeSignatureListener(vt);let De=q.findIndex(oi=>oi.txId===Ae);if(De>-1){if(q[De].status==="error"||q[De].status==="success")return;q[De].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 De=await this.connection.getTransaction(Ae,{commitment:"confirmed",maxSupportedTransactionVersion:0});De&&(yt=!0,clearInterval(tt),En({err:((Ze=De.meta)==null?void 0:Ze.err)||null}),console.log("tx status from getTransaction:",Ae))}catch(De){yt=!0,clearInterval(tt),console.error("getTransaction timeout:",De,Ae)}},Jt)),vt=this.connection.onSignature(Ae,Ze=>{if(yt){this.connection.removeSignatureListener(vt);return}yt=!0,En(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 Cn=(...a)=>a.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),ye=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(Cn(e))}logInfo(...e){this.logger.info(Cn(e))}logAndCreateError(...e){let t=Cn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as pm,SystemProgram as ym}from"@solana/web3.js";import Pm from"bn.js";import{createCloseAccountInstruction as Tm,createInitializeAccountInstruction as hm,createTransferInstruction as Im,TOKEN_PROGRAM_ID as Bm}from"@solana/spl-token";import{Keypair as em,PublicKey as tm}from"@solana/web3.js";import im from"bn.js";import{TOKEN_PROGRAM_ID as sm}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 fg,SystemProgram as yg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as gg}from"@solana/spl-token";import{PublicKey as $m}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ed}from"@solana/spl-token";import{PublicKey as M}from"@solana/web3.js";var Lo=new M("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Oo=new M("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),No=new M("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Rn=new M("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),id=new M("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),dr=new M("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Mo=new M("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Fo=new M("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),rd=new M("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),pr=new M("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),vo=new M("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),fr=new M("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),yr=new M("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Vo=new M("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ad=new M("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),br=new M("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),gr=new M("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Pr=new M("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Ar=new M("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),wr=new M("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Ln=new M("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),kr=new M("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),sd=new M("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Tr=new M("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),hr=new M("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Ir=new M("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),ud=new M("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),cd=new M("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),ld=new M("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),md=new M("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),dd=new M("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX"),Kt={IDO_PROGRAM_ID_V1:gr,IDO_PROGRAM_ID_V2:Pr,IDO_PROGRAM_ID_V3:Ar,IDO_PROGRAM_ID_V4:wr};var ze={OPEN_BOOK_PROGRAM:new M("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new M("Ray1111111111111111111111111111111111111111"),AMM_V4:new M("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new M("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new M("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new M("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new M("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new M("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new M("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new M("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new M("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new M("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:M.default,Router:new M("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new M("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new M("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new M("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new M("DRayzbYakXs45ELHkz