@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
1 lines • 73.1 kB
JavaScript
var mo=Object.defineProperty,po=Object.defineProperties;var fo=Object.getOwnPropertyDescriptors;var nt=Object.getOwnPropertySymbols;var an=Object.prototype.hasOwnProperty,sn=Object.prototype.propertyIsEnumerable;var rn=(i,t,n)=>t in i?mo(i,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):i[t]=n,R=(i,t)=>{for(var n in t||(t={}))an.call(t,n)&&rn(i,n,t[n]);if(nt)for(var n of nt(t))sn.call(t,n)&&rn(i,n,t[n]);return i},D=(i,t)=>po(i,fo(t));var ue=(i,t)=>{var n={};for(var r in i)an.call(i,r)&&t.indexOf(r)<0&&(n[r]=i[r]);if(i!=null&&nt)for(var r of nt(i))t.indexOf(r)<0&&sn.call(i,r)&&(n[r]=i[r]);return n};import It from"bn.js";import sR from"bn.js";import tR from"bn.js";import Te from"bn.js";import vC from"decimal.js";import pa from"big.js";import wC from"bn.js";import{get as un,set as yo}from"lodash";var Bt=class{constructor(t){this.logLevel=t.logLevel!==void 0?t.logLevel:0,this.name=t.name}set level(t){this.logLevel=t}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(t){return t<=this.logLevel}error(...t){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...t),this):this}logWithError(...t){let n=t.map(r=>typeof r=="object"?JSON.stringify(r):r).join(", ");throw new Error(n)}warning(...t){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...t),this):this}info(...t){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...t),this):this}debug(...t){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...t),this):this}},cn={},bo={};function _(i){let t=un(cn,i);if(!t){let n=un(bo,i);t=new Bt({name:i,logLevel:n}),yo(cn,i,t)}return t}import{PublicKey as go}from"@solana/web3.js";import{MINT_SIZE as Sa,TOKEN_PROGRAM_ID as xa,getTransferFeeConfig as Ka,unpackMint as Ca}from"@solana/spl-token";var St=_("Raydium_accountInfo_util");async function fe(i,t,n){let{batchRequest:r,commitment:u="confirmed",chunkCount:m=100}=R({batchRequest:!1},n),p=xt(t,m),f=new Array(p.length).fill([]);if(r){let g=p.map(O=>{let K=i._buildArgs([O.map(B=>B.toBase58())],u,"base64");return{methodName:"getMultipleAccounts",args:K}}),S=xt(g,10);f=(await(await Promise.all(S.map(async O=>await i._rpcBatchRequest(O)))).flat()).map(O=>(O.error&&St.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${O.error.message}`),O.result.value.map(K=>{if(K){let{data:B,executable:M,lamports:P,owner:T,rentEpoch:I}=K;return B.length!==2&&B[1]!=="base64"&&St.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(B[0],"base64"),executable:M,lamports:P,owner:new go(T),rentEpoch:I}}return null})))}else try{f=await Promise.all(p.map(g=>i.getMultipleAccountsInfo(g,u)))}catch(g){g instanceof Error&&St.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${g.message}`)}return f.flat()}import De from"bn.js";var ln=9007199254740991;function ne(i){let t=_("Raydium_parseBigNumberish");if(i instanceof De)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new De(i);t.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&t.logWithError(`BigNumberish number underflow: ${i}`),(i>=ln||i<=-ln)&&t.logWithError(`BigNumberish number overflow: ${i}`),new De(String(i))):typeof i=="bigint"?new De(i.toString()):(t.error(`invalid BigNumberish value: ${i}`),new De(0))}import{merge as nK}from"lodash";import Wa from"axios";var mn={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"},Po=D(R({},mn),{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 ls=_("Raydium_Api");import{PublicKey as Oc,SystemProgram as Nc}from"@solana/web3.js";import{AccountLayout as _c,createAssociatedTokenAccountIdempotentInstruction as Ec,TOKEN_PROGRAM_ID as Dc,TOKEN_2022_PROGRAM_ID as Wc}from"@solana/spl-token";import{PublicKey as Ke,sendAndConfirmTransaction as Nt,SystemProgram as Io,Transaction as Ue,TransactionMessage as Ge,VersionedTransaction as ze}from"@solana/web3.js";import Bo from"axios";import{PublicKey as Kt,AddressLookupTableAccount as Se}from"@solana/web3.js";async function Ct({connection:i,address:t,cluster:n="mainnet"}){let r=await fe(i,[...new Set(t.map(m=>m.toString()))].map(m=>new Kt(m))),u={};for(let m=0;m<t.length;m++){let p=r[m],f=t[m];if(!p)continue;let g=new Se({key:f,state:Se.deserialize(p.data)});u[f.toString()]=g,n==="devnet"?Be[f.toString()]=g:Ie[f.toString()]=g}return u}var Ie={},Rt=async i=>{let t="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Ie[t])return Ie;let n=new Kt(t),r=await i.getAccountInfo(n);return r&&(Ie[t]=new Se({key:n,state:Se.deserialize(r.data)})),Ie},Be={},Lt=async i=>{let t="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Be[t])return Be;let n=new Kt(t),r=await i.getAccountInfo(n);return r&&(Be[t]=new Se({key:n,state:Se.deserialize(r.data)})),Be};var Z={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 dn,Keypair as fn,PublicKey as Ao,Transaction as yn,TransactionMessage as wo,VersionedTransaction as bn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ko}from"@solana/spl-token";var pn=_("Raydium_txUtil"),gn=1644;function ot(i){let t=[],n=[];return i.microLamports&&(t.push(dn.setComputeUnitPrice({microLamports:i.microLamports})),n.push(Z.SetComputeUnitPrice)),i.units&&(t.push(dn.setComputeUnitLimit({units:i.units})),n.push(Z.SetComputeUnitLimit)),{instructions:t,instructionTypes:n}}async function xe(i,t){var r,u;let n=t!=null?t:"confirmed";return(u=await((r=i.getLatestBlockhash)==null?void 0:r.call(i,{commitment:n})))==null?void 0:u.blockhash}async function it(i,t){return i.getSignatureStatuses([t]),new Promise((n,r)=>{let u=setTimeout(r,6e4);i.onSignature(t,m=>{if(clearTimeout(u),!m.err){n("");return}r(Object.assign(m.err,{txId:t}))},"confirmed")})}function Ot(i,t){i.length<1&&pn.logWithError(`no instructions provided: ${i.toString()}`),t.length<1&&pn.logWithError(`no signers provided:, ${t.toString()}`);let n=new yn;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=t[0],n.add(...i);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<gn}catch{return!1}}function ce(i,t){let[n,r]=Ao.findProgramAddressSync(i,t);return{publicKey:n,nonce:r}}function We({instructions:i,payer:t,signers:n}){return Ot(i,[t,...n])}function qe({instructions:i,payer:t,lookupTableAddressAccount:n,recentBlockhash:r=fn.generate().publicKey.toString()}){let m=new wo({payerKey:t,recentBlockhash:r,instructions:i}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new bn(m).serialize()).toString("base64").length<gn}catch{return!1}}var To=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i),ho=i=>{let t=i.serialize({requireAllSignatures:!1,verifySignatures:!1});i instanceof bn&&(t=To(t));try{return t instanceof Buffer?t.toString("base64"):Buffer.from(t).toString("base64")}catch{return t.toString("base64")}};function Pe(i){let t=[];return i.forEach(n=>{n instanceof yn&&(n.recentBlockhash||(n.recentBlockhash=ko.toBase58()),n.feePayer||(n.feePayer=fn.generate().publicKey)),t.push(ho(n))}),console.log("simulate tx string:",t),t}var rt=2e3,at=class{constructor(t){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=t.connection,this.feePayer=t.feePayer,this.signAllTransactions=t.signAllTransactions,this.owner=t.owner,this.cluster=t.cluster,this.blockhashCommitment=t.blockhashCommitment,this.loopMultiTxStatus=!!t.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 r;let t=(await Bo.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:n}=(r=t==null?void 0:t[15])!=null?r:{};if(!!n)return{units:6e5,microLamports:Math.min(Math.ceil(n*1e6/6e5),25e3)}}addCustomComputeBudget(t){if(t){let{instructions:n,instructionTypes:r}=ot(t);return this.instructions.unshift(...n),this.instructionTypes.unshift(...r),!0}return!1}addTipInstruction(t){var n;return t?(this.endInstructions.push(Io.transfer({fromPubkey:(n=t.feePayer)!=null?n:this.feePayer,toPubkey:new Ke(t.address),lamports:BigInt(t.amount.toString())})),this.endInstructionTypes.push(Z.TransferTip),!0):!1}async calComputeBudget({config:t,defaultIns:n}){try{let r=t||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(r))return;n&&this.instructions.unshift(...n)}catch{n&&this.instructions.unshift(...n)}}addInstruction({instructions:t=[],endInstructions:n=[],signers:r=[],instructionTypes:u=[],endInstructionTypes:m=[],lookupTableAddress:p=[]}){return this.instructions.push(...t),this.endInstructions.push(...n),this.signers.push(...r),this.instructionTypes.push(...u),this.endInstructionTypes.push(...m),this.lookupTableAddress.push(...p.filter(f=>f!==Ke.default.toString())),this}async versionBuild({txVersion:t,extInfo:n,lookupTableAddress:r}){return t===0?await this.buildV0(D(R({},n||{}),{lookupTableAddress:r})):this.build(n)}build(t){var r;let n=new Ue;return this.allInstructions.length&&n.add(...this.allInstructions),n.feePayer=this.feePayer,((r=this.owner)==null?void 0:r.signer)&&!this.signers.some(u=>u.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:n,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async u=>{var b;let{recentBlockHash:m,skipPreflight:p=!0,sendAndConfirm:f,notSendToRpc:g}=u||{},S=m!=null?m:await xe(this.connection,this.blockhashCommitment);if(n.recentBlockhash=S,this.signers.length&&n.sign(...this.signers),Pe([n]),(b=this.owner)!=null&&b.isKeyPair)return{txId:f?await Nt(this.connection,n,this.signers.find(K=>K.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p}):await this.connection.sendRawTransaction(n.serialize(),{skipPreflight:p}),signedTx:n};if(this.signAllTransactions){let O=await this.signAllTransactions([n]);if(this.signers.length)for(let K of O)try{K.sign(...this.signers)}catch{}return{txId:g?"":await this.connection.sendRawTransaction(O[0].serialize(),{skipPreflight:p}),signedTx:O[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:t||{}}}buildMultiTx(t){var S;let{extraPreBuildData:n=[],extInfo:r}=t,{transaction:u}=this.build(r),m=n.filter(b=>b.transaction.instructions.length>0),p=[u,...m.map(b=>b.transaction)],f=[this.signers,...m.map(b=>b.signers)],g=[...this.instructionTypes,...m.map(b=>b.instructionTypes).flat()];return(S=this.owner)!=null&&S.signer&&f.forEach(b=>{b.some(O=>O.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:p,signers:f,instructionTypes:g,execute:async b=>{var I;let{sequentially:O,onTxUpdate:K,skipTxCount:B=0,recentBlockHash:M,skipPreflight:P=!0}=b||{},T=M!=null?M:await xe(this.connection,this.blockhashCommitment);if((I=this.owner)!=null&&I.isKeyPair){if(O){let h=[],F=0;for(let v of p){if(++F,F<=B)continue;let y=await Nt(this.connection,v,this.signers.find(A=>A.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:P});h.push(y)}return{txIds:h,signedTxs:p}}return{txIds:await await Promise.all(p.map(async h=>(h.recentBlockhash=T,await this.connection.sendRawTransaction(h.serialize(),{skipPreflight:P})))),signedTxs:p}}if(this.signAllTransactions){let h=p.map((v,y)=>(v.recentBlockhash=T,f[y].length&&v.sign(...f[y]),v));Pe(h);let F=await this.signAllTransactions(h);if(O){let v=0,y=[],A=async()=>{if(!F[v])return;let w=await this.connection.sendRawTransaction(F[v].serialize(),{skipPreflight:P});y.push({txId:w,status:"sent",signedTx:F[v]}),K==null||K([...y]),v++;let x=!1,C=null,V=null,ie=q=>{C!==null&&clearInterval(C),V!==null&&this.connection.removeSignatureListener(V);let W=y.findIndex($=>$.txId===w);if(W>-1){if(y[W].status==="error"||y[W].status==="success")return;y[W].status=q.err?"error":"success"}K==null||K([...y]),q.err||A()};this.loopMultiTxStatus&&(C=setInterval(async()=>{var q;if(x){clearInterval(C);return}try{let W=await this.connection.getTransaction(w,{commitment:"confirmed",maxSupportedTransactionVersion:0});W&&(x=!0,clearInterval(C),ie({err:((q=W.meta)==null?void 0:q.err)||null}),console.log("tx status from getTransaction:",w))}catch(W){x=!0,clearInterval(C),console.error("getTransaction timeout:",W,w)}},rt)),V=this.connection.onSignature(w,q=>{if(x){this.connection.removeSignatureListener(V);return}x=!0,ie(q)},"confirmed"),this.connection.getSignatureStatus(w)};return await A(),{txIds:y.map(w=>w.txId),signedTxs:F}}else{let v=[];for(let y=0;y<F.length;y+=1){let A=await this.connection.sendRawTransaction(F[y].serialize(),{skipPreflight:P});v.push(A)}return{txIds:v,signedTxs:F}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async versionMultiBuild({extraPreBuildData:t,txVersion:n,extInfo:r}){return n===0?await this.buildV0MultiTx({extraPreBuildData:t,buildProps:r||{}}):this.buildMultiTx({extraPreBuildData:t,extInfo:r})}async buildV0(t){var P;let M=t||{},{lookupTableCache:n={},lookupTableAddress:r=[],forerunCreate:u,recentBlockhash:m}=M,p=ue(M,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),f=R(R({},this.cluster==="devnet"?await Lt(this.connection):await Rt(this.connection)),n),g=Array.from(new Set([...r,...this.lookupTableAddress])),S=[];for(let T of g)f[T]===void 0&&S.push(new Ke(T));let b=await Ct({connection:this.connection,address:S});for(let[T,I]of Object.entries(b))f[T]=I;let O=u?Ke.default.toBase58():m!=null?m:await xe(this.connection,this.blockhashCommitment),K=new Ge({payerKey:this.feePayer,recentBlockhash:O,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(f));((P=this.owner)==null?void 0:P.signer)&&!this.signers.some(T=>T.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let B=new ze(K);return B.sign(this.signers),{builder:this,transaction:B,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async T=>{var v;let{skipPreflight:I=!0,sendAndConfirm:h,notSendToRpc:F}=T||{};if(Pe([B]),(v=this.owner)!=null&&v.isKeyPair){let y=await this.connection.sendTransaction(B,{skipPreflight:I});return h&&await it(this.connection,y),{txId:y,signedTx:B}}if(this.signAllTransactions){let y=await this.signAllTransactions([B]);if(this.signers.length)for(let A of y)try{A.sign(this.signers)}catch{}return{txId:F?"":await this.connection.sendTransaction(y[0],{skipPreflight:I}),signedTx:y[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:p||{}}}async buildV0MultiTx(t){var S;let{extraPreBuildData:n=[],buildProps:r}=t,{transaction:u}=await this.buildV0(r),m=n.filter(b=>b.builder.instructions.length>0),p=[u,...m.map(b=>b.transaction)],f=[this.signers,...m.map(b=>b.signers)],g=[...this.instructionTypes,...m.map(b=>b.instructionTypes).flat()];return(S=this.owner)!=null&&S.signer&&f.forEach(b=>{b.some(O=>O.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),p.forEach(async(b,O)=>{b.sign(f[O])}),{builder:this,transactions:p,signers:f,instructionTypes:g,buildProps:r,execute:async b=>{var P;let{sequentially:O,onTxUpdate:K,recentBlockHash:B,skipPreflight:M=!0}=b||{};if(B&&p.forEach(T=>T.message.recentBlockhash=B),Pe(p),(P=this.owner)!=null&&P.isKeyPair){if(O){let T=[];for(let I of p){let h=await this.connection.sendTransaction(I,{skipPreflight:M});await it(this.connection,h),T.push(h)}return{txIds:T,signedTxs:p}}return{txIds:await Promise.all(p.map(async T=>await this.connection.sendTransaction(T,{skipPreflight:M}))),signedTxs:p}}if(this.signAllTransactions){let T=await this.signAllTransactions(p);if(O){let I=0,h=[],F=async()=>{if(!T[I])return;let v=await this.connection.sendTransaction(T[I],{skipPreflight:M});h.push({txId:v,status:"sent",signedTx:T[I]}),K==null||K([...h]),I++;let y=!1,A=null,w=null,x=C=>{A!==null&&clearInterval(A),w!==null&&this.connection.removeSignatureListener(w);let V=h.findIndex(ie=>ie.txId===v);if(V>-1){if(h[V].status==="error"||h[V].status==="success")return;h[V].status=C.err?"error":"success"}K==null||K([...h]),C.err||F()};this.loopMultiTxStatus&&(A=setInterval(async()=>{var C;if(y){clearInterval(A);return}try{let V=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(y=!0,clearInterval(A),x({err:((C=V.meta)==null?void 0:C.err)||null}),console.log("tx status from getTransaction:",v))}catch(V){y=!0,clearInterval(A),console.error("getTransaction timeout:",V,v)}},rt)),w=this.connection.onSignature(v,C=>{if(y){this.connection.removeSignatureListener(w);return}y=!0,x(C)},"confirmed"),this.connection.getSignatureStatus(v)};return F(),{txIds:[],signedTxs:T}}else{let I=[];for(let h=0;h<T.length;h+=1){let F=await this.connection.sendTransaction(T[h],{skipPreflight:M});I.push(F)}return{txIds:I,signedTxs:T}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async sizeCheckBuild(t){var K;let O=t||{},{splitIns:n=[],computeBudgetConfig:r}=O,u=ue(O,["splitIns","computeBudgetConfig"]),m=r?ot(r):{instructions:[],instructionTypes:[]},p=this.signers.reduce((B,M)=>D(R({},B),{[M.publicKey.toBase58()]:M}),{}),f=[],g=[],S=[],b=0;if(this.allInstructions.forEach(B=>{let M=[...S,B],P=r?[...m.instructions,...M]:M,I=[...new Set(M.map(h=>h.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat()).values()].map(h=>new Ke(h));if(B!==n[b]&&S.length<12&&(We({instructions:P,payer:this.feePayer,signers:I})||We({instructions:M,payer:this.feePayer,signers:I})))S.push(B);else{if(S.length===0)throw Error("item ins too big");b+=B===n[b]?1:0,We({instructions:r?[...m.instructions,...S]:[...S],payer:this.feePayer,signers:I})?f.push(new Ue().add(...m.instructions,...S)):f.push(new Ue().add(...S)),g.push(Array.from(new Set(S.map(h=>h.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat())).map(h=>p[h]).filter(h=>h!==void 0)),S=[B]}}),S.length>0){let M=[...new Set(S.map(P=>P.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(P=>p[P]).filter(P=>P!==void 0);We({instructions:r?[...m.instructions,...S]:[...S],payer:this.feePayer,signers:M.map(P=>P.publicKey)})?f.push(new Ue().add(...m.instructions,...S)):f.push(new Ue().add(...S)),g.push(M)}return f.forEach(B=>B.feePayer=this.feePayer),(K=this.owner)!=null&&K.signer&&g.forEach(B=>{B.some(M=>M.publicKey.equals(this.owner.publicKey))||B.push(this.owner.signer)}),{builder:this,transactions:f,signers:g,instructionTypes:this.instructionTypes,execute:async B=>{var v;let{sequentially:M,onTxUpdate:P,skipTxCount:T=0,recentBlockHash:I,skipPreflight:h=!0}=B||{},F=I!=null?I:await xe(this.connection,this.blockhashCommitment);if(f.forEach(async(y,A)=>{y.recentBlockhash=F,g[A].length&&y.sign(...g[A])}),Pe(f),(v=this.owner)!=null&&v.isKeyPair){if(M){let y=0,A=[];for(let w of f){if(++y,y<=T){A.push("tx skipped");continue}let x=await Nt(this.connection,w,this.signers.find(C=>C.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:h});A.push(x)}return{txIds:A,signedTxs:f}}return{txIds:await Promise.all(f.map(async y=>await this.connection.sendRawTransaction(y.serialize(),{skipPreflight:h}))),signedTxs:f}}if(this.signAllTransactions){let y=await this.signAllTransactions(f.slice(T,f.length)),A=[...f.slice(0,T),...y];if(M){let w=0,x=[],C=async()=>{if(!A[w])return;w<T&&(x.push({txId:"",status:"success",signedTx:A[w]}),P==null||P([...x]),w++,C());let V=await this.connection.sendRawTransaction(A[w].serialize(),{skipPreflight:h});x.push({txId:V,status:"sent",signedTx:A[w]}),P==null||P([...x]),w++;let ie=!1,q=null,W=null,$=G=>{q!==null&&clearInterval(q),W!==null&&this.connection.removeSignatureListener(W);let te=x.findIndex(de=>de.txId===V);if(te>-1){if(x[te].status==="error"||x[te].status==="success")return;x[te].status=G.err?"error":"success"}P==null||P([...x]),G.err||C()};this.loopMultiTxStatus&&(q=setInterval(async()=>{var G;if(ie){clearInterval(q);return}try{let te=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});te&&(ie=!0,clearInterval(q),$({err:((G=te.meta)==null?void 0:G.err)||null}),console.log("tx status from getTransaction:",V))}catch(te){ie=!0,clearInterval(q),console.error("getTransaction timeout:",te,V)}},rt)),W=this.connection.onSignature(V,G=>{if(ie){this.connection.removeSignatureListener(W);return}ie=!0,$(G)},"confirmed"),this.connection.getSignatureStatus(V)};return await C(),{txIds:x.map(V=>V.txId),signedTxs:A}}else{let w=[];for(let x=0;x<A.length;x+=1){let C=await this.connection.sendRawTransaction(A[x].serialize(),{skipPreflight:h});w.push(C)}return{txIds:w,signedTxs:A}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:u||{}}}async sizeCheckBuildV0(t){var v;let F=t||{},{computeBudgetConfig:n,splitIns:r=[],lookupTableCache:u={},lookupTableAddress:m=[],insCountLimit:p=12}=F,f=ue(F,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),g=R(R({},this.cluster==="devnet"?await Lt(this.connection):await Rt(this.connection)),u),S=Array.from(new Set([...this.lookupTableAddress,...m])),b=[];for(let y of S)g[y]===void 0&&b.push(new Ke(y));let O=await Ct({connection:this.connection,address:b});for(let[y,A]of Object.entries(O))g[y]=A;let K=n?ot(n):{instructions:[],instructionTypes:[]},B=await xe(this.connection,this.blockhashCommitment),M=this.signers.reduce((y,A)=>D(R({},y),{[A.publicKey.toBase58()]:A}),{}),P=[],T=[],I=[],h=0;if(this.allInstructions.forEach(y=>{let A=[...I,y],w=n?[...K.instructions,...A]:A;if(y!==r[h]&&I.length<p&&(qe({instructions:w,payer:this.feePayer,lookupTableAddressAccount:g})||qe({instructions:A,payer:this.feePayer,lookupTableAddressAccount:g})))I.push(y);else{if(I.length===0)throw Error("item ins too big");h+=y===r[h]?1:0;let x={};for(let C of[...new Set(S)])g[C]!==void 0&&(x[C]=g[C]);if(n&&qe({instructions:[...K.instructions,...I],payer:this.feePayer,lookupTableAddressAccount:g,recentBlockhash:B})){let C=new Ge({payerKey:this.feePayer,recentBlockhash:B,instructions:[...K.instructions,...I]}).compileToV0Message(Object.values(g));P.push(new ze(C))}else{let C=new Ge({payerKey:this.feePayer,recentBlockhash:B,instructions:[...I]}).compileToV0Message(Object.values(g));P.push(new ze(C))}T.push(Array.from(new Set(I.map(C=>C.keys.filter(V=>V.isSigner).map(V=>V.pubkey.toString())).flat())).map(C=>M[C]).filter(C=>C!==void 0)),I=[y]}}),I.length>0){let A=[...new Set(I.map(w=>w.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat()).values()].map(w=>M[w]).filter(w=>w!==void 0);if(n&&qe({instructions:[...K.instructions,...I],payer:this.feePayer,lookupTableAddressAccount:g,recentBlockhash:B})){let w=new Ge({payerKey:this.feePayer,recentBlockhash:B,instructions:[...K.instructions,...I]}).compileToV0Message(Object.values(g));P.push(new ze(w))}else{let w=new Ge({payerKey:this.feePayer,recentBlockhash:B,instructions:[...I]}).compileToV0Message(Object.values(g));P.push(new ze(w))}T.push(A)}return(v=this.owner)!=null&&v.signer&&T.forEach(y=>{y.some(A=>A.publicKey.equals(this.owner.publicKey))||y.push(this.owner.signer)}),P.forEach((y,A)=>{y.sign(T[A])}),{builder:this,transactions:P,buildProps:t,signers:T,instructionTypes:this.instructionTypes,execute:async y=>{var ie;let{sequentially:A,onTxUpdate:w,skipTxCount:x=0,recentBlockHash:C,skipPreflight:V=!0}=y||{};if(P.map(async(q,W)=>{T[W].length&&q.sign(T[W]),C&&(q.message.recentBlockhash=C)}),Pe(P),(ie=this.owner)!=null&&ie.isKeyPair){if(A){let q=0,W=[];for(let $ of P){if(++q,q<=x){console.log("skip tx: ",q),W.push("tx skipped");continue}let G=await this.connection.sendTransaction($,{skipPreflight:V});await it(this.connection,G),W.push(G)}return{txIds:W,signedTxs:P}}return{txIds:await Promise.all(P.map(async q=>await this.connection.sendTransaction(q,{skipPreflight:V}))),signedTxs:P}}if(this.signAllTransactions){let q=await this.signAllTransactions(P.slice(x,P.length)),W=[...P.slice(0,x),...q];if(A){let $=0,G=[],te=async()=>{if(!W[$])return;if($<x){G.push({txId:"",status:"success",signedTx:W[$]}),w==null||w([...G]),$++,te();return}let de=await this.connection.sendTransaction(W[$],{skipPreflight:V});G.push({txId:de,status:"sent",signedTx:W[$]}),w==null||w([...G]),$++;let _e=!1,he=null,tt=null,on=ge=>{he!==null&&clearInterval(he),tt!==null&&this.connection.removeSignatureListener(tt);let pe=G.findIndex(lo=>lo.txId===de);if(pe>-1){if(G[pe].status==="error"||G[pe].status==="success")return;G[pe].status=ge.err?"error":"success"}w==null||w([...G]),ge.err||te()};this.loopMultiTxStatus&&(he=setInterval(async()=>{var ge;if(_e){clearInterval(he);return}try{let pe=await this.connection.getTransaction(de,{commitment:"confirmed",maxSupportedTransactionVersion:0});pe&&(_e=!0,clearInterval(he),on({err:((ge=pe.meta)==null?void 0:ge.err)||null}),console.log("tx status from getTransaction:",de))}catch(pe){_e=!0,clearInterval(he),console.error("getTransaction timeout:",pe,de)}},rt)),tt=this.connection.onSignature(de,ge=>{if(_e){this.connection.removeSignatureListener(tt);return}_e=!0,on(ge)},"confirmed"),this.connection.getSignatureStatus(de)};return te(),{txIds:[],signedTxs:W}}else{let $=[];for(let G=0;G<W.length;G+=1){let te=await this.connection.sendTransaction(W[G],{skipPreflight:V});$.push(te)}return{txIds:$,signedTxs:W}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:f||{}}}};var Mt=(...i)=>i.map(t=>{try{return typeof t=="object"?JSON.stringify(t):t}catch{return t}}).join(", "),oe=class{constructor({scope:t,moduleName:n}){this.disabled=!1;this.scope=t,this.logger=_(n)}createTxBuilder(t){return this.scope.checkOwner(),new at({connection:this.scope.connection,feePayer:t||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(...t){this.logger.debug(Mt(t))}logInfo(...t){this.logger.info(Mt(t))}logAndCreateError(...t){let n=Mt(t);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as cc,SystemProgram as mc}from"@solana/web3.js";import fc from"bn.js";import{createCloseAccountInstruction as Pc,createInitializeAccountInstruction as Ac,createTransferInstruction as wc,TOKEN_PROGRAM_ID as kc}from"@solana/spl-token";import{PublicKey as So}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Pn}from"@solana/spl-token";var st={chainId:101,address:So.default.toBase58(),programId:Pn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},le={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Pn.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{Keypair as Hu,PublicKey as ju}from"@solana/web3.js";import ec from"bn.js";import{TOKEN_PROGRAM_ID as oc}from"@solana/spl-token";import{PublicKey as _o}from"@solana/web3.js";import hn,{isBN as In}from"bn.js";import{bits as xo,BitStructure as tu,blob as Ko,Blob as nu,cstr as ou,f32 as iu,f32be as ru,f64 as au,f64be as su,greedy as uu,Layout as Co,ns64 as cu,ns64be as lu,nu64 as mu,nu64be as du,offset as Ro,s16 as pu,s16be as fu,s24 as yu,s24be as bu,s32 as Lo,s32be as gu,s40 as Pu,s40be as Au,s48 as wu,s48be as ku,s8 as Tu,seq as Oo,struct as hu,Structure as No,u16 as Mo,u16be as Iu,u24 as Bu,u24be as Su,u32 as Fo,u32be as xu,u40 as Ku,u40be as Cu,u48 as Ru,u48be as Lu,u8 as vo,UInt as Vo,union as Ou,Union as Nu,unionLayoutDiscriminator as Mu,utf8 as Fu}from"@solana/buffer-layout";var ut=Co,An=No;var Ft=Vo;var wn=vo,Y=Mo;var ct=Fo;var ae=Lo;var kn=Oo;var N=Ko;var vt=xo,Tn=Ro;var we=class extends ut{constructor(n,r,u){super(n,u);this.blob=N(n),this.signed=r}decode(n,r=0){let u=new hn(this.blob.decode(n,r),10,"le");return this.signed?u.fromTwos(this.span*8).clone():u}encode(n,r,u=0){return typeof n=="number"&&(n=new hn(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),r,u)}},lt=class extends ut{constructor(n){super(8,n);this._lower=vt(ct(),!1),this._upper=vt(ct(),!1)}addBoolean(n){this._lower.fields.length<32?this._lower.addBoolean(n):this._upper.addBoolean(n)}decode(n,r=0){let u=this._lower.decode(n,r),m=this._upper.decode(n,r+this._lower.span);return R(R({},u),m)}encode(n,r,u=0){return this._lower.encode(n,r,u)+this._upper.encode(n,r,u+this._lower.span)}};function c(i){return new Ft(1,i)}function z(i){return new Ft(4,i)}function e(i){return new we(8,!1,i)}function L(i){return new we(16,!1,i)}function Bn(i){return new we(1,!0,i)}function Ce(i){return new we(8,!0,i)}function Sn(i){return new we(16,!0,i)}var Xe=class extends ut{constructor(n,r,u,m){super(n.span,m);this.layout=n,this.decoder=r,this.encoder=u}decode(n,r){return this.decoder(this.layout.decode(n,r))}encode(n,r,u){return this.layout.encode(this.encoder(n),r,u)}getSpan(n,r){return this.layout.getSpan(n,r)}};function o(i){return new Xe(N(32),t=>new _o(t),t=>t.toBuffer(),i)}function re(i){return new Xe(wn(),Eo,Do,i)}function Eo(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function Do(i){return i?1:0}function xn(i,t){let n=ct("length"),r=l([n,d(i,Tn(n,-n.span),"values")]);return new Xe(r,({values:u})=>u,u=>({values:u}),t)}var Vt=class extends An{decode(t,n){return super.decode(t,n)}};function l(i,t,n){return new Vt(i,t,n)}function d(i,t,n){let r,u=typeof t=="number"?t:In(t)?t.toNumber():new Proxy(t,{get(m,p){if(!r){let f=Reflect.get(m,"count");r=In(f)?f.toNumber():f,Reflect.set(m,"count",r)}return Reflect.get(m,p)},set(m,p,f){return p==="count"&&(r=f),Reflect.set(m,p,f)}});return kn(i,u,n)}var mt=l([o("mint"),o("owner"),e("amount"),z("delegateOption"),o("delegate"),c("state"),z("isNativeOption"),e("isNative"),e("delegatedAmount"),z("closeAuthorityOption"),o("closeAuthority")]);import{PublicKey as Bg,SystemProgram as Sg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Kg}from"@solana/spl-token";import{PublicKey as Qc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Hc}from"@solana/spl-token";import{PublicKey as k}from"@solana/web3.js";var Cn=new k("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Rn=new k("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Ln=new k("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),_t=new k("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),el=new k("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),qo=new k("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),On=new k("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Nn=new k("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),tl=new k("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Uo=new k("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Mn=new k("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Go=new k("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),zo=new k("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Fn=new k("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),nl=new k("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Xo=new k("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Et=new k("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Yo=new k("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),ol=new k("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Qo=new k("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Zo=new k("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Ho=new k("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),il=new k("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),rl=new k("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),al=new k("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),sl=new k("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),ul=new k("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var be={OPEN_BOOK_PROGRAM:new k("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new k("Ray1111111111111111111111111111111111111111"),AMM_V4:new k("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new k("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new k("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new k("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new k("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new k("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new k("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new k("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new k("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new k("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:k.default,Router:new k("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new k("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new k("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new k("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new k("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new k("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new k("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new k("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new k("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new k("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new k("Ray1111111111111111111111111111111111111111")};import{PublicKey as X,SystemProgram as vn,SYSVAR_RENT_PUBKEY as jo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as $o}from"@solana/spl-token";function Re({pubkey:i,isSigner:t=!1,isWritable:n=!0}){return{pubkey:i,isWritable:n,isSigner:t}}var Jo=[Re({pubkey:$o,isWritable:!1}),Re({pubkey:vn.programId,isWritable:!1}),Re({pubkey:jo,isWritable:!1})];function Vn({publicKey:i,transformSol:t}){let n=_n(i.toString());if(n instanceof X)return t&&n.equals(ke)?ye:n;if(t&&n.toString()===ke.toBase58())return ye;if(typeof n=="string"){if(n===X.default.toBase58())return X.default;try{return new X(n)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function _n(i){try{return new X(i)}catch{return i}}var Dt=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ye=new X("SysvarRent111111111111111111111111111111111"),pl=new X("SysvarC1ock11111111111111111111111111111111"),pt=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),ei=new X("Sysvar1nstructions1111111111111111111111111"),ti=vn.programId,fl=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),yl=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),bl=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),gl=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Pl=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Al=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),wl=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),kl=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Tl=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),hl=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Il=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ye=new X("So11111111111111111111111111111111111111112"),ke=X.default;import _g from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as oy,TOKEN_2022_PROGRAM_ID as iy,TOKEN_PROGRAM_ID as ry}from"@solana/spl-token";import{PublicKey as sy}from"@solana/web3.js";import cy from"bn.js";import my from"decimal.js";import{TOKEN_PROGRAM_ID as pm}from"@solana/spl-token";import{PublicKey as gm}from"@solana/web3.js";import{PublicKey as Wt}from"@solana/web3.js";var qt=class{constructor({mint:t,decimals:n,symbol:r,name:u,skipMint:m=!1,isToken2022:p=!1}){if(t===ke.toBase58()||t instanceof Wt&&ke.equals(t)){this.decimals=le.decimals,this.symbol=le.symbol,this.name=le.name,this.mint=new Wt(le.address),this.isToken2022=!1;return}this.decimals=n,this.symbol=r||t.toString().substring(0,6),this.name=u||t.toString().substring(0,6),this.mint=m?Wt.default:Vn({publicKey:t}),this.isToken2022=p}equals(t){return this===t?!0:this.mint.equals(t.mint)}},J=qt;J.WSOL=new qt(D(R({},le),{mint:le.address}));var Ut=class{constructor({decimals:t,symbol:n="UNKNOWN",name:r="UNKNOWN"}){this.decimals=t,this.symbol=n,this.name=r}equals(t){return this===t}},ft=Ut;ft.SOL=new Ut(st);import ni from"toformat";var oi=ni,Qe=oi;import bt from"big.js";import ri from"bn.js";import ai from"decimal.js-light";var yt=_("module/fraction"),Gt=Qe(bt),Ze=Qe(ai),si={[0]:Ze.ROUND_DOWN,[1]:Ze.ROUND_HALF_UP,[2]:Ze.ROUND_UP},ui={[0]:bt.roundDown,[1]:bt.roundHalfUp,[2]:bt.roundUp},U=class{constructor(t,n=new ri(1)){this.numerator=ne(t),this.denominator=ne(n)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new U(this.denominator,this.numerator)}add(t){let n=t instanceof U?t:new U(ne(t));return this.denominator.eq(n.denominator)?new U(this.numerator.add(n.numerator),this.denominator):new U(this.numerator.mul(n.denominator).add(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}sub(t){let n=t instanceof U?t:new U(ne(t));return this.denominator.eq(n.denominator)?new U(this.numerator.sub(n.numerator),this.denominator):new U(this.numerator.mul(n.denominator).sub(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}mul(t){let n=t instanceof U?t:new U(ne(t));return new U(this.numerator.mul(n.numerator),this.denominator.mul(n.denominator))}div(t){let n=t instanceof U?t:new U(ne(t));return new U(this.numerator.mul(n.denominator),this.denominator.mul(n.numerator))}toSignificant(t,n={groupSeparator:""},r=1){Number.isInteger(t)||yt.logWithError(`${t} is not an integer.`),t<=0&&yt.logWithError(`${t} is not positive.`),Ze.set({precision:t+1,rounding:si[r]});let u=new Ze(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(t);return u.toFormat(u.decimalPlaces(),n)}toFixed(t,n={groupSeparator:""},r=1){return Number.isInteger(t)||yt.logWithError(`${t} is not an integer.`),t<0&&yt.logWithError(`${t} is negative.`),Gt.DP=t,Gt.RM=ui[r]||1,new Gt(this.numerator.toString()).div(this.denominator.toString()).toFormat(t,n)}isZero(){return this.numerator.isZero()}};import ci from"bn.js";var Xl=new U(new ci(100));var $l=_("Raydium_price");var li=l([z("mintAuthorityOption"),o("mintAuthority"),e("supply"),c("decimals"),c("isInitialized"),z("freezeAuthorityOption"),o("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as Bf,TOKEN_2022_PROGRAM_ID as Sf,TOKEN_PROGRAM_ID as xf}from"@solana/spl-token";import{Keypair as Rf,PublicKey as Lf,SystemProgram as Nf,TransactionInstruction as Mf}from"@solana/web3.js";import vf from"bn.js";import E from"bn.js";var Oe=new E(1).shln(64);var mi=new E(1).shln(128),zt=new E(1).shln(64).subn(1),di=new E(1).shln(128).subn(1);var Ne=new E("4295048016"),Me=new E("79226673521066979257578248091"),pi=new E("59543866431248"),fi=new E("184467440737095516"),yi=new E("15793534762490258745");var Xt=60,Cm=new E("18446743708227953217"),bi=[{bit:0,factor:new E("fffcb933bd6fb800",16)},{bit:1,factor:new E("fff97272373d4000",16)},{bit:2,factor:new E("fff2e50f5f657000",16)},{bit:3,factor:new E("ffe5caca7e10f000",16)},{bit:4,factor:new E("ffcb9843d60f7000",16)},{bit:5,factor:new E("ff973b41fa98e800",16)},{bit:6,factor:new E("ff2ea16466c9b000",16)},{bit:7,factor:new E("fe5dee046a9a3800",16)},{bit:8,factor:new E("fcbe86c7900bb000",16)},{bit:9,factor:new E("f987a7253ac65800",16)},{bit:10,factor:new E("f3392b0822bb6000",16)},{bit:11,factor:new E("e7159475a2caf000",16)},{bit:12,factor:new E("d097f3bdfd2f2000",16)},{bit:13,factor:new E("a9f746462d9f8000",16)},{bit:14,factor:new E("70d869a156f31c00",16)},{bit:15,factor:new E("31be135f97ed3200",16)},{bit:16,factor:new E("9aa508b5b85a500",16)},{bit:17,factor:new E("5d6af8dedc582c",16)},{bit:18,factor:new E("2216e584f5fa",16)}];var He=3,En=100;var Dn=10,Wn=100,gt=14;var H=new E(0),Fe=new E(1),Rm=new E(-1);var Lm=new E("18446744073700000000");var gi=l([N(8),c("bump"),Y("index"),o("owner"),z("protocolFeeRate"),z("tradeFeeRate"),Y("tickSpacing"),z("fundFeeRate"),d(z(),1),o("fundOwner"),d(e(),3)]),Pi=l([z("blockTimestamp"),Ce("tickCumulative"),d(e(),4)]),qn=l([N(8),re("initialized"),e("recentEpoch"),Y("observationIndex"),o("poolId"),d(Pi,En,"observations"),d(e(),4)]),Ai=l([Y("filterPeriod"),Y("decayPeriod"),Y("reductionFactor"),z("dynamicFeeControl"),z("maxVolatilityAccumulator"),ae("tickSpacingIndexReference"),z("volatilityReference"),z("volatilityAccumulator"),e("lastUpdateTimestamp"),d(c(),46)]),wi=l([c("state"),e("openTime"),e("endTime"),e("lastUpdateTime"),L("emissionsPerSecondX64"),e("totalEmissioned"),e("claimed"),o("mint"),o("vault"),o("creator"),L("growthGlobalX64")]),Yt=l([N(8),c("bump"),o("configId"),o("creator"),o("mintA"),o("mintB"),o("vaultA"),o("vaultB"),o("observationId"),c("mintDecimalsA"),c("mintDecimalsB"),Y("tickSpacing"),L("liquidity"),L("sqrtPriceX64"),ae("tickCurrent"),z(),L("feeGrowthGlobalX64A"),L("feeGrowthGlobalX64B"),e("protocolFeesTokenA"),e("protocolFeesTokenB"),d(L(),4),c("status"),c("feeOn"),N(6),d(wi,He,"rewardInfos"),N(8*16,"tickArrayBitmap"),d(e(),4),e("fundFeesTokenA"),e("fundFeesTokenB"),e("startTime"),e("recentEpoch"),Ai.replicate("dynamicFeeInfo"),d(e(),46)]),ki=l([L("growthInsideLastX64"),e("rewardAmountOwed")]),Ti=l([N(8),c("bump"),o("nftMint"),o("poolId"),ae("tickLower"),ae("tickUpper"),L("liquidity"),L("feeGrowthInsideLastX64A"),L("feeGrowthInsideLastX64B"),e("tokenFeesOwedA"),e("tokenFeesOwedB"),d(ki,He,"rewardInfos"),e("recentEpoch"),d(e(),7)]),Fm=l([N(8),c("bump"),o("poolId"),ae("tickLower"),ae("tickUpper"),L("liquidity"),L("feeGrowthInsideLastX64A"),L("feeGrowthInsideLastX64B"),e("tokenFeesOwedA"),e("tokenFeesOwedB"),d(L(),He,"rewardGrowthInside"),e("recentEpoch"),d(e(),7)]),hi=l([ae("tick"),Sn("liquidityNet"),L("liquidityGross"),L("feeGrowthOutsideX64A"),L("feeGrowthOutsideX64B"),d(L(),He,"rewardGrowthsOutsideX64"),e("orderPhase"),e("ordersAmount"),e("partFilledOrdersRemaining"),L("unfilledRatioX64"),d(z(),3)]),Un=l([N(8),o("poolId"),ae("startTickIndex"),d(hi,Xt,"ticks"),c("initializedTickCount"),e("recentEpoch"),d(c(),107)]),Ii=l([N(8),c("bump"),d(o(),Dn,"operationOwners"),d(o(),Wn,"whitelistMints")]),Bi=l([N(8),o("poolId"),o("owner"),ae("tick"),re("zeroForOne"),e("orderPhase"),e("totalAmount"),e("filledAmount"),e("settleBase"),e("settleOutput"),e("openTime"),L("unfilledRatioX64"),d(e(),4)]),Gn=l([N(8),o("poolId"),N(8*8*gt,"positiveTickArrayBitmap"),N(8*8*gt,"negativeTickArrayBitmap")]),vm=l([N(8),Y("index"),Y("filterPeriod"),Y("decayPeriod"),Y("reductionFactor"),z("dynamicFeeControl"),z("maxVolatilityAccumulator"),d(e(),8)]),Si=l([N(8),o("wallet"),c("nonceIndex"),e("orderNonce"),d(e(),4)]),Vm=l([e(),c("bump"),o("owner"),o("poolId"),o("positionId"),o("nftAccount"),d(e(),8)]),xi=l([N(8),c("bump"),o("lockOwner"),o("poolId"),o("positionId"),o("nftAccount"),o("lockNftMint"),e("recentEpoch"),d(e(),8)]);import Dm from"bn.js";var jm=Buffer.from("amm_config","utf8"),Ci=Buffer.from("pool","utf8"),Ri=Buffer.from("pool_vault","utf8"),$m=Buffer.from("pool_reward_vault","utf8"),Jm=Buffer.from("position","utf8"),ed=Buffer.from("tick_array","utf8"),td=Buffer.from("operation","utf8"),nd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),od=Buffer.from("observation","utf8"),id=Buffer.from("support_mint","utf8"),rd=Buffer.from("dynamic_fee_config","utf8"),ad=Buffer.from("permission","utf8");var sd=Buffer.from("locked_position","utf8");import{sha256 as zi}from"js-sha256";import Li from"bn.js";import md from"decimal.js";var pd=new Li(1).shln(256).subn(1);import Ld from"bn.js";import wd from"bn.js";import Td from"decimal.js";import vd from"bn.js";import _d from"decimal.js";import{PublicKey as Ip}from"@solana/web3.js";import Sp from"bn.js";import{TOKEN_2022_PROGRAM_ID as Mp,TOKEN_PROGRAM_ID as Fp}from"@solana/spl-token";import Ep from"decimal.js";import pp from"bn.js";import ep from"bn.js";import Hp from"bn.js";function j(i){let t=`global:${i}`;return Buffer.from(zi.digest(t)).slice(0,8)}qn.span;var Gf=_("Raydium_Clmm"),zf={createPool:j("create_pool"),createCustomizablePool:j("create_customizable_pool"),createPermissionedPool:j("create_permissioned_pool"),openPositionV2:j("open_position_v2"),openPositionWithToken22Nft:j("open_position_with_token22_nft"),closePosition:j("close_position"),increaseLiquidityV2:j("increase_liquidity_v2"),decreaseLiquidityV2:j("decrease_liquidity_v2"),initializeReward:j("initialize_reward"),setRewardParams:j("set_reward_params"),updateRewardInfos:j("update_reward_infos"),collectRemainingRewards:j("collect_remaining_rewards"),swapV2:j("swap_v2"),openLimitOrder:j("open_limit_order"),increaseLimitOrder:j("increase_limit_order"),decreaseLimitOrder:j("decrease_limit_order"),settleLimitOrder:j("settle_limit_order"),closeLimitOrder:j("close_limit_order")};import{PublicKey as jt}from"@solana/web3.js";var Hi=l([c("instruction")]),ji=l([c("instruction")]),$i=l([e("rewardState"),e("rewardOpenTime"),e("rewardEndTime"),e("rewardLastUpdateTime"),e("totalReward"),e("totalRewardEmissioned"),e("rewardClaimed"),e("rewardPerSecond"),L("accRewardPerShare"),o("rewardVault"),o("rewardMint"),o("rewardSender"),e("rewardType"),d(e(),15,"padding")]),Ji=l([e("state"),e("nonce"),o("lpVault