@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
1 lines • 87.7 kB
JavaScript
var vo=Object.defineProperty,Vo=Object.defineProperties;var _o=Object.getOwnPropertyDescriptors;var ct=Object.getOwnPropertySymbols;var Sn=Object.prototype.hasOwnProperty,xn=Object.prototype.propertyIsEnumerable;var Bn=(o,e,n)=>e in o?vo(o,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):o[e]=n,M=(o,e)=>{for(var n in e||(e={}))Sn.call(e,n)&&Bn(o,n,e[n]);if(ct)for(var n of ct(e))xn.call(e,n)&&Bn(o,n,e[n]);return o},q=(o,e)=>Vo(o,_o(e));var be=(o,e)=>{var n={};for(var i in o)Sn.call(o,i)&&e.indexOf(i)<0&&(n[i]=o[i]);if(o!=null&&ct)for(var i of ct(o))e.indexOf(i)<0&&xn.call(o,i)&&(n[i]=o[i]);return n};import{PublicKey as L,SystemProgram as Re,SYSVAR_CLOCK_PUBKEY as Xe,SYSVAR_RENT_PUBKEY as va,TransactionInstruction as J}from"@solana/web3.js";import Nt from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Va,createAssociatedTokenAccountIdempotentInstruction as _a,TOKEN_PROGRAM_ID as me}from"@solana/spl-token";import{PublicKey as Wo}from"@solana/web3.js";import{get as Kn,set as Eo}from"lodash";var Mt=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let n=e.map(i=>typeof i=="object"?JSON.stringify(i):i).join(", ");throw new Error(n)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},Cn={},Do={};function D(o){let e=Kn(Cn,o);if(!e){let n=Kn(Do,o);e=new Mt({name:o,logLevel:n}),Eo(Cn,o,e)}return e}import{MINT_SIZE as ns,TOKEN_PROGRAM_ID as os,getTransferFeeConfig as is,unpackMint as rs}from"@solana/spl-token";var Ft=D("Raydium_accountInfo_util");async function we(o,e,n){let{batchRequest:i,commitment:a="confirmed",chunkCount:c=100}=M({batchRequest:!1},n),u=vt(e,c),d=new Array(u.length).fill([]);if(i){let b=u.map(w=>{let P=o._buildArgs([w.map(A=>A.toBase58())],a,"base64");return{methodName:"getMultipleAccounts",args:P}}),g=vt(b,10);d=(await(await Promise.all(g.map(async w=>await o._rpcBatchRequest(w)))).flat()).map(w=>(w.error&&Ft.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${w.error.message}`),w.result.value.map(P=>{if(P){let{data:A,executable:B,lamports:k,owner:I,rentEpoch:C}=P;return A.length!==2&&A[1]!=="base64"&&Ft.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(A[0],"base64"),executable:B,lamports:k,owner:new Wo(I),rentEpoch:C}}return null})))}else try{d=await Promise.all(u.map(b=>o.getMultipleAccountsInfo(b,a)))}catch(b){b instanceof Error&&Ft.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${b.message}`)}return d.flat()}import Ce from"bn.js";import TC from"decimal.js";import Zo from"big.js";import Ts from"bn.js";import qo from"toformat";var Uo=qo,Ze=Uo;import mt from"big.js";import zo from"bn.js";import Xo from"decimal.js-light";import He from"bn.js";var Rn=9007199254740991;function G(o){let e=D("Raydium_parseBigNumberish");if(o instanceof He)return o;if(typeof o=="string"){if(o.match(/^-?[0-9]+$/))return new He(o);e.logWithError(`invalid BigNumberish string: ${o}`)}return typeof o=="number"?(o%1&&e.logWithError(`BigNumberish number underflow: ${o}`),(o>=Rn||o<=-Rn)&&e.logWithError(`BigNumberish number overflow: ${o}`),new He(String(o))):typeof o=="bigint"?new He(o.toString()):(e.error(`invalid BigNumberish value: ${o}`),new He(0))}var lt=D("module/fraction"),Vt=Ze(mt),je=Ze(Xo),Yo={[0]:je.ROUND_DOWN,[1]:je.ROUND_HALF_UP,[2]:je.ROUND_UP},Qo={[0]:mt.roundDown,[1]:mt.roundHalfUp,[2]:mt.roundUp},X=class{constructor(e,n=new zo(1)){this.numerator=G(e),this.denominator=G(n)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new X(this.denominator,this.numerator)}add(e){let n=e instanceof X?e:new X(G(e));return this.denominator.eq(n.denominator)?new X(this.numerator.add(n.numerator),this.denominator):new X(this.numerator.mul(n.denominator).add(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}sub(e){let n=e instanceof X?e:new X(G(e));return this.denominator.eq(n.denominator)?new X(this.numerator.sub(n.numerator),this.denominator):new X(this.numerator.mul(n.denominator).sub(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}mul(e){let n=e instanceof X?e:new X(G(e));return new X(this.numerator.mul(n.numerator),this.denominator.mul(n.denominator))}div(e){let n=e instanceof X?e:new X(G(e));return new X(this.numerator.mul(n.denominator),this.denominator.mul(n.numerator))}toSignificant(e,n={groupSeparator:""},i=1){Number.isInteger(e)||lt.logWithError(`${e} is not an integer.`),e<=0&<.logWithError(`${e} is not positive.`),je.set({precision:e+1,rounding:Yo[i]});let a=new je(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return a.toFormat(a.decimalPlaces(),n)}toFixed(e,n={groupSeparator:""},i=1){return Number.isInteger(e)||lt.logWithError(`${e} is not an integer.`),e<0&<.logWithError(`${e} is negative.`),Vt.DP=e,Vt.RM=Qo[i]||1,new Vt(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,n)}isZero(){return this.numerator.isZero()}};var Ls=D("Raydium_amount"),Os=Ze(Zo);import{PublicKey as jo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ln}from"@solana/spl-token";var dt={chainId:101,address:jo.default.toBase58(),programId:Ln.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ge={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Ln.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 Dt}from"@solana/web3.js";import{PublicKey as Z,SystemProgram as On,SYSVAR_RENT_PUBKEY as $o}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Jo}from"@solana/spl-token";function s({pubkey:o,isSigner:e=!1,isWritable:n=!0}){return{pubkey:o,isWritable:n,isSigner:e}}var _t=[s({pubkey:Jo,isWritable:!1}),s({pubkey:On.programId,isWritable:!1}),s({pubkey:$o,isWritable:!1})];function Nn({publicKey:o,transformSol:e}){let n=Mn(o.toString());if(n instanceof Z)return e&&n.equals(Te)?ke:n;if(e&&n.toString()===Te.toBase58())return ke;if(typeof n=="string"){if(n===Z.default.toBase58())return Z.default;try{return new Z(n)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Mn(o){try{return new Z(o)}catch{return o}}var Et=new Z("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Be=new Z("SysvarRent111111111111111111111111111111111"),Ds=new Z("SysvarC1ock11111111111111111111111111111111"),pt=new Z("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),ft=new Z("Sysvar1nstructions1111111111111111111111111"),ei=On.programId,Ws=new Z("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),qs=new Z("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Us=new Z("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Gs=new Z("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),zs=new Z("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Xs=new Z("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ys=new Z("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Qs=new Z("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Zs=new Z("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Hs=new Z("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),js=new Z("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ke=new Z("So11111111111111111111111111111111111111112"),Te=Z.default;var Wt=class{constructor({mint:e,decimals:n,symbol:i,name:a,skipMint:c=!1,isToken2022:u=!1}){if(e===Te.toBase58()||e instanceof Dt&&Te.equals(e)){this.decimals=ge.decimals,this.symbol=ge.symbol,this.name=ge.name,this.mint=new Dt(ge.address),this.isToken2022=!1;return}this.decimals=n,this.symbol=i||e.toString().substring(0,6),this.name=a||e.toString().substring(0,6),this.mint=c?Dt.default:Nn({publicKey:e}),this.isToken2022=u}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ie=Wt;ie.WSOL=new Wt(q(M({},ge),{mint:ge.address}));var qt=class{constructor({decimals:e,symbol:n="UNKNOWN",name:i="UNKNOWN"}){this.decimals=e,this.symbol=n,this.name=i}equals(e){return this===e}},yt=qt;yt.SOL=new qt(dt);import ti from"bn.js";var cu=new X(new ti(100));var yu=D("Raydium_price");import{merge as IK}from"lodash";import Iu from"axios";var Fn={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"},ni=q(M({},Fn),{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 Yu=D("Raydium_Api");import{PublicKey as dm,SystemProgram as pm}from"@solana/web3.js";import{AccountLayout as Pm,createAssociatedTokenAccountIdempotentInstruction as Am,TOKEN_PROGRAM_ID as wm,TOKEN_2022_PROGRAM_ID as km}from"@solana/spl-token";import{PublicKey as ve,sendAndConfirmTransaction as Qt,SystemProgram as ui,Transaction as et,TransactionMessage as tt,VersionedTransaction as nt}from"@solana/web3.js";import ci from"axios";import{PublicKey as Ut,AddressLookupTableAccount as Me}from"@solana/web3.js";async function Gt({connection:o,address:e,cluster:n="mainnet"}){let i=await we(o,[...new Set(e.map(c=>c.toString()))].map(c=>new Ut(c))),a={};for(let c=0;c<e.length;c++){let u=i[c],d=e[c];if(!u)continue;let b=new Me({key:d,state:Me.deserialize(u.data)});a[d.toString()]=b,n==="devnet"?Ne[d.toString()]=b:Oe[d.toString()]=b}return a}var Oe={},zt=async o=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Oe[e])return Oe;let n=new Ut(e),i=await o.getAccountInfo(n);return i&&(Oe[e]=new Me({key:n,state:Me.deserialize(i.data)})),Oe},Ne={},Xt=async o=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Ne[e])return Ne;let n=new Ut(e),i=await o.getAccountInfo(n);return i&&(Ne[e]=new Me({key:n,state:Me.deserialize(i.data)})),Ne};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 vn,Keypair as _n,PublicKey as oi,Transaction as En,TransactionMessage as ii,VersionedTransaction as Dn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ri}from"@solana/spl-token";var Vn=D("Raydium_txUtil"),Wn=1644;function bt(o){let e=[],n=[];return o.microLamports&&(e.push(vn.setComputeUnitPrice({microLamports:o.microLamports})),n.push(H.SetComputeUnitPrice)),o.units&&(e.push(vn.setComputeUnitLimit({units:o.units})),n.push(H.SetComputeUnitLimit)),{instructions:e,instructionTypes:n}}async function Fe(o,e){var i,a;let n=e!=null?e:"confirmed";return(a=await((i=o.getLatestBlockhash)==null?void 0:i.call(o,{commitment:n})))==null?void 0:a.blockhash}async function gt(o,e){return o.getSignatureStatuses([e]),new Promise((n,i)=>{let a=setTimeout(i,6e4);o.onSignature(e,c=>{if(clearTimeout(a),!c.err){n("");return}i(Object.assign(c.err,{txId:e}))},"confirmed")})}function Yt(o,e){o.length<1&&Vn.logWithError(`no instructions provided: ${o.toString()}`),e.length<1&&Vn.logWithError(`no signers provided:, ${e.toString()}`);let n=new En;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=e[0],n.add(...o);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<Wn}catch{return!1}}function ee(o,e){let[n,i]=oi.findProgramAddressSync(o,e);return{publicKey:n,nonce:i}}function $e({instructions:o,payer:e,signers:n}){return Yt(o,[e,...n])}function Je({instructions:o,payer:e,lookupTableAddressAccount:n,recentBlockhash:i=_n.generate().publicKey.toString()}){let c=new ii({payerKey:e,recentBlockhash:i,instructions:o}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new Dn(c).serialize()).toString("base64").length<Wn}catch{return!1}}var ai=o=>Buffer.isBuffer(o)?o:o instanceof Uint8Array?Buffer.from(o.buffer,o.byteOffset,o.byteLength):Buffer.from(o),si=o=>{let e=o.serialize({requireAllSignatures:!1,verifySignatures:!1});o instanceof Dn&&(e=ai(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Se(o){let e=[];return o.forEach(n=>{n instanceof En&&(n.recentBlockhash||(n.recentBlockhash=ri.toBase58()),n.feePayer||(n.feePayer=_n.generate().publicKey)),e.push(si(n))}),console.log("simulate tx string:",e),e}var Pt=2e3,At=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment,this.loopMultiTxStatus=!!e.loopMultiTxStatus}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var i;let e=(await ci.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:n}=(i=e==null?void 0:e[15])!=null?i:{};if(!!n)return{units:6e5,microLamports:Math.min(Math.ceil(n*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:n,instructionTypes:i}=bt(e);return this.instructions.unshift(...n),this.instructionTypes.unshift(...i),!0}return!1}addTipInstruction(e){var n;return e?(this.endInstructions.push(ui.transfer({fromPubkey:(n=e.feePayer)!=null?n:this.feePayer,toPubkey:new ve(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(H.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:n}){try{let i=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(i))return;n&&this.instructions.unshift(...n)}catch{n&&this.instructions.unshift(...n)}}addInstruction({instructions:e=[],endInstructions:n=[],signers:i=[],instructionTypes:a=[],endInstructionTypes:c=[],lookupTableAddress:u=[]}){return this.instructions.push(...e),this.endInstructions.push(...n),this.signers.push(...i),this.instructionTypes.push(...a),this.endInstructionTypes.push(...c),this.lookupTableAddress.push(...u.filter(d=>d!==ve.default.toString())),this}async versionBuild({txVersion:e,extInfo:n,lookupTableAddress:i}){return e===0?await this.buildV0(q(M({},n||{}),{lookupTableAddress:i})):this.build(n)}build(e){var i;let n=new et;return this.allInstructions.length&&n.add(...this.allInstructions),n.feePayer=this.feePayer,((i=this.owner)==null?void 0:i.signer)&&!this.signers.some(a=>a.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 a=>{var p;let{recentBlockHash:c,skipPreflight:u=!0,sendAndConfirm:d,notSendToRpc:b}=a||{},g=c!=null?c:await Fe(this.connection,this.blockhashCommitment);if(n.recentBlockhash=g,this.signers.length&&n.sign(...this.signers),Se([n]),(p=this.owner)!=null&&p.isKeyPair)return{txId:d?await Qt(this.connection,n,this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:u}):await this.connection.sendRawTransaction(n.serialize(),{skipPreflight:u}),signedTx:n};if(this.signAllTransactions){let w=await this.signAllTransactions([n]);if(this.signers.length)for(let P of w)try{P.sign(...this.signers)}catch{}return{txId:b?"":await this.connection.sendRawTransaction(w[0].serialize(),{skipPreflight:u}),signedTx:w[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var g;let{extraPreBuildData:n=[],extInfo:i}=e,{transaction:a}=this.build(i),c=n.filter(p=>p.transaction.instructions.length>0),u=[a,...c.map(p=>p.transaction)],d=[this.signers,...c.map(p=>p.signers)],b=[...this.instructionTypes,...c.map(p=>p.instructionTypes).flat()];return(g=this.owner)!=null&&g.signer&&d.forEach(p=>{p.some(w=>w.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:u,signers:d,instructionTypes:b,execute:async p=>{var C;let{sequentially:w,onTxUpdate:P,skipTxCount:A=0,recentBlockHash:B,skipPreflight:k=!0}=p||{},I=B!=null?B:await Fe(this.connection,this.blockhashCommitment);if((C=this.owner)!=null&&C.isKeyPair){if(w){let x=[],v=0;for(let _ of u){if(++v,v<=A)continue;let h=await Qt(this.connection,_,this.signers.find(S=>S.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:k});x.push(h)}return{txIds:x,signedTxs:u}}return{txIds:await await Promise.all(u.map(async x=>(x.recentBlockhash=I,await this.connection.sendRawTransaction(x.serialize(),{skipPreflight:k})))),signedTxs:u}}if(this.signAllTransactions){let x=u.map((_,h)=>(_.recentBlockhash=I,d[h].length&&_.sign(...d[h]),_));Se(x);let v=await this.signAllTransactions(x);if(w){let _=0,h=[],S=async()=>{if(!v[_])return;let K=await this.connection.sendRawTransaction(v[_].serialize(),{skipPreflight:k});h.push({txId:K,status:"sent",signedTx:v[_]}),P==null||P([...h]),_++;let O=!1,N=null,E=null,ae=z=>{N!==null&&clearInterval(N),E!==null&&this.connection.removeSignatureListener(E);let U=h.findIndex(oe=>oe.txId===K);if(U>-1){if(h[U].status==="error"||h[U].status==="success")return;h[U].status=z.err?"error":"success"}P==null||P([...h]),z.err||S()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var z;if(O){clearInterval(N);return}try{let U=await this.connection.getTransaction(K,{commitment:"confirmed",maxSupportedTransactionVersion:0});U&&(O=!0,clearInterval(N),ae({err:((z=U.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",K))}catch(U){O=!0,clearInterval(N),console.error("getTransaction timeout:",U,K)}},Pt)),E=this.connection.onSignature(K,z=>{if(O){this.connection.removeSignatureListener(E);return}O=!0,ae(z)},"confirmed"),this.connection.getSignatureStatus(K)};return await S(),{txIds:h.map(K=>K.txId),signedTxs:v}}else{let _=[];for(let h=0;h<v.length;h+=1){let S=await this.connection.sendRawTransaction(v[h].serialize(),{skipPreflight:k});_.push(S)}return{txIds:_,signedTxs:v}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:n,extInfo:i}){return n===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:i||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:i})}async buildV0(e){var k;let B=e||{},{lookupTableCache:n={},lookupTableAddress:i=[],forerunCreate:a,recentBlockhash:c}=B,u=be(B,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),d=M(M({},this.cluster==="devnet"?await Xt(this.connection):await zt(this.connection)),n),b=Array.from(new Set([...i,...this.lookupTableAddress])),g=[];for(let I of b)d[I]===void 0&&g.push(new ve(I));let p=await Gt({connection:this.connection,address:g});for(let[I,C]of Object.entries(p))d[I]=C;let w=a?ve.default.toBase58():c!=null?c:await Fe(this.connection,this.blockhashCommitment),P=new tt({payerKey:this.feePayer,recentBlockhash:w,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(d));((k=this.owner)==null?void 0:k.signer)&&!this.signers.some(I=>I.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let A=new nt(P);return A.sign(this.signers),{builder:this,transaction:A,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async I=>{var _;let{skipPreflight:C=!0,sendAndConfirm:x,notSendToRpc:v}=I||{};if(Se([A]),(_=this.owner)!=null&&_.isKeyPair){let h=await this.connection.sendTransaction(A,{skipPreflight:C});return x&&await gt(this.connection,h),{txId:h,signedTx:A}}if(this.signAllTransactions){let h=await this.signAllTransactions([A]);if(this.signers.length)for(let S of h)try{S.sign(this.signers)}catch{}return{txId:v?"":await this.connection.sendTransaction(h[0],{skipPreflight:C}),signedTx:h[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:u||{}}}async buildV0MultiTx(e){var g;let{extraPreBuildData:n=[],buildProps:i}=e,{transaction:a}=await this.buildV0(i),c=n.filter(p=>p.builder.instructions.length>0),u=[a,...c.map(p=>p.transaction)],d=[this.signers,...c.map(p=>p.signers)],b=[...this.instructionTypes,...c.map(p=>p.instructionTypes).flat()];return(g=this.owner)!=null&&g.signer&&d.forEach(p=>{p.some(w=>w.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),u.forEach(async(p,w)=>{p.sign(d[w])}),{builder:this,transactions:u,signers:d,instructionTypes:b,buildProps:i,execute:async p=>{var k;let{sequentially:w,onTxUpdate:P,recentBlockHash:A,skipPreflight:B=!0}=p||{};if(A&&u.forEach(I=>I.message.recentBlockhash=A),Se(u),(k=this.owner)!=null&&k.isKeyPair){if(w){let I=[];for(let C of u){let x=await this.connection.sendTransaction(C,{skipPreflight:B});await gt(this.connection,x),I.push(x)}return{txIds:I,signedTxs:u}}return{txIds:await Promise.all(u.map(async I=>await this.connection.sendTransaction(I,{skipPreflight:B}))),signedTxs:u}}if(this.signAllTransactions){let I=await this.signAllTransactions(u);if(w){let C=0,x=[],v=async()=>{if(!I[C])return;let _=await this.connection.sendTransaction(I[C],{skipPreflight:B});x.push({txId:_,status:"sent",signedTx:I[C]}),P==null||P([...x]),C++;let h=!1,S=null,K=null,O=N=>{S!==null&&clearInterval(S),K!==null&&this.connection.removeSignatureListener(K);let E=x.findIndex(ae=>ae.txId===_);if(E>-1){if(x[E].status==="error"||x[E].status==="success")return;x[E].status=N.err?"error":"success"}P==null||P([...x]),N.err||v()};this.loopMultiTxStatus&&(S=setInterval(async()=>{var N;if(h){clearInterval(S);return}try{let E=await this.connection.getTransaction(_,{commitment:"confirmed",maxSupportedTransactionVersion:0});E&&(h=!0,clearInterval(S),O({err:((N=E.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",_))}catch(E){h=!0,clearInterval(S),console.error("getTransaction timeout:",E,_)}},Pt)),K=this.connection.onSignature(_,N=>{if(h){this.connection.removeSignatureListener(K);return}h=!0,O(N)},"confirmed"),this.connection.getSignatureStatus(_)};return v(),{txIds:[],signedTxs:I}}else{let C=[];for(let x=0;x<I.length;x+=1){let v=await this.connection.sendTransaction(I[x],{skipPreflight:B});C.push(v)}return{txIds:C,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuild(e){var P;let w=e||{},{splitIns:n=[],computeBudgetConfig:i}=w,a=be(w,["splitIns","computeBudgetConfig"]),c=i?bt(i):{instructions:[],instructionTypes:[]},u=this.signers.reduce((A,B)=>q(M({},A),{[B.publicKey.toBase58()]:B}),{}),d=[],b=[],g=[],p=0;if(this.allInstructions.forEach(A=>{let B=[...g,A],k=i?[...c.instructions,...B]:B,C=[...new Set(B.map(x=>x.keys.filter(v=>v.isSigner).map(v=>v.pubkey.toString())).flat()).values()].map(x=>new ve(x));if(A!==n[p]&&g.length<12&&($e({instructions:k,payer:this.feePayer,signers:C})||$e({instructions:B,payer:this.feePayer,signers:C})))g.push(A);else{if(g.length===0)throw Error("item ins too big");p+=A===n[p]?1:0,$e({instructions:i?[...c.instructions,...g]:[...g],payer:this.feePayer,signers:C})?d.push(new et().add(...c.instructions,...g)):d.push(new et().add(...g)),b.push(Array.from(new Set(g.map(x=>x.keys.filter(v=>v.isSigner).map(v=>v.pubkey.toString())).flat())).map(x=>u[x]).filter(x=>x!==void 0)),g=[A]}}),g.length>0){let B=[...new Set(g.map(k=>k.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat()).values()].map(k=>u[k]).filter(k=>k!==void 0);$e({instructions:i?[...c.instructions,...g]:[...g],payer:this.feePayer,signers:B.map(k=>k.publicKey)})?d.push(new et().add(...c.instructions,...g)):d.push(new et().add(...g)),b.push(B)}return d.forEach(A=>A.feePayer=this.feePayer),(P=this.owner)!=null&&P.signer&&b.forEach(A=>{A.some(B=>B.publicKey.equals(this.owner.publicKey))||A.push(this.owner.signer)}),{builder:this,transactions:d,signers:b,instructionTypes:this.instructionTypes,execute:async A=>{var _;let{sequentially:B,onTxUpdate:k,skipTxCount:I=0,recentBlockHash:C,skipPreflight:x=!0}=A||{},v=C!=null?C:await Fe(this.connection,this.blockhashCommitment);if(d.forEach(async(h,S)=>{h.recentBlockhash=v,b[S].length&&h.sign(...b[S])}),Se(d),(_=this.owner)!=null&&_.isKeyPair){if(B){let h=0,S=[];for(let K of d){if(++h,h<=I){S.push("tx skipped");continue}let O=await Qt(this.connection,K,this.signers.find(N=>N.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:x});S.push(O)}return{txIds:S,signedTxs:d}}return{txIds:await Promise.all(d.map(async h=>await this.connection.sendRawTransaction(h.serialize(),{skipPreflight:x}))),signedTxs:d}}if(this.signAllTransactions){let h=await this.signAllTransactions(d.slice(I,d.length)),S=[...d.slice(0,I),...h];if(B){let K=0,O=[],N=async()=>{if(!S[K])return;K<I&&(O.push({txId:"",status:"success",signedTx:S[K]}),k==null||k([...O]),K++,N());let E=await this.connection.sendRawTransaction(S[K].serialize(),{skipPreflight:x});O.push({txId:E,status:"sent",signedTx:S[K]}),k==null||k([...O]),K++;let ae=!1,z=null,U=null,oe=Y=>{z!==null&&clearInterval(z),U!==null&&this.connection.removeSignatureListener(U);let se=O.findIndex(Pe=>Pe.txId===E);if(se>-1){if(O[se].status==="error"||O[se].status==="success")return;O[se].status=Y.err?"error":"success"}k==null||k([...O]),Y.err||N()};this.loopMultiTxStatus&&(z=setInterval(async()=>{var Y;if(ae){clearInterval(z);return}try{let se=await this.connection.getTransaction(E,{commitment:"confirmed",maxSupportedTransactionVersion:0});se&&(ae=!0,clearInterval(z),oe({err:((Y=se.meta)==null?void 0:Y.err)||null}),console.log("tx status from getTransaction:",E))}catch(se){ae=!0,clearInterval(z),console.error("getTransaction timeout:",se,E)}},Pt)),U=this.connection.onSignature(E,Y=>{if(ae){this.connection.removeSignatureListener(U);return}ae=!0,oe(Y)},"confirmed"),this.connection.getSignatureStatus(E)};return await N(),{txIds:O.map(E=>E.txId),signedTxs:S}}else{let K=[];for(let O=0;O<S.length;O+=1){let N=await this.connection.sendRawTransaction(S[O].serialize(),{skipPreflight:x});K.push(N)}return{txIds:K,signedTxs:S}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}async sizeCheckBuildV0(e){var _;let v=e||{},{computeBudgetConfig:n,splitIns:i=[],lookupTableCache:a={},lookupTableAddress:c=[],insCountLimit:u=12}=v,d=be(v,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),b=M(M({},this.cluster==="devnet"?await Xt(this.connection):await zt(this.connection)),a),g=Array.from(new Set([...this.lookupTableAddress,...c])),p=[];for(let h of g)b[h]===void 0&&p.push(new ve(h));let w=await Gt({connection:this.connection,address:p});for(let[h,S]of Object.entries(w))b[h]=S;let P=n?bt(n):{instructions:[],instructionTypes:[]},A=await Fe(this.connection,this.blockhashCommitment),B=this.signers.reduce((h,S)=>q(M({},h),{[S.publicKey.toBase58()]:S}),{}),k=[],I=[],C=[],x=0;if(this.allInstructions.forEach(h=>{let S=[...C,h],K=n?[...P.instructions,...S]:S;if(h!==i[x]&&C.length<u&&(Je({instructions:K,payer:this.feePayer,lookupTableAddressAccount:b})||Je({instructions:S,payer:this.feePayer,lookupTableAddressAccount:b})))C.push(h);else{if(C.length===0)throw Error("item ins too big");x+=h===i[x]?1:0;let O={};for(let N of[...new Set(g)])b[N]!==void 0&&(O[N]=b[N]);if(n&&Je({instructions:[...P.instructions,...C],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:A})){let N=new tt({payerKey:this.feePayer,recentBlockhash:A,instructions:[...P.instructions,...C]}).compileToV0Message(Object.values(b));k.push(new nt(N))}else{let N=new tt({payerKey:this.feePayer,recentBlockhash:A,instructions:[...C]}).compileToV0Message(Object.values(b));k.push(new nt(N))}I.push(Array.from(new Set(C.map(N=>N.keys.filter(E=>E.isSigner).map(E=>E.pubkey.toString())).flat())).map(N=>B[N]).filter(N=>N!==void 0)),C=[h]}}),C.length>0){let S=[...new Set(C.map(K=>K.keys.filter(O=>O.isSigner).map(O=>O.pubkey.toString())).flat()).values()].map(K=>B[K]).filter(K=>K!==void 0);if(n&&Je({instructions:[...P.instructions,...C],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:A})){let K=new tt({payerKey:this.feePayer,recentBlockhash:A,instructions:[...P.instructions,...C]}).compileToV0Message(Object.values(b));k.push(new nt(K))}else{let K=new tt({payerKey:this.feePayer,recentBlockhash:A,instructions:[...C]}).compileToV0Message(Object.values(b));k.push(new nt(K))}I.push(S)}return(_=this.owner)!=null&&_.signer&&I.forEach(h=>{h.some(S=>S.publicKey.equals(this.owner.publicKey))||h.push(this.owner.signer)}),k.forEach((h,S)=>{h.sign(I[S])}),{builder:this,transactions:k,buildProps:e,signers:I,instructionTypes:this.instructionTypes,execute:async h=>{var ae;let{sequentially:S,onTxUpdate:K,skipTxCount:O=0,recentBlockHash:N,skipPreflight:E=!0}=h||{};if(k.map(async(z,U)=>{I[U].length&&z.sign(I[U]),N&&(z.message.recentBlockhash=N)}),Se(k),(ae=this.owner)!=null&&ae.isKeyPair){if(S){let z=0,U=[];for(let oe of k){if(++z,z<=O){console.log("skip tx: ",z),U.push("tx skipped");continue}let Y=await this.connection.sendTransaction(oe,{skipPreflight:E});await gt(this.connection,Y),U.push(Y)}return{txIds:U,signedTxs:k}}return{txIds:await Promise.all(k.map(async z=>await this.connection.sendTransaction(z,{skipPreflight:E}))),signedTxs:k}}if(this.signAllTransactions){let z=await this.signAllTransactions(k.slice(O,k.length)),U=[...k.slice(0,O),...z];if(S){let oe=0,Y=[],se=async()=>{if(!U[oe])return;if(oe<O){Y.push({txId:"",status:"success",signedTx:U[oe]}),K==null||K([...Y]),oe++,se();return}let Pe=await this.connection.sendTransaction(U[oe],{skipPreflight:E});Y.push({txId:Pe,status:"sent",signedTx:U[oe]}),K==null||K([...Y]),oe++;let Ye=!1,Le=null,ut=null,In=Ie=>{Le!==null&&clearInterval(Le),ut!==null&&this.connection.removeSignatureListener(ut);let Ae=Y.findIndex(Fo=>Fo.txId===Pe);if(Ae>-1){if(Y[Ae].status==="error"||Y[Ae].status==="success")return;Y[Ae].status=Ie.err?"error":"success"}K==null||K([...Y]),Ie.err||se()};this.loopMultiTxStatus&&(Le=setInterval(async()=>{var Ie;if(Ye){clearInterval(Le);return}try{let Ae=await this.connection.getTransaction(Pe,{commitment:"confirmed",maxSupportedTransactionVersion:0});Ae&&(Ye=!0,clearInterval(Le),In({err:((Ie=Ae.meta)==null?void 0:Ie.err)||null}),console.log("tx status from getTransaction:",Pe))}catch(Ae){Ye=!0,clearInterval(Le),console.error("getTransaction timeout:",Ae,Pe)}},Pt)),ut=this.connection.onSignature(Pe,Ie=>{if(Ye){this.connection.removeSignatureListener(ut);return}Ye=!0,In(Ie)},"confirmed"),this.connection.getSignatureStatus(Pe)};return se(),{txIds:[],signedTxs:U}}else{let oe=[];for(let Y=0;Y<U.length;Y+=1){let se=await this.connection.sendTransaction(U[Y],{skipPreflight:E});oe.push(se)}return{txIds:oe,signedTxs:U}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:d||{}}}};var Zt=(...o)=>o.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),le=class{constructor({scope:e,moduleName:n}){this.disabled=!1;this.scope=e,this.logger=D(n)}createTxBuilder(e){return this.scope.checkOwner(),new At({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,loopMultiTxStatus:this.scope.loopMultiTxStatus,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(Zt(e))}logInfo(...e){this.logger.info(Zt(e))}logAndCreateError(...e){let n=Zt(e);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Ul,SystemProgram as zl}from"@solana/web3.js";import Ql from"bn.js";import{createCloseAccountInstruction as $l,createInitializeAccountInstruction as Jl,createTransferInstruction as em,TOKEN_PROGRAM_ID as tm}from"@solana/spl-token";import{Keypair as Rl,PublicKey as Ll}from"@solana/web3.js";import Ml from"bn.js";import{TOKEN_PROGRAM_ID as Vl}from"@solana/spl-token";import{PublicKey as ki}from"@solana/web3.js";import Xn,{isBN as Yn}from"bn.js";import{bits as li,BitStructure as Fc,blob as mi,Blob as vc,cstr as Vc,f32 as _c,f32be as Ec,f64 as Dc,f64be as Wc,greedy as qc,Layout as di,ns64 as Uc,ns64be as Gc,nu64 as zc,nu64be as Xc,offset as pi,s16 as Yc,s16be as Qc,s24 as Zc,s24be as Hc,s32 as fi,s32be as jc,s40 as $c,s40be as Jc,s48 as el,s48be as tl,s8 as nl,seq as yi,struct as ol,Structure as bi,u16 as gi,u16be as il,u24 as rl,u24be as al,u32 as Pi,u32be as sl,u40 as ul,u40be as cl,u48 as ll,u48be as ml,u8 as Ai,UInt as wi,union as dl,Union as pl,unionLayoutDiscriminator as fl,utf8 as yl}from"@solana/buffer-layout";var wt=di,qn=bi;var Ht=wi;var Un=Ai,j=gi;var kt=Pi;var fe=fi;var Gn=yi;var V=mi;var jt=li,zn=pi;var Ke=class extends wt{constructor(n,i,a){super(n,a);this.blob=V(n),this.signed=i}decode(n,i=0){let a=new Xn(this.blob.decode(n,i),10,"le");return this.signed?a.fromTwos(this.span*8).clone():a}encode(n,i,a=0){return typeof n=="number"&&(n=new Xn(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),i,a)}},Tt=class extends wt{constructor(n){super(8,n);this._lower=jt(kt(),!1),this._upper=jt(kt(),!1)}addBoolean(n){this._lower.fields.length<32?this._lower.addBoolean(n):this._upper.addBoolean(n)}decode(n,i=0){let a=this._lower.decode(n,i),c=this._upper.decode(n,i+this._lower.span);return M(M({},a),c)}encode(n,i,a=0){return this._lower.encode(n,i,a)+this._upper.encode(n,i,a+this._lower.span)}};function f(o){return new Ht(1,o)}function Q(o){return new Ht(4,o)}function t(o){return new Ke(8,!1,o)}function F(o){return new Ke(16,!1,o)}function Qn(o){return new Ke(1,!0,o)}function Ve(o){return new Ke(8,!0,o)}function Zn(o){return new Ke(16,!0,o)}var ot=class extends wt{constructor(n,i,a,c){super(n.span,c);this.layout=n,this.decoder=i,this.encoder=a}decode(n,i){return this.decoder(this.layout.decode(n,i))}encode(n,i,a){return this.layout.encode(this.encoder(n),i,a)}getSpan(n,i){return this.layout.getSpan(n,i)}};function r(o){return new ot(V(32),e=>new ki(e),e=>e.toBuffer(),o)}function de(o){return new ot(Un(),Ti,hi,o)}function Ti(o){if(o===0)return!1;if(o===1)return!0;throw new Error("Invalid bool: "+o)}function hi(o){return o?1:0}function Hn(o,e){let n=kt("length"),i=y([n,T(o,zn(n,-n.span),"values")]);return new ot(i,({values:a})=>a,a=>({values:a}),e)}var $t=class extends qn{decode(e,n){return super.decode(e,n)}};function y(o,e,n){return new $t(o,e,n)}function T(o,e,n){let i,a=typeof e=="number"?e:Yn(e)?e.toNumber():new Proxy(e,{get(c,u){if(!i){let d=Reflect.get(c,"count");i=Yn(d)?d.toNumber():d,Reflect.set(c,"count",i)}return Reflect.get(c,u)},set(c,u,d){return u==="count"&&(i=d),Reflect.set(c,u,d)}});return Gn(o,a,n)}var ht=y([r("mint"),r("owner"),t("amount"),Q("delegateOption"),r("delegate"),f("state"),Q("isNativeOption"),t("isNative"),t("delegatedAmount"),Q("closeAuthorityOption"),r("closeAuthority")]);import{PublicKey as Ig,SystemProgram as Bg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as xg}from"@solana/spl-token";import{PublicKey as Bi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Si}from"@solana/spl-token";function ue(o,e,n){return ee([o.toBuffer(),(n!=null?n:Si).toBuffer(),e.toBuffer()],new Bi("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as R}from"@solana/web3.js";var $n=new R("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Jn=new R("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),eo=new R("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Jt=new R("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Om=new R("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),xi=new R("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),to=new R("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),no=new R("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Nm=new R("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Ki=new R("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),oo=new R("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Ci=new R("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ri=new R("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),io=new R("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Mm=new R("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Li=new R("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),en=new R("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Oi=new R("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Fm=new R("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ni=new R("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Mi=new R("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Fi=new R("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),vm=new R("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Vm=new R("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),_m=new R("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Em=new R("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Dm=new R("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var he={OPEN_BOOK_PROGRAM:new R("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new R("Ray1111111111111111111111111111111111111111"),AMM_V4:new R("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new R("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new R("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new R("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new R("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new R("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new R("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new R("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new R("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new R("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:R.default,Router:new R("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new R("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new R("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new R("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new R("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new R("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new R("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new R("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new R("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new R("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new R("Ray1111111111111111111111111111111111111111")};import Vg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as Gy,TOKEN_2022_PROGRAM_ID as zy,TOKEN_PROGRAM_ID as Xy}from"@solana/spl-token";import{PublicKey as Qy}from"@solana/web3.js";import Hy from"bn.js";import $y from"decimal.js";import{TOKEN_PROGRAM_ID as ed}from"@solana/spl-token";import{PublicKey as id}from"@solana/web3.js";var vi=y([Q("mintAuthorityOption"),r("mintAuthority"),t("supply"),f("decimals"),f("isInitialized"),Q("freezeAuthorityOption"),r("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as dy,TOKEN_2022_PROGRAM_ID as py,TOKEN_PROGRAM_ID as fy}from"@solana/spl-token";import{Keypair as gy,PublicKey as Py,SystemProgram as wy,TransactionInstruction as ky}from"@solana/web3.js";import hy from"bn.js";import W from"bn.js";var Ee=new W(1).shln(64);var Vi=new W(1).shln(128),tn=new W(1).shln(64).subn(1),_i=new W(1).shln(128).subn(1);var De=new W("4295048016"),We=new W("79226673521066979257578248091"),Ei=new W("59543866431248"),Di=new W("184467440737095516"),Wi=new W("15793534762490258745");var nn=60,bd=new W("18446743708227953217"),qi=[{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,ro=100;var ao=10,so=100,Bt=14;var te=new W(0),qe=new W(1),gd=new W(-1);var Pd=new W("18446744073700000000");var Ui=y([V(8),f("bump"),j("index"),r("owner"),Q("protocolFeeRate"),Q("tradeFeeRate"),j("tickSpacing"),Q("fundFeeRate"),T(Q(),1),r("fundOwner"),T(t(),3)]),Gi=y([Q("blockTimestamp"),Ve("tickCumulative"),T(t(),4)]),uo=y([V(8),de("initialized"),t("recentEpoch"),j("observationIndex"),r("poolId"),T(Gi,ro,"observations"),T(t(),4)]),zi=y([j("filterPeriod"),j("decayPeriod"),j("reductionFactor"),Q("dynamicFeeControl"),Q("maxVolatilityAccumulator"),fe("tickSpacingIndexReference"),Q("volatilityReference"),Q("volatilityAccumulator"),t("lastUpdateTimestamp"),T(f(),46)]),Xi=y([f("state"),t("openTime"),t("endTime"),t("lastUpdateTime"),F("emissionsPerSecondX64"),t("totalEmissioned"),t("claimed"),r("mint"),r("vault"),r("creator"),F("growthGlobalX64")]),on=y([V(8),f("bump"),r("configId"),r("creator"),r("mintA"),r("mintB"),r("vaultA"),r("vaultB"),r("observationId"),f("mintDecimalsA"),f("mintDecimalsB"),j("tickSpacing"),F("liquidity"),F("sqrtPriceX64"),fe("tickCurrent"),Q(),F("feeGrowthGlobalX64A"),F("feeGrowthGlobalX64B"),t("protocolFeesTokenA"),t("protocolFeesTokenB"),T(F(),4),f("status"),f("feeOn"),V(6),T(Xi,it,"rewardInfos"),V(8*16,"tickArrayBitmap"),T(t(),4),t("fundFeesTokenA"),t("fundFeesTokenB"),t("startTime"),t("recentEpoch"),zi.replicate("dynamicFeeInfo"),T(t(),46)]),Yi=y([F("growthInsideLastX64"),t("rewardAmountOwed")]),Qi=y([V(8),f("bump"),r("nftMint"),r("poolId"),fe("tickLower"),fe("tickUpper"),F("liquidity"),F("feeGrowthInsideLastX64A"),F("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),T(Yi,it,"rewardInfos"),t("recentEpoch"),T(t(),7)]),Td=y([V(8),f("bump"),r("poolId"),fe("tickLower"),fe("tickUpper"),F("liquidity"),F("feeGrowthInsideLastX64A"),F("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),T(F(),it,"rewardGrowthInside"),t("recentEpoch"),T(t(),7)]),Zi=y([fe("tick"),Zn("liquidityNet"),F("liquidityGross"),F("feeGrowthOutsideX64A"),F("feeGrowthOutsideX64B"),T(F(),it,"rewardGrowthsOutsideX64"),t("orderPhase"),t("ordersAmount"),t("partFilledOrdersRemaining"),F("unfilledRatioX64"),T(Q(),3)]),co=y([V(8),r("poolId"),fe("startTickIndex"),T(Zi,nn,"ticks"),f("initializedTickCount"),t("recentEpoch"),T(f(),107)]),Hi=y([V(8),f("bump"),T(r(),ao,"operationOwners"),T(r(),so,"whitelistMints")]),ji=y([V(8),r("poolId"),r("owner"),fe("tick"),de("zeroForOne"),t("orderPhase"),t("totalAmount"),t("filledAmount"),t("settleBase"),t("settleOutput"),t("openTime"),F("unfilledRatioX64"),T(t(),4)]),lo=y([V(8),r("poolId"),V(8*8*Bt,"positiveTickArrayBitmap"),V(8*8*Bt,"negativeTickArrayBitmap")]),hd=y([V(8),j("index"),j("filterPeriod"),j("decayPeriod"),j("reductionFactor"),Q("dynamicFeeControl"),Q("maxVolatilityAccumulator"),T(t(),8)]),$i=y([V(8),r("wallet"),f("nonceIndex"),t("orderNonce"),T(t(),4)]),Id=y([t(),f("bump"),r("owner"),r("poolId"),r("positionId"),r("nftAccount"),T(t(),8)]),Ji=y([V(8),f("bump"),r("lockOwner"),r("poolId"),r("positionId"),r("nftAccount"),r("lockNftMint"),t("recentEpoch"),T(t(),8)]);import xd from"bn.js";var _d=Buffer.from("amm_config","utf8"),tr=Buffer.from("pool","utf8"),nr=Buffer.from("pool_vault","utf8"),Ed=Buffer.from("pool_reward_vault","utf8"),Dd=Buffer.from("position","utf8"),Wd=Buffer.from("tick_array","utf8"),qd=Buffer.from("operation","utf8"),Ud=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Gd=Buffer.from("observation","utf8"),zd=Buffer.from("support_mint","utf8"),Xd=Buffer.from("dynamic_fee_config","utf8"),Yd=Buffer.from("permission","utf8");var Qd=Buffer.from("locked_position","utf8");import{sha256 as gr}from"js-sha256";import or from"bn.js";import $d from"decimal.js";var ep=new or(1).shln(256).subn(1);import Pp from"bn.js";import sp from"bn.js";import cp from"decimal.js";import hp from"bn.js";import Bp from"decimal.js";import{PublicKey as df}from"@solana/web3.js";import ff from"bn.js";import{TOKEN_2022_PROGRAM_ID as Tf,TOKEN_PROGRAM_ID as hf}from"@solana/spl-token";import xf from"decimal.js";import ef from"bn.js";import Wp from"bn.js";import _f from"bn.js";function ne(o){let e=`global:${o}`;return Buffer.from(gr.digest(e)).slice(0,8)}uo.span;var Ly=D("Raydium_Clmm"),Oy={createPool:ne("create_pool"),createCustomizablePool:ne("create_customizable_pool"),createPermissionedPool:ne("create_permissioned_pool"),openPositionV2:ne("open_position_v2"),openPositionWithToken22Nft:ne("open_position_with_token22_nft"),closePosition:ne("close_position"),increaseLiquidityV2:ne("increase_liquidity_v2"),decreaseLiquidityV2:ne("decrease_liquidity_v2"),initializeReward:ne("initialize_reward"),setRewardParams:ne("set_reward_params"),updateRewardInfos:ne("update_reward_infos"),collectRemainingRewards:ne("collect_remaining_rewards"),swapV2:ne("swap_v2"),openLimitOrder:ne("open_limit_order"),increaseLimitOrder:ne("increase_limit_order"),decreaseLimitOrder:ne("decrease_limit_order"),settleLimitOrder:ne("settle_limit_order"),closeLimitOrde