UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

1 lines 88.4 kB
var Eo=Object.defineProperty,Do=Object.defineProperties;var Wo=Object.getOwnPropertyDescriptors;var lt=Object.getOwnPropertySymbols;var xn=Object.prototype.hasOwnProperty,Kn=Object.prototype.propertyIsEnumerable;var Sn=(o,e,n)=>e in o?Eo(o,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):o[e]=n,M=(o,e)=>{for(var n in e||(e={}))xn.call(e,n)&&Sn(o,n,e[n]);if(lt)for(var n of lt(e))Kn.call(e,n)&&Sn(o,n,e[n]);return o},D=(o,e)=>Do(o,Wo(e));var be=(o,e)=>{var n={};for(var i in o)xn.call(o,i)&&e.indexOf(i)<0&&(n[i]=o[i]);if(o!=null&&lt)for(var i of lt(o))e.indexOf(i)<0&&Kn.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 Xa,TransactionInstruction as $}from"@solana/web3.js";import Mt from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Ya,createAssociatedTokenAccountIdempotentInstruction as Qa,TOKEN_PROGRAM_ID as me}from"@solana/spl-token";import{PublicKey as Go}from"@solana/web3.js";import{get as Cn,set as qo}from"lodash";var Ft=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}},Rn={},Uo={};function W(o){let e=Cn(Rn,o);if(!e){let n=Cn(Uo,o);e=new Ft({name:o,logLevel:n}),qo(Rn,o,e)}return e}import{MINT_SIZE as ds,TOKEN_PROGRAM_ID as ps,getTransferFeeConfig as fs,unpackMint as ys}from"@solana/spl-token";var vt=W("Raydium_accountInfo_util");async function ke(o,e,n){let{batchRequest:i,commitment:a="confirmed",chunkCount:m=100}=M({batchRequest:!1},n),l=Vt(e,m),d=new Array(l.length).fill([]);if(i){let b=l.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&&vt.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"&&vt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(A[0],"base64"),executable:B,lamports:k,owner:new Go(I),rentEpoch:C}}return null})))}else try{d=await Promise.all(l.map(b=>o.getMultipleAccountsInfo(b,a)))}catch(b){b instanceof Error&&vt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${b.message}`)}return d.flat()}import Ce from"bn.js";import oR from"decimal.js";import $o from"big.js";import Os from"bn.js";import zo from"toformat";var Xo=zo,Ze=Xo;import dt from"big.js";import Qo from"bn.js";import Zo from"decimal.js-light";import He from"bn.js";var Ln=9007199254740991;function G(o){let e=W("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>=Ln||o<=-Ln)&&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 mt=W("module/fraction"),_t=Ze(dt),je=Ze(Zo),Ho={[0]:je.ROUND_DOWN,[1]:je.ROUND_HALF_UP,[2]:je.ROUND_UP},jo={[0]:dt.roundDown,[1]:dt.roundHalfUp,[2]:dt.roundUp},X=class{constructor(e,n=new Qo(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)||mt.logWithError(`${e} is not an integer.`),e<=0&&mt.logWithError(`${e} is not positive.`),je.set({precision:e+1,rounding:Ho[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)||mt.logWithError(`${e} is not an integer.`),e<0&&mt.logWithError(`${e} is negative.`),_t.DP=e,_t.RM=jo[i]||1,new _t(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,n)}isZero(){return this.numerator.isZero()}};var Ws=W("Raydium_amount"),qs=Ze($o);import{PublicKey as ei}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as On}from"@solana/spl-token";var pt={chainId:101,address:ei.default.toBase58(),programId:On.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Pe={chainId:101,address:"So11111111111111111111111111111111111111112",programId:On.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 Wt}from"@solana/web3.js";import{PublicKey as Z,SystemProgram as Nn,SYSVAR_RENT_PUBKEY as ti}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ni}from"@solana/spl-token";function s({pubkey:o,isSigner:e=!1,isWritable:n=!0}){return{pubkey:o,isWritable:n,isSigner:e}}var Et=[s({pubkey:ni,isWritable:!1}),s({pubkey:Nn.programId,isWritable:!1}),s({pubkey:ti,isWritable:!1})];function Mn({publicKey:o,transformSol:e}){let n=Fn(o.toString());if(n instanceof Z)return e&&n.equals(Te)?ge:n;if(e&&n.toString()===Te.toBase58())return ge;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 Fn(o){try{return new Z(o)}catch{return o}}var Dt=new Z("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),he=new Z("SysvarRent111111111111111111111111111111111"),oi=new Z("SysvarC1ock11111111111111111111111111111111"),ft=new Z("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),yt=new Z("Sysvar1nstructions1111111111111111111111111"),vn=Nn.programId,Hs=new Z("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),js=new Z("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),$s=new Z("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Js=new Z("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),eu=new Z("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),tu=new Z("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),nu=new Z("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),ou=new Z("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),iu=new Z("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),ru=new Z("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),au=new Z("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ge=new Z("So11111111111111111111111111111111111111112"),Te=Z.default;var qt=class{constructor({mint:e,decimals:n,symbol:i,name:a,skipMint:m=!1,isToken2022:l=!1}){if(e===Te.toBase58()||e instanceof Wt&&Te.equals(e)){this.decimals=Pe.decimals,this.symbol=Pe.symbol,this.name=Pe.name,this.mint=new Wt(Pe.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=m?Wt.default:Mn({publicKey:e}),this.isToken2022=l}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ie=qt;ie.WSOL=new qt(D(M({},Pe),{mint:Pe.address}));var Ut=class{constructor({decimals:e,symbol:n="UNKNOWN",name:i="UNKNOWN"}){this.decimals=e,this.symbol=n,this.name=i}equals(e){return this===e}},bt=Ut;bt.SOL=new Ut(pt);import ii from"bn.js";var Pu=new X(new ii(100));var Iu=W("Raydium_price");import{merge as oC}from"lodash";import Nu from"axios";var Vn={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_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",OWNER_LOCK_POSITION:"/position/clmm-lock/{owner}",IDO_KEYS:"/ido/key/ids",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"},ri=D(M({},Vn),{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 nc=W("Raydium_Api");import{PublicKey as wm,SystemProgram as km}from"@solana/web3.js";import{AccountLayout as Sm,createAssociatedTokenAccountIdempotentInstruction as xm,TOKEN_PROGRAM_ID as Km,TOKEN_2022_PROGRAM_ID as Cm}from"@solana/spl-token";import{PublicKey as ve,sendAndConfirmTransaction as Zt,SystemProgram as mi,Transaction as et,TransactionMessage as tt,VersionedTransaction as nt}from"@solana/web3.js";import di from"axios";import{PublicKey as Gt,AddressLookupTableAccount as Me}from"@solana/web3.js";async function zt({connection:o,address:e,cluster:n="mainnet"}){let i=await ke(o,[...new Set(e.map(m=>m.toString()))].map(m=>new Gt(m))),a={};for(let m=0;m<e.length;m++){let l=i[m],d=e[m];if(!l)continue;let b=new Me({key:d,state:Me.deserialize(l.data)});a[d.toString()]=b,n==="devnet"?Ne[d.toString()]=b:Oe[d.toString()]=b}return a}var Oe={},Xt=async o=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Oe[e])return Oe;let n=new Gt(e),i=await o.getAccountInfo(n);return i&&(Oe[e]=new Me({key:n,state:Me.deserialize(i.data)})),Oe},Ne={},Yt=async o=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Ne[e])return Ne;let n=new Gt(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 _n,Keypair as Dn,PublicKey as ai,Transaction as Wn,TransactionMessage as si,VersionedTransaction as qn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ui}from"@solana/spl-token";var En=W("Raydium_txUtil"),Un=1644;function gt(o){let e=[],n=[];return o.microLamports&&(e.push(_n.setComputeUnitPrice({microLamports:o.microLamports})),n.push(H.SetComputeUnitPrice)),o.units&&(e.push(_n.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 Pt(o,e){return o.getSignatureStatuses([e]),new Promise((n,i)=>{let a=setTimeout(i,6e4);o.onSignature(e,m=>{if(clearTimeout(a),!m.err){n("");return}i(Object.assign(m.err,{txId:e}))},"confirmed")})}function Qt(o,e){o.length<1&&En.logWithError(`no instructions provided: ${o.toString()}`),e.length<1&&En.logWithError(`no signers provided:, ${e.toString()}`);let n=new Wn;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=e[0],n.add(...o);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<Un}catch{return!1}}function J(o,e){let[n,i]=ai.findProgramAddressSync(o,e);return{publicKey:n,nonce:i}}function $e({instructions:o,payer:e,signers:n}){return Qt(o,[e,...n])}function Je({instructions:o,payer:e,lookupTableAddressAccount:n,recentBlockhash:i=Dn.generate().publicKey.toString()}){let m=new si({payerKey:e,recentBlockhash:i,instructions:o}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new qn(m).serialize()).toString("base64").length<Un}catch{return!1}}var ci=o=>Buffer.isBuffer(o)?o:o instanceof Uint8Array?Buffer.from(o.buffer,o.byteOffset,o.byteLength):Buffer.from(o),li=o=>{let e=o.serialize({requireAllSignatures:!1,verifySignatures:!1});o instanceof qn&&(e=ci(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 Wn&&(n.recentBlockhash||(n.recentBlockhash=ui.toBase58()),n.feePayer||(n.feePayer=Dn.generate().publicKey)),e.push(li(n))}),console.log("simulate tx string:",e),e}var At=2e3,wt=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 di.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}=gt(e);return this.instructions.unshift(...n),this.instructionTypes.unshift(...i),!0}return!1}addTipInstruction(e){var n;return e?(this.endInstructions.push(mi.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:m=[],lookupTableAddress:l=[]}){return this.instructions.push(...e),this.endInstructions.push(...n),this.signers.push(...i),this.instructionTypes.push(...a),this.endInstructionTypes.push(...m),this.lookupTableAddress.push(...l.filter(d=>d!==ve.default.toString())),this}async versionBuild({txVersion:e,extInfo:n,lookupTableAddress:i}){return e===0?await this.buildV0(D(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 f;let{recentBlockHash:m,skipPreflight:l=!0,sendAndConfirm:d,notSendToRpc:b}=a||{},g=m!=null?m:await Fe(this.connection,this.blockhashCommitment);if(n.recentBlockhash=g,this.signers.length&&n.sign(...this.signers),Se([n]),(f=this.owner)!=null&&f.isKeyPair)return{txId:d?await Zt(this.connection,n,this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:l}):await this.connection.sendRawTransaction(n.serialize(),{skipPreflight:l}),signedTx:n};if(this.signAllTransactions){let 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:l}),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),m=n.filter(f=>f.transaction.instructions.length>0),l=[a,...m.map(f=>f.transaction)],d=[this.signers,...m.map(f=>f.signers)],b=[...this.instructionTypes,...m.map(f=>f.instructionTypes).flat()];return(g=this.owner)!=null&&g.signer&&d.forEach(f=>{f.some(w=>w.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:l,signers:d,instructionTypes:b,execute:async f=>{var C;let{sequentially:w,onTxUpdate:P,skipTxCount:A=0,recentBlockHash:B,skipPreflight:k=!0}=f||{},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 l){if(++v,v<=A)continue;let h=await Zt(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:l}}return{txIds:await await Promise.all(l.map(async x=>(x.recentBlockhash=I,await this.connection.sendRawTransaction(x.serialize(),{skipPreflight:k})))),signedTxs:l}}if(this.signAllTransactions){let x=l.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)}},At)),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:m}=B,l=be(B,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),d=M(M({},this.cluster==="devnet"?await Yt(this.connection):await Xt(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 f=await zt({connection:this.connection,address:g});for(let[I,C]of Object.entries(f))d[I]=C;let w=a?ve.default.toBase58():m!=null?m: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 Pt(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:l||{}}}async buildV0MultiTx(e){var g;let{extraPreBuildData:n=[],buildProps:i}=e,{transaction:a}=await this.buildV0(i),m=n.filter(f=>f.builder.instructions.length>0),l=[a,...m.map(f=>f.transaction)],d=[this.signers,...m.map(f=>f.signers)],b=[...this.instructionTypes,...m.map(f=>f.instructionTypes).flat()];return(g=this.owner)!=null&&g.signer&&d.forEach(f=>{f.some(w=>w.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),l.forEach(async(f,w)=>{f.sign(d[w])}),{builder:this,transactions:l,signers:d,instructionTypes:b,buildProps:i,execute:async f=>{var k;let{sequentially:w,onTxUpdate:P,recentBlockHash:A,skipPreflight:B=!0}=f||{};if(A&&l.forEach(I=>I.message.recentBlockhash=A),Se(l),(k=this.owner)!=null&&k.isKeyPair){if(w){let I=[];for(let C of l){let x=await this.connection.sendTransaction(C,{skipPreflight:B});await Pt(this.connection,x),I.push(x)}return{txIds:I,signedTxs:l}}return{txIds:await Promise.all(l.map(async I=>await this.connection.sendTransaction(I,{skipPreflight:B}))),signedTxs:l}}if(this.signAllTransactions){let I=await this.signAllTransactions(l);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,_)}},At)),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"]),m=i?gt(i):{instructions:[],instructionTypes:[]},l=this.signers.reduce((A,B)=>D(M({},A),{[B.publicKey.toBase58()]:B}),{}),d=[],b=[],g=[],f=0;if(this.allInstructions.forEach(A=>{let B=[...g,A],k=i?[...m.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[f]&&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");f+=A===n[f]?1:0,$e({instructions:i?[...m.instructions,...g]:[...g],payer:this.feePayer,signers:C})?d.push(new et().add(...m.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=>l[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=>l[k]).filter(k=>k!==void 0);$e({instructions:i?[...m.instructions,...g]:[...g],payer:this.feePayer,signers:B.map(k=>k.publicKey)})?d.push(new et().add(...m.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 Zt(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(Ae=>Ae.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)}},At)),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:m=[],insCountLimit:l=12}=v,d=be(v,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),b=M(M({},this.cluster==="devnet"?await Yt(this.connection):await Xt(this.connection)),a),g=Array.from(new Set([...this.lookupTableAddress,...m])),f=[];for(let h of g)b[h]===void 0&&f.push(new ve(h));let w=await zt({connection:this.connection,address:f});for(let[h,S]of Object.entries(w))b[h]=S;let P=n?gt(n):{instructions:[],instructionTypes:[]},A=await Fe(this.connection,this.blockhashCommitment),B=this.signers.reduce((h,S)=>D(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<l&&(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 Pt(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 Ae=await this.connection.sendTransaction(U[ne],{skipPreflight:E});Y.push({txId:Ae,status:"sent",signedTx:U[ne]}),K==null||K([...Y]),ne++;let Ye=!1,Le=null,ct=null,Bn=Be=>{Le!==null&&clearInterval(Le),ct!==null&&this.connection.removeSignatureListener(ct);let we=Y.findIndex(_o=>_o.txId===Ae);if(we>-1){if(Y[we].status==="error"||Y[we].status==="success")return;Y[we].status=Be.err?"error":"success"}K==null||K([...Y]),Be.err||se()};this.loopMultiTxStatus&&(Le=setInterval(async()=>{var Be;if(Ye){clearInterval(Le);return}try{let we=await this.connection.getTransaction(Ae,{commitment:"confirmed",maxSupportedTransactionVersion:0});we&&(Ye=!0,clearInterval(Le),Bn({err:((Be=we.meta)==null?void 0:Be.err)||null}),console.log("tx status from getTransaction:",Ae))}catch(we){Ye=!0,clearInterval(Le),console.error("getTransaction timeout:",we,Ae)}},At)),ct=this.connection.onSignature(Ae,Be=>{if(Ye){this.connection.removeSignatureListener(ct);return}Ye=!0,Bn(Be)},"confirmed"),this.connection.getSignatureStatus(Ae)};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 Ht=(...o)=>o.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),ue=class{constructor({scope:e,moduleName:n}){this.disabled=!1;this.scope=e,this.logger=W(n)}createTxBuilder(e){return this.scope.checkOwner(),new wt({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(Ht(e))}logInfo(...e){this.logger.info(Ht(e))}logAndCreateError(...e){let n=Ht(e);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as jl,SystemProgram as Jl}from"@solana/web3.js";import nm from"bn.js";import{createCloseAccountInstruction as am,createInitializeAccountInstruction as sm,createTransferInstruction as um,TOKEN_PROGRAM_ID as cm}from"@solana/spl-token";import{Keypair as _l,PublicKey as El}from"@solana/web3.js";import ql from"bn.js";import{TOKEN_PROGRAM_ID as zl}from"@solana/spl-token";import{PublicKey as Bi}from"@solana/web3.js";import Zn,{isBN as Hn}from"bn.js";import{bits as pi,BitStructure as Gc,blob as fi,Blob as zc,cstr as Xc,f32 as Yc,f32be as Qc,f64 as Zc,f64be as Hc,greedy as jc,Layout as yi,ns64 as $c,ns64be as Jc,nu64 as bi,nu64be as el,offset as gi,s16 as tl,s16be as nl,s24 as ol,s24be as il,s32 as Pi,s32be as rl,s40 as al,s40be as sl,s48 as ul,s48be as cl,s8 as ll,seq as Ai,struct as ml,Structure as wi,u16 as ki,u16be as dl,u24 as pl,u24be as fl,u32 as Ti,u32be as yl,u40 as bl,u40be as gl,u48 as Pl,u48be as Al,u8 as hi,UInt as Ii,union as wl,Union as kl,unionLayoutDiscriminator as Tl,utf8 as hl}from"@solana/buffer-layout";var kt=yi,Gn=wi;var jt=Ii;var zn=hi,ee=ki;var Tt=Ti;var Xn=bi;var fe=Pi;var Yn=Ai;var V=fi;var $t=pi,Qn=gi;var Ke=class extends kt{constructor(n,i,a){super(n,a);this.blob=V(n),this.signed=i}decode(n,i=0){let a=new Zn(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 Zn(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),i,a)}},ht=class extends kt{constructor(n){super(8,n);this._lower=$t(Tt(),!1),this._upper=$t(Tt(),!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),m=this._upper.decode(n,i+this._lower.span);return M(M({},a),m)}encode(n,i,a=0){return this._lower.encode(n,i,a)+this._upper.encode(n,i,a+this._lower.span)}};function p(o){return new jt(1,o)}function Q(o){return new jt(4,o)}function t(o){return new Ke(8,!1,o)}function F(o){return new Ke(16,!1,o)}function jn(o){return new Ke(1,!0,o)}function Ve(o){return new Ke(8,!0,o)}function $n(o){return new Ke(16,!0,o)}var ot=class extends kt{constructor(n,i,a,m){super(n.span,m);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 Bi(e),e=>e.toBuffer(),o)}function de(o){return new ot(zn(),Si,xi,o)}function Si(o){if(o===0)return!1;if(o===1)return!0;throw new Error("Invalid bool: "+o)}function xi(o){return o?1:0}function Jn(o,e){let n=Tt("length"),i=y([n,T(o,Qn(n,-n.span),"values")]);return new ot(i,({values:a})=>a,a=>({values:a}),e)}var Jt=class extends Gn{decode(e,n){return super.decode(e,n)}};function y(o,e,n){return new Jt(o,e,n)}function T(o,e,n){let i,a=typeof e=="number"?e:Hn(e)?e.toNumber():new Proxy(e,{get(m,l){if(!i){let d=Reflect.get(m,"count");i=Hn(d)?d.toNumber():d,Reflect.set(m,"count",i)}return Reflect.get(m,l)},set(m,l,d){return l==="count"&&(i=d),Reflect.set(m,l,d)}});return Yn(o,a,n)}var It=y([r("mint"),r("owner"),t("amount"),Q("delegateOption"),r("delegate"),p("state"),Q("isNativeOption"),t("isNative"),t("delegatedAmount"),Q("closeAuthorityOption"),r("closeAuthority")]);import{PublicKey as Sg,SystemProgram as xg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Cg}from"@solana/spl-token";import{PublicKey as Ci}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ri}from"@solana/spl-token";function ce(o,e,n){return J([o.toBuffer(),(n!=null?n:Ri).toBuffer(),e.toBuffer()],new Ci("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as R}from"@solana/web3.js";var to=new R("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),no=new R("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),oo=new R("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),en=new R("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Dm=new R("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Li=new R("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),io=new R("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),ro=new R("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Wm=new R("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Oi=new R("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ao=new R("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Ni=new R("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Mi=new R("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),so=new R("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),qm=new R("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Fi=new R("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),vi=new R("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Vi=new R("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),_i=new R("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Ei=new R("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),tn=new R("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Di=new R("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Um=new R("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Wi=new R("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),qi=new R("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Ui=new R("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Gm=new R("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),zm=new R("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Xm=new R("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Ym=new R("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Qm=new R("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX"),it={IDO_PROGRAM_ID_V1:vi,IDO_PROGRAM_ID_V2:Vi,IDO_PROGRAM_ID_V3:_i,IDO_PROGRAM_ID_V4:Ei};var Ie={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 Eg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as Xy,TOKEN_2022_PROGRAM_ID as Yy,TOKEN_PROGRAM_ID as Qy}from"@solana/spl-token";import{PublicKey as Hy}from"@solana/web3.js";import $y from"bn.js";import eb from"decimal.js";import{TOKEN_PROGRAM_ID as ud}from"@solana/spl-token";import{PublicKey as dd}from"@solana/web3.js";var Gi=y([Q("mintAuthorityOption"),r("mintAuthority"),t("supply"),p("decimals"),p("isInitialized"),Q("freezeAuthorityOption"),r("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as fy,TOKEN_2022_PROGRAM_ID as yy,TOKEN_PROGRAM_ID as by}from"@solana/spl-token";import{Keypair as Ay,PublicKey as wy,SystemProgram as Ty,TransactionInstruction as hy}from"@solana/web3.js";import By from"bn.js";import q from"bn.js";var Ee=new q(1).shln(64);var zi=new q(1).shln(128),nn=new q(1).shln(64).subn(1),Xi=new q(1).shln(128).subn(1);var De=new q("4295048016"),We=new q("79226673521066979257578248091"),Yi=new q("59543866431248"),Qi=new q("184467440737095516"),Zi=new q("15793534762490258745");var on=60,Id=new q("18446743708227953217"),Hi=[{bit:0,factor:new q("fffcb933bd6fb800",16)},{bit:1,factor:new q("fff97272373d4000",16)},{bit:2,factor:new q("fff2e50f5f657000",16)},{bit:3,factor:new q("ffe5caca7e10f000",16)},{bit:4,factor:new q("ffcb9843d60f7000",16)},{bit:5,factor:new q("ff973b41fa98e800",16)},{bit:6,factor:new q("ff2ea16466c9b000",16)},{bit:7,factor:new q("fe5dee046a9a3800",16)},{bit:8,factor:new q("fcbe86c7900bb000",16)},{bit:9,factor:new q("f987a7253ac65800",16)},{bit:10,factor:new q("f3392b0822bb6000",16)},{bit:11,factor:new q("e7159475a2caf000",16)},{bit:12,factor:new q("d097f3bdfd2f2000",16)},{bit:13,factor:new q("a9f746462d9f8000",16)},{bit:14,factor:new q("70d869a156f31c00",16)},{bit:15,factor:new q("31be135f97ed3200",16)},{bit:16,factor:new q("9aa508b5b85a500",16)},{bit:17,factor:new q("5d6af8dedc582c",16)},{bit:18,factor:new q("2216e584f5fa",16)}];var rt=3,uo=100;var co=10,lo=100,St=14;var te=new q(0),qe=new q(1),Bd=new q(-1);var Sd=new q("18446744073700000000");var ji=y([V(8),p("bump"),ee("index"),r("owner"),Q("protocolFeeRate"),Q("tradeFeeRate"),ee("tickSpacing"),Q("fundFeeRate"),T(Q(),1),r("fundOwner"),T(t(),3)]),$i=y([Q("blockTimestamp"),Ve("tickCumulative"),T(t(),4)]),mo=y([V(8),de("initialized"),t("recentEpoch"),ee("observationIndex"),r("poolId"),T($i,uo,"observations"),T(t(),4)]),Ji=y([ee("filterPeriod"),ee("decayPeriod"),ee("reductionFactor"),Q("dynamicFeeControl"),Q("maxVolatilityAccumulator"),fe("tickSpacingIndexReference"),Q("volatilityReference"),Q("volatilityAccumulator"),t("lastUpdateTimestamp"),T(p(),46)]),er=y([p("state"),t("openTime"),t("endTime"),t("lastUpdateTime"),F("emissionsPerSecondX64"),t("totalEmissioned"),t("claimed"),r("mint"),r("vault"),r("creator"),F("growthGlobalX64")]),rn=y([V(8),p("bump"),r("configId"),r("creator"),r("mintA"),r("mintB"),r("vaultA"),r("vaultB"),r("observationId"),p("mintDecimalsA"),p("mintDecimalsB"),ee("tickSpacing"),F("liquidity"),F("sqrtPriceX64"),fe("tickCurrent"),Q(),F("feeGrowthGlobalX64A"),F("feeGrowthGlobalX64B"),t("protocolFeesTokenA"),t("protocolFeesTokenB"),T(F(),4),p("status"),p("feeOn"),V(6),T(er,rt,"rewardInfos"),V(8*16,"tickArrayBitmap"),T(t(),4),t("fundFeesTokenA"),t("fundFeesTokenB"),t("startTime"),t("recentEpoch"),Ji.replicate("dynamicFeeInfo"),T(t(),46)]),tr=y([F("growthInsideLastX64"),t("rewardAmountOwed")]),nr=y([V(8),p("bump"),r("nftMint"),r("poolId"),fe("tickLower"),fe("tickUpper"),F("liquidity"),F("feeGrowthInsideLastX64A"),F("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),T(tr,rt,"rewardInfos"),t("recentEpoch"),T(t(),7)]),Rd=y([V(8),p("bump"),r("poolId"),fe("tickLower"),fe("tickUpper"),F("liquidity"),F("feeGrowthInsideLastX64A"),F("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),T(F(),rt,"rewardGrowthInside"),t("recentEpoch"),T(t(),7)]),or=y([fe("tick"),$n("liquidityNet"),F("liquidityGross"),F("feeGrowthOutsideX64A"),F("feeGrowthOutsideX64B"),T(F(),rt,"rewardGrowthsOutsideX64"),t("orderPhase"),t("ordersAmount"),t("partFilledOrdersRemaining"),F("unfilledRatioX64"),T(Q(),3)]),po=y([V(8),r("poolId"),fe("startTickIndex"),T(or,on,"ticks"),p("initializedTickCount"),t("recentEpoch"),T(p(),107)]),ir=y([V(8),p("bump"),T(r(),co,"operationOwners"),T(r(),lo,"whitelistMints")]),rr=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)]),fo=y([V(8),r("poolId"),V(8*8*St,"positiveTickArrayBitmap"),V(8*8*St,"negativeTickArrayBitmap")]),Ld=y([V(8),ee("index"),ee("filterPeriod"),ee("decayPeriod"),ee("reductionFactor"),Q("dynamicFeeControl"),Q("maxVolatilityAccumulator"),T(t(),8)]),ar=y([V(8),r("wallet"),p("nonceIndex"),t("orderNonce"),T(t(),4)]),Od=y([t(),p("bump"),r("owner"),r("poolId"),r("positionId"),r("nftAccount"),T(t(),8)]),sr=y([V(8),p("bump"),r("lockOwner"),r("poolId"),r("positionId"),r("nftAccount"),r("lockNftMint"),t("recentEpoch"),T(t(),8)]);import Fd from"bn.js";var Xd=Buffer.from("amm_config","utf8"),ur=Buffer.from("pool","utf8"),cr=Buffer.from("pool_vault","utf8"),Yd=Buffer.from("pool_reward_vault","utf8"),Qd=Buffer.from("position","utf8"),Zd=Buffer.from("tick_array","utf8"),Hd=Buffer.from("operation","utf8"),jd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),$d=Buffer.from("observation","utf8"),Jd=Buffer.from("support_mint","utf8"),ep=Buffer.from("dynamic_fee_config","utf8");var tp=Buffer.from("locked_position","utf8");import{sha256 as Ir}from"js-sha256";import lr from"bn.js";import rp from"decimal.js";var sp=new lr(1).shln(256).subn(1);import Bp from"bn.js";import fp from"bn.js";import bp from"decimal.js";import Rp from"bn.js";import Op from"decimal.js";import{PublicKey as Af}from"@solana/web3.js";import kf from"bn.js";import{TOKEN_2022_PROGRAM_ID as Cf}from"@solana/spl-token";import Nf from"decimal.js";import uf from"bn.js";import Qp from"bn.js";import qf from"bn.js";function oe(o){let e=`global:${o}`;return Buffer.from(Ir.digest(e)).slice(0,8)}mo.span;var Ny=W("Raydium_Clmm"),My={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_