UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

1 lines 77.7 kB
var go=Object.defineProperty,Po=Object.defineProperties;var Ao=Object.getOwnPropertyDescriptors;var st=Object.getOwnPropertySymbols;var sn=Object.prototype.hasOwnProperty,un=Object.prototype.propertyIsEnumerable;var an=(r,e,n)=>e in r?go(r,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[e]=n,O=(r,e)=>{for(var n in e||(e={}))sn.call(e,n)&&an(r,n,e[n]);if(st)for(var n of st(e))un.call(e,n)&&an(r,n,e[n]);return r},D=(r,e)=>Po(r,Ao(e));var pe=(r,e)=>{var n={};for(var o in r)sn.call(r,o)&&e.indexOf(o)<0&&(n[o]=r[o]);if(r!=null&&st)for(var o of st(r))e.indexOf(o)<0&&un.call(r,o)&&(n[o]=r[o]);return n};import ba from"bn.js";import _ from"bn.js";var j=new _(1).shln(64);var wo=new _(1).shln(128),xt=new _(1).shln(64).subn(1),ko=new _(1).shln(128).subn(1),Ne=-443636,Me=443636,Be=new _("4295048016"),Se=new _("79226673521066979257578248091"),cn=new _("59543866431248"),ln=new _("184467440737095516"),mn=new _("15793534762490258745"),dn=16;var Kt=60,Aa=new _("18446743708227953217"),pn=[{bit:0,factor:new _("fffcb933bd6fb800",16)},{bit:1,factor:new _("fff97272373d4000",16)},{bit:2,factor:new _("fff2e50f5f657000",16)},{bit:3,factor:new _("ffe5caca7e10f000",16)},{bit:4,factor:new _("ffcb9843d60f7000",16)},{bit:5,factor:new _("ff973b41fa98e800",16)},{bit:6,factor:new _("ff2ea16466c9b000",16)},{bit:7,factor:new _("fe5dee046a9a3800",16)},{bit:8,factor:new _("fcbe86c7900bb000",16)},{bit:9,factor:new _("f987a7253ac65800",16)},{bit:10,factor:new _("f3392b0822bb6000",16)},{bit:11,factor:new _("e7159475a2caf000",16)},{bit:12,factor:new _("d097f3bdfd2f2000",16)},{bit:13,factor:new _("a9f746462d9f8000",16)},{bit:14,factor:new _("70d869a156f31c00",16)},{bit:15,factor:new _("31be135f97ed3200",16)},{bit:16,factor:new _("9aa508b5b85a500",16)},{bit:17,factor:new _("5d6af8dedc582c",16)},{bit:18,factor:new _("2216e584f5fa",16)}];var Xe=3,fn=100;var yn=10,bn=100,ut=14;var q=new _(0),we=new _(1),wa=new _(-1);var ka=new _("18446744073700000000");import{PublicKey as Io}from"@solana/web3.js";import{get as gn,set as To}from"lodash";var Ct=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(o=>typeof o=="object"?JSON.stringify(o):o).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}},Pn={},ho={};function E(r){let e=gn(Pn,r);if(!e){let n=gn(ho,r);e=new Ct({name:r,logLevel:n}),To(Pn,r,e)}return e}import{MINT_SIZE as Oa,TOKEN_PROGRAM_ID as Na,getTransferFeeConfig as Ma,unpackMint as Fa}from"@solana/spl-token";var Rt=E("Raydium_accountInfo_util");async function ke(r,e,n){let{batchRequest:o,commitment:a="confirmed",chunkCount:l=100}=O({batchRequest:!1},n),p=Lt(e,l),c=new Array(p.length).fill([]);if(o){let b=p.map(T=>{let K=r._buildArgs([T.map(w=>w.toBase58())],a,"base64");return{methodName:"getMultipleAccounts",args:K}}),P=Lt(b,10);c=(await(await Promise.all(P.map(async T=>await r._rpcBatchRequest(T)))).flat()).map(T=>(T.error&&Rt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${T.error.message}`),T.result.value.map(K=>{if(K){let{data:w,executable:R,lamports:A,owner:k,rentEpoch:B}=K;return w.length!==2&&w[1]!=="base64"&&Rt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(w[0],"base64"),executable:R,lamports:A,owner:new Io(k),rentEpoch:B}}return null})))}else try{c=await Promise.all(p.map(b=>r.getMultipleAccountsInfo(b,a)))}catch(b){b instanceof Error&&Rt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${b.message}`)}return c.flat()}import Le from"bn.js";import pC from"decimal.js";import Oo from"big.js";import $a from"bn.js";import Bo from"toformat";var So=Bo,Qe=So;import lt from"big.js";import Ko from"bn.js";import Co from"decimal.js-light";import Ze from"bn.js";var An=9007199254740991;function re(r){let e=E("Raydium_parseBigNumberish");if(r instanceof Ze)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Ze(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=An||r<=-An)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Ze(String(r))):typeof r=="bigint"?new Ze(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Ze(0))}var ct=E("module/fraction"),Ot=Qe(lt),He=Qe(Co),Ro={[0]:He.ROUND_DOWN,[1]:He.ROUND_HALF_UP,[2]:He.ROUND_UP},Lo={[0]:lt.roundDown,[1]:lt.roundHalfUp,[2]:lt.roundUp},G=class{constructor(e,n=new Ko(1)){this.numerator=re(e),this.denominator=re(n)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new G(this.denominator,this.numerator)}add(e){let n=e instanceof G?e:new G(re(e));return this.denominator.eq(n.denominator)?new G(this.numerator.add(n.numerator),this.denominator):new G(this.numerator.mul(n.denominator).add(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}sub(e){let n=e instanceof G?e:new G(re(e));return this.denominator.eq(n.denominator)?new G(this.numerator.sub(n.numerator),this.denominator):new G(this.numerator.mul(n.denominator).sub(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}mul(e){let n=e instanceof G?e:new G(re(e));return new G(this.numerator.mul(n.numerator),this.denominator.mul(n.denominator))}div(e){let n=e instanceof G?e:new G(re(e));return new G(this.numerator.mul(n.denominator),this.denominator.mul(n.numerator))}toSignificant(e,n={groupSeparator:""},o=1){Number.isInteger(e)||ct.logWithError(`${e} is not an integer.`),e<=0&&ct.logWithError(`${e} is not positive.`),He.set({precision:e+1,rounding:Ro[o]});let a=new He(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return a.toFormat(a.decimalPlaces(),n)}toFixed(e,n={groupSeparator:""},o=1){return Number.isInteger(e)||ct.logWithError(`${e} is not an integer.`),e<0&&ct.logWithError(`${e} is negative.`),Ot.DP=e,Ot.RM=Lo[o]||1,new Ot(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,n)}isZero(){return this.numerator.isZero()}};var ss=E("Raydium_amount"),us=Qe(Oo);import{PublicKey as Mo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as wn}from"@solana/spl-token";var mt={chainId:101,address:Mo.default.toBase58(),programId:wn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},fe={chainId:101,address:"So11111111111111111111111111111111111111112",programId:wn.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 Mt}from"@solana/web3.js";import{PublicKey as X,SystemProgram as kn,SYSVAR_RENT_PUBKEY as Fo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as vo}from"@solana/spl-token";function Fe({pubkey:r,isSigner:e=!1,isWritable:n=!0}){return{pubkey:r,isWritable:n,isSigner:e}}var Vo=[Fe({pubkey:vo,isWritable:!1}),Fe({pubkey:kn.programId,isWritable:!1}),Fe({pubkey:Fo,isWritable:!1})];function Tn({publicKey:r,transformSol:e}){let n=hn(r.toString());if(n instanceof X)return e&&n.equals(xe)?Te:n;if(e&&n.toString()===xe.toBase58())return Te;if(typeof n=="string"){if(n===X.default.toBase58())return X.default;try{return new X(n)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function hn(r){try{return new X(r)}catch{return r}}var Nt=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),je=new X("SysvarRent111111111111111111111111111111111"),bs=new X("SysvarC1ock11111111111111111111111111111111"),dt=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),_o=new X("Sysvar1nstructions1111111111111111111111111"),Eo=kn.programId,gs=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ps=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),As=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),ws=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),ks=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ts=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),hs=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Is=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Bs=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ss=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),xs=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Te=new X("So11111111111111111111111111111111111111112"),xe=X.default;var Ft=class{constructor({mint:e,decimals:n,symbol:o,name:a,skipMint:l=!1,isToken2022:p=!1}){if(e===xe.toBase58()||e instanceof Mt&&xe.equals(e)){this.decimals=fe.decimals,this.symbol=fe.symbol,this.name=fe.name,this.mint=new Mt(fe.address),this.isToken2022=!1;return}this.decimals=n,this.symbol=o||e.toString().substring(0,6),this.name=a||e.toString().substring(0,6),this.mint=l?Mt.default:Tn({publicKey:e}),this.isToken2022=p}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ne=Ft;ne.WSOL=new Ft(D(O({},fe),{mint:fe.address}));var vt=class{constructor({decimals:e,symbol:n="UNKNOWN",name:o="UNKNOWN"}){this.decimals=e,this.symbol=n,this.name=o}equals(e){return this===e}},pt=vt;pt.SOL=new vt(mt);import Do from"bn.js";var Es=new G(new Do(100));var zs=E("Raydium_price");import{merge as yK}from"lodash";import eu from"axios";var In={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"},Wo=D(O({},In),{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 hu=E("Raydium_Api");import{PublicKey as ql,SystemProgram as Ul}from"@solana/web3.js";import{AccountLayout as Ql,createAssociatedTokenAccountIdempotentInstruction as Zl,TOKEN_PROGRAM_ID as Hl,TOKEN_2022_PROGRAM_ID as jl}from"@solana/spl-token";import{PublicKey as De,sendAndConfirmTransaction as qt,SystemProgram as Yo,Transaction as et,TransactionMessage as tt,VersionedTransaction as nt}from"@solana/web3.js";import Qo from"axios";import{PublicKey as Vt,AddressLookupTableAccount as _e}from"@solana/web3.js";async function _t({connection:r,address:e,cluster:n="mainnet"}){let o=await ke(r,[...new Set(e.map(l=>l.toString()))].map(l=>new Vt(l))),a={};for(let l=0;l<e.length;l++){let p=o[l],c=e[l];if(!p)continue;let b=new _e({key:c,state:_e.deserialize(p.data)});a[c.toString()]=b,n==="devnet"?Ve[c.toString()]=b:ve[c.toString()]=b}return a}var ve={},Et=async r=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(ve[e])return ve;let n=new Vt(e),o=await r.getAccountInfo(n);return o&&(ve[e]=new _e({key:n,state:_e.deserialize(o.data)})),ve},Ve={},Dt=async r=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Ve[e])return Ve;let n=new Vt(e),o=await r.getAccountInfo(n);return o&&(Ve[e]=new _e({key:n,state:_e.deserialize(o.data)})),Ve};var $={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 Bn,Keypair as xn,PublicKey as qo,Transaction as Kn,TransactionMessage as Uo,VersionedTransaction as Cn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Go}from"@solana/spl-token";var Sn=E("Raydium_txUtil"),Rn=1644;function ft(r){let e=[],n=[];return r.microLamports&&(e.push(Bn.setComputeUnitPrice({microLamports:r.microLamports})),n.push($.SetComputeUnitPrice)),r.units&&(e.push(Bn.setComputeUnitLimit({units:r.units})),n.push($.SetComputeUnitLimit)),{instructions:e,instructionTypes:n}}async function Ee(r,e){var o,a;let n=e!=null?e:"confirmed";return(a=await((o=r.getLatestBlockhash)==null?void 0:o.call(r,{commitment:n})))==null?void 0:a.blockhash}async function yt(r,e){return r.getSignatureStatuses([e]),new Promise((n,o)=>{let a=setTimeout(o,6e4);r.onSignature(e,l=>{if(clearTimeout(a),!l.err){n("");return}o(Object.assign(l.err,{txId:e}))},"confirmed")})}function Wt(r,e){r.length<1&&Sn.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Sn.logWithError(`no signers provided:, ${e.toString()}`);let n=new Kn;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=e[0],n.add(...r);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<Rn}catch{return!1}}function ye(r,e){let[n,o]=qo.findProgramAddressSync(r,e);return{publicKey:n,nonce:o}}function $e({instructions:r,payer:e,signers:n}){return Wt(r,[e,...n])}function Je({instructions:r,payer:e,lookupTableAddressAccount:n,recentBlockhash:o=xn.generate().publicKey.toString()}){let l=new Uo({payerKey:e,recentBlockhash:o,instructions:r}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new Cn(l).serialize()).toString("base64").length<Rn}catch{return!1}}var zo=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r),Xo=r=>{let e=r.serialize({requireAllSignatures:!1,verifySignatures:!1});r instanceof Cn&&(e=zo(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Ke(r){let e=[];return r.forEach(n=>{n instanceof Kn&&(n.recentBlockhash||(n.recentBlockhash=Go.toBase58()),n.feePayer||(n.feePayer=xn.generate().publicKey)),e.push(Xo(n))}),console.log("simulate tx string:",e),e}var bt=2e3,gt=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 o;let e=(await Qo.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:n}=(o=e==null?void 0:e[15])!=null?o:{};if(!!n)return{units:6e5,microLamports:Math.min(Math.ceil(n*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:n,instructionTypes:o}=ft(e);return this.instructions.unshift(...n),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(e){var n;return e?(this.endInstructions.push(Yo.transfer({fromPubkey:(n=e.feePayer)!=null?n:this.feePayer,toPubkey:new De(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push($.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:n}){try{let o=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(o))return;n&&this.instructions.unshift(...n)}catch{n&&this.instructions.unshift(...n)}}addInstruction({instructions:e=[],endInstructions:n=[],signers:o=[],instructionTypes:a=[],endInstructionTypes:l=[],lookupTableAddress:p=[]}){return this.instructions.push(...e),this.endInstructions.push(...n),this.signers.push(...o),this.instructionTypes.push(...a),this.endInstructionTypes.push(...l),this.lookupTableAddress.push(...p.filter(c=>c!==De.default.toString())),this}async versionBuild({txVersion:e,extInfo:n,lookupTableAddress:o}){return e===0?await this.buildV0(D(O({},n||{}),{lookupTableAddress:o})):this.build(n)}build(e){var o;let n=new et;return this.allInstructions.length&&n.add(...this.allInstructions),n.feePayer=this.feePayer,((o=this.owner)==null?void 0:o.signer)&&!this.signers.some(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 y;let{recentBlockHash:l,skipPreflight:p=!0,sendAndConfirm:c,notSendToRpc:b}=a||{},P=l!=null?l:await Ee(this.connection,this.blockhashCommitment);if(n.recentBlockhash=P,this.signers.length&&n.sign(...this.signers),Ke([n]),(y=this.owner)!=null&&y.isKeyPair)return{txId:c?await qt(this.connection,n,this.signers.find(K=>K.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p}):await this.connection.sendRawTransaction(n.serialize(),{skipPreflight:p}),signedTx:n};if(this.signAllTransactions){let T=await this.signAllTransactions([n]);if(this.signers.length)for(let K of T)try{K.sign(...this.signers)}catch{}return{txId:b?"":await this.connection.sendRawTransaction(T[0].serialize(),{skipPreflight:p}),signedTx:T[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var P;let{extraPreBuildData:n=[],extInfo:o}=e,{transaction:a}=this.build(o),l=n.filter(y=>y.transaction.instructions.length>0),p=[a,...l.map(y=>y.transaction)],c=[this.signers,...l.map(y=>y.signers)],b=[...this.instructionTypes,...l.map(y=>y.instructionTypes).flat()];return(P=this.owner)!=null&&P.signer&&c.forEach(y=>{y.some(T=>T.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:p,signers:c,instructionTypes:b,execute:async y=>{var B;let{sequentially:T,onTxUpdate:K,skipTxCount:w=0,recentBlockHash:R,skipPreflight:A=!0}=y||{},k=R!=null?R:await Ee(this.connection,this.blockhashCommitment);if((B=this.owner)!=null&&B.isKeyPair){if(T){let x=[],F=0;for(let v of p){if(++F,F<=w)continue;let g=await qt(this.connection,v,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:A});x.push(g)}return{txIds:x,signedTxs:p}}return{txIds:await await Promise.all(p.map(async x=>(x.recentBlockhash=k,await this.connection.sendRawTransaction(x.serialize(),{skipPreflight:A})))),signedTxs:p}}if(this.signAllTransactions){let x=p.map((v,g)=>(v.recentBlockhash=k,c[g].length&&v.sign(...c[g]),v));Ke(x);let F=await this.signAllTransactions(x);if(T){let v=0,g=[],h=async()=>{if(!F[v])return;let I=await this.connection.sendRawTransaction(F[v].serialize(),{skipPreflight:A});g.push({txId:I,status:"sent",signedTx:F[v]}),K==null||K([...g]),v++;let C=!1,L=null,V=null,se=U=>{L!==null&&clearInterval(L),V!==null&&this.connection.removeSignatureListener(V);let W=g.findIndex(ee=>ee.txId===I);if(W>-1){if(g[W].status==="error"||g[W].status==="success")return;g[W].status=U.err?"error":"success"}K==null||K([...g]),U.err||h()};this.loopMultiTxStatus&&(L=setInterval(async()=>{var U;if(C){clearInterval(L);return}try{let W=await this.connection.getTransaction(I,{commitment:"confirmed",maxSupportedTransactionVersion:0});W&&(C=!0,clearInterval(L),se({err:((U=W.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",I))}catch(W){C=!0,clearInterval(L),console.error("getTransaction timeout:",W,I)}},bt)),V=this.connection.onSignature(I,U=>{if(C){this.connection.removeSignatureListener(V);return}C=!0,se(U)},"confirmed"),this.connection.getSignatureStatus(I)};return await h(),{txIds:g.map(I=>I.txId),signedTxs:F}}else{let v=[];for(let g=0;g<F.length;g+=1){let h=await this.connection.sendRawTransaction(F[g].serialize(),{skipPreflight:A});v.push(h)}return{txIds:v,signedTxs:F}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:n,extInfo:o}){return n===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:o||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:o})}async buildV0(e){var A;let R=e||{},{lookupTableCache:n={},lookupTableAddress:o=[],forerunCreate:a,recentBlockhash:l}=R,p=pe(R,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),c=O(O({},this.cluster==="devnet"?await Dt(this.connection):await Et(this.connection)),n),b=Array.from(new Set([...o,...this.lookupTableAddress])),P=[];for(let k of b)c[k]===void 0&&P.push(new De(k));let y=await _t({connection:this.connection,address:P});for(let[k,B]of Object.entries(y))c[k]=B;let T=a?De.default.toBase58():l!=null?l:await Ee(this.connection,this.blockhashCommitment),K=new tt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(c));((A=this.owner)==null?void 0:A.signer)&&!this.signers.some(k=>k.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let w=new nt(K);return w.sign(this.signers),{builder:this,transaction:w,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async k=>{var v;let{skipPreflight:B=!0,sendAndConfirm:x,notSendToRpc:F}=k||{};if(Ke([w]),(v=this.owner)!=null&&v.isKeyPair){let g=await this.connection.sendTransaction(w,{skipPreflight:B});return x&&await yt(this.connection,g),{txId:g,signedTx:w}}if(this.signAllTransactions){let g=await this.signAllTransactions([w]);if(this.signers.length)for(let h of g)try{h.sign(this.signers)}catch{}return{txId:F?"":await this.connection.sendTransaction(g[0],{skipPreflight:B}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:p||{}}}async buildV0MultiTx(e){var P;let{extraPreBuildData:n=[],buildProps:o}=e,{transaction:a}=await this.buildV0(o),l=n.filter(y=>y.builder.instructions.length>0),p=[a,...l.map(y=>y.transaction)],c=[this.signers,...l.map(y=>y.signers)],b=[...this.instructionTypes,...l.map(y=>y.instructionTypes).flat()];return(P=this.owner)!=null&&P.signer&&c.forEach(y=>{y.some(T=>T.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),p.forEach(async(y,T)=>{y.sign(c[T])}),{builder:this,transactions:p,signers:c,instructionTypes:b,buildProps:o,execute:async y=>{var A;let{sequentially:T,onTxUpdate:K,recentBlockHash:w,skipPreflight:R=!0}=y||{};if(w&&p.forEach(k=>k.message.recentBlockhash=w),Ke(p),(A=this.owner)!=null&&A.isKeyPair){if(T){let k=[];for(let B of p){let x=await this.connection.sendTransaction(B,{skipPreflight:R});await yt(this.connection,x),k.push(x)}return{txIds:k,signedTxs:p}}return{txIds:await Promise.all(p.map(async k=>await this.connection.sendTransaction(k,{skipPreflight:R}))),signedTxs:p}}if(this.signAllTransactions){let k=await this.signAllTransactions(p);if(T){let B=0,x=[],F=async()=>{if(!k[B])return;let v=await this.connection.sendTransaction(k[B],{skipPreflight:R});x.push({txId:v,status:"sent",signedTx:k[B]}),K==null||K([...x]),B++;let g=!1,h=null,I=null,C=L=>{h!==null&&clearInterval(h),I!==null&&this.connection.removeSignatureListener(I);let V=x.findIndex(se=>se.txId===v);if(V>-1){if(x[V].status==="error"||x[V].status==="success")return;x[V].status=L.err?"error":"success"}K==null||K([...x]),L.err||F()};this.loopMultiTxStatus&&(h=setInterval(async()=>{var L;if(g){clearInterval(h);return}try{let V=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(g=!0,clearInterval(h),C({err:((L=V.meta)==null?void 0:L.err)||null}),console.log("tx status from getTransaction:",v))}catch(V){g=!0,clearInterval(h),console.error("getTransaction timeout:",V,v)}},bt)),I=this.connection.onSignature(v,L=>{if(g){this.connection.removeSignatureListener(I);return}g=!0,C(L)},"confirmed"),this.connection.getSignatureStatus(v)};return F(),{txIds:[],signedTxs:k}}else{let B=[];for(let x=0;x<k.length;x+=1){let F=await this.connection.sendTransaction(k[x],{skipPreflight:R});B.push(F)}return{txIds:B,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var K;let T=e||{},{splitIns:n=[],computeBudgetConfig:o}=T,a=pe(T,["splitIns","computeBudgetConfig"]),l=o?ft(o):{instructions:[],instructionTypes:[]},p=this.signers.reduce((w,R)=>D(O({},w),{[R.publicKey.toBase58()]:R}),{}),c=[],b=[],P=[],y=0;if(this.allInstructions.forEach(w=>{let R=[...P,w],A=o?[...l.instructions,...R]:R,B=[...new Set(R.map(x=>x.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat()).values()].map(x=>new De(x));if(w!==n[y]&&P.length<12&&($e({instructions:A,payer:this.feePayer,signers:B})||$e({instructions:R,payer:this.feePayer,signers:B})))P.push(w);else{if(P.length===0)throw Error("item ins too big");y+=w===n[y]?1:0,$e({instructions:o?[...l.instructions,...P]:[...P],payer:this.feePayer,signers:B})?c.push(new et().add(...l.instructions,...P)):c.push(new et().add(...P)),b.push(Array.from(new Set(P.map(x=>x.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat())).map(x=>p[x]).filter(x=>x!==void 0)),P=[w]}}),P.length>0){let R=[...new Set(P.map(A=>A.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat()).values()].map(A=>p[A]).filter(A=>A!==void 0);$e({instructions:o?[...l.instructions,...P]:[...P],payer:this.feePayer,signers:R.map(A=>A.publicKey)})?c.push(new et().add(...l.instructions,...P)):c.push(new et().add(...P)),b.push(R)}return c.forEach(w=>w.feePayer=this.feePayer),(K=this.owner)!=null&&K.signer&&b.forEach(w=>{w.some(R=>R.publicKey.equals(this.owner.publicKey))||w.push(this.owner.signer)}),{builder:this,transactions:c,signers:b,instructionTypes:this.instructionTypes,execute:async w=>{var v;let{sequentially:R,onTxUpdate:A,skipTxCount:k=0,recentBlockHash:B,skipPreflight:x=!0}=w||{},F=B!=null?B:await Ee(this.connection,this.blockhashCommitment);if(c.forEach(async(g,h)=>{g.recentBlockhash=F,b[h].length&&g.sign(...b[h])}),Ke(c),(v=this.owner)!=null&&v.isKeyPair){if(R){let g=0,h=[];for(let I of c){if(++g,g<=k){h.push("tx skipped");continue}let C=await qt(this.connection,I,this.signers.find(L=>L.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:x});h.push(C)}return{txIds:h,signedTxs:c}}return{txIds:await Promise.all(c.map(async g=>await this.connection.sendRawTransaction(g.serialize(),{skipPreflight:x}))),signedTxs:c}}if(this.signAllTransactions){let g=await this.signAllTransactions(c.slice(k,c.length)),h=[...c.slice(0,k),...g];if(R){let I=0,C=[],L=async()=>{if(!h[I])return;I<k&&(C.push({txId:"",status:"success",signedTx:h[I]}),A==null||A([...C]),I++,L());let V=await this.connection.sendRawTransaction(h[I].serialize(),{skipPreflight:x});C.push({txId:V,status:"sent",signedTx:h[I]}),A==null||A([...C]),I++;let se=!1,U=null,W=null,ee=z=>{U!==null&&clearInterval(U),W!==null&&this.connection.removeSignatureListener(W);let ie=C.findIndex(Pe=>Pe.txId===V);if(ie>-1){if(C[ie].status==="error"||C[ie].status==="success")return;C[ie].status=z.err?"error":"success"}A==null||A([...C]),z.err||L()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var z;if(se){clearInterval(U);return}try{let ie=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});ie&&(se=!0,clearInterval(U),ee({err:((z=ie.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",V))}catch(ie){se=!0,clearInterval(U),console.error("getTransaction timeout:",ie,V)}},bt)),W=this.connection.onSignature(V,z=>{if(se){this.connection.removeSignatureListener(W);return}se=!0,ee(z)},"confirmed"),this.connection.getSignatureStatus(V)};return await L(),{txIds:C.map(V=>V.txId),signedTxs:h}}else{let I=[];for(let C=0;C<h.length;C+=1){let L=await this.connection.sendRawTransaction(h[C].serialize(),{skipPreflight:x});I.push(L)}return{txIds:I,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}async sizeCheckBuildV0(e){var v;let F=e||{},{computeBudgetConfig:n,splitIns:o=[],lookupTableCache:a={},lookupTableAddress:l=[],insCountLimit:p=12}=F,c=pe(F,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),b=O(O({},this.cluster==="devnet"?await Dt(this.connection):await Et(this.connection)),a),P=Array.from(new Set([...this.lookupTableAddress,...l])),y=[];for(let g of P)b[g]===void 0&&y.push(new De(g));let T=await _t({connection:this.connection,address:y});for(let[g,h]of Object.entries(T))b[g]=h;let K=n?ft(n):{instructions:[],instructionTypes:[]},w=await Ee(this.connection,this.blockhashCommitment),R=this.signers.reduce((g,h)=>D(O({},g),{[h.publicKey.toBase58()]:h}),{}),A=[],k=[],B=[],x=0;if(this.allInstructions.forEach(g=>{let h=[...B,g],I=n?[...K.instructions,...h]:h;if(g!==o[x]&&B.length<p&&(Je({instructions:I,payer:this.feePayer,lookupTableAddressAccount:b})||Je({instructions:h,payer:this.feePayer,lookupTableAddressAccount:b})))B.push(g);else{if(B.length===0)throw Error("item ins too big");x+=g===o[x]?1:0;let C={};for(let L of[...new Set(P)])b[L]!==void 0&&(C[L]=b[L]);if(n&&Je({instructions:[...K.instructions,...B],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:w})){let L=new tt({payerKey:this.feePayer,recentBlockhash:w,instructions:[...K.instructions,...B]}).compileToV0Message(Object.values(b));A.push(new nt(L))}else{let L=new tt({payerKey:this.feePayer,recentBlockhash:w,instructions:[...B]}).compileToV0Message(Object.values(b));A.push(new nt(L))}k.push(Array.from(new Set(B.map(L=>L.keys.filter(V=>V.isSigner).map(V=>V.pubkey.toString())).flat())).map(L=>R[L]).filter(L=>L!==void 0)),B=[g]}}),B.length>0){let h=[...new Set(B.map(I=>I.keys.filter(C=>C.isSigner).map(C=>C.pubkey.toString())).flat()).values()].map(I=>R[I]).filter(I=>I!==void 0);if(n&&Je({instructions:[...K.instructions,...B],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:w})){let I=new tt({payerKey:this.feePayer,recentBlockhash:w,instructions:[...K.instructions,...B]}).compileToV0Message(Object.values(b));A.push(new nt(I))}else{let I=new tt({payerKey:this.feePayer,recentBlockhash:w,instructions:[...B]}).compileToV0Message(Object.values(b));A.push(new nt(I))}k.push(h)}return(v=this.owner)!=null&&v.signer&&k.forEach(g=>{g.some(h=>h.publicKey.equals(this.owner.publicKey))||g.push(this.owner.signer)}),A.forEach((g,h)=>{g.sign(k[h])}),{builder:this,transactions:A,buildProps:e,signers:k,instructionTypes:this.instructionTypes,execute:async g=>{var se;let{sequentially:h,onTxUpdate:I,skipTxCount:C=0,recentBlockHash:L,skipPreflight:V=!0}=g||{};if(A.map(async(U,W)=>{k[W].length&&U.sign(k[W]),L&&(U.message.recentBlockhash=L)}),Ke(A),(se=this.owner)!=null&&se.isKeyPair){if(h){let U=0,W=[];for(let ee of A){if(++U,U<=C){console.log("skip tx: ",U),W.push("tx skipped");continue}let z=await this.connection.sendTransaction(ee,{skipPreflight:V});await yt(this.connection,z),W.push(z)}return{txIds:W,signedTxs:A}}return{txIds:await Promise.all(A.map(async U=>await this.connection.sendTransaction(U,{skipPreflight:V}))),signedTxs:A}}if(this.signAllTransactions){let U=await this.signAllTransactions(A.slice(C,A.length)),W=[...A.slice(0,C),...U];if(h){let ee=0,z=[],ie=async()=>{if(!W[ee])return;if(ee<C){z.push({txId:"",status:"success",signedTx:W[ee]}),I==null||I([...z]),ee++,ie();return}let Pe=await this.connection.sendTransaction(W[ee],{skipPreflight:V});z.push({txId:Pe,status:"sent",signedTx:W[ee]}),I==null||I([...z]),ee++;let ze=!1,Oe=null,at=null,rn=Ie=>{Oe!==null&&clearInterval(Oe),at!==null&&this.connection.removeSignatureListener(at);let Ae=z.findIndex(bo=>bo.txId===Pe);if(Ae>-1){if(z[Ae].status==="error"||z[Ae].status==="success")return;z[Ae].status=Ie.err?"error":"success"}I==null||I([...z]),Ie.err||ie()};this.loopMultiTxStatus&&(Oe=setInterval(async()=>{var Ie;if(ze){clearInterval(Oe);return}try{let Ae=await this.connection.getTransaction(Pe,{commitment:"confirmed",maxSupportedTransactionVersion:0});Ae&&(ze=!0,clearInterval(Oe),rn({err:((Ie=Ae.meta)==null?void 0:Ie.err)||null}),console.log("tx status from getTransaction:",Pe))}catch(Ae){ze=!0,clearInterval(Oe),console.error("getTransaction timeout:",Ae,Pe)}},bt)),at=this.connection.onSignature(Pe,Ie=>{if(ze){this.connection.removeSignatureListener(at);return}ze=!0,rn(Ie)},"confirmed"),this.connection.getSignatureStatus(Pe)};return ie(),{txIds:[],signedTxs:W}}else{let ee=[];for(let z=0;z<W.length;z+=1){let ie=await this.connection.sendTransaction(W[z],{skipPreflight:V});ee.push(ie)}return{txIds:ee,signedTxs:W}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:c||{}}}};var Ut=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),ae=class{constructor({scope:e,moduleName:n}){this.disabled=!1;this.scope=e,this.logger=E(n)}createTxBuilder(e){return this.scope.checkOwner(),new gt({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(Ut(e))}logInfo(...e){this.logger.info(Ut(e))}logAndCreateError(...e){let n=Ut(e);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Al,SystemProgram as kl}from"@solana/web3.js";import Il from"bn.js";import{createCloseAccountInstruction as Kl,createInitializeAccountInstruction as Cl,createTransferInstruction as Rl,TOKEN_PROGRAM_ID as Ll}from"@solana/spl-token";import{Keypair as al,PublicKey as sl}from"@solana/web3.js";import ll from"bn.js";import{TOKEN_PROGRAM_ID as pl}from"@solana/spl-token";import{PublicKey as ai}from"@solana/web3.js";import Fn,{isBN as vn}from"bn.js";import{bits as Zo,BitStructure as mc,blob as Ho,Blob as dc,cstr as pc,f32 as fc,f32be as yc,f64 as bc,f64be as gc,greedy as Pc,Layout as jo,ns64 as Ac,ns64be as wc,nu64 as kc,nu64be as Tc,offset as $o,s16 as hc,s16be as Ic,s24 as Bc,s24be as Sc,s32 as Jo,s32be as xc,s40 as Kc,s40be as Cc,s48 as Rc,s48be as Lc,s8 as Oc,seq as ei,struct as Nc,Structure as ti,u16 as ni,u16be as Mc,u24 as Fc,u24be as vc,u32 as oi,u32be as Vc,u40 as _c,u40be as Ec,u48 as Dc,u48be as Wc,u8 as ii,UInt as ri,union as qc,Union as Uc,unionLayoutDiscriminator as Gc,utf8 as zc}from"@solana/buffer-layout";var Pt=jo,Ln=ti;var Gt=ri;var On=ii,J=ni;var At=oi;var me=Jo;var Nn=ei;var M=Ho;var zt=Zo,Mn=$o;var Re=class extends Pt{constructor(n,o,a){super(n,a);this.blob=M(n),this.signed=o}decode(n,o=0){let a=new Fn(this.blob.decode(n,o),10,"le");return this.signed?a.fromTwos(this.span*8).clone():a}encode(n,o,a=0){return typeof n=="number"&&(n=new Fn(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),o,a)}},wt=class extends Pt{constructor(n){super(8,n);this._lower=zt(At(),!1),this._upper=zt(At(),!1)}addBoolean(n){this._lower.fields.length<32?this._lower.addBoolean(n):this._upper.addBoolean(n)}decode(n,o=0){let a=this._lower.decode(n,o),l=this._upper.decode(n,o+this._lower.span);return O(O({},a),l)}encode(n,o,a=0){return this._lower.encode(n,o,a)+this._upper.encode(n,o,a+this._lower.span)}};function m(r){return new Gt(1,r)}function Y(r){return new Gt(4,r)}function t(r){return new Re(8,!1,r)}function N(r){return new Re(16,!1,r)}function Vn(r){return new Re(1,!0,r)}function We(r){return new Re(8,!0,r)}function _n(r){return new Re(16,!0,r)}var ot=class extends Pt{constructor(n,o,a,l){super(n.span,l);this.layout=n,this.decoder=o,this.encoder=a}decode(n,o){return this.decoder(this.layout.decode(n,o))}encode(n,o,a){return this.layout.encode(this.encoder(n),o,a)}getSpan(n,o){return this.layout.getSpan(n,o)}};function i(r){return new ot(M(32),e=>new ai(e),e=>e.toBuffer(),r)}function ue(r){return new ot(On(),si,ui,r)}function si(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function ui(r){return r?1:0}function En(r,e){let n=At("length"),o=d([n,f(r,Mn(n,-n.span),"values")]);return new ot(o,({values:a})=>a,a=>({values:a}),e)}var Xt=class extends Ln{decode(e,n){return super.decode(e,n)}};function d(r,e,n){return new Xt(r,e,n)}function f(r,e,n){let o,a=typeof e=="number"?e:vn(e)?e.toNumber():new Proxy(e,{get(l,p){if(!o){let c=Reflect.get(l,"count");o=vn(c)?c.toNumber():c,Reflect.set(l,"count",o)}return Reflect.get(l,p)},set(l,p,c){return p==="count"&&(o=c),Reflect.set(l,p,c)}});return Nn(r,a,n)}var kt=d([i("mint"),i("owner"),t("amount"),Y("delegateOption"),i("delegate"),m("state"),Y("isNativeOption"),t("isNative"),t("delegatedAmount"),Y("closeAuthorityOption"),i("closeAuthority")]);import{PublicKey as bg,SystemProgram as gg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Ag}from"@solana/spl-token";import{PublicKey as im}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as am}from"@solana/spl-token";import{PublicKey as S}from"@solana/web3.js";var Wn=new S("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),qn=new S("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Un=new S("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Yt=new S("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),lm=new S("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),li=new S("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Gn=new S("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),zn=new S("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),mm=new S("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),mi=new S("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Xn=new S("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),di=new S("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),pi=new S("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Yn=new S("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),dm=new S("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),fi=new S("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Qt=new S("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),yi=new S("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),pm=new S("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),bi=new S("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),gi=new S("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Pi=new S("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),fm=new S("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),ym=new S("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),bm=new S("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),gm=new S("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Pm=new S("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var he={OPEN_BOOK_PROGRAM:new S("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new S("Ray1111111111111111111111111111111111111111"),AMM_V4:new S("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new S("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new S("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new S("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new S("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new S("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new S("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new S("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new S("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new S("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:S.default,Router:new S("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new S("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new S("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new S("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new S("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new S("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new S("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new S("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new S("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new S("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new S("Ray1111111111111111111111111111111111111111")};import Cg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as Xf,TOKEN_2022_PROGRAM_ID as Yf,TOKEN_PROGRAM_ID as Qf}from"@solana/spl-token";import{PublicKey as Hf}from"@solana/web3.js";import $f from"bn.js";import ey from"decimal.js";import{TOKEN_PROGRAM_ID as Om}from"@solana/spl-token";import{PublicKey as vm}from"@solana/web3.js";var Ai=d([Y("mintAuthorityOption"),i("mintAuthority"),t("supply"),m("decimals"),m("isInitialized"),Y("freezeAuthorityOption"),i("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as bf,TOKEN_2022_PROGRAM_ID as gf,TOKEN_PROGRAM_ID as Pf}from"@solana/spl-token";import{Keypair as kf,PublicKey as Tf,SystemProgram as If,TransactionInstruction as Bf}from"@solana/web3.js";import xf from"bn.js";var wi=d([M(8),m("bump"),J("index"),i("owner"),Y("protocolFeeRate"),Y("tradeFeeRate"),J("tickSpacing"),Y("fundFeeRate"),f(Y(),1),i("fundOwner"),f(t(),3)]),ki=d([Y("blockTimestamp"),We("tickCumulative"),f(t(),4)]),Qn=d([M(8),ue("initialized"),t("recentEpoch"),J("observationIndex"),i("poolId"),f(ki,fn,"observations"),f(t(),4)]),Ti=d([J("filterPeriod"),J("decayPeriod"),J("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),me("tickSpacingIndexReference"),Y("volatilityReference"),Y("volatilityAccumulator"),t("lastUpdateTimestamp"),f(m(),46)]),hi=d([m("state"),t("openTime"),t("endTime"),t("lastUpdateTime"),N("emissionsPerSecondX64"),t("totalEmissioned"),t("claimed"),i("mint"),i("vault"),i("creator"),N("growthGlobalX64")]),Zt=d([M(8),m("bump"),i("configId"),i("creator"),i("mintA"),i("mintB"),i("vaultA"),i("vaultB"),i("observationId"),m("mintDecimalsA"),m("mintDecimalsB"),J("tickSpacing"),N("liquidity"),N("sqrtPriceX64"),me("tickCurrent"),Y(),N("feeGrowthGlobalX64A"),N("feeGrowthGlobalX64B"),t("protocolFeesTokenA"),t("protocolFeesTokenB"),f(N(),4),m("status"),m("feeOn"),M(6),f(hi,Xe,"rewardInfos"),M(8*16,"tickArrayBitmap"),f(t(),4),t("fundFeesTokenA"),t("fundFeesTokenB"),t("startTime"),t("recentEpoch"),Ti.replicate("dynamicFeeInfo"),f(t(),46)]),Ii=d([N("growthInsideLastX64"),t("rewardAmountOwed")]),Bi=d([M(8),m("bump"),i("nftMint"),i("poolId"),me("tickLower"),me("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),f(Ii,Xe,"rewardInfos"),t("recentEpoch"),f(t(),7)]),Zm=d([M(8),m("bump"),i("poolId"),me("tickLower"),me("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),f(N(),Xe,"rewardGrowthInside"),t("recentEpoch"),f(t(),7)]),Si=d([me("tick"),_n("liquidityNet"),N("liquidityGross"),N("feeGrowthOutsideX64A"),N("feeGrowthOutsideX64B"),f(N(),Xe,"rewardGrowthsOutsideX64"),t("orderPhase"),t("ordersAmount"),t("partFilledOrdersRemaining"),N("unfilledRatioX64"),f(Y(),3)]),Zn=d([M(8),i("poolId"),me("startTickIndex"),f(Si,Kt,"ticks"),m("initializedTickCount"),t("recentEpoch"),f(m(),107)]),xi=d([M(8),m("bump"),f(i(),yn,"operationOwners"),f(i(),bn,"whitelistMints")]),Ki=d([M(8),i("poolId"),i("owner"),me("tick"),ue("zeroForOne"),t("orderPhase"),t("totalAmount"),t("filledAmount"),t("settleBase"),t("settleOutput"),t("openTime"),N("unfilledRatioX64"),f(t(),4)]),Hn=d([M(8),i("poolId"),M(8*8*ut,"positiveTickArrayBitmap"),M(8*8*ut,"negativeTickArrayBitmap")]),Hm=d([M(8),J("index"),J("filterPeriod"),J("decayPeriod"),J("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),f(t(),8)]),Ci=d([M(8),i("wallet"),m("nonceIndex"),t("orderNonce"),f(t(),4)]),jm=d([t(),m("bump"),i("owner"),i("poolId"),i("positionId"),i("nftAccount"),f(t(),8)]),Ri=d([M(8),m("bump"),i("lockOwner"),i("poolId"),i("positionId"),i("nftAccount"),i("lockNftMint"),t("recentEpoch"),f(t(),8)]);import ed from"bn.js";var md=Buffer.from("amm_config","utf8"),Li=Buffer.from("pool","utf8"),Oi=Buffer.from("pool_vault","utf8"),dd=Buffer.from("pool_reward_vault","utf8"),pd=Buffer.from("position","utf8"),fd=Buffer.from("tick_array","utf8"),yd=Buffer.from("operation","utf8"),bd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),gd=Buffer.from("observation","utf8"),Pd=Buffer.from("support_mint","utf8"),Ad=Buffer.from("dynamic_fee_config","utf8");var wd=Buffer.from("locked_position","utf8");import{sha256 as Yi}from"js-sha256";import Ni from"bn.js";import Id from"decimal.js";function ce(r,e,n){if(n.isZero())throw new Error("Division by zero");return r.mul(e).div(n)}function le(r,e,n){if(n.isZero())throw new Error("Division by zero");let o=r.mul(e),a=o.div(n);return o.mod(n).isZero()?a:a.addn(1)}var Sd=new Ni(1).shln(256).subn(1);function jn(r){return r.isZero()?-1:r.bitLength()-1}import Cd from"bn.js";import Ld from"decimal.js";import{PublicKey as gp}from"@solana/web3.js";import Ap from"bn.js";import{TOKEN_2022_PROGRAM_ID as xp,TOKEN_PROGRAM_ID as Kp}from"@solana/spl-token";import Op from"decimal.js";import ap from"bn.js";import Yd from"bn.js";import Up from"bn.js";function te(r){let e=`global:${r}`;return Buffer.from(Yi.digest(e)).slice(0,8)}Qn.span;var Ff=E("Raydium_Clmm"),vf={createPool:te("create_pool"),createCustomizablePool:te("create_customizable_pool"),openPositionV2:te("open_position_v2"),openPositionWithToken22Nft:te("open_position_with_token22_nft"),closePosition:te("close_position"),increaseLiquidityV2:te("increase_liquidity_v2"),decreaseLiquidityV2:te("decrease_liquidity_v2"),initializeReward:te("initialize_reward"),setRewardParams:te("set_reward_params"),updateRewardInfos:te("update_reward_infos"),collectRemainingRewards:te("collect_remaining_rewards"),swapV2:te("swap_v2"),openLimitOrder:te("open_limit_order"),increaseLimitOrder:te("increase_limit_order"),decreaseLimitOrder:te("decrease_limit_order"),settleLimitOrder:te("settle_limit_order"),closeLimitOrder:te("close_limit_order")};import{PublicKey as en}from"@solana/web3.js";var $i=d([m("instruction")]),Ji=d([m("instruction")]),er=d([t("rewardState"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardLastUpdateTime"),t("totalReward"),t("totalRewardEmissioned"),t("rewardClaimed"),t(