UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

1 lines 115 kB
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 ys,TOKEN_PROGRAM_ID as bs,getTransferFeeConfig as gs,unpackMint as Ps}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 ZC from"decimal.js";import mi from"big.js";import Fs 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 Gs=W("Raydium_amount"),zs=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,Js=new j("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),eu=new j("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),tu=new j("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),nu=new j("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),ou=new j("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),iu=new j("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),ru=new j("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),au=new j("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),su=new j("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),uu=new j("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),cu=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 ku=new Z(new Ai(100));var xu=W("Raydium_price");import{merge as ZK}from"lodash";import vu 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 rc=W("Raydium_Api");import{PublicKey as hm,SystemProgram as Im}from"@solana/web3.js";import{AccountLayout as Cm,createAssociatedTokenAccountIdempotentInstruction as Rm,TOKEN_PROGRAM_ID as Lm,TOKEN_2022_PROGRAM_ID as Om}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&&gt({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&&gt({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 em,SystemProgram as nm}from"@solana/web3.js";import rm from"bn.js";import{createCloseAccountInstruction as cm,createInitializeAccountInstruction as lm,createTransferInstruction as mm,TOKEN_PROGRAM_ID as dm}from"@solana/spl-token";import{Keypair as Wl,PublicKey as ql}from"@solana/web3.js";import zl from"bn.js";import{TOKEN_PROGRAM_ID as Ql}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 Qc,cstr as Zc,f32 as Hc,f32be as jc,f64 as $c,f64be as Jc,greedy as el,Layout as Ri,ns64 as tl,ns64be as nl,nu64 as Li,nu64be as ol,offset as Oi,s16 as il,s16be as rl,s24 as al,s24be as sl,s32 as Ni,s32be as ul,s40 as cl,s40be as ll,s48 as ml,s48be as dl,s8 as pl,seq as Mi,struct as fl,Structure as Fi,u16 as vi,u16be as yl,u24 as bl,u24be as gl,u32 as Vi,u32be as Pl,u40 as Al,u40be as wl,u48 as kl,u48be as Tl,u8 as _i,UInt as Ei,union as hl,Union as Il,unionLayoutDiscriminator as Bl,utf8 as Sl}from"@solana/buffer-layout";var Vt=Ri,Gn=Fi;var mn=Ei;var zn=_i,me=vi;var _t=Vi;var Yn=Li;var ae=Ni;var Xn=Mi;var _=Ci;var dn=Ki,Qn=Oi;var Ye=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 Ye(8,!1,s)}function F(s){return new Ye(16,!1,s)}function jn(s){return new Ye(1,!0,s)}function at(s){return new Ye(8,!0,s)}function $n(s){return new Ye(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 Xn(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"),Um=new M("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Yi=new M("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),io=new M("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),ro=new M("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Gm=new M("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Xi=new M("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ao=new M("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Qi=new M("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Zi=new M("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),so=new M("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),zm=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"),Ym=new M("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),nr=new M("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),or=new M("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),ir=new M("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Xm=new M("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Qm=new M("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Zm=new M("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Hm=new M("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),jm=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 md}from"@solana/spl-token";import{PublicKey as yd}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 oe=new U(1).shln(64);var ar=new U(1).shln(128),Xe=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,xd=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 Y=new U(0),He=new U(1),Kd=new U(-1);var Cd=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"),ae("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"),ae("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"),ae("tickLower"),ae("tickUpper"),F("liquidity"),F("feeGrowthInsideLastX64A"),F("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),C(dr,ht,"rewardInfos"),o("recentEpoch"),C(o(),7)]),Nd=h([_(8),I("bump"),m("poolId"),ae("tickLower"),ae("tickUpper"),F("liquidity"),F("feeGrowthInsideLastX64A"),F("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),C(F(),ht,"rewardGrowthInside"),o("recentEpoch"),C(o(),7)]),fr=h([ae("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"),ae("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"),ae("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")]),Md=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)]),Fd=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 Dd=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 pp from"bn.js";import ce from"bn.js";import ct from"decimal.js";import Ud 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 $d=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"),Jd=Buffer.from("support_mint","utf8"),ep=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,