@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
1 lines • 116 kB
JavaScript
var $o=Object.defineProperty,Jo=Object.defineProperties;var ei=Object.getOwnPropertyDescriptors;var Kt=Object.getOwnPropertySymbols;var xn=Object.prototype.hasOwnProperty,Kn=Object.prototype.propertyIsEnumerable;var Sn=(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={}))xn.call(e,t)&&Sn(s,t,e[t]);if(Kt)for(var t of Kt(e))Kn.call(e,t)&&Sn(s,t,e[t]);return s},D=(s,e)=>Jo(s,ei(e));var xe=(s,e)=>{var t={};for(var n in s)xn.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&&Kn.call(s,n)&&(t[n]=s[n]);return t};import{PublicKey as oi}from"@solana/web3.js";import{get as Cn,set as ti}from"lodash";var Ht=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}},Rn={},ni={};function W(s){let e=Cn(Rn,s);if(!e){let t=Cn(ni,s);e=new Ht({name:s,logLevel:t}),ti(Rn,s,e)}return e}import{MINT_SIZE as fs,TOKEN_PROGRAM_ID as ys,getTransferFeeConfig as bs,unpackMint as gs}from"@solana/spl-token";var jt=W("Raydium_accountInfo_util");async function Ne(s,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:a=100}=V({batchRequest:!1},t),u=$t(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=$t(l,10);r=(await(await Promise.all(d.map(async f=>await s._rpcBatchRequest(f)))).flat()).map(f=>(f.error&&jt.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"&&jt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:g,lamports:b,owner:new oi(y),rentEpoch:k}}return null})))}else try{r=await Promise.all(u.map(l=>s.getMultipleAccountsInfo(l,i)))}catch(l){l instanceof Error&&jt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.message}`)}return r.flat()}import $e from"bn.js";import $C from"decimal.js";import mi from"big.js";import Ms from"bn.js";import ii from"toformat";var ri=ii,pt=ri;import Rt from"big.js";import si from"bn.js";import ui from"decimal.js-light";import ft from"bn.js";var Ln=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>=Ln||s<=-Ln)&&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 Ct=W("module/fraction"),Jt=pt(Rt),yt=pt(ui),ci={[0]:yt.ROUND_DOWN,[1]:yt.ROUND_HALF_UP,[2]:yt.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.`),yt.set({precision:e+1,rounding:ci[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)||Ct.logWithError(`${e} is not an integer.`),e<0&&Ct.logWithError(`${e} is negative.`),Jt.DP=e,Jt.RM=li[n]||1,new Jt(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Us=W("Raydium_amount"),Gs=pt(mi);import{PublicKey as pi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as On}from"@solana/spl-token";var Lt={chainId:101,address:pi.default.toBase58(),programId:On.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Ce={chainId:101,address:"So11111111111111111111111111111111111111112",programId:On.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 en}from"@solana/web3.js";import{PublicKey as j,SystemProgram as Nn,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:Nn.programId,isWritable:!1}),et({pubkey:fi,isWritable:!1})];function Mn({publicKey:s,transformSol:e}){let t=Fn(s.toString());if(t instanceof j)return e&&t.equals(Ue)?Ke:t;if(e&&t.toString()===Ue.toBase58())return Ke;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 Fn(s){try{return new j(s)}catch{return s}}var _e=new j("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ie=new j("SysvarRent111111111111111111111111111111111"),gi=new j("SysvarC1ock11111111111111111111111111111111"),Ee=new j("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Pi=new j("Sysvar1nstructions1111111111111111111111111"),vn=Nn.programId,$s=new j("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Js=new j("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),eu=new j("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),tu=new j("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),nu=new j("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),ou=new j("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),iu=new j("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),ru=new j("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),au=new j("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),su=new j("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),uu=new j("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ke=new j("So11111111111111111111111111111111111111112"),Ue=j.default;var tn=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:a=!1,isToken2022:u=!1}){if(e===Ue.toBase58()||e instanceof en&&Ue.equals(e)){this.decimals=Ce.decimals,this.symbol=Ce.symbol,this.name=Ce.name,this.mint=new en(Ce.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?en.default:Mn({publicKey:e}),this.isToken2022=u}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ye=tn;ye.WSOL=new tn(D(V({},Ce),{mint:Ce.address}));var nn=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=nn;Ot.SOL=new nn(Lt);import Ai from"bn.js";var wu=new Z(new Ai(100));var Su=W("Raydium_price");import{merge as $K}from"lodash";import Fu from"axios";var Vn={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",MONITOR_BASE_HOST:"https://monitor.raydium.io",SERVICE_1_BASE_HOST:"https://service-v1.raydium.io",TEMP_HOST:"https://temp-api-v1.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",CPMM_CONFIG:"/main/cpmm-config",CLMM_DYNAMIC_CONFIG:"/main/clmm-dynamic-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://lite-api.jup.ag/tokens/v2/tag?query=verified",POOL_LIST:"/pools/info/list-v2",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/list-v2",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_IDO:"/main/ido/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",OWNER_LOCK_POSITION:"/position/clmm-lock/{owner}",IDO_KEYS:"/ido/key/ids",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee",CPMM_LOCK:"https://dynamic-ipfs.raydium.io/lock/cpmm/position",LAUNCH_AUTH_HOST:"https://launch-auth-v1.raydium.io",LAUNCH_COMMENT_HOST:"hhttps://launch-forum-v1.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1.raydium.io"},wi=D(V({},Vn),{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 ic=W("Raydium_Api");import{PublicKey as Tm,SystemProgram as hm}from"@solana/web3.js";import{AccountLayout as Km,createAssociatedTokenAccountIdempotentInstruction as Cm,TOKEN_PROGRAM_ID as Rm,TOKEN_2022_PROGRAM_ID as Lm}from"@solana/spl-token";import{PublicKey as rt,sendAndConfirmTransaction as cn,SystemProgram as Si,Transaction as Pt,TransactionMessage as At,VersionedTransaction as wt}from"@solana/web3.js";import xi from"axios";import{PublicKey as on,AddressLookupTableAccount as ot}from"@solana/web3.js";async function rn({connection:s,address:e,cluster:t="mainnet"}){let n=await Ne(s,[...new Set(e.map(a=>a.toString()))].map(a=>new on(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={},an=async s=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(tt[e])return tt;let t=new on(e),n=await s.getAccountInfo(t);return n&&(tt[e]=new ot({key:t,state:ot.deserialize(n.data)})),tt},nt={},sn=async s=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(nt[e])return nt;let t=new on(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 _n,Keypair as Dn,PublicKey as ki,Transaction as Wn,TransactionMessage as Ti,VersionedTransaction as qn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as hi}from"@solana/spl-token";var En=W("Raydium_txUtil"),Un=1644;function Nt(s){let e=[],t=[];return s.microLamports&&(e.push(_n.setComputeUnitPrice({microLamports:s.microLamports})),t.push(q.SetComputeUnitPrice)),s.units&&(e.push(_n.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 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 un(s,e){s.length<1&&En.logWithError(`no instructions provided: ${s.toString()}`),e.length<1&&En.logWithError(`no signers provided:, ${e.toString()}`);let t=new Wn;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...s);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Un}catch{return!1}}function $(s,e){let[t,n]=ki.findProgramAddressSync(s,e);return{publicKey:t,nonce:n}}function bt({instructions:s,payer:e,signers:t}){return un(s,[e,...t])}function gt({instructions:s,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Dn.generate().publicKey.toString()}){let a=new Ti({payerKey:e,recentBlockhash:n,instructions:s}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new qn(a).serialize()).toString("base64").length<Un}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 qn&&(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 Wn&&(t.recentBlockhash||(t.recentBlockhash=hi.toBase58()),t.feePayer||(t.feePayer=Dn.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(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 cn(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 B=await cn(this.connection,O,this.signers.find(K=>K.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:b});T.push(B)}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,B)=>(O.recentBlockhash=y,r[B].length&&O.sign(...r[B]),O));Ge(T);let R=await this.signAllTransactions(T);if(f){let O=0,B=[],K=async()=>{if(!R[O])return;let x=await this.connection.sendRawTransaction(R[O].serialize(),{skipPreflight:b});B.push({txId:x,status:"sent",signedTx:R[O]}),w==null||w([...B]),O++;let L=!1,N=null,v=null,se=z=>{N!==null&&clearInterval(N),v!==null&&this.connection.removeSignatureListener(v);let E=B.findIndex(te=>te.txId===x);if(E>-1){if(B[E].status==="error"||B[E].status==="success")return;B[E].status=z.err?"error":"success"}w==null||w([...B]),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)}},Ft)),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:B.map(x=>x.txId),signedTxs:R}}else{let O=[];for(let B=0;B<R.length;B+=1){let K=await this.connection.sendRawTransaction(R[B].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 sn(this.connection):await an(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 rn({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 B=await this.connection.sendTransaction(p,{skipPreflight:k});return T&&await Mt(this.connection,B),{txId:B,signedTx:p}}if(this.signAllTransactions){let B=await this.signAllTransactions([p]);if(this.signers.length)for(let K of B)try{K.sign(this.signers)}catch{}return{txId:R?"":await this.connection.sendTransaction(B[0],{skipPreflight:k}),signedTx:B[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 Mt(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 B=!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(B){clearInterval(K);return}try{let v=await this.connection.getTransaction(O,{commitment:"confirmed",maxSupportedTransactionVersion:0});v&&(B=!0,clearInterval(K),L({err:((N=v.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",O))}catch(v){B=!0,clearInterval(K),console.error("getTransaction timeout:",v,O)}},Ft)),x=this.connection.onSignature(O,N=>{if(B){this.connection.removeSignatureListener(x);return}B=!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?Nt(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(B,K)=>{B.recentBlockhash=R,l[K].length&&B.sign(...l[K])}),Ge(r),(O=this.owner)!=null&&O.isKeyPair){if(g){let B=0,K=[];for(let x of r){if(++B,B<=y){K.push("tx skipped");continue}let L=await cn(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 B=>await this.connection.sendRawTransaction(B.serialize(),{skipPreflight:T}))),signedTxs:r}}if(this.signAllTransactions){let B=await this.signAllTransactions(r.slice(y,r.length)),K=[...r.slice(0,y),...B];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(Le=>Le.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)}},Ft)),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 sn(this.connection):await an(this.connection)),i),d=Array.from(new Set([...this.lookupTableAddress,...a])),c=[];for(let B of d)l[B]===void 0&&c.push(new rt(B));let f=await rn({connection:this.connection,address:c});for(let[B,K]of Object.entries(f))l[B]=K;let w=t?Nt(t):{instructions:[],instructionTypes:[]},p=await it(this.connection,this.blockhashCommitment),g=this.signers.reduce((B,K)=>D(V({},B),{[K.publicKey.toBase58()]:K}),{}),b=[],y=[],k=[],T=0;if(this.allInstructions.forEach(B=>{let K=[...k,B],x=t?[...w.instructions,...K]:K;if(B!==n[T]&&k.length<u&&(gt({instructions:x,payer:this.feePayer,lookupTableAddressAccount:l})||gt({instructions:K,payer:this.feePayer,lookupTableAddressAccount:l})))k.push(B);else{if(k.length===0)throw Error("item ins too big");T+=B===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=[B]}}),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(B=>{B.some(K=>K.publicKey.equals(this.owner.publicKey))||B.push(this.owner.signer)}),b.forEach((B,K)=>{B.sign(y[K])}),{builder:this,transactions:b,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:async B=>{var se;let{sequentially:K,onTxUpdate:x,skipTxCount:L=0,recentBlockHash:N,skipPreflight:v=!0}=B||{};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 Mt(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 Le=await this.connection.sendTransaction(E[te],{skipPreflight:v});Q.push({txId:Le,status:"sent",signedTx:E[te]}),x==null||x([...Q]),te++;let mt=!1,Je=null,xt=null,Bn=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(mt){clearInterval(Je);return}try{let Oe=await this.connection.getTransaction(Le,{commitment:"confirmed",maxSupportedTransactionVersion:0});Oe&&(mt=!0,clearInterval(Je),Bn({err:((qe=Oe.meta)==null?void 0:qe.err)||null}),console.log("tx status from getTransaction:",Le))}catch(Oe){mt=!0,clearInterval(Je),console.error("getTransaction timeout:",Oe,Le)}},Ft)),xt=this.connection.onSignature(Le,qe=>{if(mt){this.connection.removeSignatureListener(xt);return}mt=!0,Bn(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 ln=(...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 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(ln(e))}logInfo(...e){this.logger.info(ln(e))}logAndCreateError(...e){let t=ln(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Jl,SystemProgram as tm}from"@solana/web3.js";import im from"bn.js";import{createCloseAccountInstruction as um,createInitializeAccountInstruction as cm,createTransferInstruction as lm,TOKEN_PROGRAM_ID as mm}from"@solana/spl-token";import{Keypair as Dl,PublicKey as Wl}from"@solana/web3.js";import Gl from"bn.js";import{TOKEN_PROGRAM_ID as Yl}from"@solana/spl-token";import{PublicKey as Di}from"@solana/web3.js";import Zn,{isBN as Hn}from"bn.js";import{bits as Ki,BitStructure as Xc,blob as Ci,Blob as Yc,cstr as Qc,f32 as Zc,f32be as Hc,f64 as jc,f64be as $c,greedy as Jc,Layout as Ri,ns64 as el,ns64be as tl,nu64 as Li,nu64be as nl,offset as Oi,s16 as ol,s16be as il,s24 as rl,s24be as al,s32 as Ni,s32be as sl,s40 as ul,s40be as cl,s48 as ll,s48be as ml,s8 as dl,seq as Mi,struct as pl,Structure as Fi,u16 as vi,u16be as fl,u24 as yl,u24be as bl,u32 as Vi,u32be as gl,u40 as Pl,u40be as Al,u48 as wl,u48be as kl,u8 as _i,UInt as Ei,union as Tl,Union as hl,unionLayoutDiscriminator as Il,utf8 as Bl}from"@solana/buffer-layout";var Vt=Ri,Gn=Fi;var mn=Ei;var zn=_i,me=vi;var _t=Vi;var Xn=Li;var re=Ni;var Yn=Mi;var _=Ci;var dn=Ki,Qn=Oi;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=dn(_t(),!1),this._upper=dn(_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 I(s){return new mn(1,s)}function J(s){return new mn(4,s)}function o(s){return new Xe(8,!1,s)}function F(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 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 Di(e),e=>e.toBuffer(),s)}function ne(s){return new kt(zn(),Wi,qi,s)}function Wi(s){if(s===0)return!1;if(s===1)return!0;throw new Error("Invalid bool: "+s)}function qi(s){return s?1:0}function Jn(s,e){let t=_t("length"),n=h([t,C(s,Qn(t,-t.span),"values")]);return new kt(n,({values:i})=>i,i=>({values:i}),e)}var pn=class extends Gn{decode(e,t){return super.decode(e,t)}};function h(s,e,t){return new pn(s,e,t)}function C(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"),I("state"),J("isNativeOption"),o("isNative"),o("delegatedAmount"),J("closeAuthorityOption"),m("closeAuthority")]);import{PublicKey as hg,SystemProgram as Ig}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Sg}from"@solana/spl-token";import{PublicKey as Gi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as zi}from"@solana/spl-token";function G(s,e,t){return $([s.toBuffer(),(t!=null?t:zi).toBuffer(),e.toBuffer()],new Gi("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as M}from"@solana/web3.js";var to=new M("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),no=new M("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),oo=new M("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),fn=new M("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),qm=new M("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Xi=new M("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),io=new M("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),ro=new M("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Um=new M("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Yi=new M("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ao=new M("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Qi=new M("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Zi=new M("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),so=new M("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Gm=new M("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Hi=new M("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),ji=new M("6FJon3QE27qgPVggARueB22hLvoh22VzJpXv4rBEoSLF"),$i=new M("CC12se5To1CdEuw7fDS27B7Geo5jJyL7t5UK2B44NgiH"),Ji=new M("9HzJyW1qZsEiSfMUf6L2jo3CcTKAyBmSyKdwQeYisHrC"),er=new M("DropEU8AvevN3UrXWXTMuz3rqnMczQVNjq3kcSdW2SQi"),yn=new M("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),tr=new M("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),zm=new M("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),nr=new M("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),or=new M("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),ir=new M("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Xm=new M("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Ym=new M("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Qm=new M("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Zm=new M("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Hm=new M("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX"),Tt={IDO_PROGRAM_ID_V1:ji,IDO_PROGRAM_ID_V2:$i,IDO_PROGRAM_ID_V3:Ji,IDO_PROGRAM_ID_V4:er};var De={OPEN_BOOK_PROGRAM:new M("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new M("Ray1111111111111111111111111111111111111111"),AMM_V4:new M("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new M("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new M("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new M("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new M("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new M("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new M("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new M("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new M("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new M("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:M.default,Router:new M("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new M("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new M("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new M("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new M("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new M("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new M("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new M("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new M("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new M("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new M("Ray1111111111111111111111111111111111111111")};import vg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as ey,TOKEN_2022_PROGRAM_ID as ty,TOKEN_PROGRAM_ID as ny}from"@solana/spl-token";import{PublicKey as iy}from"@solana/web3.js";import ay from"bn.js";import uy from"decimal.js";import{TOKEN_PROGRAM_ID as ld}from"@solana/spl-token";import{PublicKey as fd}from"@solana/web3.js";var rr=h([J("mintAuthorityOption"),m("mintAuthority"),o("supply"),I("decimals"),I("isInitialized"),J("freezeAuthorityOption"),m("freezeAuthority")]);import U from"bn.js";var ae=new U(1).shln(64);var ar=new U(1).shln(128),Ye=new U(1).shln(64).subn(1),sr=new U(1).shln(128).subn(1),Me=-443636,Fe=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,Sd=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),xd=new U(-1);var Kd=new U("18446744073700000000");var ur=h([_(8),I("bump"),me("index"),m("owner"),J("protocolFeeRate"),J("tradeFeeRate"),me("tickSpacing"),J("fundFeeRate"),C(J(),1),m("fundOwner"),C(o(),3)]),cr=h([J("blockTimestamp"),at("tickCumulative"),C(o(),4)]),go=h([_(8),ne("initialized"),o("recentEpoch"),me("observationIndex"),m("poolId"),C(cr,fo,"observations"),C(o(),4)]),lr=h([me("filterPeriod"),me("decayPeriod"),me("reductionFactor"),J("dynamicFeeControl"),J("maxVolatilityAccumulator"),re("tickSpacingIndexReference"),J("volatilityReference"),J("volatilityAccumulator"),o("lastUpdateTimestamp"),C(I(),46)]),mr=h([I("state"),o("openTime"),o("endTime"),o("lastUpdateTime"),F("emissionsPerSecondX64"),o("totalEmissioned"),o("claimed"),m("mint"),m("vault"),m("creator"),F("growthGlobalX64")]),bn=h([_(8),I("bump"),m("configId"),m("creator"),m("mintA"),m("mintB"),m("vaultA"),m("vaultB"),m("observationId"),I("mintDecimalsA"),I("mintDecimalsB"),me("tickSpacing"),F("liquidity"),F("sqrtPriceX64"),re("tickCurrent"),J(),F("feeGrowthGlobalX64A"),F("feeGrowthGlobalX64B"),o("protocolFeesTokenA"),o("protocolFeesTokenB"),C(F(),4),I("status"),I("feeOn"),_(6),C(mr,ht,"rewardInfos"),_(8*16,"tickArrayBitmap"),C(o(),4),o("fundFeesTokenA"),o("fundFeesTokenB"),o("startTime"),o("recentEpoch"),lr.replicate("dynamicFeeInfo"),C(o(),46)]),dr=h([F("growthInsideLastX64"),o("rewardAmountOwed")]),pr=h([_(8),I("bump"),m("nftMint"),m("poolId"),re("tickLower"),re("tickUpper"),F("liquidity"),F("feeGrowthInsideLastX64A"),F("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),C(dr,ht,"rewardInfos"),o("recentEpoch"),C(o(),7)]),Od=h([_(8),I("bump"),m("poolId"),re("tickLower"),re("tickUpper"),F("liquidity"),F("feeGrowthInsideLastX64A"),F("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),C(F(),ht,"rewardGrowthInside"),o("recentEpoch"),C(o(),7)]),fr=h([re("tick"),$n("liquidityNet"),F("liquidityGross"),F("feeGrowthOutsideX64A"),F("feeGrowthOutsideX64B"),C(F(),ht,"rewardGrowthsOutsideX64"),o("orderPhase"),o("ordersAmount"),o("partFilledOrdersRemaining"),F("unfilledRatioX64"),C(J(),3)]),Po=h([_(8),m("poolId"),re("startTickIndex"),C(fr,we,"ticks"),I("initializedTickCount"),o("recentEpoch"),C(I(),107)]),yr=h([_(8),I("bump"),C(m(),yo,"operationOwners"),C(m(),bo,"whitelistMints")]),br=h([_(8),m("poolId"),m("owner"),re("tick"),ne("zeroForOne"),o("orderPhase"),o("totalAmount"),o("filledAmount"),o("settleBase"),o("settleOutput"),o("openTime"),F("unfilledRatioX64"),C(o(),4)]),Ao=h([_(8),m("poolId"),_(8*8*ut,"positiveTickArrayBitmap"),_(8*8*ut,"negativeTickArrayBitmap")]),Nd=h([_(8),me("index"),me("filterPeriod"),me("decayPeriod"),me("reductionFactor"),J("dynamicFeeControl"),J("maxVolatilityAccumulator"),C(o(),8)]),gr=h([_(8),m("wallet"),I("nonceIndex"),o("orderNonce"),C(o(),4)]),Md=h([o(),I("bump"),m("owner"),m("poolId"),m("positionId"),m("nftAccount"),C(o(),8)]),Pr=h([_(8),I("bump"),m("lockOwner"),m("poolId"),m("positionId"),m("nftAccount"),m("lockNftMint"),o("recentEpoch"),C(o(),8)]);import Ar 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 Ed=new Ar(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 dp from"bn.js";import ce from"bn.js";import ct from"decimal.js";import qd from"bn.js";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 jd=Buffer.from("amm_config","utf8"),Io=Buffer.from("pool","utf8"),Bo=Buffer.from("pool_vault","utf8"),wr=Buffer.from("pool_reward_vault","utf8"),So=Buffer.from("position","utf8"),kr=Buffer.from("tick_array","utf8"),Tr=Buffer.from("operation","utf8"),hr=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Ir=Buffer.from("observation","utf8"),$d=Buffer.from("support_mint","utf8"),Jd=Buffer.from("dynamic_fee_config","utf8");function xo(s,e,t,n){return $([Io,e.toBuffer(),t.toBuffer(),n.toBuffer()],s)}function Ut(s,e,t){return $([Bo,e.toBuffer(),t.toBuffer()],s)}function Ko(s,e,t){return $([wr,e.toBuffer(),t.toBuffer()],s)}function ue(s,e,t){return $([kr,e.toBuffer(),ho(t)],s)}function ve(s,e,t,n){return $([So,e.toBuffer(),gn(t),gn(n)],s)}function Be(s,e){return $([So,e.toBuffer()],s)}function je(s){return $([Buffer.from("metadata","utf8"),Ee.toBuffer(),s.toBuffer()],Ee)}function Gt(s){return $([Tr],s)}function de(s,e){return $([hr,e.toBuffer()],s)}function Co(s,e){return $([Ir,e.toBuffer()],s)}var Ro=Buffer.from("locked_position","utf8");function Pn(s,e){return $([Ro,e.toBuffer()],s)}function An(s,e){return $([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,