UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

1 lines 77.8 kB
var Ao=Object.defineProperty,wo=Object.defineProperties;var ko=Object.getOwnPropertyDescriptors;var ut=Object.getOwnPropertySymbols;var sn=Object.prototype.hasOwnProperty,un=Object.prototype.propertyIsEnumerable;var an=(r,e,n)=>e in r?Ao(r,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[e]=n,L=(r,e)=>{for(var n in e||(e={}))sn.call(e,n)&&an(r,n,e[n]);if(ut)for(var n of ut(e))un.call(e,n)&&an(r,n,e[n]);return r},_=(r,e)=>wo(r,ko(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&&ut)for(var o of ut(r))e.indexOf(o)<0&&un.call(r,o)&&(n[o]=r[o]);return n};import{PublicKey as Io}from"@solana/web3.js";import{get as cn,set as To}from"lodash";var Kt=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}},ln={},ho={};function E(r){let e=cn(ln,r);if(!e){let n=cn(ho,r);e=new Kt({name:r,logLevel:n}),To(ln,r,e)}return e}import{MINT_SIZE as Va,TOKEN_PROGRAM_ID as _a,getTransferFeeConfig as Ea,unpackMint as Da}from"@solana/spl-token";var Ct=E("Raydium_accountInfo_util");async function ke(r,e,n){let{batchRequest:o,commitment:u="confirmed",chunkCount:l=100}=L({batchRequest:!1},n),p=Rt(e,l),c=new Array(p.length).fill([]);if(o){let b=p.map(h=>{let K=r._buildArgs([h.map(k=>k.toBase58())],u,"base64");return{methodName:"getMultipleAccounts",args:K}}),w=Rt(b,10);c=(await(await Promise.all(w.map(async h=>await r._rpcBatchRequest(h)))).flat()).map(h=>(h.error&&Ct.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${h.error.message}`),h.result.value.map(K=>{if(K){let{data:k,executable:R,lamports:A,owner:T,rentEpoch:S}=K;return k.length!==2&&k[1]!=="base64"&&Ct.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(k[0],"base64"),executable:R,lamports:A,owner:new Io(T),rentEpoch:S}}return null})))}else try{c=await Promise.all(p.map(b=>r.getMultipleAccountsInfo(b,u)))}catch(b){b instanceof Error&&Ct.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${b.message}`)}return c.flat()}import Le from"bn.js";import HC from"decimal.js";import Oo from"big.js";import os 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 mn=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>=mn||r<=-mn)&&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"),Lt=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 u=new He(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return u.toFormat(u.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.`),Lt.DP=e,Lt.RM=Lo[o]||1,new Lt(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,n)}isZero(){return this.numerator.isZero()}};var ds=E("Raydium_amount"),ps=Qe(Oo);import{PublicKey as Mo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as dn}from"@solana/spl-token";var mt={chainId:101,address:Mo.default.toBase58(),programId:dn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ye={chainId:101,address:"So11111111111111111111111111111111111111112",programId:dn.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 Nt}from"@solana/web3.js";import{PublicKey as Y,SystemProgram as pn,SYSVAR_RENT_PUBKEY as Fo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as vo}from"@solana/spl-token";function Ne({pubkey:r,isSigner:e=!1,isWritable:n=!0}){return{pubkey:r,isWritable:n,isSigner:e}}var Vo=[Ne({pubkey:vo,isWritable:!1}),Ne({pubkey:pn.programId,isWritable:!1}),Ne({pubkey:Fo,isWritable:!1})];function fn({publicKey:r,transformSol:e}){let n=yn(r.toString());if(n instanceof Y)return e&&n.equals(Ie)?fe:n;if(e&&n.toString()===Ie.toBase58())return fe;if(typeof n=="string"){if(n===Y.default.toBase58())return Y.default;try{return new Y(n)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function yn(r){try{return new Y(r)}catch{return r}}var Ot=new Y("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Me=new Y("SysvarRent111111111111111111111111111111111"),_o=new Y("SysvarC1ock11111111111111111111111111111111"),dt=new Y("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Eo=new Y("Sysvar1nstructions1111111111111111111111111"),bn=pn.programId,ks=new Y("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ts=new Y("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),hs=new Y("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Is=new Y("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Bs=new Y("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ss=new Y("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),xs=new Y("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ks=new Y("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Cs=new Y("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Rs=new Y("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Ls=new Y("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),fe=new Y("So11111111111111111111111111111111111111112"),Ie=Y.default;var Mt=class{constructor({mint:e,decimals:n,symbol:o,name:u,skipMint:l=!1,isToken2022:p=!1}){if(e===Ie.toBase58()||e instanceof Nt&&Ie.equals(e)){this.decimals=ye.decimals,this.symbol=ye.symbol,this.name=ye.name,this.mint=new Nt(ye.address),this.isToken2022=!1;return}this.decimals=n,this.symbol=o||e.toString().substring(0,6),this.name=u||e.toString().substring(0,6),this.mint=l?Nt.default:fn({publicKey:e}),this.isToken2022=p}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ne=Mt;ne.WSOL=new Mt(_(L({},ye),{mint:ye.address}));var Ft=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=Ft;pt.SOL=new Ft(mt);import Do from"bn.js";var Us=new G(new Do(100));var Zs=E("Raydium_price");import{merge as HK}from"lodash";import iu from"axios";var gn={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",MONITOR_BASE_HOST:"https://monitor.raydium.io",SERVICE_1_BASE_HOST:"https://service-v1.raydium.io",TEMP_HOST:"https://temp-api-v1.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",CPMM_CONFIG:"/main/cpmm-config",CLMM_DYNAMIC_CONFIG:"/main/clmm-dynamic-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://lite-api.jup.ag/tokens/v2/tag?query=verified",POOL_LIST:"/pools/info/list-v2",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/list-v2",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",OWNER_LOCK_POSITION:"/position/clmm-lock/{owner}",IDO_KEYS:"/ido/key/ids",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee",CPMM_LOCK:"https://dynamic-ipfs.raydium.io/lock/cpmm/position",LAUNCH_AUTH_HOST:"https://launch-auth-v1.raydium.io",LAUNCH_COMMENT_HOST:"hhttps://launch-forum-v1.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1.raydium.io"},Wo=_(L({},gn),{BASE_HOST:"https://api-v3-devnet.raydium.io",OWNER_BASE_HOST:"https://owner-v1-devnet.raydium.io",SWAP_HOST:"https://transaction-v1-devnet.raydium.io",CPMM_LOCK:"https://dynamic-ipfs-devnet.raydium.io/lock/cpmm/position",TEMP_HOST:"https://temp-api-v1-devnet.raydium.io",LAUNCH_AUTH_HOST:"https://launch-auth-v1-devnet.raydium.io",LAUNCH_COMMENT_HOST:"https://launch-forum-v1-devnet.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1-devnet.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1-devnet.raydium.io"});var xu=E("Raydium_Api");import{PublicKey as zl,SystemProgram as Yl}from"@solana/web3.js";import{AccountLayout as jl,createAssociatedTokenAccountIdempotentInstruction as $l,TOKEN_PROGRAM_ID as Jl,TOKEN_2022_PROGRAM_ID as em}from"@solana/spl-token";import{PublicKey as Ee,sendAndConfirmTransaction as Wt,SystemProgram as Xo,Transaction as Je,TransactionMessage as et,VersionedTransaction as tt}from"@solana/web3.js";import Qo from"axios";import{PublicKey as vt,AddressLookupTableAccount as Ve}from"@solana/web3.js";async function Vt({connection:r,address:e,cluster:n="mainnet"}){let o=await ke(r,[...new Set(e.map(l=>l.toString()))].map(l=>new vt(l))),u={};for(let l=0;l<e.length;l++){let p=o[l],c=e[l];if(!p)continue;let b=new Ve({key:c,state:Ve.deserialize(p.data)});u[c.toString()]=b,n==="devnet"?ve[c.toString()]=b:Fe[c.toString()]=b}return u}var Fe={},_t=async r=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Fe[e])return Fe;let n=new vt(e),o=await r.getAccountInfo(n);return o&&(Fe[e]=new Ve({key:n,state:Ve.deserialize(o.data)})),Fe},ve={},Et=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 Ve({key:n,state:Ve.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 Pn,Keypair as wn,PublicKey as qo,Transaction as kn,TransactionMessage as Uo,VersionedTransaction as Tn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Go}from"@solana/spl-token";var An=E("Raydium_txUtil"),hn=1644;function ft(r){let e=[],n=[];return r.microLamports&&(e.push(Pn.setComputeUnitPrice({microLamports:r.microLamports})),n.push($.SetComputeUnitPrice)),r.units&&(e.push(Pn.setComputeUnitLimit({units:r.units})),n.push($.SetComputeUnitLimit)),{instructions:e,instructionTypes:n}}async function _e(r,e){var o,u;let n=e!=null?e:"confirmed";return(u=await((o=r.getLatestBlockhash)==null?void 0:o.call(r,{commitment:n})))==null?void 0:u.blockhash}async function yt(r,e){return r.getSignatureStatuses([e]),new Promise((n,o)=>{let u=setTimeout(o,6e4);r.onSignature(e,l=>{if(clearTimeout(u),!l.err){n("");return}o(Object.assign(l.err,{txId:e}))},"confirmed")})}function Dt(r,e){r.length<1&&An.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&An.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<hn}catch{return!1}}function be(r,e){let[n,o]=qo.findProgramAddressSync(r,e);return{publicKey:n,nonce:o}}function je({instructions:r,payer:e,signers:n}){return Dt(r,[e,...n])}function $e({instructions:r,payer:e,lookupTableAddressAccount:n,recentBlockhash:o=wn.generate().publicKey.toString()}){let l=new Uo({payerKey:e,recentBlockhash:o,instructions:r}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new Tn(l).serialize()).toString("base64").length<hn}catch{return!1}}var zo=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r),Yo=r=>{let e=r.serialize({requireAllSignatures:!1,verifySignatures:!1});r instanceof Tn&&(e=zo(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Be(r){let e=[];return r.forEach(n=>{n instanceof kn&&(n.recentBlockhash||(n.recentBlockhash=Go.toBase58()),n.feePayer||(n.feePayer=wn.generate().publicKey)),e.push(Yo(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(Xo.transfer({fromPubkey:(n=e.feePayer)!=null?n:this.feePayer,toPubkey:new Ee(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:u=[],endInstructionTypes:l=[],lookupTableAddress:p=[]}){return this.instructions.push(...e),this.endInstructions.push(...n),this.signers.push(...o),this.instructionTypes.push(...u),this.endInstructionTypes.push(...l),this.lookupTableAddress.push(...p.filter(c=>c!==Ee.default.toString())),this}async versionBuild({txVersion:e,extInfo:n,lookupTableAddress:o}){return e===0?await this.buildV0(_(L({},n||{}),{lookupTableAddress:o})):this.build(n)}build(e){var o;let n=new Je;return this.allInstructions.length&&n.add(...this.allInstructions),n.feePayer=this.feePayer,((o=this.owner)==null?void 0:o.signer)&&!this.signers.some(u=>u.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 u=>{var y;let{recentBlockHash:l,skipPreflight:p=!0,sendAndConfirm:c,notSendToRpc:b}=u||{},w=l!=null?l:await _e(this.connection,this.blockhashCommitment);if(n.recentBlockhash=w,this.signers.length&&n.sign(...this.signers),Be([n]),(y=this.owner)!=null&&y.isKeyPair)return{txId:c?await Wt(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 h=await this.signAllTransactions([n]);if(this.signers.length)for(let K of h)try{K.sign(...this.signers)}catch{}return{txId:b?"":await this.connection.sendRawTransaction(h[0].serialize(),{skipPreflight:p}),signedTx:h[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var w;let{extraPreBuildData:n=[],extInfo:o}=e,{transaction:u}=this.build(o),l=n.filter(y=>y.transaction.instructions.length>0),p=[u,...l.map(y=>y.transaction)],c=[this.signers,...l.map(y=>y.signers)],b=[...this.instructionTypes,...l.map(y=>y.instructionTypes).flat()];return(w=this.owner)!=null&&w.signer&&c.forEach(y=>{y.some(h=>h.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:p,signers:c,instructionTypes:b,execute:async y=>{var S;let{sequentially:h,onTxUpdate:K,skipTxCount:k=0,recentBlockHash:R,skipPreflight:A=!0}=y||{},T=R!=null?R:await _e(this.connection,this.blockhashCommitment);if((S=this.owner)!=null&&S.isKeyPair){if(h){let x=[],F=0;for(let v of p){if(++F,F<=k)continue;let g=await Wt(this.connection,v,this.signers.find(I=>I.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=T,await this.connection.sendRawTransaction(x.serialize(),{skipPreflight:A})))),signedTxs:p}}if(this.signAllTransactions){let x=p.map((v,g)=>(v.recentBlockhash=T,c[g].length&&v.sign(...c[g]),v));Be(x);let F=await this.signAllTransactions(x);if(h){let v=0,g=[],I=async()=>{if(!F[v])return;let B=await this.connection.sendRawTransaction(F[v].serialize(),{skipPreflight:A});g.push({txId:B,status:"sent",signedTx:F[v]}),K==null||K([...g]),v++;let C=!1,O=null,V=null,se=U=>{O!==null&&clearInterval(O),V!==null&&this.connection.removeSignatureListener(V);let W=g.findIndex(ee=>ee.txId===B);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||I()};this.loopMultiTxStatus&&(O=setInterval(async()=>{var U;if(C){clearInterval(O);return}try{let W=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:0});W&&(C=!0,clearInterval(O),se({err:((U=W.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",B))}catch(W){C=!0,clearInterval(O),console.error("getTransaction timeout:",W,B)}},bt)),V=this.connection.onSignature(B,U=>{if(C){this.connection.removeSignatureListener(V);return}C=!0,se(U)},"confirmed"),this.connection.getSignatureStatus(B)};return await I(),{txIds:g.map(B=>B.txId),signedTxs:F}}else{let v=[];for(let g=0;g<F.length;g+=1){let I=await this.connection.sendRawTransaction(F[g].serialize(),{skipPreflight:A});v.push(I)}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:u,recentBlockhash:l}=R,p=pe(R,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),c=L(L({},this.cluster==="devnet"?await Et(this.connection):await _t(this.connection)),n),b=Array.from(new Set([...o,...this.lookupTableAddress])),w=[];for(let T of b)c[T]===void 0&&w.push(new Ee(T));let y=await Vt({connection:this.connection,address:w});for(let[T,S]of Object.entries(y))c[T]=S;let h=u?Ee.default.toBase58():l!=null?l:await _e(this.connection,this.blockhashCommitment),K=new et({payerKey:this.feePayer,recentBlockhash:h,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(c));((A=this.owner)==null?void 0:A.signer)&&!this.signers.some(T=>T.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let k=new tt(K);return k.sign(this.signers),{builder:this,transaction:k,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async T=>{var v;let{skipPreflight:S=!0,sendAndConfirm:x,notSendToRpc:F}=T||{};if(Be([k]),(v=this.owner)!=null&&v.isKeyPair){let g=await this.connection.sendTransaction(k,{skipPreflight:S});return x&&await yt(this.connection,g),{txId:g,signedTx:k}}if(this.signAllTransactions){let g=await this.signAllTransactions([k]);if(this.signers.length)for(let I of g)try{I.sign(this.signers)}catch{}return{txId:F?"":await this.connection.sendTransaction(g[0],{skipPreflight:S}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:p||{}}}async buildV0MultiTx(e){var w;let{extraPreBuildData:n=[],buildProps:o}=e,{transaction:u}=await this.buildV0(o),l=n.filter(y=>y.builder.instructions.length>0),p=[u,...l.map(y=>y.transaction)],c=[this.signers,...l.map(y=>y.signers)],b=[...this.instructionTypes,...l.map(y=>y.instructionTypes).flat()];return(w=this.owner)!=null&&w.signer&&c.forEach(y=>{y.some(h=>h.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),p.forEach(async(y,h)=>{y.sign(c[h])}),{builder:this,transactions:p,signers:c,instructionTypes:b,buildProps:o,execute:async y=>{var A;let{sequentially:h,onTxUpdate:K,recentBlockHash:k,skipPreflight:R=!0}=y||{};if(k&&p.forEach(T=>T.message.recentBlockhash=k),Be(p),(A=this.owner)!=null&&A.isKeyPair){if(h){let T=[];for(let S of p){let x=await this.connection.sendTransaction(S,{skipPreflight:R});await yt(this.connection,x),T.push(x)}return{txIds:T,signedTxs:p}}return{txIds:await Promise.all(p.map(async T=>await this.connection.sendTransaction(T,{skipPreflight:R}))),signedTxs:p}}if(this.signAllTransactions){let T=await this.signAllTransactions(p);if(h){let S=0,x=[],F=async()=>{if(!T[S])return;let v=await this.connection.sendTransaction(T[S],{skipPreflight:R});x.push({txId:v,status:"sent",signedTx:T[S]}),K==null||K([...x]),S++;let g=!1,I=null,B=null,C=O=>{I!==null&&clearInterval(I),B!==null&&this.connection.removeSignatureListener(B);let V=x.findIndex(se=>se.txId===v);if(V>-1){if(x[V].status==="error"||x[V].status==="success")return;x[V].status=O.err?"error":"success"}K==null||K([...x]),O.err||F()};this.loopMultiTxStatus&&(I=setInterval(async()=>{var O;if(g){clearInterval(I);return}try{let V=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(g=!0,clearInterval(I),C({err:((O=V.meta)==null?void 0:O.err)||null}),console.log("tx status from getTransaction:",v))}catch(V){g=!0,clearInterval(I),console.error("getTransaction timeout:",V,v)}},bt)),B=this.connection.onSignature(v,O=>{if(g){this.connection.removeSignatureListener(B);return}g=!0,C(O)},"confirmed"),this.connection.getSignatureStatus(v)};return F(),{txIds:[],signedTxs:T}}else{let S=[];for(let x=0;x<T.length;x+=1){let F=await this.connection.sendTransaction(T[x],{skipPreflight:R});S.push(F)}return{txIds:S,signedTxs:T}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var K;let h=e||{},{splitIns:n=[],computeBudgetConfig:o}=h,u=pe(h,["splitIns","computeBudgetConfig"]),l=o?ft(o):{instructions:[],instructionTypes:[]},p=this.signers.reduce((k,R)=>_(L({},k),{[R.publicKey.toBase58()]:R}),{}),c=[],b=[],w=[],y=0;if(this.allInstructions.forEach(k=>{let R=[...w,k],A=o?[...l.instructions,...R]:R,S=[...new Set(R.map(x=>x.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat()).values()].map(x=>new Ee(x));if(k!==n[y]&&w.length<12&&(je({instructions:A,payer:this.feePayer,signers:S})||je({instructions:R,payer:this.feePayer,signers:S})))w.push(k);else{if(w.length===0)throw Error("item ins too big");y+=k===n[y]?1:0,je({instructions:o?[...l.instructions,...w]:[...w],payer:this.feePayer,signers:S})?c.push(new Je().add(...l.instructions,...w)):c.push(new Je().add(...w)),b.push(Array.from(new Set(w.map(x=>x.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat())).map(x=>p[x]).filter(x=>x!==void 0)),w=[k]}}),w.length>0){let R=[...new Set(w.map(A=>A.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(A=>p[A]).filter(A=>A!==void 0);je({instructions:o?[...l.instructions,...w]:[...w],payer:this.feePayer,signers:R.map(A=>A.publicKey)})?c.push(new Je().add(...l.instructions,...w)):c.push(new Je().add(...w)),b.push(R)}return c.forEach(k=>k.feePayer=this.feePayer),(K=this.owner)!=null&&K.signer&&b.forEach(k=>{k.some(R=>R.publicKey.equals(this.owner.publicKey))||k.push(this.owner.signer)}),{builder:this,transactions:c,signers:b,instructionTypes:this.instructionTypes,execute:async k=>{var v;let{sequentially:R,onTxUpdate:A,skipTxCount:T=0,recentBlockHash:S,skipPreflight:x=!0}=k||{},F=S!=null?S:await _e(this.connection,this.blockhashCommitment);if(c.forEach(async(g,I)=>{g.recentBlockhash=F,b[I].length&&g.sign(...b[I])}),Be(c),(v=this.owner)!=null&&v.isKeyPair){if(R){let g=0,I=[];for(let B of c){if(++g,g<=T){I.push("tx skipped");continue}let C=await Wt(this.connection,B,this.signers.find(O=>O.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:x});I.push(C)}return{txIds:I,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(T,c.length)),I=[...c.slice(0,T),...g];if(R){let B=0,C=[],O=async()=>{if(!I[B])return;B<T&&(C.push({txId:"",status:"success",signedTx:I[B]}),A==null||A([...C]),B++,O());let V=await this.connection.sendRawTransaction(I[B].serialize(),{skipPreflight:x});C.push({txId:V,status:"sent",signedTx:I[B]}),A==null||A([...C]),B++;let se=!1,U=null,W=null,ee=z=>{U!==null&&clearInterval(U),W!==null&&this.connection.removeSignatureListener(W);let ie=C.findIndex(Ae=>Ae.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||O()};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 O(),{txIds:C.map(V=>V.txId),signedTxs:I}}else{let B=[];for(let C=0;C<I.length;C+=1){let O=await this.connection.sendRawTransaction(I[C].serialize(),{skipPreflight:x});B.push(O)}return{txIds:B,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:u||{}}}async sizeCheckBuildV0(e){var v;let F=e||{},{computeBudgetConfig:n,splitIns:o=[],lookupTableCache:u={},lookupTableAddress:l=[],insCountLimit:p=12}=F,c=pe(F,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),b=L(L({},this.cluster==="devnet"?await Et(this.connection):await _t(this.connection)),u),w=Array.from(new Set([...this.lookupTableAddress,...l])),y=[];for(let g of w)b[g]===void 0&&y.push(new Ee(g));let h=await Vt({connection:this.connection,address:y});for(let[g,I]of Object.entries(h))b[g]=I;let K=n?ft(n):{instructions:[],instructionTypes:[]},k=await _e(this.connection,this.blockhashCommitment),R=this.signers.reduce((g,I)=>_(L({},g),{[I.publicKey.toBase58()]:I}),{}),A=[],T=[],S=[],x=0;if(this.allInstructions.forEach(g=>{let I=[...S,g],B=n?[...K.instructions,...I]:I;if(g!==o[x]&&S.length<p&&($e({instructions:B,payer:this.feePayer,lookupTableAddressAccount:b})||$e({instructions:I,payer:this.feePayer,lookupTableAddressAccount:b})))S.push(g);else{if(S.length===0)throw Error("item ins too big");x+=g===o[x]?1:0;let C={};for(let O of[...new Set(w)])b[O]!==void 0&&(C[O]=b[O]);if(n&&$e({instructions:[...K.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:k})){let O=new et({payerKey:this.feePayer,recentBlockhash:k,instructions:[...K.instructions,...S]}).compileToV0Message(Object.values(b));A.push(new tt(O))}else{let O=new et({payerKey:this.feePayer,recentBlockhash:k,instructions:[...S]}).compileToV0Message(Object.values(b));A.push(new tt(O))}T.push(Array.from(new Set(S.map(O=>O.keys.filter(V=>V.isSigner).map(V=>V.pubkey.toString())).flat())).map(O=>R[O]).filter(O=>O!==void 0)),S=[g]}}),S.length>0){let I=[...new Set(S.map(B=>B.keys.filter(C=>C.isSigner).map(C=>C.pubkey.toString())).flat()).values()].map(B=>R[B]).filter(B=>B!==void 0);if(n&&$e({instructions:[...K.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:k})){let B=new et({payerKey:this.feePayer,recentBlockhash:k,instructions:[...K.instructions,...S]}).compileToV0Message(Object.values(b));A.push(new tt(B))}else{let B=new et({payerKey:this.feePayer,recentBlockhash:k,instructions:[...S]}).compileToV0Message(Object.values(b));A.push(new tt(B))}T.push(I)}return(v=this.owner)!=null&&v.signer&&T.forEach(g=>{g.some(I=>I.publicKey.equals(this.owner.publicKey))||g.push(this.owner.signer)}),A.forEach((g,I)=>{g.sign(T[I])}),{builder:this,transactions:A,buildProps:e,signers:T,instructionTypes:this.instructionTypes,execute:async g=>{var se;let{sequentially:I,onTxUpdate:B,skipTxCount:C=0,recentBlockHash:O,skipPreflight:V=!0}=g||{};if(A.map(async(U,W)=>{T[W].length&&U.sign(T[W]),O&&(U.message.recentBlockhash=O)}),Be(A),(se=this.owner)!=null&&se.isKeyPair){if(I){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(I){let ee=0,z=[],ie=async()=>{if(!W[ee])return;if(ee<C){z.push({txId:"",status:"success",signedTx:W[ee]}),B==null||B([...z]),ee++,ie();return}let Ae=await this.connection.sendTransaction(W[ee],{skipPreflight:V});z.push({txId:Ae,status:"sent",signedTx:W[ee]}),B==null||B([...z]),ee++;let Ye=!1,Oe=null,st=null,rn=he=>{Oe!==null&&clearInterval(Oe),st!==null&&this.connection.removeSignatureListener(st);let we=z.findIndex(Po=>Po.txId===Ae);if(we>-1){if(z[we].status==="error"||z[we].status==="success")return;z[we].status=he.err?"error":"success"}B==null||B([...z]),he.err||ie()};this.loopMultiTxStatus&&(Oe=setInterval(async()=>{var he;if(Ye){clearInterval(Oe);return}try{let we=await this.connection.getTransaction(Ae,{commitment:"confirmed",maxSupportedTransactionVersion:0});we&&(Ye=!0,clearInterval(Oe),rn({err:((he=we.meta)==null?void 0:he.err)||null}),console.log("tx status from getTransaction:",Ae))}catch(we){Ye=!0,clearInterval(Oe),console.error("getTransaction timeout:",we,Ae)}},bt)),st=this.connection.onSignature(Ae,he=>{if(Ye){this.connection.removeSignatureListener(st);return}Ye=!0,rn(he)},"confirmed"),this.connection.getSignatureStatus(Ae)};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 qt=(...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(qt(e))}logInfo(...e){this.logger.info(qt(e))}logAndCreateError(...e){let n=qt(e);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Tl,SystemProgram as Il}from"@solana/web3.js";import xl from"bn.js";import{createCloseAccountInstruction as Ll,createInitializeAccountInstruction as Ol,createTransferInstruction as Nl,TOKEN_PROGRAM_ID as Ml}from"@solana/spl-token";import{Keypair as cl,PublicKey as ll}from"@solana/web3.js";import pl from"bn.js";import{TOKEN_PROGRAM_ID as bl}from"@solana/spl-token";import{PublicKey as si}from"@solana/web3.js";import Cn,{isBN as Rn}from"bn.js";import{bits as Zo,BitStructure as yc,blob as Ho,Blob as bc,cstr as gc,f32 as Pc,f32be as Ac,f64 as wc,f64be as kc,greedy as Tc,Layout as jo,ns64 as hc,ns64be as Ic,nu64 as $o,nu64be as Bc,offset as Jo,s16 as Sc,s16be as xc,s24 as Kc,s24be as Cc,s32 as ei,s32be as Rc,s40 as Lc,s40be as Oc,s48 as Nc,s48be as Mc,s8 as Fc,seq as ti,struct as vc,Structure as ni,u16 as oi,u16be as Vc,u24 as _c,u24be as Ec,u32 as ii,u32be as Dc,u40 as Wc,u40be as qc,u48 as Uc,u48be as Gc,u8 as ri,UInt as ai,union as zc,Union as Yc,unionLayoutDiscriminator as Xc,utf8 as Qc}from"@solana/buffer-layout";var Pt=jo,In=ni;var Ut=ai;var Bn=ri,J=oi;var At=ii;var Sn=$o;var me=ei;var xn=ti;var M=Ho;var Gt=Zo,Kn=Jo;var xe=class extends Pt{constructor(n,o,u){super(n,u);this.blob=M(n),this.signed=o}decode(n,o=0){let u=new Cn(this.blob.decode(n,o),10,"le");return this.signed?u.fromTwos(this.span*8).clone():u}encode(n,o,u=0){return typeof n=="number"&&(n=new Cn(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),o,u)}},wt=class extends Pt{constructor(n){super(8,n);this._lower=Gt(At(),!1),this._upper=Gt(At(),!1)}addBoolean(n){this._lower.fields.length<32?this._lower.addBoolean(n):this._upper.addBoolean(n)}decode(n,o=0){let u=this._lower.decode(n,o),l=this._upper.decode(n,o+this._lower.span);return L(L({},u),l)}encode(n,o,u=0){return this._lower.encode(n,o,u)+this._upper.encode(n,o,u+this._lower.span)}};function m(r){return new Ut(1,r)}function X(r){return new Ut(4,r)}function t(r){return new xe(8,!1,r)}function N(r){return new xe(16,!1,r)}function Ln(r){return new xe(1,!0,r)}function De(r){return new xe(8,!0,r)}function On(r){return new xe(16,!0,r)}var nt=class extends Pt{constructor(n,o,u,l){super(n.span,l);this.layout=n,this.decoder=o,this.encoder=u}decode(n,o){return this.decoder(this.layout.decode(n,o))}encode(n,o,u){return this.layout.encode(this.encoder(n),o,u)}getSpan(n,o){return this.layout.getSpan(n,o)}};function i(r){return new nt(M(32),e=>new si(e),e=>e.toBuffer(),r)}function ue(r){return new nt(Bn(),ui,ci,r)}function ui(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function ci(r){return r?1:0}function Nn(r,e){let n=At("length"),o=d([n,f(r,Kn(n,-n.span),"values")]);return new nt(o,({values:u})=>u,u=>({values:u}),e)}var zt=class extends In{decode(e,n){return super.decode(e,n)}};function d(r,e,n){return new zt(r,e,n)}function f(r,e,n){let o,u=typeof e=="number"?e:Rn(e)?e.toNumber():new Proxy(e,{get(l,p){if(!o){let c=Reflect.get(l,"count");o=Rn(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 xn(r,u,n)}var kt=d([i("mint"),i("owner"),t("amount"),X("delegateOption"),i("delegate"),m("state"),X("isNativeOption"),t("isNative"),t("delegatedAmount"),X("closeAuthorityOption"),i("closeAuthority")]);import{PublicKey as Ig,SystemProgram as Bg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as xg}from"@solana/spl-token";import{PublicKey as sm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as cm}from"@solana/spl-token";import{PublicKey as P}from"@solana/web3.js";var Fn=new P("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),vn=new P("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Vn=new P("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Yt=new P("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),pm=new P("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),mi=new P("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),_n=new P("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),En=new P("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),fm=new P("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),di=new P("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Dn=new P("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),pi=new P("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),fi=new P("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Wn=new P("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ym=new P("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),yi=new P("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),bi=new P("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),gi=new P("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Pi=new P("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Ai=new P("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Xt=new P("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),wi=new P("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),bm=new P("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ki=new P("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ti=new P("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),hi=new P("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),gm=new P("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Pm=new P("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Am=new P("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),wm=new P("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),km=new P("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX"),ot={IDO_PROGRAM_ID_V1:bi,IDO_PROGRAM_ID_V2:gi,IDO_PROGRAM_ID_V3:Pi,IDO_PROGRAM_ID_V4:Ai};var Te={OPEN_BOOK_PROGRAM:new P("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new P("Ray1111111111111111111111111111111111111111"),AMM_V4:new P("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new P("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new P("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new P("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new P("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new P("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new P("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new P("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new P("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new P("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:P.default,Router:new P("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new P("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new P("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new P("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new P("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new P("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new P("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new P("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new P("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new P("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new P("Ray1111111111111111111111111111111111111111")};import Vg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as ey,TOKEN_2022_PROGRAM_ID as ty,TOKEN_PROGRAM_ID as ny}from"@solana/spl-token";import{PublicKey as iy}from"@solana/web3.js";import ay from"bn.js";import uy from"decimal.js";import{TOKEN_PROGRAM_ID as Fm}from"@solana/spl-token";import{PublicKey as Em}from"@solana/web3.js";var Ii=d([X("mintAuthorityOption"),i("mintAuthority"),t("supply"),m("decimals"),m("isInitialized"),X("freezeAuthorityOption"),i("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as hf,TOKEN_2022_PROGRAM_ID as If,TOKEN_PROGRAM_ID as Bf}from"@solana/spl-token";import{Keypair as Kf,PublicKey as Cf,SystemProgram as Lf,TransactionInstruction as Of}from"@solana/web3.js";import Mf from"bn.js";import D from"bn.js";var Z=new D(1).shln(64);var Bi=new D(1).shln(128),Qt=new D(1).shln(64).subn(1),Si=new D(1).shln(128).subn(1),qe=-443636,Ue=443636,Ke=new D("4295048016"),Ce=new D("79226673521066979257578248091"),qn=new D("59543866431248"),Un=new D("184467440737095516"),Gn=new D("15793534762490258745"),zn=16;var Zt=60,jm=new D("18446743708227953217"),Yn=[{bit:0,factor:new D("fffcb933bd6fb800",16)},{bit:1,factor:new D("fff97272373d4000",16)},{bit:2,factor:new D("fff2e50f5f657000",16)},{bit:3,factor:new D("ffe5caca7e10f000",16)},{bit:4,factor:new D("ffcb9843d60f7000",16)},{bit:5,factor:new D("ff973b41fa98e800",16)},{bit:6,factor:new D("ff2ea16466c9b000",16)},{bit:7,factor:new D("fe5dee046a9a3800",16)},{bit:8,factor:new D("fcbe86c7900bb000",16)},{bit:9,factor:new D("f987a7253ac65800",16)},{bit:10,factor:new D("f3392b0822bb6000",16)},{bit:11,factor:new D("e7159475a2caf000",16)},{bit:12,factor:new D("d097f3bdfd2f2000",16)},{bit:13,factor:new D("a9f746462d9f8000",16)},{bit:14,factor:new D("70d869a156f31c00",16)},{bit:15,factor:new D("31be135f97ed3200",16)},{bit:16,factor:new D("9aa508b5b85a500",16)},{bit:17,factor:new D("5d6af8dedc582c",16)},{bit:18,factor:new D("2216e584f5fa",16)}];var it=3,Xn=100;var Qn=10,Zn=100,ht=14;var q=new D(0),Re=new D(1),$m=new D(-1);var Jm=new D("18446744073700000000");var xi=d([M(8),m("bump"),J("index"),i("owner"),X("protocolFeeRate"),X("tradeFeeRate"),J("tickSpacing"),X("fundFeeRate"),f(X(),1),i("fundOwner"),f(t(),3)]),Ki=d([X("blockTimestamp"),De("tickCumulative"),f(t(),4)]),Hn=d([M(8),ue("initialized"),t("recentEpoch"),J("observationIndex"),i("poolId"),f(Ki,Xn,"observations"),f(t(),4)]),Ci=d([J("filterPeriod"),J("decayPeriod"),J("reductionFactor"),X("dynamicFeeControl"),X("maxVolatilityAccumulator"),me("tickSpacingIndexReference"),X("volatilityReference"),X("volatilityAccumulator"),t("lastUpdateTimestamp"),f(m(),46)]),Ri=d([m("state"),t("openTime"),t("endTime"),t("lastUpdateTime"),N("emissionsPerSecondX64"),t("totalEmissioned"),t("claimed"),i("mint"),i("vault"),i("creator"),N("growthGlobalX64")]),Ht=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"),X(),N("feeGrowthGlobalX64A"),N("feeGrowthGlobalX64B"),t("protocolFeesTokenA"),t("protocolFeesTokenB"),f(N(),4),m("status"),m("feeOn"),M(6),f(Ri,it,"rewardInfos"),M(8*16,"tickArrayBitmap"),f(t(),4),t("fundFeesTokenA"),t("fundFeesTokenB"),t("startTime"),t("recentEpoch"),Ci.replicate("dynamicFeeInfo"),f(t(),46)]),Li=d([N("growthInsideLastX64"),t("rewardAmountOwed")]),Oi=d([M(8),m("bump"),i("nftMint"),i("poolId"),me("tickLower"),me("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),f(Li,it,"rewardInfos"),t("recentEpoch"),f(t(),7)]),od=d([M(8),m("bump"),i("poolId"),me("tickLower"),me("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),f(N(),it,"rewardGrowthInside"),t("recentEpoch"),f(t(),7)]),Ni=d([me("tick"),On("liquidityNet"),N("liquidityGross"),N("feeGrowthOutsideX64A"),N("feeGrowthOutsideX64B"),f(N(),it,"rewardGrowthsOutsideX64"),t("orderPhase"),t("ordersAmount"),t("partFilledOrdersRemaining"),N("unfilledRatioX64"),f(X(),3)]),jn=d([M(8),i("poolId"),me("startTickIndex"),f(Ni,Zt,"ticks"),m("initializedTickCount"),t("recentEpoch"),f(m(),107)]),Mi=d([M(8),m("bump"),f(i(),Qn,"operationOwners"),f(i(),Zn,"whitelistMints")]),Fi=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)]),$n=d([M(8),i("poolId"),M(8*8*ht,"positiveTickArrayBitmap"),M(8*8*ht,"negativeTickArrayBitmap")]),id=d([M(8),J("index"),J("filterPeriod"),J("decayPeriod"),J("reductionFactor"),X("dynamicFeeControl"),X("maxVolatilityAccumulator"),f(t(),8)]),vi=d([M(8),i("wallet"),m("nonceIndex"),t("orderNonce"),f(t(),4)]),rd=d([t(),m("bump"),i("owner"),i("poolId"),i("positionId"),i("nftAccount"),f(t(),8)]),Vi=d([M(8),m("bump"),i("lockOwner"),i("poolId"),i("positionId"),i("nftAccount"),i("lockNftMint"),t("recentEpoch"),f(t(),8)]);import ud from"bn.js";var Ad=Buffer.from("amm_config","utf8"),_i=Buffer.from("pool","utf8"),Ei=Buffer.from("pool_vault","utf8"),wd=Buffer.from("pool_reward_vault","utf8"),kd=Buffer.from("position","utf8"),Td=Buffer.from("tick_array","utf8"),hd=Buffer.from("operation","utf8"),Id=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Bd=Buffer.from("observation","utf8"),Sd=Buffer.from("support_mint","utf8"),xd=Buffer.from("dynamic_fee_config","utf8");var Kd=Buffer.from("locked_position","utf8");import{sha256 as tr}from"js-sha256";import Di from"bn.js";import Od 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),u=o.div(n);return o.mod(n).isZero()?u:u.addn(1)}var Md=new Di(1).shln(256).subn(1);function Jn(r){return r.isZero()?-1:r.bitLength()-1}import Vd from"bn.js";import zd from"bn.js";import Xd from"decimal.js";import{PublicKey as xp}from"@solana/web3.js";import Cp from"bn.js";import{TOKEN_2022_PROGRAM_ID as Vp}from"@solana/spl-token";import Wp from"decimal.js";import bp from"bn.js";import op from"bn.js";import Hp from"bn.js";function te(r){let e=`global:${r}`;return Buffer.from(tr.digest(e)).slice(0,8)}Hn.span;var qf=E("Raydium_Clmm"),Uf={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("