UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

1 lines 105 kB
var zo=Object.defineProperty,Xo=Object.defineProperties;var Yo=Object.getOwnPropertyDescriptors;var ht=Object.getOwnPropertySymbols;var Nn=Object.prototype.hasOwnProperty,Mn=Object.prototype.propertyIsEnumerable;var On=(i,e,t)=>e in i?zo(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,O=(i,e)=>{for(var t in e||(e={}))Nn.call(e,t)&&On(i,t,e[t]);if(ht)for(var t of ht(e))Mn.call(e,t)&&On(i,t,e[t]);return i},v=(i,e)=>Xo(i,Yo(e));var ge=(i,e)=>{var t={};for(var o in i)Nn.call(i,o)&&e.indexOf(o)<0&&(t[o]=i[o]);if(i!=null&&ht)for(var o of ht(i))e.indexOf(o)<0&&Mn.call(i,o)&&(t[o]=i[o]);return t};import{PublicKey as Ho}from"@solana/web3.js";import{get as Fn,set as Qo}from"lodash";var Ht=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 t=e.map(o=>typeof o=="object"?JSON.stringify(o):o).join(", ");throw new Error(t)}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}},vn={},Zo={};function D(i){let e=Fn(vn,i);if(!e){let t=Fn(Zo,i);e=new Ht({name:i,logLevel:t}),Qo(vn,i,e)}return e}import{MINT_SIZE as hs,TOKEN_PROGRAM_ID as Is,getTransferFeeConfig as Bs,unpackMint as Ss}from"@solana/spl-token";var jt=D("Raydium_accountInfo_util");async function he(i,e,t){let{batchRequest:o,commitment:r="confirmed",chunkCount:a=100}=O({batchRequest:!1},t),s=$t(e,a),c=new Array(s.length).fill([]);if(o){let f=s.map(P=>{let x=i._buildArgs([P.map(T=>T.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:x}}),g=$t(f,10);c=(await(await Promise.all(g.map(async P=>await i._rpcBatchRequest(P)))).flat()).map(P=>(P.error&&jt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${P.error.message}`),P.result.value.map(x=>{if(x){let{data:T,executable:h,lamports:w,owner:A,rentEpoch:B}=x;return T.length!==2&&T[1]!=="base64"&&jt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(T[0],"base64"),executable:h,lamports:w,owner:new Ho(A),rentEpoch:B}}return null})))}else try{c=await Promise.all(s.map(f=>i.getMultipleAccountsInfo(f,r)))}catch(f){f instanceof Error&&jt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${f.message}`)}return c.flat()}import Ce from"bn.js";import pC from"decimal.js";import ii from"big.js";import Us from"bn.js";import jo from"toformat";var $o=jo,it=$o;import Bt from"big.js";import ei from"bn.js";import ti from"decimal.js-light";import rt from"bn.js";var Vn=9007199254740991;function ue(i){let e=D("Raydium_parseBigNumberish");if(i instanceof rt)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new rt(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=Vn||i<=-Vn)&&e.logWithError(`BigNumberish number overflow: ${i}`),new rt(String(i))):typeof i=="bigint"?new rt(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new rt(0))}var It=D("module/fraction"),Jt=it(Bt),at=it(ti),ni={[0]:at.ROUND_DOWN,[1]:at.ROUND_HALF_UP,[2]:at.ROUND_UP},oi={[0]:Bt.roundDown,[1]:Bt.roundHalfUp,[2]:Bt.roundUp},U=class{constructor(e,t=new ei(1)){this.numerator=ue(e),this.denominator=ue(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new U(this.denominator,this.numerator)}add(e){let t=e instanceof U?e:new U(ue(e));return this.denominator.eq(t.denominator)?new U(this.numerator.add(t.numerator),this.denominator):new U(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof U?e:new U(ue(e));return this.denominator.eq(t.denominator)?new U(this.numerator.sub(t.numerator),this.denominator):new U(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof U?e:new U(ue(e));return new U(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof U?e:new U(ue(e));return new U(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},o=1){Number.isInteger(e)||It.logWithError(`${e} is not an integer.`),e<=0&&It.logWithError(`${e} is not positive.`),at.set({precision:e+1,rounding:ni[o]});let r=new at(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},o=1){return Number.isInteger(e)||It.logWithError(`${e} is not an integer.`),e<0&&It.logWithError(`${e} is negative.`),Jt.DP=e,Jt.RM=oi[o]||1,new Jt(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var $s=D("Raydium_amount"),Js=it(ii);import{PublicKey as ai}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as _n}from"@solana/spl-token";var St={chainId:101,address:ai.default.toBase58(),programId:_n.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:_n.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 tn}from"@solana/web3.js";import{PublicKey as X,SystemProgram as En,SYSVAR_RENT_PUBKEY as si}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ui}from"@solana/spl-token";function De({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var ci=[De({pubkey:ui,isWritable:!1}),De({pubkey:En.programId,isWritable:!1}),De({pubkey:si,isWritable:!1})];function Dn({publicKey:i,transformSol:e}){let t=Wn(i.toString());if(t instanceof X)return e&&t.equals(Le)?Ie:t;if(e&&t.toString()===Le.toBase58())return Ie;if(typeof t=="string"){if(t===X.default.toBase58())return X.default;try{return new X(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Wn(i){try{return new X(i)}catch{return i}}var en=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Oe=new X("SysvarRent111111111111111111111111111111111"),su=new X("SysvarC1ock11111111111111111111111111111111"),We=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),li=new X("Sysvar1nstructions1111111111111111111111111"),mi=En.programId,uu=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),cu=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),lu=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),mu=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),du=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),pu=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),fu=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),yu=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),bu=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),gu=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Pu=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ie=new X("So11111111111111111111111111111111111111112"),Le=X.default;var nn=class{constructor({mint:e,decimals:t,symbol:o,name:r,skipMint:a=!1,isToken2022:s=!1}){if(e===Le.toBase58()||e instanceof tn&&Le.equals(e)){this.decimals=Pe.decimals,this.symbol=Pe.symbol,this.name=Pe.name,this.mint=new tn(Pe.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=o||e.toString().substring(0,6),this.name=r||e.toString().substring(0,6),this.mint=a?tn.default:Dn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ie=nn;ie.WSOL=new nn(v(O({},Pe),{mint:Pe.address}));var on=class{constructor({decimals:e,symbol:t="UNKNOWN",name:o="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=o}equals(e){return this===e}},xt=on;xt.SOL=new on(St);import di from"bn.js";var Ru=new U(new di(100));var vu=D("Raydium_price");import{merge as yK}from"lodash";import zu from"axios";var qn={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"},pi=v(O({},qn),{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 fc=D("Raydium_Api");import{PublicKey as Nm,SystemProgram as Mm}from"@solana/web3.js";import{AccountLayout as Em,createAssociatedTokenAccountIdempotentInstruction as Dm,TOKEN_PROGRAM_ID as Wm,TOKEN_2022_PROGRAM_ID as qm}from"@solana/spl-token";import{PublicKey as Xe,sendAndConfirmTransaction as ln,SystemProgram as Ai,Transaction as ct,TransactionMessage as lt,VersionedTransaction as mt}from"@solana/web3.js";import wi from"axios";import{PublicKey as rn,AddressLookupTableAccount as Ge}from"@solana/web3.js";async function an({connection:i,address:e,cluster:t="mainnet"}){let o=await he(i,[...new Set(e.map(a=>a.toString()))].map(a=>new rn(a))),r={};for(let a=0;a<e.length;a++){let s=o[a],c=e[a];if(!s)continue;let f=new Ge({key:c,state:Ge.deserialize(s.data)});r[c.toString()]=f,t==="devnet"?Ue[c.toString()]=f:qe[c.toString()]=f}return r}var qe={},sn=async i=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(qe[e])return qe;let t=new rn(e),o=await i.getAccountInfo(t);return o&&(qe[e]=new Ge({key:t,state:Ge.deserialize(o.data)})),qe},Ue={},un=async i=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Ue[e])return Ue;let t=new rn(e),o=await i.getAccountInfo(t);return o&&(Ue[e]=new Ge({key:t,state:Ge.deserialize(o.data)})),Ue};var j={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 Un,Keypair as zn,PublicKey as fi,Transaction as Xn,TransactionMessage as yi,VersionedTransaction as Yn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as bi}from"@solana/spl-token";var Gn=D("Raydium_txUtil"),Qn=1644;function Kt(i){let e=[],t=[];return i.microLamports&&(e.push(Un.setComputeUnitPrice({microLamports:i.microLamports})),t.push(j.SetComputeUnitPrice)),i.units&&(e.push(Un.setComputeUnitLimit({units:i.units})),t.push(j.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function ze(i,e){var o,r;let t=e!=null?e:"confirmed";return(r=await((o=i.getLatestBlockhash)==null?void 0:o.call(i,{commitment:t})))==null?void 0:r.blockhash}async function Ct(i,e){return i.getSignatureStatuses([e]),new Promise((t,o)=>{let r=setTimeout(o,6e4);i.onSignature(e,a=>{if(clearTimeout(r),!a.err){t("");return}o(Object.assign(a.err,{txId:e}))},"confirmed")})}function cn(i,e){i.length<1&&Gn.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&Gn.logWithError(`no signers provided:, ${e.toString()}`);let t=new Xn;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Qn}catch{return!1}}function Q(i,e){let[t,o]=fi.findProgramAddressSync(i,e);return{publicKey:t,nonce:o}}function st({instructions:i,payer:e,signers:t}){return cn(i,[e,...t])}function ut({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:o=zn.generate().publicKey.toString()}){let a=new yi({payerKey:e,recentBlockhash:o,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Yn(a).serialize()).toString("base64").length<Qn}catch{return!1}}var gi=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i),Pi=i=>{let e=i.serialize({requireAllSignatures:!1,verifySignatures:!1});i instanceof Yn&&(e=gi(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Ne(i){let e=[];return i.forEach(t=>{t instanceof Xn&&(t.recentBlockhash||(t.recentBlockhash=bi.toBase58()),t.feePayer||(t.feePayer=zn.generate().publicKey)),e.push(Pi(t))}),console.log("simulate tx string:",e),e}var Rt=2e3,Lt=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 wi.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(o=e==null?void 0:e[15])!=null?o:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:o}=Kt(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(Ai.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new Xe(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(j.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let o=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(o))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:o=[],instructionTypes:r=[],endInstructionTypes:a=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...o),this.instructionTypes.push(...r),this.endInstructionTypes.push(...a),this.lookupTableAddress.push(...s.filter(c=>c!==Xe.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:o}){return e===0?await this.buildV0(v(O({},t||{}),{lookupTableAddress:o})):this.build(t)}build(e){var o;let t=new ct;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((o=this.owner)==null?void 0:o.signer)&&!this.signers.some(r=>r.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async r=>{var y;let{recentBlockHash:a,skipPreflight:s=!0,sendAndConfirm:c,notSendToRpc:f}=r||{},g=a!=null?a:await ze(this.connection,this.blockhashCommitment);if(t.recentBlockhash=g,this.signers.length&&t.sign(...this.signers),Ne([t]),(y=this.owner)!=null&&y.isKeyPair)return{txId:c?await ln(this.connection,t,this.signers.find(x=>x.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let P=await this.signAllTransactions([t]);if(this.signers.length)for(let x of P)try{x.sign(...this.signers)}catch{}return{txId:f?"":await this.connection.sendRawTransaction(P[0].serialize(),{skipPreflight:s}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var g;let{extraPreBuildData:t=[],extInfo:o}=e,{transaction:r}=this.build(o),a=t.filter(y=>y.transaction.instructions.length>0),s=[r,...a.map(y=>y.transaction)],c=[this.signers,...a.map(y=>y.signers)],f=[...this.instructionTypes,...a.map(y=>y.instructionTypes).flat()];return(g=this.owner)!=null&&g.signer&&c.forEach(y=>{y.some(P=>P.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:c,instructionTypes:f,execute:async y=>{var B;let{sequentially:P,onTxUpdate:x,skipTxCount:T=0,recentBlockHash:h,skipPreflight:w=!0}=y||{},A=h!=null?h:await ze(this.connection,this.blockhashCommitment);if((B=this.owner)!=null&&B.isKeyPair){if(P){let k=[],R=0;for(let C of s){if(++R,R<=T)continue;let b=await ln(this.connection,C,this.signers.find(S=>S.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:w});k.push(b)}return{txIds:k,signedTxs:s}}return{txIds:await await Promise.all(s.map(async k=>(k.recentBlockhash=A,await this.connection.sendRawTransaction(k.serialize(),{skipPreflight:w})))),signedTxs:s}}if(this.signAllTransactions){let k=s.map((C,b)=>(C.recentBlockhash=A,c[b].length&&C.sign(...c[b]),C));Ne(k);let R=await this.signAllTransactions(k);if(P){let C=0,b=[],S=async()=>{if(!R[C])return;let K=await this.connection.sendRawTransaction(R[C].serialize(),{skipPreflight:w});b.push({txId:K,status:"sent",signedTx:R[C]}),x==null||x([...b]),C++;let L=!1,N=null,F=null,G=q=>{N!==null&&clearInterval(N),F!==null&&this.connection.removeSignatureListener(F);let _=b.findIndex(J=>J.txId===K);if(_>-1){if(b[_].status==="error"||b[_].status==="success")return;b[_].status=q.err?"error":"success"}x==null||x([...b]),q.err||S()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var q;if(L){clearInterval(N);return}try{let _=await this.connection.getTransaction(K,{commitment:"confirmed",maxSupportedTransactionVersion:0});_&&(L=!0,clearInterval(N),G({err:((q=_.meta)==null?void 0:q.err)||null}),console.log("tx status from getTransaction:",K))}catch(_){L=!0,clearInterval(N),console.error("getTransaction timeout:",_,K)}},Rt)),F=this.connection.onSignature(K,q=>{if(L){this.connection.removeSignatureListener(F);return}L=!0,G(q)},"confirmed"),this.connection.getSignatureStatus(K)};return await S(),{txIds:b.map(K=>K.txId),signedTxs:R}}else{let C=[];for(let b=0;b<R.length;b+=1){let S=await this.connection.sendRawTransaction(R[b].serialize(),{skipPreflight:w});C.push(S)}return{txIds:C,signedTxs:R}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:o}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:o||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:o})}async buildV0(e){var w;let h=e||{},{lookupTableCache:t={},lookupTableAddress:o=[],forerunCreate:r,recentBlockhash:a}=h,s=ge(h,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),c=O(O({},this.cluster==="devnet"?await un(this.connection):await sn(this.connection)),t),f=Array.from(new Set([...o,...this.lookupTableAddress])),g=[];for(let A of f)c[A]===void 0&&g.push(new Xe(A));let y=await an({connection:this.connection,address:g});for(let[A,B]of Object.entries(y))c[A]=B;let P=r?Xe.default.toBase58():a!=null?a:await ze(this.connection,this.blockhashCommitment),x=new lt({payerKey:this.feePayer,recentBlockhash:P,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(c));((w=this.owner)==null?void 0:w.signer)&&!this.signers.some(A=>A.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let T=new mt(x);return T.sign(this.signers),{builder:this,transaction:T,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async A=>{var C;let{skipPreflight:B=!0,sendAndConfirm:k,notSendToRpc:R}=A||{};if(Ne([T]),(C=this.owner)!=null&&C.isKeyPair){let b=await this.connection.sendTransaction(T,{skipPreflight:B});return k&&await Ct(this.connection,b),{txId:b,signedTx:T}}if(this.signAllTransactions){let b=await this.signAllTransactions([T]);if(this.signers.length)for(let S of b)try{S.sign(this.signers)}catch{}return{txId:R?"":await this.connection.sendTransaction(b[0],{skipPreflight:B}),signedTx:b[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}async buildV0MultiTx(e){var g;let{extraPreBuildData:t=[],buildProps:o}=e,{transaction:r}=await this.buildV0(o),a=t.filter(y=>y.builder.instructions.length>0),s=[r,...a.map(y=>y.transaction)],c=[this.signers,...a.map(y=>y.signers)],f=[...this.instructionTypes,...a.map(y=>y.instructionTypes).flat()];return(g=this.owner)!=null&&g.signer&&c.forEach(y=>{y.some(P=>P.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(y,P)=>{y.sign(c[P])}),{builder:this,transactions:s,signers:c,instructionTypes:f,buildProps:o,execute:async y=>{var w;let{sequentially:P,onTxUpdate:x,recentBlockHash:T,skipPreflight:h=!0}=y||{};if(T&&s.forEach(A=>A.message.recentBlockhash=T),Ne(s),(w=this.owner)!=null&&w.isKeyPair){if(P){let A=[];for(let B of s){let k=await this.connection.sendTransaction(B,{skipPreflight:h});await Ct(this.connection,k),A.push(k)}return{txIds:A,signedTxs:s}}return{txIds:await Promise.all(s.map(async A=>await this.connection.sendTransaction(A,{skipPreflight:h}))),signedTxs:s}}if(this.signAllTransactions){let A=await this.signAllTransactions(s);if(P){let B=0,k=[],R=async()=>{if(!A[B])return;let C=await this.connection.sendTransaction(A[B],{skipPreflight:h});k.push({txId:C,status:"sent",signedTx:A[B]}),x==null||x([...k]),B++;let b=!1,S=null,K=null,L=N=>{S!==null&&clearInterval(S),K!==null&&this.connection.removeSignatureListener(K);let F=k.findIndex(G=>G.txId===C);if(F>-1){if(k[F].status==="error"||k[F].status==="success")return;k[F].status=N.err?"error":"success"}x==null||x([...k]),N.err||R()};this.loopMultiTxStatus&&(S=setInterval(async()=>{var N;if(b){clearInterval(S);return}try{let F=await this.connection.getTransaction(C,{commitment:"confirmed",maxSupportedTransactionVersion:0});F&&(b=!0,clearInterval(S),L({err:((N=F.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",C))}catch(F){b=!0,clearInterval(S),console.error("getTransaction timeout:",F,C)}},Rt)),K=this.connection.onSignature(C,N=>{if(b){this.connection.removeSignatureListener(K);return}b=!0,L(N)},"confirmed"),this.connection.getSignatureStatus(C)};return R(),{txIds:[],signedTxs:A}}else{let B=[];for(let k=0;k<A.length;k+=1){let R=await this.connection.sendTransaction(A[k],{skipPreflight:h});B.push(R)}return{txIds:B,signedTxs:A}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var x;let P=e||{},{splitIns:t=[],computeBudgetConfig:o}=P,r=ge(P,["splitIns","computeBudgetConfig"]),a=o?Kt(o):{instructions:[],instructionTypes:[]},s=this.signers.reduce((T,h)=>v(O({},T),{[h.publicKey.toBase58()]:h}),{}),c=[],f=[],g=[],y=0;if(this.allInstructions.forEach(T=>{let h=[...g,T],w=o?[...a.instructions,...h]:h,B=[...new Set(h.map(k=>k.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat()).values()].map(k=>new Xe(k));if(T!==t[y]&&g.length<12&&(st({instructions:w,payer:this.feePayer,signers:B})||st({instructions:h,payer:this.feePayer,signers:B})))g.push(T);else{if(g.length===0)throw Error("item ins too big");y+=T===t[y]?1:0,st({instructions:o?[...a.instructions,...g]:[...g],payer:this.feePayer,signers:B})?c.push(new ct().add(...a.instructions,...g)):c.push(new ct().add(...g)),f.push(Array.from(new Set(g.map(k=>k.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat())).map(k=>s[k]).filter(k=>k!==void 0)),g=[T]}}),g.length>0){let h=[...new Set(g.map(w=>w.keys.filter(A=>A.isSigner).map(A=>A.pubkey.toString())).flat()).values()].map(w=>s[w]).filter(w=>w!==void 0);st({instructions:o?[...a.instructions,...g]:[...g],payer:this.feePayer,signers:h.map(w=>w.publicKey)})?c.push(new ct().add(...a.instructions,...g)):c.push(new ct().add(...g)),f.push(h)}return c.forEach(T=>T.feePayer=this.feePayer),(x=this.owner)!=null&&x.signer&&f.forEach(T=>{T.some(h=>h.publicKey.equals(this.owner.publicKey))||T.push(this.owner.signer)}),{builder:this,transactions:c,signers:f,instructionTypes:this.instructionTypes,execute:async T=>{var C;let{sequentially:h,onTxUpdate:w,skipTxCount:A=0,recentBlockHash:B,skipPreflight:k=!0}=T||{},R=B!=null?B:await ze(this.connection,this.blockhashCommitment);if(c.forEach(async(b,S)=>{b.recentBlockhash=R,f[S].length&&b.sign(...f[S])}),Ne(c),(C=this.owner)!=null&&C.isKeyPair){if(h){let b=0,S=[];for(let K of c){if(++b,b<=A){S.push("tx skipped");continue}let L=await ln(this.connection,K,this.signers.find(N=>N.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:k});S.push(L)}return{txIds:S,signedTxs:c}}return{txIds:await Promise.all(c.map(async b=>await this.connection.sendRawTransaction(b.serialize(),{skipPreflight:k}))),signedTxs:c}}if(this.signAllTransactions){let b=await this.signAllTransactions(c.slice(A,c.length)),S=[...c.slice(0,A),...b];if(h){let K=0,L=[],N=async()=>{if(!S[K])return;K<A&&(L.push({txId:"",status:"success",signedTx:S[K]}),w==null||w([...L]),K++,N());let F=await this.connection.sendRawTransaction(S[K].serialize(),{skipPreflight:k});L.push({txId:F,status:"sent",signedTx:S[K]}),w==null||w([...L]),K++;let G=!1,q=null,_=null,J=z=>{q!==null&&clearInterval(q),_!==null&&this.connection.removeSignatureListener(_);let se=L.findIndex(ke=>ke.txId===F);if(se>-1){if(L[se].status==="error"||L[se].status==="success")return;L[se].status=z.err?"error":"success"}w==null||w([...L]),z.err||N()};this.loopMultiTxStatus&&(q=setInterval(async()=>{var z;if(G){clearInterval(q);return}try{let se=await this.connection.getTransaction(F,{commitment:"confirmed",maxSupportedTransactionVersion:0});se&&(G=!0,clearInterval(q),J({err:((z=se.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",F))}catch(se){G=!0,clearInterval(q),console.error("getTransaction timeout:",se,F)}},Rt)),_=this.connection.onSignature(F,z=>{if(G){this.connection.removeSignatureListener(_);return}G=!0,J(z)},"confirmed"),this.connection.getSignatureStatus(F)};return await N(),{txIds:L.map(F=>F.txId),signedTxs:S}}else{let K=[];for(let L=0;L<S.length;L+=1){let N=await this.connection.sendRawTransaction(S[L].serialize(),{skipPreflight:k});K.push(N)}return{txIds:K,signedTxs:S}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async sizeCheckBuildV0(e){var C;let R=e||{},{computeBudgetConfig:t,splitIns:o=[],lookupTableCache:r={},lookupTableAddress:a=[],insCountLimit:s=12}=R,c=ge(R,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),f=O(O({},this.cluster==="devnet"?await un(this.connection):await sn(this.connection)),r),g=Array.from(new Set([...this.lookupTableAddress,...a])),y=[];for(let b of g)f[b]===void 0&&y.push(new Xe(b));let P=await an({connection:this.connection,address:y});for(let[b,S]of Object.entries(P))f[b]=S;let x=t?Kt(t):{instructions:[],instructionTypes:[]},T=await ze(this.connection,this.blockhashCommitment),h=this.signers.reduce((b,S)=>v(O({},b),{[S.publicKey.toBase58()]:S}),{}),w=[],A=[],B=[],k=0;if(this.allInstructions.forEach(b=>{let S=[...B,b],K=t?[...x.instructions,...S]:S;if(b!==o[k]&&B.length<s&&(ut({instructions:K,payer:this.feePayer,lookupTableAddressAccount:f})||ut({instructions:S,payer:this.feePayer,lookupTableAddressAccount:f})))B.push(b);else{if(B.length===0)throw Error("item ins too big");k+=b===o[k]?1:0;let L={};for(let N of[...new Set(g)])f[N]!==void 0&&(L[N]=f[N]);if(t&&ut({instructions:[...x.instructions,...B],payer:this.feePayer,lookupTableAddressAccount:f,recentBlockhash:T})){let N=new lt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...x.instructions,...B]}).compileToV0Message(Object.values(f));w.push(new mt(N))}else{let N=new lt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...B]}).compileToV0Message(Object.values(f));w.push(new mt(N))}A.push(Array.from(new Set(B.map(N=>N.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat())).map(N=>h[N]).filter(N=>N!==void 0)),B=[b]}}),B.length>0){let S=[...new Set(B.map(K=>K.keys.filter(L=>L.isSigner).map(L=>L.pubkey.toString())).flat()).values()].map(K=>h[K]).filter(K=>K!==void 0);if(t&&ut({instructions:[...x.instructions,...B],payer:this.feePayer,lookupTableAddressAccount:f,recentBlockhash:T})){let K=new lt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...x.instructions,...B]}).compileToV0Message(Object.values(f));w.push(new mt(K))}else{let K=new lt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...B]}).compileToV0Message(Object.values(f));w.push(new mt(K))}A.push(S)}return(C=this.owner)!=null&&C.signer&&A.forEach(b=>{b.some(S=>S.publicKey.equals(this.owner.publicKey))||b.push(this.owner.signer)}),w.forEach((b,S)=>{b.sign(A[S])}),{builder:this,transactions:w,buildProps:e,signers:A,instructionTypes:this.instructionTypes,execute:async b=>{var G;let{sequentially:S,onTxUpdate:K,skipTxCount:L=0,recentBlockHash:N,skipPreflight:F=!0}=b||{};if(w.map(async(q,_)=>{A[_].length&&q.sign(A[_]),N&&(q.message.recentBlockhash=N)}),Ne(w),(G=this.owner)!=null&&G.isKeyPair){if(S){let q=0,_=[];for(let J of w){if(++q,q<=L){console.log("skip tx: ",q),_.push("tx skipped");continue}let z=await this.connection.sendTransaction(J,{skipPreflight:F});await Ct(this.connection,z),_.push(z)}return{txIds:_,signedTxs:w}}return{txIds:await Promise.all(w.map(async q=>await this.connection.sendTransaction(q,{skipPreflight:F}))),signedTxs:w}}if(this.signAllTransactions){let q=await this.signAllTransactions(w.slice(L,w.length)),_=[...w.slice(0,L),...q];if(S){let J=0,z=[],se=async()=>{if(!_[J])return;if(J<L){z.push({txId:"",status:"success",signedTx:_[J]}),K==null||K([...z]),J++,se();return}let ke=await this.connection.sendTransaction(_[J],{skipPreflight:F});z.push({txId:ke,status:"sent",signedTx:_[J]}),K==null||K([...z]),J++;let nt=!1,Ee=null,Tt=null,Ln=Re=>{Ee!==null&&clearInterval(Ee),Tt!==null&&this.connection.removeSignatureListener(Tt);let Te=z.findIndex(Go=>Go.txId===ke);if(Te>-1){if(z[Te].status==="error"||z[Te].status==="success")return;z[Te].status=Re.err?"error":"success"}K==null||K([...z]),Re.err||se()};this.loopMultiTxStatus&&(Ee=setInterval(async()=>{var Re;if(nt){clearInterval(Ee);return}try{let Te=await this.connection.getTransaction(ke,{commitment:"confirmed",maxSupportedTransactionVersion:0});Te&&(nt=!0,clearInterval(Ee),Ln({err:((Re=Te.meta)==null?void 0:Re.err)||null}),console.log("tx status from getTransaction:",ke))}catch(Te){nt=!0,clearInterval(Ee),console.error("getTransaction timeout:",Te,ke)}},Rt)),Tt=this.connection.onSignature(ke,Re=>{if(nt){this.connection.removeSignatureListener(Tt);return}nt=!0,Ln(Re)},"confirmed"),this.connection.getSignatureStatus(ke)};return se(),{txIds:[],signedTxs:_}}else{let J=[];for(let z=0;z<_.length;z+=1){let se=await this.connection.sendTransaction(_[z],{skipPreflight:F});J.push(se)}return{txIds:J,signedTxs:_}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:c||{}}}};var mn=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),le=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=D(t)}createTxBuilder(e){return this.scope.checkOwner(),new Lt({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(mn(e))}logInfo(...e){this.logger.info(mn(e))}logAndCreateError(...e){let t=mn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as lm,SystemProgram as dm}from"@solana/web3.js";import ym from"bn.js";import{createCloseAccountInstruction as Am,createInitializeAccountInstruction as wm,createTransferInstruction as km,TOKEN_PROGRAM_ID as Tm}from"@solana/spl-token";import{Keypair as jl,PublicKey as $l}from"@solana/web3.js";import tm from"bn.js";import{TOKEN_PROGRAM_ID as im}from"@solana/spl-token";import{PublicKey as Oi}from"@solana/web3.js";import $n,{isBN as Jn}from"bn.js";import{bits as ki,BitStructure as nl,blob as Ti,Blob as ol,cstr as il,f32 as rl,f32be as al,f64 as sl,f64be as ul,greedy as cl,Layout as hi,ns64 as ll,ns64be as ml,nu64 as dl,nu64be as pl,offset as Ii,s16 as fl,s16be as yl,s24 as bl,s24be as gl,s32 as Bi,s32be as Pl,s40 as Al,s40be as wl,s48 as kl,s48be as Tl,s8 as hl,seq as Si,struct as Il,Structure as xi,u16 as Ki,u16be as Bl,u24 as Sl,u24be as xl,u32 as Ci,u32be as Kl,u40 as Cl,u40be as Rl,u48 as Ll,u48be as Ol,u8 as Ri,UInt as Li,union as Nl,Union as Ml,unionLayoutDiscriminator as Fl,utf8 as vl}from"@solana/buffer-layout";var Ot=hi,Zn=xi;var dn=Li;var Hn=Ri,Z=Ki;var dt=Ci;var fe=Bi;var jn=Si;var E=Ti;var pn=ki,fn=Ii;var Fe=class extends Ot{constructor(t,o,r){super(t,r);this.blob=E(t),this.signed=o}decode(t,o=0){let r=new $n(this.blob.decode(t,o),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,o,r=0){return typeof t=="number"&&(t=new $n(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),o,r)}},Nt=class extends Ot{constructor(t){super(8,t);this._lower=pn(dt(),!1),this._upper=pn(dt(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,o=0){let r=this._lower.decode(t,o),a=this._upper.decode(t,o+this._lower.span);return O(O({},r),a)}encode(t,o,r=0){return this._lower.encode(t,o,r)+this._upper.encode(t,o,r+this._lower.span)}};function d(i){return new dn(1,i)}function Y(i){return new dn(4,i)}function n(i){return new Fe(8,!1,i)}function V(i){return new Fe(16,!1,i)}function eo(i){return new Fe(1,!0,i)}function Ye(i){return new Fe(8,!0,i)}function to(i){return new Fe(16,!0,i)}var ve=class extends Ot{constructor(t,o,r,a){super(t.span,a);this.layout=t,this.decoder=o,this.encoder=r}decode(t,o){return this.decoder(this.layout.decode(t,o))}encode(t,o,r){return this.layout.encode(this.encoder(t),o,r)}getSpan(t,o){return this.layout.getSpan(t,o)}};function u(i){return new ve(E(32),e=>new Oi(e),e=>e.toBuffer(),i)}function de(i){return new ve(Hn(),Ni,Mi,i)}function Ni(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function Mi(i){return i?1:0}function no(i,e){let t=dt("length"),o=p([t,I(i,fn(t,-t.span),"values")]);return new ve(o,({values:r})=>r,r=>({values:r}),e)}function Fi(i){let e=dt("length"),t=p([e,E(fn(e,-e.span),"data")]);return new ve(t,({data:o})=>o,o=>({data:o}),i)}function ee(i){return new ve(Fi(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),i)}var yn=class extends Zn{decode(e,t){return super.decode(e,t)}};function p(i,e,t){return new yn(i,e,t)}function I(i,e,t){let o,r=typeof e=="number"?e:Jn(e)?e.toNumber():new Proxy(e,{get(a,s){if(!o){let c=Reflect.get(a,"count");o=Jn(c)?c.toNumber():c,Reflect.set(a,"count",o)}return Reflect.get(a,s)},set(a,s,c){return s==="count"&&(o=c),Reflect.set(a,s,c)}});return jn(i,r,t)}var Mt=p([u("mint"),u("owner"),n("amount"),Y("delegateOption"),u("delegate"),d("state"),Y("isNativeOption"),n("isNative"),n("delegatedAmount"),Y("closeAuthorityOption"),u("closeAuthority")]);import{PublicKey as NP,SystemProgram as MP}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as vP}from"@solana/spl-token";import{PublicKey as Zm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as jm}from"@solana/spl-token";import{PublicKey as M}from"@solana/web3.js";var io=new M("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),ro=new M("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),ao=new M("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),bn=new M("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),td=new M("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Vi=new M("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),so=new M("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),uo=new M("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),nd=new M("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),_i=new M("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),co=new M("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Ei=new M("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Di=new M("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),lo=new M("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),od=new M("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Wi=new M("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),gn=new M("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),qi=new M("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),id=new M("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ui=new M("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Gi=new M("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),zi=new M("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),rd=new M("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),ad=new M("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),sd=new M("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),ud=new M("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),cd=new M("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Se={OPEN_BOOK_PROGRAM:new M("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new M("Ray1111111111111111111111111111111111111111"),AMM_V4:new M("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new M("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new M("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new M("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new M("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new M("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new M("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new M("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new M("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new M("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:M.default,Router:new M("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new M("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new M("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new M("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new M("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new M("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new M("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new M("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new M("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new M("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new M("Ray1111111111111111111111111111111111111111")};import XP from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as lb,TOKEN_2022_PROGRAM_ID as mb,TOKEN_PROGRAM_ID as db}from"@solana/spl-token";import{PublicKey as fb}from"@solana/web3.js";import bb from"bn.js";import Pb from"decimal.js";import{TOKEN_PROGRAM_ID as hd}from"@solana/spl-token";import{PublicKey as xd}from"@solana/web3.js";var Xi=p([Y("mintAuthorityOption"),u("mintAuthority"),n("supply"),d("decimals"),d("isInitialized"),Y("freezeAuthorityOption"),u("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as Oy,TOKEN_2022_PROGRAM_ID as Ny,TOKEN_PROGRAM_ID as My}from"@solana/spl-token";import{Keypair as Vy,PublicKey as _y,SystemProgram as Dy,TransactionInstruction as Wy}from"@solana/web3.js";import Uy from"bn.js";import W from"bn.js";var ye=new W(1).shln(64);var Yi=new W(1).shln(128),vt=new W(1).shln(64).subn(1),Qi=new W(1).shln(128).subn(1);var Ze=new W("4295048016"),He=new W("79226673521066979257578248091"),Zi=new W("59543866431248"),Hi=new W("184467440737095516"),ji=new W("15793534762490258745");var Pn=60,Ed=new W("18446743708227953217"),$i=[{bit:0,factor:new W("fffcb933bd6fb800",16)},{bit:1,factor:new W("fff97272373d4000",16)},{bit:2,factor:new W("fff2e50f5f657000",16)},{bit:3,factor:new W("ffe5caca7e10f000",16)},{bit:4,factor:new W("ffcb9843d60f7000",16)},{bit:5,factor:new W("ff973b41fa98e800",16)},{bit:6,factor:new W("ff2ea16466c9b000",16)},{bit:7,factor:new W("fe5dee046a9a3800",16)},{bit:8,factor:new W("fcbe86c7900bb000",16)},{bit:9,factor:new W("f987a7253ac65800",16)},{bit:10,factor:new W("f3392b0822bb6000",16)},{bit:11,factor:new W("e7159475a2caf000",16)},{bit:12,factor:new W("d097f3bdfd2f2000",16)},{bit:13,factor:new W("a9f746462d9f8000",16)},{bit:14,factor:new W("70d869a156f31c00",16)},{bit:15,factor:new W("31be135f97ed3200",16)},{bit:16,factor:new W("9aa508b5b85a500",16)},{bit:17,factor:new W("5d6af8dedc582c",16)},{bit:18,factor:new W("2216e584f5fa",16)}];var pt=3,mo=100;var po=10,fo=100,Vt=14;var $=new W(0),je=new W(1),Dd=new W(-1);var Wd=new W("18446744073700000000");var Ji=p([E(8),d("bump"),Z("index"),u("owner"),Y("protocolFeeRate"),Y("tradeFeeRate"),Z("tickSpacing"),Y("fundFeeRate"),I(Y(),1),u("fundOwner"),I(n(),3)]),er=p([Y("blockTimestamp"),Ye("tickCumulative"),I(n(),4)]),yo=p([E(8),de("initialized"),n("recentEpoch"),Z("observationIndex"),u("poolId"),I(er,mo,"observations"),I(n(),4)]),tr=p([Z("filterPeriod"),Z("decayPeriod"),Z("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),fe("tickSpacingIndexReference"),Y("volatilityReference"),Y("volatilityAccumulator"),n("lastUpdateTimestamp"),I(d(),46)]),nr=p([d("state"),n("openTime"),n("endTime"),n("lastUpdateTime"),V("emissionsPerSecondX64"),n("totalEmissioned"),n("claimed"),u("mint"),u("vault"),u("creator"),V("growthGlobalX64")]),An=p([E(8),d("bump"),u("configId"),u("creator"),u("mintA"),u("mintB"),u("vaultA"),u("vaultB"),u("observationId"),d("mintDecimalsA"),d("mintDecimalsB"),Z("tickSpacing"),V("liquidity"),V("sqrtPriceX64"),fe("tickCurrent"),Y(),V("feeGrowthGlobalX64A"),V("feeGrowthGlobalX64B"),n("protocolFeesTokenA"),n("protocolFeesTokenB"),I(V(),4),d("status"),d("feeOn"),E(6),I(nr,pt,"rewardInfos"),E(8*16,"tickArrayBitmap"),I(n(),4),n("fundFeesTokenA"),n("fundFeesTokenB"),n("startTime"),n("recentEpoch"),tr.replicate("dynamicFeeInfo"),I(n(),46)]),or=p([V("growthInsideLastX64"),n("rewardAmountOwed")]),ir=p([E(8),d("bump"),u("nftMint"),u("poolId"),fe("tickLower"),fe("tickUpper"),V("liquidity"),V("feeGrowthInsideLastX64A"),V("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),I(or,pt,"rewardInfos"),n("recentEpoch"),I(n(),7)]),zd=p([E(8),d("bump"),u("poolId"),fe("tickLower"),fe("tickUpper"),V("liquidity"),V("feeGrowthInsideLastX64A"),V("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),I(V(),pt,"rewardGrowthInside"),n("recentEpoch"),I(n(),7)]),rr=p([fe("tick"),to("liquidityNet"),V("liquidityGross"),V("feeGrowthOutsideX64A"),V("feeGrowthOutsideX64B"),I(V(),pt,"rewardGrowthsOutsideX64"),n("orderPhase"),n("ordersAmount"),n("partFilledOrdersRemaining"),V("unfilledRatioX64"),I(Y(),3)]),bo=p([E(8),u("poolId"),fe("startTickIndex"),I(rr,Pn,"ticks"),d("initializedTickCount"),n("recentEpoch"),I(d(),107)]),ar=p([E(8),d("bump"),I(u(),po,"operationOwners"),I(u(),fo,"whitelistMints")]),sr=p([E(8),u("poolId"),u("owner"),fe("tick"),de("zeroForOne"),n("orderPhase"),n("totalAmount"),n("filledAmount"),n("settleBase"),n("settleOutput"),n("openTime"),V("unfilledRatioX64"),I(n(),4)]),go=p([E(8),u("poolId"),E(8*8*Vt,"positiveTickArrayBitmap"),E(8*8*Vt,"negativeTickArrayBitmap")]),Xd=p([E(8),Z("index"),Z("filterPeriod"),Z("decayPeriod"),Z("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),I(n(),8)]),ur=p([E(8),u("wallet"),d("nonceIndex"),n("orderNonce"),I(n(),4)]),Yd=p([n(),d("bump"),u("owner"),u("poolId"),u("positionId"),u("nftAccount"),I(n(),8)]),cr=p([E(8),d("bump"),u("lockOwner"),u("poolId"),u("positionId"),u("nftAccount"),u("lockNftMint"),n("recentEpoch"),I(n(),8)]);import Hd from"bn.js";function Po(i){let e=Buffer.alloc(2);return e.writeUInt16LE(i),e}var sp=Buffer.from("amm_config","utf8"),Ao=Buffer.from("pool","utf8"),wo=Buffer.from("pool_vault","utf8"),up=Buffer.from("pool_reward_vault","utf8"),cp=Buffer.from("position","utf8"),lp=Buffer.from("tick_array","utf8"),mp=Buffer.from("operation","utf8"),dp=Buffer.from("pool_tick_array_bitmap_extension","utf8"),pp=Buffer.from("observation","utf8"),fp=Buffer.from("support_mint","utf8"),yp=Buffer.from("dynamic_fee_config","utf8");var bp=Buffer.from("locked_position","utf8");import{sha256 as Ir}from"js-sha256";import lr from"bn.js";import wp from"decimal.js";var Tp=new lr(1).shln(256).subn(1);import Dp from"bn.js";import Cp from"bn.js";import Lp from"decimal.js";import zp from"bn.js";import Yp from"decimal.js";import{PublicKey as Mf}from"@solana/web3.js";import vf from"bn.js";import{TOKEN_2022_PROGRAM_ID as Gf,TOKEN_PROGRAM_ID as zf}from"@solana/spl-token";import Zf from"decimal.js";import hf from"bn.js";import lf from"bn.js";import ay from"bn.js";function te(i){let e=`global:${i}`;return Buffer.from(Ir.digest(e)).slice(0,8)}yo.span;var jy=D("Raydium_Clmm"),$y={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 hn}from"@solana/web3.js";var Cr=p([d("instruction")]),Rr=p([d("instruction")]),Lr=p([n("rewardState"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardLastUpdateTime"),n("totalReward"),n("totalRewardEmissioned"),n("rewardClaimed"),n("rewardPerSecond"