@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
1 lines • 89.1 kB
JavaScript
var ho=Object.defineProperty,Io=Object.defineProperties;var Bo=Object.getOwnPropertyDescriptors;var mt=Object.getOwnPropertySymbols;var fn=Object.prototype.hasOwnProperty,yn=Object.prototype.propertyIsEnumerable;var pn=(i,t,n)=>t in i?ho(i,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):i[t]=n,O=(i,t)=>{for(var n in t||(t={}))fn.call(t,n)&&pn(i,n,t[n]);if(mt)for(var n of mt(t))yn.call(t,n)&&pn(i,n,t[n]);return i},v=(i,t)=>Io(i,Bo(t));var pe=(i,t)=>{var n={};for(var o in i)fn.call(i,o)&&t.indexOf(o)<0&&(n[o]=i[o]);if(i!=null&&mt)for(var o of mt(i))t.indexOf(o)<0&&yn.call(i,o)&&(n[o]=i[o]);return n};import{PublicKey as Ko}from"@solana/web3.js";import{get as bn,set as So}from"lodash";var Ot=class{constructor(t){this.logLevel=t.logLevel!==void 0?t.logLevel:0,this.name=t.name}set level(t){this.logLevel=t}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(t){return t<=this.logLevel}error(...t){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...t),this):this}logWithError(...t){let n=t.map(o=>typeof o=="object"?JSON.stringify(o):o).join(", ");throw new Error(n)}warning(...t){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...t),this):this}info(...t){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...t),this):this}debug(...t){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...t),this):this}},gn={},xo={};function D(i){let t=bn(gn,i);if(!t){let n=bn(xo,i);t=new Ot({name:i,logLevel:n}),So(gn,i,t)}return t}import{MINT_SIZE as ns,TOKEN_PROGRAM_ID as os,getTransferFeeConfig as is,unpackMint as rs}from"@solana/spl-token";var Nt=D("Raydium_accountInfo_util");async function Ae(i,t,n){let{batchRequest:o,commitment:s="confirmed",chunkCount:a=100}=O({batchRequest:!1},n),d=Mt(t,a),f=new Array(d.length).fill([]);if(o){let b=d.map(B=>{let x=i._buildArgs([B.map(T=>T.toBase58())],s,"base64");return{methodName:"getMultipleAccounts",args:x}}),h=Mt(b,10);f=(await(await Promise.all(h.map(async B=>await i._rpcBatchRequest(B)))).flat()).map(B=>(B.error&&Nt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${B.error.message}`),B.result.value.map(x=>{if(x){let{data:T,executable:K,lamports:g,owner:y,rentEpoch:I}=x;return T.length!==2&&T[1]!=="base64"&&Nt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(T[0],"base64"),executable:K,lamports:g,owner:new Ko(y),rentEpoch:I}}return null})))}else try{f=await Promise.all(d.map(b=>i.getMultipleAccountsInfo(b,s)))}catch(b){b instanceof Error&&Nt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${b.message}`)}return f.flat()}import Le from"bn.js";import tR from"decimal.js";import vo from"big.js";import Ts from"bn.js";import Co from"toformat";var Ro=Co,Ze=Ro;import pt from"big.js";import Oo from"bn.js";import No from"decimal.js-light";import He from"bn.js";var Pn=9007199254740991;function ae(i){let t=D("Raydium_parseBigNumberish");if(i instanceof He)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new He(i);t.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&t.logWithError(`BigNumberish number underflow: ${i}`),(i>=Pn||i<=-Pn)&&t.logWithError(`BigNumberish number overflow: ${i}`),new He(String(i))):typeof i=="bigint"?new He(i.toString()):(t.error(`invalid BigNumberish value: ${i}`),new He(0))}var dt=D("module/fraction"),Ft=Ze(pt),je=Ze(No),Mo={[0]:je.ROUND_DOWN,[1]:je.ROUND_HALF_UP,[2]:je.ROUND_UP},Fo={[0]:pt.roundDown,[1]:pt.roundHalfUp,[2]:pt.roundUp},U=class{constructor(t,n=new Oo(1)){this.numerator=ae(t),this.denominator=ae(n)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new U(this.denominator,this.numerator)}add(t){let n=t instanceof U?t:new U(ae(t));return this.denominator.eq(n.denominator)?new U(this.numerator.add(n.numerator),this.denominator):new U(this.numerator.mul(n.denominator).add(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}sub(t){let n=t instanceof U?t:new U(ae(t));return this.denominator.eq(n.denominator)?new U(this.numerator.sub(n.numerator),this.denominator):new U(this.numerator.mul(n.denominator).sub(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}mul(t){let n=t instanceof U?t:new U(ae(t));return new U(this.numerator.mul(n.numerator),this.denominator.mul(n.denominator))}div(t){let n=t instanceof U?t:new U(ae(t));return new U(this.numerator.mul(n.denominator),this.denominator.mul(n.numerator))}toSignificant(t,n={groupSeparator:""},o=1){Number.isInteger(t)||dt.logWithError(`${t} is not an integer.`),t<=0&&dt.logWithError(`${t} is not positive.`),je.set({precision:t+1,rounding:Mo[o]});let s=new je(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(t);return s.toFormat(s.decimalPlaces(),n)}toFixed(t,n={groupSeparator:""},o=1){return Number.isInteger(t)||dt.logWithError(`${t} is not an integer.`),t<0&&dt.logWithError(`${t} is negative.`),Ft.DP=t,Ft.RM=Fo[o]||1,new Ft(this.numerator.toString()).div(this.denominator.toString()).toFormat(t,n)}isZero(){return this.numerator.isZero()}};var Ls=D("Raydium_amount"),Os=Ze(vo);import{PublicKey as _o}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as An}from"@solana/spl-token";var ft={chainId:101,address:_o.default.toBase58(),programId:An.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:An.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 Vt}from"@solana/web3.js";import{PublicKey as Y,SystemProgram as wn,SYSVAR_RENT_PUBKEY as Eo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Do}from"@solana/spl-token";function Ne({pubkey:i,isSigner:t=!1,isWritable:n=!0}){return{pubkey:i,isWritable:n,isSigner:t}}var Wo=[Ne({pubkey:Do,isWritable:!1}),Ne({pubkey:wn.programId,isWritable:!1}),Ne({pubkey:Eo,isWritable:!1})];function kn({publicKey:i,transformSol:t}){let n=Tn(i.toString());if(n instanceof Y)return t&&n.equals(Be)?fe:n;if(t&&n.toString()===Be.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 Tn(i){try{return new Y(i)}catch{return i}}var vt=new Y("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ke=new Y("SysvarRent111111111111111111111111111111111"),qo=new Y("SysvarC1ock11111111111111111111111111111111"),Me=new Y("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Uo=new Y("Sysvar1nstructions1111111111111111111111111"),hn=wn.programId,Ds=new Y("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ws=new Y("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),qs=new Y("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Us=new Y("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Gs=new Y("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),zs=new Y("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ys=new Y("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Xs=new Y("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Qs=new Y("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Zs=new Y("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Hs=new Y("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),fe=new Y("So11111111111111111111111111111111111111112"),Be=Y.default;var _t=class{constructor({mint:t,decimals:n,symbol:o,name:s,skipMint:a=!1,isToken2022:d=!1}){if(t===Be.toBase58()||t instanceof Vt&&Be.equals(t)){this.decimals=ye.decimals,this.symbol=ye.symbol,this.name=ye.name,this.mint=new Vt(ye.address),this.isToken2022=!1;return}this.decimals=n,this.symbol=o||t.toString().substring(0,6),this.name=s||t.toString().substring(0,6),this.mint=a?Vt.default:kn({publicKey:t}),this.isToken2022=d}equals(t){return this===t?!0:this.mint.equals(t.mint)}},oe=_t;oe.WSOL=new _t(v(O({},ye),{mint:ye.address}));var Et=class{constructor({decimals:t,symbol:n="UNKNOWN",name:o="UNKNOWN"}){this.decimals=t,this.symbol=n,this.name=o}equals(t){return this===t}},yt=Et;yt.SOL=new Et(ft);import Go from"bn.js";var uu=new U(new Go(100));var fu=D("Raydium_price");import{merge as tC}from"lodash";import hu from"axios";var In={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",MONITOR_BASE_HOST:"https://monitor.raydium.io",SERVICE_1_BASE_HOST:"https://service-v1.raydium.io",TEMP_HOST:"https://temp-api-v1.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",CPMM_CONFIG:"/main/cpmm-config",CLMM_DYNAMIC_CONFIG:"/main/clmm-dynamic-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://lite-api.jup.ag/tokens/v2/tag?query=verified",POOL_LIST:"/pools/info/list-v2",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/list-v2",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_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"},zo=v(O({},In),{BASE_HOST:"https://api-v3-devnet.raydium.io",OWNER_BASE_HOST:"https://owner-v1-devnet.raydium.io",SWAP_HOST:"https://transaction-v1-devnet.raydium.io",CPMM_LOCK:"https://dynamic-ipfs-devnet.raydium.io/lock/cpmm/position",TEMP_HOST:"https://temp-api-v1-devnet.raydium.io",LAUNCH_AUTH_HOST:"https://launch-auth-v1-devnet.raydium.io",LAUNCH_COMMENT_HOST:"https://launch-forum-v1-devnet.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1-devnet.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1-devnet.raydium.io"});var Yu=D("Raydium_Api");import{PublicKey as lm,SystemProgram as mm}from"@solana/web3.js";import{AccountLayout as bm,createAssociatedTokenAccountIdempotentInstruction as gm,TOKEN_PROGRAM_ID as Pm,TOKEN_2022_PROGRAM_ID as Am}from"@solana/spl-token";import{PublicKey as Ee,sendAndConfirmTransaction as zt,SystemProgram as jo,Transaction as et,TransactionMessage as tt,VersionedTransaction as nt}from"@solana/web3.js";import $o from"axios";import{PublicKey as Dt,AddressLookupTableAccount as Ve}from"@solana/web3.js";async function Wt({connection:i,address:t,cluster:n="mainnet"}){let o=await Ae(i,[...new Set(t.map(a=>a.toString()))].map(a=>new Dt(a))),s={};for(let a=0;a<t.length;a++){let d=o[a],f=t[a];if(!d)continue;let b=new Ve({key:f,state:Ve.deserialize(d.data)});s[f.toString()]=b,n==="devnet"?ve[f.toString()]=b:Fe[f.toString()]=b}return s}var Fe={},qt=async i=>{let t="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Fe[t])return Fe;let n=new Dt(t),o=await i.getAccountInfo(n);return o&&(Fe[t]=new Ve({key:n,state:Ve.deserialize(o.data)})),Fe},ve={},Ut=async i=>{let t="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(ve[t])return ve;let n=new Dt(t),o=await i.getAccountInfo(n);return o&&(ve[t]=new Ve({key:n,state:Ve.deserialize(o.data)})),ve};var H={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{ComputeBudgetProgram as Bn,Keypair as xn,PublicKey as Yo,Transaction as Kn,TransactionMessage as Xo,VersionedTransaction as Cn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Qo}from"@solana/spl-token";var Sn=D("Raydium_txUtil"),Rn=1644;function bt(i){let t=[],n=[];return i.microLamports&&(t.push(Bn.setComputeUnitPrice({microLamports:i.microLamports})),n.push(H.SetComputeUnitPrice)),i.units&&(t.push(Bn.setComputeUnitLimit({units:i.units})),n.push(H.SetComputeUnitLimit)),{instructions:t,instructionTypes:n}}async function _e(i,t){var o,s;let n=t!=null?t:"confirmed";return(s=await((o=i.getLatestBlockhash)==null?void 0:o.call(i,{commitment:n})))==null?void 0:s.blockhash}async function gt(i,t){return i.getSignatureStatuses([t]),new Promise((n,o)=>{let s=setTimeout(o,6e4);i.onSignature(t,a=>{if(clearTimeout(s),!a.err){n("");return}o(Object.assign(a.err,{txId:t}))},"confirmed")})}function Gt(i,t){i.length<1&&Sn.logWithError(`no instructions provided: ${i.toString()}`),t.length<1&&Sn.logWithError(`no signers provided:, ${t.toString()}`);let n=new Kn;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=t[0],n.add(...i);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<Rn}catch{return!1}}function le(i,t){let[n,o]=Yo.findProgramAddressSync(i,t);return{publicKey:n,nonce:o}}function $e({instructions:i,payer:t,signers:n}){return Gt(i,[t,...n])}function Je({instructions:i,payer:t,lookupTableAddressAccount:n,recentBlockhash:o=xn.generate().publicKey.toString()}){let a=new Xo({payerKey:t,recentBlockhash:o,instructions:i}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new Cn(a).serialize()).toString("base64").length<Rn}catch{return!1}}var Zo=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i),Ho=i=>{let t=i.serialize({requireAllSignatures:!1,verifySignatures:!1});i instanceof Cn&&(t=Zo(t));try{return t instanceof Buffer?t.toString("base64"):Buffer.from(t).toString("base64")}catch{return t.toString("base64")}};function Se(i){let t=[];return i.forEach(n=>{n instanceof Kn&&(n.recentBlockhash||(n.recentBlockhash=Qo.toBase58()),n.feePayer||(n.feePayer=xn.generate().publicKey)),t.push(Ho(n))}),console.log("simulate tx string:",t),t}var Pt=2e3,At=class{constructor(t){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=t.connection,this.feePayer=t.feePayer,this.signAllTransactions=t.signAllTransactions,this.owner=t.owner,this.cluster=t.cluster,this.blockhashCommitment=t.blockhashCommitment,this.loopMultiTxStatus=!!t.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 t=(await $o.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:n}=(o=t==null?void 0:t[15])!=null?o:{};if(!!n)return{units:6e5,microLamports:Math.min(Math.ceil(n*1e6/6e5),25e3)}}addCustomComputeBudget(t){if(t){let{instructions:n,instructionTypes:o}=bt(t);return this.instructions.unshift(...n),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(t){var n;return t?(this.endInstructions.push(jo.transfer({fromPubkey:(n=t.feePayer)!=null?n:this.feePayer,toPubkey:new Ee(t.address),lamports:BigInt(t.amount.toString())})),this.endInstructionTypes.push(H.TransferTip),!0):!1}async calComputeBudget({config:t,defaultIns:n}){try{let o=t||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(o))return;n&&this.instructions.unshift(...n)}catch{n&&this.instructions.unshift(...n)}}addInstruction({instructions:t=[],endInstructions:n=[],signers:o=[],instructionTypes:s=[],endInstructionTypes:a=[],lookupTableAddress:d=[]}){return this.instructions.push(...t),this.endInstructions.push(...n),this.signers.push(...o),this.instructionTypes.push(...s),this.endInstructionTypes.push(...a),this.lookupTableAddress.push(...d.filter(f=>f!==Ee.default.toString())),this}async versionBuild({txVersion:t,extInfo:n,lookupTableAddress:o}){return t===0?await this.buildV0(v(O({},n||{}),{lookupTableAddress:o})):this.build(n)}build(t){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(s=>s.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 s=>{var P;let{recentBlockHash:a,skipPreflight:d=!0,sendAndConfirm:f,notSendToRpc:b}=s||{},h=a!=null?a:await _e(this.connection,this.blockhashCommitment);if(n.recentBlockhash=h,this.signers.length&&n.sign(...this.signers),Se([n]),(P=this.owner)!=null&&P.isKeyPair)return{txId:f?await zt(this.connection,n,this.signers.find(x=>x.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:d}):await this.connection.sendRawTransaction(n.serialize(),{skipPreflight:d}),signedTx:n};if(this.signAllTransactions){let B=await this.signAllTransactions([n]);if(this.signers.length)for(let x of B)try{x.sign(...this.signers)}catch{}return{txId:b?"":await this.connection.sendRawTransaction(B[0].serialize(),{skipPreflight:d}),signedTx:B[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:t||{}}}buildMultiTx(t){var h;let{extraPreBuildData:n=[],extInfo:o}=t,{transaction:s}=this.build(o),a=n.filter(P=>P.transaction.instructions.length>0),d=[s,...a.map(P=>P.transaction)],f=[this.signers,...a.map(P=>P.signers)],b=[...this.instructionTypes,...a.map(P=>P.instructionTypes).flat()];return(h=this.owner)!=null&&h.signer&&f.forEach(P=>{P.some(B=>B.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:d,signers:f,instructionTypes:b,execute:async P=>{var I;let{sequentially:B,onTxUpdate:x,skipTxCount:T=0,recentBlockHash:K,skipPreflight:g=!0}=P||{},y=K!=null?K:await _e(this.connection,this.blockhashCommitment);if((I=this.owner)!=null&&I.isKeyPair){if(B){let k=[],N=0;for(let L of d){if(++N,N<=T)continue;let p=await zt(this.connection,L,this.signers.find(w=>w.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:g});k.push(p)}return{txIds:k,signedTxs:d}}return{txIds:await await Promise.all(d.map(async k=>(k.recentBlockhash=y,await this.connection.sendRawTransaction(k.serialize(),{skipPreflight:g})))),signedTxs:d}}if(this.signAllTransactions){let k=d.map((L,p)=>(L.recentBlockhash=y,f[p].length&&L.sign(...f[p]),L));Se(k);let N=await this.signAllTransactions(k);if(B){let L=0,p=[],w=async()=>{if(!N[L])return;let S=await this.connection.sendRawTransaction(N[L].serialize(),{skipPreflight:g});p.push({txId:S,status:"sent",signedTx:N[L]}),x==null||x([...p]),L++;let C=!1,M=null,F=null,G=q=>{M!==null&&clearInterval(M),F!==null&&this.connection.removeSignatureListener(F);let _=p.findIndex($=>$.txId===S);if(_>-1){if(p[_].status==="error"||p[_].status==="success")return;p[_].status=q.err?"error":"success"}x==null||x([...p]),q.err||w()};this.loopMultiTxStatus&&(M=setInterval(async()=>{var q;if(C){clearInterval(M);return}try{let _=await this.connection.getTransaction(S,{commitment:"confirmed",maxSupportedTransactionVersion:0});_&&(C=!0,clearInterval(M),G({err:((q=_.meta)==null?void 0:q.err)||null}),console.log("tx status from getTransaction:",S))}catch(_){C=!0,clearInterval(M),console.error("getTransaction timeout:",_,S)}},Pt)),F=this.connection.onSignature(S,q=>{if(C){this.connection.removeSignatureListener(F);return}C=!0,G(q)},"confirmed"),this.connection.getSignatureStatus(S)};return await w(),{txIds:p.map(S=>S.txId),signedTxs:N}}else{let L=[];for(let p=0;p<N.length;p+=1){let w=await this.connection.sendRawTransaction(N[p].serialize(),{skipPreflight:g});L.push(w)}return{txIds:L,signedTxs:N}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async versionMultiBuild({extraPreBuildData:t,txVersion:n,extInfo:o}){return n===0?await this.buildV0MultiTx({extraPreBuildData:t,buildProps:o||{}}):this.buildMultiTx({extraPreBuildData:t,extInfo:o})}async buildV0(t){var g;let K=t||{},{lookupTableCache:n={},lookupTableAddress:o=[],forerunCreate:s,recentBlockhash:a}=K,d=pe(K,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),f=O(O({},this.cluster==="devnet"?await Ut(this.connection):await qt(this.connection)),n),b=Array.from(new Set([...o,...this.lookupTableAddress])),h=[];for(let y of b)f[y]===void 0&&h.push(new Ee(y));let P=await Wt({connection:this.connection,address:h});for(let[y,I]of Object.entries(P))f[y]=I;let B=s?Ee.default.toBase58():a!=null?a:await _e(this.connection,this.blockhashCommitment),x=new tt({payerKey:this.feePayer,recentBlockhash:B,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(f));((g=this.owner)==null?void 0:g.signer)&&!this.signers.some(y=>y.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let T=new nt(x);return T.sign(this.signers),{builder:this,transaction:T,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async y=>{var L;let{skipPreflight:I=!0,sendAndConfirm:k,notSendToRpc:N}=y||{};if(Se([T]),(L=this.owner)!=null&&L.isKeyPair){let p=await this.connection.sendTransaction(T,{skipPreflight:I});return k&&await gt(this.connection,p),{txId:p,signedTx:T}}if(this.signAllTransactions){let p=await this.signAllTransactions([T]);if(this.signers.length)for(let w of p)try{w.sign(this.signers)}catch{}return{txId:N?"":await this.connection.sendTransaction(p[0],{skipPreflight:I}),signedTx:p[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:d||{}}}async buildV0MultiTx(t){var h;let{extraPreBuildData:n=[],buildProps:o}=t,{transaction:s}=await this.buildV0(o),a=n.filter(P=>P.builder.instructions.length>0),d=[s,...a.map(P=>P.transaction)],f=[this.signers,...a.map(P=>P.signers)],b=[...this.instructionTypes,...a.map(P=>P.instructionTypes).flat()];return(h=this.owner)!=null&&h.signer&&f.forEach(P=>{P.some(B=>B.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),d.forEach(async(P,B)=>{P.sign(f[B])}),{builder:this,transactions:d,signers:f,instructionTypes:b,buildProps:o,execute:async P=>{var g;let{sequentially:B,onTxUpdate:x,recentBlockHash:T,skipPreflight:K=!0}=P||{};if(T&&d.forEach(y=>y.message.recentBlockhash=T),Se(d),(g=this.owner)!=null&&g.isKeyPair){if(B){let y=[];for(let I of d){let k=await this.connection.sendTransaction(I,{skipPreflight:K});await gt(this.connection,k),y.push(k)}return{txIds:y,signedTxs:d}}return{txIds:await Promise.all(d.map(async y=>await this.connection.sendTransaction(y,{skipPreflight:K}))),signedTxs:d}}if(this.signAllTransactions){let y=await this.signAllTransactions(d);if(B){let I=0,k=[],N=async()=>{if(!y[I])return;let L=await this.connection.sendTransaction(y[I],{skipPreflight:K});k.push({txId:L,status:"sent",signedTx:y[I]}),x==null||x([...k]),I++;let p=!1,w=null,S=null,C=M=>{w!==null&&clearInterval(w),S!==null&&this.connection.removeSignatureListener(S);let F=k.findIndex(G=>G.txId===L);if(F>-1){if(k[F].status==="error"||k[F].status==="success")return;k[F].status=M.err?"error":"success"}x==null||x([...k]),M.err||N()};this.loopMultiTxStatus&&(w=setInterval(async()=>{var M;if(p){clearInterval(w);return}try{let F=await this.connection.getTransaction(L,{commitment:"confirmed",maxSupportedTransactionVersion:0});F&&(p=!0,clearInterval(w),C({err:((M=F.meta)==null?void 0:M.err)||null}),console.log("tx status from getTransaction:",L))}catch(F){p=!0,clearInterval(w),console.error("getTransaction timeout:",F,L)}},Pt)),S=this.connection.onSignature(L,M=>{if(p){this.connection.removeSignatureListener(S);return}p=!0,C(M)},"confirmed"),this.connection.getSignatureStatus(L)};return N(),{txIds:[],signedTxs:y}}else{let I=[];for(let k=0;k<y.length;k+=1){let N=await this.connection.sendTransaction(y[k],{skipPreflight:K});I.push(N)}return{txIds:I,signedTxs:y}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(t){var x;let B=t||{},{splitIns:n=[],computeBudgetConfig:o}=B,s=pe(B,["splitIns","computeBudgetConfig"]),a=o?bt(o):{instructions:[],instructionTypes:[]},d=this.signers.reduce((T,K)=>v(O({},T),{[K.publicKey.toBase58()]:K}),{}),f=[],b=[],h=[],P=0;if(this.allInstructions.forEach(T=>{let K=[...h,T],g=o?[...a.instructions,...K]:K,I=[...new Set(K.map(k=>k.keys.filter(N=>N.isSigner).map(N=>N.pubkey.toString())).flat()).values()].map(k=>new Ee(k));if(T!==n[P]&&h.length<12&&($e({instructions:g,payer:this.feePayer,signers:I})||$e({instructions:K,payer:this.feePayer,signers:I})))h.push(T);else{if(h.length===0)throw Error("item ins too big");P+=T===n[P]?1:0,$e({instructions:o?[...a.instructions,...h]:[...h],payer:this.feePayer,signers:I})?f.push(new et().add(...a.instructions,...h)):f.push(new et().add(...h)),b.push(Array.from(new Set(h.map(k=>k.keys.filter(N=>N.isSigner).map(N=>N.pubkey.toString())).flat())).map(k=>d[k]).filter(k=>k!==void 0)),h=[T]}}),h.length>0){let K=[...new Set(h.map(g=>g.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat()).values()].map(g=>d[g]).filter(g=>g!==void 0);$e({instructions:o?[...a.instructions,...h]:[...h],payer:this.feePayer,signers:K.map(g=>g.publicKey)})?f.push(new et().add(...a.instructions,...h)):f.push(new et().add(...h)),b.push(K)}return f.forEach(T=>T.feePayer=this.feePayer),(x=this.owner)!=null&&x.signer&&b.forEach(T=>{T.some(K=>K.publicKey.equals(this.owner.publicKey))||T.push(this.owner.signer)}),{builder:this,transactions:f,signers:b,instructionTypes:this.instructionTypes,execute:async T=>{var L;let{sequentially:K,onTxUpdate:g,skipTxCount:y=0,recentBlockHash:I,skipPreflight:k=!0}=T||{},N=I!=null?I:await _e(this.connection,this.blockhashCommitment);if(f.forEach(async(p,w)=>{p.recentBlockhash=N,b[w].length&&p.sign(...b[w])}),Se(f),(L=this.owner)!=null&&L.isKeyPair){if(K){let p=0,w=[];for(let S of f){if(++p,p<=y){w.push("tx skipped");continue}let C=await zt(this.connection,S,this.signers.find(M=>M.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:k});w.push(C)}return{txIds:w,signedTxs:f}}return{txIds:await Promise.all(f.map(async p=>await this.connection.sendRawTransaction(p.serialize(),{skipPreflight:k}))),signedTxs:f}}if(this.signAllTransactions){let p=await this.signAllTransactions(f.slice(y,f.length)),w=[...f.slice(0,y),...p];if(K){let S=0,C=[],M=async()=>{if(!w[S])return;S<y&&(C.push({txId:"",status:"success",signedTx:w[S]}),g==null||g([...C]),S++,M());let F=await this.connection.sendRawTransaction(w[S].serialize(),{skipPreflight:k});C.push({txId:F,status:"sent",signedTx:w[S]}),g==null||g([...C]),S++;let G=!1,q=null,_=null,$=z=>{q!==null&&clearInterval(q),_!==null&&this.connection.removeSignatureListener(_);let re=C.findIndex(ge=>ge.txId===F);if(re>-1){if(C[re].status==="error"||C[re].status==="success")return;C[re].status=z.err?"error":"success"}g==null||g([...C]),z.err||M()};this.loopMultiTxStatus&&(q=setInterval(async()=>{var z;if(G){clearInterval(q);return}try{let re=await this.connection.getTransaction(F,{commitment:"confirmed",maxSupportedTransactionVersion:0});re&&(G=!0,clearInterval(q),$({err:((z=re.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",F))}catch(re){G=!0,clearInterval(q),console.error("getTransaction timeout:",re,F)}},Pt)),_=this.connection.onSignature(F,z=>{if(G){this.connection.removeSignatureListener(_);return}G=!0,$(z)},"confirmed"),this.connection.getSignatureStatus(F)};return await M(),{txIds:C.map(F=>F.txId),signedTxs:w}}else{let S=[];for(let C=0;C<w.length;C+=1){let M=await this.connection.sendRawTransaction(w[C].serialize(),{skipPreflight:k});S.push(M)}return{txIds:S,signedTxs:w}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}async sizeCheckBuildV0(t){var L;let N=t||{},{computeBudgetConfig:n,splitIns:o=[],lookupTableCache:s={},lookupTableAddress:a=[],insCountLimit:d=12}=N,f=pe(N,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),b=O(O({},this.cluster==="devnet"?await Ut(this.connection):await qt(this.connection)),s),h=Array.from(new Set([...this.lookupTableAddress,...a])),P=[];for(let p of h)b[p]===void 0&&P.push(new Ee(p));let B=await Wt({connection:this.connection,address:P});for(let[p,w]of Object.entries(B))b[p]=w;let x=n?bt(n):{instructions:[],instructionTypes:[]},T=await _e(this.connection,this.blockhashCommitment),K=this.signers.reduce((p,w)=>v(O({},p),{[w.publicKey.toBase58()]:w}),{}),g=[],y=[],I=[],k=0;if(this.allInstructions.forEach(p=>{let w=[...I,p],S=n?[...x.instructions,...w]:w;if(p!==o[k]&&I.length<d&&(Je({instructions:S,payer:this.feePayer,lookupTableAddressAccount:b})||Je({instructions:w,payer:this.feePayer,lookupTableAddressAccount:b})))I.push(p);else{if(I.length===0)throw Error("item ins too big");k+=p===o[k]?1:0;let C={};for(let M of[...new Set(h)])b[M]!==void 0&&(C[M]=b[M]);if(n&&Je({instructions:[...x.instructions,...I],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:T})){let M=new tt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...x.instructions,...I]}).compileToV0Message(Object.values(b));g.push(new nt(M))}else{let M=new tt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...I]}).compileToV0Message(Object.values(b));g.push(new nt(M))}y.push(Array.from(new Set(I.map(M=>M.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat())).map(M=>K[M]).filter(M=>M!==void 0)),I=[p]}}),I.length>0){let w=[...new Set(I.map(S=>S.keys.filter(C=>C.isSigner).map(C=>C.pubkey.toString())).flat()).values()].map(S=>K[S]).filter(S=>S!==void 0);if(n&&Je({instructions:[...x.instructions,...I],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:T})){let S=new tt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...x.instructions,...I]}).compileToV0Message(Object.values(b));g.push(new nt(S))}else{let S=new tt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...I]}).compileToV0Message(Object.values(b));g.push(new nt(S))}y.push(w)}return(L=this.owner)!=null&&L.signer&&y.forEach(p=>{p.some(w=>w.publicKey.equals(this.owner.publicKey))||p.push(this.owner.signer)}),g.forEach((p,w)=>{p.sign(y[w])}),{builder:this,transactions:g,buildProps:t,signers:y,instructionTypes:this.instructionTypes,execute:async p=>{var G;let{sequentially:w,onTxUpdate:S,skipTxCount:C=0,recentBlockHash:M,skipPreflight:F=!0}=p||{};if(g.map(async(q,_)=>{y[_].length&&q.sign(y[_]),M&&(q.message.recentBlockhash=M)}),Se(g),(G=this.owner)!=null&&G.isKeyPair){if(w){let q=0,_=[];for(let $ of g){if(++q,q<=C){console.log("skip tx: ",q),_.push("tx skipped");continue}let z=await this.connection.sendTransaction($,{skipPreflight:F});await gt(this.connection,z),_.push(z)}return{txIds:_,signedTxs:g}}return{txIds:await Promise.all(g.map(async q=>await this.connection.sendTransaction(q,{skipPreflight:F}))),signedTxs:g}}if(this.signAllTransactions){let q=await this.signAllTransactions(g.slice(C,g.length)),_=[...g.slice(0,C),...q];if(w){let $=0,z=[],re=async()=>{if(!_[$])return;if($<C){z.push({txId:"",status:"success",signedTx:_[$]}),S==null||S([...z]),$++,re();return}let ge=await this.connection.sendTransaction(_[$],{skipPreflight:F});z.push({txId:ge,status:"sent",signedTx:_[$]}),S==null||S([...z]),$++;let Xe=!1,Oe=null,lt=null,dn=Ie=>{Oe!==null&&clearInterval(Oe),lt!==null&&this.connection.removeSignatureListener(lt);let Pe=z.findIndex(To=>To.txId===ge);if(Pe>-1){if(z[Pe].status==="error"||z[Pe].status==="success")return;z[Pe].status=Ie.err?"error":"success"}S==null||S([...z]),Ie.err||re()};this.loopMultiTxStatus&&(Oe=setInterval(async()=>{var Ie;if(Xe){clearInterval(Oe);return}try{let Pe=await this.connection.getTransaction(ge,{commitment:"confirmed",maxSupportedTransactionVersion:0});Pe&&(Xe=!0,clearInterval(Oe),dn({err:((Ie=Pe.meta)==null?void 0:Ie.err)||null}),console.log("tx status from getTransaction:",ge))}catch(Pe){Xe=!0,clearInterval(Oe),console.error("getTransaction timeout:",Pe,ge)}},Pt)),lt=this.connection.onSignature(ge,Ie=>{if(Xe){this.connection.removeSignatureListener(lt);return}Xe=!0,dn(Ie)},"confirmed"),this.connection.getSignatureStatus(ge)};return re(),{txIds:[],signedTxs:_}}else{let $=[];for(let z=0;z<_.length;z+=1){let re=await this.connection.sendTransaction(_[z],{skipPreflight:F});$.push(re)}return{txIds:$,signedTxs:_}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:f||{}}}};var Yt=(...i)=>i.map(t=>{try{return typeof t=="object"?JSON.stringify(t):t}catch{return t}}).join(", "),se=class{constructor({scope:t,moduleName:n}){this.disabled=!1;this.scope=t,this.logger=D(n)}createTxBuilder(t){return this.scope.checkOwner(),new At({connection:this.scope.connection,feePayer:t||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(...t){this.logger.debug(Yt(t))}logInfo(...t){this.logger.info(Yt(t))}logAndCreateError(...t){let n=Yt(t);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Wl,SystemProgram as Ul}from"@solana/web3.js";import Yl from"bn.js";import{createCloseAccountInstruction as Hl,createInitializeAccountInstruction as jl,createTransferInstruction as $l,TOKEN_PROGRAM_ID as Jl}from"@solana/spl-token";import{Keypair as Kl,PublicKey as Cl}from"@solana/web3.js";import Ol from"bn.js";import{TOKEN_PROGRAM_ID as Fl}from"@solana/spl-token";import{PublicKey as mi}from"@solana/web3.js";import Fn,{isBN as vn}from"bn.js";import{bits as Jo,BitStructure as Mc,blob as ei,Blob as Fc,cstr as vc,f32 as Vc,f32be as _c,f64 as Ec,f64be as Dc,greedy as Wc,Layout as ti,ns64 as qc,ns64be as Uc,nu64 as ni,nu64be as Gc,offset as oi,s16 as zc,s16be as Yc,s24 as Xc,s24be as Qc,s32 as ii,s32be as Zc,s40 as Hc,s40be as jc,s48 as $c,s48be as Jc,s8 as el,seq as ri,struct as tl,Structure as ai,u16 as si,u16be as nl,u24 as ol,u24be as il,u32 as ui,u32be as rl,u40 as al,u40be as sl,u48 as ul,u48be as cl,u8 as ci,UInt as li,union as ll,Union as ml,unionLayoutDiscriminator as dl,utf8 as pl}from"@solana/buffer-layout";var wt=ti,Ln=ai;var Xt=li;var On=ci,Q=si;var ot=ui;var Nn=ni;var me=ii;var Mn=ri;var E=ei;var Qt=Jo,Zt=oi;var Ke=class extends wt{constructor(n,o,s){super(n,s);this.blob=E(n),this.signed=o}decode(n,o=0){let s=new Fn(this.blob.decode(n,o),10,"le");return this.signed?s.fromTwos(this.span*8).clone():s}encode(n,o,s=0){return typeof n=="number"&&(n=new Fn(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),o,s)}},kt=class extends wt{constructor(n){super(8,n);this._lower=Qt(ot(),!1),this._upper=Qt(ot(),!1)}addBoolean(n){this._lower.fields.length<32?this._lower.addBoolean(n):this._upper.addBoolean(n)}decode(n,o=0){let s=this._lower.decode(n,o),a=this._upper.decode(n,o+this._lower.span);return O(O({},s),a)}encode(n,o,s=0){return this._lower.encode(n,o,s)+this._upper.encode(n,o,s+this._lower.span)}};function l(i){return new Xt(1,i)}function X(i){return new Xt(4,i)}function e(i){return new Ke(8,!1,i)}function V(i){return new Ke(16,!1,i)}function Vn(i){return new Ke(1,!0,i)}function De(i){return new Ke(8,!0,i)}function _n(i){return new Ke(16,!0,i)}var Ce=class extends wt{constructor(n,o,s,a){super(n.span,a);this.layout=n,this.decoder=o,this.encoder=s}decode(n,o){return this.decoder(this.layout.decode(n,o))}encode(n,o,s){return this.layout.encode(this.encoder(n),o,s)}getSpan(n,o){return this.layout.getSpan(n,o)}};function r(i){return new Ce(E(32),t=>new mi(t),t=>t.toBuffer(),i)}function ce(i){return new Ce(On(),di,pi,i)}function di(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function pi(i){return i?1:0}function En(i,t){let n=ot("length"),o=m([n,A(i,Zt(n,-n.span),"values")]);return new Ce(o,({values:s})=>s,s=>({values:s}),t)}function fi(i){let t=ot("length"),n=m([t,E(Zt(t,-t.span),"data")]);return new Ce(n,({data:o})=>o,o=>({data:o}),i)}function J(i){return new Ce(fi(),t=>t.toString("utf-8"),t=>Buffer.from(t,"utf-8"),i)}var Ht=class extends Ln{decode(t,n){return super.decode(t,n)}};function m(i,t,n){return new Ht(i,t,n)}function A(i,t,n){let o,s=typeof t=="number"?t:vn(t)?t.toNumber():new Proxy(t,{get(a,d){if(!o){let f=Reflect.get(a,"count");o=vn(f)?f.toNumber():f,Reflect.set(a,"count",o)}return Reflect.get(a,d)},set(a,d,f){return d==="count"&&(o=f),Reflect.set(a,d,f)}});return Mn(i,s,n)}var Tt=m([r("mint"),r("owner"),e("amount"),X("delegateOption"),r("delegate"),l("state"),X("isNativeOption"),e("isNative"),e("delegatedAmount"),X("closeAuthorityOption"),r("closeAuthority")]);import{PublicKey as aP,SystemProgram as sP}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as cP}from"@solana/spl-token";import{PublicKey as Sm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Km}from"@solana/spl-token";import{PublicKey as R}from"@solana/web3.js";var Wn=new R("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),qn=new R("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Un=new R("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),jt=new R("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Om=new R("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),bi=new R("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Gn=new R("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),zn=new R("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Nm=new R("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),gi=new R("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Yn=new R("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Pi=new R("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ai=new R("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Xn=new R("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Mm=new R("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),wi=new R("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),ki=new R("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Ti=new R("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),hi=new R("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Ii=new R("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),$t=new R("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Bi=new R("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Fm=new R("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Si=new R("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),xi=new R("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Ki=new R("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),vm=new R("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Vm=new R("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),_m=new R("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Em=new R("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Dm=new R("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX"),it={IDO_PROGRAM_ID_V1:ki,IDO_PROGRAM_ID_V2:Ti,IDO_PROGRAM_ID_V3:hi,IDO_PROGRAM_ID_V4:Ii};var Te={OPEN_BOOK_PROGRAM:new R("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new R("Ray1111111111111111111111111111111111111111"),AMM_V4:new R("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new R("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new R("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new R("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new R("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new R("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new R("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new R("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new R("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new R("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:R.default,Router:new R("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new R("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new R("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new R("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new R("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new R("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new R("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new R("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new R("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new R("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new R("Ray1111111111111111111111111111111111111111")};import AP from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as Vy,TOKEN_2022_PROGRAM_ID as _y,TOKEN_PROGRAM_ID as Ey}from"@solana/spl-token";import{PublicKey as Wy}from"@solana/web3.js";import Uy from"bn.js";import zy from"decimal.js";import{TOKEN_PROGRAM_ID as ed}from"@solana/spl-token";import{PublicKey as id}from"@solana/web3.js";var Ci=m([X("mintAuthorityOption"),r("mintAuthority"),e("supply"),l("decimals"),l("isInitialized"),X("freezeAuthorityOption"),r("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as ry,TOKEN_2022_PROGRAM_ID as ay,TOKEN_PROGRAM_ID as sy}from"@solana/spl-token";import{Keypair as ly,PublicKey as my,SystemProgram as py,TransactionInstruction as fy}from"@solana/web3.js";import by from"bn.js";import W from"bn.js";var Re=new W(1).shln(64);var Ri=new W(1).shln(128),Jt=new W(1).shln(64).subn(1),Li=new W(1).shln(128).subn(1);var qe=new W("4295048016"),Ue=new W("79226673521066979257578248091"),Oi=new W("59543866431248"),Ni=new W("184467440737095516"),Mi=new W("15793534762490258745");var en=60,bd=new W("18446743708227953217"),Fi=[{bit:0,factor:new W("fffcb933bd6fb800",16)},{bit:1,factor:new W("fff97272373d4000",16)},{bit:2,factor:new W("fff2e50f5f657000",16)},{bit:3,factor:new W("ffe5caca7e10f000",16)},{bit:4,factor:new W("ffcb9843d60f7000",16)},{bit:5,factor:new W("ff973b41fa98e800",16)},{bit:6,factor:new W("ff2ea16466c9b000",16)},{bit:7,factor:new W("fe5dee046a9a3800",16)},{bit:8,factor:new W("fcbe86c7900bb000",16)},{bit:9,factor:new W("f987a7253ac65800",16)},{bit:10,factor:new W("f3392b0822bb6000",16)},{bit:11,factor:new W("e7159475a2caf000",16)},{bit:12,factor:new W("d097f3bdfd2f2000",16)},{bit:13,factor:new W("a9f746462d9f8000",16)},{bit:14,factor:new W("70d869a156f31c00",16)},{bit:15,factor:new W("31be135f97ed3200",16)},{bit:16,factor:new W("9aa508b5b85a500",16)},{bit:17,factor:new W("5d6af8dedc582c",16)},{bit:18,factor:new W("2216e584f5fa",16)}];var rt=3,Qn=100;var Zn=10,Hn=100,It=14;var j=new W(0),Ge=new W(1),gd=new W(-1);var Pd=new W("18446744073700000000");var vi=m([E(8),l("bump"),Q("index"),r("owner"),X("protocolFeeRate"),X("tradeFeeRate"),Q("tickSpacing"),X("fundFeeRate"),A(X(),1),r("fundOwner"),A(e(),3)]),Vi=m([X("blockTimestamp"),De("tickCumulative"),A(e(),4)]),jn=m([E(8),ce("initialized"),e("recentEpoch"),Q("observationIndex"),r("poolId"),A(Vi,Qn,"observations"),A(e(),4)]),_i=m([Q("filterPeriod"),Q("decayPeriod"),Q("reductionFactor"),X("dynamicFeeControl"),X("maxVolatilityAccumulator"),me("tickSpacingIndexReference"),X("volatilityReference"),X("volatilityAccumulator"),e("lastUpdateTimestamp"),A(l(),46)]),Ei=m([l("state"),e("openTime"),e("endTime"),e("lastUpdateTime"),V("emissionsPerSecondX64"),e("totalEmissioned"),e("claimed"),r("mint"),r("vault"),r("creator"),V("growthGlobalX64")]),tn=m([E(8),l("bump"),r("configId"),r("creator"),r("mintA"),r("mintB"),r("vaultA"),r("vaultB"),r("observationId"),l("mintDecimalsA"),l("mintDecimalsB"),Q("tickSpacing"),V("liquidity"),V("sqrtPriceX64"),me("tickCurrent"),X(),V("feeGrowthGlobalX64A"),V("feeGrowthGlobalX64B"),e("protocolFeesTokenA"),e("protocolFeesTokenB"),A(V(),4),l("status"),l("feeOn"),E(6),A(Ei,rt,"rewardInfos"),E(8*16,"tickArrayBitmap"),A(e(),4),e("fundFeesTokenA"),e("fundFeesTokenB"),e("startTime"),e("recentEpoch"),_i.replicate("dynamicFeeInfo"),A(e(),46)]),Di=m([V("growthInsideLastX64"),e("rewardAmountOwed")]),Wi=m([E(8),l("bump"),r("nftMint"),r("poolId"),me("tickLower"),me("tickUpper"),V("liquidity"),V("feeGrowthInsideLastX64A"),V("feeGrowthInsideLastX64B"),e("tokenFeesOwedA"),e("tokenFeesOwedB"),A(Di,rt,"rewardInfos"),e("recentEpoch"),A(e(),7)]),Td=m([E(8),l("bump"),r("poolId"),me("tickLower"),me("tickUpper"),V("liquidity"),V("feeGrowthInsideLastX64A"),V("feeGrowthInsideLastX64B"),e("tokenFeesOwedA"),e("tokenFeesOwedB"),A(V(),rt,"rewardGrowthInside"),e("recentEpoch"),A(e(),7)]),qi=m([me("tick"),_n("liquidityNet"),V("liquidityGross"),V("feeGrowthOutsideX64A"),V("feeGrowthOutsideX64B"),A(V(),rt,"rewardGrowthsOutsideX64"),e("orderPhase"),e("ordersAmount"),e("partFilledOrdersRemaining"),V("unfilledRatioX64"),A(X(),3)]),$n=m([E(8),r("poolId"),me("startTickIndex"),A(qi,en,"ticks"),l("initializedTickCount"),e("recentEpoch"),A(l(),107)]),Ui=m([E(8),l("bump"),A(r(),Zn,"operationOwners"),A(r(),Hn,"whitelistMints")]),Gi=m([E(8),r("poolId"),r("owner"),me("tick"),ce("zeroForOne"),e("orderPhase"),e("totalAmount"),e("filledAmount"),e("settleBase"),e("settleOutput"),e("openTime"),V("unfilledRatioX64"),A(e(),4)]),Jn=m([E(8),r("poolId"),E(8*8*It,"positiveTickArrayBitmap"),E(8*8*It,"negativeTickArrayBitmap")]),hd=m([E(8),Q("index"),Q("filterPeriod"),Q("decayPeriod"),Q("reductionFactor"),X("dynamicFeeControl"),X("maxVolatilityAccumulator"),A(e(),8)]),zi=m([E(8),r("wallet"),l("nonceIndex"),e("orderNonce"),A(e(),4)]),Id=m([e(),l("bump"),r("owner"),r("poolId"),r("positionId"),r("nftAccount"),A(e(),8)]),Yi=m([E(8),l("bump"),r("lockOwner"),r("poolId"),r("positionId"),r("nftAccount"),r("lockNftMint"),e("recentEpoch"),A(e(),8)]);import xd from"bn.js";var _d=Buffer.from("amm_config","utf8"),Xi=Buffer.from("pool","utf8"),Qi=Buffer.from("pool_vault","utf8"),Ed=Buffer.from("pool_reward_vault","utf8"),Dd=Buffer.from("position","utf8"),Wd=Buffer.from("tick_array","utf8"),qd=Buffer.from("operation","utf8"),Ud=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Gd=Buffer.from("observation","utf8"),zd=Buffer.from("support_mint","utf8"),Yd=Buffer.from("dynamic_fee_config","utf8");var Xd=Buffer.from("locked_position","utf8");import{sha256 as lr}from"js-sha256";import Zi from"bn.js";import jd from"decimal.js";var Jd=new Zi(1).shln(256).subn(1);import gp from"bn.js";import ap from"bn.js";import up from"decimal.js";import Bp from"bn.js";import xp from"decimal.js";import{PublicKey as lf}from"@solana/web3.js";import df from"bn.js";import{TOKEN_2022_PROGRAM_ID as wf}from"@solana/spl-token";import If from"decimal.js";import $p from"bn.js";import Ep from"bn.js";import Nf from"bn.js";function ee(i){let t=`global:${i}`;return Buffer.from(lr.digest(t)).slice(0,8)}jn.span;var Iy=D("Raydium_Clmm"),By={createPool:ee("create_pool"),createCustomizablePool:ee("create_customizable_pool"),openPositionV2:ee("open_position_v2"),openPositionWithToken22Nft:ee("open_position_with_token22_nft"),closePosition:ee("close_position"),increaseLiquidityV2:ee("increase_liquidity_v2"),decreaseLiquidityV2:ee("decrease_liquidity_v2"),initializeReward:ee("initialize_reward"),setRewardParams:ee("set_reward_params"),updateRewardInfos:ee("update_reward_infos"),collectRemainingRewards:ee("collect_remaining_rewards"),swapV2:ee("swap_v2"),openLimitOrder:ee("open_limit_order"),increaseLimitOrder:ee("increase_limit_order"),decreaseLimitOrder:ee("decrease_limit_order"),settleLimitOrder:ee("settle_limit_order"),closeLimitOrder:e