UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

1 lines 87.6 kB
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 Fa,TransactionInstruction as $}from"@solana/web3.js";import Nt from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as va,createAssociatedTokenAccountIdempotentInstruction as Va,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 ts,TOKEN_PROGRAM_ID as ns,getTransferFeeConfig as os,unpackMint as is}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 AC from"decimal.js";import Zo from"big.js";import ks 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&&lt.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&&lt.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 Rs=D("Raydium_amount"),Ls=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"),Es=new Z("SysvarC1ock11111111111111111111111111111111"),pt=new Z("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),ft=new Z("Sysvar1nstructions1111111111111111111111111"),ei=On.programId,Ds=new Z("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ws=new Z("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),qs=new Z("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Us=new Z("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Gs=new Z("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),zs=new Z("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Xs=new Z("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ys=new Z("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Qs=new Z("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Zs=new Z("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Hs=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 uu=new X(new ti(100));var fu=D("Raydium_price");import{merge as kK}from"lodash";import hu 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 Xu=D("Raydium_Api");import{PublicKey as mm,SystemProgram as dm}from"@solana/web3.js";import{AccountLayout as gm,createAssociatedTokenAccountIdempotentInstruction as Pm,TOKEN_PROGRAM_ID as Am,TOKEN_2022_PROGRAM_ID as wm}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 J(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(ne=>ne.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,ne=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),ne({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,ne(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 ne of k){if(++z,z<=O){console.log("skip tx: ",z),U.push("tx skipped");continue}let Y=await this.connection.sendTransaction(ne,{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 ne=0,Y=[],se=async()=>{if(!U[ne])return;if(ne<O){Y.push({txId:"",status:"success",signedTx:U[ne]}),K==null||K([...Y]),ne++,se();return}let Pe=await this.connection.sendTransaction(U[ne],{skipPreflight:E});Y.push({txId:Pe,status:"sent",signedTx:U[ne]}),K==null||K([...Y]),ne++;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 ne=[];for(let Y=0;Y<U.length;Y+=1){let se=await this.connection.sendTransaction(U[Y],{skipPreflight:E});ne.push(se)}return{txIds:ne,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 ql,SystemProgram as Gl}from"@solana/web3.js";import Yl from"bn.js";import{createCloseAccountInstruction as jl,createInitializeAccountInstruction as $l,createTransferInstruction as Jl,TOKEN_PROGRAM_ID as em}from"@solana/spl-token";import{Keypair as Cl,PublicKey as Rl}from"@solana/web3.js";import Nl 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 Mc,blob as mi,Blob as Fc,cstr as vc,f32 as Vc,f32be as _c,f64 as Ec,f64be as Dc,greedy as Wc,Layout as di,ns64 as qc,ns64be as Uc,nu64 as Gc,nu64be as zc,offset as pi,s16 as Xc,s16be as Yc,s24 as Qc,s24be as Zc,s32 as fi,s32be as Hc,s40 as jc,s40be as $c,s48 as Jc,s48be as el,s8 as tl,seq as yi,struct as nl,Structure as bi,u16 as gi,u16be as ol,u24 as il,u24be as rl,u32 as Pi,u32be as al,u40 as sl,u40be as ul,u48 as cl,u48be as ll,u8 as Ai,UInt as wi,union as ml,Union as dl,unionLayoutDiscriminator as pl,utf8 as fl}from"@solana/buffer-layout";var wt=di,qn=bi;var Ht=wi;var Un=Ai,ee=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 wg,SystemProgram as kg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as hg}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 J([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"),Lm=new R("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),xi=new R("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),to=new R("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),no=new R("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Om=new R("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Ki=new R("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),oo=new R("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Ci=new R("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ri=new R("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),io=new R("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Nm=new R("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Li=new R("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),en=new R("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Oi=new R("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Mm=new R("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ni=new R("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Mi=new R("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Fi=new R("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Fm=new R("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),vm=new R("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Vm=new R("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),_m=new R("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Em=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 Ng from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as Dy,TOKEN_2022_PROGRAM_ID as Wy,TOKEN_PROGRAM_ID as qy}from"@solana/spl-token";import{PublicKey as Gy}from"@solana/web3.js";import Xy from"bn.js";import Qy from"decimal.js";import{TOKEN_PROGRAM_ID as Jm}from"@solana/spl-token";import{PublicKey as od}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 uy,TOKEN_2022_PROGRAM_ID as cy,TOKEN_PROGRAM_ID as ly}from"@solana/spl-token";import{Keypair as py,PublicKey as fy,SystemProgram as by,TransactionInstruction as gy}from"@solana/web3.js";import Ay 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,yd=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),bd=new W(-1);var gd=new W("18446744073700000000");var Ui=y([V(8),f("bump"),ee("index"),r("owner"),Q("protocolFeeRate"),Q("tradeFeeRate"),ee("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"),ee("observationIndex"),r("poolId"),T(Gi,ro,"observations"),T(t(),4)]),zi=y([ee("filterPeriod"),ee("decayPeriod"),ee("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"),ee("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)]),kd=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")]),Td=y([V(8),ee("index"),ee("filterPeriod"),ee("decayPeriod"),ee("reductionFactor"),Q("dynamicFeeControl"),Q("maxVolatilityAccumulator"),T(t(),8)]),$i=y([V(8),r("wallet"),f("nonceIndex"),t("orderNonce"),T(t(),4)]),hd=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 Sd from"bn.js";var Vd=Buffer.from("amm_config","utf8"),er=Buffer.from("pool","utf8"),tr=Buffer.from("pool_vault","utf8"),_d=Buffer.from("pool_reward_vault","utf8"),Ed=Buffer.from("position","utf8"),Dd=Buffer.from("tick_array","utf8"),Wd=Buffer.from("operation","utf8"),qd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Ud=Buffer.from("observation","utf8"),Gd=Buffer.from("support_mint","utf8"),zd=Buffer.from("dynamic_fee_config","utf8");var Xd=Buffer.from("locked_position","utf8");import{sha256 as br}from"js-sha256";import nr from"bn.js";import Hd from"decimal.js";var $d=new nr(1).shln(256).subn(1);import bp from"bn.js";import rp from"bn.js";import sp from"decimal.js";import kp from"bn.js";import hp from"decimal.js";import{PublicKey as lf}from"@solana/web3.js";import df from"bn.js";import{TOKEN_2022_PROGRAM_ID as wf,TOKEN_PROGRAM_ID as kf}from"@solana/spl-token";import Bf from"decimal.js";import $p from"bn.js";import Ep from"bn.js";import vf from"bn.js";function oe(o){let e=`global:${o}`;return Buffer.from(br.digest(e)).slice(0,8)}uo.span;var xy=D("Raydium_Clmm"),Ky={createPool:oe("create_pool"),createCustomizablePool:oe("create_customizable_pool"),openPositionV2:oe("open_position_v2"),openPositionWithToken22Nft:oe("open_position_with_token22_nft"),closePosition:oe("close_position"),increaseLiquidityV2:oe("increase_liquidity_v2"),decreaseLiquidityV2:oe("decrease_liquidity_v2"),initializeReward:oe("initialize_reward"),setRewardParams:oe("set_reward_params"),updateRewardInfos:oe("update_reward_infos"),collectRemainingRewards:oe("collect_remaining_rewards"),swapV2:oe("swap_v2"),openLimitOrder:oe("open_limit_order"),increaseLimitOrder:oe("increase_limit_order"),decreaseLimitOrder:oe("decrease_limit_order"),settleLimitOrder:oe("settle_limit_order"),closeLimitOrder:oe("close_limit_order")};import{PublicKey as pn}from"@solana/web3.js";var un=y