UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

1 lines 81.5 kB
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 Ra,TOKEN_PROGRAM_ID as La,getTransferFeeConfig as Oa,unpackMint as Na}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 PC from"decimal.js";import Oo from"big.js";import Ha 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 rs=_("Raydium_amount"),as=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"),fs=new X("SysvarC1ock11111111111111111111111111111111"),gt=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),_o=new X("Sysvar1nstructions1111111111111111111111111"),Eo=bn.programId,ys=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),bs=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),gs=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ps=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),As=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),ws=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),ks=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ts=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),hs=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Is=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Bs=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 Vs=new G(new Do(100));var Us=_("Raydium_price");import{merge as wK}from"lodash";import $s 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 ku=_("Raydium_Api");import{PublicKey as Dl,SystemProgram as Wl}from"@solana/web3.js";import{AccountLayout as Xl,createAssociatedTokenAccountIdempotentInstruction as Yl,TOKEN_PROGRAM_ID as Ql,TOKEN_2022_PROGRAM_ID as Zl}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 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 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(j.SetComputeUnitPrice)),i.units&&(e.push(wn.setComputeUnitLimit({units:i.units})),n.push(j.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(j.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(ee=>ee.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,ee=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),ee({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,ee(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 ee of T){if(++U,U<=R){console.log("skip tx: ",U),W.push("tx skipped");continue}let z=await this.connection.sendTransaction(ee,{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 ee=0,z=[],ie=async()=>{if(!W[ee])return;if(ee<R){z.push({txId:"",status:"success",signedTx:W[ee]}),B==null||B([...z]),ee++,ie();return}let we=await this.connection.sendTransaction(W[ee],{skipPreflight:V});z.push({txId:we,status:"sent",signedTx:W[ee]}),B==null||B([...z]),ee++;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 ee=[];for(let z=0;z<W.length;z+=1){let ie=await this.connection.sendTransaction(W[z],{skipPreflight:V});ee.push(ie)}return{txIds:ee,signedTxs:W}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo: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 gl,SystemProgram as Al}from"@solana/web3.js";import Tl from"bn.js";import{createCloseAccountInstruction as Sl,createInitializeAccountInstruction as xl,createTransferInstruction as Kl,TOKEN_PROGRAM_ID as Cl}from"@solana/spl-token";import{Keypair as il,PublicKey as rl}from"@solana/web3.js";import ul from"bn.js";import{TOKEN_PROGRAM_ID as ml}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 cc,blob as Ho,Blob as lc,cstr as mc,f32 as dc,f32be as pc,f64 as fc,f64be as yc,greedy as bc,Layout as jo,ns64 as gc,ns64be as Pc,nu64 as Ac,nu64be as wc,offset as $o,s16 as kc,s16be as Tc,s24 as hc,s24be as Ic,s32 as Jo,s32be as Bc,s40 as Sc,s40be as xc,s48 as Kc,s48be as Cc,s8 as Rc,seq as ei,struct as Lc,Structure as ti,u16 as ni,u16be as Oc,u24 as Nc,u24be as Mc,u32 as oi,u32be as Fc,u40 as vc,u40be as Vc,u48 as _c,u48be as Ec,u8 as ii,UInt as ri,union as Dc,Union as Wc,unionLayoutDiscriminator as qc,utf8 as Uc}from"@solana/buffer-layout";var ht=jo,Sn=ti;var Yt=ri;var xn=ii,$=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 kg,SystemProgram as Tg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Ig}from"@solana/spl-token";import{PublicKey as nm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as im}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"),um=new x("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),li=new x("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),En=new x("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Dn=new x("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),cm=new x("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),mi=new x("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Wn=new x("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),di=new x("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),pi=new x("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),qn=new x("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),lm=new x("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),fi=new x("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),jt=new x("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),yi=new x("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),mm=new x("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),bi=new x("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),gi=new x("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Pi=new x("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),dm=new x("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),pm=new x("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),fm=new x("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),ym=new x("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),bm=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 Mg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as $f,TOKEN_2022_PROGRAM_ID as Jf,TOKEN_PROGRAM_ID as ey}from"@solana/spl-token";import{PublicKey as ny}from"@solana/web3.js";import iy from"bn.js";import ay from"decimal.js";import{TOKEN_PROGRAM_ID as Rm}from"@solana/spl-token";import{PublicKey as Mm}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 kf,TOKEN_2022_PROGRAM_ID as Tf,TOKEN_PROGRAM_ID as hf}from"@solana/spl-token";import{Keypair as Sf,PublicKey as xf,SystemProgram as Cf,TransactionInstruction as Rf}from"@solana/web3.js";import Of 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,Xm=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),Ym=new E(-1);var Qm=new E("18446744073700000000");var Ti=f([M(8),p("bump"),$("index"),r("owner"),Y("protocolFeeRate"),Y("tradeFeeRate"),$("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"),$("observationIndex"),r("poolId"),b(hi,Qn,"observations"),b(t(),4)]),Ii=f([$("filterPeriod"),$("decayPeriod"),$("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"),$("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)]),$m=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")]),Jm=f([M(8),$("index"),$("filterPeriod"),$("decayPeriod"),$("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),b(t(),8)]),Li=f([M(8),r("wallet"),p("nonceIndex"),t("orderNonce"),b(t(),4)]),ed=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 od from"bn.js";function $n(i){let e=Buffer.alloc(4);return e.writeInt32BE(i),e}var pd=Buffer.from("amm_config","utf8"),Ni=Buffer.from("pool","utf8"),Mi=Buffer.from("pool_vault","utf8"),fd=Buffer.from("pool_reward_vault","utf8"),yd=Buffer.from("position","utf8"),Fi=Buffer.from("tick_array","utf8"),bd=Buffer.from("operation","utf8"),vi=Buffer.from("pool_tick_array_bitmap_extension","utf8"),gd=Buffer.from("observation","utf8"),Pd=Buffer.from("support_mint","utf8"),Ad=Buffer.from("dynamic_fee_config","utf8");function ut(i,e,n){return ce([Fi,e.toBuffer(),$n(n)],i)}function Xe(i,e){return ce([vi,e.toBuffer()],i)}var wd=Buffer.from("locked_position","utf8");import{sha256 as Hi}from"js-sha256";import Vi from"bn.js";import Id 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 Sd=new Vi(1).shln(256).subn(1);function Jn(i){return i.isZero()?-1:i.bitLength()-1}import Cd from"bn.js";import Md from"bn.js";import vd from"decimal.js";import{PublicKey as Tp}from"@solana/web3.js";import Ip from"bn.js";import{TOKEN_2022_PROGRAM_ID as Op,TOKEN_PROGRAM_ID as Np}from"@solana/spl-token";import Vp from"decimal.js";import mp from"bn.js";import $d from"bn.js";import Qp from"bn.js";function te(i){let e=`global:${i}`;return Buffer.from(Hi.digest(e)).slice(0,8)}jn.span;var Df=_("Raydium_Clmm"),Wf={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_order"),settleLimitOrder:te("settle_limit_order"),closeLimitOrder:te("close_limit_order")};import{PublicKey as on}from"@solana/web3.js";var nr=f([p("instruction")]),or=f([p