@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
1 lines • 81.6 kB
JavaScript
var Ao=Object.defineProperty,wo=Object.defineProperties;var ko=Object.getOwnPropertyDescriptors;var pt=Object.getOwnPropertySymbols;var ln=Object.prototype.hasOwnProperty,mn=Object.prototype.propertyIsEnumerable;var cn=(i,e,n)=>e in i?Ao(i,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):i[e]=n,O=(i,e)=>{for(var n in e||(e={}))ln.call(e,n)&&cn(i,n,e[n]);if(pt)for(var n of pt(e))mn.call(e,n)&&cn(i,n,e[n]);return i},D=(i,e)=>wo(i,ko(e));var ye=(i,e)=>{var n={};for(var o in i)ln.call(i,o)&&e.indexOf(o)<0&&(n[o]=i[o]);if(i!=null&&pt)for(var o of pt(i))e.indexOf(o)<0&&mn.call(i,o)&&(n[o]=i[o]);return n};import{PublicKey as Io}from"@solana/web3.js";import{get as dn,set as To}from"lodash";var Ot=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let n=e.map(o=>typeof o=="object"?JSON.stringify(o):o).join(", ");throw new Error(n)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},pn={},ho={};function _(i){let e=dn(pn,i);if(!e){let n=dn(ho,i);e=new Ot({name:i,logLevel:n}),To(pn,i,e)}return e}import{MINT_SIZE as La,TOKEN_PROGRAM_ID as Oa,getTransferFeeConfig as Na,unpackMint as Ma}from"@solana/spl-token";var Nt=_("Raydium_accountInfo_util");async function be(i,e,n){let{batchRequest:o,commitment:a="confirmed",chunkCount:l=100}=O({batchRequest:!1},n),m=Mt(e,l),s=new Array(m.length).fill([]);if(o){let y=m.map(g=>{let k=i._buildArgs([g.map(w=>w.toBase58())],a,"base64");return{methodName:"getMultipleAccounts",args:k}}),P=Mt(y,10);s=(await(await Promise.all(P.map(async g=>await i._rpcBatchRequest(g)))).flat()).map(g=>(g.error&&Nt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${g.error.message}`),g.result.value.map(k=>{if(k){let{data:w,executable:C,lamports:T,owner:h,rentEpoch:S}=k;return w.length!==2&&w[1]!=="base64"&&Nt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(w[0],"base64"),executable:C,lamports:T,owner:new Io(h),rentEpoch:S}}return null})))}else try{s=await Promise.all(m.map(y=>i.getMultipleAccountsInfo(y,a)))}catch(y){y instanceof Error&&Nt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${y.message}`)}return s.flat()}import Fe from"bn.js";import kC from"decimal.js";import Oo from"big.js";import ja from"bn.js";import Bo from"toformat";var So=Bo,je=So;import yt from"big.js";import Ko from"bn.js";import Co from"decimal.js-light";import $e from"bn.js";var fn=9007199254740991;function re(i){let e=_("Raydium_parseBigNumberish");if(i instanceof $e)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new $e(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=fn||i<=-fn)&&e.logWithError(`BigNumberish number overflow: ${i}`),new $e(String(i))):typeof i=="bigint"?new $e(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new $e(0))}var ft=_("module/fraction"),Ft=je(yt),Je=je(Co),Ro={[0]:Je.ROUND_DOWN,[1]:Je.ROUND_HALF_UP,[2]:Je.ROUND_UP},Lo={[0]:yt.roundDown,[1]:yt.roundHalfUp,[2]:yt.roundUp},G=class{constructor(e,n=new Ko(1)){this.numerator=re(e),this.denominator=re(n)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new G(this.denominator,this.numerator)}add(e){let n=e instanceof G?e:new G(re(e));return this.denominator.eq(n.denominator)?new G(this.numerator.add(n.numerator),this.denominator):new G(this.numerator.mul(n.denominator).add(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}sub(e){let n=e instanceof G?e:new G(re(e));return this.denominator.eq(n.denominator)?new G(this.numerator.sub(n.numerator),this.denominator):new G(this.numerator.mul(n.denominator).sub(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}mul(e){let n=e instanceof G?e:new G(re(e));return new G(this.numerator.mul(n.numerator),this.denominator.mul(n.denominator))}div(e){let n=e instanceof G?e:new G(re(e));return new G(this.numerator.mul(n.denominator),this.denominator.mul(n.numerator))}toSignificant(e,n={groupSeparator:""},o=1){Number.isInteger(e)||ft.logWithError(`${e} is not an integer.`),e<=0&&ft.logWithError(`${e} is not positive.`),Je.set({precision:e+1,rounding:Ro[o]});let a=new Je(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return a.toFormat(a.decimalPlaces(),n)}toFixed(e,n={groupSeparator:""},o=1){return Number.isInteger(e)||ft.logWithError(`${e} is not an integer.`),e<0&&ft.logWithError(`${e} is negative.`),Ft.DP=e,Ft.RM=Lo[o]||1,new Ft(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,n)}isZero(){return this.numerator.isZero()}};var as=_("Raydium_amount"),ss=je(Oo);import{PublicKey as Mo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as yn}from"@solana/spl-token";var bt={chainId:101,address:Mo.default.toBase58(),programId:yn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ge={chainId:101,address:"So11111111111111111111111111111111111111112",programId:yn.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 X,SystemProgram as bn,SYSVAR_RENT_PUBKEY as Fo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as vo}from"@solana/spl-token";function Ve({pubkey:i,isSigner:e=!1,isWritable:n=!0}){return{pubkey:i,isWritable:n,isSigner:e}}var Vo=[Ve({pubkey:vo,isWritable:!1}),Ve({pubkey:bn.programId,isWritable:!1}),Ve({pubkey:Fo,isWritable:!1})];function gn({publicKey:i,transformSol:e}){let n=Pn(i.toString());if(n instanceof X)return e&&n.equals(Be)?Te:n;if(e&&n.toString()===Be.toBase58())return Te;if(typeof n=="string"){if(n===X.default.toBase58())return X.default;try{return new X(n)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Pn(i){try{return new X(i)}catch{return i}}var vt=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),et=new X("SysvarRent111111111111111111111111111111111"),ys=new X("SysvarC1ock11111111111111111111111111111111"),gt=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),_o=new X("Sysvar1nstructions1111111111111111111111111"),Eo=bn.programId,bs=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),gs=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ps=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),As=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),ws=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),ks=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ts=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),hs=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Is=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Bs=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Ss=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Te=new X("So11111111111111111111111111111111111111112"),Be=X.default;var _t=class{constructor({mint:e,decimals:n,symbol:o,name:a,skipMint:l=!1,isToken2022:m=!1}){if(e===Be.toBase58()||e instanceof Vt&&Be.equals(e)){this.decimals=ge.decimals,this.symbol=ge.symbol,this.name=ge.name,this.mint=new Vt(ge.address),this.isToken2022=!1;return}this.decimals=n,this.symbol=o||e.toString().substring(0,6),this.name=a||e.toString().substring(0,6),this.mint=l?Vt.default:gn({publicKey:e}),this.isToken2022=m}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ne=_t;ne.WSOL=new _t(D(O({},ge),{mint:ge.address}));var Et=class{constructor({decimals:e,symbol:n="UNKNOWN",name:o="UNKNOWN"}){this.decimals=e,this.symbol=n,this.name=o}equals(e){return this===e}},Pt=Et;Pt.SOL=new Et(bt);import Do from"bn.js";var _s=new G(new Do(100));var Gs=_("Raydium_price");import{merge as hK}from"lodash";import Js from"axios";var An={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",MONITOR_BASE_HOST:"https://monitor.raydium.io",SERVICE_1_BASE_HOST:"https://service-v1.raydium.io",TEMP_HOST:"https://temp-api-v1.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",CPMM_CONFIG:"/main/cpmm-config",CLMM_DYNAMIC_CONFIG:"/main/clmm-dynamic-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://lite-api.jup.ag/tokens/v2/tag?query=verified",POOL_LIST:"/pools/info/list-v2",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/list-v2",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",OWNER_LOCK_POSITION:"/position/clmm-lock/{owner}",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee",CPMM_LOCK:"https://dynamic-ipfs.raydium.io/lock/cpmm/position",LAUNCH_AUTH_HOST:"https://launch-auth-v1.raydium.io",LAUNCH_COMMENT_HOST:"hhttps://launch-forum-v1.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1.raydium.io"},Wo=D(O({},An),{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 Tu=_("Raydium_Api");import{PublicKey as Wl,SystemProgram as ql}from"@solana/web3.js";import{AccountLayout as Yl,createAssociatedTokenAccountIdempotentInstruction as Ql,TOKEN_PROGRAM_ID as Zl,TOKEN_2022_PROGRAM_ID as Hl}from"@solana/spl-token";import{PublicKey as qe,sendAndConfirmTransaction as zt,SystemProgram as Yo,Transaction as ot,TransactionMessage as it,VersionedTransaction as rt}from"@solana/web3.js";import Qo from"axios";import{PublicKey as Dt,AddressLookupTableAccount as De}from"@solana/web3.js";async function Wt({connection:i,address:e,cluster:n="mainnet"}){let o=await be(i,[...new Set(e.map(l=>l.toString()))].map(l=>new Dt(l))),a={};for(let l=0;l<e.length;l++){let m=o[l],s=e[l];if(!m)continue;let y=new De({key:s,state:De.deserialize(m.data)});a[s.toString()]=y,n==="devnet"?Ee[s.toString()]=y:_e[s.toString()]=y}return a}var _e={},qt=async i=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(_e[e])return _e;let n=new Dt(e),o=await i.getAccountInfo(n);return o&&(_e[e]=new De({key:n,state:De.deserialize(o.data)})),_e},Ee={},Ut=async i=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Ee[e])return Ee;let n=new Dt(e),o=await i.getAccountInfo(n);return o&&(Ee[e]=new De({key:n,state:De.deserialize(o.data)})),Ee};var $={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{ComputeBudgetProgram as wn,Keypair as Tn,PublicKey as qo,Transaction as hn,TransactionMessage as Uo,VersionedTransaction as In}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Go}from"@solana/spl-token";var kn=_("Raydium_txUtil"),Bn=1644;function At(i){let e=[],n=[];return i.microLamports&&(e.push(wn.setComputeUnitPrice({microLamports:i.microLamports})),n.push($.SetComputeUnitPrice)),i.units&&(e.push(wn.setComputeUnitLimit({units:i.units})),n.push($.SetComputeUnitLimit)),{instructions:e,instructionTypes:n}}async function We(i,e){var o,a;let n=e!=null?e:"confirmed";return(a=await((o=i.getLatestBlockhash)==null?void 0:o.call(i,{commitment:n})))==null?void 0:a.blockhash}async function wt(i,e){return i.getSignatureStatuses([e]),new Promise((n,o)=>{let a=setTimeout(o,6e4);i.onSignature(e,l=>{if(clearTimeout(a),!l.err){n("");return}o(Object.assign(l.err,{txId:e}))},"confirmed")})}function Gt(i,e){i.length<1&&kn.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&kn.logWithError(`no signers provided:, ${e.toString()}`);let n=new hn;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=e[0],n.add(...i);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<Bn}catch{return!1}}function ce(i,e){let[n,o]=qo.findProgramAddressSync(i,e);return{publicKey:n,nonce:o}}function tt({instructions:i,payer:e,signers:n}){return Gt(i,[e,...n])}function nt({instructions:i,payer:e,lookupTableAddressAccount:n,recentBlockhash:o=Tn.generate().publicKey.toString()}){let l=new Uo({payerKey:e,recentBlockhash:o,instructions:i}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new In(l).serialize()).toString("base64").length<Bn}catch{return!1}}var zo=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i),Xo=i=>{let e=i.serialize({requireAllSignatures:!1,verifySignatures:!1});i instanceof In&&(e=zo(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Se(i){let e=[];return i.forEach(n=>{n instanceof hn&&(n.recentBlockhash||(n.recentBlockhash=Go.toBase58()),n.feePayer||(n.feePayer=Tn.generate().publicKey)),e.push(Xo(n))}),console.log("simulate tx string:",e),e}var kt=2e3,Tt=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment,this.loopMultiTxStatus=!!e.loopMultiTxStatus}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var o;let e=(await Qo.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:n}=(o=e==null?void 0:e[15])!=null?o:{};if(!!n)return{units:6e5,microLamports:Math.min(Math.ceil(n*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:n,instructionTypes:o}=At(e);return this.instructions.unshift(...n),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(e){var n;return e?(this.endInstructions.push(Yo.transfer({fromPubkey:(n=e.feePayer)!=null?n:this.feePayer,toPubkey:new qe(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push($.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:n}){try{let o=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(o))return;n&&this.instructions.unshift(...n)}catch{n&&this.instructions.unshift(...n)}}addInstruction({instructions:e=[],endInstructions:n=[],signers:o=[],instructionTypes:a=[],endInstructionTypes:l=[],lookupTableAddress:m=[]}){return this.instructions.push(...e),this.endInstructions.push(...n),this.signers.push(...o),this.instructionTypes.push(...a),this.endInstructionTypes.push(...l),this.lookupTableAddress.push(...m.filter(s=>s!==qe.default.toString())),this}async versionBuild({txVersion:e,extInfo:n,lookupTableAddress:o}){return e===0?await this.buildV0(D(O({},n||{}),{lookupTableAddress:o})):this.build(n)}build(e){var o;let n=new ot;return this.allInstructions.length&&n.add(...this.allInstructions),n.feePayer=this.feePayer,((o=this.owner)==null?void 0:o.signer)&&!this.signers.some(a=>a.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:n,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async a=>{var d;let{recentBlockHash:l,skipPreflight:m=!0,sendAndConfirm:s,notSendToRpc:y}=a||{},P=l!=null?l:await We(this.connection,this.blockhashCommitment);if(n.recentBlockhash=P,this.signers.length&&n.sign(...this.signers),Se([n]),(d=this.owner)!=null&&d.isKeyPair)return{txId:s?await zt(this.connection,n,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:m}):await this.connection.sendRawTransaction(n.serialize(),{skipPreflight:m}),signedTx:n};if(this.signAllTransactions){let g=await this.signAllTransactions([n]);if(this.signers.length)for(let k of g)try{k.sign(...this.signers)}catch{}return{txId:y?"":await this.connection.sendRawTransaction(g[0].serialize(),{skipPreflight:m}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var P;let{extraPreBuildData:n=[],extInfo:o}=e,{transaction:a}=this.build(o),l=n.filter(d=>d.transaction.instructions.length>0),m=[a,...l.map(d=>d.transaction)],s=[this.signers,...l.map(d=>d.signers)],y=[...this.instructionTypes,...l.map(d=>d.instructionTypes).flat()];return(P=this.owner)!=null&&P.signer&&s.forEach(d=>{d.some(g=>g.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:m,signers:s,instructionTypes:y,execute:async d=>{var S;let{sequentially:g,onTxUpdate:k,skipTxCount:w=0,recentBlockHash:C,skipPreflight:T=!0}=d||{},h=C!=null?C:await We(this.connection,this.blockhashCommitment);if((S=this.owner)!=null&&S.isKeyPair){if(g){let K=[],F=0;for(let v of m){if(++F,F<=w)continue;let A=await zt(this.connection,v,this.signers.find(I=>I.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:T});K.push(A)}return{txIds:K,signedTxs:m}}return{txIds:await await Promise.all(m.map(async K=>(K.recentBlockhash=h,await this.connection.sendRawTransaction(K.serialize(),{skipPreflight:T})))),signedTxs:m}}if(this.signAllTransactions){let K=m.map((v,A)=>(v.recentBlockhash=h,s[A].length&&v.sign(...s[A]),v));Se(K);let F=await this.signAllTransactions(K);if(g){let v=0,A=[],I=async()=>{if(!F[v])return;let B=await this.connection.sendRawTransaction(F[v].serialize(),{skipPreflight:T});A.push({txId:B,status:"sent",signedTx:F[v]}),k==null||k([...A]),v++;let R=!1,L=null,V=null,ue=U=>{L!==null&&clearInterval(L),V!==null&&this.connection.removeSignatureListener(V);let W=A.findIndex(te=>te.txId===B);if(W>-1){if(A[W].status==="error"||A[W].status==="success")return;A[W].status=U.err?"error":"success"}k==null||k([...A]),U.err||I()};this.loopMultiTxStatus&&(L=setInterval(async()=>{var U;if(R){clearInterval(L);return}try{let W=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:0});W&&(R=!0,clearInterval(L),ue({err:((U=W.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",B))}catch(W){R=!0,clearInterval(L),console.error("getTransaction timeout:",W,B)}},kt)),V=this.connection.onSignature(B,U=>{if(R){this.connection.removeSignatureListener(V);return}R=!0,ue(U)},"confirmed"),this.connection.getSignatureStatus(B)};return await I(),{txIds:A.map(B=>B.txId),signedTxs:F}}else{let v=[];for(let A=0;A<F.length;A+=1){let I=await this.connection.sendRawTransaction(F[A].serialize(),{skipPreflight:T});v.push(I)}return{txIds:v,signedTxs:F}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:n,extInfo:o}){return n===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:o||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:o})}async buildV0(e){var T;let C=e||{},{lookupTableCache:n={},lookupTableAddress:o=[],forerunCreate:a,recentBlockhash:l}=C,m=ye(C,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),s=O(O({},this.cluster==="devnet"?await Ut(this.connection):await qt(this.connection)),n),y=Array.from(new Set([...o,...this.lookupTableAddress])),P=[];for(let h of y)s[h]===void 0&&P.push(new qe(h));let d=await Wt({connection:this.connection,address:P});for(let[h,S]of Object.entries(d))s[h]=S;let g=a?qe.default.toBase58():l!=null?l:await We(this.connection,this.blockhashCommitment),k=new it({payerKey:this.feePayer,recentBlockhash:g,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s));((T=this.owner)==null?void 0:T.signer)&&!this.signers.some(h=>h.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let w=new rt(k);return w.sign(this.signers),{builder:this,transaction:w,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async h=>{var v;let{skipPreflight:S=!0,sendAndConfirm:K,notSendToRpc:F}=h||{};if(Se([w]),(v=this.owner)!=null&&v.isKeyPair){let A=await this.connection.sendTransaction(w,{skipPreflight:S});return K&&await wt(this.connection,A),{txId:A,signedTx:w}}if(this.signAllTransactions){let A=await this.signAllTransactions([w]);if(this.signers.length)for(let I of A)try{I.sign(this.signers)}catch{}return{txId:F?"":await this.connection.sendTransaction(A[0],{skipPreflight:S}),signedTx:A[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:m||{}}}async buildV0MultiTx(e){var P;let{extraPreBuildData:n=[],buildProps:o}=e,{transaction:a}=await this.buildV0(o),l=n.filter(d=>d.builder.instructions.length>0),m=[a,...l.map(d=>d.transaction)],s=[this.signers,...l.map(d=>d.signers)],y=[...this.instructionTypes,...l.map(d=>d.instructionTypes).flat()];return(P=this.owner)!=null&&P.signer&&s.forEach(d=>{d.some(g=>g.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),m.forEach(async(d,g)=>{d.sign(s[g])}),{builder:this,transactions:m,signers:s,instructionTypes:y,buildProps:o,execute:async d=>{var T;let{sequentially:g,onTxUpdate:k,recentBlockHash:w,skipPreflight:C=!0}=d||{};if(w&&m.forEach(h=>h.message.recentBlockhash=w),Se(m),(T=this.owner)!=null&&T.isKeyPair){if(g){let h=[];for(let S of m){let K=await this.connection.sendTransaction(S,{skipPreflight:C});await wt(this.connection,K),h.push(K)}return{txIds:h,signedTxs:m}}return{txIds:await Promise.all(m.map(async h=>await this.connection.sendTransaction(h,{skipPreflight:C}))),signedTxs:m}}if(this.signAllTransactions){let h=await this.signAllTransactions(m);if(g){let S=0,K=[],F=async()=>{if(!h[S])return;let v=await this.connection.sendTransaction(h[S],{skipPreflight:C});K.push({txId:v,status:"sent",signedTx:h[S]}),k==null||k([...K]),S++;let A=!1,I=null,B=null,R=L=>{I!==null&&clearInterval(I),B!==null&&this.connection.removeSignatureListener(B);let V=K.findIndex(ue=>ue.txId===v);if(V>-1){if(K[V].status==="error"||K[V].status==="success")return;K[V].status=L.err?"error":"success"}k==null||k([...K]),L.err||F()};this.loopMultiTxStatus&&(I=setInterval(async()=>{var L;if(A){clearInterval(I);return}try{let V=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(A=!0,clearInterval(I),R({err:((L=V.meta)==null?void 0:L.err)||null}),console.log("tx status from getTransaction:",v))}catch(V){A=!0,clearInterval(I),console.error("getTransaction timeout:",V,v)}},kt)),B=this.connection.onSignature(v,L=>{if(A){this.connection.removeSignatureListener(B);return}A=!0,R(L)},"confirmed"),this.connection.getSignatureStatus(v)};return F(),{txIds:[],signedTxs:h}}else{let S=[];for(let K=0;K<h.length;K+=1){let F=await this.connection.sendTransaction(h[K],{skipPreflight:C});S.push(F)}return{txIds:S,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var k;let g=e||{},{splitIns:n=[],computeBudgetConfig:o}=g,a=ye(g,["splitIns","computeBudgetConfig"]),l=o?At(o):{instructions:[],instructionTypes:[]},m=this.signers.reduce((w,C)=>D(O({},w),{[C.publicKey.toBase58()]:C}),{}),s=[],y=[],P=[],d=0;if(this.allInstructions.forEach(w=>{let C=[...P,w],T=o?[...l.instructions,...C]:C,S=[...new Set(C.map(K=>K.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat()).values()].map(K=>new qe(K));if(w!==n[d]&&P.length<12&&(tt({instructions:T,payer:this.feePayer,signers:S})||tt({instructions:C,payer:this.feePayer,signers:S})))P.push(w);else{if(P.length===0)throw Error("item ins too big");d+=w===n[d]?1:0,tt({instructions:o?[...l.instructions,...P]:[...P],payer:this.feePayer,signers:S})?s.push(new ot().add(...l.instructions,...P)):s.push(new ot().add(...P)),y.push(Array.from(new Set(P.map(K=>K.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat())).map(K=>m[K]).filter(K=>K!==void 0)),P=[w]}}),P.length>0){let C=[...new Set(P.map(T=>T.keys.filter(h=>h.isSigner).map(h=>h.pubkey.toString())).flat()).values()].map(T=>m[T]).filter(T=>T!==void 0);tt({instructions:o?[...l.instructions,...P]:[...P],payer:this.feePayer,signers:C.map(T=>T.publicKey)})?s.push(new ot().add(...l.instructions,...P)):s.push(new ot().add(...P)),y.push(C)}return s.forEach(w=>w.feePayer=this.feePayer),(k=this.owner)!=null&&k.signer&&y.forEach(w=>{w.some(C=>C.publicKey.equals(this.owner.publicKey))||w.push(this.owner.signer)}),{builder:this,transactions:s,signers:y,instructionTypes:this.instructionTypes,execute:async w=>{var v;let{sequentially:C,onTxUpdate:T,skipTxCount:h=0,recentBlockHash:S,skipPreflight:K=!0}=w||{},F=S!=null?S:await We(this.connection,this.blockhashCommitment);if(s.forEach(async(A,I)=>{A.recentBlockhash=F,y[I].length&&A.sign(...y[I])}),Se(s),(v=this.owner)!=null&&v.isKeyPair){if(C){let A=0,I=[];for(let B of s){if(++A,A<=h){I.push("tx skipped");continue}let R=await zt(this.connection,B,this.signers.find(L=>L.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:K});I.push(R)}return{txIds:I,signedTxs:s}}return{txIds:await Promise.all(s.map(async A=>await this.connection.sendRawTransaction(A.serialize(),{skipPreflight:K}))),signedTxs:s}}if(this.signAllTransactions){let A=await this.signAllTransactions(s.slice(h,s.length)),I=[...s.slice(0,h),...A];if(C){let B=0,R=[],L=async()=>{if(!I[B])return;B<h&&(R.push({txId:"",status:"success",signedTx:I[B]}),T==null||T([...R]),B++,L());let V=await this.connection.sendRawTransaction(I[B].serialize(),{skipPreflight:K});R.push({txId:V,status:"sent",signedTx:I[B]}),T==null||T([...R]),B++;let ue=!1,U=null,W=null,te=z=>{U!==null&&clearInterval(U),W!==null&&this.connection.removeSignatureListener(W);let ie=R.findIndex(we=>we.txId===V);if(ie>-1){if(R[ie].status==="error"||R[ie].status==="success")return;R[ie].status=z.err?"error":"success"}T==null||T([...R]),z.err||L()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var z;if(ue){clearInterval(U);return}try{let ie=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});ie&&(ue=!0,clearInterval(U),te({err:((z=ie.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",V))}catch(ie){ue=!0,clearInterval(U),console.error("getTransaction timeout:",ie,V)}},kt)),W=this.connection.onSignature(V,z=>{if(ue){this.connection.removeSignatureListener(W);return}ue=!0,te(z)},"confirmed"),this.connection.getSignatureStatus(V)};return await L(),{txIds:R.map(V=>V.txId),signedTxs:I}}else{let B=[];for(let R=0;R<I.length;R+=1){let L=await this.connection.sendRawTransaction(I[R].serialize(),{skipPreflight:K});B.push(L)}return{txIds:B,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}async sizeCheckBuildV0(e){var v;let F=e||{},{computeBudgetConfig:n,splitIns:o=[],lookupTableCache:a={},lookupTableAddress:l=[],insCountLimit:m=12}=F,s=ye(F,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),y=O(O({},this.cluster==="devnet"?await Ut(this.connection):await qt(this.connection)),a),P=Array.from(new Set([...this.lookupTableAddress,...l])),d=[];for(let A of P)y[A]===void 0&&d.push(new qe(A));let g=await Wt({connection:this.connection,address:d});for(let[A,I]of Object.entries(g))y[A]=I;let k=n?At(n):{instructions:[],instructionTypes:[]},w=await We(this.connection,this.blockhashCommitment),C=this.signers.reduce((A,I)=>D(O({},A),{[I.publicKey.toBase58()]:I}),{}),T=[],h=[],S=[],K=0;if(this.allInstructions.forEach(A=>{let I=[...S,A],B=n?[...k.instructions,...I]:I;if(A!==o[K]&&S.length<m&&(nt({instructions:B,payer:this.feePayer,lookupTableAddressAccount:y})||nt({instructions:I,payer:this.feePayer,lookupTableAddressAccount:y})))S.push(A);else{if(S.length===0)throw Error("item ins too big");K+=A===o[K]?1:0;let R={};for(let L of[...new Set(P)])y[L]!==void 0&&(R[L]=y[L]);if(n&&nt({instructions:[...k.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:y,recentBlockhash:w})){let L=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...k.instructions,...S]}).compileToV0Message(Object.values(y));T.push(new rt(L))}else{let L=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...S]}).compileToV0Message(Object.values(y));T.push(new rt(L))}h.push(Array.from(new Set(S.map(L=>L.keys.filter(V=>V.isSigner).map(V=>V.pubkey.toString())).flat())).map(L=>C[L]).filter(L=>L!==void 0)),S=[A]}}),S.length>0){let I=[...new Set(S.map(B=>B.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat()).values()].map(B=>C[B]).filter(B=>B!==void 0);if(n&&nt({instructions:[...k.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:y,recentBlockhash:w})){let B=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...k.instructions,...S]}).compileToV0Message(Object.values(y));T.push(new rt(B))}else{let B=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...S]}).compileToV0Message(Object.values(y));T.push(new rt(B))}h.push(I)}return(v=this.owner)!=null&&v.signer&&h.forEach(A=>{A.some(I=>I.publicKey.equals(this.owner.publicKey))||A.push(this.owner.signer)}),T.forEach((A,I)=>{A.sign(h[I])}),{builder:this,transactions:T,buildProps:e,signers:h,instructionTypes:this.instructionTypes,execute:async A=>{var ue;let{sequentially:I,onTxUpdate:B,skipTxCount:R=0,recentBlockHash:L,skipPreflight:V=!0}=A||{};if(T.map(async(U,W)=>{h[W].length&&U.sign(h[W]),L&&(U.message.recentBlockhash=L)}),Se(T),(ue=this.owner)!=null&&ue.isKeyPair){if(I){let U=0,W=[];for(let te of T){if(++U,U<=R){console.log("skip tx: ",U),W.push("tx skipped");continue}let z=await this.connection.sendTransaction(te,{skipPreflight:V});await wt(this.connection,z),W.push(z)}return{txIds:W,signedTxs:T}}return{txIds:await Promise.all(T.map(async U=>await this.connection.sendTransaction(U,{skipPreflight:V}))),signedTxs:T}}if(this.signAllTransactions){let U=await this.signAllTransactions(T.slice(R,T.length)),W=[...T.slice(0,R),...U];if(I){let te=0,z=[],ie=async()=>{if(!W[te])return;if(te<R){z.push({txId:"",status:"success",signedTx:W[te]}),B==null||B([...z]),te++,ie();return}let we=await this.connection.sendTransaction(W[te],{skipPreflight:V});z.push({txId:we,status:"sent",signedTx:W[te]}),B==null||B([...z]),te++;let Ze=!1,ve=null,dt=null,un=Ie=>{ve!==null&&clearInterval(ve),dt!==null&&this.connection.removeSignatureListener(dt);let ke=z.findIndex(Po=>Po.txId===we);if(ke>-1){if(z[ke].status==="error"||z[ke].status==="success")return;z[ke].status=Ie.err?"error":"success"}B==null||B([...z]),Ie.err||ie()};this.loopMultiTxStatus&&(ve=setInterval(async()=>{var Ie;if(Ze){clearInterval(ve);return}try{let ke=await this.connection.getTransaction(we,{commitment:"confirmed",maxSupportedTransactionVersion:0});ke&&(Ze=!0,clearInterval(ve),un({err:((Ie=ke.meta)==null?void 0:Ie.err)||null}),console.log("tx status from getTransaction:",we))}catch(ke){Ze=!0,clearInterval(ve),console.error("getTransaction timeout:",ke,we)}},kt)),dt=this.connection.onSignature(we,Ie=>{if(Ze){this.connection.removeSignatureListener(dt);return}Ze=!0,un(Ie)},"confirmed"),this.connection.getSignatureStatus(we)};return ie(),{txIds:[],signedTxs:W}}else{let te=[];for(let z=0;z<W.length;z+=1){let ie=await this.connection.sendTransaction(W[z],{skipPreflight:V});te.push(ie)}return{txIds:te,signedTxs:W}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}};var Xt=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),ae=class{constructor({scope:e,moduleName:n}){this.disabled=!1;this.scope=e,this.logger=_(n)}createTxBuilder(e){return this.scope.checkOwner(),new Tt({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(Xt(e))}logInfo(...e){this.logger.info(Xt(e))}logAndCreateError(...e){let n=Xt(e);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Pl,SystemProgram as wl}from"@solana/web3.js";import hl from"bn.js";import{createCloseAccountInstruction as xl,createInitializeAccountInstruction as Kl,createTransferInstruction as Cl,TOKEN_PROGRAM_ID as Rl}from"@solana/spl-token";import{Keypair as rl,PublicKey as al}from"@solana/web3.js";import cl from"bn.js";import{TOKEN_PROGRAM_ID as dl}from"@solana/spl-token";import{PublicKey as ai}from"@solana/web3.js";import Rn,{isBN as Ln}from"bn.js";import{bits as Zo,BitStructure as lc,blob as Ho,Blob as mc,cstr as dc,f32 as pc,f32be as fc,f64 as yc,f64be as bc,greedy as gc,Layout as jo,ns64 as Pc,ns64be as Ac,nu64 as wc,nu64be as kc,offset as $o,s16 as Tc,s16be as hc,s24 as Ic,s24be as Bc,s32 as Jo,s32be as Sc,s40 as xc,s40be as Kc,s48 as Cc,s48be as Rc,s8 as Lc,seq as ei,struct as Oc,Structure as ti,u16 as ni,u16be as Nc,u24 as Mc,u24be as Fc,u32 as oi,u32be as vc,u40 as Vc,u40be as _c,u48 as Ec,u48be as Dc,u8 as ii,UInt as ri,union as Wc,Union as qc,unionLayoutDiscriminator as Uc,utf8 as Gc}from"@solana/buffer-layout";var ht=jo,Sn=ti;var Yt=ri;var xn=ii,Z=ni;var It=oi;var pe=Jo;var Kn=ei;var M=Ho;var Qt=Zo,Cn=$o;var Ke=class extends ht{constructor(n,o,a){super(n,a);this.blob=M(n),this.signed=o}decode(n,o=0){let a=new Rn(this.blob.decode(n,o),10,"le");return this.signed?a.fromTwos(this.span*8).clone():a}encode(n,o,a=0){return typeof n=="number"&&(n=new Rn(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),o,a)}},Bt=class extends ht{constructor(n){super(8,n);this._lower=Qt(It(),!1),this._upper=Qt(It(),!1)}addBoolean(n){this._lower.fields.length<32?this._lower.addBoolean(n):this._upper.addBoolean(n)}decode(n,o=0){let a=this._lower.decode(n,o),l=this._upper.decode(n,o+this._lower.span);return O(O({},a),l)}encode(n,o,a=0){return this._lower.encode(n,o,a)+this._upper.encode(n,o,a+this._lower.span)}};function p(i){return new Yt(1,i)}function Y(i){return new Yt(4,i)}function t(i){return new Ke(8,!1,i)}function N(i){return new Ke(16,!1,i)}function On(i){return new Ke(1,!0,i)}function Ue(i){return new Ke(8,!0,i)}function Nn(i){return new Ke(16,!0,i)}var at=class extends ht{constructor(n,o,a,l){super(n.span,l);this.layout=n,this.decoder=o,this.encoder=a}decode(n,o){return this.decoder(this.layout.decode(n,o))}encode(n,o,a){return this.layout.encode(this.encoder(n),o,a)}getSpan(n,o){return this.layout.getSpan(n,o)}};function r(i){return new at(M(32),e=>new ai(e),e=>e.toBuffer(),i)}function le(i){return new at(xn(),si,ui,i)}function si(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function ui(i){return i?1:0}function Mn(i,e){let n=It("length"),o=f([n,b(i,Cn(n,-n.span),"values")]);return new at(o,({values:a})=>a,a=>({values:a}),e)}var Zt=class extends Sn{decode(e,n){return super.decode(e,n)}};function f(i,e,n){return new Zt(i,e,n)}function b(i,e,n){let o,a=typeof e=="number"?e:Ln(e)?e.toNumber():new Proxy(e,{get(l,m){if(!o){let s=Reflect.get(l,"count");o=Ln(s)?s.toNumber():s,Reflect.set(l,"count",o)}return Reflect.get(l,m)},set(l,m,s){return m==="count"&&(o=s),Reflect.set(l,m,s)}});return Kn(i,a,n)}var St=f([r("mint"),r("owner"),t("amount"),Y("delegateOption"),r("delegate"),p("state"),Y("isNativeOption"),t("isNative"),t("delegatedAmount"),Y("closeAuthorityOption"),r("closeAuthority")]);import{PublicKey as Bg,SystemProgram as Sg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Kg}from"@solana/spl-token";import{PublicKey as om}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as rm}from"@solana/spl-token";import{PublicKey as x}from"@solana/web3.js";var vn=new x("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Vn=new x("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),_n=new x("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Ht=new x("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),cm=new x("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),li=new x("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),En=new x("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Dn=new x("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),lm=new x("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),mi=new x("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Wn=new x("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),di=new x("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),pi=new x("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),qn=new x("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),mm=new x("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),fi=new x("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),jt=new x("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),yi=new x("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),dm=new x("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),bi=new x("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),gi=new x("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Pi=new x("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),pm=new x("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),fm=new x("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),ym=new x("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),bm=new x("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),gm=new x("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var he={OPEN_BOOK_PROGRAM:new x("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new x("Ray1111111111111111111111111111111111111111"),AMM_V4:new x("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new x("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new x("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new x("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new x("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new x("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new x("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new x("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new x("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new x("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:x.default,Router:new x("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new x("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new x("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new x("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new x("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new x("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new x("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new x("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new x("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new x("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new x("Ray1111111111111111111111111111111111111111")};import _g from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as ny,TOKEN_2022_PROGRAM_ID as oy,TOKEN_PROGRAM_ID as iy}from"@solana/spl-token";import{PublicKey as ay}from"@solana/web3.js";import uy from"bn.js";import ly from"decimal.js";import{TOKEN_PROGRAM_ID as Lm}from"@solana/spl-token";import{PublicKey as Fm}from"@solana/web3.js";var Ai=f([Y("mintAuthorityOption"),r("mintAuthority"),t("supply"),p("decimals"),p("isInitialized"),Y("freezeAuthorityOption"),r("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as Bf,TOKEN_2022_PROGRAM_ID as Sf,TOKEN_PROGRAM_ID as xf}from"@solana/spl-token";import{Keypair as Rf,PublicKey as Lf,SystemProgram as Nf,TransactionInstruction as Mf}from"@solana/web3.js";import vf from"bn.js";import E from"bn.js";var J=new E(1).shln(64);var wi=new E(1).shln(128),$t=new E(1).shln(64).subn(1),ki=new E(1).shln(128).subn(1),Ce=-443636,Re=443636,Le=new E("4295048016"),Oe=new E("79226673521066979257578248091"),Un=new E("59543866431248"),Gn=new E("184467440737095516"),zn=new E("15793534762490258745"),Xn=16,Kt=512,se=60,Ym=new E("18446743708227953217"),Yn=[{bit:0,factor:new E("fffcb933bd6fb800",16)},{bit:1,factor:new E("fff97272373d4000",16)},{bit:2,factor:new E("fff2e50f5f657000",16)},{bit:3,factor:new E("ffe5caca7e10f000",16)},{bit:4,factor:new E("ffcb9843d60f7000",16)},{bit:5,factor:new E("ff973b41fa98e800",16)},{bit:6,factor:new E("ff2ea16466c9b000",16)},{bit:7,factor:new E("fe5dee046a9a3800",16)},{bit:8,factor:new E("fcbe86c7900bb000",16)},{bit:9,factor:new E("f987a7253ac65800",16)},{bit:10,factor:new E("f3392b0822bb6000",16)},{bit:11,factor:new E("e7159475a2caf000",16)},{bit:12,factor:new E("d097f3bdfd2f2000",16)},{bit:13,factor:new E("a9f746462d9f8000",16)},{bit:14,factor:new E("70d869a156f31c00",16)},{bit:15,factor:new E("31be135f97ed3200",16)},{bit:16,factor:new E("9aa508b5b85a500",16)},{bit:17,factor:new E("5d6af8dedc582c",16)},{bit:18,factor:new E("2216e584f5fa",16)}];var st=3,Qn=100;var Zn=10,Hn=100,ze=14;var q=new E(0),Ne=new E(1),Qm=new E(-1);var Zm=new E("18446744073700000000");var Ti=f([M(8),p("bump"),Z("index"),r("owner"),Y("protocolFeeRate"),Y("tradeFeeRate"),Z("tickSpacing"),Y("fundFeeRate"),b(Y(),1),r("fundOwner"),b(t(),3)]),hi=f([Y("blockTimestamp"),Ue("tickCumulative"),b(t(),4)]),jn=f([M(8),le("initialized"),t("recentEpoch"),Z("observationIndex"),r("poolId"),b(hi,Qn,"observations"),b(t(),4)]),Ii=f([Z("filterPeriod"),Z("decayPeriod"),Z("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),pe("tickSpacingIndexReference"),Y("volatilityReference"),Y("volatilityAccumulator"),t("lastUpdateTimestamp"),b(p(),46)]),Bi=f([p("state"),t("openTime"),t("endTime"),t("lastUpdateTime"),N("emissionsPerSecondX64"),t("totalEmissioned"),t("claimed"),r("mint"),r("vault"),r("creator"),N("growthGlobalX64")]),Jt=f([M(8),p("bump"),r("configId"),r("creator"),r("mintA"),r("mintB"),r("vaultA"),r("vaultB"),r("observationId"),p("mintDecimalsA"),p("mintDecimalsB"),Z("tickSpacing"),N("liquidity"),N("sqrtPriceX64"),pe("tickCurrent"),Y(),N("feeGrowthGlobalX64A"),N("feeGrowthGlobalX64B"),t("protocolFeesTokenA"),t("protocolFeesTokenB"),b(N(),4),p("status"),p("feeOn"),M(6),b(Bi,st,"rewardInfos"),M(8*16,"tickArrayBitmap"),b(t(),4),t("fundFeesTokenA"),t("fundFeesTokenB"),t("startTime"),t("recentEpoch"),Ii.replicate("dynamicFeeInfo"),b(t(),46)]),Si=f([N("growthInsideLastX64"),t("rewardAmountOwed")]),xi=f([M(8),p("bump"),r("nftMint"),r("poolId"),pe("tickLower"),pe("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),b(Si,st,"rewardInfos"),t("recentEpoch"),b(t(),7)]),Jm=f([M(8),p("bump"),r("poolId"),pe("tickLower"),pe("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),b(N(),st,"rewardGrowthInside"),t("recentEpoch"),b(t(),7)]),Ki=f([pe("tick"),Nn("liquidityNet"),N("liquidityGross"),N("feeGrowthOutsideX64A"),N("feeGrowthOutsideX64B"),b(N(),st,"rewardGrowthsOutsideX64"),t("orderPhase"),t("ordersAmount"),t("partFilledOrdersRemaining"),N("unfilledRatioX64"),b(Y(),3)]),en=f([M(8),r("poolId"),pe("startTickIndex"),b(Ki,se,"ticks"),p("initializedTickCount"),t("recentEpoch"),b(p(),107)]),Ci=f([M(8),p("bump"),b(r(),Zn,"operationOwners"),b(r(),Hn,"whitelistMints")]),Ri=f([M(8),r("poolId"),r("owner"),pe("tick"),le("zeroForOne"),t("orderPhase"),t("totalAmount"),t("filledAmount"),t("settleBase"),t("settleOutput"),t("openTime"),N("unfilledRatioX64"),b(t(),4)]),tn=f([M(8),r("poolId"),M(8*8*ze,"positiveTickArrayBitmap"),M(8*8*ze,"negativeTickArrayBitmap")]),ed=f([M(8),Z("index"),Z("filterPeriod"),Z("decayPeriod"),Z("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),b(t(),8)]),Li=f([M(8),r("wallet"),p("nonceIndex"),t("orderNonce"),b(t(),4)]),td=f([t(),p("bump"),r("owner"),r("poolId"),r("positionId"),r("nftAccount"),b(t(),8)]),Oi=f([M(8),p("bump"),r("lockOwner"),r("poolId"),r("positionId"),r("nftAccount"),r("lockNftMint"),t("recentEpoch"),b(t(),8)]);import id from"bn.js";function $n(i){let e=Buffer.alloc(4);return e.writeInt32BE(i),e}var fd=Buffer.from("amm_config","utf8"),Mi=Buffer.from("pool","utf8"),Fi=Buffer.from("pool_vault","utf8"),yd=Buffer.from("pool_reward_vault","utf8"),bd=Buffer.from("position","utf8"),vi=Buffer.from("tick_array","utf8"),gd=Buffer.from("operation","utf8"),Vi=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Pd=Buffer.from("observation","utf8"),Ad=Buffer.from("support_mint","utf8"),wd=Buffer.from("dynamic_fee_config","utf8"),kd=Buffer.from("permission","utf8");function ut(i,e,n){return ce([vi,e.toBuffer(),$n(n)],i)}function Xe(i,e){return ce([Vi,e.toBuffer()],i)}var Td=Buffer.from("locked_position","utf8");import{sha256 as ji}from"js-sha256";import _i from"bn.js";import Sd from"decimal.js";function me(i,e,n){if(n.isZero())throw new Error("Division by zero");return i.mul(e).div(n)}function de(i,e,n){if(n.isZero())throw new Error("Division by zero");let o=i.mul(e),a=o.div(n);return o.mod(n).isZero()?a:a.addn(1)}var Kd=new _i(1).shln(256).subn(1);function Jn(i){return i.isZero()?-1:i.bitLength()-1}import Ld from"bn.js";import vd from"bn.js";import _d from"decimal.js";import{PublicKey as Ip}from"@solana/web3.js";import Sp from"bn.js";import{TOKEN_2022_PROGRAM_ID as Mp,TOKEN_PROGRAM_ID as Fp}from"@solana/spl-token";import Ep from"decimal.js";import pp from"bn.js";import ep from"bn.js";import Hp from"bn.js";function ee(i){let e=`global:${i}`;return Buffer.from(ji.digest(e)).slice(0,8)}jn.span;var Gf=_("Raydium_Clmm"),zf={createPool:ee("create_pool"),createCustomizablePool:ee("create_customizable_pool"),createPermissionedPool:ee("create_permissioned_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:ee("close_limit_