UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

1 lines 88.4 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 Ga,TOKEN_PROGRAM_ID as za,getTransferFeeConfig as Xa,unpackMint as Ya}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 wC from"decimal.js";import No from"big.js";import ls 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 As=D("Raydium_amount"),ws=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"),Ks=new X("SysvarC1ock11111111111111111111111111111111"),Ne=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Eo=new X("Sysvar1nstructions1111111111111111111111111"),Do=An.programId,Cs=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Rs=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ls=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Os=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Ns=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ms=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Fs=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),vs=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Vs=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),_s=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Es=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 js=new U(new Wo(100));var ou=D("Raydium_price");import{merge as TK}from"lodash";import du 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 Fu=D("Raydium_Api");import{PublicKey as em,SystemProgram as tm}from"@solana/web3.js";import{AccountLayout as am,createAssociatedTokenAccountIdempotentInstruction as sm,TOKEN_PROGRAM_ID as um,TOKEN_2022_PROGRAM_ID as cm}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($=>$.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,$=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),$({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,$(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 $ of g){if(++q,q<=C){console.log("skip tx: ",q),_.push("tx skipped");continue}let z=await this.connection.sendTransaction($,{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 $=0,z=[],re=async()=>{if(!_[$])return;if($<C){z.push({txId:"",status:"success",signedTx:_[$]}),S==null||S([...z]),$++,re();return}let be=await this.connection.sendTransaction(_[$],{skipPreflight:F});z.push({txId:be,status:"sent",signedTx:_[$]}),S==null||S([...z]),$++;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 $=[];for(let z=0;z<_.length;z+=1){let re=await this.connection.sendTransaction(_[z],{skipPreflight:F});$.push(re)}return{txIds:$,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 Ll,SystemProgram as Nl}from"@solana/web3.js";import vl from"bn.js";import{createCloseAccountInstruction as Dl,createInitializeAccountInstruction as Wl,createTransferInstruction as ql,TOKEN_PROGRAM_ID as Ul}from"@solana/spl-token";import{Keypair as Pl,PublicKey as Al}from"@solana/web3.js";import Tl from"bn.js";import{TOKEN_PROGRAM_ID as Bl}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 hc,blob as jo,Blob as Ic,cstr as Bc,f32 as Sc,f32be as xc,f64 as Kc,f64be as Cc,greedy as Rc,Layout as $o,ns64 as Lc,ns64be as Oc,nu64 as Nc,nu64be as Mc,offset as Jo,s16 as Fc,s16be as vc,s24 as Vc,s24be as _c,s32 as ei,s32be as Ec,s40 as Dc,s40be as Wc,s48 as qc,s48be as Uc,s8 as Gc,seq as ti,struct as zc,Structure as ni,u16 as oi,u16be as Xc,u24 as Yc,u24be as Qc,u32 as ii,u32be as Zc,u40 as Hc,u40be as jc,u48 as $c,u48be as Jc,u8 as ri,UInt as ai,union as el,Union as tl,unionLayoutDiscriminator as nl,utf8 as ol}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 J(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 eP,SystemProgram as tP}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as oP}from"@solana/spl-token";import{PublicKey as bm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Pm}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"),Tm=new M("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),di=new M("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Wn=new M("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),qn=new M("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),hm=new M("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),pi=new M("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Un=new M("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),fi=new M("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),yi=new M("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Gn=new M("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Im=new M("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),bi=new M("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),jt=new M("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),gi=new M("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Bm=new M("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Pi=new M("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ai=new M("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),wi=new M("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Sm=new M("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),xm=new M("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Km=new M("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Cm=new M("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Rm=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 pP from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as Ly,TOKEN_2022_PROGRAM_ID as Oy,TOKEN_PROGRAM_ID as Ny}from"@solana/spl-token";import{PublicKey as Fy}from"@solana/web3.js";import Vy from"bn.js";import Ey from"decimal.js";import{TOKEN_PROGRAM_ID as Gm}from"@solana/spl-token";import{PublicKey as Qm}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 Jf,TOKEN_2022_PROGRAM_ID as ey,TOKEN_PROGRAM_ID as ty}from"@solana/spl-token";import{Keypair as iy,PublicKey as ry,SystemProgram as sy,TransactionInstruction as uy}from"@solana/web3.js";import ly 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,ad=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),sd=new W(-1);var ud=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)]),dd=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")]),pd=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)]),fd=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 gd from"bn.js";var Kd=Buffer.from("amm_config","utf8"),Ei=Buffer.from("pool","utf8"),Di=Buffer.from("pool_vault","utf8"),Cd=Buffer.from("pool_reward_vault","utf8"),Rd=Buffer.from("position","utf8"),Ld=Buffer.from("tick_array","utf8"),Od=Buffer.from("operation","utf8"),Nd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Md=Buffer.from("observation","utf8"),Fd=Buffer.from("support_mint","utf8"),vd=Buffer.from("dynamic_fee_config","utf8");var Vd=Buffer.from("locked_position","utf8");import{sha256 as tr}from"js-sha256";import Wi from"bn.js";import Wd from"decimal.js";var Ud=new Wi(1).shln(256).subn(1);import sp from"bn.js";import Hd from"bn.js";import $d from"decimal.js";import dp from"bn.js";import fp from"decimal.js";import{PublicKey as ef}from"@solana/web3.js";import nf from"bn.js";import{TOKEN_2022_PROGRAM_ID as mf,TOKEN_PROGRAM_ID as df}from"@solana/spl-token";import bf from"decimal.js";import Up from"bn.js";import Rp from"bn.js";import xf from"bn.js";function ee(i){let t=`global:${i}`;return Buffer.from(tr.digest(t)).slice(0,8)}Qn.span;var Py=D("Raydium_Clmm"),Ay={createPool:ee("create_pool"),createCustomizablePool:ee("create_customizable_pool"),openPositionV2:ee("open_position_v2"),openPositionWithToken22Nft:ee("open_position_with_token22_nft"),closePosition:ee("close_position"),increaseLiquidityV2:ee("increase_liquidity_v2"),decreaseLiquidityV2:ee("decrease_liquidity_v2"),initializeReward:ee("initialize_reward"),setRewardParams:ee("set_reward_params"),updateRewardInfos:ee("update_reward_infos"),collectRemainingRewards:ee("collect_remaining_rewards"),swapV2:ee("swap_v2"),openLimitOrder:ee("open_limit_order"),increaseLimitOrder:ee("increase_limit_order"),decreaseLimitOrder:ee("decrease_limit_order"),settleLimitOrder:ee("settle_limit_order"),closeLimitOrder:ee("close_limit_order")};import{PublicKey as rn}from"@solana/web3.js";var ar=d([m("instruction")]),sr=d([m("instruction")]),ur=d([e("rewardState"),e("rewardOpenTime"),e("rewardEndTime"),e("rewardLastUpdateTime"),e("totalReward"),e("totalRewardEmissioned"),e("rewardClaimed"),e("rewardPerSecond"),v("accRewardPerShare"),r("rewardVault"),r("rewardMint"),r("rewa