UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

1 lines 117 kB
var $o=Object.defineProperty,Jo=Object.defineProperties;var ei=Object.getOwnPropertyDescriptors;var Kt=Object.getOwnPropertySymbols;var Cn=Object.prototype.hasOwnProperty,Rn=Object.prototype.propertyIsEnumerable;var Kn=(s,e,t)=>e in s?$o(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,V=(s,e)=>{for(var t in e||(e={}))Cn.call(e,t)&&Kn(s,t,e[t]);if(Kt)for(var t of Kt(e))Rn.call(e,t)&&Kn(s,t,e[t]);return s},W=(s,e)=>Jo(s,ei(e));var xe=(s,e)=>{var t={};for(var n in s)Cn.call(s,n)&&e.indexOf(n)<0&&(t[n]=s[n]);if(s!=null&&Kt)for(var n of Kt(s))e.indexOf(n)<0&&Rn.call(s,n)&&(t[n]=s[n]);return t};import{PublicKey as oi}from"@solana/web3.js";import{get as Ln,set as ti}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}},On={},ni={};function q(s){let e=Ln(On,s);if(!e){let t=Ln(ni,s);e=new Zt({name:s,logLevel:t}),ti(On,s,e)}return e}import{MINT_SIZE as ss,TOKEN_PROGRAM_ID as us,getTransferFeeConfig as cs,unpackMint as ls}from"@solana/spl-token";var Ht=q("Raydium_accountInfo_util");async function Ne(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 P=s._buildArgs([f.map(p=>p.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:P}}),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(P=>{if(P){let{data:p,executable:g,lamports:y,owner:b,rentEpoch:A}=P;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:y,owner:new oi(b),rentEpoch:A}}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 gC from"decimal.js";import mi from"big.js";import xs from"bn.js";import ii from"toformat";var ri=ii,ft=ri;import Rt from"big.js";import si from"bn.js";import ui from"decimal.js-light";import yt from"bn.js";var Nn=9007199254740991;function Pe(s){let e=q("Raydium_parseBigNumberish");if(s instanceof yt)return s;if(typeof s=="string"){if(s.match(/^-?[0-9]+$/))return new yt(s);e.logWithError(`invalid BigNumberish string: ${s}`)}return typeof s=="number"?(s%1&&e.logWithError(`BigNumberish number underflow: ${s}`),(s>=Nn||s<=-Nn)&&e.logWithError(`BigNumberish number overflow: ${s}`),new yt(String(s))):typeof s=="bigint"?new yt(s.toString()):(e.error(`invalid BigNumberish value: ${s}`),new yt(0))}var Ct=q("module/fraction"),$t=ft(Rt),bt=ft(ui),ci={[0]:bt.ROUND_DOWN,[1]:bt.ROUND_HALF_UP,[2]:bt.ROUND_UP},li={[0]:Rt.roundDown,[1]:Rt.roundHalfUp,[2]:Rt.roundUp},Z=class{constructor(e,t=new si(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)||Ct.logWithError(`${e} is not an integer.`),e<=0&&Ct.logWithError(`${e} is not positive.`),bt.set({precision:e+1,rounding:ci[n]});let i=new bt(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)||Ct.logWithError(`${e} is not an integer.`),e<0&&Ct.logWithError(`${e} is negative.`),$t.DP=e,$t.RM=li[n]||1,new $t(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var vs=q("Raydium_amount"),Vs=ft(mi);import{PublicKey as pi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Mn}from"@solana/spl-token";var Lt={chainId:101,address:pi.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"}},Ke={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 Jt}from"@solana/web3.js";import{PublicKey as $,SystemProgram as Fn,SYSVAR_RENT_PUBKEY as fi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as yi}from"@solana/spl-token";function et({pubkey:s,isSigner:e=!1,isWritable:t=!0}){return{pubkey:s,isWritable:t,isSigner:e}}var bi=[et({pubkey:yi,isWritable:!1}),et({pubkey:Fn.programId,isWritable:!1}),et({pubkey:fi,isWritable:!1})];function vn({publicKey:s,transformSol:e}){let t=Vn(s.toString());if(t instanceof $)return e&&t.equals(Ue)?Me:t;if(e&&t.toString()===Ue.toBase58())return Me;if(typeof t=="string"){if(t===$.default.toBase58())return $.default;try{return new $(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Vn(s){try{return new $(s)}catch{return s}}var _e=new $("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ie=new $("SysvarRent111111111111111111111111111111111"),zs=new $("SysvarC1ock11111111111111111111111111111111"),Ee=new $("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),gi=new $("Sysvar1nstructions1111111111111111111111111"),Pi=Fn.programId,Xs=new $("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ys=new $("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Qs=new $("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Zs=new $("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Hs=new $("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),js=new $("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),$s=new $("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Js=new $("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),eu=new $("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),tu=new $("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),nu=new $("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Me=new $("So11111111111111111111111111111111111111112"),Ue=$.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:vn({publicKey:e}),this.isToken2022=u}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ye=en;ye.WSOL=new en(W(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}},Ot=tn;Ot.SOL=new tn(Lt);import Ai from"bn.js";var fu=new Z(new Ai(100));var wu=q("Raydium_price");import{merge as AK}from"lodash";import Cu from"axios";var _n={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"},wi=W(V({},_n),{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 $u=q("Raydium_Api");import{PublicKey as gm,SystemProgram as Pm}from"@solana/web3.js";import{AccountLayout as hm,createAssociatedTokenAccountIdempotentInstruction as Im,TOKEN_PROGRAM_ID as Bm,TOKEN_2022_PROGRAM_ID as Sm}from"@solana/spl-token";import{PublicKey as rt,sendAndConfirmTransaction as un,SystemProgram as Si,Transaction as At,TransactionMessage as wt,VersionedTransaction as kt}from"@solana/web3.js";import xi 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 Ne(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 D={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 En,Keypair as Wn,PublicKey as ki,Transaction as qn,TransactionMessage as Ti,VersionedTransaction as Un}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as hi}from"@solana/spl-token";var Dn=q("Raydium_txUtil"),Gn=1644;function Nt(s){let e=[],t=[];return s.microLamports&&(e.push(En.setComputeUnitPrice({microLamports:s.microLamports})),t.push(D.SetComputeUnitPrice)),s.units&&(e.push(En.setComputeUnitLimit({units:s.units})),t.push(D.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 Mt(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&&Dn.logWithError(`no instructions provided: ${s.toString()}`),e.length<1&&Dn.logWithError(`no signers provided:, ${e.toString()}`);let t=new qn;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...s);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Gn}catch{return!1}}function H(s,e){let[t,n]=ki.findProgramAddressSync(s,e);return{publicKey:t,nonce:n}}function gt({instructions:s,payer:e,signers:t}){return sn(s,[e,...t])}function Pt({instructions:s,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Wn.generate().publicKey.toString()}){let a=new Ti({payerKey:e,recentBlockhash:n,instructions:s}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Un(a).serialize()).toString("base64").length<Gn}catch{return!1}}var Ii=s=>Buffer.isBuffer(s)?s:s instanceof Uint8Array?Buffer.from(s.buffer,s.byteOffset,s.byteLength):Buffer.from(s),Bi=s=>{let e=s.serialize({requireAllSignatures:!1,verifySignatures:!1});s instanceof Un&&(e=Ii(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 qn&&(t.recentBlockhash||(t.recentBlockhash=hi.toBase58()),t.feePayer||(t.feePayer=Wn.generate().publicKey)),e.push(Bi(t))}),console.log("simulate tx string:",e),e}var Ft=2e3,vt=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 xi.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}=Nt(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(Si.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new rt(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(D.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(W(V({},t||{}),{lookupTableAddress:n})):this.build(t)}build(e){var n;let t=new At;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(P=>P.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 P of f)try{P.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 A;let{sequentially:f,onTxUpdate:P,skipTxCount:p=0,recentBlockHash:g,skipPreflight:y=!0}=c||{},b=g!=null?g:await it(this.connection,this.blockhashCommitment);if((A=this.owner)!=null&&A.isKeyPair){if(f){let T=[],K=0;for(let L of u){if(++K,K<=p)continue;let I=await un(this.connection,L,this.signers.find(C=>C.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});T.push(I)}return{txIds:T,signedTxs:u}}return{txIds:await await Promise.all(u.map(async T=>(T.recentBlockhash=b,await this.connection.sendRawTransaction(T.serialize(),{skipPreflight:y})))),signedTxs:u}}if(this.signAllTransactions){let T=u.map((L,I)=>(L.recentBlockhash=b,r[I].length&&L.sign(...r[I]),L));Ge(T);let K=await this.signAllTransactions(T);if(f){let L=0,I=[],C=async()=>{if(!K[L])return;let x=await this.connection.sendRawTransaction(K[L].serialize(),{skipPreflight:y});I.push({txId:x,status:"sent",signedTx:K[L]}),P==null||P([...I]),L++;let O=!1,N=null,v=null,ue=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"}P==null||P([...I]),z.err||C()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var z;if(O){clearInterval(N);return}try{let E=await this.connection.getTransaction(x,{commitment:"confirmed",maxSupportedTransactionVersion:0});E&&(O=!0,clearInterval(N),ue({err:((z=E.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",x))}catch(E){O=!0,clearInterval(N),console.error("getTransaction timeout:",E,x)}},Ft)),v=this.connection.onSignature(x,z=>{if(O){this.connection.removeSignatureListener(v);return}O=!0,ue(z)},"confirmed"),this.connection.getSignatureStatus(x)};return await C(),{txIds:I.map(x=>x.txId),signedTxs:K}}else{let L=[];for(let I=0;I<K.length;I+=1){let C=await this.connection.sendRawTransaction(K[I].serialize(),{skipPreflight:y});L.push(C)}return{txIds:L,signedTxs:K}}}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 y;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 b of l)r[b]===void 0&&d.push(new rt(b));let c=await on({connection:this.connection,address:d});for(let[b,A]of Object.entries(c))r[b]=A;let f=i?rt.default.toBase58():a!=null?a:await it(this.connection,this.blockhashCommitment),P=new wt({payerKey:this.feePayer,recentBlockhash:f,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(r));((y=this.owner)==null?void 0:y.signer)&&!this.signers.some(b=>b.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let p=new kt(P);return p.sign(this.signers),{builder:this,transaction:p,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async b=>{var L;let{skipPreflight:A=!0,sendAndConfirm:T,notSendToRpc:K}=b||{};if(Ge([p]),(L=this.owner)!=null&&L.isKeyPair){let I=await this.connection.sendTransaction(p,{skipPreflight:A});return T&&await Mt(this.connection,I),{txId:I,signedTx:p}}if(this.signAllTransactions){let I=await this.signAllTransactions([p]);if(this.signers.length)for(let C of I)try{C.sign(this.signers)}catch{}return{txId:K?"":await this.connection.sendTransaction(I[0],{skipPreflight:A}),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 y;let{sequentially:f,onTxUpdate:P,recentBlockHash:p,skipPreflight:g=!0}=c||{};if(p&&u.forEach(b=>b.message.recentBlockhash=p),Ge(u),(y=this.owner)!=null&&y.isKeyPair){if(f){let b=[];for(let A of u){let T=await this.connection.sendTransaction(A,{skipPreflight:g});await Mt(this.connection,T),b.push(T)}return{txIds:b,signedTxs:u}}return{txIds:await Promise.all(u.map(async b=>await this.connection.sendTransaction(b,{skipPreflight:g}))),signedTxs:u}}if(this.signAllTransactions){let b=await this.signAllTransactions(u);if(f){let A=0,T=[],K=async()=>{if(!b[A])return;let L=await this.connection.sendTransaction(b[A],{skipPreflight:g});T.push({txId:L,status:"sent",signedTx:b[A]}),P==null||P([...T]),A++;let I=!1,C=null,x=null,O=N=>{C!==null&&clearInterval(C),x!==null&&this.connection.removeSignatureListener(x);let v=T.findIndex(ue=>ue.txId===L);if(v>-1){if(T[v].status==="error"||T[v].status==="success")return;T[v].status=N.err?"error":"success"}P==null||P([...T]),N.err||K()};this.loopMultiTxStatus&&(C=setInterval(async()=>{var N;if(I){clearInterval(C);return}try{let v=await this.connection.getTransaction(L,{commitment:"confirmed",maxSupportedTransactionVersion:0});v&&(I=!0,clearInterval(C),O({err:((N=v.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",L))}catch(v){I=!0,clearInterval(C),console.error("getTransaction timeout:",v,L)}},Ft)),x=this.connection.onSignature(L,N=>{if(I){this.connection.removeSignatureListener(x);return}I=!0,O(N)},"confirmed"),this.connection.getSignatureStatus(L)};return K(),{txIds:[],signedTxs:b}}else{let A=[];for(let T=0;T<b.length;T+=1){let K=await this.connection.sendTransaction(b[T],{skipPreflight:g});A.push(K)}return{txIds:A,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var P;let f=e||{},{splitIns:t=[],computeBudgetConfig:n}=f,i=xe(f,["splitIns","computeBudgetConfig"]),a=n?Nt(n):{instructions:[],instructionTypes:[]},u=this.signers.reduce((p,g)=>W(V({},p),{[g.publicKey.toBase58()]:g}),{}),r=[],l=[],d=[],c=0;if(this.allInstructions.forEach(p=>{let g=[...d,p],y=n?[...a.instructions,...g]:g,A=[...new Set(g.map(T=>T.keys.filter(K=>K.isSigner).map(K=>K.pubkey.toString())).flat()).values()].map(T=>new rt(T));if(p!==t[c]&&d.length<12&&(gt({instructions:y,payer:this.feePayer,signers:A})||gt({instructions:g,payer:this.feePayer,signers:A})))d.push(p);else{if(d.length===0)throw Error("item ins too big");c+=p===t[c]?1:0,gt({instructions:n?[...a.instructions,...d]:[...d],payer:this.feePayer,signers:A})?r.push(new At().add(...a.instructions,...d)):r.push(new At().add(...d)),l.push(Array.from(new Set(d.map(T=>T.keys.filter(K=>K.isSigner).map(K=>K.pubkey.toString())).flat())).map(T=>u[T]).filter(T=>T!==void 0)),d=[p]}}),d.length>0){let g=[...new Set(d.map(y=>y.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(y=>u[y]).filter(y=>y!==void 0);gt({instructions:n?[...a.instructions,...d]:[...d],payer:this.feePayer,signers:g.map(y=>y.publicKey)})?r.push(new At().add(...a.instructions,...d)):r.push(new At().add(...d)),l.push(g)}return r.forEach(p=>p.feePayer=this.feePayer),(P=this.owner)!=null&&P.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 L;let{sequentially:g,onTxUpdate:y,skipTxCount:b=0,recentBlockHash:A,skipPreflight:T=!0}=p||{},K=A!=null?A:await it(this.connection,this.blockhashCommitment);if(r.forEach(async(I,C)=>{I.recentBlockhash=K,l[C].length&&I.sign(...l[C])}),Ge(r),(L=this.owner)!=null&&L.isKeyPair){if(g){let I=0,C=[];for(let x of r){if(++I,I<=b){C.push("tx skipped");continue}let O=await un(this.connection,x,this.signers.find(N=>N.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:T});C.push(O)}return{txIds:C,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(b,r.length)),C=[...r.slice(0,b),...I];if(g){let x=0,O=[],N=async()=>{if(!C[x])return;x<b&&(O.push({txId:"",status:"success",signedTx:C[x]}),y==null||y([...O]),x++,N());let v=await this.connection.sendRawTransaction(C[x].serialize(),{skipPreflight:T});O.push({txId:v,status:"sent",signedTx:C[x]}),y==null||y([...O]),x++;let ue=!1,z=null,E=null,te=Q=>{z!==null&&clearInterval(z),E!==null&&this.connection.removeSignatureListener(E);let ge=O.findIndex(Le=>Le.txId===v);if(ge>-1){if(O[ge].status==="error"||O[ge].status==="success")return;O[ge].status=Q.err?"error":"success"}y==null||y([...O]),Q.err||N()};this.loopMultiTxStatus&&(z=setInterval(async()=>{var Q;if(ue){clearInterval(z);return}try{let ge=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});ge&&(ue=!0,clearInterval(z),te({err:((Q=ge.meta)==null?void 0:Q.err)||null}),console.log("tx status from getTransaction:",v))}catch(ge){ue=!0,clearInterval(z),console.error("getTransaction timeout:",ge,v)}},Ft)),E=this.connection.onSignature(v,Q=>{if(ue){this.connection.removeSignatureListener(E);return}ue=!0,te(Q)},"confirmed"),this.connection.getSignatureStatus(v)};return await N(),{txIds:O.map(v=>v.txId),signedTxs:C}}else{let x=[];for(let O=0;O<C.length;O+=1){let N=await this.connection.sendRawTransaction(C[O].serialize(),{skipPreflight:T});x.push(N)}return{txIds:x,signedTxs:C}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var L;let K=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:i={},lookupTableAddress:a=[],insCountLimit:u=12}=K,r=xe(K,["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,C]of Object.entries(f))l[I]=C;let P=t?Nt(t):{instructions:[],instructionTypes:[]},p=await it(this.connection,this.blockhashCommitment),g=this.signers.reduce((I,C)=>W(V({},I),{[C.publicKey.toBase58()]:C}),{}),y=[],b=[],A=[],T=0;if(this.allInstructions.forEach(I=>{let C=[...A,I],x=t?[...P.instructions,...C]:C;if(I!==n[T]&&A.length<u&&(Pt({instructions:x,payer:this.feePayer,lookupTableAddressAccount:l})||Pt({instructions:C,payer:this.feePayer,lookupTableAddressAccount:l})))A.push(I);else{if(A.length===0)throw Error("item ins too big");T+=I===n[T]?1:0;let O={};for(let N of[...new Set(d)])l[N]!==void 0&&(O[N]=l[N]);if(t&&Pt({instructions:[...P.instructions,...A],payer:this.feePayer,lookupTableAddressAccount:l,recentBlockhash:p})){let N=new wt({payerKey:this.feePayer,recentBlockhash:p,instructions:[...P.instructions,...A]}).compileToV0Message(Object.values(l));y.push(new kt(N))}else{let N=new wt({payerKey:this.feePayer,recentBlockhash:p,instructions:[...A]}).compileToV0Message(Object.values(l));y.push(new kt(N))}b.push(Array.from(new Set(A.map(N=>N.keys.filter(v=>v.isSigner).map(v=>v.pubkey.toString())).flat())).map(N=>g[N]).filter(N=>N!==void 0)),A=[I]}}),A.length>0){let C=[...new Set(A.map(x=>x.keys.filter(O=>O.isSigner).map(O=>O.pubkey.toString())).flat()).values()].map(x=>g[x]).filter(x=>x!==void 0);if(t&&Pt({instructions:[...P.instructions,...A],payer:this.feePayer,lookupTableAddressAccount:l,recentBlockhash:p})){let x=new wt({payerKey:this.feePayer,recentBlockhash:p,instructions:[...P.instructions,...A]}).compileToV0Message(Object.values(l));y.push(new kt(x))}else{let x=new wt({payerKey:this.feePayer,recentBlockhash:p,instructions:[...A]}).compileToV0Message(Object.values(l));y.push(new kt(x))}b.push(C)}return(L=this.owner)!=null&&L.signer&&b.forEach(I=>{I.some(C=>C.publicKey.equals(this.owner.publicKey))||I.push(this.owner.signer)}),y.forEach((I,C)=>{I.sign(b[C])}),{builder:this,transactions:y,buildProps:e,signers:b,instructionTypes:this.instructionTypes,execute:async I=>{var ue;let{sequentially:C,onTxUpdate:x,skipTxCount:O=0,recentBlockHash:N,skipPreflight:v=!0}=I||{};if(y.map(async(z,E)=>{b[E].length&&z.sign(b[E]),N&&(z.message.recentBlockhash=N)}),Ge(y),(ue=this.owner)!=null&&ue.isKeyPair){if(C){let z=0,E=[];for(let te of y){if(++z,z<=O){console.log("skip tx: ",z),E.push("tx skipped");continue}let Q=await this.connection.sendTransaction(te,{skipPreflight:v});await Mt(this.connection,Q),E.push(Q)}return{txIds:E,signedTxs:y}}return{txIds:await Promise.all(y.map(async z=>await this.connection.sendTransaction(z,{skipPreflight:v}))),signedTxs:y}}if(this.signAllTransactions){let z=await this.signAllTransactions(y.slice(O,y.length)),E=[...y.slice(0,O),...z];if(C){let te=0,Q=[],ge=async()=>{if(!E[te])return;if(te<O){Q.push({txId:"",status:"success",signedTx:E[te]}),x==null||x([...Q]),te++,ge();return}let Le=await this.connection.sendTransaction(E[te],{skipPreflight:v});Q.push({txId:Le,status:"sent",signedTx:E[te]}),x==null||x([...Q]),te++;let dt=!1,Je=null,xt=null,xn=qe=>{Je!==null&&clearInterval(Je),xt!==null&&this.connection.removeSignatureListener(xt);let Oe=Q.findIndex(jo=>jo.txId===Le);if(Oe>-1){if(Q[Oe].status==="error"||Q[Oe].status==="success")return;Q[Oe].status=qe.err?"error":"success"}x==null||x([...Q]),qe.err||ge()};this.loopMultiTxStatus&&(Je=setInterval(async()=>{var qe;if(dt){clearInterval(Je);return}try{let Oe=await this.connection.getTransaction(Le,{commitment:"confirmed",maxSupportedTransactionVersion:0});Oe&&(dt=!0,clearInterval(Je),xn({err:((qe=Oe.meta)==null?void 0:qe.err)||null}),console.log("tx status from getTransaction:",Le))}catch(Oe){dt=!0,clearInterval(Je),console.error("getTransaction timeout:",Oe,Le)}},Ft)),xt=this.connection.onSignature(Le,qe=>{if(dt){this.connection.removeSignatureListener(xt);return}dt=!0,xn(qe)},"confirmed"),this.connection.getSignatureStatus(Le)};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=q(t)}createTxBuilder(e){return this.scope.checkOwner(),new vt({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 Ql,SystemProgram as Hl}from"@solana/web3.js";import Jl from"bn.js";import{createCloseAccountInstruction as om,createInitializeAccountInstruction as im,createTransferInstruction as rm,TOKEN_PROGRAM_ID as am}from"@solana/spl-token";import{Keypair as Fl,PublicKey as vl}from"@solana/web3.js";import El from"bn.js";import{TOKEN_PROGRAM_ID as ql}from"@solana/spl-token";import{PublicKey as Ei}from"@solana/web3.js";import Zn,{isBN as Hn}from"bn.js";import{bits as Ki,BitStructure as Dc,blob as Ci,Blob as Wc,cstr as qc,f32 as Uc,f32be as Gc,f64 as zc,f64be as Xc,greedy as Yc,Layout as Ri,ns64 as Qc,ns64be as Zc,nu64 as Hc,nu64be as jc,offset as Li,s16 as $c,s16be as Jc,s24 as el,s24be as tl,s32 as Oi,s32be as nl,s40 as ol,s40be as il,s48 as rl,s48be as al,s8 as sl,seq as Ni,struct as ul,Structure as Mi,u16 as Fi,u16be as cl,u24 as ll,u24be as ml,u32 as vi,u32be as dl,u40 as pl,u40be as fl,u48 as yl,u48be as bl,u8 as Vi,UInt as _i,union as gl,Union as Pl,unionLayoutDiscriminator as Al,utf8 as wl}from"@solana/buffer-layout";var Vt=Ri,zn=Mi;var ln=_i;var Xn=Vi,re=Fi;var _t=vi;var ae=Oi;var Yn=Ni;var _=Ci;var mn=Ki,Qn=Li;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 Zn(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 Zn(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},Et=class extends Vt{constructor(t){super(8,t);this._lower=mn(_t(),!1),this._upper=mn(_t(),!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 jn(s){return new Xe(1,!0,s)}function at(s){return new Xe(8,!0,s)}function $n(s){return new Xe(16,!0,s)}var Tt=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 Tt(_(32),e=>new Ei(e),e=>e.toBuffer(),s)}function ne(s){return new Tt(Xn(),Di,Wi,s)}function Di(s){if(s===0)return!1;if(s===1)return!0;throw new Error("Invalid bool: "+s)}function Wi(s){return s?1:0}function Jn(s,e){let t=_t("length"),n=h([t,R(s,Qn(t,-t.span),"values")]);return new Tt(n,({values:i})=>i,i=>({values:i}),e)}var dn=class extends zn{decode(e,t){return super.decode(e,t)}};function h(s,e,t){return new dn(s,e,t)}function R(s,e,t){let n,i=typeof e=="number"?e:Hn(e)?e.toNumber():new Proxy(e,{get(a,u){if(!n){let r=Reflect.get(a,"count");n=Hn(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 Yn(s,i,t)}var Dt=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 kg,SystemProgram as Tg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Ig}from"@solana/spl-token";import{PublicKey as Ui}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Gi}from"@solana/spl-token";function G(s,e,t){return H([s.toBuffer(),(t!=null?t:Gi).toBuffer(),e.toBuffer()],new Ui("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as F}from"@solana/web3.js";var to=new F("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),no=new F("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),oo=new F("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),pn=new F("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Vm=new F("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),zi=new F("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),io=new F("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),ro=new F("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),_m=new F("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Xi=new F("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ao=new F("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Yi=new F("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Qi=new F("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),so=new F("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Em=new F("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Zi=new F("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),fn=new F("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Hi=new F("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Dm=new F("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ji=new F("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),$i=new F("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Ji=new F("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Wm=new F("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),qm=new F("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Um=new F("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Gm=new F("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),zm=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 Mg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as $f,TOKEN_2022_PROGRAM_ID as Jf,TOKEN_PROGRAM_ID as ey}from"@solana/spl-token";import{PublicKey as ny}from"@solana/web3.js";import iy from"bn.js";import ay from"decimal.js";import{TOKEN_PROGRAM_ID as rd}from"@solana/spl-token";import{PublicKey as cd}from"@solana/web3.js";var er=h([J("mintAuthorityOption"),m("mintAuthority"),o("supply"),B("decimals"),B("isInitialized"),J("freezeAuthorityOption"),m("freezeAuthority")]);import U from"bn.js";var se=new U(1).shln(64);var tr=new U(1).shln(128),Ye=new U(1).shln(64).subn(1),nr=new U(1).shln(128).subn(1),Fe=-443636,ve=443636,Qe=new U("4295048016"),Ze=new U("79226673521066979257578248091"),uo=new U("59543866431248"),co=new U("184467440737095516"),lo=new U("15793534762490258745"),mo=16,qt=512,we=60,kd=new U("18446743708227953217"),po=[{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 ht=3,fo=100;var yo=10,bo=100,ut=14;var X=new U(0),He=new U(1),Td=new U(-1);var hd=new U("18446744073700000000");var or=h([_(8),B("bump"),re("index"),m("owner"),J("protocolFeeRate"),J("tradeFeeRate"),re("tickSpacing"),J("fundFeeRate"),R(J(),1),m("fundOwner"),R(o(),3)]),ir=h([J("blockTimestamp"),at("tickCumulative"),R(o(),4)]),go=h([_(8),ne("initialized"),o("recentEpoch"),re("observationIndex"),m("poolId"),R(ir,fo,"observations"),R(o(),4)]),rr=h([re("filterPeriod"),re("decayPeriod"),re("reductionFactor"),J("dynamicFeeControl"),J("maxVolatilityAccumulator"),ae("tickSpacingIndexReference"),J("volatilityReference"),J("volatilityAccumulator"),o("lastUpdateTimestamp"),R(B(),46)]),ar=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"),re("tickSpacing"),M("liquidity"),M("sqrtPriceX64"),ae("tickCurrent"),J(),M("feeGrowthGlobalX64A"),M("feeGrowthGlobalX64B"),o("protocolFeesTokenA"),o("protocolFeesTokenB"),R(M(),4),B("status"),B("feeOn"),_(6),R(ar,ht,"rewardInfos"),_(8*16,"tickArrayBitmap"),R(o(),4),o("fundFeesTokenA"),o("fundFeesTokenB"),o("startTime"),o("recentEpoch"),rr.replicate("dynamicFeeInfo"),R(o(),46)]),sr=h([M("growthInsideLastX64"),o("rewardAmountOwed")]),ur=h([_(8),B("bump"),m("nftMint"),m("poolId"),ae("tickLower"),ae("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),R(sr,ht,"rewardInfos"),o("recentEpoch"),R(o(),7)]),xd=h([_(8),B("bump"),m("poolId"),ae("tickLower"),ae("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),R(M(),ht,"rewardGrowthInside"),o("recentEpoch"),R(o(),7)]),cr=h([ae("tick"),$n("liquidityNet"),M("liquidityGross"),M("feeGrowthOutsideX64A"),M("feeGrowthOutsideX64B"),R(M(),ht,"rewardGrowthsOutsideX64"),o("orderPhase"),o("ordersAmount"),o("partFilledOrdersRemaining"),M("unfilledRatioX64"),R(J(),3)]),Po=h([_(8),m("poolId"),ae("startTickIndex"),R(cr,we,"ticks"),B("initializedTickCount"),o("recentEpoch"),R(B(),107)]),lr=h([_(8),B("bump"),R(m(),yo,"operationOwners"),R(m(),bo,"whitelistMints")]),mr=h([_(8),m("poolId"),m("owner"),ae("tick"),ne("zeroForOne"),o("orderPhase"),o("totalAmount"),o("filledAmount"),o("settleBase"),o("settleOutput"),o("openTime"),M("unfilledRatioX64"),R(o(),4)]),Ao=h([_(8),m("poolId"),_(8*8*ut,"positiveTickArrayBitmap"),_(8*8*ut,"negativeTickArrayBitmap")]),Kd=h([_(8),re("index"),re("filterPeriod"),re("decayPeriod"),re("reductionFactor"),J("dynamicFeeControl"),J("maxVolatilityAccumulator"),R(o(),8)]),dr=h([_(8),m("wallet"),B("nonceIndex"),o("orderNonce"),R(o(),4)]),Cd=h([o(),B("bump"),m("owner"),m("poolId"),m("positionId"),m("nftAccount"),R(o(),8)]),pr=h([_(8),B("bump"),m("lockOwner"),m("poolId"),m("positionId"),m("nftAccount"),m("lockNftMint"),o("recentEpoch"),R(o(),8)]);import fr from"bn.js";import wo 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 Md=new fr(1).shln(256).subn(1);function ko(s){return s.isZero()?-1:s.bitLength()-1}function To(s,e){return new wo(s.toString()).div(wo.pow(2,64)).toDecimalPlaces(e)}import sp from"bn.js";import le from"bn.js";import lt from"decimal.js";import Vd from"bn.js";function bn(s){let e=Buffer.alloc(2);return e.writeUInt16LE(s),e}function gn(s){let e=Buffer.alloc(4);return e.writeInt32LE(s),e}function ho(s){let e=Buffer.alloc(4);return e.writeInt32BE(s),e}var Xd=Buffer.from("amm_config","utf8"),Pn=Buffer.from("pool","utf8"),Io=Buffer.from("pool_vault","utf8"),yr=Buffer.from("pool_reward_vault","utf8"),Bo=Buffer.from("position","utf8"),br=Buffer.from("tick_array","utf8"),gr=Buffer.from("operation","utf8"),Pr=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Ar=Buffer.from("observation","utf8"),Yd=Buffer.from("support_mint","utf8"),Qd=Buffer.from("dynamic_fee_config","utf8"),wr=Buffer.from("permission","utf8");function So(s,e,t,n){return H([Pn,e.toBuffer(),t.toBuffer(),n.toBuffer()],s)}function xo(s,e){return H([wr,e.toBuffer()],s)}function Ko(s,e,t,n,i){return H([Pn,e.toBuffer(),t.toBuffer(),n.toBuffer(),bn(i)],s)}function ct(s,e,t){return H([Io,e.toBuffer(),t.toBuffer()],s)}function Co(s,e,t){return H([yr,e.toBuffer(),t.toBuffer()],s)}function ce(s,e,t){return H([br,e.toBuffer(),ho(t)],s)}function Ve(s,e,t,n){return H([Bo,e.toBuffer(),gn(t),gn(n)],s)}function Be(s,e){return H([Bo,e.toBuffer()],s)}function je(s){return H([Buffer.from("metadata","utf8"),Ee.toBuffer(),s.toBuffer()],Ee)}function Ut(s){return H([gr],s)}function de(s,e){return H([Pr,e.toBuffer()],s)}function An(s,e){return H([Ar,e.toBuffer()],s)}var Ro=Buffer.from("locked_position","utf8");function wn(s,e){return H([Ro,e.toBuffer()],s)}function kn(s,e){return H([Ro,e.toBuffer()],s)}var It=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 P=f===d?r%8:0,p=f===c?l%8:7;for(l