UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

1 lines 87.2 kB
var Oo=Object.defineProperty,No=Object.defineProperties;var Mo=Object.getOwnPropertyDescriptors;var bt=Object.getOwnPropertySymbols;var An=Object.prototype.hasOwnProperty,wn=Object.prototype.propertyIsEnumerable;var Pn=(s,e,t)=>e in s?Oo(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,O=(s,e)=>{for(var t in e||(e={}))An.call(e,t)&&Pn(s,t,e[t]);if(bt)for(var t of bt(e))wn.call(e,t)&&Pn(s,t,e[t]);return s},W=(s,e)=>No(s,Mo(e));var be=(s,e)=>{var t={};for(var o in s)An.call(s,o)&&e.indexOf(o)<0&&(t[o]=s[o]);if(s!=null&&bt)for(var o of bt(s))e.indexOf(o)<0&&wn.call(s,o)&&(t[o]=s[o]);return t};import{PublicKey as Vo}from"@solana/web3.js";import{get as kn,set as Fo}from"lodash";var Et=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(o=>typeof o=="object"?JSON.stringify(o):o).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}},Tn={},vo={};function E(s){let e=kn(Tn,s);if(!e){let t=kn(vo,s);e=new Et({name:s,logLevel:t}),Fo(Tn,s,e)}return e}import{MINT_SIZE as _a,TOKEN_PROGRAM_ID as Ea,getTransferFeeConfig as Da,unpackMint as Wa}from"@solana/spl-token";var Dt=E("Raydium_accountInfo_util");async function he(s,e,t){let{batchRequest:o,commitment:i="confirmed",chunkCount:r=100}=O({batchRequest:!1},t),u=Wt(e,r),c=new Array(u.length).fill([]);if(o){let b=u.map(A=>{let w=s._buildArgs([A.map(T=>T.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:w}}),d=Wt(b,10);c=(await(await Promise.all(d.map(async A=>await s._rpcBatchRequest(A)))).flat()).map(A=>(A.error&&Dt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${A.error.message}`),A.result.value.map(w=>{if(w){let{data:T,executable:L,lamports:k,owner:h,rentEpoch:S}=w;return T.length!==2&&T[1]!=="base64"&&Dt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(T[0],"base64"),executable:L,lamports:k,owner:new Vo(h),rentEpoch:S}}return null})))}else try{c=await Promise.all(u.map(b=>s.getMultipleAccountsInfo(b,i)))}catch(b){b instanceof Error&&Dt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${b.message}`)}return c.flat()}import ve from"bn.js";import AC from"decimal.js";import zo from"big.js";import is from"bn.js";import _o from"toformat";var Eo=_o,$e=Eo;import Pt from"big.js";import Wo from"bn.js";import qo from"decimal.js-light";import Je from"bn.js";var hn=9007199254740991;function ue(s){let e=E("Raydium_parseBigNumberish");if(s instanceof Je)return s;if(typeof s=="string"){if(s.match(/^-?[0-9]+$/))return new Je(s);e.logWithError(`invalid BigNumberish string: ${s}`)}return typeof s=="number"?(s%1&&e.logWithError(`BigNumberish number underflow: ${s}`),(s>=hn||s<=-hn)&&e.logWithError(`BigNumberish number overflow: ${s}`),new Je(String(s))):typeof s=="bigint"?new Je(s.toString()):(e.error(`invalid BigNumberish value: ${s}`),new Je(0))}var gt=E("module/fraction"),qt=$e(Pt),et=$e(qo),Uo={[0]:et.ROUND_DOWN,[1]:et.ROUND_HALF_UP,[2]:et.ROUND_UP},Go={[0]:Pt.roundDown,[1]:Pt.roundHalfUp,[2]:Pt.roundUp},G=class{constructor(e,t=new Wo(1)){this.numerator=ue(e),this.denominator=ue(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new G(this.denominator,this.numerator)}add(e){let t=e instanceof G?e:new G(ue(e));return this.denominator.eq(t.denominator)?new G(this.numerator.add(t.numerator),this.denominator):new G(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof G?e:new G(ue(e));return this.denominator.eq(t.denominator)?new G(this.numerator.sub(t.numerator),this.denominator):new G(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof G?e:new G(ue(e));return new G(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof G?e:new G(ue(e));return new G(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},o=1){Number.isInteger(e)||gt.logWithError(`${e} is not an integer.`),e<=0&&gt.logWithError(`${e} is not positive.`),et.set({precision:e+1,rounding:Uo[o]});let i=new et(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},o=1){return Number.isInteger(e)||gt.logWithError(`${e} is not an integer.`),e<0&&gt.logWithError(`${e} is negative.`),qt.DP=e,qt.RM=Go[o]||1,new qt(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var ps=E("Raydium_amount"),fs=$e(zo);import{PublicKey as Yo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as In}from"@solana/spl-token";var At={chainId:101,address:Yo.default.toBase58(),programId:In.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ge={chainId:101,address:"So11111111111111111111111111111111111111112",programId:In.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 Gt}from"@solana/web3.js";import{PublicKey as X,SystemProgram as Bn,SYSVAR_RENT_PUBKEY as Qo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Zo}from"@solana/spl-token";function _e({pubkey:s,isSigner:e=!1,isWritable:t=!0}){return{pubkey:s,isWritable:t,isSigner:e}}var Ho=[_e({pubkey:Zo,isWritable:!1}),_e({pubkey:Bn.programId,isWritable:!1}),_e({pubkey:Qo,isWritable:!1})];function Sn({publicKey:s,transformSol:e}){let t=xn(s.toString());if(t instanceof X)return e&&t.equals(Re)?Ie:t;if(e&&t.toString()===Re.toBase58())return Ie;if(typeof t=="string"){if(t===X.default.toBase58())return X.default;try{return new X(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function xn(s){try{return new X(s)}catch{return s}}var Ut=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),tt=new X("SysvarRent111111111111111111111111111111111"),Ts=new X("SysvarC1ock11111111111111111111111111111111"),wt=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),jo=new X("Sysvar1nstructions1111111111111111111111111"),$o=Bn.programId,hs=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Is=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Bs=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ss=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),xs=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ks=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Cs=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Rs=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ls=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Os=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Ns=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ie=new X("So11111111111111111111111111111111111111112"),Re=X.default;var zt=class{constructor({mint:e,decimals:t,symbol:o,name:i,skipMint:r=!1,isToken2022:u=!1}){if(e===Re.toBase58()||e instanceof Gt&&Re.equals(e)){this.decimals=ge.decimals,this.symbol=ge.symbol,this.name=ge.name,this.mint=new Gt(ge.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=o||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=r?Gt.default:Sn({publicKey:e}),this.isToken2022=u}equals(e){return this===e?!0:this.mint.equals(e.mint)}},re=zt;re.WSOL=new zt(W(O({},ge),{mint:ge.address}));var Xt=class{constructor({decimals:e,symbol:t="UNKNOWN",name:o="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=o}equals(e){return this===e}},kt=Xt;kt.SOL=new Xt(At);import Jo from"bn.js";var zs=new G(new Jo(100));var js=E("Raydium_price");import{merge as kK}from"lodash";import au from"axios";var Kn={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",MONITOR_BASE_HOST:"https://monitor.raydium.io",SERVICE_1_BASE_HOST:"https://service-v1.raydium.io",TEMP_HOST:"https://temp-api-v1.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",CPMM_CONFIG:"/main/cpmm-config",CLMM_DYNAMIC_CONFIG:"/main/clmm-dynamic-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://lite-api.jup.ag/tokens/v2/tag?query=verified",POOL_LIST:"/pools/info/list-v2",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/list-v2",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",OWNER_LOCK_POSITION:"/position/clmm-lock/{owner}",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee",CPMM_LOCK:"https://dynamic-ipfs.raydium.io/lock/cpmm/position",LAUNCH_AUTH_HOST:"https://launch-auth-v1.raydium.io",LAUNCH_COMMENT_HOST:"hhttps://launch-forum-v1.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1.raydium.io"},ei=W(O({},Kn),{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 Cu=E("Raydium_Api");import{PublicKey as Ql,SystemProgram as Zl}from"@solana/web3.js";import{AccountLayout as em,createAssociatedTokenAccountIdempotentInstruction as tm,TOKEN_PROGRAM_ID as nm,TOKEN_2022_PROGRAM_ID as om}from"@solana/spl-token";import{PublicKey as Ue,sendAndConfirmTransaction as $t,SystemProgram as ai,Transaction as it,TransactionMessage as rt,VersionedTransaction as at}from"@solana/web3.js";import si from"axios";import{PublicKey as Yt,AddressLookupTableAccount as We}from"@solana/web3.js";async function Qt({connection:s,address:e,cluster:t="mainnet"}){let o=await he(s,[...new Set(e.map(r=>r.toString()))].map(r=>new Yt(r))),i={};for(let r=0;r<e.length;r++){let u=o[r],c=e[r];if(!u)continue;let b=new We({key:c,state:We.deserialize(u.data)});i[c.toString()]=b,t==="devnet"?De[c.toString()]=b:Ee[c.toString()]=b}return i}var Ee={},Zt=async s=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Ee[e])return Ee;let t=new Yt(e),o=await s.getAccountInfo(t);return o&&(Ee[e]=new We({key:t,state:We.deserialize(o.data)})),Ee},De={},Ht=async s=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(De[e])return De;let t=new Yt(e),o=await s.getAccountInfo(t);return o&&(De[e]=new We({key:t,state:We.deserialize(o.data)})),De};var te={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 Cn,Keypair as Ln,PublicKey as ti,Transaction as On,TransactionMessage as ni,VersionedTransaction as Nn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as oi}from"@solana/spl-token";var Rn=E("Raydium_txUtil"),Mn=1644;function Tt(s){let e=[],t=[];return s.microLamports&&(e.push(Cn.setComputeUnitPrice({microLamports:s.microLamports})),t.push(te.SetComputeUnitPrice)),s.units&&(e.push(Cn.setComputeUnitLimit({units:s.units})),t.push(te.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function qe(s,e){var o,i;let t=e!=null?e:"confirmed";return(i=await((o=s.getLatestBlockhash)==null?void 0:o.call(s,{commitment:t})))==null?void 0:i.blockhash}async function ht(s,e){return s.getSignatureStatuses([e]),new Promise((t,o)=>{let i=setTimeout(o,6e4);s.onSignature(e,r=>{if(clearTimeout(i),!r.err){t("");return}o(Object.assign(r.err,{txId:e}))},"confirmed")})}function jt(s,e){s.length<1&&Rn.logWithError(`no instructions provided: ${s.toString()}`),e.length<1&&Rn.logWithError(`no signers provided:, ${e.toString()}`);let t=new On;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...s);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Mn}catch{return!1}}function Pe(s,e){let[t,o]=ti.findProgramAddressSync(s,e);return{publicKey:t,nonce:o}}function nt({instructions:s,payer:e,signers:t}){return jt(s,[e,...t])}function ot({instructions:s,payer:e,lookupTableAddressAccount:t,recentBlockhash:o=Ln.generate().publicKey.toString()}){let r=new ni({payerKey:e,recentBlockhash:o,instructions:s}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Nn(r).serialize()).toString("base64").length<Mn}catch{return!1}}var ii=s=>Buffer.isBuffer(s)?s:s instanceof Uint8Array?Buffer.from(s.buffer,s.byteOffset,s.byteLength):Buffer.from(s),ri=s=>{let e=s.serialize({requireAllSignatures:!1,verifySignatures:!1});s instanceof Nn&&(e=ii(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Le(s){let e=[];return s.forEach(t=>{t instanceof On&&(t.recentBlockhash||(t.recentBlockhash=oi.toBase58()),t.feePayer||(t.feePayer=Ln.generate().publicKey)),e.push(ri(t))}),console.log("simulate tx string:",e),e}var It=2e3,Bt=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment,this.loopMultiTxStatus=!!e.loopMultiTxStatus}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var o;let e=(await si.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(o=e==null?void 0:e[15])!=null?o:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:o}=Tt(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(ai.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new Ue(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(te.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let o=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(o))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:o=[],instructionTypes:i=[],endInstructionTypes:r=[],lookupTableAddress:u=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...o),this.instructionTypes.push(...i),this.endInstructionTypes.push(...r),this.lookupTableAddress.push(...u.filter(c=>c!==Ue.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:o}){return e===0?await this.buildV0(W(O({},t||{}),{lookupTableAddress:o})):this.build(t)}build(e){var o;let t=new it;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((o=this.owner)==null?void 0:o.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 y;let{recentBlockHash:r,skipPreflight:u=!0,sendAndConfirm:c,notSendToRpc:b}=i||{},d=r!=null?r:await qe(this.connection,this.blockhashCommitment);if(t.recentBlockhash=d,this.signers.length&&t.sign(...this.signers),Le([t]),(y=this.owner)!=null&&y.isKeyPair)return{txId:c?await $t(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 A=await this.signAllTransactions([t]);if(this.signers.length)for(let w of A)try{w.sign(...this.signers)}catch{}return{txId:b?"":await this.connection.sendRawTransaction(A[0].serialize(),{skipPreflight:u}),signedTx:A[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var d;let{extraPreBuildData:t=[],extInfo:o}=e,{transaction:i}=this.build(o),r=t.filter(y=>y.transaction.instructions.length>0),u=[i,...r.map(y=>y.transaction)],c=[this.signers,...r.map(y=>y.signers)],b=[...this.instructionTypes,...r.map(y=>y.instructionTypes).flat()];return(d=this.owner)!=null&&d.signer&&c.forEach(y=>{y.some(A=>A.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:u,signers:c,instructionTypes:b,execute:async y=>{var S;let{sequentially:A,onTxUpdate:w,skipTxCount:T=0,recentBlockHash:L,skipPreflight:k=!0}=y||{},h=L!=null?L:await qe(this.connection,this.blockhashCommitment);if((S=this.owner)!=null&&S.isKeyPair){if(A){let C=[],v=0;for(let V of u){if(++v,v<=T)continue;let P=await $t(this.connection,V,this.signers.find(I=>I.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:k});C.push(P)}return{txIds:C,signedTxs:u}}return{txIds:await await Promise.all(u.map(async C=>(C.recentBlockhash=h,await this.connection.sendRawTransaction(C.serialize(),{skipPreflight:k})))),signedTxs:u}}if(this.signAllTransactions){let C=u.map((V,P)=>(V.recentBlockhash=h,c[P].length&&V.sign(...c[P]),V));Le(C);let v=await this.signAllTransactions(C);if(A){let V=0,P=[],I=async()=>{if(!v[V])return;let B=await this.connection.sendRawTransaction(v[V].serialize(),{skipPreflight:k});P.push({txId:B,status:"sent",signedTx:v[V]}),w==null||w([...P]),V++;let R=!1,N=null,_=null,le=U=>{N!==null&&clearInterval(N),_!==null&&this.connection.removeSignatureListener(_);let q=P.findIndex(oe=>oe.txId===B);if(q>-1){if(P[q].status==="error"||P[q].status==="success")return;P[q].status=U.err?"error":"success"}w==null||w([...P]),U.err||I()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var U;if(R){clearInterval(N);return}try{let q=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:0});q&&(R=!0,clearInterval(N),le({err:((U=q.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",B))}catch(q){R=!0,clearInterval(N),console.error("getTransaction timeout:",q,B)}},It)),_=this.connection.onSignature(B,U=>{if(R){this.connection.removeSignatureListener(_);return}R=!0,le(U)},"confirmed"),this.connection.getSignatureStatus(B)};return await I(),{txIds:P.map(B=>B.txId),signedTxs:v}}else{let V=[];for(let P=0;P<v.length;P+=1){let I=await this.connection.sendRawTransaction(v[P].serialize(),{skipPreflight:k});V.push(I)}return{txIds:V,signedTxs:v}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:o}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:o||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:o})}async buildV0(e){var k;let L=e||{},{lookupTableCache:t={},lookupTableAddress:o=[],forerunCreate:i,recentBlockhash:r}=L,u=be(L,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),c=O(O({},this.cluster==="devnet"?await Ht(this.connection):await Zt(this.connection)),t),b=Array.from(new Set([...o,...this.lookupTableAddress])),d=[];for(let h of b)c[h]===void 0&&d.push(new Ue(h));let y=await Qt({connection:this.connection,address:d});for(let[h,S]of Object.entries(y))c[h]=S;let A=i?Ue.default.toBase58():r!=null?r:await qe(this.connection,this.blockhashCommitment),w=new rt({payerKey:this.feePayer,recentBlockhash:A,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(c));((k=this.owner)==null?void 0:k.signer)&&!this.signers.some(h=>h.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let T=new at(w);return T.sign(this.signers),{builder:this,transaction:T,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async h=>{var V;let{skipPreflight:S=!0,sendAndConfirm:C,notSendToRpc:v}=h||{};if(Le([T]),(V=this.owner)!=null&&V.isKeyPair){let P=await this.connection.sendTransaction(T,{skipPreflight:S});return C&&await ht(this.connection,P),{txId:P,signedTx:T}}if(this.signAllTransactions){let P=await this.signAllTransactions([T]);if(this.signers.length)for(let I of P)try{I.sign(this.signers)}catch{}return{txId:v?"":await this.connection.sendTransaction(P[0],{skipPreflight:S}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:u||{}}}async buildV0MultiTx(e){var d;let{extraPreBuildData:t=[],buildProps:o}=e,{transaction:i}=await this.buildV0(o),r=t.filter(y=>y.builder.instructions.length>0),u=[i,...r.map(y=>y.transaction)],c=[this.signers,...r.map(y=>y.signers)],b=[...this.instructionTypes,...r.map(y=>y.instructionTypes).flat()];return(d=this.owner)!=null&&d.signer&&c.forEach(y=>{y.some(A=>A.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),u.forEach(async(y,A)=>{y.sign(c[A])}),{builder:this,transactions:u,signers:c,instructionTypes:b,buildProps:o,execute:async y=>{var k;let{sequentially:A,onTxUpdate:w,recentBlockHash:T,skipPreflight:L=!0}=y||{};if(T&&u.forEach(h=>h.message.recentBlockhash=T),Le(u),(k=this.owner)!=null&&k.isKeyPair){if(A){let h=[];for(let S of u){let C=await this.connection.sendTransaction(S,{skipPreflight:L});await ht(this.connection,C),h.push(C)}return{txIds:h,signedTxs:u}}return{txIds:await Promise.all(u.map(async h=>await this.connection.sendTransaction(h,{skipPreflight:L}))),signedTxs:u}}if(this.signAllTransactions){let h=await this.signAllTransactions(u);if(A){let S=0,C=[],v=async()=>{if(!h[S])return;let V=await this.connection.sendTransaction(h[S],{skipPreflight:L});C.push({txId:V,status:"sent",signedTx:h[S]}),w==null||w([...C]),S++;let P=!1,I=null,B=null,R=N=>{I!==null&&clearInterval(I),B!==null&&this.connection.removeSignatureListener(B);let _=C.findIndex(le=>le.txId===V);if(_>-1){if(C[_].status==="error"||C[_].status==="success")return;C[_].status=N.err?"error":"success"}w==null||w([...C]),N.err||v()};this.loopMultiTxStatus&&(I=setInterval(async()=>{var N;if(P){clearInterval(I);return}try{let _=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});_&&(P=!0,clearInterval(I),R({err:((N=_.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",V))}catch(_){P=!0,clearInterval(I),console.error("getTransaction timeout:",_,V)}},It)),B=this.connection.onSignature(V,N=>{if(P){this.connection.removeSignatureListener(B);return}P=!0,R(N)},"confirmed"),this.connection.getSignatureStatus(V)};return v(),{txIds:[],signedTxs:h}}else{let S=[];for(let C=0;C<h.length;C+=1){let v=await this.connection.sendTransaction(h[C],{skipPreflight:L});S.push(v)}return{txIds:S,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var w;let A=e||{},{splitIns:t=[],computeBudgetConfig:o}=A,i=be(A,["splitIns","computeBudgetConfig"]),r=o?Tt(o):{instructions:[],instructionTypes:[]},u=this.signers.reduce((T,L)=>W(O({},T),{[L.publicKey.toBase58()]:L}),{}),c=[],b=[],d=[],y=0;if(this.allInstructions.forEach(T=>{let L=[...d,T],k=o?[...r.instructions,...L]:L,S=[...new Set(L.map(C=>C.keys.filter(v=>v.isSigner).map(v=>v.pubkey.toString())).flat()).values()].map(C=>new Ue(C));if(T!==t[y]&&d.length<12&&(nt({instructions:k,payer:this.feePayer,signers:S})||nt({instructions:L,payer:this.feePayer,signers:S})))d.push(T);else{if(d.length===0)throw Error("item ins too big");y+=T===t[y]?1:0,nt({instructions:o?[...r.instructions,...d]:[...d],payer:this.feePayer,signers:S})?c.push(new it().add(...r.instructions,...d)):c.push(new it().add(...d)),b.push(Array.from(new Set(d.map(C=>C.keys.filter(v=>v.isSigner).map(v=>v.pubkey.toString())).flat())).map(C=>u[C]).filter(C=>C!==void 0)),d=[T]}}),d.length>0){let L=[...new Set(d.map(k=>k.keys.filter(h=>h.isSigner).map(h=>h.pubkey.toString())).flat()).values()].map(k=>u[k]).filter(k=>k!==void 0);nt({instructions:o?[...r.instructions,...d]:[...d],payer:this.feePayer,signers:L.map(k=>k.publicKey)})?c.push(new it().add(...r.instructions,...d)):c.push(new it().add(...d)),b.push(L)}return c.forEach(T=>T.feePayer=this.feePayer),(w=this.owner)!=null&&w.signer&&b.forEach(T=>{T.some(L=>L.publicKey.equals(this.owner.publicKey))||T.push(this.owner.signer)}),{builder:this,transactions:c,signers:b,instructionTypes:this.instructionTypes,execute:async T=>{var V;let{sequentially:L,onTxUpdate:k,skipTxCount:h=0,recentBlockHash:S,skipPreflight:C=!0}=T||{},v=S!=null?S:await qe(this.connection,this.blockhashCommitment);if(c.forEach(async(P,I)=>{P.recentBlockhash=v,b[I].length&&P.sign(...b[I])}),Le(c),(V=this.owner)!=null&&V.isKeyPair){if(L){let P=0,I=[];for(let B of c){if(++P,P<=h){I.push("tx skipped");continue}let R=await $t(this.connection,B,this.signers.find(N=>N.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:C});I.push(R)}return{txIds:I,signedTxs:c}}return{txIds:await Promise.all(c.map(async P=>await this.connection.sendRawTransaction(P.serialize(),{skipPreflight:C}))),signedTxs:c}}if(this.signAllTransactions){let P=await this.signAllTransactions(c.slice(h,c.length)),I=[...c.slice(0,h),...P];if(L){let B=0,R=[],N=async()=>{if(!I[B])return;B<h&&(R.push({txId:"",status:"success",signedTx:I[B]}),k==null||k([...R]),B++,N());let _=await this.connection.sendRawTransaction(I[B].serialize(),{skipPreflight:C});R.push({txId:_,status:"sent",signedTx:I[B]}),k==null||k([...R]),B++;let le=!1,U=null,q=null,oe=z=>{U!==null&&clearInterval(U),q!==null&&this.connection.removeSignatureListener(q);let se=R.findIndex(ke=>ke.txId===_);if(se>-1){if(R[se].status==="error"||R[se].status==="success")return;R[se].status=z.err?"error":"success"}k==null||k([...R]),z.err||N()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var z;if(le){clearInterval(U);return}try{let se=await this.connection.getTransaction(_,{commitment:"confirmed",maxSupportedTransactionVersion:0});se&&(le=!0,clearInterval(U),oe({err:((z=se.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",_))}catch(se){le=!0,clearInterval(U),console.error("getTransaction timeout:",se,_)}},It)),q=this.connection.onSignature(_,z=>{if(le){this.connection.removeSignatureListener(q);return}le=!0,oe(z)},"confirmed"),this.connection.getSignatureStatus(_)};return await N(),{txIds:R.map(_=>_.txId),signedTxs:I}}else{let B=[];for(let R=0;R<I.length;R+=1){let N=await this.connection.sendRawTransaction(I[R].serialize(),{skipPreflight:C});B.push(N)}return{txIds:B,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var V;let v=e||{},{computeBudgetConfig:t,splitIns:o=[],lookupTableCache:i={},lookupTableAddress:r=[],insCountLimit:u=12}=v,c=be(v,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),b=O(O({},this.cluster==="devnet"?await Ht(this.connection):await Zt(this.connection)),i),d=Array.from(new Set([...this.lookupTableAddress,...r])),y=[];for(let P of d)b[P]===void 0&&y.push(new Ue(P));let A=await Qt({connection:this.connection,address:y});for(let[P,I]of Object.entries(A))b[P]=I;let w=t?Tt(t):{instructions:[],instructionTypes:[]},T=await qe(this.connection,this.blockhashCommitment),L=this.signers.reduce((P,I)=>W(O({},P),{[I.publicKey.toBase58()]:I}),{}),k=[],h=[],S=[],C=0;if(this.allInstructions.forEach(P=>{let I=[...S,P],B=t?[...w.instructions,...I]:I;if(P!==o[C]&&S.length<u&&(ot({instructions:B,payer:this.feePayer,lookupTableAddressAccount:b})||ot({instructions:I,payer:this.feePayer,lookupTableAddressAccount:b})))S.push(P);else{if(S.length===0)throw Error("item ins too big");C+=P===o[C]?1:0;let R={};for(let N of[...new Set(d)])b[N]!==void 0&&(R[N]=b[N]);if(t&&ot({instructions:[...w.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:T})){let N=new rt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...w.instructions,...S]}).compileToV0Message(Object.values(b));k.push(new at(N))}else{let N=new rt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...S]}).compileToV0Message(Object.values(b));k.push(new at(N))}h.push(Array.from(new Set(S.map(N=>N.keys.filter(_=>_.isSigner).map(_=>_.pubkey.toString())).flat())).map(N=>L[N]).filter(N=>N!==void 0)),S=[P]}}),S.length>0){let I=[...new Set(S.map(B=>B.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat()).values()].map(B=>L[B]).filter(B=>B!==void 0);if(t&&ot({instructions:[...w.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:T})){let B=new rt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...w.instructions,...S]}).compileToV0Message(Object.values(b));k.push(new at(B))}else{let B=new rt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...S]}).compileToV0Message(Object.values(b));k.push(new at(B))}h.push(I)}return(V=this.owner)!=null&&V.signer&&h.forEach(P=>{P.some(I=>I.publicKey.equals(this.owner.publicKey))||P.push(this.owner.signer)}),k.forEach((P,I)=>{P.sign(h[I])}),{builder:this,transactions:k,buildProps:e,signers:h,instructionTypes:this.instructionTypes,execute:async P=>{var le;let{sequentially:I,onTxUpdate:B,skipTxCount:R=0,recentBlockHash:N,skipPreflight:_=!0}=P||{};if(k.map(async(U,q)=>{h[q].length&&U.sign(h[q]),N&&(U.message.recentBlockhash=N)}),Le(k),(le=this.owner)!=null&&le.isKeyPair){if(I){let U=0,q=[];for(let oe of k){if(++U,U<=R){console.log("skip tx: ",U),q.push("tx skipped");continue}let z=await this.connection.sendTransaction(oe,{skipPreflight:_});await ht(this.connection,z),q.push(z)}return{txIds:q,signedTxs:k}}return{txIds:await Promise.all(k.map(async U=>await this.connection.sendTransaction(U,{skipPreflight:_}))),signedTxs:k}}if(this.signAllTransactions){let U=await this.signAllTransactions(k.slice(R,k.length)),q=[...k.slice(0,R),...U];if(I){let oe=0,z=[],se=async()=>{if(!q[oe])return;if(oe<R){z.push({txId:"",status:"success",signedTx:q[oe]}),B==null||B([...z]),oe++,se();return}let ke=await this.connection.sendTransaction(q[oe],{skipPreflight:_});z.push({txId:ke,status:"sent",signedTx:q[oe]}),B==null||B([...z]),oe++;let He=!1,Ve=null,yt=null,gn=Ce=>{Ve!==null&&clearInterval(Ve),yt!==null&&this.connection.removeSignatureListener(yt);let Te=z.findIndex(Lo=>Lo.txId===ke);if(Te>-1){if(z[Te].status==="error"||z[Te].status==="success")return;z[Te].status=Ce.err?"error":"success"}B==null||B([...z]),Ce.err||se()};this.loopMultiTxStatus&&(Ve=setInterval(async()=>{var Ce;if(He){clearInterval(Ve);return}try{let Te=await this.connection.getTransaction(ke,{commitment:"confirmed",maxSupportedTransactionVersion:0});Te&&(He=!0,clearInterval(Ve),gn({err:((Ce=Te.meta)==null?void 0:Ce.err)||null}),console.log("tx status from getTransaction:",ke))}catch(Te){He=!0,clearInterval(Ve),console.error("getTransaction timeout:",Te,ke)}},It)),yt=this.connection.onSignature(ke,Ce=>{if(He){this.connection.removeSignatureListener(yt);return}He=!0,gn(Ce)},"confirmed"),this.connection.getSignatureStatus(ke)};return se(),{txIds:[],signedTxs:q}}else{let oe=[];for(let z=0;z<q.length;z+=1){let se=await this.connection.sendTransaction(q[z],{skipPreflight:_});oe.push(se)}return{txIds:oe,signedTxs:q}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:c||{}}}};var Jt=(...s)=>s.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),ce=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=E(t)}createTxBuilder(e){return this.scope.checkOwner(),new Bt({connection:this.scope.connection,feePayer:e||this.scope.ownerPubKey,cluster:this.scope.cluster,owner:this.scope.owner,blockhashCommitment:this.scope.blockhashCommitment,loopMultiTxStatus:this.scope.loopMultiTxStatus,api:this.scope.api,signAllTransactions:this.scope.signAllTransactions})}logDebug(...e){this.logger.debug(Jt(e))}logInfo(...e){this.logger.info(Jt(e))}logAndCreateError(...e){let t=Jt(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Bl,SystemProgram as xl}from"@solana/web3.js";import Rl from"bn.js";import{createCloseAccountInstruction as Ml,createInitializeAccountInstruction as Fl,createTransferInstruction as vl,TOKEN_PROGRAM_ID as Vl}from"@solana/spl-token";import{Keypair as dl,PublicKey as pl}from"@solana/web3.js";import bl from"bn.js";import{TOKEN_PROGRAM_ID as Al}from"@solana/spl-token";import{PublicKey as Ai}from"@solana/web3.js";import En,{isBN as Dn}from"bn.js";import{bits as ui,BitStructure as gc,blob as ci,Blob as Pc,cstr as Ac,f32 as wc,f32be as kc,f64 as Tc,f64be as hc,greedy as Ic,Layout as li,ns64 as Bc,ns64be as Sc,nu64 as xc,nu64be as Kc,offset as mi,s16 as Cc,s16be as Rc,s24 as Lc,s24be as Oc,s32 as di,s32be as Nc,s40 as Mc,s40be as Fc,s48 as vc,s48be as Vc,s8 as _c,seq as pi,struct as Ec,Structure as fi,u16 as yi,u16be as Dc,u24 as Wc,u24be as qc,u32 as bi,u32be as Uc,u40 as Gc,u40be as zc,u48 as Xc,u48be as Yc,u8 as gi,UInt as Pi,union as Qc,Union as Zc,unionLayoutDiscriminator as Hc,utf8 as jc}from"@solana/buffer-layout";var St=li,Fn=fi;var en=Pi;var vn=gi,ne=yi;var xt=bi;var fe=di;var Vn=pi;var F=ci;var tn=ui,_n=mi;var Ne=class extends St{constructor(t,o,i){super(t,i);this.blob=F(t),this.signed=o}decode(t,o=0){let i=new En(this.blob.decode(t,o),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,o,i=0){return typeof t=="number"&&(t=new En(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),o,i)}},Kt=class extends St{constructor(t){super(8,t);this._lower=tn(xt(),!1),this._upper=tn(xt(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,o=0){let i=this._lower.decode(t,o),r=this._upper.decode(t,o+this._lower.span);return O(O({},i),r)}encode(t,o,i=0){return this._lower.encode(t,o,i)+this._upper.encode(t,o,i+this._lower.span)}};function p(s){return new en(1,s)}function Y(s){return new en(4,s)}function n(s){return new Ne(8,!1,s)}function M(s){return new Ne(16,!1,s)}function Wn(s){return new Ne(1,!0,s)}function Ge(s){return new Ne(8,!0,s)}function qn(s){return new Ne(16,!0,s)}var st=class extends St{constructor(t,o,i,r){super(t.span,r);this.layout=t,this.decoder=o,this.encoder=i}decode(t,o){return this.decoder(this.layout.decode(t,o))}encode(t,o,i){return this.layout.encode(this.encoder(t),o,i)}getSpan(t,o){return this.layout.getSpan(t,o)}};function a(s){return new st(F(32),e=>new Ai(e),e=>e.toBuffer(),s)}function de(s){return new st(vn(),wi,ki,s)}function wi(s){if(s===0)return!1;if(s===1)return!0;throw new Error("Invalid bool: "+s)}function ki(s){return s?1:0}function Un(s,e){let t=xt("length"),o=f([t,g(s,_n(t,-t.span),"values")]);return new st(o,({values:i})=>i,i=>({values:i}),e)}var nn=class extends Fn{decode(e,t){return super.decode(e,t)}};function f(s,e,t){return new nn(s,e,t)}function g(s,e,t){let o,i=typeof e=="number"?e:Dn(e)?e.toNumber():new Proxy(e,{get(r,u){if(!o){let c=Reflect.get(r,"count");o=Dn(c)?c.toNumber():c,Reflect.set(r,"count",o)}return Reflect.get(r,u)},set(r,u,c){return u==="count"&&(o=c),Reflect.set(r,u,c)}});return Vn(s,i,t)}var Ct=f([a("mint"),a("owner"),n("amount"),Y("delegateOption"),a("delegate"),p("state"),Y("isNativeOption"),n("isNative"),n("delegatedAmount"),Y("closeAuthorityOption"),a("closeAuthority")]);import{PublicKey as Tg,SystemProgram as hg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Bg}from"@solana/spl-token";import{PublicKey as lm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as dm}from"@solana/spl-token";import{PublicKey as x}from"@solana/web3.js";var zn=new x("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Xn=new x("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Yn=new x("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),on=new x("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),bm=new x("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),hi=new x("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Qn=new x("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Zn=new x("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),gm=new x("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Ii=new x("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Hn=new x("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Bi=new x("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Si=new x("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),jn=new x("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Pm=new x("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),xi=new x("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),rn=new x("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ki=new x("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Am=new x("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ci=new x("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ri=new x("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Li=new x("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),wm=new x("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),km=new x("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Tm=new x("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),hm=new x("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Im=new x("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Ke={OPEN_BOOK_PROGRAM:new x("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new x("Ray1111111111111111111111111111111111111111"),AMM_V4:new x("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new x("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new x("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new x("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new x("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new x("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new x("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new x("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new x("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new x("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:x.default,Router:new x("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new x("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new x("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new x("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new x("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new x("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new x("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new x("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new x("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new x("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new x("Ray1111111111111111111111111111111111111111")};import Fg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as Jf,TOKEN_2022_PROGRAM_ID as ey,TOKEN_PROGRAM_ID as ty}from"@solana/spl-token";import{PublicKey as oy}from"@solana/web3.js";import ry from"bn.js";import sy from"decimal.js";import{TOKEN_PROGRAM_ID as _m}from"@solana/spl-token";import{PublicKey as qm}from"@solana/web3.js";var Oi=f([Y("mintAuthorityOption"),a("mintAuthority"),n("supply"),p("decimals"),p("isInitialized"),Y("freezeAuthorityOption"),a("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as kf,TOKEN_2022_PROGRAM_ID as Tf,TOKEN_PROGRAM_ID as hf}from"@solana/spl-token";import{Keypair as Sf,PublicKey as xf,SystemProgram as Cf,TransactionInstruction as Rf}from"@solana/web3.js";import Of from"bn.js";import D from"bn.js";var Q=new D(1).shln(64),Xe=64,Ni=new D(1).shln(128),ut=new D(1).shln(64).subn(1),Mi=new D(1).shln(128).subn(1),Be=-443636,Se=443636,Me=new D("4295048016"),Fe=new D("79226673521066979257578248091"),$n=new D("59543866431248"),Jn=new D("184467440737095516"),eo=new D("15793534762490258745"),to=16;var an=60,ed=new D("18446743708227953217"),no=[{bit:0,factor:new D("fffcb933bd6fb800",16)},{bit:1,factor:new D("fff97272373d4000",16)},{bit:2,factor:new D("fff2e50f5f657000",16)},{bit:3,factor:new D("ffe5caca7e10f000",16)},{bit:4,factor:new D("ffcb9843d60f7000",16)},{bit:5,factor:new D("ff973b41fa98e800",16)},{bit:6,factor:new D("ff2ea16466c9b000",16)},{bit:7,factor:new D("fe5dee046a9a3800",16)},{bit:8,factor:new D("fcbe86c7900bb000",16)},{bit:9,factor:new D("f987a7253ac65800",16)},{bit:10,factor:new D("f3392b0822bb6000",16)},{bit:11,factor:new D("e7159475a2caf000",16)},{bit:12,factor:new D("d097f3bdfd2f2000",16)},{bit:13,factor:new D("a9f746462d9f8000",16)},{bit:14,factor:new D("70d869a156f31c00",16)},{bit:15,factor:new D("31be135f97ed3200",16)},{bit:16,factor:new D("9aa508b5b85a500",16)},{bit:17,factor:new D("5d6af8dedc582c",16)},{bit:18,factor:new D("2216e584f5fa",16)}],xe=1e6;var Lt=1e5,ct=1e4,oo=1e4,io=1e5;var lt=3,ro=100;var ao=10,so=100,Ot=14;var K=new D(0),we=new D(1),td=new D(-1);var nd=new D("18446744073700000000");var Fi=f([F(8),p("bump"),ne("index"),a("owner"),Y("protocolFeeRate"),Y("tradeFeeRate"),ne("tickSpacing"),Y("fundFeeRate"),g(Y(),1),a("fundOwner"),g(n(),3)]),vi=f([Y("blockTimestamp"),Ge("tickCumulative"),g(n(),4)]),uo=f([F(8),de("initialized"),n("recentEpoch"),ne("observationIndex"),a("poolId"),g(vi,ro,"observations"),g(n(),4)]),Vi=f([ne("filterPeriod"),ne("decayPeriod"),ne("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),fe("tickSpacingIndexReference"),Y("volatilityReference"),Y("volatilityAccumulator"),n("lastUpdateTimestamp"),g(p(),46)]),_i=f([p("state"),n("openTime"),n("endTime"),n("lastUpdateTime"),M("emissionsPerSecondX64"),n("totalEmissioned"),n("claimed"),a("mint"),a("vault"),a("creator"),M("growthGlobalX64")]),sn=f([F(8),p("bump"),a("configId"),a("creator"),a("mintA"),a("mintB"),a("vaultA"),a("vaultB"),a("observationId"),p("mintDecimalsA"),p("mintDecimalsB"),ne("tickSpacing"),M("liquidity"),M("sqrtPriceX64"),fe("tickCurrent"),Y(),M("feeGrowthGlobalX64A"),M("feeGrowthGlobalX64B"),n("protocolFeesTokenA"),n("protocolFeesTokenB"),g(M(),4),p("status"),p("feeOn"),F(6),g(_i,lt,"rewardInfos"),F(8*16,"tickArrayBitmap"),g(n(),4),n("fundFeesTokenA"),n("fundFeesTokenB"),n("startTime"),n("recentEpoch"),Vi.replicate("dynamicFeeInfo"),g(n(),46)]),Ei=f([M("growthInsideLastX64"),n("rewardAmountOwed")]),Di=f([F(8),p("bump"),a("nftMint"),a("poolId"),fe("tickLower"),fe("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),g(Ei,lt,"rewardInfos"),n("recentEpoch"),g(n(),7)]),ad=f([F(8),p("bump"),a("poolId"),fe("tickLower"),fe("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),g(M(),lt,"rewardGrowthInside"),n("recentEpoch"),g(n(),7)]),Wi=f([fe("tick"),qn("liquidityNet"),M("liquidityGross"),M("feeGrowthOutsideX64A"),M("feeGrowthOutsideX64B"),g(M(),lt,"rewardGrowthsOutsideX64"),n("orderPhase"),n("ordersAmount"),n("partFilledOrdersRemaining"),M("unfilledRatioX64"),g(Y(),3)]),co=f([F(8),a("poolId"),fe("startTickIndex"),g(Wi,an,"ticks"),p("initializedTickCount"),n("recentEpoch"),g(p(),107)]),qi=f([F(8),p("bump"),g(a(),ao,"operationOwners"),g(a(),so,"whitelistMints")]),Ui=f([F(8),a("poolId"),a("owner"),fe("tick"),de("zeroForOne"),n("orderPhase"),n("totalAmount"),n("filledAmount"),n("settleBase"),n("settleOutput"),n("openTime"),M("unfilledRatioX64"),g(n(),4)]),lo=f([F(8),a("poolId"),F(8*8*Ot,"positiveTickArrayBitmap"),F(8*8*Ot,"negativeTickArrayBitmap")]),sd=f([F(8),ne("index"),ne("filterPeriod"),ne("decayPeriod"),ne("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),g(n(),8)]),Gi=f([F(8),a("wallet"),p("nonceIndex"),n("orderNonce"),g(n(),4)]),ud=f([n(),p("bump"),a("owner"),a("poolId"),a("positionId"),a("nftAccount"),g(n(),8)]),zi=f([F(8),p("bump"),a("lockOwner"),a("poolId"),a("positionId"),a("nftAccount"),a("lockNftMint"),n("recentEpoch"),g(n(),8)]);import md from"bn.js";var Td=Buffer.from("amm_config","utf8"),Xi=Buffer.from("pool","utf8"),Yi=Buffer.from("pool_vault","utf8"),hd=Buffer.from("pool_reward_vault","utf8"),Id=Buffer.from("position","utf8"),Bd=Buffer.from("tick_array","utf8"),Sd=Buffer.from("operation","utf8"),xd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Kd=Buffer.from("observation","utf8"),Cd=Buffer.from("support_mint","utf8"),Rd=Buffer.from("dynamic_fee_config","utf8");var Ld=Buffer.from("locked_position","utf8");import{sha256 as rr}from"js-sha256";import Qi from"bn.js";import Fd from"decimal.js";function j(s,e,t){if(t.isZero())throw new Error("Division by zero");return s.mul(e).div(t)}function Z(s,e,t){if(t.isZero())throw new Error("Division by zero");let o=s.mul(e),i=o.div(t);return o.mod(t).isZero()?i:i.addn(1)}function Nt(s,e){return s.div(e).add(s.mod(e).isZero()?K:we)}var Vd=new Qi(1).shln(256).subn(1);function mo(s){return s.isZero()?-1:s.bitLength()-1}import jd from"bn.js";import J from"bn.js";import Ye from"decimal.js";var H=class{static isInitialized({data:e}){return this.hasLiquidity({data:e})||this.hasLimitOrders({data:e})}static hasLimitOrders({data:e}){return!e.ordersAmount.isZero()||!e.partFilledOrdersRemaining.isZero()}static hasLiquidity({data:e}){return!e.liquidityGross.isZero()}static isValidTick(e){return e>=Be&&e<=Se}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${Be}, ${Se}]`)}static getSqrtPriceAtTick(e){this.checkTick(e);let t=Math.abs(e),o=Q.clone();for(let{bit:i,factor:r}of no)(t&1<<i)!==0&&(o=j(o,r,Q));return e>0&&(o=j(Q,Q,o)),o}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:o}){if(o){let i=H.getPriceAtTick(t,!1);return j(e,i,Q)}else{let i=H.getPriceAtTick(t,!0);return j(e,Q,i)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:o}){if(o){let i=H.getPriceAtTick(t,!0);return Z(e,i,Q)}else{let i=H.getPriceAtTick(t,!1);return Z(e,Q,i)}}static limitOrderUnfilledAmount({tick:e}){return e.ordersAmount.add(e.partFilledOrdersRemaining)}static matchLimitOrder({tick:e,swapAmount:t,swapDirectionZeroForOne:o,isBaseInput:i,feeRate:r,isFeeOnInput:u}){let c={amountIn:K,amountOut:K,ammFeeAmount:K},b=this.limitOrderUnfilledAmount({tick:e});if(t.isZero()||b.isZero(