@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
1 lines • 82.3 kB
JavaScript
var To=Object.defineProperty,ho=Object.defineProperties;var Io=Object.getOwnPropertyDescriptors;var ft=Object.getOwnPropertySymbols;var mn=Object.prototype.hasOwnProperty,dn=Object.prototype.propertyIsEnumerable;var ln=(i,e,n)=>e in i?To(i,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):i[e]=n,L=(i,e)=>{for(var n in e||(e={}))mn.call(e,n)&&ln(i,n,e[n]);if(ft)for(var n of ft(e))dn.call(e,n)&&ln(i,n,e[n]);return i},_=(i,e)=>ho(i,Io(e));var ye=(i,e)=>{var n={};for(var o in i)mn.call(i,o)&&e.indexOf(o)<0&&(n[o]=i[o]);if(i!=null&&ft)for(var o of ft(i))e.indexOf(o)<0&&dn.call(i,o)&&(n[o]=i[o]);return n};import{PublicKey as xo}from"@solana/web3.js";import{get as pn,set as Bo}from"lodash";var Nt=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}},fn={},So={};function E(i){let e=pn(fn,i);if(!e){let n=pn(So,i);e=new Nt({name:i,logLevel:n}),Bo(fn,i,e)}return e}import{MINT_SIZE as Wa,TOKEN_PROGRAM_ID as qa,getTransferFeeConfig as Ua,unpackMint as Ga}from"@solana/spl-token";var Mt=E("Raydium_accountInfo_util");async function be(i,e,n){let{batchRequest:o,commitment:a="confirmed",chunkCount:l=100}=L({batchRequest:!1},n),m=Ft(e,l),s=new Array(m.length).fill([]);if(o){let y=m.map(g=>{let T=i._buildArgs([g.map(w=>w.toBase58())],a,"base64");return{methodName:"getMultipleAccounts",args:T}}),P=Ft(y,10);s=(await(await Promise.all(P.map(async g=>await i._rpcBatchRequest(g)))).flat()).map(g=>(g.error&&Mt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${g.error.message}`),g.result.value.map(T=>{if(T){let{data:w,executable:C,lamports:h,owner:I,rentEpoch:x}=T;return w.length!==2&&w[1]!=="base64"&&Mt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(w[0],"base64"),executable:C,lamports:h,owner:new xo(I),rentEpoch:x}}return null})))}else try{s=await Promise.all(m.map(y=>i.getMultipleAccountsInfo(y,a)))}catch(y){y instanceof Error&&Mt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${y.message}`)}return s.flat()}import Fe from"bn.js";import nR from"decimal.js";import Fo from"big.js";import ss from"bn.js";import Ko from"toformat";var Co=Ko,$e=Co;import bt from"big.js";import Lo from"bn.js";import Oo from"decimal.js-light";import Je from"bn.js";var yn=9007199254740991;function re(i){let e=E("Raydium_parseBigNumberish");if(i instanceof Je)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Je(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=yn||i<=-yn)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Je(String(i))):typeof i=="bigint"?new Je(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Je(0))}var yt=E("module/fraction"),vt=$e(bt),et=$e(Oo),No={[0]:et.ROUND_DOWN,[1]:et.ROUND_HALF_UP,[2]:et.ROUND_UP},Mo={[0]:bt.roundDown,[1]:bt.roundHalfUp,[2]:bt.roundUp},G=class{constructor(e,n=new Lo(1)){this.numerator=re(e),this.denominator=re(n)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new G(this.denominator,this.numerator)}add(e){let n=e instanceof G?e:new G(re(e));return this.denominator.eq(n.denominator)?new G(this.numerator.add(n.numerator),this.denominator):new G(this.numerator.mul(n.denominator).add(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}sub(e){let n=e instanceof G?e:new G(re(e));return this.denominator.eq(n.denominator)?new G(this.numerator.sub(n.numerator),this.denominator):new G(this.numerator.mul(n.denominator).sub(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}mul(e){let n=e instanceof G?e:new G(re(e));return new G(this.numerator.mul(n.numerator),this.denominator.mul(n.denominator))}div(e){let n=e instanceof G?e:new G(re(e));return new G(this.numerator.mul(n.denominator),this.denominator.mul(n.numerator))}toSignificant(e,n={groupSeparator:""},o=1){Number.isInteger(e)||yt.logWithError(`${e} is not an integer.`),e<=0&&yt.logWithError(`${e} is not positive.`),et.set({precision:e+1,rounding:No[o]});let a=new et(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)||yt.logWithError(`${e} is not an integer.`),e<0&&yt.logWithError(`${e} is negative.`),vt.DP=e,vt.RM=Mo[o]||1,new vt(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,n)}isZero(){return this.numerator.isZero()}};var bs=E("Raydium_amount"),gs=$e(Fo);import{PublicKey as Vo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as bn}from"@solana/spl-token";var gt={chainId:101,address:Vo.default.toBase58(),programId:bn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Pe={chainId:101,address:"So11111111111111111111111111111111111111112",programId:bn.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 _t}from"@solana/web3.js";import{PublicKey as X,SystemProgram as gn,SYSVAR_RENT_PUBKEY as _o}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Eo}from"@solana/spl-token";function Ve({pubkey:i,isSigner:e=!1,isWritable:n=!0}){return{pubkey:i,isWritable:n,isSigner:e}}var Do=[Ve({pubkey:Eo,isWritable:!1}),Ve({pubkey:gn.programId,isWritable:!1}),Ve({pubkey:_o,isWritable:!1})];function Pn({publicKey:i,transformSol:e}){let n=An(i.toString());if(n instanceof X)return e&&n.equals(Be)?ge:n;if(e&&n.toString()===Be.toBase58())return ge;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 An(i){try{return new X(i)}catch{return i}}var Vt=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),_e=new X("SysvarRent111111111111111111111111111111111"),Wo=new X("SysvarC1ock11111111111111111111111111111111"),Pt=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),qo=new X("Sysvar1nstructions1111111111111111111111111"),wn=gn.programId,Bs=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ss=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),xs=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ks=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Cs=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Rs=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ls=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Os=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ns=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ms=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Fs=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ge=new X("So11111111111111111111111111111111111111112"),Be=X.default;var Et=class{constructor({mint:e,decimals:n,symbol:o,name:a,skipMint:l=!1,isToken2022:m=!1}){if(e===Be.toBase58()||e instanceof _t&&Be.equals(e)){this.decimals=Pe.decimals,this.symbol=Pe.symbol,this.name=Pe.name,this.mint=new _t(Pe.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?_t.default:Pn({publicKey:e}),this.isToken2022=m}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ne=Et;ne.WSOL=new Et(_(L({},Pe),{mint:Pe.address}));var Dt=class{constructor({decimals:e,symbol:n="UNKNOWN",name:o="UNKNOWN"}){this.decimals=e,this.symbol=n,this.name=o}equals(e){return this===e}},At=Dt;At.SOL=new Dt(gt);import Uo from"bn.js";var Ys=new G(new Uo(100));var Js=E("Raydium_price");import{merge as nC}from"lodash";import uu from"axios";var kn={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",MONITOR_BASE_HOST:"https://monitor.raydium.io",SERVICE_1_BASE_HOST:"https://service-v1.raydium.io",TEMP_HOST:"https://temp-api-v1.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",CPMM_CONFIG:"/main/cpmm-config",CLMM_DYNAMIC_CONFIG:"/main/clmm-dynamic-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://lite-api.jup.ag/tokens/v2/tag?query=verified",POOL_LIST:"/pools/info/list-v2",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/list-v2",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",OWNER_LOCK_POSITION:"/position/clmm-lock/{owner}",IDO_KEYS:"/ido/key/ids",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee",CPMM_LOCK:"https://dynamic-ipfs.raydium.io/lock/cpmm/position",LAUNCH_AUTH_HOST:"https://launch-auth-v1.raydium.io",LAUNCH_COMMENT_HOST:"hhttps://launch-forum-v1.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1.raydium.io"},Go=_(L({},kn),{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 Lu=E("Raydium_Api");import{PublicKey as Zl,SystemProgram as Hl}from"@solana/web3.js";import{AccountLayout as tm,createAssociatedTokenAccountIdempotentInstruction as nm,TOKEN_PROGRAM_ID as om,TOKEN_2022_PROGRAM_ID as im}from"@solana/spl-token";import{PublicKey as Ue,sendAndConfirmTransaction as Xt,SystemProgram as Ho,Transaction as ot,TransactionMessage as it,VersionedTransaction as rt}from"@solana/web3.js";import jo from"axios";import{PublicKey as Wt,AddressLookupTableAccount as We}from"@solana/web3.js";async function qt({connection:i,address:e,cluster:n="mainnet"}){let o=await be(i,[...new Set(e.map(l=>l.toString()))].map(l=>new Wt(l))),a={};for(let l=0;l<e.length;l++){let m=o[l],s=e[l];if(!m)continue;let y=new We({key:s,state:We.deserialize(m.data)});a[s.toString()]=y,n==="devnet"?De[s.toString()]=y:Ee[s.toString()]=y}return a}var Ee={},Ut=async i=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Ee[e])return Ee;let n=new Wt(e),o=await i.getAccountInfo(n);return o&&(Ee[e]=new We({key:n,state:We.deserialize(o.data)})),Ee},De={},Gt=async i=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(De[e])return De;let n=new Wt(e),o=await i.getAccountInfo(n);return o&&(De[e]=new We({key:n,state:We.deserialize(o.data)})),De};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 Tn,Keypair as In,PublicKey as zo,Transaction as Bn,TransactionMessage as Xo,VersionedTransaction as Sn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Yo}from"@solana/spl-token";var hn=E("Raydium_txUtil"),xn=1644;function wt(i){let e=[],n=[];return i.microLamports&&(e.push(Tn.setComputeUnitPrice({microLamports:i.microLamports})),n.push(j.SetComputeUnitPrice)),i.units&&(e.push(Tn.setComputeUnitLimit({units:i.units})),n.push(j.SetComputeUnitLimit)),{instructions:e,instructionTypes:n}}async function qe(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 kt(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 zt(i,e){i.length<1&&hn.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&hn.logWithError(`no signers provided:, ${e.toString()}`);let n=new Bn;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=e[0],n.add(...i);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<xn}catch{return!1}}function ce(i,e){let[n,o]=zo.findProgramAddressSync(i,e);return{publicKey:n,nonce:o}}function tt({instructions:i,payer:e,signers:n}){return zt(i,[e,...n])}function nt({instructions:i,payer:e,lookupTableAddressAccount:n,recentBlockhash:o=In.generate().publicKey.toString()}){let l=new Xo({payerKey:e,recentBlockhash:o,instructions:i}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new Sn(l).serialize()).toString("base64").length<xn}catch{return!1}}var Qo=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i),Zo=i=>{let e=i.serialize({requireAllSignatures:!1,verifySignatures:!1});i instanceof Sn&&(e=Qo(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 Bn&&(n.recentBlockhash||(n.recentBlockhash=Yo.toBase58()),n.feePayer||(n.feePayer=In.generate().publicKey)),e.push(Zo(n))}),console.log("simulate tx string:",e),e}var Tt=2e3,ht=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment,this.loopMultiTxStatus=!!e.loopMultiTxStatus}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var o;let e=(await jo.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:n}=(o=e==null?void 0:e[15])!=null?o:{};if(!!n)return{units:6e5,microLamports:Math.min(Math.ceil(n*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:n,instructionTypes:o}=wt(e);return this.instructions.unshift(...n),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(e){var n;return e?(this.endInstructions.push(Ho.transfer({fromPubkey:(n=e.feePayer)!=null?n:this.feePayer,toPubkey:new Ue(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!==Ue.default.toString())),this}async versionBuild({txVersion:e,extInfo:n,lookupTableAddress:o}){return e===0?await this.buildV0(_(L({},n||{}),{lookupTableAddress:o})):this.build(n)}build(e){var o;let n=new 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 f;let{recentBlockHash:l,skipPreflight:m=!0,sendAndConfirm:s,notSendToRpc:y}=a||{},P=l!=null?l:await qe(this.connection,this.blockhashCommitment);if(n.recentBlockhash=P,this.signers.length&&n.sign(...this.signers),Se([n]),(f=this.owner)!=null&&f.isKeyPair)return{txId:s?await Xt(this.connection,n,this.signers.find(T=>T.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 T of g)try{T.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(f=>f.transaction.instructions.length>0),m=[a,...l.map(f=>f.transaction)],s=[this.signers,...l.map(f=>f.signers)],y=[...this.instructionTypes,...l.map(f=>f.instructionTypes).flat()];return(P=this.owner)!=null&&P.signer&&s.forEach(f=>{f.some(g=>g.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:m,signers:s,instructionTypes:y,execute:async f=>{var x;let{sequentially:g,onTxUpdate:T,skipTxCount:w=0,recentBlockHash:C,skipPreflight:h=!0}=f||{},I=C!=null?C:await qe(this.connection,this.blockhashCommitment);if((x=this.owner)!=null&&x.isKeyPair){if(g){let K=[],F=0;for(let v of m){if(++F,F<=w)continue;let A=await Xt(this.connection,v,this.signers.find(B=>B.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:h});K.push(A)}return{txIds:K,signedTxs:m}}return{txIds:await await Promise.all(m.map(async K=>(K.recentBlockhash=I,await this.connection.sendRawTransaction(K.serialize(),{skipPreflight:h})))),signedTxs:m}}if(this.signAllTransactions){let K=m.map((v,A)=>(v.recentBlockhash=I,s[A].length&&v.sign(...s[A]),v));Se(K);let F=await this.signAllTransactions(K);if(g){let v=0,A=[],B=async()=>{if(!F[v])return;let S=await this.connection.sendRawTransaction(F[v].serialize(),{skipPreflight:h});A.push({txId:S,status:"sent",signedTx:F[v]}),T==null||T([...A]),v++;let R=!1,O=null,V=null,ue=U=>{O!==null&&clearInterval(O),V!==null&&this.connection.removeSignatureListener(V);let W=A.findIndex(ee=>ee.txId===S);if(W>-1){if(A[W].status==="error"||A[W].status==="success")return;A[W].status=U.err?"error":"success"}T==null||T([...A]),U.err||B()};this.loopMultiTxStatus&&(O=setInterval(async()=>{var U;if(R){clearInterval(O);return}try{let W=await this.connection.getTransaction(S,{commitment:"confirmed",maxSupportedTransactionVersion:0});W&&(R=!0,clearInterval(O),ue({err:((U=W.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",S))}catch(W){R=!0,clearInterval(O),console.error("getTransaction timeout:",W,S)}},Tt)),V=this.connection.onSignature(S,U=>{if(R){this.connection.removeSignatureListener(V);return}R=!0,ue(U)},"confirmed"),this.connection.getSignatureStatus(S)};return await B(),{txIds:A.map(S=>S.txId),signedTxs:F}}else{let v=[];for(let A=0;A<F.length;A+=1){let B=await this.connection.sendRawTransaction(F[A].serialize(),{skipPreflight:h});v.push(B)}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 h;let C=e||{},{lookupTableCache:n={},lookupTableAddress:o=[],forerunCreate:a,recentBlockhash:l}=C,m=ye(C,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),s=L(L({},this.cluster==="devnet"?await Gt(this.connection):await Ut(this.connection)),n),y=Array.from(new Set([...o,...this.lookupTableAddress])),P=[];for(let I of y)s[I]===void 0&&P.push(new Ue(I));let f=await qt({connection:this.connection,address:P});for(let[I,x]of Object.entries(f))s[I]=x;let g=a?Ue.default.toBase58():l!=null?l:await qe(this.connection,this.blockhashCommitment),T=new it({payerKey:this.feePayer,recentBlockhash:g,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s));((h=this.owner)==null?void 0:h.signer)&&!this.signers.some(I=>I.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let w=new rt(T);return w.sign(this.signers),{builder:this,transaction:w,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async I=>{var v;let{skipPreflight:x=!0,sendAndConfirm:K,notSendToRpc:F}=I||{};if(Se([w]),(v=this.owner)!=null&&v.isKeyPair){let A=await this.connection.sendTransaction(w,{skipPreflight:x});return K&&await kt(this.connection,A),{txId:A,signedTx:w}}if(this.signAllTransactions){let A=await this.signAllTransactions([w]);if(this.signers.length)for(let B of A)try{B.sign(this.signers)}catch{}return{txId:F?"":await this.connection.sendTransaction(A[0],{skipPreflight:x}),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(f=>f.builder.instructions.length>0),m=[a,...l.map(f=>f.transaction)],s=[this.signers,...l.map(f=>f.signers)],y=[...this.instructionTypes,...l.map(f=>f.instructionTypes).flat()];return(P=this.owner)!=null&&P.signer&&s.forEach(f=>{f.some(g=>g.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),m.forEach(async(f,g)=>{f.sign(s[g])}),{builder:this,transactions:m,signers:s,instructionTypes:y,buildProps:o,execute:async f=>{var h;let{sequentially:g,onTxUpdate:T,recentBlockHash:w,skipPreflight:C=!0}=f||{};if(w&&m.forEach(I=>I.message.recentBlockhash=w),Se(m),(h=this.owner)!=null&&h.isKeyPair){if(g){let I=[];for(let x of m){let K=await this.connection.sendTransaction(x,{skipPreflight:C});await kt(this.connection,K),I.push(K)}return{txIds:I,signedTxs:m}}return{txIds:await Promise.all(m.map(async I=>await this.connection.sendTransaction(I,{skipPreflight:C}))),signedTxs:m}}if(this.signAllTransactions){let I=await this.signAllTransactions(m);if(g){let x=0,K=[],F=async()=>{if(!I[x])return;let v=await this.connection.sendTransaction(I[x],{skipPreflight:C});K.push({txId:v,status:"sent",signedTx:I[x]}),T==null||T([...K]),x++;let A=!1,B=null,S=null,R=O=>{B!==null&&clearInterval(B),S!==null&&this.connection.removeSignatureListener(S);let V=K.findIndex(ue=>ue.txId===v);if(V>-1){if(K[V].status==="error"||K[V].status==="success")return;K[V].status=O.err?"error":"success"}T==null||T([...K]),O.err||F()};this.loopMultiTxStatus&&(B=setInterval(async()=>{var O;if(A){clearInterval(B);return}try{let V=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(A=!0,clearInterval(B),R({err:((O=V.meta)==null?void 0:O.err)||null}),console.log("tx status from getTransaction:",v))}catch(V){A=!0,clearInterval(B),console.error("getTransaction timeout:",V,v)}},Tt)),S=this.connection.onSignature(v,O=>{if(A){this.connection.removeSignatureListener(S);return}A=!0,R(O)},"confirmed"),this.connection.getSignatureStatus(v)};return F(),{txIds:[],signedTxs:I}}else{let x=[];for(let K=0;K<I.length;K+=1){let F=await this.connection.sendTransaction(I[K],{skipPreflight:C});x.push(F)}return{txIds:x,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var T;let g=e||{},{splitIns:n=[],computeBudgetConfig:o}=g,a=ye(g,["splitIns","computeBudgetConfig"]),l=o?wt(o):{instructions:[],instructionTypes:[]},m=this.signers.reduce((w,C)=>_(L({},w),{[C.publicKey.toBase58()]:C}),{}),s=[],y=[],P=[],f=0;if(this.allInstructions.forEach(w=>{let C=[...P,w],h=o?[...l.instructions,...C]:C,x=[...new Set(C.map(K=>K.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat()).values()].map(K=>new Ue(K));if(w!==n[f]&&P.length<12&&(tt({instructions:h,payer:this.feePayer,signers:x})||tt({instructions:C,payer:this.feePayer,signers:x})))P.push(w);else{if(P.length===0)throw Error("item ins too big");f+=w===n[f]?1:0,tt({instructions:o?[...l.instructions,...P]:[...P],payer:this.feePayer,signers:x})?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(h=>h.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat()).values()].map(h=>m[h]).filter(h=>h!==void 0);tt({instructions:o?[...l.instructions,...P]:[...P],payer:this.feePayer,signers:C.map(h=>h.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),(T=this.owner)!=null&&T.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:h,skipTxCount:I=0,recentBlockHash:x,skipPreflight:K=!0}=w||{},F=x!=null?x:await qe(this.connection,this.blockhashCommitment);if(s.forEach(async(A,B)=>{A.recentBlockhash=F,y[B].length&&A.sign(...y[B])}),Se(s),(v=this.owner)!=null&&v.isKeyPair){if(C){let A=0,B=[];for(let S of s){if(++A,A<=I){B.push("tx skipped");continue}let R=await Xt(this.connection,S,this.signers.find(O=>O.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:K});B.push(R)}return{txIds:B,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(I,s.length)),B=[...s.slice(0,I),...A];if(C){let S=0,R=[],O=async()=>{if(!B[S])return;S<I&&(R.push({txId:"",status:"success",signedTx:B[S]}),h==null||h([...R]),S++,O());let V=await this.connection.sendRawTransaction(B[S].serialize(),{skipPreflight:K});R.push({txId:V,status:"sent",signedTx:B[S]}),h==null||h([...R]),S++;let ue=!1,U=null,W=null,ee=z=>{U!==null&&clearInterval(U),W!==null&&this.connection.removeSignatureListener(W);let ie=R.findIndex(ke=>ke.txId===V);if(ie>-1){if(R[ie].status==="error"||R[ie].status==="success")return;R[ie].status=z.err?"error":"success"}h==null||h([...R]),z.err||O()};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)}},Tt)),W=this.connection.onSignature(V,z=>{if(ue){this.connection.removeSignatureListener(W);return}ue=!0,ee(z)},"confirmed"),this.connection.getSignatureStatus(V)};return await O(),{txIds:R.map(V=>V.txId),signedTxs:B}}else{let S=[];for(let R=0;R<B.length;R+=1){let O=await this.connection.sendRawTransaction(B[R].serialize(),{skipPreflight:K});S.push(O)}return{txIds:S,signedTxs:B}}}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=L(L({},this.cluster==="devnet"?await Gt(this.connection):await Ut(this.connection)),a),P=Array.from(new Set([...this.lookupTableAddress,...l])),f=[];for(let A of P)y[A]===void 0&&f.push(new Ue(A));let g=await qt({connection:this.connection,address:f});for(let[A,B]of Object.entries(g))y[A]=B;let T=n?wt(n):{instructions:[],instructionTypes:[]},w=await qe(this.connection,this.blockhashCommitment),C=this.signers.reduce((A,B)=>_(L({},A),{[B.publicKey.toBase58()]:B}),{}),h=[],I=[],x=[],K=0;if(this.allInstructions.forEach(A=>{let B=[...x,A],S=n?[...T.instructions,...B]:B;if(A!==o[K]&&x.length<m&&(nt({instructions:S,payer:this.feePayer,lookupTableAddressAccount:y})||nt({instructions:B,payer:this.feePayer,lookupTableAddressAccount:y})))x.push(A);else{if(x.length===0)throw Error("item ins too big");K+=A===o[K]?1:0;let R={};for(let O of[...new Set(P)])y[O]!==void 0&&(R[O]=y[O]);if(n&&nt({instructions:[...T.instructions,...x],payer:this.feePayer,lookupTableAddressAccount:y,recentBlockhash:w})){let O=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...T.instructions,...x]}).compileToV0Message(Object.values(y));h.push(new rt(O))}else{let O=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...x]}).compileToV0Message(Object.values(y));h.push(new rt(O))}I.push(Array.from(new Set(x.map(O=>O.keys.filter(V=>V.isSigner).map(V=>V.pubkey.toString())).flat())).map(O=>C[O]).filter(O=>O!==void 0)),x=[A]}}),x.length>0){let B=[...new Set(x.map(S=>S.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat()).values()].map(S=>C[S]).filter(S=>S!==void 0);if(n&&nt({instructions:[...T.instructions,...x],payer:this.feePayer,lookupTableAddressAccount:y,recentBlockhash:w})){let S=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...T.instructions,...x]}).compileToV0Message(Object.values(y));h.push(new rt(S))}else{let S=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...x]}).compileToV0Message(Object.values(y));h.push(new rt(S))}I.push(B)}return(v=this.owner)!=null&&v.signer&&I.forEach(A=>{A.some(B=>B.publicKey.equals(this.owner.publicKey))||A.push(this.owner.signer)}),h.forEach((A,B)=>{A.sign(I[B])}),{builder:this,transactions:h,buildProps:e,signers:I,instructionTypes:this.instructionTypes,execute:async A=>{var ue;let{sequentially:B,onTxUpdate:S,skipTxCount:R=0,recentBlockHash:O,skipPreflight:V=!0}=A||{};if(h.map(async(U,W)=>{I[W].length&&U.sign(I[W]),O&&(U.message.recentBlockhash=O)}),Se(h),(ue=this.owner)!=null&&ue.isKeyPair){if(B){let U=0,W=[];for(let ee of h){if(++U,U<=R){console.log("skip tx: ",U),W.push("tx skipped");continue}let z=await this.connection.sendTransaction(ee,{skipPreflight:V});await kt(this.connection,z),W.push(z)}return{txIds:W,signedTxs:h}}return{txIds:await Promise.all(h.map(async U=>await this.connection.sendTransaction(U,{skipPreflight:V}))),signedTxs:h}}if(this.signAllTransactions){let U=await this.signAllTransactions(h.slice(R,h.length)),W=[...h.slice(0,R),...U];if(B){let ee=0,z=[],ie=async()=>{if(!W[ee])return;if(ee<R){z.push({txId:"",status:"success",signedTx:W[ee]}),S==null||S([...z]),ee++,ie();return}let ke=await this.connection.sendTransaction(W[ee],{skipPreflight:V});z.push({txId:ke,status:"sent",signedTx:W[ee]}),S==null||S([...z]),ee++;let He=!1,ve=null,pt=null,cn=Ie=>{ve!==null&&clearInterval(ve),pt!==null&&this.connection.removeSignatureListener(pt);let Te=z.findIndex(ko=>ko.txId===ke);if(Te>-1){if(z[Te].status==="error"||z[Te].status==="success")return;z[Te].status=Ie.err?"error":"success"}S==null||S([...z]),Ie.err||ie()};this.loopMultiTxStatus&&(ve=setInterval(async()=>{var Ie;if(He){clearInterval(ve);return}try{let Te=await this.connection.getTransaction(ke,{commitment:"confirmed",maxSupportedTransactionVersion:0});Te&&(He=!0,clearInterval(ve),cn({err:((Ie=Te.meta)==null?void 0:Ie.err)||null}),console.log("tx status from getTransaction:",ke))}catch(Te){He=!0,clearInterval(ve),console.error("getTransaction timeout:",Te,ke)}},Tt)),pt=this.connection.onSignature(ke,Ie=>{if(He){this.connection.removeSignatureListener(pt);return}He=!0,cn(Ie)},"confirmed"),this.connection.getSignatureStatus(ke)};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 Yt=(...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=E(n)}createTxBuilder(e){return this.scope.checkOwner(),new ht({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(Yt(e))}logInfo(...e){this.logger.info(Yt(e))}logAndCreateError(...e){let n=Yt(e);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Sl,SystemProgram as Kl}from"@solana/web3.js";import Ll from"bn.js";import{createCloseAccountInstruction as Fl,createInitializeAccountInstruction as vl,createTransferInstruction as Vl,TOKEN_PROGRAM_ID as _l}from"@solana/spl-token";import{Keypair as pl,PublicKey as fl}from"@solana/web3.js";import gl from"bn.js";import{TOKEN_PROGRAM_ID as wl}from"@solana/spl-token";import{PublicKey as li}from"@solana/web3.js";import Nn,{isBN as Mn}from"bn.js";import{bits as $o,BitStructure as Ac,blob as Jo,Blob as wc,cstr as kc,f32 as Tc,f32be as hc,f64 as Ic,f64be as Bc,greedy as Sc,Layout as ei,ns64 as xc,ns64be as Kc,nu64 as ti,nu64be as Cc,offset as ni,s16 as Rc,s16be as Lc,s24 as Oc,s24be as Nc,s32 as oi,s32be as Mc,s40 as Fc,s40be as vc,s48 as Vc,s48be as _c,s8 as Ec,seq as ii,struct as Dc,Structure as ri,u16 as ai,u16be as Wc,u24 as qc,u24be as Uc,u32 as si,u32be as Gc,u40 as zc,u40be as Xc,u48 as Yc,u48be as Qc,u8 as ui,UInt as ci,union as Zc,Union as Hc,unionLayoutDiscriminator as jc,utf8 as $c}from"@solana/buffer-layout";var It=ei,Kn=ri;var Qt=ci;var Cn=ui,$=ai;var Bt=si;var Rn=ti;var pe=oi;var Ln=ii;var M=Jo;var Zt=$o,On=ni;var Ke=class extends It{constructor(n,o,a){super(n,a);this.blob=M(n),this.signed=o}decode(n,o=0){let a=new Nn(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 Nn(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),o,a)}},St=class extends It{constructor(n){super(8,n);this._lower=Zt(Bt(),!1),this._upper=Zt(Bt(),!1)}addBoolean(n){this._lower.fields.length<32?this._lower.addBoolean(n):this._upper.addBoolean(n)}decode(n,o=0){let a=this._lower.decode(n,o),l=this._upper.decode(n,o+this._lower.span);return L(L({},a),l)}encode(n,o,a=0){return this._lower.encode(n,o,a)+this._upper.encode(n,o,a+this._lower.span)}};function d(i){return new Qt(1,i)}function Y(i){return new Qt(4,i)}function t(i){return new Ke(8,!1,i)}function N(i){return new Ke(16,!1,i)}function Fn(i){return new Ke(1,!0,i)}function Ge(i){return new Ke(8,!0,i)}function vn(i){return new Ke(16,!0,i)}var at=class extends It{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 li(e),e=>e.toBuffer(),i)}function le(i){return new at(Cn(),mi,di,i)}function mi(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function di(i){return i?1:0}function Vn(i,e){let n=Bt("length"),o=p([n,b(i,On(n,-n.span),"values")]);return new at(o,({values:a})=>a,a=>({values:a}),e)}var Ht=class extends Kn{decode(e,n){return super.decode(e,n)}};function p(i,e,n){return new Ht(i,e,n)}function b(i,e,n){let o,a=typeof e=="number"?e:Mn(e)?e.toNumber():new Proxy(e,{get(l,m){if(!o){let s=Reflect.get(l,"count");o=Mn(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 Ln(i,a,n)}var xt=p([r("mint"),r("owner"),t("amount"),Y("delegateOption"),r("delegate"),d("state"),Y("isNativeOption"),t("isNative"),t("delegatedAmount"),Y("closeAuthorityOption"),r("closeAuthority")]);import{PublicKey as xg,SystemProgram as Kg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Rg}from"@solana/spl-token";import{PublicKey as mm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as pm}from"@solana/spl-token";import{PublicKey as k}from"@solana/web3.js";var En=new k("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Dn=new k("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Wn=new k("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),jt=new k("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),gm=new k("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),fi=new k("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),qn=new k("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Un=new k("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Pm=new k("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),yi=new k("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Gn=new k("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),bi=new k("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),gi=new k("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),zn=new k("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Am=new k("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Pi=new k("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Ai=new k("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),wi=new k("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),ki=new k("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),Ti=new k("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),$t=new k("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),hi=new k("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),wm=new k("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ii=new k("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Bi=new k("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Si=new k("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),km=new k("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Tm=new k("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),hm=new k("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Im=new k("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Bm=new k("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX"),st={IDO_PROGRAM_ID_V1:Ai,IDO_PROGRAM_ID_V2:wi,IDO_PROGRAM_ID_V3:ki,IDO_PROGRAM_ID_V4:Ti};var he={OPEN_BOOK_PROGRAM:new k("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new k("Ray1111111111111111111111111111111111111111"),AMM_V4:new k("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new k("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new k("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new k("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new k("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new k("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new k("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new k("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new k("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new k("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:k.default,Router:new k("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new k("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new k("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new k("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new k("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new k("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new k("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new k("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new k("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new k("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new k("Ray1111111111111111111111111111111111111111")};import Dg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as iy,TOKEN_2022_PROGRAM_ID as ry,TOKEN_PROGRAM_ID as ay}from"@solana/spl-token";import{PublicKey as uy}from"@solana/web3.js";import ly from"bn.js";import dy from"decimal.js";import{TOKEN_PROGRAM_ID as Em}from"@solana/spl-token";import{PublicKey as Um}from"@solana/web3.js";var xi=p([Y("mintAuthorityOption"),r("mintAuthority"),t("supply"),d("decimals"),d("isInitialized"),Y("freezeAuthorityOption"),r("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as xf,TOKEN_2022_PROGRAM_ID as Kf,TOKEN_PROGRAM_ID as Cf}from"@solana/spl-token";import{Keypair as Of,PublicKey as Nf,SystemProgram as Ff,TransactionInstruction as vf}from"@solana/web3.js";import _f from"bn.js";import D from"bn.js";var J=new D(1).shln(64);var Ki=new D(1).shln(128),Jt=new D(1).shln(64).subn(1),Ci=new D(1).shln(128).subn(1),Ce=-443636,Re=443636,Le=new D("4295048016"),Oe=new D("79226673521066979257578248091"),Xn=new D("59543866431248"),Yn=new D("184467440737095516"),Qn=new D("15793534762490258745"),Zn=16,Ct=512,se=60,td=new D("18446743708227953217"),Hn=[{bit:0,factor:new D("fffcb933bd6fb800",16)},{bit:1,factor:new D("fff97272373d4000",16)},{bit:2,factor:new D("fff2e50f5f657000",16)},{bit:3,factor:new D("ffe5caca7e10f000",16)},{bit:4,factor:new D("ffcb9843d60f7000",16)},{bit:5,factor:new D("ff973b41fa98e800",16)},{bit:6,factor:new D("ff2ea16466c9b000",16)},{bit:7,factor:new D("fe5dee046a9a3800",16)},{bit:8,factor:new D("fcbe86c7900bb000",16)},{bit:9,factor:new D("f987a7253ac65800",16)},{bit:10,factor:new D("f3392b0822bb6000",16)},{bit:11,factor:new D("e7159475a2caf000",16)},{bit:12,factor:new D("d097f3bdfd2f2000",16)},{bit:13,factor:new D("a9f746462d9f8000",16)},{bit:14,factor:new D("70d869a156f31c00",16)},{bit:15,factor:new D("31be135f97ed3200",16)},{bit:16,factor:new D("9aa508b5b85a500",16)},{bit:17,factor:new D("5d6af8dedc582c",16)},{bit:18,factor:new D("2216e584f5fa",16)}];var ut=3,jn=100;var $n=10,Jn=100,Xe=14;var q=new D(0),Ne=new D(1),nd=new D(-1);var od=new D("18446744073700000000");var Ri=p([M(8),d("bump"),$("index"),r("owner"),Y("protocolFeeRate"),Y("tradeFeeRate"),$("tickSpacing"),Y("fundFeeRate"),b(Y(),1),r("fundOwner"),b(t(),3)]),Li=p([Y("blockTimestamp"),Ge("tickCumulative"),b(t(),4)]),eo=p([M(8),le("initialized"),t("recentEpoch"),$("observationIndex"),r("poolId"),b(Li,jn,"observations"),b(t(),4)]),Oi=p([$("filterPeriod"),$("decayPeriod"),$("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),pe("tickSpacingIndexReference"),Y("volatilityReference"),Y("volatilityAccumulator"),t("lastUpdateTimestamp"),b(d(),46)]),Ni=p([d("state"),t("openTime"),t("endTime"),t("lastUpdateTime"),N("emissionsPerSecondX64"),t("totalEmissioned"),t("claimed"),r("mint"),r("vault"),r("creator"),N("growthGlobalX64")]),en=p([M(8),d("bump"),r("configId"),r("creator"),r("mintA"),r("mintB"),r("vaultA"),r("vaultB"),r("observationId"),d("mintDecimalsA"),d("mintDecimalsB"),$("tickSpacing"),N("liquidity"),N("sqrtPriceX64"),pe("tickCurrent"),Y(),N("feeGrowthGlobalX64A"),N("feeGrowthGlobalX64B"),t("protocolFeesTokenA"),t("protocolFeesTokenB"),b(N(),4),d("status"),d("feeOn"),M(6),b(Ni,ut,"rewardInfos"),M(8*16,"tickArrayBitmap"),b(t(),4),t("fundFeesTokenA"),t("fundFeesTokenB"),t("startTime"),t("recentEpoch"),Oi.replicate("dynamicFeeInfo"),b(t(),46)]),Mi=p([N("growthInsideLastX64"),t("rewardAmountOwed")]),Fi=p([M(8),d("bump"),r("nftMint"),r("poolId"),pe("tickLower"),pe("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),b(Mi,ut,"rewardInfos"),t("recentEpoch"),b(t(),7)]),sd=p([M(8),d("bump"),r("poolId"),pe("tickLower"),pe("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),b(N(),ut,"rewardGrowthInside"),t("recentEpoch"),b(t(),7)]),vi=p([pe("tick"),vn("liquidityNet"),N("liquidityGross"),N("feeGrowthOutsideX64A"),N("feeGrowthOutsideX64B"),b(N(),ut,"rewardGrowthsOutsideX64"),t("orderPhase"),t("ordersAmount"),t("partFilledOrdersRemaining"),N("unfilledRatioX64"),b(Y(),3)]),tn=p([M(8),r("poolId"),pe("startTickIndex"),b(vi,se,"ticks"),d("initializedTickCount"),t("recentEpoch"),b(d(),107)]),Vi=p([M(8),d("bump"),b(r(),$n,"operationOwners"),b(r(),Jn,"whitelistMints")]),_i=p([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)]),nn=p([M(8),r("poolId"),M(8*8*Xe,"positiveTickArrayBitmap"),M(8*8*Xe,"negativeTickArrayBitmap")]),ud=p([M(8),$("index"),$("filterPeriod"),$("decayPeriod"),$("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),b(t(),8)]),Ei=p([M(8),r("wallet"),d("nonceIndex"),t("orderNonce"),b(t(),4)]),cd=p([t(),d("bump"),r("owner"),r("poolId"),r("positionId"),r("nftAccount"),b(t(),8)]),Di=p([M(8),d("bump"),r("lockOwner"),r("poolId"),r("positionId"),r("nftAccount"),r("lockNftMint"),t("recentEpoch"),b(t(),8)]);import dd from"bn.js";function to(i){let e=Buffer.alloc(4);return e.writeInt32BE(i),e}var Td=Buffer.from("amm_config","utf8"),Wi=Buffer.from("pool","utf8"),qi=Buffer.from("pool_vault","utf8"),hd=Buffer.from("pool_reward_vault","utf8"),Id=Buffer.from("position","utf8"),Ui=Buffer.from("tick_array","utf8"),Bd=Buffer.from("operation","utf8"),Gi=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Sd=Buffer.from("observation","utf8"),xd=Buffer.from("support_mint","utf8"),Kd=Buffer.from("dynamic_fee_config","utf8");function ct(i,e,n){return ce([Ui,e.toBuffer(),to(n)],i)}function Ye(i,e){return ce([Gi,e.toBuffer()],i)}var Cd=Buffer.from("locked_position","utf8");import{sha256 as ir}from"js-sha256";import zi from"bn.js";import Nd 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 Fd=new zi(1).shln(256).subn(1);function no(i){return i.isZero()?-1:i.bitLength()-1}import _d from"bn.js";import Ud from"bn.js";import zd from"decimal.js";import{PublicKey as Lp}from"@solana/web3.js";import Np from"bn.js";import{TOKEN_2022_PROGRAM_ID as Wp}from"@solana/spl-token";import zp from"decimal.js";import wp from"bn.js";import sp from"bn.js";import ef from"bn.js";function te(i){let e=`global:${i}`;return Buffer.from(ir.digest(e)).slice(0,8)}eo.span;var Xf=E("Raydium_Clmm"),Yf={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"),collectRemain