@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
1 lines • 115 kB
JavaScript
var Zo=Object.defineProperty,Ho=Object.defineProperties;var jo=Object.getOwnPropertyDescriptors;var xt=Object.getOwnPropertySymbols;var Sn=Object.prototype.hasOwnProperty,xn=Object.prototype.propertyIsEnumerable;var Bn=(s,e,t)=>e in s?Zo(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,V=(s,e)=>{for(var t in e||(e={}))Sn.call(e,t)&&Bn(s,t,e[t]);if(xt)for(var t of xt(e))xn.call(e,t)&&Bn(s,t,e[t]);return s},D=(s,e)=>Ho(s,jo(e));var xe=(s,e)=>{var t={};for(var n in s)Sn.call(s,n)&&e.indexOf(n)<0&&(t[n]=s[n]);if(s!=null&&xt)for(var n of xt(s))e.indexOf(n)<0&&xn.call(s,n)&&(t[n]=s[n]);return t};import{PublicKey as ei}from"@solana/web3.js";import{get as Kn,set as $o}from"lodash";var Zt=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(n=>typeof n=="object"?JSON.stringify(n):n).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},Cn={},Jo={};function W(s){let e=Kn(Cn,s);if(!e){let t=Kn(Jo,s);e=new Zt({name:s,logLevel:t}),$o(Cn,s,e)}return e}import{MINT_SIZE as os,TOKEN_PROGRAM_ID as is,getTransferFeeConfig as rs,unpackMint as as}from"@solana/spl-token";var Ht=W("Raydium_accountInfo_util");async function Oe(s,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:a=100}=V({batchRequest:!1},t),u=jt(e,a),r=new Array(u.length).fill([]);if(n){let l=u.map(f=>{let w=s._buildArgs([f.map(p=>p.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:w}}),d=jt(l,10);r=(await(await Promise.all(d.map(async f=>await s._rpcBatchRequest(f)))).flat()).map(f=>(f.error&&Ht.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${f.error.message}`),f.result.value.map(w=>{if(w){let{data:p,executable:g,lamports:b,owner:y,rentEpoch:k}=w;return p.length!==2&&p[1]!=="base64"&&Ht.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:g,lamports:b,owner:new ei(y),rentEpoch:k}}return null})))}else try{r=await Promise.all(u.map(l=>s.getMultipleAccountsInfo(l,i)))}catch(l){l instanceof Error&&Ht.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.message}`)}return r.flat()}import $e from"bn.js";import fC from"decimal.js";import ui from"big.js";import hs from"bn.js";import ti from"toformat";var ni=ti,pt=ni;import Ct from"big.js";import ii from"bn.js";import ri from"decimal.js-light";import ft from"bn.js";var Rn=9007199254740991;function Pe(s){let e=W("Raydium_parseBigNumberish");if(s instanceof ft)return s;if(typeof s=="string"){if(s.match(/^-?[0-9]+$/))return new ft(s);e.logWithError(`invalid BigNumberish string: ${s}`)}return typeof s=="number"?(s%1&&e.logWithError(`BigNumberish number underflow: ${s}`),(s>=Rn||s<=-Rn)&&e.logWithError(`BigNumberish number overflow: ${s}`),new ft(String(s))):typeof s=="bigint"?new ft(s.toString()):(e.error(`invalid BigNumberish value: ${s}`),new ft(0))}var Kt=W("module/fraction"),$t=pt(Ct),yt=pt(ri),ai={[0]:yt.ROUND_DOWN,[1]:yt.ROUND_HALF_UP,[2]:yt.ROUND_UP},si={[0]:Ct.roundDown,[1]:Ct.roundHalfUp,[2]:Ct.roundUp},Z=class{constructor(e,t=new ii(1)){this.numerator=Pe(e),this.denominator=Pe(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new Z(this.denominator,this.numerator)}add(e){let t=e instanceof Z?e:new Z(Pe(e));return this.denominator.eq(t.denominator)?new Z(this.numerator.add(t.numerator),this.denominator):new Z(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof Z?e:new Z(Pe(e));return this.denominator.eq(t.denominator)?new Z(this.numerator.sub(t.numerator),this.denominator):new Z(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof Z?e:new Z(Pe(e));return new Z(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof Z?e:new Z(Pe(e));return new Z(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Kt.logWithError(`${e} is not an integer.`),e<=0&&Kt.logWithError(`${e} is not positive.`),yt.set({precision:e+1,rounding:ai[n]});let i=new yt(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Kt.logWithError(`${e} is not an integer.`),e<0&&Kt.logWithError(`${e} is negative.`),$t.DP=e,$t.RM=si[n]||1,new $t(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Os=W("Raydium_amount"),Ns=pt(ui);import{PublicKey as li}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ln}from"@solana/spl-token";var Rt={chainId:101,address:li.default.toBase58(),programId:Ln.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Ke={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Ln.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 Jt}from"@solana/web3.js";import{PublicKey as j,SystemProgram as On,SYSVAR_RENT_PUBKEY as mi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as di}from"@solana/spl-token";function et({pubkey:s,isSigner:e=!1,isWritable:t=!0}){return{pubkey:s,isWritable:t,isSigner:e}}var pi=[et({pubkey:di,isWritable:!1}),et({pubkey:On.programId,isWritable:!1}),et({pubkey:mi,isWritable:!1})];function Nn({publicKey:s,transformSol:e}){let t=Mn(s.toString());if(t instanceof j)return e&&t.equals(Ue)?Ne:t;if(e&&t.toString()===Ue.toBase58())return Ne;if(typeof t=="string"){if(t===j.default.toBase58())return j.default;try{return new j(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Mn(s){try{return new j(s)}catch{return s}}var _e=new j("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Be=new j("SysvarRent111111111111111111111111111111111"),Ws=new j("SysvarC1ock11111111111111111111111111111111"),Ee=new j("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),fi=new j("Sysvar1nstructions1111111111111111111111111"),yi=On.programId,qs=new j("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Us=new j("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Gs=new j("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),zs=new j("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Xs=new j("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ys=new j("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Qs=new j("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Zs=new j("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Hs=new j("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),js=new j("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),$s=new j("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ne=new j("So11111111111111111111111111111111111111112"),Ue=j.default;var en=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:a=!1,isToken2022:u=!1}){if(e===Ue.toBase58()||e instanceof Jt&&Ue.equals(e)){this.decimals=Ke.decimals,this.symbol=Ke.symbol,this.name=Ke.name,this.mint=new Jt(Ke.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=a?Jt.default:Nn({publicKey:e}),this.isToken2022=u}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ye=en;ye.WSOL=new en(D(V({},Ke),{mint:Ke.address}));var tn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Lt=tn;Lt.SOL=new tn(Rt);import bi from"bn.js";var lu=new Z(new bi(100));var bu=W("Raydium_price");import{merge as bK}from"lodash";import Bu from"axios";var Fn={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"},gi=D(V({},Fn),{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 Qu=W("Raydium_Api");import{PublicKey as pm,SystemProgram as fm}from"@solana/web3.js";import{AccountLayout as Am,createAssociatedTokenAccountIdempotentInstruction as wm,TOKEN_PROGRAM_ID as km,TOKEN_2022_PROGRAM_ID as Tm}from"@solana/spl-token";import{PublicKey as rt,sendAndConfirmTransaction as un,SystemProgram as hi,Transaction as Pt,TransactionMessage as At,VersionedTransaction as wt}from"@solana/web3.js";import Ii from"axios";import{PublicKey as nn,AddressLookupTableAccount as ot}from"@solana/web3.js";async function on({connection:s,address:e,cluster:t="mainnet"}){let n=await Oe(s,[...new Set(e.map(a=>a.toString()))].map(a=>new nn(a))),i={};for(let a=0;a<e.length;a++){let u=n[a],r=e[a];if(!u)continue;let l=new ot({key:r,state:ot.deserialize(u.data)});i[r.toString()]=l,t==="devnet"?nt[r.toString()]=l:tt[r.toString()]=l}return i}var tt={},rn=async s=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(tt[e])return tt;let t=new nn(e),n=await s.getAccountInfo(t);return n&&(tt[e]=new ot({key:t,state:ot.deserialize(n.data)})),tt},nt={},an=async s=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(nt[e])return nt;let t=new nn(e),n=await s.getAccountInfo(t);return n&&(nt[e]=new ot({key:t,state:ot.deserialize(n.data)})),nt};var q={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 vn,Keypair as _n,PublicKey as Pi,Transaction as En,TransactionMessage as Ai,VersionedTransaction as Dn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as wi}from"@solana/spl-token";var Vn=W("Raydium_txUtil"),Wn=1644;function Ot(s){let e=[],t=[];return s.microLamports&&(e.push(vn.setComputeUnitPrice({microLamports:s.microLamports})),t.push(q.SetComputeUnitPrice)),s.units&&(e.push(vn.setComputeUnitLimit({units:s.units})),t.push(q.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function it(s,e){var n,i;let t=e!=null?e:"confirmed";return(i=await((n=s.getLatestBlockhash)==null?void 0:n.call(s,{commitment:t})))==null?void 0:i.blockhash}async function Nt(s,e){return s.getSignatureStatuses([e]),new Promise((t,n)=>{let i=setTimeout(n,6e4);s.onSignature(e,a=>{if(clearTimeout(i),!a.err){t("");return}n(Object.assign(a.err,{txId:e}))},"confirmed")})}function sn(s,e){s.length<1&&Vn.logWithError(`no instructions provided: ${s.toString()}`),e.length<1&&Vn.logWithError(`no signers provided:, ${e.toString()}`);let t=new En;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...s);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Wn}catch{return!1}}function $(s,e){let[t,n]=Pi.findProgramAddressSync(s,e);return{publicKey:t,nonce:n}}function bt({instructions:s,payer:e,signers:t}){return sn(s,[e,...t])}function gt({instructions:s,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=_n.generate().publicKey.toString()}){let a=new Ai({payerKey:e,recentBlockhash:n,instructions:s}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Dn(a).serialize()).toString("base64").length<Wn}catch{return!1}}var ki=s=>Buffer.isBuffer(s)?s:s instanceof Uint8Array?Buffer.from(s.buffer,s.byteOffset,s.byteLength):Buffer.from(s),Ti=s=>{let e=s.serialize({requireAllSignatures:!1,verifySignatures:!1});s instanceof Dn&&(e=ki(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Ge(s){let e=[];return s.forEach(t=>{t instanceof En&&(t.recentBlockhash||(t.recentBlockhash=wi.toBase58()),t.feePayer||(t.feePayer=_n.generate().publicKey)),e.push(Ti(t))}),console.log("simulate tx string:",e),e}var Mt=2e3,Ft=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 n;let e=(await Ii.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=Ot(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(hi.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new rt(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(q.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:a=[],lookupTableAddress:u=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...a),this.lookupTableAddress.push(...u.filter(r=>r!==rt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:n}){return e===0?await this.buildV0(D(V({},t||{}),{lookupTableAddress:n})):this.build(t)}build(e){var n;let t=new Pt;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(i=>i.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async i=>{var c;let{recentBlockHash:a,skipPreflight:u=!0,sendAndConfirm:r,notSendToRpc:l}=i||{},d=a!=null?a:await it(this.connection,this.blockhashCommitment);if(t.recentBlockhash=d,this.signers.length&&t.sign(...this.signers),Ge([t]),(c=this.owner)!=null&&c.isKeyPair)return{txId:r?await un(this.connection,t,this.signers.find(w=>w.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:u}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:u}),signedTx:t};if(this.signAllTransactions){let f=await this.signAllTransactions([t]);if(this.signers.length)for(let w of f)try{w.sign(...this.signers)}catch{}return{txId:l?"":await this.connection.sendRawTransaction(f[0].serialize(),{skipPreflight:u}),signedTx:f[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var d;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),a=t.filter(c=>c.transaction.instructions.length>0),u=[i,...a.map(c=>c.transaction)],r=[this.signers,...a.map(c=>c.signers)],l=[...this.instructionTypes,...a.map(c=>c.instructionTypes).flat()];return(d=this.owner)!=null&&d.signer&&r.forEach(c=>{c.some(f=>f.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:u,signers:r,instructionTypes:l,execute:async c=>{var k;let{sequentially:f,onTxUpdate:w,skipTxCount:p=0,recentBlockHash:g,skipPreflight:b=!0}=c||{},y=g!=null?g:await it(this.connection,this.blockhashCommitment);if((k=this.owner)!=null&&k.isKeyPair){if(f){let T=[],R=0;for(let O of u){if(++R,R<=p)continue;let I=await un(this.connection,O,this.signers.find(K=>K.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:b});T.push(I)}return{txIds:T,signedTxs:u}}return{txIds:await await Promise.all(u.map(async T=>(T.recentBlockhash=y,await this.connection.sendRawTransaction(T.serialize(),{skipPreflight:b})))),signedTxs:u}}if(this.signAllTransactions){let T=u.map((O,I)=>(O.recentBlockhash=y,r[I].length&&O.sign(...r[I]),O));Ge(T);let R=await this.signAllTransactions(T);if(f){let O=0,I=[],K=async()=>{if(!R[O])return;let x=await this.connection.sendRawTransaction(R[O].serialize(),{skipPreflight:b});I.push({txId:x,status:"sent",signedTx:R[O]}),w==null||w([...I]),O++;let L=!1,N=null,v=null,se=z=>{N!==null&&clearInterval(N),v!==null&&this.connection.removeSignatureListener(v);let E=I.findIndex(te=>te.txId===x);if(E>-1){if(I[E].status==="error"||I[E].status==="success")return;I[E].status=z.err?"error":"success"}w==null||w([...I]),z.err||K()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var z;if(L){clearInterval(N);return}try{let E=await this.connection.getTransaction(x,{commitment:"confirmed",maxSupportedTransactionVersion:0});E&&(L=!0,clearInterval(N),se({err:((z=E.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",x))}catch(E){L=!0,clearInterval(N),console.error("getTransaction timeout:",E,x)}},Mt)),v=this.connection.onSignature(x,z=>{if(L){this.connection.removeSignatureListener(v);return}L=!0,se(z)},"confirmed"),this.connection.getSignatureStatus(x)};return await K(),{txIds:I.map(x=>x.txId),signedTxs:R}}else{let O=[];for(let I=0;I<R.length;I+=1){let K=await this.connection.sendRawTransaction(R[I].serialize(),{skipPreflight:b});O.push(K)}return{txIds:O,signedTxs:R}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){var b;let g=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i,recentBlockhash:a}=g,u=xe(g,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),r=V(V({},this.cluster==="devnet"?await an(this.connection):await rn(this.connection)),t),l=Array.from(new Set([...n,...this.lookupTableAddress])),d=[];for(let y of l)r[y]===void 0&&d.push(new rt(y));let c=await on({connection:this.connection,address:d});for(let[y,k]of Object.entries(c))r[y]=k;let f=i?rt.default.toBase58():a!=null?a:await it(this.connection,this.blockhashCommitment),w=new At({payerKey:this.feePayer,recentBlockhash:f,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(r));((b=this.owner)==null?void 0:b.signer)&&!this.signers.some(y=>y.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let p=new wt(w);return p.sign(this.signers),{builder:this,transaction:p,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async y=>{var O;let{skipPreflight:k=!0,sendAndConfirm:T,notSendToRpc:R}=y||{};if(Ge([p]),(O=this.owner)!=null&&O.isKeyPair){let I=await this.connection.sendTransaction(p,{skipPreflight:k});return T&&await Nt(this.connection,I),{txId:I,signedTx:p}}if(this.signAllTransactions){let I=await this.signAllTransactions([p]);if(this.signers.length)for(let K of I)try{K.sign(this.signers)}catch{}return{txId:R?"":await this.connection.sendTransaction(I[0],{skipPreflight:k}),signedTx:I[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:u||{}}}async buildV0MultiTx(e){var d;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),a=t.filter(c=>c.builder.instructions.length>0),u=[i,...a.map(c=>c.transaction)],r=[this.signers,...a.map(c=>c.signers)],l=[...this.instructionTypes,...a.map(c=>c.instructionTypes).flat()];return(d=this.owner)!=null&&d.signer&&r.forEach(c=>{c.some(f=>f.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),u.forEach(async(c,f)=>{c.sign(r[f])}),{builder:this,transactions:u,signers:r,instructionTypes:l,buildProps:n,execute:async c=>{var b;let{sequentially:f,onTxUpdate:w,recentBlockHash:p,skipPreflight:g=!0}=c||{};if(p&&u.forEach(y=>y.message.recentBlockhash=p),Ge(u),(b=this.owner)!=null&&b.isKeyPair){if(f){let y=[];for(let k of u){let T=await this.connection.sendTransaction(k,{skipPreflight:g});await Nt(this.connection,T),y.push(T)}return{txIds:y,signedTxs:u}}return{txIds:await Promise.all(u.map(async y=>await this.connection.sendTransaction(y,{skipPreflight:g}))),signedTxs:u}}if(this.signAllTransactions){let y=await this.signAllTransactions(u);if(f){let k=0,T=[],R=async()=>{if(!y[k])return;let O=await this.connection.sendTransaction(y[k],{skipPreflight:g});T.push({txId:O,status:"sent",signedTx:y[k]}),w==null||w([...T]),k++;let I=!1,K=null,x=null,L=N=>{K!==null&&clearInterval(K),x!==null&&this.connection.removeSignatureListener(x);let v=T.findIndex(se=>se.txId===O);if(v>-1){if(T[v].status==="error"||T[v].status==="success")return;T[v].status=N.err?"error":"success"}w==null||w([...T]),N.err||R()};this.loopMultiTxStatus&&(K=setInterval(async()=>{var N;if(I){clearInterval(K);return}try{let v=await this.connection.getTransaction(O,{commitment:"confirmed",maxSupportedTransactionVersion:0});v&&(I=!0,clearInterval(K),L({err:((N=v.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",O))}catch(v){I=!0,clearInterval(K),console.error("getTransaction timeout:",v,O)}},Mt)),x=this.connection.onSignature(O,N=>{if(I){this.connection.removeSignatureListener(x);return}I=!0,L(N)},"confirmed"),this.connection.getSignatureStatus(O)};return R(),{txIds:[],signedTxs:y}}else{let k=[];for(let T=0;T<y.length;T+=1){let R=await this.connection.sendTransaction(y[T],{skipPreflight:g});k.push(R)}return{txIds:k,signedTxs:y}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var w;let f=e||{},{splitIns:t=[],computeBudgetConfig:n}=f,i=xe(f,["splitIns","computeBudgetConfig"]),a=n?Ot(n):{instructions:[],instructionTypes:[]},u=this.signers.reduce((p,g)=>D(V({},p),{[g.publicKey.toBase58()]:g}),{}),r=[],l=[],d=[],c=0;if(this.allInstructions.forEach(p=>{let g=[...d,p],b=n?[...a.instructions,...g]:g,k=[...new Set(g.map(T=>T.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat()).values()].map(T=>new rt(T));if(p!==t[c]&&d.length<12&&(bt({instructions:b,payer:this.feePayer,signers:k})||bt({instructions:g,payer:this.feePayer,signers:k})))d.push(p);else{if(d.length===0)throw Error("item ins too big");c+=p===t[c]?1:0,bt({instructions:n?[...a.instructions,...d]:[...d],payer:this.feePayer,signers:k})?r.push(new Pt().add(...a.instructions,...d)):r.push(new Pt().add(...d)),l.push(Array.from(new Set(d.map(T=>T.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat())).map(T=>u[T]).filter(T=>T!==void 0)),d=[p]}}),d.length>0){let g=[...new Set(d.map(b=>b.keys.filter(y=>y.isSigner).map(y=>y.pubkey.toString())).flat()).values()].map(b=>u[b]).filter(b=>b!==void 0);bt({instructions:n?[...a.instructions,...d]:[...d],payer:this.feePayer,signers:g.map(b=>b.publicKey)})?r.push(new Pt().add(...a.instructions,...d)):r.push(new Pt().add(...d)),l.push(g)}return r.forEach(p=>p.feePayer=this.feePayer),(w=this.owner)!=null&&w.signer&&l.forEach(p=>{p.some(g=>g.publicKey.equals(this.owner.publicKey))||p.push(this.owner.signer)}),{builder:this,transactions:r,signers:l,instructionTypes:this.instructionTypes,execute:async p=>{var O;let{sequentially:g,onTxUpdate:b,skipTxCount:y=0,recentBlockHash:k,skipPreflight:T=!0}=p||{},R=k!=null?k:await it(this.connection,this.blockhashCommitment);if(r.forEach(async(I,K)=>{I.recentBlockhash=R,l[K].length&&I.sign(...l[K])}),Ge(r),(O=this.owner)!=null&&O.isKeyPair){if(g){let I=0,K=[];for(let x of r){if(++I,I<=y){K.push("tx skipped");continue}let L=await un(this.connection,x,this.signers.find(N=>N.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:T});K.push(L)}return{txIds:K,signedTxs:r}}return{txIds:await Promise.all(r.map(async I=>await this.connection.sendRawTransaction(I.serialize(),{skipPreflight:T}))),signedTxs:r}}if(this.signAllTransactions){let I=await this.signAllTransactions(r.slice(y,r.length)),K=[...r.slice(0,y),...I];if(g){let x=0,L=[],N=async()=>{if(!K[x])return;x<y&&(L.push({txId:"",status:"success",signedTx:K[x]}),b==null||b([...L]),x++,N());let v=await this.connection.sendRawTransaction(K[x].serialize(),{skipPreflight:T});L.push({txId:v,status:"sent",signedTx:K[x]}),b==null||b([...L]),x++;let se=!1,z=null,E=null,te=Q=>{z!==null&&clearInterval(z),E!==null&&this.connection.removeSignatureListener(E);let ge=L.findIndex(Re=>Re.txId===v);if(ge>-1){if(L[ge].status==="error"||L[ge].status==="success")return;L[ge].status=Q.err?"error":"success"}b==null||b([...L]),Q.err||N()};this.loopMultiTxStatus&&(z=setInterval(async()=>{var Q;if(se){clearInterval(z);return}try{let ge=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});ge&&(se=!0,clearInterval(z),te({err:((Q=ge.meta)==null?void 0:Q.err)||null}),console.log("tx status from getTransaction:",v))}catch(ge){se=!0,clearInterval(z),console.error("getTransaction timeout:",ge,v)}},Mt)),E=this.connection.onSignature(v,Q=>{if(se){this.connection.removeSignatureListener(E);return}se=!0,te(Q)},"confirmed"),this.connection.getSignatureStatus(v)};return await N(),{txIds:L.map(v=>v.txId),signedTxs:K}}else{let x=[];for(let L=0;L<K.length;L+=1){let N=await this.connection.sendRawTransaction(K[L].serialize(),{skipPreflight:T});x.push(N)}return{txIds:x,signedTxs:K}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var O;let R=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:i={},lookupTableAddress:a=[],insCountLimit:u=12}=R,r=xe(R,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),l=V(V({},this.cluster==="devnet"?await an(this.connection):await rn(this.connection)),i),d=Array.from(new Set([...this.lookupTableAddress,...a])),c=[];for(let I of d)l[I]===void 0&&c.push(new rt(I));let f=await on({connection:this.connection,address:c});for(let[I,K]of Object.entries(f))l[I]=K;let w=t?Ot(t):{instructions:[],instructionTypes:[]},p=await it(this.connection,this.blockhashCommitment),g=this.signers.reduce((I,K)=>D(V({},I),{[K.publicKey.toBase58()]:K}),{}),b=[],y=[],k=[],T=0;if(this.allInstructions.forEach(I=>{let K=[...k,I],x=t?[...w.instructions,...K]:K;if(I!==n[T]&&k.length<u&&(gt({instructions:x,payer:this.feePayer,lookupTableAddressAccount:l})||gt({instructions:K,payer:this.feePayer,lookupTableAddressAccount:l})))k.push(I);else{if(k.length===0)throw Error("item ins too big");T+=I===n[T]?1:0;let L={};for(let N of[...new Set(d)])l[N]!==void 0&&(L[N]=l[N]);if(t&>({instructions:[...w.instructions,...k],payer:this.feePayer,lookupTableAddressAccount:l,recentBlockhash:p})){let N=new At({payerKey:this.feePayer,recentBlockhash:p,instructions:[...w.instructions,...k]}).compileToV0Message(Object.values(l));b.push(new wt(N))}else{let N=new At({payerKey:this.feePayer,recentBlockhash:p,instructions:[...k]}).compileToV0Message(Object.values(l));b.push(new wt(N))}y.push(Array.from(new Set(k.map(N=>N.keys.filter(v=>v.isSigner).map(v=>v.pubkey.toString())).flat())).map(N=>g[N]).filter(N=>N!==void 0)),k=[I]}}),k.length>0){let K=[...new Set(k.map(x=>x.keys.filter(L=>L.isSigner).map(L=>L.pubkey.toString())).flat()).values()].map(x=>g[x]).filter(x=>x!==void 0);if(t&>({instructions:[...w.instructions,...k],payer:this.feePayer,lookupTableAddressAccount:l,recentBlockhash:p})){let x=new At({payerKey:this.feePayer,recentBlockhash:p,instructions:[...w.instructions,...k]}).compileToV0Message(Object.values(l));b.push(new wt(x))}else{let x=new At({payerKey:this.feePayer,recentBlockhash:p,instructions:[...k]}).compileToV0Message(Object.values(l));b.push(new wt(x))}y.push(K)}return(O=this.owner)!=null&&O.signer&&y.forEach(I=>{I.some(K=>K.publicKey.equals(this.owner.publicKey))||I.push(this.owner.signer)}),b.forEach((I,K)=>{I.sign(y[K])}),{builder:this,transactions:b,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async I=>{var se;let{sequentially:K,onTxUpdate:x,skipTxCount:L=0,recentBlockHash:N,skipPreflight:v=!0}=I||{};if(b.map(async(z,E)=>{y[E].length&&z.sign(y[E]),N&&(z.message.recentBlockhash=N)}),Ge(b),(se=this.owner)!=null&&se.isKeyPair){if(K){let z=0,E=[];for(let te of b){if(++z,z<=L){console.log("skip tx: ",z),E.push("tx skipped");continue}let Q=await this.connection.sendTransaction(te,{skipPreflight:v});await Nt(this.connection,Q),E.push(Q)}return{txIds:E,signedTxs:b}}return{txIds:await Promise.all(b.map(async z=>await this.connection.sendTransaction(z,{skipPreflight:v}))),signedTxs:b}}if(this.signAllTransactions){let z=await this.signAllTransactions(b.slice(L,b.length)),E=[...b.slice(0,L),...z];if(K){let te=0,Q=[],ge=async()=>{if(!E[te])return;if(te<L){Q.push({txId:"",status:"success",signedTx:E[te]}),x==null||x([...Q]),te++,ge();return}let Re=await this.connection.sendTransaction(E[te],{skipPreflight:v});Q.push({txId:Re,status:"sent",signedTx:E[te]}),x==null||x([...Q]),te++;let mt=!1,Je=null,St=null,In=qe=>{Je!==null&&clearInterval(Je),St!==null&&this.connection.removeSignatureListener(St);let Le=Q.findIndex(Qo=>Qo.txId===Re);if(Le>-1){if(Q[Le].status==="error"||Q[Le].status==="success")return;Q[Le].status=qe.err?"error":"success"}x==null||x([...Q]),qe.err||ge()};this.loopMultiTxStatus&&(Je=setInterval(async()=>{var qe;if(mt){clearInterval(Je);return}try{let Le=await this.connection.getTransaction(Re,{commitment:"confirmed",maxSupportedTransactionVersion:0});Le&&(mt=!0,clearInterval(Je),In({err:((qe=Le.meta)==null?void 0:qe.err)||null}),console.log("tx status from getTransaction:",Re))}catch(Le){mt=!0,clearInterval(Je),console.error("getTransaction timeout:",Le,Re)}},Mt)),St=this.connection.onSignature(Re,qe=>{if(mt){this.connection.removeSignatureListener(St);return}mt=!0,In(qe)},"confirmed"),this.connection.getSignatureStatus(Re)};return ge(),{txIds:[],signedTxs:E}}else{let te=[];for(let Q=0;Q<E.length;Q+=1){let ge=await this.connection.sendTransaction(E[Q],{skipPreflight:v});te.push(ge)}return{txIds:te,signedTxs:E}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}};var cn=(...s)=>s.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Ae=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=W(t)}createTxBuilder(e){return this.scope.checkOwner(),new Ft({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(cn(e))}logInfo(...e){this.logger.info(cn(e))}logAndCreateError(...e){let t=cn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Gl,SystemProgram as Xl}from"@solana/web3.js";import Zl from"bn.js";import{createCloseAccountInstruction as Jl,createInitializeAccountInstruction as em,createTransferInstruction as tm,TOKEN_PROGRAM_ID as nm}from"@solana/spl-token";import{Keypair as Ll,PublicKey as Ol}from"@solana/web3.js";import Fl from"bn.js";import{TOKEN_PROGRAM_ID as _l}from"@solana/spl-token";import{PublicKey as vi}from"@solana/web3.js";import Xn,{isBN as Yn}from"bn.js";import{bits as Bi,BitStructure as vc,blob as Si,Blob as Vc,cstr as _c,f32 as Ec,f32be as Dc,f64 as Wc,f64be as qc,greedy as Uc,Layout as xi,ns64 as Gc,ns64be as zc,nu64 as Xc,nu64be as Yc,offset as Ki,s16 as Qc,s16be as Zc,s24 as Hc,s24be as jc,s32 as Ci,s32be as $c,s40 as Jc,s40be as el,s48 as tl,s48be as nl,s8 as ol,seq as Ri,struct as il,Structure as Li,u16 as Oi,u16be as rl,u24 as al,u24be as sl,u32 as Ni,u32be as ul,u40 as cl,u40be as ll,u48 as ml,u48be as dl,u8 as Mi,UInt as Fi,union as pl,Union as fl,unionLayoutDiscriminator as yl,utf8 as bl}from"@solana/buffer-layout";var vt=xi,qn=Li;var ln=Fi;var Un=Mi,me=Oi;var Vt=Ni;var re=Ci;var Gn=Ri;var _=Si;var mn=Bi,zn=Ki;var Xe=class extends vt{constructor(t,n,i){super(t,i);this.blob=_(t),this.signed=n}decode(t,n=0){let i=new Xn(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new Xn(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},_t=class extends vt{constructor(t){super(8,t);this._lower=mn(Vt(),!1),this._upper=mn(Vt(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let i=this._lower.decode(t,n),a=this._upper.decode(t,n+this._lower.span);return V(V({},i),a)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function B(s){return new ln(1,s)}function J(s){return new ln(4,s)}function o(s){return new Xe(8,!1,s)}function M(s){return new Xe(16,!1,s)}function Qn(s){return new Xe(1,!0,s)}function at(s){return new Xe(8,!0,s)}function Zn(s){return new Xe(16,!0,s)}var kt=class extends vt{constructor(t,n,i,a){super(t.span,a);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function m(s){return new kt(_(32),e=>new vi(e),e=>e.toBuffer(),s)}function ne(s){return new kt(Un(),Vi,_i,s)}function Vi(s){if(s===0)return!1;if(s===1)return!0;throw new Error("Invalid bool: "+s)}function _i(s){return s?1:0}function Hn(s,e){let t=Vt("length"),n=h([t,C(s,zn(t,-t.span),"values")]);return new kt(n,({values:i})=>i,i=>({values:i}),e)}var dn=class extends qn{decode(e,t){return super.decode(e,t)}};function h(s,e,t){return new dn(s,e,t)}function C(s,e,t){let n,i=typeof e=="number"?e:Yn(e)?e.toNumber():new Proxy(e,{get(a,u){if(!n){let r=Reflect.get(a,"count");n=Yn(r)?r.toNumber():r,Reflect.set(a,"count",n)}return Reflect.get(a,u)},set(a,u,r){return u==="count"&&(n=r),Reflect.set(a,u,r)}});return Gn(s,i,t)}var Et=h([m("mint"),m("owner"),o("amount"),J("delegateOption"),m("delegate"),B("state"),J("isNativeOption"),o("isNative"),o("delegatedAmount"),J("closeAuthorityOption"),m("closeAuthority")]);import{PublicKey as gg,SystemProgram as Pg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as wg}from"@solana/spl-token";import{PublicKey as Di}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Wi}from"@solana/spl-token";function G(s,e,t){return $([s.toBuffer(),(t!=null?t:Wi).toBuffer(),e.toBuffer()],new Di("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as F}from"@solana/web3.js";var $n=new F("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Jn=new F("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),eo=new F("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),pn=new F("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Nm=new F("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),qi=new F("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),to=new F("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),no=new F("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Mm=new F("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Ui=new F("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),oo=new F("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Gi=new F("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),zi=new F("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),io=new F("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Fm=new F("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Xi=new F("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),fn=new F("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Yi=new F("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),vm=new F("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Qi=new F("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Zi=new F("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Hi=new F("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Vm=new F("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),_m=new F("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Em=new F("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Dm=new F("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Wm=new F("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var De={OPEN_BOOK_PROGRAM:new F("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new F("Ray1111111111111111111111111111111111111111"),AMM_V4:new F("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new F("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new F("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new F("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new F("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new F("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new F("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new F("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new F("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new F("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:F.default,Router:new F("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new F("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new F("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new F("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new F("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new F("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new F("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new F("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new F("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new F("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new F("Ray1111111111111111111111111111111111111111")};import Rg 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 td}from"@solana/spl-token";import{PublicKey as rd}from"@solana/web3.js";var ji=h([J("mintAuthorityOption"),m("mintAuthority"),o("supply"),B("decimals"),B("isInitialized"),J("freezeAuthorityOption"),m("freezeAuthority")]);import U from"bn.js";var ae=new U(1).shln(64);var $i=new U(1).shln(128),Ye=new U(1).shln(64).subn(1),Ji=new U(1).shln(128).subn(1),Me=-443636,Fe=443636,Qe=new U("4295048016"),Ze=new U("79226673521066979257578248091"),ro=new U("59543866431248"),ao=new U("184467440737095516"),so=new U("15793534762490258745"),uo=16,Wt=512,we=60,gd=new U("18446743708227953217"),co=[{bit:0,factor:new U("fffcb933bd6fb800",16)},{bit:1,factor:new U("fff97272373d4000",16)},{bit:2,factor:new U("fff2e50f5f657000",16)},{bit:3,factor:new U("ffe5caca7e10f000",16)},{bit:4,factor:new U("ffcb9843d60f7000",16)},{bit:5,factor:new U("ff973b41fa98e800",16)},{bit:6,factor:new U("ff2ea16466c9b000",16)},{bit:7,factor:new U("fe5dee046a9a3800",16)},{bit:8,factor:new U("fcbe86c7900bb000",16)},{bit:9,factor:new U("f987a7253ac65800",16)},{bit:10,factor:new U("f3392b0822bb6000",16)},{bit:11,factor:new U("e7159475a2caf000",16)},{bit:12,factor:new U("d097f3bdfd2f2000",16)},{bit:13,factor:new U("a9f746462d9f8000",16)},{bit:14,factor:new U("70d869a156f31c00",16)},{bit:15,factor:new U("31be135f97ed3200",16)},{bit:16,factor:new U("9aa508b5b85a500",16)},{bit:17,factor:new U("5d6af8dedc582c",16)},{bit:18,factor:new U("2216e584f5fa",16)}];var Tt=3,lo=100;var mo=10,po=100,ut=14;var X=new U(0),He=new U(1),Pd=new U(-1);var Ad=new U("18446744073700000000");var er=h([_(8),B("bump"),me("index"),m("owner"),J("protocolFeeRate"),J("tradeFeeRate"),me("tickSpacing"),J("fundFeeRate"),C(J(),1),m("fundOwner"),C(o(),3)]),tr=h([J("blockTimestamp"),at("tickCumulative"),C(o(),4)]),fo=h([_(8),ne("initialized"),o("recentEpoch"),me("observationIndex"),m("poolId"),C(tr,lo,"observations"),C(o(),4)]),nr=h([me("filterPeriod"),me("decayPeriod"),me("reductionFactor"),J("dynamicFeeControl"),J("maxVolatilityAccumulator"),re("tickSpacingIndexReference"),J("volatilityReference"),J("volatilityAccumulator"),o("lastUpdateTimestamp"),C(B(),46)]),or=h([B("state"),o("openTime"),o("endTime"),o("lastUpdateTime"),M("emissionsPerSecondX64"),o("totalEmissioned"),o("claimed"),m("mint"),m("vault"),m("creator"),M("growthGlobalX64")]),yn=h([_(8),B("bump"),m("configId"),m("creator"),m("mintA"),m("mintB"),m("vaultA"),m("vaultB"),m("observationId"),B("mintDecimalsA"),B("mintDecimalsB"),me("tickSpacing"),M("liquidity"),M("sqrtPriceX64"),re("tickCurrent"),J(),M("feeGrowthGlobalX64A"),M("feeGrowthGlobalX64B"),o("protocolFeesTokenA"),o("protocolFeesTokenB"),C(M(),4),B("status"),B("feeOn"),_(6),C(or,Tt,"rewardInfos"),_(8*16,"tickArrayBitmap"),C(o(),4),o("fundFeesTokenA"),o("fundFeesTokenB"),o("startTime"),o("recentEpoch"),nr.replicate("dynamicFeeInfo"),C(o(),46)]),ir=h([M("growthInsideLastX64"),o("rewardAmountOwed")]),rr=h([_(8),B("bump"),m("nftMint"),m("poolId"),re("tickLower"),re("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),C(ir,Tt,"rewardInfos"),o("recentEpoch"),C(o(),7)]),hd=h([_(8),B("bump"),m("poolId"),re("tickLower"),re("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),C(M(),Tt,"rewardGrowthInside"),o("recentEpoch"),C(o(),7)]),ar=h([re("tick"),Zn("liquidityNet"),M("liquidityGross"),M("feeGrowthOutsideX64A"),M("feeGrowthOutsideX64B"),C(M(),Tt,"rewardGrowthsOutsideX64"),o("orderPhase"),o("ordersAmount"),o("partFilledOrdersRemaining"),M("unfilledRatioX64"),C(J(),3)]),yo=h([_(8),m("poolId"),re("startTickIndex"),C(ar,we,"ticks"),B("initializedTickCount"),o("recentEpoch"),C(B(),107)]),sr=h([_(8),B("bump"),C(m(),mo,"operationOwners"),C(m(),po,"whitelistMints")]),ur=h([_(8),m("poolId"),m("owner"),re("tick"),ne("zeroForOne"),o("orderPhase"),o("totalAmount"),o("filledAmount"),o("settleBase"),o("settleOutput"),o("openTime"),M("unfilledRatioX64"),C(o(),4)]),bo=h([_(8),m("poolId"),_(8*8*ut,"positiveTickArrayBitmap"),_(8*8*ut,"negativeTickArrayBitmap")]),Id=h([_(8),me("index"),me("filterPeriod"),me("decayPeriod"),me("reductionFactor"),J("dynamicFeeControl"),J("maxVolatilityAccumulator"),C(o(),8)]),cr=h([_(8),m("wallet"),B("nonceIndex"),o("orderNonce"),C(o(),4)]),Bd=h([o(),B("bump"),m("owner"),m("poolId"),m("positionId"),m("nftAccount"),C(o(),8)]),lr=h([_(8),B("bump"),m("lockOwner"),m("poolId"),m("positionId"),m("nftAccount"),m("lockNftMint"),o("recentEpoch"),C(o(),8)]);import mr from"bn.js";import go from"decimal.js";function ke(s,e,t){if(t.isZero())throw new Error("Division by zero");return s.mul(e).div(t)}function Te(s,e,t){if(t.isZero())throw new Error("Division by zero");let n=s.mul(e),i=n.div(t);return n.mod(t).isZero()?i:i.addn(1)}var Rd=new mr(1).shln(256).subn(1);function Po(s){return s.isZero()?-1:s.bitLength()-1}function Ao(s,e){return new go(s.toString()).div(go.pow(2,64)).toDecimalPlaces(e)}import op from"bn.js";import ce from"bn.js";import ct from"decimal.js";import Nd from"bn.js";function bn(s){let e=Buffer.alloc(4);return e.writeInt32LE(s),e}function wo(s){let e=Buffer.alloc(4);return e.writeInt32BE(s),e}var qd=Buffer.from("amm_config","utf8"),ko=Buffer.from("pool","utf8"),To=Buffer.from("pool_vault","utf8"),dr=Buffer.from("pool_reward_vault","utf8"),ho=Buffer.from("position","utf8"),pr=Buffer.from("tick_array","utf8"),fr=Buffer.from("operation","utf8"),yr=Buffer.from("pool_tick_array_bitmap_extension","utf8"),br=Buffer.from("observation","utf8"),Ud=Buffer.from("support_mint","utf8"),Gd=Buffer.from("dynamic_fee_config","utf8");function Io(s,e,t,n){return $([ko,e.toBuffer(),t.toBuffer(),n.toBuffer()],s)}function qt(s,e,t){return $([To,e.toBuffer(),t.toBuffer()],s)}function Bo(s,e,t){return $([dr,e.toBuffer(),t.toBuffer()],s)}function ue(s,e,t){return $([pr,e.toBuffer(),wo(t)],s)}function ve(s,e,t,n){return $([ho,e.toBuffer(),bn(t),bn(n)],s)}function Ie(s,e){return $([ho,e.toBuffer()],s)}function je(s){return $([Buffer.from("metadata","utf8"),Ee.toBuffer(),s.toBuffer()],Ee)}function Ut(s){return $([fr],s)}function de(s,e){return $([yr,e.toBuffer()],s)}function So(s,e){return $([br,e.toBuffer()],s)}var xo=Buffer.from("locked_position","utf8");function gn(s,e){return $([xo,e.toBuffer()],s)}function Pn(s,e){return $([xo,e.toBuffer()],s)}var ht=class{static scanLinearBitmap({bitmap:e,tickSpacing:t,offset:n,checkInfo:i}){let a=[],u=e.length*8,r=0,l=u-1;if(i){let f=i.tick/(t*we)-n;i.valueType==="gte"?r=Math.max(0,Math.ceil(f)):l=Math.min(u-1,Math.floor(f))}if(r>l)return a;let d=Math.floor(r/8),c=Math.floor(l/8);for(let f=d;f<=c;f++){if(!e[f])continue;let w=f===d?r%8:0,p=f===c?l%8:7;for(let g=w;g<=p;g++)e[f]&1<<g&&a.push((f*8+g+n)*t*we)}return a}static findPoolBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let i=Math.floor(n.tick/we/t);if(n.valueType==="lte"&&i<-512)return[];if(n.valueType==="gte"&&i>512)return[]