UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

1 lines 106 kB
var Qo=Object.defineProperty,Zo=Object.defineProperties;var Ho=Object.getOwnPropertyDescriptors;var It=Object.getOwnPropertySymbols;var Mn=Object.prototype.hasOwnProperty,Fn=Object.prototype.propertyIsEnumerable;var Nn=(i,e,t)=>e in i?Qo(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,N=(i,e)=>{for(var t in e||(e={}))Mn.call(e,t)&&Nn(i,t,e[t]);if(It)for(var t of It(e))Fn.call(e,t)&&Nn(i,t,e[t]);return i},F=(i,e)=>Zo(i,Ho(e));var ge=(i,e)=>{var t={};for(var o in i)Mn.call(i,o)&&e.indexOf(o)<0&&(t[o]=i[o]);if(i!=null&&It)for(var o of It(i))e.indexOf(o)<0&&Fn.call(i,o)&&(t[o]=i[o]);return t};import{PublicKey as Jo}from"@solana/web3.js";import{get as vn,set as jo}from"lodash";var jt=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(o=>typeof o=="object"?JSON.stringify(o):o).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},Vn={},$o={};function D(i){let e=vn(Vn,i);if(!e){let t=vn($o,i);e=new jt({name:i,logLevel:t}),jo(Vn,i,e)}return e}import{MINT_SIZE as Fs,TOKEN_PROGRAM_ID as vs,getTransferFeeConfig as Vs,unpackMint as _s}from"@solana/spl-token";var $t=D("Raydium_accountInfo_util");async function Ie(i,e,t){let{batchRequest:o,commitment:r="confirmed",chunkCount:a=100}=N({batchRequest:!1},t),s=Jt(e,a),c=new Array(s.length).fill([]);if(o){let f=s.map(P=>{let x=i._buildArgs([P.map(T=>T.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:x}}),g=Jt(f,10);c=(await(await Promise.all(g.map(async P=>await i._rpcBatchRequest(P)))).flat()).map(P=>(P.error&&$t.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${P.error.message}`),P.result.value.map(x=>{if(x){let{data:T,executable:h,lamports:w,owner:A,rentEpoch:B}=x;return T.length!==2&&T[1]!=="base64"&&$t.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(T[0],"base64"),executable:h,lamports:w,owner:new Jo(A),rentEpoch:B}}return null})))}else try{c=await Promise.all(s.map(f=>i.getMultipleAccountsInfo(f,r)))}catch(f){f instanceof Error&&$t.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${f.message}`)}return c.flat()}import Re from"bn.js";import QC from"decimal.js";import si from"big.js";import tu from"bn.js";import ei from"toformat";var ti=ei,it=ti;import St from"big.js";import oi from"bn.js";import ii from"decimal.js-light";import rt from"bn.js";var _n=9007199254740991;function ue(i){let e=D("Raydium_parseBigNumberish");if(i instanceof rt)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new rt(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=_n||i<=-_n)&&e.logWithError(`BigNumberish number overflow: ${i}`),new rt(String(i))):typeof i=="bigint"?new rt(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new rt(0))}var Bt=D("module/fraction"),en=it(St),at=it(ii),ri={[0]:at.ROUND_DOWN,[1]:at.ROUND_HALF_UP,[2]:at.ROUND_UP},ai={[0]:St.roundDown,[1]:St.roundHalfUp,[2]:St.roundUp},U=class{constructor(e,t=new oi(1)){this.numerator=ue(e),this.denominator=ue(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new U(this.denominator,this.numerator)}add(e){let t=e instanceof U?e:new U(ue(e));return this.denominator.eq(t.denominator)?new U(this.numerator.add(t.numerator),this.denominator):new U(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof U?e:new U(ue(e));return this.denominator.eq(t.denominator)?new U(this.numerator.sub(t.numerator),this.denominator):new U(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof U?e:new U(ue(e));return new U(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof U?e:new U(ue(e));return new U(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},o=1){Number.isInteger(e)||Bt.logWithError(`${e} is not an integer.`),e<=0&&Bt.logWithError(`${e} is not positive.`),at.set({precision:e+1,rounding:ri[o]});let r=new at(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},o=1){return Number.isInteger(e)||Bt.logWithError(`${e} is not an integer.`),e<0&&Bt.logWithError(`${e} is negative.`),en.DP=e,en.RM=ai[o]||1,new en(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var lu=D("Raydium_amount"),mu=it(si);import{PublicKey as ci}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as En}from"@solana/spl-token";var xt={chainId:101,address:ci.default.toBase58(),programId:En.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Ae={chainId:101,address:"So11111111111111111111111111111111111111112",programId:En.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 nn}from"@solana/web3.js";import{PublicKey as Y,SystemProgram as Dn,SYSVAR_RENT_PUBKEY as li}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as mi}from"@solana/spl-token";function De({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var di=[De({pubkey:mi,isWritable:!1}),De({pubkey:Dn.programId,isWritable:!1}),De({pubkey:li,isWritable:!1})];function Wn({publicKey:i,transformSol:e}){let t=qn(i.toString());if(t instanceof Y)return e&&t.equals(Oe)?Pe:t;if(e&&t.toString()===Oe.toBase58())return Pe;if(typeof t=="string"){if(t===Y.default.toBase58())return Y.default;try{return new Y(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function qn(i){try{return new Y(i)}catch{return i}}var tn=new Y("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Se=new Y("SysvarRent111111111111111111111111111111111"),pi=new Y("SysvarC1ock11111111111111111111111111111111"),We=new Y("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),fi=new Y("Sysvar1nstructions1111111111111111111111111"),Un=Dn.programId,Au=new Y("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),wu=new Y("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),ku=new Y("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Tu=new Y("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),hu=new Y("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Iu=new Y("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Bu=new Y("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Su=new Y("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),xu=new Y("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ku=new Y("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Cu=new Y("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Pe=new Y("So11111111111111111111111111111111111111112"),Oe=Y.default;var on=class{constructor({mint:e,decimals:t,symbol:o,name:r,skipMint:a=!1,isToken2022:s=!1}){if(e===Oe.toBase58()||e instanceof nn&&Oe.equals(e)){this.decimals=Ae.decimals,this.symbol=Ae.symbol,this.name=Ae.name,this.mint=new nn(Ae.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=o||e.toString().substring(0,6),this.name=r||e.toString().substring(0,6),this.mint=a?nn.default:Wn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ie=on;ie.WSOL=new on(F(N({},Ae),{mint:Ae.address}));var rn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:o="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=o}equals(e){return this===e}},Kt=rn;Kt.SOL=new rn(xt);import yi from"bn.js";var Wu=new U(new yi(100));var Xu=D("Raydium_price");import{merge as QK}from"lodash";import nc from"axios";var Gn={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",MONITOR_BASE_HOST:"https://monitor.raydium.io",SERVICE_1_BASE_HOST:"https://service-v1.raydium.io",TEMP_HOST:"https://temp-api-v1.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",CPMM_CONFIG:"/main/cpmm-config",CLMM_DYNAMIC_CONFIG:"/main/clmm-dynamic-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://lite-api.jup.ag/tokens/v2/tag?query=verified",POOL_LIST:"/pools/info/list-v2",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/list-v2",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",OWNER_LOCK_POSITION:"/position/clmm-lock/{owner}",IDO_KEYS:"/ido/key/ids",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee",CPMM_LOCK:"https://dynamic-ipfs.raydium.io/lock/cpmm/position",LAUNCH_AUTH_HOST:"https://launch-auth-v1.raydium.io",LAUNCH_COMMENT_HOST:"hhttps://launch-forum-v1.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1.raydium.io"},bi=F(N({},Gn),{BASE_HOST:"https://api-v3-devnet.raydium.io",OWNER_BASE_HOST:"https://owner-v1-devnet.raydium.io",SWAP_HOST:"https://transaction-v1-devnet.raydium.io",CPMM_LOCK:"https://dynamic-ipfs-devnet.raydium.io/lock/cpmm/position",TEMP_HOST:"https://temp-api-v1-devnet.raydium.io",LAUNCH_AUTH_HOST:"https://launch-auth-v1-devnet.raydium.io",LAUNCH_COMMENT_HOST:"https://launch-forum-v1-devnet.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1-devnet.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1-devnet.raydium.io"});var Bc=D("Raydium_Api");import{PublicKey as Um,SystemProgram as Gm}from"@solana/web3.js";import{AccountLayout as Zm,createAssociatedTokenAccountIdempotentInstruction as Hm,TOKEN_PROGRAM_ID as jm,TOKEN_2022_PROGRAM_ID as $m}from"@solana/spl-token";import{PublicKey as Ye,sendAndConfirmTransaction as mn,SystemProgram as Ti,Transaction as ct,TransactionMessage as lt,VersionedTransaction as mt}from"@solana/web3.js";import hi from"axios";import{PublicKey as an,AddressLookupTableAccount as Ge}from"@solana/web3.js";async function sn({connection:i,address:e,cluster:t="mainnet"}){let o=await Ie(i,[...new Set(e.map(a=>a.toString()))].map(a=>new an(a))),r={};for(let a=0;a<e.length;a++){let s=o[a],c=e[a];if(!s)continue;let f=new Ge({key:c,state:Ge.deserialize(s.data)});r[c.toString()]=f,t==="devnet"?Ue[c.toString()]=f:qe[c.toString()]=f}return r}var qe={},un=async i=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(qe[e])return qe;let t=new an(e),o=await i.getAccountInfo(t);return o&&(qe[e]=new Ge({key:t,state:Ge.deserialize(o.data)})),qe},Ue={},cn=async i=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Ue[e])return Ue;let t=new an(e),o=await i.getAccountInfo(t);return o&&(Ue[e]=new Ge({key:t,state:Ge.deserialize(o.data)})),Ue};var j={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{ComputeBudgetProgram as zn,Keypair as Xn,PublicKey as gi,Transaction as Qn,TransactionMessage as Pi,VersionedTransaction as Zn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ai}from"@solana/spl-token";var Yn=D("Raydium_txUtil"),Hn=1644;function Ct(i){let e=[],t=[];return i.microLamports&&(e.push(zn.setComputeUnitPrice({microLamports:i.microLamports})),t.push(j.SetComputeUnitPrice)),i.units&&(e.push(zn.setComputeUnitLimit({units:i.units})),t.push(j.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function ze(i,e){var o,r;let t=e!=null?e:"confirmed";return(r=await((o=i.getLatestBlockhash)==null?void 0:o.call(i,{commitment:t})))==null?void 0:r.blockhash}async function Rt(i,e){return i.getSignatureStatuses([e]),new Promise((t,o)=>{let r=setTimeout(o,6e4);i.onSignature(e,a=>{if(clearTimeout(r),!a.err){t("");return}o(Object.assign(a.err,{txId:e}))},"confirmed")})}function ln(i,e){i.length<1&&Yn.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&Yn.logWithError(`no signers provided:, ${e.toString()}`);let t=new Qn;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Hn}catch{return!1}}function Q(i,e){let[t,o]=gi.findProgramAddressSync(i,e);return{publicKey:t,nonce:o}}function st({instructions:i,payer:e,signers:t}){return ln(i,[e,...t])}function ut({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:o=Xn.generate().publicKey.toString()}){let a=new Pi({payerKey:e,recentBlockhash:o,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Zn(a).serialize()).toString("base64").length<Hn}catch{return!1}}var wi=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i),ki=i=>{let e=i.serialize({requireAllSignatures:!1,verifySignatures:!1});i instanceof Zn&&(e=wi(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Ne(i){let e=[];return i.forEach(t=>{t instanceof Qn&&(t.recentBlockhash||(t.recentBlockhash=Ai.toBase58()),t.feePayer||(t.feePayer=Xn.generate().publicKey)),e.push(ki(t))}),console.log("simulate tx string:",e),e}var Lt=2e3,Ot=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 hi.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(o=e==null?void 0:e[15])!=null?o:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:o}=Ct(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(Ti.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new Ye(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(j.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let o=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(o))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:o=[],instructionTypes:r=[],endInstructionTypes:a=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...o),this.instructionTypes.push(...r),this.endInstructionTypes.push(...a),this.lookupTableAddress.push(...s.filter(c=>c!==Ye.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:o}){return e===0?await this.buildV0(F(N({},t||{}),{lookupTableAddress:o})):this.build(t)}build(e){var o;let t=new ct;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((o=this.owner)==null?void 0:o.signer)&&!this.signers.some(r=>r.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async r=>{var y;let{recentBlockHash:a,skipPreflight:s=!0,sendAndConfirm:c,notSendToRpc:f}=r||{},g=a!=null?a:await ze(this.connection,this.blockhashCommitment);if(t.recentBlockhash=g,this.signers.length&&t.sign(...this.signers),Ne([t]),(y=this.owner)!=null&&y.isKeyPair)return{txId:c?await mn(this.connection,t,this.signers.find(x=>x.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let P=await this.signAllTransactions([t]);if(this.signers.length)for(let x of P)try{x.sign(...this.signers)}catch{}return{txId:f?"":await this.connection.sendRawTransaction(P[0].serialize(),{skipPreflight:s}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var g;let{extraPreBuildData:t=[],extInfo:o}=e,{transaction:r}=this.build(o),a=t.filter(y=>y.transaction.instructions.length>0),s=[r,...a.map(y=>y.transaction)],c=[this.signers,...a.map(y=>y.signers)],f=[...this.instructionTypes,...a.map(y=>y.instructionTypes).flat()];return(g=this.owner)!=null&&g.signer&&c.forEach(y=>{y.some(P=>P.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:c,instructionTypes:f,execute:async y=>{var B;let{sequentially:P,onTxUpdate:x,skipTxCount:T=0,recentBlockHash:h,skipPreflight:w=!0}=y||{},A=h!=null?h:await ze(this.connection,this.blockhashCommitment);if((B=this.owner)!=null&&B.isKeyPair){if(P){let k=[],R=0;for(let C of s){if(++R,R<=T)continue;let b=await mn(this.connection,C,this.signers.find(S=>S.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:w});k.push(b)}return{txIds:k,signedTxs:s}}return{txIds:await await Promise.all(s.map(async k=>(k.recentBlockhash=A,await this.connection.sendRawTransaction(k.serialize(),{skipPreflight:w})))),signedTxs:s}}if(this.signAllTransactions){let k=s.map((C,b)=>(C.recentBlockhash=A,c[b].length&&C.sign(...c[b]),C));Ne(k);let R=await this.signAllTransactions(k);if(P){let C=0,b=[],S=async()=>{if(!R[C])return;let K=await this.connection.sendRawTransaction(R[C].serialize(),{skipPreflight:w});b.push({txId:K,status:"sent",signedTx:R[C]}),x==null||x([...b]),C++;let L=!1,M=null,v=null,G=q=>{M!==null&&clearInterval(M),v!==null&&this.connection.removeSignatureListener(v);let _=b.findIndex(J=>J.txId===K);if(_>-1){if(b[_].status==="error"||b[_].status==="success")return;b[_].status=q.err?"error":"success"}x==null||x([...b]),q.err||S()};this.loopMultiTxStatus&&(M=setInterval(async()=>{var q;if(L){clearInterval(M);return}try{let _=await this.connection.getTransaction(K,{commitment:"confirmed",maxSupportedTransactionVersion:0});_&&(L=!0,clearInterval(M),G({err:((q=_.meta)==null?void 0:q.err)||null}),console.log("tx status from getTransaction:",K))}catch(_){L=!0,clearInterval(M),console.error("getTransaction timeout:",_,K)}},Lt)),v=this.connection.onSignature(K,q=>{if(L){this.connection.removeSignatureListener(v);return}L=!0,G(q)},"confirmed"),this.connection.getSignatureStatus(K)};return await S(),{txIds:b.map(K=>K.txId),signedTxs:R}}else{let C=[];for(let b=0;b<R.length;b+=1){let S=await this.connection.sendRawTransaction(R[b].serialize(),{skipPreflight:w});C.push(S)}return{txIds:C,signedTxs:R}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:o}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:o||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:o})}async buildV0(e){var w;let h=e||{},{lookupTableCache:t={},lookupTableAddress:o=[],forerunCreate:r,recentBlockhash:a}=h,s=ge(h,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),c=N(N({},this.cluster==="devnet"?await cn(this.connection):await un(this.connection)),t),f=Array.from(new Set([...o,...this.lookupTableAddress])),g=[];for(let A of f)c[A]===void 0&&g.push(new Ye(A));let y=await sn({connection:this.connection,address:g});for(let[A,B]of Object.entries(y))c[A]=B;let P=r?Ye.default.toBase58():a!=null?a:await ze(this.connection,this.blockhashCommitment),x=new lt({payerKey:this.feePayer,recentBlockhash:P,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(c));((w=this.owner)==null?void 0:w.signer)&&!this.signers.some(A=>A.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let T=new mt(x);return T.sign(this.signers),{builder:this,transaction:T,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async A=>{var C;let{skipPreflight:B=!0,sendAndConfirm:k,notSendToRpc:R}=A||{};if(Ne([T]),(C=this.owner)!=null&&C.isKeyPair){let b=await this.connection.sendTransaction(T,{skipPreflight:B});return k&&await Rt(this.connection,b),{txId:b,signedTx:T}}if(this.signAllTransactions){let b=await this.signAllTransactions([T]);if(this.signers.length)for(let S of b)try{S.sign(this.signers)}catch{}return{txId:R?"":await this.connection.sendTransaction(b[0],{skipPreflight:B}),signedTx:b[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}async buildV0MultiTx(e){var g;let{extraPreBuildData:t=[],buildProps:o}=e,{transaction:r}=await this.buildV0(o),a=t.filter(y=>y.builder.instructions.length>0),s=[r,...a.map(y=>y.transaction)],c=[this.signers,...a.map(y=>y.signers)],f=[...this.instructionTypes,...a.map(y=>y.instructionTypes).flat()];return(g=this.owner)!=null&&g.signer&&c.forEach(y=>{y.some(P=>P.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(y,P)=>{y.sign(c[P])}),{builder:this,transactions:s,signers:c,instructionTypes:f,buildProps:o,execute:async y=>{var w;let{sequentially:P,onTxUpdate:x,recentBlockHash:T,skipPreflight:h=!0}=y||{};if(T&&s.forEach(A=>A.message.recentBlockhash=T),Ne(s),(w=this.owner)!=null&&w.isKeyPair){if(P){let A=[];for(let B of s){let k=await this.connection.sendTransaction(B,{skipPreflight:h});await Rt(this.connection,k),A.push(k)}return{txIds:A,signedTxs:s}}return{txIds:await Promise.all(s.map(async A=>await this.connection.sendTransaction(A,{skipPreflight:h}))),signedTxs:s}}if(this.signAllTransactions){let A=await this.signAllTransactions(s);if(P){let B=0,k=[],R=async()=>{if(!A[B])return;let C=await this.connection.sendTransaction(A[B],{skipPreflight:h});k.push({txId:C,status:"sent",signedTx:A[B]}),x==null||x([...k]),B++;let b=!1,S=null,K=null,L=M=>{S!==null&&clearInterval(S),K!==null&&this.connection.removeSignatureListener(K);let v=k.findIndex(G=>G.txId===C);if(v>-1){if(k[v].status==="error"||k[v].status==="success")return;k[v].status=M.err?"error":"success"}x==null||x([...k]),M.err||R()};this.loopMultiTxStatus&&(S=setInterval(async()=>{var M;if(b){clearInterval(S);return}try{let v=await this.connection.getTransaction(C,{commitment:"confirmed",maxSupportedTransactionVersion:0});v&&(b=!0,clearInterval(S),L({err:((M=v.meta)==null?void 0:M.err)||null}),console.log("tx status from getTransaction:",C))}catch(v){b=!0,clearInterval(S),console.error("getTransaction timeout:",v,C)}},Lt)),K=this.connection.onSignature(C,M=>{if(b){this.connection.removeSignatureListener(K);return}b=!0,L(M)},"confirmed"),this.connection.getSignatureStatus(C)};return R(),{txIds:[],signedTxs:A}}else{let B=[];for(let k=0;k<A.length;k+=1){let R=await this.connection.sendTransaction(A[k],{skipPreflight:h});B.push(R)}return{txIds:B,signedTxs:A}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var x;let P=e||{},{splitIns:t=[],computeBudgetConfig:o}=P,r=ge(P,["splitIns","computeBudgetConfig"]),a=o?Ct(o):{instructions:[],instructionTypes:[]},s=this.signers.reduce((T,h)=>F(N({},T),{[h.publicKey.toBase58()]:h}),{}),c=[],f=[],g=[],y=0;if(this.allInstructions.forEach(T=>{let h=[...g,T],w=o?[...a.instructions,...h]:h,B=[...new Set(h.map(k=>k.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat()).values()].map(k=>new Ye(k));if(T!==t[y]&&g.length<12&&(st({instructions:w,payer:this.feePayer,signers:B})||st({instructions:h,payer:this.feePayer,signers:B})))g.push(T);else{if(g.length===0)throw Error("item ins too big");y+=T===t[y]?1:0,st({instructions:o?[...a.instructions,...g]:[...g],payer:this.feePayer,signers:B})?c.push(new ct().add(...a.instructions,...g)):c.push(new ct().add(...g)),f.push(Array.from(new Set(g.map(k=>k.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat())).map(k=>s[k]).filter(k=>k!==void 0)),g=[T]}}),g.length>0){let h=[...new Set(g.map(w=>w.keys.filter(A=>A.isSigner).map(A=>A.pubkey.toString())).flat()).values()].map(w=>s[w]).filter(w=>w!==void 0);st({instructions:o?[...a.instructions,...g]:[...g],payer:this.feePayer,signers:h.map(w=>w.publicKey)})?c.push(new ct().add(...a.instructions,...g)):c.push(new ct().add(...g)),f.push(h)}return c.forEach(T=>T.feePayer=this.feePayer),(x=this.owner)!=null&&x.signer&&f.forEach(T=>{T.some(h=>h.publicKey.equals(this.owner.publicKey))||T.push(this.owner.signer)}),{builder:this,transactions:c,signers:f,instructionTypes:this.instructionTypes,execute:async T=>{var C;let{sequentially:h,onTxUpdate:w,skipTxCount:A=0,recentBlockHash:B,skipPreflight:k=!0}=T||{},R=B!=null?B:await ze(this.connection,this.blockhashCommitment);if(c.forEach(async(b,S)=>{b.recentBlockhash=R,f[S].length&&b.sign(...f[S])}),Ne(c),(C=this.owner)!=null&&C.isKeyPair){if(h){let b=0,S=[];for(let K of c){if(++b,b<=A){S.push("tx skipped");continue}let L=await mn(this.connection,K,this.signers.find(M=>M.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:k});S.push(L)}return{txIds:S,signedTxs:c}}return{txIds:await Promise.all(c.map(async b=>await this.connection.sendRawTransaction(b.serialize(),{skipPreflight:k}))),signedTxs:c}}if(this.signAllTransactions){let b=await this.signAllTransactions(c.slice(A,c.length)),S=[...c.slice(0,A),...b];if(h){let K=0,L=[],M=async()=>{if(!S[K])return;K<A&&(L.push({txId:"",status:"success",signedTx:S[K]}),w==null||w([...L]),K++,M());let v=await this.connection.sendRawTransaction(S[K].serialize(),{skipPreflight:k});L.push({txId:v,status:"sent",signedTx:S[K]}),w==null||w([...L]),K++;let G=!1,q=null,_=null,J=z=>{q!==null&&clearInterval(q),_!==null&&this.connection.removeSignatureListener(_);let se=L.findIndex(Te=>Te.txId===v);if(se>-1){if(L[se].status==="error"||L[se].status==="success")return;L[se].status=z.err?"error":"success"}w==null||w([...L]),z.err||M()};this.loopMultiTxStatus&&(q=setInterval(async()=>{var z;if(G){clearInterval(q);return}try{let se=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});se&&(G=!0,clearInterval(q),J({err:((z=se.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",v))}catch(se){G=!0,clearInterval(q),console.error("getTransaction timeout:",se,v)}},Lt)),_=this.connection.onSignature(v,z=>{if(G){this.connection.removeSignatureListener(_);return}G=!0,J(z)},"confirmed"),this.connection.getSignatureStatus(v)};return await M(),{txIds:L.map(v=>v.txId),signedTxs:S}}else{let K=[];for(let L=0;L<S.length;L+=1){let M=await this.connection.sendRawTransaction(S[L].serialize(),{skipPreflight:k});K.push(M)}return{txIds:K,signedTxs:S}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async sizeCheckBuildV0(e){var C;let R=e||{},{computeBudgetConfig:t,splitIns:o=[],lookupTableCache:r={},lookupTableAddress:a=[],insCountLimit:s=12}=R,c=ge(R,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),f=N(N({},this.cluster==="devnet"?await cn(this.connection):await un(this.connection)),r),g=Array.from(new Set([...this.lookupTableAddress,...a])),y=[];for(let b of g)f[b]===void 0&&y.push(new Ye(b));let P=await sn({connection:this.connection,address:y});for(let[b,S]of Object.entries(P))f[b]=S;let x=t?Ct(t):{instructions:[],instructionTypes:[]},T=await ze(this.connection,this.blockhashCommitment),h=this.signers.reduce((b,S)=>F(N({},b),{[S.publicKey.toBase58()]:S}),{}),w=[],A=[],B=[],k=0;if(this.allInstructions.forEach(b=>{let S=[...B,b],K=t?[...x.instructions,...S]:S;if(b!==o[k]&&B.length<s&&(ut({instructions:K,payer:this.feePayer,lookupTableAddressAccount:f})||ut({instructions:S,payer:this.feePayer,lookupTableAddressAccount:f})))B.push(b);else{if(B.length===0)throw Error("item ins too big");k+=b===o[k]?1:0;let L={};for(let M of[...new Set(g)])f[M]!==void 0&&(L[M]=f[M]);if(t&&ut({instructions:[...x.instructions,...B],payer:this.feePayer,lookupTableAddressAccount:f,recentBlockhash:T})){let M=new lt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...x.instructions,...B]}).compileToV0Message(Object.values(f));w.push(new mt(M))}else{let M=new lt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...B]}).compileToV0Message(Object.values(f));w.push(new mt(M))}A.push(Array.from(new Set(B.map(M=>M.keys.filter(v=>v.isSigner).map(v=>v.pubkey.toString())).flat())).map(M=>h[M]).filter(M=>M!==void 0)),B=[b]}}),B.length>0){let S=[...new Set(B.map(K=>K.keys.filter(L=>L.isSigner).map(L=>L.pubkey.toString())).flat()).values()].map(K=>h[K]).filter(K=>K!==void 0);if(t&&ut({instructions:[...x.instructions,...B],payer:this.feePayer,lookupTableAddressAccount:f,recentBlockhash:T})){let K=new lt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...x.instructions,...B]}).compileToV0Message(Object.values(f));w.push(new mt(K))}else{let K=new lt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...B]}).compileToV0Message(Object.values(f));w.push(new mt(K))}A.push(S)}return(C=this.owner)!=null&&C.signer&&A.forEach(b=>{b.some(S=>S.publicKey.equals(this.owner.publicKey))||b.push(this.owner.signer)}),w.forEach((b,S)=>{b.sign(A[S])}),{builder:this,transactions:w,buildProps:e,signers:A,instructionTypes:this.instructionTypes,execute:async b=>{var G;let{sequentially:S,onTxUpdate:K,skipTxCount:L=0,recentBlockHash:M,skipPreflight:v=!0}=b||{};if(w.map(async(q,_)=>{A[_].length&&q.sign(A[_]),M&&(q.message.recentBlockhash=M)}),Ne(w),(G=this.owner)!=null&&G.isKeyPair){if(S){let q=0,_=[];for(let J of w){if(++q,q<=L){console.log("skip tx: ",q),_.push("tx skipped");continue}let z=await this.connection.sendTransaction(J,{skipPreflight:v});await Rt(this.connection,z),_.push(z)}return{txIds:_,signedTxs:w}}return{txIds:await Promise.all(w.map(async q=>await this.connection.sendTransaction(q,{skipPreflight:v}))),signedTxs:w}}if(this.signAllTransactions){let q=await this.signAllTransactions(w.slice(L,w.length)),_=[...w.slice(0,L),...q];if(S){let J=0,z=[],se=async()=>{if(!_[J])return;if(J<L){z.push({txId:"",status:"success",signedTx:_[J]}),K==null||K([...z]),J++,se();return}let Te=await this.connection.sendTransaction(_[J],{skipPreflight:v});z.push({txId:Te,status:"sent",signedTx:_[J]}),K==null||K([...z]),J++;let nt=!1,Ee=null,ht=null,On=Le=>{Ee!==null&&clearInterval(Ee),ht!==null&&this.connection.removeSignatureListener(ht);let he=z.findIndex(Xo=>Xo.txId===Te);if(he>-1){if(z[he].status==="error"||z[he].status==="success")return;z[he].status=Le.err?"error":"success"}K==null||K([...z]),Le.err||se()};this.loopMultiTxStatus&&(Ee=setInterval(async()=>{var Le;if(nt){clearInterval(Ee);return}try{let he=await this.connection.getTransaction(Te,{commitment:"confirmed",maxSupportedTransactionVersion:0});he&&(nt=!0,clearInterval(Ee),On({err:((Le=he.meta)==null?void 0:Le.err)||null}),console.log("tx status from getTransaction:",Te))}catch(he){nt=!0,clearInterval(Ee),console.error("getTransaction timeout:",he,Te)}},Lt)),ht=this.connection.onSignature(Te,Le=>{if(nt){this.connection.removeSignatureListener(ht);return}nt=!0,On(Le)},"confirmed"),this.connection.getSignatureStatus(Te)};return se(),{txIds:[],signedTxs:_}}else{let J=[];for(let z=0;z<_.length;z+=1){let se=await this.connection.sendTransaction(_[z],{skipPreflight:v});J.push(se)}return{txIds:J,signedTxs:_}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:c||{}}}};var dn=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),ce=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=D(t)}createTxBuilder(e){return this.scope.checkOwner(),new Ot({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(dn(e))}logInfo(...e){this.logger.info(dn(e))}logAndCreateError(...e){let t=dn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as wm,SystemProgram as Tm}from"@solana/web3.js";import Bm from"bn.js";import{createCloseAccountInstruction as Cm,createInitializeAccountInstruction as Rm,createTransferInstruction as Lm,TOKEN_PROGRAM_ID as Om}from"@solana/spl-token";import{Keypair as sm,PublicKey as um}from"@solana/web3.js";import mm from"bn.js";import{TOKEN_PROGRAM_ID as fm}from"@solana/spl-token";import{PublicKey as vi}from"@solana/web3.js";import to,{isBN as no}from"bn.js";import{bits as Ii,BitStructure as pl,blob as Bi,Blob as fl,cstr as yl,f32 as bl,f32be as gl,f64 as Pl,f64be as Al,greedy as wl,Layout as Si,ns64 as kl,ns64be as Tl,nu64 as xi,nu64be as hl,offset as Ki,s16 as Il,s16be as Bl,s24 as Sl,s24be as xl,s32 as Ci,s32be as Kl,s40 as Cl,s40be as Rl,s48 as Ll,s48be as Ol,s8 as Nl,seq as Ri,struct as Ml,Structure as Li,u16 as Oi,u16be as Fl,u24 as vl,u24be as Vl,u32 as Ni,u32be as _l,u40 as El,u40be as Dl,u48 as Wl,u48be as ql,u8 as Mi,UInt as Fi,union as Ul,Union as Gl,unionLayoutDiscriminator as zl,utf8 as Yl}from"@solana/buffer-layout";var Nt=Si,jn=Li;var pn=Fi;var $n=Mi,Z=Oi;var dt=Ni;var Jn=xi;var ye=Ci;var eo=Ri;var E=Bi;var fn=Ii,yn=Ki;var Fe=class extends Nt{constructor(t,o,r){super(t,r);this.blob=E(t),this.signed=o}decode(t,o=0){let r=new to(this.blob.decode(t,o),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,o,r=0){return typeof t=="number"&&(t=new to(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),o,r)}},Mt=class extends Nt{constructor(t){super(8,t);this._lower=fn(dt(),!1),this._upper=fn(dt(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,o=0){let r=this._lower.decode(t,o),a=this._upper.decode(t,o+this._lower.span);return N(N({},r),a)}encode(t,o,r=0){return this._lower.encode(t,o,r)+this._upper.encode(t,o,r+this._lower.span)}};function d(i){return new pn(1,i)}function X(i){return new pn(4,i)}function n(i){return new Fe(8,!1,i)}function V(i){return new Fe(16,!1,i)}function oo(i){return new Fe(1,!0,i)}function Xe(i){return new Fe(8,!0,i)}function io(i){return new Fe(16,!0,i)}var ve=class extends Nt{constructor(t,o,r,a){super(t.span,a);this.layout=t,this.decoder=o,this.encoder=r}decode(t,o){return this.decoder(this.layout.decode(t,o))}encode(t,o,r){return this.layout.encode(this.encoder(t),o,r)}getSpan(t,o){return this.layout.getSpan(t,o)}};function u(i){return new ve(E(32),e=>new vi(e),e=>e.toBuffer(),i)}function de(i){return new ve($n(),Vi,_i,i)}function Vi(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function _i(i){return i?1:0}function ro(i,e){let t=dt("length"),o=p([t,I(i,yn(t,-t.span),"values")]);return new ve(o,({values:r})=>r,r=>({values:r}),e)}function Ei(i){let e=dt("length"),t=p([e,E(yn(e,-e.span),"data")]);return new ve(t,({data:o})=>o,o=>({data:o}),i)}function ee(i){return new ve(Ei(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),i)}var bn=class extends jn{decode(e,t){return super.decode(e,t)}};function p(i,e,t){return new bn(i,e,t)}function I(i,e,t){let o,r=typeof e=="number"?e:no(e)?e.toNumber():new Proxy(e,{get(a,s){if(!o){let c=Reflect.get(a,"count");o=no(c)?c.toNumber():c,Reflect.set(a,"count",o)}return Reflect.get(a,s)},set(a,s,c){return s==="count"&&(o=c),Reflect.set(a,s,c)}});return eo(i,r,t)}var Ft=p([u("mint"),u("owner"),n("amount"),X("delegateOption"),u("delegate"),d("state"),X("isNativeOption"),n("isNative"),n("delegatedAmount"),X("closeAuthorityOption"),u("closeAuthority")]);import{PublicKey as EP,SystemProgram as DP}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as qP}from"@solana/spl-token";import{PublicKey as rd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as sd}from"@solana/spl-token";import{PublicKey as O}from"@solana/web3.js";var so=new O("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),uo=new O("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),co=new O("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),gn=new O("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),md=new O("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Wi=new O("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),lo=new O("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),mo=new O("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),dd=new O("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),qi=new O("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),po=new O("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Ui=new O("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Gi=new O("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),fo=new O("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),pd=new O("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),zi=new O("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Yi=new O("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),Xi=new O("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Qi=new O("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Zi=new O("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),Pn=new O("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Hi=new O("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),fd=new O("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ji=new O("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),$i=new O("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Ji=new O("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),yd=new O("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),bd=new O("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),gd=new O("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Pd=new O("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Ad=new O("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX"),pt={IDO_PROGRAM_ID_V1:Yi,IDO_PROGRAM_ID_V2:Xi,IDO_PROGRAM_ID_V3:Qi,IDO_PROGRAM_ID_V4:Zi};var xe={OPEN_BOOK_PROGRAM:new O("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new O("Ray1111111111111111111111111111111111111111"),AMM_V4:new O("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new O("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new O("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new O("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new O("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new O("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new O("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new O("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new O("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new O("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:O.default,Router:new O("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new O("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new O("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new O("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new O("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new O("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new O("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new O("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new O("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new O("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new O("Ray1111111111111111111111111111111111111111")};import $P from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as bb,TOKEN_2022_PROGRAM_ID as gb,TOKEN_PROGRAM_ID as Pb}from"@solana/spl-token";import{PublicKey as wb}from"@solana/web3.js";import Tb from"bn.js";import Ib from"decimal.js";import{TOKEN_PROGRAM_ID as Nd}from"@solana/spl-token";import{PublicKey as Vd}from"@solana/web3.js";var er=p([X("mintAuthorityOption"),u("mintAuthority"),n("supply"),d("decimals"),d("isInitialized"),X("freezeAuthorityOption"),u("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as _y,TOKEN_2022_PROGRAM_ID as Ey,TOKEN_PROGRAM_ID as Dy}from"@solana/spl-token";import{Keypair as Uy,PublicKey as Gy,SystemProgram as Yy,TransactionInstruction as Xy}from"@solana/web3.js";import Zy from"bn.js";import W from"bn.js";var pe=new W(1).shln(64);var tr=new W(1).shln(128),Vt=new W(1).shln(64).subn(1),nr=new W(1).shln(128).subn(1);var Ze=new W("4295048016"),He=new W("79226673521066979257578248091"),or=new W("59543866431248"),ir=new W("184467440737095516"),rr=new W("15793534762490258745");var An=60,Zd=new W("18446743708227953217"),ar=[{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 ft=3,yo=100;var bo=10,go=100,_t=14;var $=new W(0),je=new W(1),Hd=new W(-1);var jd=new W("18446744073700000000");var sr=p([E(8),d("bump"),Z("index"),u("owner"),X("protocolFeeRate"),X("tradeFeeRate"),Z("tickSpacing"),X("fundFeeRate"),I(X(),1),u("fundOwner"),I(n(),3)]),ur=p([X("blockTimestamp"),Xe("tickCumulative"),I(n(),4)]),Po=p([E(8),de("initialized"),n("recentEpoch"),Z("observationIndex"),u("poolId"),I(ur,yo,"observations"),I(n(),4)]),cr=p([Z("filterPeriod"),Z("decayPeriod"),Z("reductionFactor"),X("dynamicFeeControl"),X("maxVolatilityAccumulator"),ye("tickSpacingIndexReference"),X("volatilityReference"),X("volatilityAccumulator"),n("lastUpdateTimestamp"),I(d(),46)]),lr=p([d("state"),n("openTime"),n("endTime"),n("lastUpdateTime"),V("emissionsPerSecondX64"),n("totalEmissioned"),n("claimed"),u("mint"),u("vault"),u("creator"),V("growthGlobalX64")]),wn=p([E(8),d("bump"),u("configId"),u("creator"),u("mintA"),u("mintB"),u("vaultA"),u("vaultB"),u("observationId"),d("mintDecimalsA"),d("mintDecimalsB"),Z("tickSpacing"),V("liquidity"),V("sqrtPriceX64"),ye("tickCurrent"),X(),V("feeGrowthGlobalX64A"),V("feeGrowthGlobalX64B"),n("protocolFeesTokenA"),n("protocolFeesTokenB"),I(V(),4),d("status"),d("feeOn"),E(6),I(lr,ft,"rewardInfos"),E(8*16,"tickArrayBitmap"),I(n(),4),n("fundFeesTokenA"),n("fundFeesTokenB"),n("startTime"),n("recentEpoch"),cr.replicate("dynamicFeeInfo"),I(n(),46)]),mr=p([V("growthInsideLastX64"),n("rewardAmountOwed")]),dr=p([E(8),d("bump"),u("nftMint"),u("poolId"),ye("tickLower"),ye("tickUpper"),V("liquidity"),V("feeGrowthInsideLastX64A"),V("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),I(mr,ft,"rewardInfos"),n("recentEpoch"),I(n(),7)]),tp=p([E(8),d("bump"),u("poolId"),ye("tickLower"),ye("tickUpper"),V("liquidity"),V("feeGrowthInsideLastX64A"),V("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),I(V(),ft,"rewardGrowthInside"),n("recentEpoch"),I(n(),7)]),pr=p([ye("tick"),io("liquidityNet"),V("liquidityGross"),V("feeGrowthOutsideX64A"),V("feeGrowthOutsideX64B"),I(V(),ft,"rewardGrowthsOutsideX64"),n("orderPhase"),n("ordersAmount"),n("partFilledOrdersRemaining"),V("unfilledRatioX64"),I(X(),3)]),Ao=p([E(8),u("poolId"),ye("startTickIndex"),I(pr,An,"ticks"),d("initializedTickCount"),n("recentEpoch"),I(d(),107)]),fr=p([E(8),d("bump"),I(u(),bo,"operationOwners"),I(u(),go,"whitelistMints")]),yr=p([E(8),u("poolId"),u("owner"),ye("tick"),de("zeroForOne"),n("orderPhase"),n("totalAmount"),n("filledAmount"),n("settleBase"),n("settleOutput"),n("openTime"),V("unfilledRatioX64"),I(n(),4)]),wo=p([E(8),u("poolId"),E(8*8*_t,"positiveTickArrayBitmap"),E(8*8*_t,"negativeTickArrayBitmap")]),np=p([E(8),Z("index"),Z("filterPeriod"),Z("decayPeriod"),Z("reductionFactor"),X("dynamicFeeControl"),X("maxVolatilityAccumulator"),I(n(),8)]),br=p([E(8),u("wallet"),d("nonceIndex"),n("orderNonce"),I(n(),4)]),op=p([n(),d("bump"),u("owner"),u("poolId"),u("positionId"),u("nftAccount"),I(n(),8)]),gr=p([E(8),d("bump"),u("lockOwner"),u("poolId"),u("positionId"),u("nftAccount"),u("lockNftMint"),n("recentEpoch"),I(n(),8)]);import ap from"bn.js";function ko(i){let e=Buffer.alloc(2);return e.writeUInt16LE(i),e}var gp=Buffer.from("amm_config","utf8"),To=Buffer.from("pool","utf8"),ho=Buffer.from("pool_vault","utf8"),Pp=Buffer.from("pool_reward_vault","utf8"),Ap=Buffer.from("position","utf8"),wp=Buffer.from("tick_array","utf8"),kp=Buffer.from("operation","utf8"),Tp=Buffer.from("pool_tick_array_bitmap_extension","utf8"),hp=Buffer.from("observation","utf8"),Ip=Buffer.from("support_mint","utf8"),Bp=Buffer.from("dynamic_fee_config","utf8");var Sp=Buffer.from("locked_position","utf8");import{sha256 as Nr}from"js-sha256";import Pr from"bn.js";import Rp from"decimal.js";var Op=new Pr(1).shln(256).subn(1);import Hp from"bn.js";import Ep from"bn.js";import Wp from"decimal.js";import rf from"bn.js";import sf from"decimal.js";import{PublicKey as Uf}from"@solana/web3.js";import zf from"bn.js";import{TOKEN_2022_PROGRAM_ID as Jf}from"@solana/spl-token";import oy from"decimal.js";import Of from"bn.js";import Af from"bn.js";import dy from"bn.js";function te(i){let e=`global:${i}`;return Buffer.from(Nr.digest(e)).slice(0,8)}Po.span;var ob=D("Raydium_Clmm"),ib={createPool:te("create_pool"),createCustomizablePool:te("create_customizable_pool"),openPositionV2:te("open_position_v2"),openPositionWithToken22Nft:te("open_position_with_token22_nft"),closePosition:te("close_position"),increaseLiquidityV2:te("increase_liquidity_v2"),decreaseLiquidityV2:te("decrease_liquidity_v2"),initializeReward:te("initialize_reward"),setRewardParams:te("set_reward_params"),updateRewardInfos:te("update_reward_infos"),collectRemainingRewards:te("collect_remaining_rewards"),swapV2:te("swap_v2"),openLimitOrder:te("open_limit_order"),increaseLimitOrder:te("increase_limit_order"),decreaseLimitOrder:te("decrease_limit_or