@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
1 lines • 77.1 kB
JavaScript
var bo=Object.defineProperty,go=Object.defineProperties;var Po=Object.getOwnPropertyDescriptors;var st=Object.getOwnPropertySymbols;var an=Object.prototype.hasOwnProperty,sn=Object.prototype.propertyIsEnumerable;var rn=(r,e,n)=>e in r?bo(r,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[e]=n,O=(r,e)=>{for(var n in e||(e={}))an.call(e,n)&&rn(r,n,e[n]);if(st)for(var n of st(e))sn.call(e,n)&&rn(r,n,e[n]);return r},D=(r,e)=>go(r,Po(e));var pe=(r,e)=>{var n={};for(var o in r)an.call(r,o)&&e.indexOf(o)<0&&(n[o]=r[o]);if(r!=null&&st)for(var o of st(r))e.indexOf(o)<0&&sn.call(r,o)&&(n[o]=r[o]);return n};import{PublicKey as ko}from"@solana/web3.js";import{get as un,set as Ao}from"lodash";var xt=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}},cn={},wo={};function _(r){let e=un(cn,r);if(!e){let n=un(wo,r);e=new xt({name:r,logLevel:n}),Ao(cn,r,e)}return e}import{MINT_SIZE as Ba,TOKEN_PROGRAM_ID as Sa,getTransferFeeConfig as xa,unpackMint as Ka}from"@solana/spl-token";var Kt=_("Raydium_accountInfo_util");async function we(r,e,n){let{batchRequest:o,commitment:a="confirmed",chunkCount:l=100}=O({batchRequest:!1},n),p=Ct(e,l),c=new Array(p.length).fill([]);if(o){let b=p.map(T=>{let K=r._buildArgs([T.map(w=>w.toBase58())],a,"base64");return{methodName:"getMultipleAccounts",args:K}}),A=Ct(b,10);c=(await(await Promise.all(A.map(async T=>await r._rpcBatchRequest(T)))).flat()).map(T=>(T.error&&Kt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${T.error.message}`),T.result.value.map(K=>{if(K){let{data:w,executable:R,lamports:P,owner:k,rentEpoch:B}=K;return w.length!==2&&w[1]!=="base64"&&Kt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(w[0],"base64"),executable:R,lamports:P,owner:new ko(k),rentEpoch:B}}return null})))}else try{c=await Promise.all(p.map(b=>r.getMultipleAccountsInfo(b,a)))}catch(b){b instanceof Error&&Kt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${b.message}`)}return c.flat()}import Le from"bn.js";import yC from"decimal.js";import Co from"big.js";import za from"bn.js";import To from"toformat";var ho=To,Ye=ho;import ct from"big.js";import Bo from"bn.js";import So from"decimal.js-light";import Qe from"bn.js";var ln=9007199254740991;function re(r){let e=_("Raydium_parseBigNumberish");if(r instanceof Qe)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Qe(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=ln||r<=-ln)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Qe(String(r))):typeof r=="bigint"?new Qe(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Qe(0))}var ut=_("module/fraction"),Rt=Ye(ct),Ze=Ye(So),xo={[0]:Ze.ROUND_DOWN,[1]:Ze.ROUND_HALF_UP,[2]:Ze.ROUND_UP},Ko={[0]:ct.roundDown,[1]:ct.roundHalfUp,[2]:ct.roundUp},G=class{constructor(e,n=new Bo(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)||ut.logWithError(`${e} is not an integer.`),e<=0&&ut.logWithError(`${e} is not positive.`),Ze.set({precision:e+1,rounding:xo[o]});let a=new Ze(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)||ut.logWithError(`${e} is not an integer.`),e<0&&ut.logWithError(`${e} is negative.`),Rt.DP=e,Rt.RM=Ko[o]||1,new Rt(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,n)}isZero(){return this.numerator.isZero()}};var es=_("Raydium_amount"),ts=Ye(Co);import{PublicKey as Lo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as mn}from"@solana/spl-token";var lt={chainId:101,address:Lo.default.toBase58(),programId:mn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},fe={chainId:101,address:"So11111111111111111111111111111111111111112",programId:mn.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 Ot}from"@solana/web3.js";import{PublicKey as X,SystemProgram as dn,SYSVAR_RENT_PUBKEY as Oo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as No}from"@solana/spl-token";function Ne({pubkey:r,isSigner:e=!1,isWritable:n=!0}){return{pubkey:r,isWritable:n,isSigner:e}}var Mo=[Ne({pubkey:No,isWritable:!1}),Ne({pubkey:dn.programId,isWritable:!1}),Ne({pubkey:Oo,isWritable:!1})];function pn({publicKey:r,transformSol:e}){let n=fn(r.toString());if(n instanceof X)return e&&n.equals(Ie)?ke:n;if(e&&n.toString()===Ie.toBase58())return ke;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 fn(r){try{return new X(r)}catch{return r}}var Lt=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),He=new X("SysvarRent111111111111111111111111111111111"),cs=new X("SysvarC1ock11111111111111111111111111111111"),mt=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Fo=new X("Sysvar1nstructions1111111111111111111111111"),vo=dn.programId,ls=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ms=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),ds=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),ps=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),fs=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),ys=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),bs=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),gs=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ps=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),As=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),ws=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ke=new X("So11111111111111111111111111111111111111112"),Ie=X.default;var Nt=class{constructor({mint:e,decimals:n,symbol:o,name:a,skipMint:l=!1,isToken2022:p=!1}){if(e===Ie.toBase58()||e instanceof Ot&&Ie.equals(e)){this.decimals=fe.decimals,this.symbol=fe.symbol,this.name=fe.name,this.mint=new Ot(fe.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?Ot.default:pn({publicKey:e}),this.isToken2022=p}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ne=Nt;ne.WSOL=new Nt(D(O({},fe),{mint:fe.address}));var Mt=class{constructor({decimals:e,symbol:n="UNKNOWN",name:o="UNKNOWN"}){this.decimals=e,this.symbol=n,this.name=o}equals(e){return this===e}},dt=Mt;dt.SOL=new Mt(lt);import Vo from"bn.js";var Os=new G(new Vo(100));var _s=_("Raydium_price");import{merge as gK}from"lodash";import Ys from"axios";var yn={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"},_o=D(O({},yn),{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 bu=_("Raydium_Api");import{PublicKey as Fl,SystemProgram as vl}from"@solana/web3.js";import{AccountLayout as Wl,createAssociatedTokenAccountIdempotentInstruction as ql,TOKEN_PROGRAM_ID as Ul,TOKEN_2022_PROGRAM_ID as Gl}from"@solana/spl-token";import{PublicKey as _e,sendAndConfirmTransaction as Dt,SystemProgram as Go,Transaction as Je,TransactionMessage as et,VersionedTransaction as tt}from"@solana/web3.js";import zo from"axios";import{PublicKey as Ft,AddressLookupTableAccount as ve}from"@solana/web3.js";async function vt({connection:r,address:e,cluster:n="mainnet"}){let o=await we(r,[...new Set(e.map(l=>l.toString()))].map(l=>new Ft(l))),a={};for(let l=0;l<e.length;l++){let p=o[l],c=e[l];if(!p)continue;let b=new ve({key:c,state:ve.deserialize(p.data)});a[c.toString()]=b,n==="devnet"?Fe[c.toString()]=b:Me[c.toString()]=b}return a}var Me={},Vt=async r=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Me[e])return Me;let n=new Ft(e),o=await r.getAccountInfo(n);return o&&(Me[e]=new ve({key:n,state:ve.deserialize(o.data)})),Me},Fe={},_t=async r=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Fe[e])return Fe;let n=new Ft(e),o=await r.getAccountInfo(n);return o&&(Fe[e]=new ve({key:n,state:ve.deserialize(o.data)})),Fe};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 bn,Keypair as Pn,PublicKey as Eo,Transaction as An,TransactionMessage as Do,VersionedTransaction as wn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Wo}from"@solana/spl-token";var gn=_("Raydium_txUtil"),kn=1644;function pt(r){let e=[],n=[];return r.microLamports&&(e.push(bn.setComputeUnitPrice({microLamports:r.microLamports})),n.push(j.SetComputeUnitPrice)),r.units&&(e.push(bn.setComputeUnitLimit({units:r.units})),n.push(j.SetComputeUnitLimit)),{instructions:e,instructionTypes:n}}async function Ve(r,e){var o,a;let n=e!=null?e:"confirmed";return(a=await((o=r.getLatestBlockhash)==null?void 0:o.call(r,{commitment:n})))==null?void 0:a.blockhash}async function ft(r,e){return r.getSignatureStatuses([e]),new Promise((n,o)=>{let a=setTimeout(o,6e4);r.onSignature(e,l=>{if(clearTimeout(a),!l.err){n("");return}o(Object.assign(l.err,{txId:e}))},"confirmed")})}function Et(r,e){r.length<1&&gn.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&gn.logWithError(`no signers provided:, ${e.toString()}`);let n=new An;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=e[0],n.add(...r);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<kn}catch{return!1}}function ye(r,e){let[n,o]=Eo.findProgramAddressSync(r,e);return{publicKey:n,nonce:o}}function je({instructions:r,payer:e,signers:n}){return Et(r,[e,...n])}function $e({instructions:r,payer:e,lookupTableAddressAccount:n,recentBlockhash:o=Pn.generate().publicKey.toString()}){let l=new Do({payerKey:e,recentBlockhash:o,instructions:r}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new wn(l).serialize()).toString("base64").length<kn}catch{return!1}}var qo=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r),Uo=r=>{let e=r.serialize({requireAllSignatures:!1,verifySignatures:!1});r instanceof wn&&(e=qo(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Be(r){let e=[];return r.forEach(n=>{n instanceof An&&(n.recentBlockhash||(n.recentBlockhash=Wo.toBase58()),n.feePayer||(n.feePayer=Pn.generate().publicKey)),e.push(Uo(n))}),console.log("simulate tx string:",e),e}var yt=2e3,bt=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 zo.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}=pt(e);return this.instructions.unshift(...n),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(e){var n;return e?(this.endInstructions.push(Go.transfer({fromPubkey:(n=e.feePayer)!=null?n:this.feePayer,toPubkey:new _e(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:p=[]}){return this.instructions.push(...e),this.endInstructions.push(...n),this.signers.push(...o),this.instructionTypes.push(...a),this.endInstructionTypes.push(...l),this.lookupTableAddress.push(...p.filter(c=>c!==_e.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 Je;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 y;let{recentBlockHash:l,skipPreflight:p=!0,sendAndConfirm:c,notSendToRpc:b}=a||{},A=l!=null?l:await Ve(this.connection,this.blockhashCommitment);if(n.recentBlockhash=A,this.signers.length&&n.sign(...this.signers),Be([n]),(y=this.owner)!=null&&y.isKeyPair)return{txId:c?await Dt(this.connection,n,this.signers.find(K=>K.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p}):await this.connection.sendRawTransaction(n.serialize(),{skipPreflight:p}),signedTx:n};if(this.signAllTransactions){let T=await this.signAllTransactions([n]);if(this.signers.length)for(let K of T)try{K.sign(...this.signers)}catch{}return{txId:b?"":await this.connection.sendRawTransaction(T[0].serialize(),{skipPreflight:p}),signedTx:T[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var A;let{extraPreBuildData:n=[],extInfo:o}=e,{transaction:a}=this.build(o),l=n.filter(y=>y.transaction.instructions.length>0),p=[a,...l.map(y=>y.transaction)],c=[this.signers,...l.map(y=>y.signers)],b=[...this.instructionTypes,...l.map(y=>y.instructionTypes).flat()];return(A=this.owner)!=null&&A.signer&&c.forEach(y=>{y.some(T=>T.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:p,signers:c,instructionTypes:b,execute:async y=>{var B;let{sequentially:T,onTxUpdate:K,skipTxCount:w=0,recentBlockHash:R,skipPreflight:P=!0}=y||{},k=R!=null?R:await Ve(this.connection,this.blockhashCommitment);if((B=this.owner)!=null&&B.isKeyPair){if(T){let x=[],F=0;for(let v of p){if(++F,F<=w)continue;let g=await Dt(this.connection,v,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:P});x.push(g)}return{txIds:x,signedTxs:p}}return{txIds:await await Promise.all(p.map(async x=>(x.recentBlockhash=k,await this.connection.sendRawTransaction(x.serialize(),{skipPreflight:P})))),signedTxs:p}}if(this.signAllTransactions){let x=p.map((v,g)=>(v.recentBlockhash=k,c[g].length&&v.sign(...c[g]),v));Be(x);let F=await this.signAllTransactions(x);if(T){let v=0,g=[],h=async()=>{if(!F[v])return;let I=await this.connection.sendRawTransaction(F[v].serialize(),{skipPreflight:P});g.push({txId:I,status:"sent",signedTx:F[v]}),K==null||K([...g]),v++;let C=!1,L=null,V=null,se=U=>{L!==null&&clearInterval(L),V!==null&&this.connection.removeSignatureListener(V);let W=g.findIndex(ee=>ee.txId===I);if(W>-1){if(g[W].status==="error"||g[W].status==="success")return;g[W].status=U.err?"error":"success"}K==null||K([...g]),U.err||h()};this.loopMultiTxStatus&&(L=setInterval(async()=>{var U;if(C){clearInterval(L);return}try{let W=await this.connection.getTransaction(I,{commitment:"confirmed",maxSupportedTransactionVersion:0});W&&(C=!0,clearInterval(L),se({err:((U=W.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",I))}catch(W){C=!0,clearInterval(L),console.error("getTransaction timeout:",W,I)}},yt)),V=this.connection.onSignature(I,U=>{if(C){this.connection.removeSignatureListener(V);return}C=!0,se(U)},"confirmed"),this.connection.getSignatureStatus(I)};return await h(),{txIds:g.map(I=>I.txId),signedTxs:F}}else{let v=[];for(let g=0;g<F.length;g+=1){let h=await this.connection.sendRawTransaction(F[g].serialize(),{skipPreflight:P});v.push(h)}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 P;let R=e||{},{lookupTableCache:n={},lookupTableAddress:o=[],forerunCreate:a,recentBlockhash:l}=R,p=pe(R,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),c=O(O({},this.cluster==="devnet"?await _t(this.connection):await Vt(this.connection)),n),b=Array.from(new Set([...o,...this.lookupTableAddress])),A=[];for(let k of b)c[k]===void 0&&A.push(new _e(k));let y=await vt({connection:this.connection,address:A});for(let[k,B]of Object.entries(y))c[k]=B;let T=a?_e.default.toBase58():l!=null?l:await Ve(this.connection,this.blockhashCommitment),K=new et({payerKey:this.feePayer,recentBlockhash:T,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(c));((P=this.owner)==null?void 0:P.signer)&&!this.signers.some(k=>k.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let w=new tt(K);return w.sign(this.signers),{builder:this,transaction:w,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async k=>{var v;let{skipPreflight:B=!0,sendAndConfirm:x,notSendToRpc:F}=k||{};if(Be([w]),(v=this.owner)!=null&&v.isKeyPair){let g=await this.connection.sendTransaction(w,{skipPreflight:B});return x&&await ft(this.connection,g),{txId:g,signedTx:w}}if(this.signAllTransactions){let g=await this.signAllTransactions([w]);if(this.signers.length)for(let h of g)try{h.sign(this.signers)}catch{}return{txId:F?"":await this.connection.sendTransaction(g[0],{skipPreflight:B}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:p||{}}}async buildV0MultiTx(e){var A;let{extraPreBuildData:n=[],buildProps:o}=e,{transaction:a}=await this.buildV0(o),l=n.filter(y=>y.builder.instructions.length>0),p=[a,...l.map(y=>y.transaction)],c=[this.signers,...l.map(y=>y.signers)],b=[...this.instructionTypes,...l.map(y=>y.instructionTypes).flat()];return(A=this.owner)!=null&&A.signer&&c.forEach(y=>{y.some(T=>T.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),p.forEach(async(y,T)=>{y.sign(c[T])}),{builder:this,transactions:p,signers:c,instructionTypes:b,buildProps:o,execute:async y=>{var P;let{sequentially:T,onTxUpdate:K,recentBlockHash:w,skipPreflight:R=!0}=y||{};if(w&&p.forEach(k=>k.message.recentBlockhash=w),Be(p),(P=this.owner)!=null&&P.isKeyPair){if(T){let k=[];for(let B of p){let x=await this.connection.sendTransaction(B,{skipPreflight:R});await ft(this.connection,x),k.push(x)}return{txIds:k,signedTxs:p}}return{txIds:await Promise.all(p.map(async k=>await this.connection.sendTransaction(k,{skipPreflight:R}))),signedTxs:p}}if(this.signAllTransactions){let k=await this.signAllTransactions(p);if(T){let B=0,x=[],F=async()=>{if(!k[B])return;let v=await this.connection.sendTransaction(k[B],{skipPreflight:R});x.push({txId:v,status:"sent",signedTx:k[B]}),K==null||K([...x]),B++;let g=!1,h=null,I=null,C=L=>{h!==null&&clearInterval(h),I!==null&&this.connection.removeSignatureListener(I);let V=x.findIndex(se=>se.txId===v);if(V>-1){if(x[V].status==="error"||x[V].status==="success")return;x[V].status=L.err?"error":"success"}K==null||K([...x]),L.err||F()};this.loopMultiTxStatus&&(h=setInterval(async()=>{var L;if(g){clearInterval(h);return}try{let V=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(g=!0,clearInterval(h),C({err:((L=V.meta)==null?void 0:L.err)||null}),console.log("tx status from getTransaction:",v))}catch(V){g=!0,clearInterval(h),console.error("getTransaction timeout:",V,v)}},yt)),I=this.connection.onSignature(v,L=>{if(g){this.connection.removeSignatureListener(I);return}g=!0,C(L)},"confirmed"),this.connection.getSignatureStatus(v)};return F(),{txIds:[],signedTxs:k}}else{let B=[];for(let x=0;x<k.length;x+=1){let F=await this.connection.sendTransaction(k[x],{skipPreflight:R});B.push(F)}return{txIds:B,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var K;let T=e||{},{splitIns:n=[],computeBudgetConfig:o}=T,a=pe(T,["splitIns","computeBudgetConfig"]),l=o?pt(o):{instructions:[],instructionTypes:[]},p=this.signers.reduce((w,R)=>D(O({},w),{[R.publicKey.toBase58()]:R}),{}),c=[],b=[],A=[],y=0;if(this.allInstructions.forEach(w=>{let R=[...A,w],P=o?[...l.instructions,...R]:R,B=[...new Set(R.map(x=>x.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat()).values()].map(x=>new _e(x));if(w!==n[y]&&A.length<12&&(je({instructions:P,payer:this.feePayer,signers:B})||je({instructions:R,payer:this.feePayer,signers:B})))A.push(w);else{if(A.length===0)throw Error("item ins too big");y+=w===n[y]?1:0,je({instructions:o?[...l.instructions,...A]:[...A],payer:this.feePayer,signers:B})?c.push(new Je().add(...l.instructions,...A)):c.push(new Je().add(...A)),b.push(Array.from(new Set(A.map(x=>x.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat())).map(x=>p[x]).filter(x=>x!==void 0)),A=[w]}}),A.length>0){let R=[...new Set(A.map(P=>P.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat()).values()].map(P=>p[P]).filter(P=>P!==void 0);je({instructions:o?[...l.instructions,...A]:[...A],payer:this.feePayer,signers:R.map(P=>P.publicKey)})?c.push(new Je().add(...l.instructions,...A)):c.push(new Je().add(...A)),b.push(R)}return c.forEach(w=>w.feePayer=this.feePayer),(K=this.owner)!=null&&K.signer&&b.forEach(w=>{w.some(R=>R.publicKey.equals(this.owner.publicKey))||w.push(this.owner.signer)}),{builder:this,transactions:c,signers:b,instructionTypes:this.instructionTypes,execute:async w=>{var v;let{sequentially:R,onTxUpdate:P,skipTxCount:k=0,recentBlockHash:B,skipPreflight:x=!0}=w||{},F=B!=null?B:await Ve(this.connection,this.blockhashCommitment);if(c.forEach(async(g,h)=>{g.recentBlockhash=F,b[h].length&&g.sign(...b[h])}),Be(c),(v=this.owner)!=null&&v.isKeyPair){if(R){let g=0,h=[];for(let I of c){if(++g,g<=k){h.push("tx skipped");continue}let C=await Dt(this.connection,I,this.signers.find(L=>L.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:x});h.push(C)}return{txIds:h,signedTxs:c}}return{txIds:await Promise.all(c.map(async g=>await this.connection.sendRawTransaction(g.serialize(),{skipPreflight:x}))),signedTxs:c}}if(this.signAllTransactions){let g=await this.signAllTransactions(c.slice(k,c.length)),h=[...c.slice(0,k),...g];if(R){let I=0,C=[],L=async()=>{if(!h[I])return;I<k&&(C.push({txId:"",status:"success",signedTx:h[I]}),P==null||P([...C]),I++,L());let V=await this.connection.sendRawTransaction(h[I].serialize(),{skipPreflight:x});C.push({txId:V,status:"sent",signedTx:h[I]}),P==null||P([...C]),I++;let se=!1,U=null,W=null,ee=z=>{U!==null&&clearInterval(U),W!==null&&this.connection.removeSignatureListener(W);let ie=C.findIndex(Pe=>Pe.txId===V);if(ie>-1){if(C[ie].status==="error"||C[ie].status==="success")return;C[ie].status=z.err?"error":"success"}P==null||P([...C]),z.err||L()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var z;if(se){clearInterval(U);return}try{let ie=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});ie&&(se=!0,clearInterval(U),ee({err:((z=ie.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",V))}catch(ie){se=!0,clearInterval(U),console.error("getTransaction timeout:",ie,V)}},yt)),W=this.connection.onSignature(V,z=>{if(se){this.connection.removeSignatureListener(W);return}se=!0,ee(z)},"confirmed"),this.connection.getSignatureStatus(V)};return await L(),{txIds:C.map(V=>V.txId),signedTxs:h}}else{let I=[];for(let C=0;C<h.length;C+=1){let L=await this.connection.sendRawTransaction(h[C].serialize(),{skipPreflight:x});I.push(L)}return{txIds:I,signedTxs:h}}}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:p=12}=F,c=pe(F,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),b=O(O({},this.cluster==="devnet"?await _t(this.connection):await Vt(this.connection)),a),A=Array.from(new Set([...this.lookupTableAddress,...l])),y=[];for(let g of A)b[g]===void 0&&y.push(new _e(g));let T=await vt({connection:this.connection,address:y});for(let[g,h]of Object.entries(T))b[g]=h;let K=n?pt(n):{instructions:[],instructionTypes:[]},w=await Ve(this.connection,this.blockhashCommitment),R=this.signers.reduce((g,h)=>D(O({},g),{[h.publicKey.toBase58()]:h}),{}),P=[],k=[],B=[],x=0;if(this.allInstructions.forEach(g=>{let h=[...B,g],I=n?[...K.instructions,...h]:h;if(g!==o[x]&&B.length<p&&($e({instructions:I,payer:this.feePayer,lookupTableAddressAccount:b})||$e({instructions:h,payer:this.feePayer,lookupTableAddressAccount:b})))B.push(g);else{if(B.length===0)throw Error("item ins too big");x+=g===o[x]?1:0;let C={};for(let L of[...new Set(A)])b[L]!==void 0&&(C[L]=b[L]);if(n&&$e({instructions:[...K.instructions,...B],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:w})){let L=new et({payerKey:this.feePayer,recentBlockhash:w,instructions:[...K.instructions,...B]}).compileToV0Message(Object.values(b));P.push(new tt(L))}else{let L=new et({payerKey:this.feePayer,recentBlockhash:w,instructions:[...B]}).compileToV0Message(Object.values(b));P.push(new tt(L))}k.push(Array.from(new Set(B.map(L=>L.keys.filter(V=>V.isSigner).map(V=>V.pubkey.toString())).flat())).map(L=>R[L]).filter(L=>L!==void 0)),B=[g]}}),B.length>0){let h=[...new Set(B.map(I=>I.keys.filter(C=>C.isSigner).map(C=>C.pubkey.toString())).flat()).values()].map(I=>R[I]).filter(I=>I!==void 0);if(n&&$e({instructions:[...K.instructions,...B],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:w})){let I=new et({payerKey:this.feePayer,recentBlockhash:w,instructions:[...K.instructions,...B]}).compileToV0Message(Object.values(b));P.push(new tt(I))}else{let I=new et({payerKey:this.feePayer,recentBlockhash:w,instructions:[...B]}).compileToV0Message(Object.values(b));P.push(new tt(I))}k.push(h)}return(v=this.owner)!=null&&v.signer&&k.forEach(g=>{g.some(h=>h.publicKey.equals(this.owner.publicKey))||g.push(this.owner.signer)}),P.forEach((g,h)=>{g.sign(k[h])}),{builder:this,transactions:P,buildProps:e,signers:k,instructionTypes:this.instructionTypes,execute:async g=>{var se;let{sequentially:h,onTxUpdate:I,skipTxCount:C=0,recentBlockHash:L,skipPreflight:V=!0}=g||{};if(P.map(async(U,W)=>{k[W].length&&U.sign(k[W]),L&&(U.message.recentBlockhash=L)}),Be(P),(se=this.owner)!=null&&se.isKeyPair){if(h){let U=0,W=[];for(let ee of P){if(++U,U<=C){console.log("skip tx: ",U),W.push("tx skipped");continue}let z=await this.connection.sendTransaction(ee,{skipPreflight:V});await ft(this.connection,z),W.push(z)}return{txIds:W,signedTxs:P}}return{txIds:await Promise.all(P.map(async U=>await this.connection.sendTransaction(U,{skipPreflight:V}))),signedTxs:P}}if(this.signAllTransactions){let U=await this.signAllTransactions(P.slice(C,P.length)),W=[...P.slice(0,C),...U];if(h){let ee=0,z=[],ie=async()=>{if(!W[ee])return;if(ee<C){z.push({txId:"",status:"success",signedTx:W[ee]}),I==null||I([...z]),ee++,ie();return}let Pe=await this.connection.sendTransaction(W[ee],{skipPreflight:V});z.push({txId:Pe,status:"sent",signedTx:W[ee]}),I==null||I([...z]),ee++;let ze=!1,Oe=null,at=null,on=he=>{Oe!==null&&clearInterval(Oe),at!==null&&this.connection.removeSignatureListener(at);let Ae=z.findIndex(yo=>yo.txId===Pe);if(Ae>-1){if(z[Ae].status==="error"||z[Ae].status==="success")return;z[Ae].status=he.err?"error":"success"}I==null||I([...z]),he.err||ie()};this.loopMultiTxStatus&&(Oe=setInterval(async()=>{var he;if(ze){clearInterval(Oe);return}try{let Ae=await this.connection.getTransaction(Pe,{commitment:"confirmed",maxSupportedTransactionVersion:0});Ae&&(ze=!0,clearInterval(Oe),on({err:((he=Ae.meta)==null?void 0:he.err)||null}),console.log("tx status from getTransaction:",Pe))}catch(Ae){ze=!0,clearInterval(Oe),console.error("getTransaction timeout:",Ae,Pe)}},yt)),at=this.connection.onSignature(Pe,he=>{if(ze){this.connection.removeSignatureListener(at);return}ze=!0,on(he)},"confirmed"),this.connection.getSignatureStatus(Pe)};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:c||{}}}};var Wt=(...r)=>r.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 bt({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(Wt(e))}logInfo(...e){this.logger.info(Wt(e))}logAndCreateError(...e){let n=Wt(e);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as dl,SystemProgram as fl}from"@solana/web3.js";import gl from"bn.js";import{createCloseAccountInstruction as kl,createInitializeAccountInstruction as Tl,createTransferInstruction as hl,TOKEN_PROGRAM_ID as Il}from"@solana/spl-token";import{Keypair as Jc,PublicKey as el}from"@solana/web3.js";import ol from"bn.js";import{TOKEN_PROGRAM_ID as al}from"@solana/spl-token";import{PublicKey as oi}from"@solana/web3.js";import Sn,{isBN as xn}from"bn.js";import{bits as Xo,BitStructure as ic,blob as Yo,Blob as rc,cstr as ac,f32 as sc,f32be as uc,f64 as cc,f64be as lc,greedy as mc,Layout as Qo,ns64 as dc,ns64be as pc,nu64 as fc,nu64be as yc,offset as Zo,s16 as bc,s16be as gc,s24 as Pc,s24be as Ac,s32 as Ho,s32be as wc,s40 as kc,s40be as Tc,s48 as hc,s48be as Ic,s8 as Bc,seq as jo,struct as Sc,Structure as $o,u16 as Jo,u16be as xc,u24 as Kc,u24be as Cc,u32 as ei,u32be as Rc,u40 as Lc,u40be as Oc,u48 as Nc,u48be as Mc,u8 as ti,UInt as ni,union as Fc,Union as vc,unionLayoutDiscriminator as Vc,utf8 as _c}from"@solana/buffer-layout";var gt=Qo,Tn=$o;var qt=ni;var hn=ti,$=Jo;var Pt=ei;var me=Ho;var In=jo;var M=Yo;var Ut=Xo,Bn=Zo;var xe=class extends gt{constructor(n,o,a){super(n,a);this.blob=M(n),this.signed=o}decode(n,o=0){let a=new Sn(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 Sn(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),o,a)}},At=class extends gt{constructor(n){super(8,n);this._lower=Ut(Pt(),!1),this._upper=Ut(Pt(),!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 m(r){return new qt(1,r)}function Y(r){return new qt(4,r)}function t(r){return new xe(8,!1,r)}function N(r){return new xe(16,!1,r)}function Kn(r){return new xe(1,!0,r)}function Ee(r){return new xe(8,!0,r)}function Cn(r){return new xe(16,!0,r)}var nt=class extends gt{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 i(r){return new nt(M(32),e=>new oi(e),e=>e.toBuffer(),r)}function ue(r){return new nt(hn(),ii,ri,r)}function ii(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function ri(r){return r?1:0}function Rn(r,e){let n=Pt("length"),o=d([n,f(r,Bn(n,-n.span),"values")]);return new nt(o,({values:a})=>a,a=>({values:a}),e)}var Gt=class extends Tn{decode(e,n){return super.decode(e,n)}};function d(r,e,n){return new Gt(r,e,n)}function f(r,e,n){let o,a=typeof e=="number"?e:xn(e)?e.toNumber():new Proxy(e,{get(l,p){if(!o){let c=Reflect.get(l,"count");o=xn(c)?c.toNumber():c,Reflect.set(l,"count",o)}return Reflect.get(l,p)},set(l,p,c){return p==="count"&&(o=c),Reflect.set(l,p,c)}});return In(r,a,n)}var wt=d([i("mint"),i("owner"),t("amount"),Y("delegateOption"),i("delegate"),m("state"),Y("isNativeOption"),t("isNative"),t("delegatedAmount"),Y("closeAuthorityOption"),i("closeAuthority")]);import{PublicKey as Pg,SystemProgram as Ag}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as kg}from"@solana/spl-token";import{PublicKey as jl}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Jl}from"@solana/spl-token";import{PublicKey as S}from"@solana/web3.js";var On=new S("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Nn=new S("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Mn=new S("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),zt=new S("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),om=new S("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),si=new S("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Fn=new S("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),vn=new S("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),im=new S("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),ui=new S("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Vn=new S("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),ci=new S("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),li=new S("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),_n=new S("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),rm=new S("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),mi=new S("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Xt=new S("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),di=new S("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),am=new S("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),pi=new S("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),fi=new S("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),yi=new S("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),sm=new S("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),um=new S("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),cm=new S("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),lm=new S("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),mm=new S("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Te={OPEN_BOOK_PROGRAM:new S("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new S("Ray1111111111111111111111111111111111111111"),AMM_V4:new S("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new S("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new S("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new S("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new S("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new S("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new S("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new S("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new S("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new S("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:S.default,Router:new S("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new S("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new S("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new S("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new S("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new S("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new S("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new S("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new S("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new S("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new S("Ray1111111111111111111111111111111111111111")};import Lg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as Qf,TOKEN_2022_PROGRAM_ID as Zf,TOKEN_PROGRAM_ID as Hf}from"@solana/spl-token";import{PublicKey as $f}from"@solana/web3.js";import ey from"bn.js";import ny from"decimal.js";import{TOKEN_PROGRAM_ID as Bm}from"@solana/spl-token";import{PublicKey as Cm}from"@solana/web3.js";var bi=d([Y("mintAuthorityOption"),i("mintAuthority"),t("supply"),m("decimals"),m("isInitialized"),Y("freezeAuthorityOption"),i("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as gf,TOKEN_2022_PROGRAM_ID as Pf,TOKEN_PROGRAM_ID as Af}from"@solana/spl-token";import{Keypair as Tf,PublicKey as hf,SystemProgram as Bf,TransactionInstruction as Sf}from"@solana/web3.js";import Kf from"bn.js";import E from"bn.js";var J=new E(1).shln(64);var gi=new E(1).shln(128),Yt=new E(1).shln(64).subn(1),Pi=new E(1).shln(128).subn(1),We=-443636,qe=443636,Ke=new E("4295048016"),Ce=new E("79226673521066979257578248091"),En=new E("59543866431248"),Dn=new E("184467440737095516"),Wn=new E("15793534762490258745"),qn=16;var Qt=60,Wm=new E("18446743708227953217"),Un=[{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 ot=3,Gn=100;var zn=10,Xn=100,Tt=14;var q=new E(0),Re=new E(1),qm=new E(-1);var Um=new E("18446744073700000000");var Ai=d([M(8),m("bump"),$("index"),i("owner"),Y("protocolFeeRate"),Y("tradeFeeRate"),$("tickSpacing"),Y("fundFeeRate"),f(Y(),1),i("fundOwner"),f(t(),3)]),wi=d([Y("blockTimestamp"),Ee("tickCumulative"),f(t(),4)]),Yn=d([M(8),ue("initialized"),t("recentEpoch"),$("observationIndex"),i("poolId"),f(wi,Gn,"observations"),f(t(),4)]),ki=d([$("filterPeriod"),$("decayPeriod"),$("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),me("tickSpacingIndexReference"),Y("volatilityReference"),Y("volatilityAccumulator"),t("lastUpdateTimestamp"),f(m(),46)]),Ti=d([m("state"),t("openTime"),t("endTime"),t("lastUpdateTime"),N("emissionsPerSecondX64"),t("totalEmissioned"),t("claimed"),i("mint"),i("vault"),i("creator"),N("growthGlobalX64")]),Zt=d([M(8),m("bump"),i("configId"),i("creator"),i("mintA"),i("mintB"),i("vaultA"),i("vaultB"),i("observationId"),m("mintDecimalsA"),m("mintDecimalsB"),$("tickSpacing"),N("liquidity"),N("sqrtPriceX64"),me("tickCurrent"),Y(),N("feeGrowthGlobalX64A"),N("feeGrowthGlobalX64B"),t("protocolFeesTokenA"),t("protocolFeesTokenB"),f(N(),4),m("status"),m("feeOn"),M(6),f(Ti,ot,"rewardInfos"),M(8*16,"tickArrayBitmap"),f(t(),4),t("fundFeesTokenA"),t("fundFeesTokenB"),t("startTime"),t("recentEpoch"),ki.replicate("dynamicFeeInfo"),f(t(),46)]),hi=d([N("growthInsideLastX64"),t("rewardAmountOwed")]),Ii=d([M(8),m("bump"),i("nftMint"),i("poolId"),me("tickLower"),me("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),f(hi,ot,"rewardInfos"),t("recentEpoch"),f(t(),7)]),Ym=d([M(8),m("bump"),i("poolId"),me("tickLower"),me("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),f(N(),ot,"rewardGrowthInside"),t("recentEpoch"),f(t(),7)]),Bi=d([me("tick"),Cn("liquidityNet"),N("liquidityGross"),N("feeGrowthOutsideX64A"),N("feeGrowthOutsideX64B"),f(N(),ot,"rewardGrowthsOutsideX64"),t("orderPhase"),t("ordersAmount"),t("partFilledOrdersRemaining"),N("unfilledRatioX64"),f(Y(),3)]),Qn=d([M(8),i("poolId"),me("startTickIndex"),f(Bi,Qt,"ticks"),m("initializedTickCount"),t("recentEpoch"),f(m(),107)]),Si=d([M(8),m("bump"),f(i(),zn,"operationOwners"),f(i(),Xn,"whitelistMints")]),xi=d([M(8),i("poolId"),i("owner"),me("tick"),ue("zeroForOne"),t("orderPhase"),t("totalAmount"),t("filledAmount"),t("settleBase"),t("settleOutput"),t("openTime"),N("unfilledRatioX64"),f(t(),4)]),Zn=d([M(8),i("poolId"),M(8*8*Tt,"positiveTickArrayBitmap"),M(8*8*Tt,"negativeTickArrayBitmap")]),Qm=d([M(8),$("index"),$("filterPeriod"),$("decayPeriod"),$("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),f(t(),8)]),Ki=d([M(8),i("wallet"),m("nonceIndex"),t("orderNonce"),f(t(),4)]),Zm=d([t(),m("bump"),i("owner"),i("poolId"),i("positionId"),i("nftAccount"),f(t(),8)]),Ci=d([M(8),m("bump"),i("lockOwner"),i("poolId"),i("positionId"),i("nftAccount"),i("lockNftMint"),t("recentEpoch"),f(t(),8)]);import $m from"bn.js";var cd=Buffer.from("amm_config","utf8"),Ri=Buffer.from("pool","utf8"),Li=Buffer.from("pool_vault","utf8"),ld=Buffer.from("pool_reward_vault","utf8"),md=Buffer.from("position","utf8"),dd=Buffer.from("tick_array","utf8"),pd=Buffer.from("operation","utf8"),fd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),yd=Buffer.from("observation","utf8"),bd=Buffer.from("support_mint","utf8"),gd=Buffer.from("dynamic_fee_config","utf8");var Pd=Buffer.from("locked_position","utf8");import{sha256 as Xi}from"js-sha256";import Oi from"bn.js";import Td from"decimal.js";function ce(r,e,n){if(n.isZero())throw new Error("Division by zero");return r.mul(e).div(n)}function le(r,e,n){if(n.isZero())throw new Error("Division by zero");let o=r.mul(e),a=o.div(n);return o.mod(n).isZero()?a:a.addn(1)}var Id=new Oi(1).shln(256).subn(1);function Hn(r){return r.isZero()?-1:r.bitLength()-1}import xd from"bn.js";import Od from"bn.js";import Md from"decimal.js";import{PublicKey as Pp}from"@solana/web3.js";import wp from"bn.js";import{TOKEN_2022_PROGRAM_ID as Kp,TOKEN_PROGRAM_ID as Cp}from"@solana/spl-token";import Np from"decimal.js";import sp from"bn.js";import Qd from"bn.js";import Gp from"bn.js";function te(r){let e=`global:${r}`;return Buffer.from(Xi.digest(e)).slice(0,8)}Yn.span;var vf=_("Raydium_Clmm"),Vf={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 Jt}from"@solana/web3.js";var ji=d([m("instruction")]),$i=d([m("instruction")]),Ji=d([t("rewardState"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardLastUpdateTime"),t("totalReward"),t("totalRewardEmissioned"),t("rewardClaimed"),t(