@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
1 lines • 78.5 kB
JavaScript
var wo=Object.defineProperty,ko=Object.defineProperties;var To=Object.getOwnPropertyDescriptors;var ut=Object.getOwnPropertySymbols;var un=Object.prototype.hasOwnProperty,cn=Object.prototype.propertyIsEnumerable;var sn=(r,e,n)=>e in r?wo(r,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[e]=n,L=(r,e)=>{for(var n in e||(e={}))un.call(e,n)&&sn(r,n,e[n]);if(ut)for(var n of ut(e))cn.call(e,n)&&sn(r,n,e[n]);return r},_=(r,e)=>ko(r,To(e));var pe=(r,e)=>{var n={};for(var o in r)un.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&&cn.call(r,o)&&(n[o]=r[o]);return n};import Ka from"bn.js";import E from"bn.js";var Z=new E(1).shln(64);var ho=new E(1).shln(128),Kt=new E(1).shln(64).subn(1),Io=new E(1).shln(128).subn(1),Ne=-443636,Me=443636,Be=new E("4295048016"),Se=new E("79226673521066979257578248091"),ln=new E("59543866431248"),mn=new E("184467440737095516"),dn=new E("15793534762490258745"),pn=16;var Ct=60,La=new E("18446743708227953217"),fn=[{bit:0,factor:new E("fffcb933bd6fb800",16)},{bit:1,factor:new E("fff97272373d4000",16)},{bit:2,factor:new E("fff2e50f5f657000",16)},{bit:3,factor:new E("ffe5caca7e10f000",16)},{bit:4,factor:new E("ffcb9843d60f7000",16)},{bit:5,factor:new E("ff973b41fa98e800",16)},{bit:6,factor:new E("ff2ea16466c9b000",16)},{bit:7,factor:new E("fe5dee046a9a3800",16)},{bit:8,factor:new E("fcbe86c7900bb000",16)},{bit:9,factor:new E("f987a7253ac65800",16)},{bit:10,factor:new E("f3392b0822bb6000",16)},{bit:11,factor:new E("e7159475a2caf000",16)},{bit:12,factor:new E("d097f3bdfd2f2000",16)},{bit:13,factor:new E("a9f746462d9f8000",16)},{bit:14,factor:new E("70d869a156f31c00",16)},{bit:15,factor:new E("31be135f97ed3200",16)},{bit:16,factor:new E("9aa508b5b85a500",16)},{bit:17,factor:new E("5d6af8dedc582c",16)},{bit:18,factor:new E("2216e584f5fa",16)}];var Xe=3,yn=100;var bn=10,gn=100,ct=14;var q=new E(0),ke=new E(1),Oa=new E(-1);var Na=new E("18446744073700000000");import{PublicKey as xo}from"@solana/web3.js";import{get as Pn,set as Bo}from"lodash";var Rt=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}},An={},So={};function D(r){let e=Pn(An,r);if(!e){let n=Pn(So,r);e=new Rt({name:r,logLevel:n}),Bo(An,r,e)}return e}import{MINT_SIZE as Ga,TOKEN_PROGRAM_ID as za,getTransferFeeConfig as Ya,unpackMint as Xa}from"@solana/spl-token";var Lt=D("Raydium_accountInfo_util");async function Te(r,e,n){let{batchRequest:o,commitment:a="confirmed",chunkCount:l=100}=L({batchRequest:!1},n),p=Ot(e,l),c=new Array(p.length).fill([]);if(o){let b=p.map(h=>{let K=r._buildArgs([h.map(k=>k.toBase58())],a,"base64");return{methodName:"getMultipleAccounts",args:K}}),A=Ot(b,10);c=(await(await Promise.all(A.map(async h=>await r._rpcBatchRequest(h)))).flat()).map(h=>(h.error&&Lt.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:w,owner:T,rentEpoch:S}=K;return k.length!==2&&k[1]!=="base64"&&Lt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(k[0],"base64"),executable:R,lamports:w,owner:new xo(T),rentEpoch:S}}return null})))}else try{c=await Promise.all(p.map(b=>r.getMultipleAccountsInfo(b,a)))}catch(b){b instanceof Error&&Lt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${b.message}`)}return c.flat()}import Le from"bn.js";import QC from"decimal.js";import Fo from"big.js";import ls from"bn.js";import Ko from"toformat";var Co=Ko,Ze=Co;import mt from"big.js";import Lo from"bn.js";import Oo from"decimal.js-light";import He from"bn.js";var wn=9007199254740991;function re(r){let e=D("Raydium_parseBigNumberish");if(r instanceof He)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new He(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=wn||r<=-wn)&&e.logWithError(`BigNumberish number overflow: ${r}`),new He(String(r))):typeof r=="bigint"?new He(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new He(0))}var lt=D("module/fraction"),Nt=Ze(mt),je=Ze(Oo),No={[0]:je.ROUND_DOWN,[1]:je.ROUND_HALF_UP,[2]:je.ROUND_UP},Mo={[0]:mt.roundDown,[1]:mt.roundHalfUp,[2]:mt.roundUp},G=class{constructor(e,n=new Lo(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)||lt.logWithError(`${e} is not an integer.`),e<=0&<.logWithError(`${e} is not positive.`),je.set({precision:e+1,rounding:No[o]});let a=new je(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return a.toFormat(a.decimalPlaces(),n)}toFixed(e,n={groupSeparator:""},o=1){return Number.isInteger(e)||lt.logWithError(`${e} is not an integer.`),e<0&<.logWithError(`${e} is negative.`),Nt.DP=e,Nt.RM=Mo[o]||1,new Nt(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,n)}isZero(){return this.numerator.isZero()}};var As=D("Raydium_amount"),ws=Ze(Fo);import{PublicKey as Vo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as kn}from"@solana/spl-token";var dt={chainId:101,address:Vo.default.toBase58(),programId:kn.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:kn.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 Ft}from"@solana/web3.js";import{PublicKey as Y,SystemProgram as Tn,SYSVAR_RENT_PUBKEY as _o}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Eo}from"@solana/spl-token";function Fe({pubkey:r,isSigner:e=!1,isWritable:n=!0}){return{pubkey:r,isWritable:n,isSigner:e}}var Do=[Fe({pubkey:Eo,isWritable:!1}),Fe({pubkey:Tn.programId,isWritable:!1}),Fe({pubkey:_o,isWritable:!1})];function hn({publicKey:r,transformSol:e}){let n=In(r.toString());if(n instanceof Y)return e&&n.equals(xe)?fe:n;if(e&&n.toString()===xe.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 In(r){try{return new Y(r)}catch{return r}}var Mt=new Y("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ve=new Y("SysvarRent111111111111111111111111111111111"),Wo=new Y("SysvarC1ock11111111111111111111111111111111"),pt=new Y("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),qo=new Y("Sysvar1nstructions1111111111111111111111111"),Bn=Tn.programId,Ks=new Y("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Cs=new Y("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Rs=new Y("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ls=new Y("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Os=new Y("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ns=new Y("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ms=new Y("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Fs=new Y("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),vs=new Y("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Vs=new Y("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),_s=new Y("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),fe=new Y("So11111111111111111111111111111111111111112"),xe=Y.default;var vt=class{constructor({mint:e,decimals:n,symbol:o,name:a,skipMint:l=!1,isToken2022:p=!1}){if(e===xe.toBase58()||e instanceof Ft&&xe.equals(e)){this.decimals=ye.decimals,this.symbol=ye.symbol,this.name=ye.name,this.mint=new Ft(ye.address),this.isToken2022=!1;return}this.decimals=n,this.symbol=o||e.toString().substring(0,6),this.name=a||e.toString().substring(0,6),this.mint=l?Ft.default:hn({publicKey:e}),this.isToken2022=p}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ne=vt;ne.WSOL=new vt(_(L({},ye),{mint:ye.address}));var Vt=class{constructor({decimals:e,symbol:n="UNKNOWN",name:o="UNKNOWN"}){this.decimals=e,this.symbol=n,this.name=o}equals(e){return this===e}},ft=Vt;ft.SOL=new Vt(dt);import Uo from"bn.js";var Hs=new G(new Uo(100));var nu=D("Raydium_price");import{merge as QK}from"lodash";import mu from"axios";var Sn={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"},Go=_(L({},Sn),{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 Mu=D("Raydium_Api");import{PublicKey as $l,SystemProgram as Jl}from"@solana/web3.js";import{AccountLayout as im,createAssociatedTokenAccountIdempotentInstruction as rm,TOKEN_PROGRAM_ID as am,TOKEN_2022_PROGRAM_ID as sm}from"@solana/spl-token";import{PublicKey as We,sendAndConfirmTransaction as Ut,SystemProgram as Ho,Transaction as et,TransactionMessage as tt,VersionedTransaction as nt}from"@solana/web3.js";import jo from"axios";import{PublicKey as _t,AddressLookupTableAccount as Ee}from"@solana/web3.js";async function Et({connection:r,address:e,cluster:n="mainnet"}){let o=await Te(r,[...new Set(e.map(l=>l.toString()))].map(l=>new _t(l))),a={};for(let l=0;l<e.length;l++){let p=o[l],c=e[l];if(!p)continue;let b=new Ee({key:c,state:Ee.deserialize(p.data)});a[c.toString()]=b,n==="devnet"?_e[c.toString()]=b:Ve[c.toString()]=b}return a}var Ve={},Dt=async r=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Ve[e])return Ve;let n=new _t(e),o=await r.getAccountInfo(n);return o&&(Ve[e]=new Ee({key:n,state:Ee.deserialize(o.data)})),Ve},_e={},Wt=async r=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(_e[e])return _e;let n=new _t(e),o=await r.getAccountInfo(n);return o&&(_e[e]=new Ee({key:n,state:Ee.deserialize(o.data)})),_e};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 xn,Keypair as Cn,PublicKey as zo,Transaction as Rn,TransactionMessage as Yo,VersionedTransaction as Ln}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Xo}from"@solana/spl-token";var Kn=D("Raydium_txUtil"),On=1644;function yt(r){let e=[],n=[];return r.microLamports&&(e.push(xn.setComputeUnitPrice({microLamports:r.microLamports})),n.push($.SetComputeUnitPrice)),r.units&&(e.push(xn.setComputeUnitLimit({units:r.units})),n.push($.SetComputeUnitLimit)),{instructions:e,instructionTypes:n}}async function De(r,e){var o,a;let n=e!=null?e:"confirmed";return(a=await((o=r.getLatestBlockhash)==null?void 0:o.call(r,{commitment:n})))==null?void 0:a.blockhash}async function bt(r,e){return r.getSignatureStatuses([e]),new Promise((n,o)=>{let a=setTimeout(o,6e4);r.onSignature(e,l=>{if(clearTimeout(a),!l.err){n("");return}o(Object.assign(l.err,{txId:e}))},"confirmed")})}function qt(r,e){r.length<1&&Kn.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Kn.logWithError(`no signers provided:, ${e.toString()}`);let n=new Rn;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=e[0],n.add(...r);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<On}catch{return!1}}function be(r,e){let[n,o]=zo.findProgramAddressSync(r,e);return{publicKey:n,nonce:o}}function $e({instructions:r,payer:e,signers:n}){return qt(r,[e,...n])}function Je({instructions:r,payer:e,lookupTableAddressAccount:n,recentBlockhash:o=Cn.generate().publicKey.toString()}){let l=new Yo({payerKey:e,recentBlockhash:o,instructions:r}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new Ln(l).serialize()).toString("base64").length<On}catch{return!1}}var Qo=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r),Zo=r=>{let e=r.serialize({requireAllSignatures:!1,verifySignatures:!1});r instanceof Ln&&(e=Qo(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Ke(r){let e=[];return r.forEach(n=>{n instanceof Rn&&(n.recentBlockhash||(n.recentBlockhash=Xo.toBase58()),n.feePayer||(n.feePayer=Cn.generate().publicKey)),e.push(Zo(n))}),console.log("simulate tx string:",e),e}var gt=2e3,Pt=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 jo.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}=yt(e);return this.instructions.unshift(...n),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(e){var n;return e?(this.endInstructions.push(Ho.transfer({fromPubkey:(n=e.feePayer)!=null?n:this.feePayer,toPubkey:new We(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push($.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:n}){try{let o=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(o))return;n&&this.instructions.unshift(...n)}catch{n&&this.instructions.unshift(...n)}}addInstruction({instructions:e=[],endInstructions:n=[],signers:o=[],instructionTypes:a=[],endInstructionTypes:l=[],lookupTableAddress:p=[]}){return this.instructions.push(...e),this.endInstructions.push(...n),this.signers.push(...o),this.instructionTypes.push(...a),this.endInstructionTypes.push(...l),this.lookupTableAddress.push(...p.filter(c=>c!==We.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 et;return this.allInstructions.length&&n.add(...this.allInstructions),n.feePayer=this.feePayer,((o=this.owner)==null?void 0:o.signer)&&!this.signers.some(a=>a.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:n,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async a=>{var y;let{recentBlockHash:l,skipPreflight:p=!0,sendAndConfirm:c,notSendToRpc:b}=a||{},A=l!=null?l:await De(this.connection,this.blockhashCommitment);if(n.recentBlockhash=A,this.signers.length&&n.sign(...this.signers),Ke([n]),(y=this.owner)!=null&&y.isKeyPair)return{txId:c?await Ut(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 A;let{extraPreBuildData:n=[],extInfo:o}=e,{transaction:a}=this.build(o),l=n.filter(y=>y.transaction.instructions.length>0),p=[a,...l.map(y=>y.transaction)],c=[this.signers,...l.map(y=>y.signers)],b=[...this.instructionTypes,...l.map(y=>y.instructionTypes).flat()];return(A=this.owner)!=null&&A.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:w=!0}=y||{},T=R!=null?R:await De(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 Ut(this.connection,v,this.signers.find(I=>I.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:w});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:w})))),signedTxs:p}}if(this.signAllTransactions){let x=p.map((v,g)=>(v.recentBlockhash=T,c[g].length&&v.sign(...c[g]),v));Ke(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:w});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)}},gt)),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:w});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 w;let R=e||{},{lookupTableCache:n={},lookupTableAddress:o=[],forerunCreate:a,recentBlockhash:l}=R,p=pe(R,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),c=L(L({},this.cluster==="devnet"?await Wt(this.connection):await Dt(this.connection)),n),b=Array.from(new Set([...o,...this.lookupTableAddress])),A=[];for(let T of b)c[T]===void 0&&A.push(new We(T));let y=await Et({connection:this.connection,address:A});for(let[T,S]of Object.entries(y))c[T]=S;let h=a?We.default.toBase58():l!=null?l:await De(this.connection,this.blockhashCommitment),K=new tt({payerKey:this.feePayer,recentBlockhash:h,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(c));((w=this.owner)==null?void 0:w.signer)&&!this.signers.some(T=>T.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let k=new nt(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(Ke([k]),(v=this.owner)!=null&&v.isKeyPair){let g=await this.connection.sendTransaction(k,{skipPreflight:S});return x&&await bt(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 A;let{extraPreBuildData:n=[],buildProps:o}=e,{transaction:a}=await this.buildV0(o),l=n.filter(y=>y.builder.instructions.length>0),p=[a,...l.map(y=>y.transaction)],c=[this.signers,...l.map(y=>y.signers)],b=[...this.instructionTypes,...l.map(y=>y.instructionTypes).flat()];return(A=this.owner)!=null&&A.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 w;let{sequentially:h,onTxUpdate:K,recentBlockHash:k,skipPreflight:R=!0}=y||{};if(k&&p.forEach(T=>T.message.recentBlockhash=k),Ke(p),(w=this.owner)!=null&&w.isKeyPair){if(h){let T=[];for(let S of p){let x=await this.connection.sendTransaction(S,{skipPreflight:R});await bt(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)}},gt)),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,a=pe(h,["splitIns","computeBudgetConfig"]),l=o?yt(o):{instructions:[],instructionTypes:[]},p=this.signers.reduce((k,R)=>_(L({},k),{[R.publicKey.toBase58()]:R}),{}),c=[],b=[],A=[],y=0;if(this.allInstructions.forEach(k=>{let R=[...A,k],w=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 We(x));if(k!==n[y]&&A.length<12&&($e({instructions:w,payer:this.feePayer,signers:S})||$e({instructions:R,payer:this.feePayer,signers:S})))A.push(k);else{if(A.length===0)throw Error("item ins too big");y+=k===n[y]?1:0,$e({instructions:o?[...l.instructions,...A]:[...A],payer:this.feePayer,signers:S})?c.push(new et().add(...l.instructions,...A)):c.push(new et().add(...A)),b.push(Array.from(new Set(A.map(x=>x.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat())).map(x=>p[x]).filter(x=>x!==void 0)),A=[k]}}),A.length>0){let R=[...new Set(A.map(w=>w.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(w=>p[w]).filter(w=>w!==void 0);$e({instructions:o?[...l.instructions,...A]:[...A],payer:this.feePayer,signers:R.map(w=>w.publicKey)})?c.push(new et().add(...l.instructions,...A)):c.push(new et().add(...A)),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:w,skipTxCount:T=0,recentBlockHash:S,skipPreflight:x=!0}=k||{},F=S!=null?S:await De(this.connection,this.blockhashCommitment);if(c.forEach(async(g,I)=>{g.recentBlockhash=F,b[I].length&&g.sign(...b[I])}),Ke(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 Ut(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]}),w==null||w([...C]),B++,O());let V=await this.connection.sendRawTransaction(I[B].serialize(),{skipPreflight:x});C.push({txId:V,status:"sent",signedTx:I[B]}),w==null||w([...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"}w==null||w([...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)}},gt)),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:a||{}}}async sizeCheckBuildV0(e){var v;let F=e||{},{computeBudgetConfig:n,splitIns:o=[],lookupTableCache:a={},lookupTableAddress:l=[],insCountLimit:p=12}=F,c=pe(F,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),b=L(L({},this.cluster==="devnet"?await Wt(this.connection):await Dt(this.connection)),a),A=Array.from(new Set([...this.lookupTableAddress,...l])),y=[];for(let g of A)b[g]===void 0&&y.push(new We(g));let h=await Et({connection:this.connection,address:y});for(let[g,I]of Object.entries(h))b[g]=I;let K=n?yt(n):{instructions:[],instructionTypes:[]},k=await De(this.connection,this.blockhashCommitment),R=this.signers.reduce((g,I)=>_(L({},g),{[I.publicKey.toBase58()]:I}),{}),w=[],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&&(Je({instructions:B,payer:this.feePayer,lookupTableAddressAccount:b})||Je({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(A)])b[O]!==void 0&&(C[O]=b[O]);if(n&&Je({instructions:[...K.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:k})){let O=new tt({payerKey:this.feePayer,recentBlockhash:k,instructions:[...K.instructions,...S]}).compileToV0Message(Object.values(b));w.push(new nt(O))}else{let O=new tt({payerKey:this.feePayer,recentBlockhash:k,instructions:[...S]}).compileToV0Message(Object.values(b));w.push(new nt(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&&Je({instructions:[...K.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:k})){let B=new tt({payerKey:this.feePayer,recentBlockhash:k,instructions:[...K.instructions,...S]}).compileToV0Message(Object.values(b));w.push(new nt(B))}else{let B=new tt({payerKey:this.feePayer,recentBlockhash:k,instructions:[...S]}).compileToV0Message(Object.values(b));w.push(new nt(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)}),w.forEach((g,I)=>{g.sign(T[I])}),{builder:this,transactions:w,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(w.map(async(U,W)=>{T[W].length&&U.sign(T[W]),O&&(U.message.recentBlockhash=O)}),Ke(w),(se=this.owner)!=null&&se.isKeyPair){if(I){let U=0,W=[];for(let ee of w){if(++U,U<=C){console.log("skip tx: ",U),W.push("tx skipped");continue}let z=await this.connection.sendTransaction(ee,{skipPreflight:V});await bt(this.connection,z),W.push(z)}return{txIds:W,signedTxs:w}}return{txIds:await Promise.all(w.map(async U=>await this.connection.sendTransaction(U,{skipPreflight:V}))),signedTxs:w}}if(this.signAllTransactions){let U=await this.signAllTransactions(w.slice(C,w.length)),W=[...w.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,an=Ie=>{Oe!==null&&clearInterval(Oe),st!==null&&this.connection.removeSignatureListener(st);let we=z.findIndex(Ao=>Ao.txId===Ae);if(we>-1){if(z[we].status==="error"||z[we].status==="success")return;z[we].status=Ie.err?"error":"success"}B==null||B([...z]),Ie.err||ie()};this.loopMultiTxStatus&&(Oe=setInterval(async()=>{var Ie;if(Ye){clearInterval(Oe);return}try{let we=await this.connection.getTransaction(Ae,{commitment:"confirmed",maxSupportedTransactionVersion:0});we&&(Ye=!0,clearInterval(Oe),an({err:((Ie=we.meta)==null?void 0:Ie.err)||null}),console.log("tx status from getTransaction:",Ae))}catch(we){Ye=!0,clearInterval(Oe),console.error("getTransaction timeout:",we,Ae)}},gt)),st=this.connection.onSignature(Ae,Ie=>{if(Ye){this.connection.removeSignatureListener(st);return}Ye=!0,an(Ie)},"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 Gt=(...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=D(n)}createTxBuilder(e){return this.scope.checkOwner(),new Pt({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(Gt(e))}logInfo(...e){this.logger.info(Gt(e))}logAndCreateError(...e){let n=Gt(e);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Cl,SystemProgram as Ll}from"@solana/web3.js";import Ml from"bn.js";import{createCloseAccountInstruction as _l,createInitializeAccountInstruction as El,createTransferInstruction as Dl,TOKEN_PROGRAM_ID as Wl}from"@solana/spl-token";import{Keypair as bl,PublicKey as gl}from"@solana/web3.js";import wl from"bn.js";import{TOKEN_PROGRAM_ID as hl}from"@solana/spl-token";import{PublicKey as li}from"@solana/web3.js";import _n,{isBN as En}from"bn.js";import{bits as $o,BitStructure as Tc,blob as Jo,Blob as hc,cstr as Ic,f32 as Bc,f32be as Sc,f64 as xc,f64be as Kc,greedy as Cc,Layout as ei,ns64 as Rc,ns64be as Lc,nu64 as ti,nu64be as Oc,offset as ni,s16 as Nc,s16be as Mc,s24 as Fc,s24be as vc,s32 as oi,s32be as Vc,s40 as _c,s40be as Ec,s48 as Dc,s48be as Wc,s8 as qc,seq as ii,struct as Uc,Structure as ri,u16 as ai,u16be as Gc,u24 as zc,u24be as Yc,u32 as si,u32be as Xc,u40 as Qc,u40be as Zc,u48 as Hc,u48be as jc,u8 as ui,UInt as ci,union as $c,Union as Jc,unionLayoutDiscriminator as el,utf8 as tl}from"@solana/buffer-layout";var At=ei,Nn=ri;var zt=ci;var Mn=ui,J=ai;var wt=si;var Fn=ti;var me=oi;var vn=ii;var M=Jo;var Yt=$o,Vn=ni;var Re=class extends At{constructor(n,o,a){super(n,a);this.blob=M(n),this.signed=o}decode(n,o=0){let a=new _n(this.blob.decode(n,o),10,"le");return this.signed?a.fromTwos(this.span*8).clone():a}encode(n,o,a=0){return typeof n=="number"&&(n=new _n(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),o,a)}},kt=class extends At{constructor(n){super(8,n);this._lower=Yt(wt(),!1),this._upper=Yt(wt(),!1)}addBoolean(n){this._lower.fields.length<32?this._lower.addBoolean(n):this._upper.addBoolean(n)}decode(n,o=0){let a=this._lower.decode(n,o),l=this._upper.decode(n,o+this._lower.span);return L(L({},a),l)}encode(n,o,a=0){return this._lower.encode(n,o,a)+this._upper.encode(n,o,a+this._lower.span)}};function m(r){return new zt(1,r)}function X(r){return new zt(4,r)}function t(r){return new Re(8,!1,r)}function N(r){return new Re(16,!1,r)}function Dn(r){return new Re(1,!0,r)}function qe(r){return new Re(8,!0,r)}function Wn(r){return new Re(16,!0,r)}var ot=class extends At{constructor(n,o,a,l){super(n.span,l);this.layout=n,this.decoder=o,this.encoder=a}decode(n,o){return this.decoder(this.layout.decode(n,o))}encode(n,o,a){return this.layout.encode(this.encoder(n),o,a)}getSpan(n,o){return this.layout.getSpan(n,o)}};function i(r){return new ot(M(32),e=>new li(e),e=>e.toBuffer(),r)}function ue(r){return new ot(Mn(),mi,di,r)}function mi(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function di(r){return r?1:0}function qn(r,e){let n=wt("length"),o=d([n,f(r,Vn(n,-n.span),"values")]);return new ot(o,({values:a})=>a,a=>({values:a}),e)}var Xt=class extends Nn{decode(e,n){return super.decode(e,n)}};function d(r,e,n){return new Xt(r,e,n)}function f(r,e,n){let o,a=typeof e=="number"?e:En(e)?e.toNumber():new Proxy(e,{get(l,p){if(!o){let c=Reflect.get(l,"count");o=En(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 vn(r,a,n)}var Tt=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 Tg,SystemProgram as hg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Bg}from"@solana/spl-token";import{PublicKey as fm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as bm}from"@solana/spl-token";import{PublicKey as P}from"@solana/web3.js";var Gn=new P("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),zn=new P("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Yn=new P("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Qt=new P("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),wm=new P("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),fi=new P("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Xn=new P("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Qn=new P("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),km=new P("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),yi=new P("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Zn=new P("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),bi=new P("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),gi=new P("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Hn=new P("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Tm=new P("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Pi=new P("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Ai=new P("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),wi=new P("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),ki=new P("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Ti=new P("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Zt=new P("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),hi=new P("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),hm=new P("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ii=new P("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Bi=new P("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Si=new P("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Im=new P("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Bm=new P("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Sm=new P("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),xm=new P("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Km=new P("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX"),it={IDO_PROGRAM_ID_V1:Ai,IDO_PROGRAM_ID_V2:wi,IDO_PROGRAM_ID_V3:ki,IDO_PROGRAM_ID_V4:Ti};var he={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 Fg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as $f,TOKEN_2022_PROGRAM_ID as Jf,TOKEN_PROGRAM_ID as ey}from"@solana/spl-token";import{PublicKey as ny}from"@solana/web3.js";import iy from"bn.js";import ay from"decimal.js";import{TOKEN_PROGRAM_ID as qm}from"@solana/spl-token";import{PublicKey as Ym}from"@solana/web3.js";var xi=d([X("mintAuthorityOption"),i("mintAuthority"),t("supply"),m("decimals"),m("isInitialized"),X("freezeAuthorityOption"),i("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as Tf,TOKEN_2022_PROGRAM_ID as hf,TOKEN_PROGRAM_ID as If}from"@solana/spl-token";import{Keypair as xf,PublicKey as Kf,SystemProgram as Rf,TransactionInstruction as Lf}from"@solana/web3.js";import Nf from"bn.js";var Ki=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)]),Ci=d([X("blockTimestamp"),qe("tickCumulative"),f(t(),4)]),jn=d([M(8),ue("initialized"),t("recentEpoch"),J("observationIndex"),i("poolId"),f(Ci,yn,"observations"),f(t(),4)]),Ri=d([J("filterPeriod"),J("decayPeriod"),J("reductionFactor"),X("dynamicFeeControl"),X("maxVolatilityAccumulator"),me("tickSpacingIndexReference"),X("volatilityReference"),X("volatilityAccumulator"),t("lastUpdateTimestamp"),f(m(),46)]),Li=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(Li,Xe,"rewardInfos"),M(8*16,"tickArrayBitmap"),f(t(),4),t("fundFeesTokenA"),t("fundFeesTokenB"),t("startTime"),t("recentEpoch"),Ri.replicate("dynamicFeeInfo"),f(t(),46)]),Oi=d([N("growthInsideLastX64"),t("rewardAmountOwed")]),Ni=d([M(8),m("bump"),i("nftMint"),i("poolId"),me("tickLower"),me("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),f(Oi,Xe,"rewardInfos"),t("recentEpoch"),f(t(),7)]),rd=d([M(8),m("bump"),i("poolId"),me("tickLower"),me("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),f(N(),Xe,"rewardGrowthInside"),t("recentEpoch"),f(t(),7)]),Mi=d([me("tick"),Wn("liquidityNet"),N("liquidityGross"),N("feeGrowthOutsideX64A"),N("feeGrowthOutsideX64B"),f(N(),Xe,"rewardGrowthsOutsideX64"),t("orderPhase"),t("ordersAmount"),t("partFilledOrdersRemaining"),N("unfilledRatioX64"),f(X(),3)]),$n=d([M(8),i("poolId"),me("startTickIndex"),f(Mi,Ct,"ticks"),m("initializedTickCount"),t("recentEpoch"),f(m(),107)]),Fi=d([M(8),m("bump"),f(i(),bn,"operationOwners"),f(i(),gn,"whitelistMints")]),vi=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)]),Jn=d([M(8),i("poolId"),M(8*8*ct,"positiveTickArrayBitmap"),M(8*8*ct,"negativeTickArrayBitmap")]),ad=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)]),sd=d([t(),m("bump"),i("owner"),i("poolId"),i("positionId"),i("nftAccount"),f(t(),8)]),_i=d([M(8),m("bump"),i("lockOwner"),i("poolId"),i("positionId"),i("nftAccount"),i("lockNftMint"),t("recentEpoch"),f(t(),8)]);import ld from"bn.js";var kd=Buffer.from("amm_config","utf8"),Ei=Buffer.from("pool","utf8"),Di=Buffer.from("pool_vault","utf8"),Td=Buffer.from("pool_reward_vault","utf8"),hd=Buffer.from("position","utf8"),Id=Buffer.from("tick_array","utf8"),Bd=Buffer.from("operation","utf8"),Sd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),xd=Buffer.from("observation","utf8"),Kd=Buffer.from("support_mint","utf8"),Cd=Buffer.from("dynamic_fee_config","utf8");var Rd=Buffer.from("locked_position","utf8");import{sha256 as nr}from"js-sha256";import Wi from"bn.js";import Md from"decimal.js";function ce(r,e,n){if(n.isZero())throw new Error("Division by zero");return r.mul(e).div(n)}function le(r,e,n){if(n.isZero())throw new Error("Division by zero");let o=r.mul(e),a=o.div(n);return o.mod(n).isZero()?a:a.addn(1)}var vd=new Wi(1).shln(256).subn(1);function eo(r){return r.isZero()?-1:r.bitLength()-1}import qd from"bn.js";import Gd from"decimal.js";import{PublicKey as Sp}from"@solana/web3.js";import Kp from"bn.js";import{TOKEN_2022_PROGRAM_ID as vp}from"@solana/spl-token";import Dp from"decimal.js";import yp from"bn.js";import np from"bn.js";import Zp from"bn.js";function te(r){let e=`global:${r}`;return Buffer.from(nr.digest(e)).slice(0,8)}jn.span;var Wf=D("Raydium_Clmm"),qf={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("