UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

1 lines 88.5 kB
var wo=Object.defineProperty,ko=Object.defineProperties;var To=Object.getOwnPropertyDescriptors;var lt=Object.getOwnPropertySymbols;var pn=Object.prototype.hasOwnProperty,fn=Object.prototype.propertyIsEnumerable;var dn=(i,t,n)=>t in i?wo(i,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):i[t]=n,L=(i,t)=>{for(var n in t||(t={}))pn.call(t,n)&&dn(i,n,t[n]);if(lt)for(var n of lt(t))fn.call(t,n)&&dn(i,n,t[n]);return i},V=(i,t)=>ko(i,To(t));var pe=(i,t)=>{var n={};for(var o in i)pn.call(i,o)&&t.indexOf(o)<0&&(n[o]=i[o]);if(i!=null&&lt)for(var o of lt(i))t.indexOf(o)<0&&fn.call(i,o)&&(n[o]=i[o]);return n};import{PublicKey as Bo}from"@solana/web3.js";import{get as yn,set as ho}from"lodash";var Lt=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(o=>typeof o=="object"?JSON.stringify(o):o).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}},bn={},Io={};function D(i){let t=yn(bn,i);if(!t){let n=yn(Io,i);t=new Lt({name:i,logLevel:n}),ho(bn,i,t)}return t}import{MINT_SIZE as za,TOKEN_PROGRAM_ID as Xa,getTransferFeeConfig as Ya,unpackMint as Qa}from"@solana/spl-token";var Ot=D("Raydium_accountInfo_util");async function Pe(i,t,n){let{batchRequest:o,commitment:s="confirmed",chunkCount:a=100}=L({batchRequest:!1},n),l=Nt(t,a),f=new Array(l.length).fill([]);if(o){let b=l.map(B=>{let x=i._buildArgs([B.map(T=>T.toBase58())],s,"base64");return{methodName:"getMultipleAccounts",args:x}}),h=Nt(b,10);f=(await(await Promise.all(h.map(async B=>await i._rpcBatchRequest(B)))).flat()).map(B=>(B.error&&Ot.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${B.error.message}`),B.result.value.map(x=>{if(x){let{data:T,executable:K,lamports:g,owner:y,rentEpoch:I}=x;return T.length!==2&&T[1]!=="base64"&&Ot.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(T[0],"base64"),executable:K,lamports:g,owner:new Bo(y),rentEpoch:I}}return null})))}else try{f=await Promise.all(l.map(b=>i.getMultipleAccountsInfo(b,s)))}catch(b){b instanceof Error&&Ot.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${b.message}`)}return f.flat()}import Re from"bn.js";import hC from"decimal.js";import No from"big.js";import ms from"bn.js";import So from"toformat";var xo=So,Ze=xo;import dt from"big.js";import Co from"bn.js";import Ro from"decimal.js-light";import He from"bn.js";var gn=9007199254740991;function ae(i){let t=D("Raydium_parseBigNumberish");if(i instanceof He)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new He(i);t.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&t.logWithError(`BigNumberish number underflow: ${i}`),(i>=gn||i<=-gn)&&t.logWithError(`BigNumberish number overflow: ${i}`),new He(String(i))):typeof i=="bigint"?new He(i.toString()):(t.error(`invalid BigNumberish value: ${i}`),new He(0))}var mt=D("module/fraction"),Mt=Ze(dt),je=Ze(Ro),Lo={[0]:je.ROUND_DOWN,[1]:je.ROUND_HALF_UP,[2]:je.ROUND_UP},Oo={[0]:dt.roundDown,[1]:dt.roundHalfUp,[2]:dt.roundUp},U=class{constructor(t,n=new Co(1)){this.numerator=ae(t),this.denominator=ae(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(ae(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(ae(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(ae(t));return new U(this.numerator.mul(n.numerator),this.denominator.mul(n.denominator))}div(t){let n=t instanceof U?t:new U(ae(t));return new U(this.numerator.mul(n.denominator),this.denominator.mul(n.numerator))}toSignificant(t,n={groupSeparator:""},o=1){Number.isInteger(t)||mt.logWithError(`${t} is not an integer.`),t<=0&&mt.logWithError(`${t} is not positive.`),je.set({precision:t+1,rounding:Lo[o]});let s=new je(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(t);return s.toFormat(s.decimalPlaces(),n)}toFixed(t,n={groupSeparator:""},o=1){return Number.isInteger(t)||mt.logWithError(`${t} is not an integer.`),t<0&&mt.logWithError(`${t} is negative.`),Mt.DP=t,Mt.RM=Oo[o]||1,new Mt(this.numerator.toString()).div(this.denominator.toString()).toFormat(t,n)}isZero(){return this.numerator.isZero()}};var ws=D("Raydium_amount"),ks=Ze(No);import{PublicKey as Fo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Pn}from"@solana/spl-token";var pt={chainId:101,address:Fo.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"}},fe={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{PublicKey as vt}from"@solana/web3.js";import{PublicKey as X,SystemProgram as An,SYSVAR_RENT_PUBKEY as vo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Vo}from"@solana/spl-token";function Oe({pubkey:i,isSigner:t=!1,isWritable:n=!0}){return{pubkey:i,isWritable:n,isSigner:t}}var _o=[Oe({pubkey:Vo,isWritable:!1}),Oe({pubkey:An.programId,isWritable:!1}),Oe({pubkey:vo,isWritable:!1})];function wn({publicKey:i,transformSol:t}){let n=kn(i.toString());if(n instanceof X)return t&&n.equals(Ie)?Ae:n;if(t&&n.toString()===Ie.toBase58())return Ae;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 kn(i){try{return new X(i)}catch{return i}}var Ft=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Be=new X("SysvarRent111111111111111111111111111111111"),Cs=new X("SysvarC1ock11111111111111111111111111111111"),Ne=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Eo=new X("Sysvar1nstructions1111111111111111111111111"),Do=An.programId,Rs=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ls=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Os=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ns=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Ms=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Fs=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),vs=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Vs=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),_s=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Es=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Ds=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ae=new X("So11111111111111111111111111111111111111112"),Ie=X.default;var Vt=class{constructor({mint:t,decimals:n,symbol:o,name:s,skipMint:a=!1,isToken2022:l=!1}){if(t===Ie.toBase58()||t instanceof vt&&Ie.equals(t)){this.decimals=fe.decimals,this.symbol=fe.symbol,this.name=fe.name,this.mint=new vt(fe.address),this.isToken2022=!1;return}this.decimals=n,this.symbol=o||t.toString().substring(0,6),this.name=s||t.toString().substring(0,6),this.mint=a?vt.default:wn({publicKey:t}),this.isToken2022=l}equals(t){return this===t?!0:this.mint.equals(t.mint)}},oe=Vt;oe.WSOL=new Vt(V(L({},fe),{mint:fe.address}));var _t=class{constructor({decimals:t,symbol:n="UNKNOWN",name:o="UNKNOWN"}){this.decimals=t,this.symbol=n,this.name=o}equals(t){return this===t}},ft=_t;ft.SOL=new _t(pt);import Wo from"bn.js";var $s=new U(new Wo(100));var iu=D("Raydium_price");import{merge as BK}from"lodash";import pu from"axios";var Tn={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"},qo=V(L({},Tn),{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 vu=D("Raydium_Api");import{PublicKey as tm,SystemProgram as nm}from"@solana/web3.js";import{AccountLayout as sm,createAssociatedTokenAccountIdempotentInstruction as um,TOKEN_PROGRAM_ID as cm,TOKEN_2022_PROGRAM_ID as lm}from"@solana/spl-token";import{PublicKey as _e,sendAndConfirmTransaction as Gt,SystemProgram as Qo,Transaction as et,TransactionMessage as tt,VersionedTransaction as nt}from"@solana/web3.js";import Zo from"axios";import{PublicKey as Et,AddressLookupTableAccount as ve}from"@solana/web3.js";async function Dt({connection:i,address:t,cluster:n="mainnet"}){let o=await Pe(i,[...new Set(t.map(a=>a.toString()))].map(a=>new Et(a))),s={};for(let a=0;a<t.length;a++){let l=o[a],f=t[a];if(!l)continue;let b=new ve({key:f,state:ve.deserialize(l.data)});s[f.toString()]=b,n==="devnet"?Fe[f.toString()]=b:Me[f.toString()]=b}return s}var Me={},Wt=async i=>{let t="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Me[t])return Me;let n=new Et(t),o=await i.getAccountInfo(n);return o&&(Me[t]=new ve({key:n,state:ve.deserialize(o.data)})),Me},Fe={},qt=async i=>{let t="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Fe[t])return Fe;let n=new Et(t),o=await i.getAccountInfo(n);return o&&(Fe[t]=new ve({key:n,state:ve.deserialize(o.data)})),Fe};var H={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 hn,Keypair as Bn,PublicKey as Uo,Transaction as Sn,TransactionMessage as Go,VersionedTransaction as xn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as zo}from"@solana/spl-token";var In=D("Raydium_txUtil"),Kn=1644;function yt(i){let t=[],n=[];return i.microLamports&&(t.push(hn.setComputeUnitPrice({microLamports:i.microLamports})),n.push(H.SetComputeUnitPrice)),i.units&&(t.push(hn.setComputeUnitLimit({units:i.units})),n.push(H.SetComputeUnitLimit)),{instructions:t,instructionTypes:n}}async function Ve(i,t){var o,s;let n=t!=null?t:"confirmed";return(s=await((o=i.getLatestBlockhash)==null?void 0:o.call(i,{commitment:n})))==null?void 0:s.blockhash}async function bt(i,t){return i.getSignatureStatuses([t]),new Promise((n,o)=>{let s=setTimeout(o,6e4);i.onSignature(t,a=>{if(clearTimeout(s),!a.err){n("");return}o(Object.assign(a.err,{txId:t}))},"confirmed")})}function Ut(i,t){i.length<1&&In.logWithError(`no instructions provided: ${i.toString()}`),t.length<1&&In.logWithError(`no signers provided:, ${t.toString()}`);let n=new Sn;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=t[0],n.add(...i);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<Kn}catch{return!1}}function le(i,t){let[n,o]=Uo.findProgramAddressSync(i,t);return{publicKey:n,nonce:o}}function $e({instructions:i,payer:t,signers:n}){return Ut(i,[t,...n])}function Je({instructions:i,payer:t,lookupTableAddressAccount:n,recentBlockhash:o=Bn.generate().publicKey.toString()}){let a=new Go({payerKey:t,recentBlockhash:o,instructions:i}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new xn(a).serialize()).toString("base64").length<Kn}catch{return!1}}var Xo=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i),Yo=i=>{let t=i.serialize({requireAllSignatures:!1,verifySignatures:!1});i instanceof xn&&(t=Xo(t));try{return t instanceof Buffer?t.toString("base64"):Buffer.from(t).toString("base64")}catch{return t.toString("base64")}};function Se(i){let t=[];return i.forEach(n=>{n instanceof Sn&&(n.recentBlockhash||(n.recentBlockhash=zo.toBase58()),n.feePayer||(n.feePayer=Bn.generate().publicKey)),t.push(Yo(n))}),console.log("simulate tx string:",t),t}var gt=2e3,Pt=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 o;let t=(await Zo.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:n}=(o=t==null?void 0:t[15])!=null?o:{};if(!!n)return{units:6e5,microLamports:Math.min(Math.ceil(n*1e6/6e5),25e3)}}addCustomComputeBudget(t){if(t){let{instructions:n,instructionTypes:o}=yt(t);return this.instructions.unshift(...n),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(t){var n;return t?(this.endInstructions.push(Qo.transfer({fromPubkey:(n=t.feePayer)!=null?n:this.feePayer,toPubkey:new _e(t.address),lamports:BigInt(t.amount.toString())})),this.endInstructionTypes.push(H.TransferTip),!0):!1}async calComputeBudget({config:t,defaultIns:n}){try{let o=t||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(o))return;n&&this.instructions.unshift(...n)}catch{n&&this.instructions.unshift(...n)}}addInstruction({instructions:t=[],endInstructions:n=[],signers:o=[],instructionTypes:s=[],endInstructionTypes:a=[],lookupTableAddress:l=[]}){return this.instructions.push(...t),this.endInstructions.push(...n),this.signers.push(...o),this.instructionTypes.push(...s),this.endInstructionTypes.push(...a),this.lookupTableAddress.push(...l.filter(f=>f!==_e.default.toString())),this}async versionBuild({txVersion:t,extInfo:n,lookupTableAddress:o}){return t===0?await this.buildV0(V(L({},n||{}),{lookupTableAddress:o})):this.build(n)}build(t){var o;let n=new et;return this.allInstructions.length&&n.add(...this.allInstructions),n.feePayer=this.feePayer,((o=this.owner)==null?void 0:o.signer)&&!this.signers.some(s=>s.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 s=>{var P;let{recentBlockHash:a,skipPreflight:l=!0,sendAndConfirm:f,notSendToRpc:b}=s||{},h=a!=null?a:await Ve(this.connection,this.blockhashCommitment);if(n.recentBlockhash=h,this.signers.length&&n.sign(...this.signers),Se([n]),(P=this.owner)!=null&&P.isKeyPair)return{txId:f?await Gt(this.connection,n,this.signers.find(x=>x.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:l}):await this.connection.sendRawTransaction(n.serialize(),{skipPreflight:l}),signedTx:n};if(this.signAllTransactions){let B=await this.signAllTransactions([n]);if(this.signers.length)for(let x of B)try{x.sign(...this.signers)}catch{}return{txId:b?"":await this.connection.sendRawTransaction(B[0].serialize(),{skipPreflight:l}),signedTx:B[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:t||{}}}buildMultiTx(t){var h;let{extraPreBuildData:n=[],extInfo:o}=t,{transaction:s}=this.build(o),a=n.filter(P=>P.transaction.instructions.length>0),l=[s,...a.map(P=>P.transaction)],f=[this.signers,...a.map(P=>P.signers)],b=[...this.instructionTypes,...a.map(P=>P.instructionTypes).flat()];return(h=this.owner)!=null&&h.signer&&f.forEach(P=>{P.some(B=>B.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:l,signers:f,instructionTypes:b,execute:async P=>{var I;let{sequentially:B,onTxUpdate:x,skipTxCount:T=0,recentBlockHash:K,skipPreflight:g=!0}=P||{},y=K!=null?K:await Ve(this.connection,this.blockhashCommitment);if((I=this.owner)!=null&&I.isKeyPair){if(B){let k=[],O=0;for(let R of l){if(++O,O<=T)continue;let p=await Gt(this.connection,R,this.signers.find(w=>w.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:g});k.push(p)}return{txIds:k,signedTxs:l}}return{txIds:await await Promise.all(l.map(async k=>(k.recentBlockhash=y,await this.connection.sendRawTransaction(k.serialize(),{skipPreflight:g})))),signedTxs:l}}if(this.signAllTransactions){let k=l.map((R,p)=>(R.recentBlockhash=y,f[p].length&&R.sign(...f[p]),R));Se(k);let O=await this.signAllTransactions(k);if(B){let R=0,p=[],w=async()=>{if(!O[R])return;let S=await this.connection.sendRawTransaction(O[R].serialize(),{skipPreflight:g});p.push({txId:S,status:"sent",signedTx:O[R]}),x==null||x([...p]),R++;let C=!1,N=null,F=null,G=q=>{N!==null&&clearInterval(N),F!==null&&this.connection.removeSignatureListener(F);let _=p.findIndex(J=>J.txId===S);if(_>-1){if(p[_].status==="error"||p[_].status==="success")return;p[_].status=q.err?"error":"success"}x==null||x([...p]),q.err||w()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var q;if(C){clearInterval(N);return}try{let _=await this.connection.getTransaction(S,{commitment:"confirmed",maxSupportedTransactionVersion:0});_&&(C=!0,clearInterval(N),G({err:((q=_.meta)==null?void 0:q.err)||null}),console.log("tx status from getTransaction:",S))}catch(_){C=!0,clearInterval(N),console.error("getTransaction timeout:",_,S)}},gt)),F=this.connection.onSignature(S,q=>{if(C){this.connection.removeSignatureListener(F);return}C=!0,G(q)},"confirmed"),this.connection.getSignatureStatus(S)};return await w(),{txIds:p.map(S=>S.txId),signedTxs:O}}else{let R=[];for(let p=0;p<O.length;p+=1){let w=await this.connection.sendRawTransaction(O[p].serialize(),{skipPreflight:g});R.push(w)}return{txIds:R,signedTxs:O}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async versionMultiBuild({extraPreBuildData:t,txVersion:n,extInfo:o}){return n===0?await this.buildV0MultiTx({extraPreBuildData:t,buildProps:o||{}}):this.buildMultiTx({extraPreBuildData:t,extInfo:o})}async buildV0(t){var g;let K=t||{},{lookupTableCache:n={},lookupTableAddress:o=[],forerunCreate:s,recentBlockhash:a}=K,l=pe(K,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),f=L(L({},this.cluster==="devnet"?await qt(this.connection):await Wt(this.connection)),n),b=Array.from(new Set([...o,...this.lookupTableAddress])),h=[];for(let y of b)f[y]===void 0&&h.push(new _e(y));let P=await Dt({connection:this.connection,address:h});for(let[y,I]of Object.entries(P))f[y]=I;let B=s?_e.default.toBase58():a!=null?a:await Ve(this.connection,this.blockhashCommitment),x=new tt({payerKey:this.feePayer,recentBlockhash:B,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(f));((g=this.owner)==null?void 0:g.signer)&&!this.signers.some(y=>y.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let T=new nt(x);return T.sign(this.signers),{builder:this,transaction:T,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async y=>{var R;let{skipPreflight:I=!0,sendAndConfirm:k,notSendToRpc:O}=y||{};if(Se([T]),(R=this.owner)!=null&&R.isKeyPair){let p=await this.connection.sendTransaction(T,{skipPreflight:I});return k&&await bt(this.connection,p),{txId:p,signedTx:T}}if(this.signAllTransactions){let p=await this.signAllTransactions([T]);if(this.signers.length)for(let w of p)try{w.sign(this.signers)}catch{}return{txId:O?"":await this.connection.sendTransaction(p[0],{skipPreflight:I}),signedTx:p[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:l||{}}}async buildV0MultiTx(t){var h;let{extraPreBuildData:n=[],buildProps:o}=t,{transaction:s}=await this.buildV0(o),a=n.filter(P=>P.builder.instructions.length>0),l=[s,...a.map(P=>P.transaction)],f=[this.signers,...a.map(P=>P.signers)],b=[...this.instructionTypes,...a.map(P=>P.instructionTypes).flat()];return(h=this.owner)!=null&&h.signer&&f.forEach(P=>{P.some(B=>B.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),l.forEach(async(P,B)=>{P.sign(f[B])}),{builder:this,transactions:l,signers:f,instructionTypes:b,buildProps:o,execute:async P=>{var g;let{sequentially:B,onTxUpdate:x,recentBlockHash:T,skipPreflight:K=!0}=P||{};if(T&&l.forEach(y=>y.message.recentBlockhash=T),Se(l),(g=this.owner)!=null&&g.isKeyPair){if(B){let y=[];for(let I of l){let k=await this.connection.sendTransaction(I,{skipPreflight:K});await bt(this.connection,k),y.push(k)}return{txIds:y,signedTxs:l}}return{txIds:await Promise.all(l.map(async y=>await this.connection.sendTransaction(y,{skipPreflight:K}))),signedTxs:l}}if(this.signAllTransactions){let y=await this.signAllTransactions(l);if(B){let I=0,k=[],O=async()=>{if(!y[I])return;let R=await this.connection.sendTransaction(y[I],{skipPreflight:K});k.push({txId:R,status:"sent",signedTx:y[I]}),x==null||x([...k]),I++;let p=!1,w=null,S=null,C=N=>{w!==null&&clearInterval(w),S!==null&&this.connection.removeSignatureListener(S);let F=k.findIndex(G=>G.txId===R);if(F>-1){if(k[F].status==="error"||k[F].status==="success")return;k[F].status=N.err?"error":"success"}x==null||x([...k]),N.err||O()};this.loopMultiTxStatus&&(w=setInterval(async()=>{var N;if(p){clearInterval(w);return}try{let F=await this.connection.getTransaction(R,{commitment:"confirmed",maxSupportedTransactionVersion:0});F&&(p=!0,clearInterval(w),C({err:((N=F.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",R))}catch(F){p=!0,clearInterval(w),console.error("getTransaction timeout:",F,R)}},gt)),S=this.connection.onSignature(R,N=>{if(p){this.connection.removeSignatureListener(S);return}p=!0,C(N)},"confirmed"),this.connection.getSignatureStatus(R)};return O(),{txIds:[],signedTxs:y}}else{let I=[];for(let k=0;k<y.length;k+=1){let O=await this.connection.sendTransaction(y[k],{skipPreflight:K});I.push(O)}return{txIds:I,signedTxs:y}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(t){var x;let B=t||{},{splitIns:n=[],computeBudgetConfig:o}=B,s=pe(B,["splitIns","computeBudgetConfig"]),a=o?yt(o):{instructions:[],instructionTypes:[]},l=this.signers.reduce((T,K)=>V(L({},T),{[K.publicKey.toBase58()]:K}),{}),f=[],b=[],h=[],P=0;if(this.allInstructions.forEach(T=>{let K=[...h,T],g=o?[...a.instructions,...K]:K,I=[...new Set(K.map(k=>k.keys.filter(O=>O.isSigner).map(O=>O.pubkey.toString())).flat()).values()].map(k=>new _e(k));if(T!==n[P]&&h.length<12&&($e({instructions:g,payer:this.feePayer,signers:I})||$e({instructions:K,payer:this.feePayer,signers:I})))h.push(T);else{if(h.length===0)throw Error("item ins too big");P+=T===n[P]?1:0,$e({instructions:o?[...a.instructions,...h]:[...h],payer:this.feePayer,signers:I})?f.push(new et().add(...a.instructions,...h)):f.push(new et().add(...h)),b.push(Array.from(new Set(h.map(k=>k.keys.filter(O=>O.isSigner).map(O=>O.pubkey.toString())).flat())).map(k=>l[k]).filter(k=>k!==void 0)),h=[T]}}),h.length>0){let K=[...new Set(h.map(g=>g.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat()).values()].map(g=>l[g]).filter(g=>g!==void 0);$e({instructions:o?[...a.instructions,...h]:[...h],payer:this.feePayer,signers:K.map(g=>g.publicKey)})?f.push(new et().add(...a.instructions,...h)):f.push(new et().add(...h)),b.push(K)}return f.forEach(T=>T.feePayer=this.feePayer),(x=this.owner)!=null&&x.signer&&b.forEach(T=>{T.some(K=>K.publicKey.equals(this.owner.publicKey))||T.push(this.owner.signer)}),{builder:this,transactions:f,signers:b,instructionTypes:this.instructionTypes,execute:async T=>{var R;let{sequentially:K,onTxUpdate:g,skipTxCount:y=0,recentBlockHash:I,skipPreflight:k=!0}=T||{},O=I!=null?I:await Ve(this.connection,this.blockhashCommitment);if(f.forEach(async(p,w)=>{p.recentBlockhash=O,b[w].length&&p.sign(...b[w])}),Se(f),(R=this.owner)!=null&&R.isKeyPair){if(K){let p=0,w=[];for(let S of f){if(++p,p<=y){w.push("tx skipped");continue}let C=await Gt(this.connection,S,this.signers.find(N=>N.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:k});w.push(C)}return{txIds:w,signedTxs:f}}return{txIds:await Promise.all(f.map(async p=>await this.connection.sendRawTransaction(p.serialize(),{skipPreflight:k}))),signedTxs:f}}if(this.signAllTransactions){let p=await this.signAllTransactions(f.slice(y,f.length)),w=[...f.slice(0,y),...p];if(K){let S=0,C=[],N=async()=>{if(!w[S])return;S<y&&(C.push({txId:"",status:"success",signedTx:w[S]}),g==null||g([...C]),S++,N());let F=await this.connection.sendRawTransaction(w[S].serialize(),{skipPreflight:k});C.push({txId:F,status:"sent",signedTx:w[S]}),g==null||g([...C]),S++;let G=!1,q=null,_=null,J=z=>{q!==null&&clearInterval(q),_!==null&&this.connection.removeSignatureListener(_);let re=C.findIndex(be=>be.txId===F);if(re>-1){if(C[re].status==="error"||C[re].status==="success")return;C[re].status=z.err?"error":"success"}g==null||g([...C]),z.err||N()};this.loopMultiTxStatus&&(q=setInterval(async()=>{var z;if(G){clearInterval(q);return}try{let re=await this.connection.getTransaction(F,{commitment:"confirmed",maxSupportedTransactionVersion:0});re&&(G=!0,clearInterval(q),J({err:((z=re.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",F))}catch(re){G=!0,clearInterval(q),console.error("getTransaction timeout:",re,F)}},gt)),_=this.connection.onSignature(F,z=>{if(G){this.connection.removeSignatureListener(_);return}G=!0,J(z)},"confirmed"),this.connection.getSignatureStatus(F)};return await N(),{txIds:C.map(F=>F.txId),signedTxs:w}}else{let S=[];for(let C=0;C<w.length;C+=1){let N=await this.connection.sendRawTransaction(w[C].serialize(),{skipPreflight:k});S.push(N)}return{txIds:S,signedTxs:w}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}async sizeCheckBuildV0(t){var R;let O=t||{},{computeBudgetConfig:n,splitIns:o=[],lookupTableCache:s={},lookupTableAddress:a=[],insCountLimit:l=12}=O,f=pe(O,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),b=L(L({},this.cluster==="devnet"?await qt(this.connection):await Wt(this.connection)),s),h=Array.from(new Set([...this.lookupTableAddress,...a])),P=[];for(let p of h)b[p]===void 0&&P.push(new _e(p));let B=await Dt({connection:this.connection,address:P});for(let[p,w]of Object.entries(B))b[p]=w;let x=n?yt(n):{instructions:[],instructionTypes:[]},T=await Ve(this.connection,this.blockhashCommitment),K=this.signers.reduce((p,w)=>V(L({},p),{[w.publicKey.toBase58()]:w}),{}),g=[],y=[],I=[],k=0;if(this.allInstructions.forEach(p=>{let w=[...I,p],S=n?[...x.instructions,...w]:w;if(p!==o[k]&&I.length<l&&(Je({instructions:S,payer:this.feePayer,lookupTableAddressAccount:b})||Je({instructions:w,payer:this.feePayer,lookupTableAddressAccount:b})))I.push(p);else{if(I.length===0)throw Error("item ins too big");k+=p===o[k]?1:0;let C={};for(let N of[...new Set(h)])b[N]!==void 0&&(C[N]=b[N]);if(n&&Je({instructions:[...x.instructions,...I],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:T})){let N=new tt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...x.instructions,...I]}).compileToV0Message(Object.values(b));g.push(new nt(N))}else{let N=new tt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...I]}).compileToV0Message(Object.values(b));g.push(new nt(N))}y.push(Array.from(new Set(I.map(N=>N.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat())).map(N=>K[N]).filter(N=>N!==void 0)),I=[p]}}),I.length>0){let w=[...new Set(I.map(S=>S.keys.filter(C=>C.isSigner).map(C=>C.pubkey.toString())).flat()).values()].map(S=>K[S]).filter(S=>S!==void 0);if(n&&Je({instructions:[...x.instructions,...I],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:T})){let S=new tt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...x.instructions,...I]}).compileToV0Message(Object.values(b));g.push(new nt(S))}else{let S=new tt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...I]}).compileToV0Message(Object.values(b));g.push(new nt(S))}y.push(w)}return(R=this.owner)!=null&&R.signer&&y.forEach(p=>{p.some(w=>w.publicKey.equals(this.owner.publicKey))||p.push(this.owner.signer)}),g.forEach((p,w)=>{p.sign(y[w])}),{builder:this,transactions:g,buildProps:t,signers:y,instructionTypes:this.instructionTypes,execute:async p=>{var G;let{sequentially:w,onTxUpdate:S,skipTxCount:C=0,recentBlockHash:N,skipPreflight:F=!0}=p||{};if(g.map(async(q,_)=>{y[_].length&&q.sign(y[_]),N&&(q.message.recentBlockhash=N)}),Se(g),(G=this.owner)!=null&&G.isKeyPair){if(w){let q=0,_=[];for(let J of g){if(++q,q<=C){console.log("skip tx: ",q),_.push("tx skipped");continue}let z=await this.connection.sendTransaction(J,{skipPreflight:F});await bt(this.connection,z),_.push(z)}return{txIds:_,signedTxs:g}}return{txIds:await Promise.all(g.map(async q=>await this.connection.sendTransaction(q,{skipPreflight:F}))),signedTxs:g}}if(this.signAllTransactions){let q=await this.signAllTransactions(g.slice(C,g.length)),_=[...g.slice(0,C),...q];if(w){let J=0,z=[],re=async()=>{if(!_[J])return;if(J<C){z.push({txId:"",status:"success",signedTx:_[J]}),S==null||S([...z]),J++,re();return}let be=await this.connection.sendTransaction(_[J],{skipPreflight:F});z.push({txId:be,status:"sent",signedTx:_[J]}),S==null||S([...z]),J++;let Ye=!1,Le=null,ct=null,mn=he=>{Le!==null&&clearInterval(Le),ct!==null&&this.connection.removeSignatureListener(ct);let ge=z.findIndex(Ao=>Ao.txId===be);if(ge>-1){if(z[ge].status==="error"||z[ge].status==="success")return;z[ge].status=he.err?"error":"success"}S==null||S([...z]),he.err||re()};this.loopMultiTxStatus&&(Le=setInterval(async()=>{var he;if(Ye){clearInterval(Le);return}try{let ge=await this.connection.getTransaction(be,{commitment:"confirmed",maxSupportedTransactionVersion:0});ge&&(Ye=!0,clearInterval(Le),mn({err:((he=ge.meta)==null?void 0:he.err)||null}),console.log("tx status from getTransaction:",be))}catch(ge){Ye=!0,clearInterval(Le),console.error("getTransaction timeout:",ge,be)}},gt)),ct=this.connection.onSignature(be,he=>{if(Ye){this.connection.removeSignatureListener(ct);return}Ye=!0,mn(he)},"confirmed"),this.connection.getSignatureStatus(be)};return re(),{txIds:[],signedTxs:_}}else{let J=[];for(let z=0;z<_.length;z+=1){let re=await this.connection.sendTransaction(_[z],{skipPreflight:F});J.push(re)}return{txIds:J,signedTxs:_}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:f||{}}}};var zt=(...i)=>i.map(t=>{try{return typeof t=="object"?JSON.stringify(t):t}catch{return t}}).join(", "),ue=class{constructor({scope:t,moduleName:n}){this.disabled=!1;this.scope=t,this.logger=D(n)}createTxBuilder(t){return this.scope.checkOwner(),new Pt({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(zt(t))}logInfo(...t){this.logger.info(zt(t))}logAndCreateError(...t){let n=zt(t);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Ol,SystemProgram as Ml}from"@solana/web3.js";import Vl from"bn.js";import{createCloseAccountInstruction as Wl,createInitializeAccountInstruction as ql,createTransferInstruction as Ul,TOKEN_PROGRAM_ID as Gl}from"@solana/spl-token";import{Keypair as Al,PublicKey as wl}from"@solana/web3.js";import hl from"bn.js";import{TOKEN_PROGRAM_ID as Sl}from"@solana/spl-token";import{PublicKey as si}from"@solana/web3.js";import On,{isBN as Nn}from"bn.js";import{bits as Ho,BitStructure as Ic,blob as jo,Blob as Bc,cstr as Sc,f32 as xc,f32be as Kc,f64 as Cc,f64be as Rc,greedy as Lc,Layout as $o,ns64 as Oc,ns64be as Nc,nu64 as Mc,nu64be as Fc,offset as Jo,s16 as vc,s16be as Vc,s24 as _c,s24be as Ec,s32 as ei,s32be as Dc,s40 as Wc,s40be as qc,s48 as Uc,s48be as Gc,s8 as zc,seq as ti,struct as Xc,Structure as ni,u16 as oi,u16be as Yc,u24 as Qc,u24be as Zc,u32 as ii,u32be as Hc,u40 as jc,u40be as $c,u48 as Jc,u48be as el,u8 as ri,UInt as ai,union as tl,Union as nl,unionLayoutDiscriminator as ol,utf8 as il}from"@solana/buffer-layout";var At=$o,Cn=ni;var Xt=ai;var Rn=ri,Q=oi;var ot=ii;var me=ei;var Ln=ti;var E=jo;var Yt=Ho,Qt=Jo;var Ke=class extends At{constructor(n,o,s){super(n,s);this.blob=E(n),this.signed=o}decode(n,o=0){let s=new On(this.blob.decode(n,o),10,"le");return this.signed?s.fromTwos(this.span*8).clone():s}encode(n,o,s=0){return typeof n=="number"&&(n=new On(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),o,s)}},wt=class extends At{constructor(n){super(8,n);this._lower=Yt(ot(),!1),this._upper=Yt(ot(),!1)}addBoolean(n){this._lower.fields.length<32?this._lower.addBoolean(n):this._upper.addBoolean(n)}decode(n,o=0){let s=this._lower.decode(n,o),a=this._upper.decode(n,o+this._lower.span);return L(L({},s),a)}encode(n,o,s=0){return this._lower.encode(n,o,s)+this._upper.encode(n,o,s+this._lower.span)}};function m(i){return new Xt(1,i)}function Y(i){return new Xt(4,i)}function e(i){return new Ke(8,!1,i)}function v(i){return new Ke(16,!1,i)}function Mn(i){return new Ke(1,!0,i)}function Ee(i){return new Ke(8,!0,i)}function Fn(i){return new Ke(16,!0,i)}var Ce=class extends At{constructor(n,o,s,a){super(n.span,a);this.layout=n,this.decoder=o,this.encoder=s}decode(n,o){return this.decoder(this.layout.decode(n,o))}encode(n,o,s){return this.layout.encode(this.encoder(n),o,s)}getSpan(n,o){return this.layout.getSpan(n,o)}};function r(i){return new Ce(E(32),t=>new si(t),t=>t.toBuffer(),i)}function ce(i){return new Ce(Rn(),ui,ci,i)}function ui(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function ci(i){return i?1:0}function vn(i,t){let n=ot("length"),o=d([n,A(i,Qt(n,-n.span),"values")]);return new Ce(o,({values:s})=>s,s=>({values:s}),t)}function li(i){let t=ot("length"),n=d([t,E(Qt(t,-t.span),"data")]);return new Ce(n,({data:o})=>o,o=>({data:o}),i)}function ee(i){return new Ce(li(),t=>t.toString("utf-8"),t=>Buffer.from(t,"utf-8"),i)}var Zt=class extends Cn{decode(t,n){return super.decode(t,n)}};function d(i,t,n){return new Zt(i,t,n)}function A(i,t,n){let o,s=typeof t=="number"?t:Nn(t)?t.toNumber():new Proxy(t,{get(a,l){if(!o){let f=Reflect.get(a,"count");o=Nn(f)?f.toNumber():f,Reflect.set(a,"count",o)}return Reflect.get(a,l)},set(a,l,f){return l==="count"&&(o=f),Reflect.set(a,l,f)}});return Ln(i,s,n)}var kt=d([r("mint"),r("owner"),e("amount"),Y("delegateOption"),r("delegate"),m("state"),Y("isNativeOption"),e("isNative"),e("delegatedAmount"),Y("closeAuthorityOption"),r("closeAuthority")]);import{PublicKey as iP,SystemProgram as rP}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as sP}from"@solana/spl-token";import{PublicKey as gm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Am}from"@solana/spl-token";import{PublicKey as M}from"@solana/web3.js";var _n=new M("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),En=new M("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Dn=new M("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Ht=new M("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),hm=new M("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),di=new M("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Wn=new M("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),qn=new M("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Im=new M("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),pi=new M("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Un=new M("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),fi=new M("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),yi=new M("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Gn=new M("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Bm=new M("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),bi=new M("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),jt=new M("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),gi=new M("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Sm=new M("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Pi=new M("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ai=new M("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),wi=new M("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),xm=new M("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Km=new M("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Cm=new M("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Rm=new M("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Lm=new M("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var ke={OPEN_BOOK_PROGRAM:new M("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new M("Ray1111111111111111111111111111111111111111"),AMM_V4:new M("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new M("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new M("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new M("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new M("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new M("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new M("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new M("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new M("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new M("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:M.default,Router:new M("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new M("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new M("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new M("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new M("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new M("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new M("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new M("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new M("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new M("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new M("Ray1111111111111111111111111111111111111111")};import gP from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as Fy,TOKEN_2022_PROGRAM_ID as vy,TOKEN_PROGRAM_ID as Vy}from"@solana/spl-token";import{PublicKey as Ey}from"@solana/web3.js";import Wy from"bn.js";import Uy from"decimal.js";import{TOKEN_PROGRAM_ID as zm}from"@solana/spl-token";import{PublicKey as Zm}from"@solana/web3.js";var ki=d([Y("mintAuthorityOption"),r("mintAuthority"),e("supply"),m("decimals"),m("isInitialized"),Y("freezeAuthorityOption"),r("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as oy,TOKEN_2022_PROGRAM_ID as iy,TOKEN_PROGRAM_ID as ry}from"@solana/spl-token";import{Keypair as uy,PublicKey as cy,SystemProgram as my,TransactionInstruction as dy}from"@solana/web3.js";import fy from"bn.js";import W from"bn.js";var We=new W(1).shln(64);var Ti=new W(1).shln(128),$t=new W(1).shln(64).subn(1),hi=new W(1).shln(128).subn(1);var qe=new W("4295048016"),Ue=new W("79226673521066979257578248091"),Ii=new W("59543866431248"),Bi=new W("184467440737095516"),Si=new W("15793534762490258745");var Jt=60,sd=new W("18446743708227953217"),xi=[{bit:0,factor:new W("fffcb933bd6fb800",16)},{bit:1,factor:new W("fff97272373d4000",16)},{bit:2,factor:new W("fff2e50f5f657000",16)},{bit:3,factor:new W("ffe5caca7e10f000",16)},{bit:4,factor:new W("ffcb9843d60f7000",16)},{bit:5,factor:new W("ff973b41fa98e800",16)},{bit:6,factor:new W("ff2ea16466c9b000",16)},{bit:7,factor:new W("fe5dee046a9a3800",16)},{bit:8,factor:new W("fcbe86c7900bb000",16)},{bit:9,factor:new W("f987a7253ac65800",16)},{bit:10,factor:new W("f3392b0822bb6000",16)},{bit:11,factor:new W("e7159475a2caf000",16)},{bit:12,factor:new W("d097f3bdfd2f2000",16)},{bit:13,factor:new W("a9f746462d9f8000",16)},{bit:14,factor:new W("70d869a156f31c00",16)},{bit:15,factor:new W("31be135f97ed3200",16)},{bit:16,factor:new W("9aa508b5b85a500",16)},{bit:17,factor:new W("5d6af8dedc582c",16)},{bit:18,factor:new W("2216e584f5fa",16)}];var it=3,zn=100;var Xn=10,Yn=100,ht=14;var j=new W(0),Ge=new W(1),ud=new W(-1);var cd=new W("18446744073700000000");var Ki=d([E(8),m("bump"),Q("index"),r("owner"),Y("protocolFeeRate"),Y("tradeFeeRate"),Q("tickSpacing"),Y("fundFeeRate"),A(Y(),1),r("fundOwner"),A(e(),3)]),Ci=d([Y("blockTimestamp"),Ee("tickCumulative"),A(e(),4)]),Qn=d([E(8),ce("initialized"),e("recentEpoch"),Q("observationIndex"),r("poolId"),A(Ci,zn,"observations"),A(e(),4)]),Ri=d([Q("filterPeriod"),Q("decayPeriod"),Q("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),me("tickSpacingIndexReference"),Y("volatilityReference"),Y("volatilityAccumulator"),e("lastUpdateTimestamp"),A(m(),46)]),Li=d([m("state"),e("openTime"),e("endTime"),e("lastUpdateTime"),v("emissionsPerSecondX64"),e("totalEmissioned"),e("claimed"),r("mint"),r("vault"),r("creator"),v("growthGlobalX64")]),en=d([E(8),m("bump"),r("configId"),r("creator"),r("mintA"),r("mintB"),r("vaultA"),r("vaultB"),r("observationId"),m("mintDecimalsA"),m("mintDecimalsB"),Q("tickSpacing"),v("liquidity"),v("sqrtPriceX64"),me("tickCurrent"),Y(),v("feeGrowthGlobalX64A"),v("feeGrowthGlobalX64B"),e("protocolFeesTokenA"),e("protocolFeesTokenB"),A(v(),4),m("status"),m("feeOn"),E(6),A(Li,it,"rewardInfos"),E(8*16,"tickArrayBitmap"),A(e(),4),e("fundFeesTokenA"),e("fundFeesTokenB"),e("startTime"),e("recentEpoch"),Ri.replicate("dynamicFeeInfo"),A(e(),46)]),Oi=d([v("growthInsideLastX64"),e("rewardAmountOwed")]),Ni=d([E(8),m("bump"),r("nftMint"),r("poolId"),me("tickLower"),me("tickUpper"),v("liquidity"),v("feeGrowthInsideLastX64A"),v("feeGrowthInsideLastX64B"),e("tokenFeesOwedA"),e("tokenFeesOwedB"),A(Oi,it,"rewardInfos"),e("recentEpoch"),A(e(),7)]),pd=d([E(8),m("bump"),r("poolId"),me("tickLower"),me("tickUpper"),v("liquidity"),v("feeGrowthInsideLastX64A"),v("feeGrowthInsideLastX64B"),e("tokenFeesOwedA"),e("tokenFeesOwedB"),A(v(),it,"rewardGrowthInside"),e("recentEpoch"),A(e(),7)]),Mi=d([me("tick"),Fn("liquidityNet"),v("liquidityGross"),v("feeGrowthOutsideX64A"),v("feeGrowthOutsideX64B"),A(v(),it,"rewardGrowthsOutsideX64"),e("orderPhase"),e("ordersAmount"),e("partFilledOrdersRemaining"),v("unfilledRatioX64"),A(Y(),3)]),Zn=d([E(8),r("poolId"),me("startTickIndex"),A(Mi,Jt,"ticks"),m("initializedTickCount"),e("recentEpoch"),A(m(),107)]),Fi=d([E(8),m("bump"),A(r(),Xn,"operationOwners"),A(r(),Yn,"whitelistMints")]),vi=d([E(8),r("poolId"),r("owner"),me("tick"),ce("zeroForOne"),e("orderPhase"),e("totalAmount"),e("filledAmount"),e("settleBase"),e("settleOutput"),e("openTime"),v("unfilledRatioX64"),A(e(),4)]),Hn=d([E(8),r("poolId"),E(8*8*ht,"positiveTickArrayBitmap"),E(8*8*ht,"negativeTickArrayBitmap")]),fd=d([E(8),Q("index"),Q("filterPeriod"),Q("decayPeriod"),Q("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),A(e(),8)]),Vi=d([E(8),r("wallet"),m("nonceIndex"),e("orderNonce"),A(e(),4)]),yd=d([e(),m("bump"),r("owner"),r("poolId"),r("positionId"),r("nftAccount"),A(e(),8)]),_i=d([E(8),m("bump"),r("lockOwner"),r("poolId"),r("positionId"),r("nftAccount"),r("lockNftMint"),e("recentEpoch"),A(e(),8)]);import Pd from"bn.js";var Cd=Buffer.from("amm_config","utf8"),Di=Buffer.from("pool","utf8"),Wi=Buffer.from("pool_vault","utf8"),Rd=Buffer.from("pool_reward_vault","utf8"),Ld=Buffer.from("position","utf8"),Od=Buffer.from("tick_array","utf8"),Nd=Buffer.from("operation","utf8"),Md=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Fd=Buffer.from("observation","utf8"),vd=Buffer.from("support_mint","utf8"),Vd=Buffer.from("dynamic_fee_config","utf8"),_d=Buffer.from("permission","utf8");var Ed=Buffer.from("locked_position","utf8");import{sha256 as nr}from"js-sha256";import qi from"bn.js";import Ud from"decimal.js";var zd=new qi(1).shln(256).subn(1);import cp from"bn.js";import $d from"bn.js";import ep from"decimal.js";import fp from"bn.js";import bp from"decimal.js";import{PublicKey as nf}from"@solana/web3.js";import rf from"bn.js";import{TOKEN_2022_PROGRAM_ID as pf,TOKEN_PROGRAM_ID as ff}from"@solana/spl-token";import Pf from"decimal.js";import zp from"bn.js";import Op from"bn.js";import Cf from"bn.js";function $(i){let t=`global:${i}`;return Buffer.from(nr.digest(t)).slice(0,8)}Qn.span;var Ty=D("Raydium_Clmm"),hy={createPool:$("create_pool"),createCustomizablePool:$("create_customizable_pool"),createPermissionedPool:$("create_permissioned_pool"),openPositionV2:$("open_position_v2"),openPositionWithToken22Nft:$("open_position_with_token22_nft"),closePosition:$("close_position"),increaseLiquidityV2:$("increase_liquidity_v2"),decreaseLiquidityV2:$("decrease_liquidity_v2"),initializeReward:$("initialize_reward"),setRewardParams:$("set_reward_params"),updateRewardInfos:$("update_reward_infos"),collectRemainingRewards:$("collect_remaining_rewards"),swapV2:$("swap_v2"),openLimitOrder:$("open_limit_order"),increaseLimitOrder:$("increase_limit_order"),decreaseLimitOrder:$("decrease_limit_order"),settleLimitOrder:$("settle_limit_order"),closeLimitOrder:$("close_limit_order")};import{PublicKey as rn}from"@solana/web3.js";var sr=d([m("instruction")]),ur=d([m("instruction")]),cr=d([e("rewardState"),e("rewardOpenTime"),e("rewardEndTime"),e("rewardLastUpdateTime"),e("totalReward"),e("totalRewardEmissioned"),e("rewardClaimed"),e("rewardPer