@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
1 lines • 74.9 kB
JavaScript
var Po=Object.defineProperty,Ao=Object.defineProperties;var wo=Object.getOwnPropertyDescriptors;var rt=Object.getOwnPropertySymbols;var ln=Object.prototype.hasOwnProperty,mn=Object.prototype.propertyIsEnumerable;var cn=(i,t,n)=>t in i?Po(i,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):i[t]=n,O=(i,t)=>{for(var n in t||(t={}))ln.call(t,n)&&cn(i,n,t[n]);if(rt)for(var n of rt(t))mn.call(t,n)&&cn(i,n,t[n]);return i},D=(i,t)=>Ao(i,wo(t));var ce=(i,t)=>{var n={};for(var r in i)ln.call(i,r)&&t.indexOf(r)<0&&(n[r]=i[r]);if(i!=null&&rt)for(var r of rt(i))t.indexOf(r)<0&&mn.call(i,r)&&(n[r]=i[r]);return n};import bo from"bn.js";import at from"bn.js";function Ct(i,t){if(t.isZero())throw Error("divisor is zero");return i.mod(t)}function ko(i,t){if(t.isZero())throw Error("rhs is zero");let n=i.div(t);return Ct(i,t).gt(We)&&(n=n.add(new at(1))),[n,t]}var We=new at(0),qe=class{static swapBaseInputWithoutFees(t,n,r){let u=t.mul(r),m=n.add(t);return u.div(m)}static swapBaseOutputWithoutFees(t,n,r){let u=n.mul(t),m=r.sub(t),[p]=ko(u,m);return p}static lpTokensToTradingTokens(t,n,r,u,m){let p=t.mul(r).div(n),f=t.mul(u).div(n);if(m===0)return{tokenAmount0:p,tokenAmount1:f};if(m===1)return Ct(t.mul(r),n).gt(We)&&p.gt(We)&&(p=p.add(new at(1))),Ct(t.mul(u),n).gt(We)&&f.gt(We)&&(f=f.add(new at(1))),{tokenAmount0:p,tokenAmount1:f};throw Error("roundDirection value error")}};import ka from"bn.js";import Ae from"bn.js";import YC from"decimal.js";import Aa from"big.js";import LC from"bn.js";import{get as pn,set as To}from"lodash";var Rt=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}},fn={},ho={};function _(i){let t=pn(fn,i);if(!t){let n=pn(ho,i);t=new Rt({name:i,logLevel:n}),To(fn,i,t)}return t}import{PublicKey as Io}from"@solana/web3.js";import{MINT_SIZE as _a,TOKEN_PROGRAM_ID as Ea,getTransferFeeConfig as Da,unpackMint as Wa}from"@solana/spl-token";var Lt=_("Raydium_accountInfo_util");async function be(i,t,n){let{batchRequest:r,commitment:u="confirmed",chunkCount:m=100}=O({batchRequest:!1},n),p=Ot(t,m),f=new Array(p.length).fill([]);if(r){let g=p.map(I=>{let x=i._buildArgs([I.map(k=>k.toBase58())],u,"base64");return{methodName:"getMultipleAccounts",args:x}}),w=Ot(g,10);f=(await(await Promise.all(w.map(async I=>await i._rpcBatchRequest(I)))).flat()).map(I=>(I.error&&Lt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${I.error.message}`),I.result.value.map(x=>{if(x){let{data:k,executable:R,lamports:A,owner:P,rentEpoch:B}=x;return k.length!==2&&k[1]!=="base64"&&Lt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(k[0],"base64"),executable:R,lamports:A,owner:new Io(P),rentEpoch:B}}return null})))}else try{f=await Promise.all(p.map(g=>i.getMultipleAccountsInfo(g,u)))}catch(g){g instanceof Error&&Lt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${g.message}`)}return f.flat()}import Ge from"bn.js";var yn=9007199254740991;function ne(i){let t=_("Raydium_parseBigNumberish");if(i instanceof Ge)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Ge(i);t.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&t.logWithError(`BigNumberish number underflow: ${i}`),(i>=yn||i<=-yn)&&t.logWithError(`BigNumberish number overflow: ${i}`),new Ge(String(i))):typeof i=="bigint"?new Ge(i.toString()):(t.error(`invalid BigNumberish value: ${i}`),new Ge(0))}import{merge as pK}from"lodash";import Ja from"axios";var bn={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"},Bo=D(O({},bn),{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 Ts=_("Raydium_Api");import{PublicKey as Gc,SystemProgram as zc}from"@solana/web3.js";import{AccountLayout as Hc,createAssociatedTokenAccountIdempotentInstruction as jc,TOKEN_PROGRAM_ID as $c,TOKEN_2022_PROGRAM_ID as Jc}from"@solana/spl-token";import{PublicKey as Re,sendAndConfirmTransaction as _t,SystemProgram as Lo,Transaction as Ye,TransactionMessage as Qe,VersionedTransaction as Ze}from"@solana/web3.js";import Oo from"axios";import{PublicKey as Nt,AddressLookupTableAccount as Ke}from"@solana/web3.js";async function Mt({connection:i,address:t,cluster:n="mainnet"}){let r=await be(i,[...new Set(t.map(m=>m.toString()))].map(m=>new Nt(m))),u={};for(let m=0;m<t.length;m++){let p=r[m],f=t[m];if(!p)continue;let g=new Ke({key:f,state:Ke.deserialize(p.data)});u[f.toString()]=g,n==="devnet"?xe[f.toString()]=g:Se[f.toString()]=g}return u}var Se={},Ft=async i=>{let t="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Se[t])return Se;let n=new Nt(t),r=await i.getAccountInfo(n);return r&&(Se[t]=new Ke({key:n,state:Ke.deserialize(r.data)})),Se},xe={},vt=async i=>{let t="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(xe[t])return xe;let n=new Nt(t),r=await i.getAccountInfo(n);return r&&(xe[t]=new Ke({key:n,state:Ke.deserialize(r.data)})),xe};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 gn,Keypair as An,PublicKey as So,Transaction as wn,TransactionMessage as xo,VersionedTransaction as kn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ko}from"@solana/spl-token";var Pn=_("Raydium_txUtil"),Tn=1644;function st(i){let t=[],n=[];return i.microLamports&&(t.push(gn.setComputeUnitPrice({microLamports:i.microLamports})),n.push(Z.SetComputeUnitPrice)),i.units&&(t.push(gn.setComputeUnitLimit({units:i.units})),n.push(Z.SetComputeUnitLimit)),{instructions:t,instructionTypes:n}}async function Ce(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 ut(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 Vt(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 wn;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=t[0],n.add(...i);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<Tn}catch{return!1}}function le(i,t){let[n,r]=So.findProgramAddressSync(i,t);return{publicKey:n,nonce:r}}function ze({instructions:i,payer:t,signers:n}){return Vt(i,[t,...n])}function Xe({instructions:i,payer:t,lookupTableAddressAccount:n,recentBlockhash:r=An.generate().publicKey.toString()}){let m=new xo({payerKey:t,recentBlockhash:r,instructions:i}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new kn(m).serialize()).toString("base64").length<Tn}catch{return!1}}var Co=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i),Ro=i=>{let t=i.serialize({requireAllSignatures:!1,verifySignatures:!1});i instanceof kn&&(t=Co(t));try{return t instanceof Buffer?t.toString("base64"):Buffer.from(t).toString("base64")}catch{return t.toString("base64")}};function ke(i){let t=[];return i.forEach(n=>{n instanceof wn&&(n.recentBlockhash||(n.recentBlockhash=Ko.toBase58()),n.feePayer||(n.feePayer=An.generate().publicKey)),t.push(Ro(n))}),console.log("simulate tx string:",t),t}var ct=2e3,lt=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 Oo.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}=st(t);return this.instructions.unshift(...n),this.instructionTypes.unshift(...r),!0}return!1}addTipInstruction(t){var n;return t?(this.endInstructions.push(Lo.transfer({fromPubkey:(n=t.feePayer)!=null?n:this.feePayer,toPubkey:new Re(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!==Re.default.toString())),this}async versionBuild({txVersion:t,extInfo:n,lookupTableAddress:r}){return t===0?await this.buildV0(D(O({},n||{}),{lookupTableAddress:r})):this.build(n)}build(t){var r;let n=new Ye;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 y;let{recentBlockHash:m,skipPreflight:p=!0,sendAndConfirm:f,notSendToRpc:g}=u||{},w=m!=null?m:await Ce(this.connection,this.blockhashCommitment);if(n.recentBlockhash=w,this.signers.length&&n.sign(...this.signers),ke([n]),(y=this.owner)!=null&&y.isKeyPair)return{txId:f?await _t(this.connection,n,this.signers.find(x=>x.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 I=await this.signAllTransactions([n]);if(this.signers.length)for(let x of I)try{x.sign(...this.signers)}catch{}return{txId:g?"":await this.connection.sendRawTransaction(I[0].serialize(),{skipPreflight:p}),signedTx:I[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:t||{}}}buildMultiTx(t){var w;let{extraPreBuildData:n=[],extInfo:r}=t,{transaction:u}=this.build(r),m=n.filter(y=>y.transaction.instructions.length>0),p=[u,...m.map(y=>y.transaction)],f=[this.signers,...m.map(y=>y.signers)],g=[...this.instructionTypes,...m.map(y=>y.instructionTypes).flat()];return(w=this.owner)!=null&&w.signer&&f.forEach(y=>{y.some(I=>I.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:p,signers:f,instructionTypes:g,execute:async y=>{var B;let{sequentially:I,onTxUpdate:x,skipTxCount:k=0,recentBlockHash:R,skipPreflight:A=!0}=y||{},P=R!=null?R:await Ce(this.connection,this.blockhashCommitment);if((B=this.owner)!=null&&B.isKeyPair){if(I){let K=[],F=0;for(let v of p){if(++F,F<=k)continue;let b=await _t(this.connection,v,this.signers.find(T=>T.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:A});K.push(b)}return{txIds:K,signedTxs:p}}return{txIds:await await Promise.all(p.map(async K=>(K.recentBlockhash=P,await this.connection.sendRawTransaction(K.serialize(),{skipPreflight:A})))),signedTxs:p}}if(this.signAllTransactions){let K=p.map((v,b)=>(v.recentBlockhash=P,f[b].length&&v.sign(...f[b]),v));ke(K);let F=await this.signAllTransactions(K);if(I){let v=0,b=[],T=async()=>{if(!F[v])return;let h=await this.connection.sendRawTransaction(F[v].serialize(),{skipPreflight:A});b.push({txId:h,status:"sent",signedTx:F[v]}),x==null||x([...b]),v++;let C=!1,L=null,V=null,re=q=>{L!==null&&clearInterval(L),V!==null&&this.connection.removeSignatureListener(V);let W=b.findIndex($=>$.txId===h);if(W>-1){if(b[W].status==="error"||b[W].status==="success")return;b[W].status=q.err?"error":"success"}x==null||x([...b]),q.err||T()};this.loopMultiTxStatus&&(L=setInterval(async()=>{var q;if(C){clearInterval(L);return}try{let W=await this.connection.getTransaction(h,{commitment:"confirmed",maxSupportedTransactionVersion:0});W&&(C=!0,clearInterval(L),re({err:((q=W.meta)==null?void 0:q.err)||null}),console.log("tx status from getTransaction:",h))}catch(W){C=!0,clearInterval(L),console.error("getTransaction timeout:",W,h)}},ct)),V=this.connection.onSignature(h,q=>{if(C){this.connection.removeSignatureListener(V);return}C=!0,re(q)},"confirmed"),this.connection.getSignatureStatus(h)};return await T(),{txIds:b.map(h=>h.txId),signedTxs:F}}else{let v=[];for(let b=0;b<F.length;b+=1){let T=await this.connection.sendRawTransaction(F[b].serialize(),{skipPreflight:A});v.push(T)}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 A;let R=t||{},{lookupTableCache:n={},lookupTableAddress:r=[],forerunCreate:u,recentBlockhash:m}=R,p=ce(R,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),f=O(O({},this.cluster==="devnet"?await vt(this.connection):await Ft(this.connection)),n),g=Array.from(new Set([...r,...this.lookupTableAddress])),w=[];for(let P of g)f[P]===void 0&&w.push(new Re(P));let y=await Mt({connection:this.connection,address:w});for(let[P,B]of Object.entries(y))f[P]=B;let I=u?Re.default.toBase58():m!=null?m:await Ce(this.connection,this.blockhashCommitment),x=new Qe({payerKey:this.feePayer,recentBlockhash:I,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(f));((A=this.owner)==null?void 0:A.signer)&&!this.signers.some(P=>P.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let k=new Ze(x);return k.sign(this.signers),{builder:this,transaction:k,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async P=>{var v;let{skipPreflight:B=!0,sendAndConfirm:K,notSendToRpc:F}=P||{};if(ke([k]),(v=this.owner)!=null&&v.isKeyPair){let b=await this.connection.sendTransaction(k,{skipPreflight:B});return K&&await ut(this.connection,b),{txId:b,signedTx:k}}if(this.signAllTransactions){let b=await this.signAllTransactions([k]);if(this.signers.length)for(let T of b)try{T.sign(this.signers)}catch{}return{txId:F?"":await this.connection.sendTransaction(b[0],{skipPreflight:B}),signedTx:b[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:p||{}}}async buildV0MultiTx(t){var w;let{extraPreBuildData:n=[],buildProps:r}=t,{transaction:u}=await this.buildV0(r),m=n.filter(y=>y.builder.instructions.length>0),p=[u,...m.map(y=>y.transaction)],f=[this.signers,...m.map(y=>y.signers)],g=[...this.instructionTypes,...m.map(y=>y.instructionTypes).flat()];return(w=this.owner)!=null&&w.signer&&f.forEach(y=>{y.some(I=>I.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),p.forEach(async(y,I)=>{y.sign(f[I])}),{builder:this,transactions:p,signers:f,instructionTypes:g,buildProps:r,execute:async y=>{var A;let{sequentially:I,onTxUpdate:x,recentBlockHash:k,skipPreflight:R=!0}=y||{};if(k&&p.forEach(P=>P.message.recentBlockhash=k),ke(p),(A=this.owner)!=null&&A.isKeyPair){if(I){let P=[];for(let B of p){let K=await this.connection.sendTransaction(B,{skipPreflight:R});await ut(this.connection,K),P.push(K)}return{txIds:P,signedTxs:p}}return{txIds:await Promise.all(p.map(async P=>await this.connection.sendTransaction(P,{skipPreflight:R}))),signedTxs:p}}if(this.signAllTransactions){let P=await this.signAllTransactions(p);if(I){let B=0,K=[],F=async()=>{if(!P[B])return;let v=await this.connection.sendTransaction(P[B],{skipPreflight:R});K.push({txId:v,status:"sent",signedTx:P[B]}),x==null||x([...K]),B++;let b=!1,T=null,h=null,C=L=>{T!==null&&clearInterval(T),h!==null&&this.connection.removeSignatureListener(h);let V=K.findIndex(re=>re.txId===v);if(V>-1){if(K[V].status==="error"||K[V].status==="success")return;K[V].status=L.err?"error":"success"}x==null||x([...K]),L.err||F()};this.loopMultiTxStatus&&(T=setInterval(async()=>{var L;if(b){clearInterval(T);return}try{let V=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(b=!0,clearInterval(T),C({err:((L=V.meta)==null?void 0:L.err)||null}),console.log("tx status from getTransaction:",v))}catch(V){b=!0,clearInterval(T),console.error("getTransaction timeout:",V,v)}},ct)),h=this.connection.onSignature(v,L=>{if(b){this.connection.removeSignatureListener(h);return}b=!0,C(L)},"confirmed"),this.connection.getSignatureStatus(v)};return F(),{txIds:[],signedTxs:P}}else{let B=[];for(let K=0;K<P.length;K+=1){let F=await this.connection.sendTransaction(P[K],{skipPreflight:R});B.push(F)}return{txIds:B,signedTxs:P}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async sizeCheckBuild(t){var x;let I=t||{},{splitIns:n=[],computeBudgetConfig:r}=I,u=ce(I,["splitIns","computeBudgetConfig"]),m=r?st(r):{instructions:[],instructionTypes:[]},p=this.signers.reduce((k,R)=>D(O({},k),{[R.publicKey.toBase58()]:R}),{}),f=[],g=[],w=[],y=0;if(this.allInstructions.forEach(k=>{let R=[...w,k],A=r?[...m.instructions,...R]:R,B=[...new Set(R.map(K=>K.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat()).values()].map(K=>new Re(K));if(k!==n[y]&&w.length<12&&(ze({instructions:A,payer:this.feePayer,signers:B})||ze({instructions:R,payer:this.feePayer,signers:B})))w.push(k);else{if(w.length===0)throw Error("item ins too big");y+=k===n[y]?1:0,ze({instructions:r?[...m.instructions,...w]:[...w],payer:this.feePayer,signers:B})?f.push(new Ye().add(...m.instructions,...w)):f.push(new Ye().add(...w)),g.push(Array.from(new Set(w.map(K=>K.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat())).map(K=>p[K]).filter(K=>K!==void 0)),w=[k]}}),w.length>0){let R=[...new Set(w.map(A=>A.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat()).values()].map(A=>p[A]).filter(A=>A!==void 0);ze({instructions:r?[...m.instructions,...w]:[...w],payer:this.feePayer,signers:R.map(A=>A.publicKey)})?f.push(new Ye().add(...m.instructions,...w)):f.push(new Ye().add(...w)),g.push(R)}return f.forEach(k=>k.feePayer=this.feePayer),(x=this.owner)!=null&&x.signer&&g.forEach(k=>{k.some(R=>R.publicKey.equals(this.owner.publicKey))||k.push(this.owner.signer)}),{builder:this,transactions:f,signers:g,instructionTypes:this.instructionTypes,execute:async k=>{var v;let{sequentially:R,onTxUpdate:A,skipTxCount:P=0,recentBlockHash:B,skipPreflight:K=!0}=k||{},F=B!=null?B:await Ce(this.connection,this.blockhashCommitment);if(f.forEach(async(b,T)=>{b.recentBlockhash=F,g[T].length&&b.sign(...g[T])}),ke(f),(v=this.owner)!=null&&v.isKeyPair){if(R){let b=0,T=[];for(let h of f){if(++b,b<=P){T.push("tx skipped");continue}let C=await _t(this.connection,h,this.signers.find(L=>L.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:K});T.push(C)}return{txIds:T,signedTxs:f}}return{txIds:await Promise.all(f.map(async b=>await this.connection.sendRawTransaction(b.serialize(),{skipPreflight:K}))),signedTxs:f}}if(this.signAllTransactions){let b=await this.signAllTransactions(f.slice(P,f.length)),T=[...f.slice(0,P),...b];if(R){let h=0,C=[],L=async()=>{if(!T[h])return;h<P&&(C.push({txId:"",status:"success",signedTx:T[h]}),A==null||A([...C]),h++,L());let V=await this.connection.sendRawTransaction(T[h].serialize(),{skipPreflight:K});C.push({txId:V,status:"sent",signedTx:T[h]}),A==null||A([...C]),h++;let re=!1,q=null,W=null,$=G=>{q!==null&&clearInterval(q),W!==null&&this.connection.removeSignatureListener(W);let te=C.findIndex(fe=>fe.txId===V);if(te>-1){if(C[te].status==="error"||C[te].status==="success")return;C[te].status=G.err?"error":"success"}A==null||A([...C]),G.err||L()};this.loopMultiTxStatus&&(q=setInterval(async()=>{var G;if(re){clearInterval(q);return}try{let te=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});te&&(re=!0,clearInterval(q),$({err:((G=te.meta)==null?void 0:G.err)||null}),console.log("tx status from getTransaction:",V))}catch(te){re=!0,clearInterval(q),console.error("getTransaction timeout:",te,V)}},ct)),W=this.connection.onSignature(V,G=>{if(re){this.connection.removeSignatureListener(W);return}re=!0,$(G)},"confirmed"),this.connection.getSignatureStatus(V)};return await L(),{txIds:C.map(V=>V.txId),signedTxs:T}}else{let h=[];for(let C=0;C<T.length;C+=1){let L=await this.connection.sendRawTransaction(T[C].serialize(),{skipPreflight:K});h.push(L)}return{txIds:h,signedTxs:T}}}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=ce(F,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),g=O(O({},this.cluster==="devnet"?await vt(this.connection):await Ft(this.connection)),u),w=Array.from(new Set([...this.lookupTableAddress,...m])),y=[];for(let b of w)g[b]===void 0&&y.push(new Re(b));let I=await Mt({connection:this.connection,address:y});for(let[b,T]of Object.entries(I))g[b]=T;let x=n?st(n):{instructions:[],instructionTypes:[]},k=await Ce(this.connection,this.blockhashCommitment),R=this.signers.reduce((b,T)=>D(O({},b),{[T.publicKey.toBase58()]:T}),{}),A=[],P=[],B=[],K=0;if(this.allInstructions.forEach(b=>{let T=[...B,b],h=n?[...x.instructions,...T]:T;if(b!==r[K]&&B.length<p&&(Xe({instructions:h,payer:this.feePayer,lookupTableAddressAccount:g})||Xe({instructions:T,payer:this.feePayer,lookupTableAddressAccount:g})))B.push(b);else{if(B.length===0)throw Error("item ins too big");K+=b===r[K]?1:0;let C={};for(let L of[...new Set(w)])g[L]!==void 0&&(C[L]=g[L]);if(n&&Xe({instructions:[...x.instructions,...B],payer:this.feePayer,lookupTableAddressAccount:g,recentBlockhash:k})){let L=new Qe({payerKey:this.feePayer,recentBlockhash:k,instructions:[...x.instructions,...B]}).compileToV0Message(Object.values(g));A.push(new Ze(L))}else{let L=new Qe({payerKey:this.feePayer,recentBlockhash:k,instructions:[...B]}).compileToV0Message(Object.values(g));A.push(new Ze(L))}P.push(Array.from(new Set(B.map(L=>L.keys.filter(V=>V.isSigner).map(V=>V.pubkey.toString())).flat())).map(L=>R[L]).filter(L=>L!==void 0)),B=[b]}}),B.length>0){let T=[...new Set(B.map(h=>h.keys.filter(C=>C.isSigner).map(C=>C.pubkey.toString())).flat()).values()].map(h=>R[h]).filter(h=>h!==void 0);if(n&&Xe({instructions:[...x.instructions,...B],payer:this.feePayer,lookupTableAddressAccount:g,recentBlockhash:k})){let h=new Qe({payerKey:this.feePayer,recentBlockhash:k,instructions:[...x.instructions,...B]}).compileToV0Message(Object.values(g));A.push(new Ze(h))}else{let h=new Qe({payerKey:this.feePayer,recentBlockhash:k,instructions:[...B]}).compileToV0Message(Object.values(g));A.push(new Ze(h))}P.push(T)}return(v=this.owner)!=null&&v.signer&&P.forEach(b=>{b.some(T=>T.publicKey.equals(this.owner.publicKey))||b.push(this.owner.signer)}),A.forEach((b,T)=>{b.sign(P[T])}),{builder:this,transactions:A,buildProps:t,signers:P,instructionTypes:this.instructionTypes,execute:async b=>{var re;let{sequentially:T,onTxUpdate:h,skipTxCount:C=0,recentBlockHash:L,skipPreflight:V=!0}=b||{};if(A.map(async(q,W)=>{P[W].length&&q.sign(P[W]),L&&(q.message.recentBlockhash=L)}),ke(A),(re=this.owner)!=null&&re.isKeyPair){if(T){let q=0,W=[];for(let $ of A){if(++q,q<=C){console.log("skip tx: ",q),W.push("tx skipped");continue}let G=await this.connection.sendTransaction($,{skipPreflight:V});await ut(this.connection,G),W.push(G)}return{txIds:W,signedTxs:A}}return{txIds:await Promise.all(A.map(async q=>await this.connection.sendTransaction(q,{skipPreflight:V}))),signedTxs:A}}if(this.signAllTransactions){let q=await this.signAllTransactions(A.slice(C,A.length)),W=[...A.slice(0,C),...q];if(T){let $=0,G=[],te=async()=>{if(!W[$])return;if($<C){G.push({txId:"",status:"success",signedTx:W[$]}),h==null||h([...G]),$++,te();return}let fe=await this.connection.sendTransaction(W[$],{skipPreflight:V});G.push({txId:fe,status:"sent",signedTx:W[$]}),h==null||h([...G]),$++;let De=!1,Be=null,it=null,un=we=>{Be!==null&&clearInterval(Be),it!==null&&this.connection.removeSignatureListener(it);let ye=G.findIndex(go=>go.txId===fe);if(ye>-1){if(G[ye].status==="error"||G[ye].status==="success")return;G[ye].status=we.err?"error":"success"}h==null||h([...G]),we.err||te()};this.loopMultiTxStatus&&(Be=setInterval(async()=>{var we;if(De){clearInterval(Be);return}try{let ye=await this.connection.getTransaction(fe,{commitment:"confirmed",maxSupportedTransactionVersion:0});ye&&(De=!0,clearInterval(Be),un({err:((we=ye.meta)==null?void 0:we.err)||null}),console.log("tx status from getTransaction:",fe))}catch(ye){De=!0,clearInterval(Be),console.error("getTransaction timeout:",ye,fe)}},ct)),it=this.connection.onSignature(fe,we=>{if(De){this.connection.removeSignatureListener(it);return}De=!0,un(we)},"confirmed"),this.connection.getSignatureStatus(fe)};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 Et=(...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 lt({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(Et(t))}logInfo(...t){this.logger.info(Et(t))}logAndCreateError(...t){let n=Et(t);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as kc,SystemProgram as hc}from"@solana/web3.js";import Sc from"bn.js";import{createCloseAccountInstruction as Rc,createInitializeAccountInstruction as Lc,createTransferInstruction as Oc,TOKEN_PROGRAM_ID as Nc}from"@solana/spl-token";import{PublicKey as No}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as hn}from"@solana/spl-token";var mt={chainId:101,address:No.default.toBase58(),programId:hn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},me={chainId:101,address:"So11111111111111111111111111111111111111112",programId:hn.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 uc,PublicKey as cc}from"@solana/web3.js";import dc from"bn.js";import{TOKEN_PROGRAM_ID as yc}from"@solana/spl-token";import{PublicKey as zo}from"@solana/web3.js";import Kn,{isBN as Cn}from"bn.js";import{bits as Mo,BitStructure as pu,blob as Fo,Blob as fu,cstr as yu,f32 as bu,f32be as gu,f64 as Pu,f64be as Au,greedy as wu,Layout as vo,ns64 as ku,ns64be as Tu,nu64 as hu,nu64be as Iu,offset as Vo,s16 as Bu,s16be as Su,s24 as xu,s24be as Ku,s32 as _o,s32be as Cu,s40 as Ru,s40be as Lu,s48 as Ou,s48be as Nu,s8 as Mu,seq as Eo,struct as Fu,Structure as Do,u16 as Wo,u16be as vu,u24 as Vu,u24be as _u,u32 as qo,u32be as Eu,u40 as Du,u40be as Wu,u48 as qu,u48be as Uu,u8 as Uo,UInt as Go,union as Gu,Union as zu,unionLayoutDiscriminator as Xu,utf8 as Yu}from"@solana/buffer-layout";var dt=vo,In=Do;var Dt=Go;var Bn=Uo,Y=Wo;var pt=qo;var se=_o;var Sn=Eo;var M=Fo;var Wt=Mo,xn=Vo;var he=class extends dt{constructor(n,r,u){super(n,u);this.blob=M(n),this.signed=r}decode(n,r=0){let u=new Kn(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 Kn(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),r,u)}},ft=class extends dt{constructor(n){super(8,n);this._lower=Wt(pt(),!1),this._upper=Wt(pt(),!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 O(O({},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 Dt(1,i)}function z(i){return new Dt(4,i)}function e(i){return new he(8,!1,i)}function N(i){return new he(16,!1,i)}function Rn(i){return new he(1,!0,i)}function Le(i){return new he(8,!0,i)}function Ln(i){return new he(16,!0,i)}var He=class extends dt{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 He(M(32),t=>new zo(t),t=>t.toBuffer(),i)}function ae(i){return new He(Bn(),Xo,Yo,i)}function Xo(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function Yo(i){return i?1:0}function On(i,t){let n=pt("length"),r=l([n,d(i,xn(n,-n.span),"values")]);return new He(r,({values:u})=>u,u=>({values:u}),t)}var qt=class extends In{decode(t,n){return super.decode(t,n)}};function l(i,t,n){return new qt(i,t,n)}function d(i,t,n){let r,u=typeof t=="number"?t:Cn(t)?t.toNumber():new Proxy(t,{get(m,p){if(!r){let f=Reflect.get(m,"count");r=Cn(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 Sn(i,u,n)}var yt=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 Vg,SystemProgram as _g}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Dg}from"@solana/spl-token";import{PublicKey as al}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ul}from"@solana/spl-token";import{PublicKey as S}from"@solana/web3.js";var Mn=new S("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Fn=new S("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),vn=new S("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Ut=new S("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),dl=new S("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Zo=new S("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Vn=new S("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),_n=new S("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),pl=new S("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Ho=new S("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),En=new S("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),jo=new S("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),$o=new S("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Dn=new S("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),fl=new S("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Jo=new S("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Gt=new S("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),ei=new S("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),yl=new S("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ti=new S("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),ni=new S("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),oi=new S("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),bl=new S("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),gl=new S("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Pl=new S("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Al=new S("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),wl=new S("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Pe={OPEN_BOOK_PROGRAM:new S("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new S("Ray1111111111111111111111111111111111111111"),AMM_V4:new S("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new S("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new S("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new S("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new S("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new S("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new S("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new S("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new S("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new S("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:S.default,Router:new S("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new S("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new S("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new S("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new S("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new S("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new S("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new S("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new S("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new S("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new S("Ray1111111111111111111111111111111111111111")};import{PublicKey as X,SystemProgram as Wn,SYSVAR_RENT_PUBKEY as ii}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ri}from"@solana/spl-token";function Oe({pubkey:i,isSigner:t=!1,isWritable:n=!0}){return{pubkey:i,isWritable:n,isSigner:t}}var ai=[Oe({pubkey:ri,isWritable:!1}),Oe({pubkey:Wn.programId,isWritable:!1}),Oe({pubkey:ii,isWritable:!1})];function qn({publicKey:i,transformSol:t}){let n=Un(i.toString());if(n instanceof X)return t&&n.equals(Ie)?ge:n;if(t&&n.toString()===Ie.toBase58())return ge;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 Un(i){try{return new X(i)}catch{return i}}var zt=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),je=new X("SysvarRent111111111111111111111111111111111"),Bl=new X("SysvarC1ock11111111111111111111111111111111"),gt=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),si=new X("Sysvar1nstructions1111111111111111111111111"),ui=Wn.programId,Sl=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),xl=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Kl=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Cl=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Rl=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ll=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ol=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Nl=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ml=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Fl=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),vl=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ge=new X("So11111111111111111111111111111111111111112"),Ie=X.default;import Hg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as yy,TOKEN_2022_PROGRAM_ID as by,TOKEN_PROGRAM_ID as gy}from"@solana/spl-token";import{PublicKey as Ay}from"@solana/web3.js";import ky from"bn.js";import hy from"decimal.js";import{TOKEN_PROGRAM_ID as Bm}from"@solana/spl-token";import{PublicKey as Cm}from"@solana/web3.js";import{PublicKey as Xt}from"@solana/web3.js";var Yt=class{constructor({mint:t,decimals:n,symbol:r,name:u,skipMint:m=!1,isToken2022:p=!1}){if(t===Ie.toBase58()||t instanceof Xt&&Ie.equals(t)){this.decimals=me.decimals,this.symbol=me.symbol,this.name=me.name,this.mint=new Xt(me.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?Xt.default:qn({publicKey:t}),this.isToken2022=p}equals(t){return this===t?!0:this.mint.equals(t.mint)}},J=Yt;J.WSOL=new Yt(D(O({},me),{mint:me.address}));var Qt=class{constructor({decimals:t,symbol:n="UNKNOWN",name:r="UNKNOWN"}){this.decimals=t,this.symbol=n,this.name=r}equals(t){return this===t}},Pt=Qt;Pt.SOL=new Qt(mt);import ci from"toformat";var li=ci,$e=li;import wt from"big.js";import di from"bn.js";import pi from"decimal.js-light";var At=_("module/fraction"),Zt=$e(wt),Je=$e(pi),fi={[0]:Je.ROUND_DOWN,[1]:Je.ROUND_HALF_UP,[2]:Je.ROUND_UP},yi={[0]:wt.roundDown,[1]:wt.roundHalfUp,[2]:wt.roundUp},U=class{constructor(t,n=new di(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)||At.logWithError(`${t} is not an integer.`),t<=0&&At.logWithError(`${t} is not positive.`),Je.set({precision:t+1,rounding:fi[r]});let u=new Je(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)||At.logWithError(`${t} is not an integer.`),t<0&&At.logWithError(`${t} is negative.`),Zt.DP=t,Zt.RM=yi[r]||1,new Zt(this.numerator.toString()).div(this.denominator.toString()).toFormat(t,n)}isZero(){return this.numerator.isZero()}};import bi from"bn.js";var im=new U(new bi(100));var lm=_("Raydium_price");var gi=l([z("mintAuthorityOption"),o("mintAuthority"),e("supply"),c("decimals"),c("isInitialized"),z("freezeAuthorityOption"),o("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as Vf,TOKEN_2022_PROGRAM_ID as _f,TOKEN_PROGRAM_ID as Ef}from"@solana/spl-token";import{Keypair as qf,PublicKey as Uf,SystemProgram as zf,TransactionInstruction as Xf}from"@solana/web3.js";import Qf from"bn.js";import E from"bn.js";var Me=new E(1).shln(64);var Pi=new E(1).shln(128),Ht=new E(1).shln(64).subn(1),Ai=new E(1).shln(128).subn(1);var Fe=new E("4295048016"),ve=new E("79226673521066979257578248091"),wi=new E("59543866431248"),ki=new E("184467440737095516"),Ti=new E("15793534762490258745");var jt=60,Wm=new E("18446743708227953217"),hi=[{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 et=3,Gn=100;var zn=10,Xn=100,kt=14;var H=new E(0),Ve=new E(1),qm=new E(-1);var Um=new E("18446744073700000000");var Ii=l([M(8),c("bump"),Y("index"),o("owner"),z("protocolFeeRate"),z("tradeFeeRate"),Y("tickSpacing"),z("fundFeeRate"),d(z(),1),o("fundOwner"),d(e(),3)]),Bi=l([z("blockTimestamp"),Le("tickCumulative"),d(e(),4)]),Yn=l([M(8),ae("initialized"),e("recentEpoch"),Y("observationIndex"),o("poolId"),d(Bi,Gn,"observations"),d(e(),4)]),Si=l([Y("filterPeriod"),Y("decayPeriod"),Y("reductionFactor"),z("dynamicFeeControl"),z("maxVolatilityAccumulator"),se("tickSpacingIndexReference"),z("volatilityReference"),z("volatilityAccumulator"),e("lastUpdateTimestamp"),d(c(),46)]),xi=l([c("state"),e("openTime"),e("endTime"),e("lastUpdateTime"),N("emissionsPerSecondX64"),e("totalEmissioned"),e("claimed"),o("mint"),o("vault"),o("creator"),N("growthGlobalX64")]),$t=l([M(8),c("bump"),o("configId"),o("creator"),o("mintA"),o("mintB"),o("vaultA"),o("vaultB"),o("observationId"),c("mintDecimalsA"),c("mintDecimalsB"),Y("tickSpacing"),N("liquidity"),N("sqrtPriceX64"),se("tickCurrent"),z(),N("feeGrowthGlobalX64A"),N("feeGrowthGlobalX64B"),e("protocolFeesTokenA"),e("protocolFeesTokenB"),d(N(),4),c("status"),c("feeOn"),M(6),d(xi,et,"rewardInfos"),M(8*16,"tickArrayBitmap"),d(e(),4),e("fundFeesTokenA"),e("fundFeesTokenB"),e("startTime"),e("recentEpoch"),Si.replicate("dynamicFeeInfo"),d(e(),46)]),Ki=l([N("growthInsideLastX64"),e("rewardAmountOwed")]),Ci=l([M(8),c("bump"),o("nftMint"),o("poolId"),se("tickLower"),se("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),e("tokenFeesOwedA"),e("tokenFeesOwedB"),d(Ki,et,"rewardInfos"),e("recentEpoch"),d(e(),7)]),Ym=l([M(8),c("bump"),o("poolId"),se("tickLower"),se("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),e("tokenFeesOwedA"),e("tokenFeesOwedB"),d(N(),et,"rewardGrowthInside"),e("recentEpoch"),d(e(),7)]),Ri=l([se("tick"),Ln("liquidityNet"),N("liquidityGross"),N("feeGrowthOutsideX64A"),N("feeGrowthOutsideX64B"),d(N(),et,"rewardGrowthsOutsideX64"),e("orderPhase"),e("ordersAmount"),e("partFilledOrdersRemaining"),N("unfilledRatioX64"),d(z(),3)]),Qn=l([M(8),o("poolId"),se("startTickIndex"),d(Ri,jt,"ticks"),c("initializedTickCount"),e("recentEpoch"),d(c(),107)]),Li=l([M(8),c("bump"),d(o(),zn,"operationOwners"),d(o(),Xn,"whitelistMints")]),Oi=l([M(8),o("poolId"),o("owner"),se("tick"),ae("zeroForOne"),e("orderPhase"),e("totalAmount"),e("filledAmount"),e("settleBase"),e("settleOutput"),e("openTime"),N("unfilledRatioX64"),d(e(),4)]),Zn=l([M(8),o("poolId"),M(8*8*kt,"positiveTickArrayBitmap"),M(8*8*kt,"negativeTickArrayBitmap")]),Qm=l([M(8),Y("index"),Y("filterPeriod"),Y("decayPeriod"),Y("reductionFactor"),z("dynamicFeeControl"),z("maxVolatilityAccumulator"),d(e(),8)]),Ni=l([M(8),o("wallet"),c("nonceIndex"),e("orderNonce"),d(e(),4)]),Zm=l([e(),c("bump"),o("owner"),o("poolId"),o("positionId"),o("nftAccount"),d(e(),8)]),Mi=l([M(8),c("bump"),o("lockOwner"),o("poolId"),o("positionId"),o("nftAccount"),o("lockNftMint"),e("recentEpoch"),d(e(),8)]);import $m from"bn.js";var cd=Buffer.from("amm_config","utf8"),vi=Buffer.from("pool","utf8"),Vi=Buffer.from("pool_vault","utf8"),ld=Buffer.from("pool_reward_vault","utf8"),md=Buffer.from("position","utf8"),dd=Buffer.from("tick_array","utf8"),pd=Buffer.from("operation","utf8"),fd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),yd=Buffer.from("observation","utf8"),bd=Buffer.from("support_mint","utf8"),gd=Buffer.from("dynamic_fee_config","utf8"),Pd=Buffer.from("permission","utf8");var Ad=Buffer.from("locked_position","utf8");import{sha256 as $i}from"js-sha256";import _i from"bn.js";import hd from"decimal.js";var Bd=new _i(1).shln(256).subn(1);import Ud from"bn.js";import Od from"bn.js";import Md from"decimal.js";import Qd from"bn.js";import Hd from"decimal.js";import{PublicKey as vp}from"@solana/web3.js";import _p from"bn.js";import{TOKEN_2022_PROGRAM_ID as Xp,TOKEN_PROGRAM_ID as Yp}from"@solana/spl-token";import jp from"decimal.js";import Bp from"bn.js";import dp from"bn.js";import cf from"bn.js";function j(i){let t=`global:${i}`;return Buffer.from($i.digest(t)).slice(0,8)}Yn.span;var ny=_("Raydium_Clmm"),oy={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("up