@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 76.7 kB
JavaScript
var yo=Object.defineProperty,bo=Object.defineProperties;var go=Object.getOwnPropertyDescriptors;var ot=Object.getOwnPropertySymbols;var sn=Object.prototype.hasOwnProperty,un=Object.prototype.propertyIsEnumerable;var an=(o,t,n)=>t in o?yo(o,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):o[t]=n,O=(o,t)=>{for(var n in t||(t={}))sn.call(t,n)&&an(o,n,t[n]);if(ot)for(var n of ot(t))un.call(t,n)&&an(o,n,t[n]);return o},D=(o,t)=>bo(o,go(t));var ue=(o,t)=>{var n={};for(var r in o)sn.call(o,r)&&t.indexOf(r)<0&&(n[r]=o[r]);if(o!=null&&ot)for(var r of ot(o))t.indexOf(r)<0&&un.call(o,r)&&(n[r]=o[r]);return n};import{PublicKey as Co}from"@solana/web3.js";import pn,{isBN as fn}from"bn.js";import{bits as Po,BitStructure as Oa,blob as Ao,Blob as Na,cstr as Ma,f32 as Fa,f32be as va,f64 as Va,f64be as _a,greedy as Ea,Layout as wo,ns64 as Da,ns64be as Wa,nu64 as qa,nu64be as Ua,offset as ko,s16 as Ga,s16be as za,s24 as Xa,s24be as Ya,s32 as To,s32be as Qa,s40 as Za,s40be as Ha,s48 as ja,s48be as $a,s8 as Ja,seq as ho,struct as es,Structure as Io,u16 as Bo,u16be as ts,u24 as ns,u24be as os,u32 as So,u32be as is,u40 as rs,u40be as as,u48 as ss,u48be as us,u8 as Ko,UInt as xo,union as cs,Union as ls,unionLayoutDiscriminator as ms,utf8 as ds}from"@solana/buffer-layout";var it=wo,cn=Io;var Bt=xo;var ln=Ko,Y=Bo;var rt=So;var ae=To;var mn=ho;var M=Ao;var St=Po,dn=ko;var Pe=class extends it{constructor(n,r,s){super(n,s);this.blob=M(n),this.signed=r}decode(n,r=0){let s=new pn(this.blob.decode(n,r),10,"le");return this.signed?s.fromTwos(this.span*8).clone():s}encode(n,r,s=0){return typeof n=="number"&&(n=new pn(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),r,s)}},at=class extends it{constructor(n){super(8,n);this._lower=St(rt(),!1),this._upper=St(rt(),!1)}addBoolean(n){this._lower.fields.length<32?this._lower.addBoolean(n):this._upper.addBoolean(n)}decode(n,r=0){let s=this._lower.decode(n,r),m=this._upper.decode(n,r+this._lower.span);return O(O({},s),m)}encode(n,r,s=0){return this._lower.encode(n,r,s)+this._upper.encode(n,r,s+this._lower.span)}};function p(o){return new Bt(1,o)}function z(o){return new Bt(4,o)}function e(o){return new Pe(8,!1,o)}function N(o){return new Pe(16,!1,o)}function yn(o){return new Pe(1,!0,o)}function Se(o){return new Pe(8,!0,o)}function bn(o){return new Pe(16,!0,o)}var We=class extends it{constructor(n,r,s,m){super(n.span,m);this.layout=n,this.decoder=r,this.encoder=s}decode(n,r){return this.decoder(this.layout.decode(n,r))}encode(n,r,s){return this.layout.encode(this.encoder(n),r,s)}getSpan(n,r){return this.layout.getSpan(n,r)}};function i(o){return new We(M(32),t=>new Co(t),t=>t.toBuffer(),o)}function re(o){return new We(ln(),Ro,Lo,o)}function Ro(o){if(o===0)return!1;if(o===1)return!0;throw new Error("Invalid bool: "+o)}function Lo(o){return o?1:0}function gn(o,t){let n=rt("length"),r=f([n,b(o,dn(n,-n.span),"values")]);return new We(r,({values:s})=>s,s=>({values:s}),t)}var Kt=class extends cn{decode(t,n){return super.decode(t,n)}};function f(o,t,n){return new Kt(o,t,n)}function b(o,t,n){let r,s=typeof t=="number"?t:fn(t)?t.toNumber():new Proxy(t,{get(m,a){if(!r){let u=Reflect.get(m,"count");r=fn(u)?u.toNumber():u,Reflect.set(m,"count",r)}return Reflect.get(m,a)},set(m,a,u){return a==="count"&&(r=u),Reflect.set(m,a,u)}});return mn(o,s,n)}import{PublicKey as Mo}from"@solana/web3.js";import{get as Pn,set as Oo}from"lodash";var xt=class{constructor(t){this.logLevel=t.logLevel!==void 0?t.logLevel:0,this.name=t.name}set level(t){this.logLevel=t}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(t){return t<=this.logLevel}error(...t){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...t),this):this}logWithError(...t){let n=t.map(r=>typeof r=="object"?JSON.stringify(r):r).join(", ");throw new Error(n)}warning(...t){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...t),this):this}info(...t){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...t),this):this}debug(...t){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...t),this):this}},An={},No={};function _(o){let t=Pn(An,o);if(!t){let n=Pn(No,o);t=new xt({name:o,logLevel:n}),Oo(An,o,t)}return t}import{MINT_SIZE as Ls,TOKEN_PROGRAM_ID as Os,getTransferFeeConfig as Ns,unpackMint as Ms}from"@solana/spl-token";var Ct=_("Raydium_accountInfo_util");async function fe(o,t,n){let{batchRequest:r,commitment:s="confirmed",chunkCount:m=100}=O({batchRequest:!1},n),a=Rt(t,m),u=new Array(a.length).fill([]);if(r){let y=a.map(w=>{let T=o._buildArgs([w.map(A=>A.toBase58())],s,"base64");return{methodName:"getMultipleAccounts",args:T}}),g=Rt(y,10);u=(await(await Promise.all(g.map(async w=>await o._rpcBatchRequest(w)))).flat()).map(w=>(w.error&&Ct.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${w.error.message}`),w.result.value.map(T=>{if(T){let{data:A,executable:x,lamports:k,owner:S,rentEpoch:C}=T;return A.length!==2&&A[1]!=="base64"&&Ct.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(A[0],"base64"),executable:x,lamports:k,owner:new Mo(S),rentEpoch:C}}return null})))}else try{u=await Promise.all(a.map(y=>o.getMultipleAccountsInfo(y,s)))}catch(y){y instanceof Error&&Ct.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${y.message}`)}return u.flat()}import Te from"bn.js";import rR from"decimal.js";import qo from"big.js";import js from"bn.js";import Fo from"toformat";var vo=Fo,Ue=vo;import ut from"big.js";import _o from"bn.js";import Eo from"decimal.js-light";import Ge from"bn.js";var wn=9007199254740991;function ne(o){let t=_("Raydium_parseBigNumberish");if(o instanceof Ge)return o;if(typeof o=="string"){if(o.match(/^-?[0-9]+$/))return new Ge(o);t.logWithError(`invalid BigNumberish string: ${o}`)}return typeof o=="number"?(o%1&&t.logWithError(`BigNumberish number underflow: ${o}`),(o>=wn||o<=-wn)&&t.logWithError(`BigNumberish number overflow: ${o}`),new Ge(String(o))):typeof o=="bigint"?new Ge(o.toString()):(t.error(`invalid BigNumberish value: ${o}`),new Ge(0))}var st=_("module/fraction"),Lt=Ue(ut),ze=Ue(Eo),Do={[0]:ze.ROUND_DOWN,[1]:ze.ROUND_HALF_UP,[2]:ze.ROUND_UP},Wo={[0]:ut.roundDown,[1]:ut.roundHalfUp,[2]:ut.roundUp},U=class{constructor(t,n=new _o(1)){this.numerator=ne(t),this.denominator=ne(n)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new U(this.denominator,this.numerator)}add(t){let n=t instanceof U?t:new U(ne(t));return this.denominator.eq(n.denominator)?new U(this.numerator.add(n.numerator),this.denominator):new U(this.numerator.mul(n.denominator).add(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}sub(t){let n=t instanceof U?t:new U(ne(t));return this.denominator.eq(n.denominator)?new U(this.numerator.sub(n.numerator),this.denominator):new U(this.numerator.mul(n.denominator).sub(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}mul(t){let n=t instanceof U?t:new U(ne(t));return new U(this.numerator.mul(n.numerator),this.denominator.mul(n.denominator))}div(t){let n=t instanceof U?t:new U(ne(t));return new U(this.numerator.mul(n.denominator),this.denominator.mul(n.numerator))}toSignificant(t,n={groupSeparator:""},r=1){Number.isInteger(t)||st.logWithError(`${t} is not an integer.`),t<=0&&st.logWithError(`${t} is not positive.`),ze.set({precision:t+1,rounding:Do[r]});let s=new ze(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(t);return s.toFormat(s.decimalPlaces(),n)}toFixed(t,n={groupSeparator:""},r=1){return Number.isInteger(t)||st.logWithError(`${t} is not an integer.`),t<0&&st.logWithError(`${t} is negative.`),Lt.DP=t,Lt.RM=Wo[r]||1,new Lt(this.numerator.toString()).div(this.denominator.toString()).toFormat(t,n)}isZero(){return this.numerator.isZero()}};var au=_("Raydium_amount"),su=Ue(qo);import{PublicKey as Go}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as kn}from"@solana/spl-token";var ct={chainId:101,address:Go.default.toBase58(),programId:kn.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:kn.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 Nt}from"@solana/web3.js";import{PublicKey as X,SystemProgram as Tn,SYSVAR_RENT_PUBKEY as zo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Xo}from"@solana/spl-token";function Ke({pubkey:o,isSigner:t=!1,isWritable:n=!0}){return{pubkey:o,isWritable:n,isSigner:t}}var Yo=[Ke({pubkey:Xo,isWritable:!1}),Ke({pubkey:Tn.programId,isWritable:!1}),Ke({pubkey:zo,isWritable:!1})];function hn({publicKey:o,transformSol:t}){let n=In(o.toString());if(n instanceof X)return t&&n.equals(Ae)?ye:n;if(t&&n.toString()===Ae.toBase58())return ye;if(typeof n=="string"){if(n===X.default.toBase58())return X.default;try{return new X(n)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function In(o){try{return new X(o)}catch{return o}}var Ot=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Xe=new X("SysvarRent111111111111111111111111111111111"),yu=new X("SysvarC1ock11111111111111111111111111111111"),lt=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Qo=new X("Sysvar1nstructions1111111111111111111111111"),Zo=Tn.programId,bu=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),gu=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Pu=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Au=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),wu=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),ku=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Tu=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),hu=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Iu=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Bu=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Su=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ye=new X("So11111111111111111111111111111111111111112"),Ae=X.default;var Mt=class{constructor({mint:t,decimals:n,symbol:r,name:s,skipMint:m=!1,isToken2022:a=!1}){if(t===Ae.toBase58()||t instanceof Nt&&Ae.equals(t)){this.decimals=ce.decimals,this.symbol=ce.symbol,this.name=ce.name,this.mint=new Nt(ce.address),this.isToken2022=!1;return}this.decimals=n,this.symbol=r||t.toString().substring(0,6),this.name=s||t.toString().substring(0,6),this.mint=m?Nt.default:hn({publicKey:t}),this.isToken2022=a}equals(t){return this===t?!0:this.mint.equals(t.mint)}},J=Mt;J.WSOL=new Mt(D(O({},ce),{mint:ce.address}));var Ft=class{constructor({decimals:t,symbol:n="UNKNOWN",name:r="UNKNOWN"}){this.decimals=t,this.symbol=n,this.name=r}equals(t){return this===t}},mt=Ft;mt.SOL=new Ft(ct);import Ho from"bn.js";var _u=new U(new Ho(100));var Gu=_("Raydium_price");import{merge as sC}from"lodash";import Ju from"axios";var Bn={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"},jo=D(O({},Bn),{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 Tc=_("Raydium_Api");import{PublicKey as Hl,SystemProgram as jl}from"@solana/web3.js";import{AccountLayout as nm,createAssociatedTokenAccountIdempotentInstruction as om,TOKEN_PROGRAM_ID as im,TOKEN_2022_PROGRAM_ID as rm}from"@solana/spl-token";import{PublicKey as Oe,sendAndConfirmTransaction as Wt,SystemProgram as oi,Transaction as Ze,TransactionMessage as He,VersionedTransaction as je}from"@solana/web3.js";import ii from"axios";import{PublicKey as vt,AddressLookupTableAccount as Re}from"@solana/web3.js";async function Vt({connection:o,address:t,cluster:n="mainnet"}){let r=await fe(o,[...new Set(t.map(m=>m.toString()))].map(m=>new vt(m))),s={};for(let m=0;m<t.length;m++){let a=r[m],u=t[m];if(!a)continue;let y=new Re({key:u,state:Re.deserialize(a.data)});s[u.toString()]=y,n==="devnet"?Ce[u.toString()]=y:xe[u.toString()]=y}return s}var xe={},_t=async o=>{let t="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(xe[t])return xe;let n=new vt(t),r=await o.getAccountInfo(n);return r&&(xe[t]=new Re({key:n,state:Re.deserialize(r.data)})),xe},Ce={},Et=async o=>{let t="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Ce[t])return Ce;let n=new vt(t),r=await o.getAccountInfo(n);return r&&(Ce[t]=new Re({key:n,state:Re.deserialize(r.data)})),Ce};var Z={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 Sn,Keypair as xn,PublicKey as $o,Transaction as Cn,TransactionMessage as Jo,VersionedTransaction as Rn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ei}from"@solana/spl-token";var Kn=_("Raydium_txUtil"),Ln=1644;function dt(o){let t=[],n=[];return o.microLamports&&(t.push(Sn.setComputeUnitPrice({microLamports:o.microLamports})),n.push(Z.SetComputeUnitPrice)),o.units&&(t.push(Sn.setComputeUnitLimit({units:o.units})),n.push(Z.SetComputeUnitLimit)),{instructions:t,instructionTypes:n}}async function Le(o,t){var r,s;let n=t!=null?t:"confirmed";return(s=await((r=o.getLatestBlockhash)==null?void 0:r.call(o,{commitment:n})))==null?void 0:s.blockhash}async function pt(o,t){return o.getSignatureStatuses([t]),new Promise((n,r)=>{let s=setTimeout(r,6e4);o.onSignature(t,m=>{if(clearTimeout(s),!m.err){n("");return}r(Object.assign(m.err,{txId:t}))},"confirmed")})}function Dt(o,t){o.length<1&&Kn.logWithError(`no instructions provided: ${o.toString()}`),t.length<1&&Kn.logWithError(`no signers provided:, ${t.toString()}`);let n=new Cn;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=t[0],n.add(...o);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<Ln}catch{return!1}}function le(o,t){let[n,r]=$o.findProgramAddressSync(o,t);return{publicKey:n,nonce:r}}function Ye({instructions:o,payer:t,signers:n}){return Dt(o,[t,...n])}function Qe({instructions:o,payer:t,lookupTableAddressAccount:n,recentBlockhash:r=xn.generate().publicKey.toString()}){let m=new Jo({payerKey:t,recentBlockhash:r,instructions:o}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new Rn(m).serialize()).toString("base64").length<Ln}catch{return!1}}var ti=o=>Buffer.isBuffer(o)?o:o instanceof Uint8Array?Buffer.from(o.buffer,o.byteOffset,o.byteLength):Buffer.from(o),ni=o=>{let t=o.serialize({requireAllSignatures:!1,verifySignatures:!1});o instanceof Rn&&(t=ti(t));try{return t instanceof Buffer?t.toString("base64"):Buffer.from(t).toString("base64")}catch{return t.toString("base64")}};function we(o){let t=[];return o.forEach(n=>{n instanceof Cn&&(n.recentBlockhash||(n.recentBlockhash=ei.toBase58()),n.feePayer||(n.feePayer=xn.generate().publicKey)),t.push(ni(n))}),console.log("simulate tx string:",t),t}var ft=2e3,yt=class{constructor(t){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=t.connection,this.feePayer=t.feePayer,this.signAllTransactions=t.signAllTransactions,this.owner=t.owner,this.cluster=t.cluster,this.blockhashCommitment=t.blockhashCommitment,this.loopMultiTxStatus=!!t.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 r;let t=(await ii.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:n}=(r=t==null?void 0:t[15])!=null?r:{};if(!!n)return{units:6e5,microLamports:Math.min(Math.ceil(n*1e6/6e5),25e3)}}addCustomComputeBudget(t){if(t){let{instructions:n,instructionTypes:r}=dt(t);return this.instructions.unshift(...n),this.instructionTypes.unshift(...r),!0}return!1}addTipInstruction(t){var n;return t?(this.endInstructions.push(oi.transfer({fromPubkey:(n=t.feePayer)!=null?n:this.feePayer,toPubkey:new Oe(t.address),lamports:BigInt(t.amount.toString())})),this.endInstructionTypes.push(Z.TransferTip),!0):!1}async calComputeBudget({config:t,defaultIns:n}){try{let r=t||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(r))return;n&&this.instructions.unshift(...n)}catch{n&&this.instructions.unshift(...n)}}addInstruction({instructions:t=[],endInstructions:n=[],signers:r=[],instructionTypes:s=[],endInstructionTypes:m=[],lookupTableAddress:a=[]}){return this.instructions.push(...t),this.endInstructions.push(...n),this.signers.push(...r),this.instructionTypes.push(...s),this.endInstructionTypes.push(...m),this.lookupTableAddress.push(...a.filter(u=>u!==Oe.default.toString())),this}async versionBuild({txVersion:t,extInfo:n,lookupTableAddress:r}){return t===0?await this.buildV0(D(O({},n||{}),{lookupTableAddress:r})):this.build(n)}build(t){var r;let n=new Ze;return this.allInstructions.length&&n.add(...this.allInstructions),n.feePayer=this.feePayer,((r=this.owner)==null?void 0:r.signer)&&!this.signers.some(s=>s.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:n,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async s=>{var d;let{recentBlockHash:m,skipPreflight:a=!0,sendAndConfirm:u,notSendToRpc:y}=s||{},g=m!=null?m:await Le(this.connection,this.blockhashCommitment);if(n.recentBlockhash=g,this.signers.length&&n.sign(...this.signers),we([n]),(d=this.owner)!=null&&d.isKeyPair)return{txId:u?await Wt(this.connection,n,this.signers.find(T=>T.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:a}):await this.connection.sendRawTransaction(n.serialize(),{skipPreflight:a}),signedTx:n};if(this.signAllTransactions){let w=await this.signAllTransactions([n]);if(this.signers.length)for(let T of w)try{T.sign(...this.signers)}catch{}return{txId:y?"":await this.connection.sendRawTransaction(w[0].serialize(),{skipPreflight:a}),signedTx:w[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:t||{}}}buildMultiTx(t){var g;let{extraPreBuildData:n=[],extInfo:r}=t,{transaction:s}=this.build(r),m=n.filter(d=>d.transaction.instructions.length>0),a=[s,...m.map(d=>d.transaction)],u=[this.signers,...m.map(d=>d.signers)],y=[...this.instructionTypes,...m.map(d=>d.instructionTypes).flat()];return(g=this.owner)!=null&&g.signer&&u.forEach(d=>{d.some(w=>w.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:a,signers:u,instructionTypes:y,execute:async d=>{var C;let{sequentially:w,onTxUpdate:T,skipTxCount:A=0,recentBlockHash:x,skipPreflight:k=!0}=d||{},S=x!=null?x:await Le(this.connection,this.blockhashCommitment);if((C=this.owner)!=null&&C.isKeyPair){if(w){let K=[],F=0;for(let v of a){if(++F,F<=A)continue;let P=await Wt(this.connection,v,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:k});K.push(P)}return{txIds:K,signedTxs:a}}return{txIds:await await Promise.all(a.map(async K=>(K.recentBlockhash=S,await this.connection.sendRawTransaction(K.serialize(),{skipPreflight:k})))),signedTxs:a}}if(this.signAllTransactions){let K=a.map((v,P)=>(v.recentBlockhash=S,u[P].length&&v.sign(...u[P]),v));we(K);let F=await this.signAllTransactions(K);if(w){let v=0,P=[],h=async()=>{if(!F[v])return;let I=await this.connection.sendRawTransaction(F[v].serialize(),{skipPreflight:k});P.push({txId:I,status:"sent",signedTx:F[v]}),T==null||T([...P]),v++;let R=!1,L=null,V=null,ie=q=>{L!==null&&clearInterval(L),V!==null&&this.connection.removeSignatureListener(V);let W=P.findIndex($=>$.txId===I);if(W>-1){if(P[W].status==="error"||P[W].status==="success")return;P[W].status=q.err?"error":"success"}T==null||T([...P]),q.err||h()};this.loopMultiTxStatus&&(L=setInterval(async()=>{var q;if(R){clearInterval(L);return}try{let W=await this.connection.getTransaction(I,{commitment:"confirmed",maxSupportedTransactionVersion:0});W&&(R=!0,clearInterval(L),ie({err:((q=W.meta)==null?void 0:q.err)||null}),console.log("tx status from getTransaction:",I))}catch(W){R=!0,clearInterval(L),console.error("getTransaction timeout:",W,I)}},ft)),V=this.connection.onSignature(I,q=>{if(R){this.connection.removeSignatureListener(V);return}R=!0,ie(q)},"confirmed"),this.connection.getSignatureStatus(I)};return await h(),{txIds:P.map(I=>I.txId),signedTxs:F}}else{let v=[];for(let P=0;P<F.length;P+=1){let h=await this.connection.sendRawTransaction(F[P].serialize(),{skipPreflight:k});v.push(h)}return{txIds:v,signedTxs:F}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async versionMultiBuild({extraPreBuildData:t,txVersion:n,extInfo:r}){return n===0?await this.buildV0MultiTx({extraPreBuildData:t,buildProps:r||{}}):this.buildMultiTx({extraPreBuildData:t,extInfo:r})}async buildV0(t){var k;let x=t||{},{lookupTableCache:n={},lookupTableAddress:r=[],forerunCreate:s,recentBlockhash:m}=x,a=ue(x,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),u=O(O({},this.cluster==="devnet"?await Et(this.connection):await _t(this.connection)),n),y=Array.from(new Set([...r,...this.lookupTableAddress])),g=[];for(let S of y)u[S]===void 0&&g.push(new Oe(S));let d=await Vt({connection:this.connection,address:g});for(let[S,C]of Object.entries(d))u[S]=C;let w=s?Oe.default.toBase58():m!=null?m:await Le(this.connection,this.blockhashCommitment),T=new He({payerKey:this.feePayer,recentBlockhash:w,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(u));((k=this.owner)==null?void 0:k.signer)&&!this.signers.some(S=>S.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let A=new je(T);return A.sign(this.signers),{builder:this,transaction:A,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async S=>{var v;let{skipPreflight:C=!0,sendAndConfirm:K,notSendToRpc:F}=S||{};if(we([A]),(v=this.owner)!=null&&v.isKeyPair){let P=await this.connection.sendTransaction(A,{skipPreflight:C});return K&&await pt(this.connection,P),{txId:P,signedTx:A}}if(this.signAllTransactions){let P=await this.signAllTransactions([A]);if(this.signers.length)for(let h of P)try{h.sign(this.signers)}catch{}return{txId:F?"":await this.connection.sendTransaction(P[0],{skipPreflight:C}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}async buildV0MultiTx(t){var g;let{extraPreBuildData:n=[],buildProps:r}=t,{transaction:s}=await this.buildV0(r),m=n.filter(d=>d.builder.instructions.length>0),a=[s,...m.map(d=>d.transaction)],u=[this.signers,...m.map(d=>d.signers)],y=[...this.instructionTypes,...m.map(d=>d.instructionTypes).flat()];return(g=this.owner)!=null&&g.signer&&u.forEach(d=>{d.some(w=>w.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),a.forEach(async(d,w)=>{d.sign(u[w])}),{builder:this,transactions:a,signers:u,instructionTypes:y,buildProps:r,execute:async d=>{var k;let{sequentially:w,onTxUpdate:T,recentBlockHash:A,skipPreflight:x=!0}=d||{};if(A&&a.forEach(S=>S.message.recentBlockhash=A),we(a),(k=this.owner)!=null&&k.isKeyPair){if(w){let S=[];for(let C of a){let K=await this.connection.sendTransaction(C,{skipPreflight:x});await pt(this.connection,K),S.push(K)}return{txIds:S,signedTxs:a}}return{txIds:await Promise.all(a.map(async S=>await this.connection.sendTransaction(S,{skipPreflight:x}))),signedTxs:a}}if(this.signAllTransactions){let S=await this.signAllTransactions(a);if(w){let C=0,K=[],F=async()=>{if(!S[C])return;let v=await this.connection.sendTransaction(S[C],{skipPreflight:x});K.push({txId:v,status:"sent",signedTx:S[C]}),T==null||T([...K]),C++;let P=!1,h=null,I=null,R=L=>{h!==null&&clearInterval(h),I!==null&&this.connection.removeSignatureListener(I);let V=K.findIndex(ie=>ie.txId===v);if(V>-1){if(K[V].status==="error"||K[V].status==="success")return;K[V].status=L.err?"error":"success"}T==null||T([...K]),L.err||F()};this.loopMultiTxStatus&&(h=setInterval(async()=>{var L;if(P){clearInterval(h);return}try{let V=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(P=!0,clearInterval(h),R({err:((L=V.meta)==null?void 0:L.err)||null}),console.log("tx status from getTransaction:",v))}catch(V){P=!0,clearInterval(h),console.error("getTransaction timeout:",V,v)}},ft)),I=this.connection.onSignature(v,L=>{if(P){this.connection.removeSignatureListener(I);return}P=!0,R(L)},"confirmed"),this.connection.getSignatureStatus(v)};return F(),{txIds:[],signedTxs:S}}else{let C=[];for(let K=0;K<S.length;K+=1){let F=await this.connection.sendTransaction(S[K],{skipPreflight:x});C.push(F)}return{txIds:C,signedTxs:S}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async sizeCheckBuild(t){var T;let w=t||{},{splitIns:n=[],computeBudgetConfig:r}=w,s=ue(w,["splitIns","computeBudgetConfig"]),m=r?dt(r):{instructions:[],instructionTypes:[]},a=this.signers.reduce((A,x)=>D(O({},A),{[x.publicKey.toBase58()]:x}),{}),u=[],y=[],g=[],d=0;if(this.allInstructions.forEach(A=>{let x=[...g,A],k=r?[...m.instructions,...x]:x,C=[...new Set(x.map(K=>K.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat()).values()].map(K=>new Oe(K));if(A!==n[d]&&g.length<12&&(Ye({instructions:k,payer:this.feePayer,signers:C})||Ye({instructions:x,payer:this.feePayer,signers:C})))g.push(A);else{if(g.length===0)throw Error("item ins too big");d+=A===n[d]?1:0,Ye({instructions:r?[...m.instructions,...g]:[...g],payer:this.feePayer,signers:C})?u.push(new Ze().add(...m.instructions,...g)):u.push(new Ze().add(...g)),y.push(Array.from(new Set(g.map(K=>K.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat())).map(K=>a[K]).filter(K=>K!==void 0)),g=[A]}}),g.length>0){let x=[...new Set(g.map(k=>k.keys.filter(S=>S.isSigner).map(S=>S.pubkey.toString())).flat()).values()].map(k=>a[k]).filter(k=>k!==void 0);Ye({instructions:r?[...m.instructions,...g]:[...g],payer:this.feePayer,signers:x.map(k=>k.publicKey)})?u.push(new Ze().add(...m.instructions,...g)):u.push(new Ze().add(...g)),y.push(x)}return u.forEach(A=>A.feePayer=this.feePayer),(T=this.owner)!=null&&T.signer&&y.forEach(A=>{A.some(x=>x.publicKey.equals(this.owner.publicKey))||A.push(this.owner.signer)}),{builder:this,transactions:u,signers:y,instructionTypes:this.instructionTypes,execute:async A=>{var v;let{sequentially:x,onTxUpdate:k,skipTxCount:S=0,recentBlockHash:C,skipPreflight:K=!0}=A||{},F=C!=null?C:await Le(this.connection,this.blockhashCommitment);if(u.forEach(async(P,h)=>{P.recentBlockhash=F,y[h].length&&P.sign(...y[h])}),we(u),(v=this.owner)!=null&&v.isKeyPair){if(x){let P=0,h=[];for(let I of u){if(++P,P<=S){h.push("tx skipped");continue}let R=await Wt(this.connection,I,this.signers.find(L=>L.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:K});h.push(R)}return{txIds:h,signedTxs:u}}return{txIds:await Promise.all(u.map(async P=>await this.connection.sendRawTransaction(P.serialize(),{skipPreflight:K}))),signedTxs:u}}if(this.signAllTransactions){let P=await this.signAllTransactions(u.slice(S,u.length)),h=[...u.slice(0,S),...P];if(x){let I=0,R=[],L=async()=>{if(!h[I])return;I<S&&(R.push({txId:"",status:"success",signedTx:h[I]}),k==null||k([...R]),I++,L());let V=await this.connection.sendRawTransaction(h[I].serialize(),{skipPreflight:K});R.push({txId:V,status:"sent",signedTx:h[I]}),k==null||k([...R]),I++;let ie=!1,q=null,W=null,$=G=>{q!==null&&clearInterval(q),W!==null&&this.connection.removeSignatureListener(W);let te=R.findIndex(de=>de.txId===V);if(te>-1){if(R[te].status==="error"||R[te].status==="success")return;R[te].status=G.err?"error":"success"}k==null||k([...R]),G.err||L()};this.loopMultiTxStatus&&(q=setInterval(async()=>{var G;if(ie){clearInterval(q);return}try{let te=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});te&&(ie=!0,clearInterval(q),$({err:((G=te.meta)==null?void 0:G.err)||null}),console.log("tx status from getTransaction:",V))}catch(te){ie=!0,clearInterval(q),console.error("getTransaction timeout:",te,V)}},ft)),W=this.connection.onSignature(V,G=>{if(ie){this.connection.removeSignatureListener(W);return}ie=!0,$(G)},"confirmed"),this.connection.getSignatureStatus(V)};return await L(),{txIds:R.map(V=>V.txId),signedTxs:h}}else{let I=[];for(let R=0;R<h.length;R+=1){let L=await this.connection.sendRawTransaction(h[R].serialize(),{skipPreflight:K});I.push(L)}return{txIds:I,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}async sizeCheckBuildV0(t){var v;let F=t||{},{computeBudgetConfig:n,splitIns:r=[],lookupTableCache:s={},lookupTableAddress:m=[],insCountLimit:a=12}=F,u=ue(F,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),y=O(O({},this.cluster==="devnet"?await Et(this.connection):await _t(this.connection)),s),g=Array.from(new Set([...this.lookupTableAddress,...m])),d=[];for(let P of g)y[P]===void 0&&d.push(new Oe(P));let w=await Vt({connection:this.connection,address:d});for(let[P,h]of Object.entries(w))y[P]=h;let T=n?dt(n):{instructions:[],instructionTypes:[]},A=await Le(this.connection,this.blockhashCommitment),x=this.signers.reduce((P,h)=>D(O({},P),{[h.publicKey.toBase58()]:h}),{}),k=[],S=[],C=[],K=0;if(this.allInstructions.forEach(P=>{let h=[...C,P],I=n?[...T.instructions,...h]:h;if(P!==r[K]&&C.length<a&&(Qe({instructions:I,payer:this.feePayer,lookupTableAddressAccount:y})||Qe({instructions:h,payer:this.feePayer,lookupTableAddressAccount:y})))C.push(P);else{if(C.length===0)throw Error("item ins too big");K+=P===r[K]?1:0;let R={};for(let L of[...new Set(g)])y[L]!==void 0&&(R[L]=y[L]);if(n&&Qe({instructions:[...T.instructions,...C],payer:this.feePayer,lookupTableAddressAccount:y,recentBlockhash:A})){let L=new He({payerKey:this.feePayer,recentBlockhash:A,instructions:[...T.instructions,...C]}).compileToV0Message(Object.values(y));k.push(new je(L))}else{let L=new He({payerKey:this.feePayer,recentBlockhash:A,instructions:[...C]}).compileToV0Message(Object.values(y));k.push(new je(L))}S.push(Array.from(new Set(C.map(L=>L.keys.filter(V=>V.isSigner).map(V=>V.pubkey.toString())).flat())).map(L=>x[L]).filter(L=>L!==void 0)),C=[P]}}),C.length>0){let h=[...new Set(C.map(I=>I.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat()).values()].map(I=>x[I]).filter(I=>I!==void 0);if(n&&Qe({instructions:[...T.instructions,...C],payer:this.feePayer,lookupTableAddressAccount:y,recentBlockhash:A})){let I=new He({payerKey:this.feePayer,recentBlockhash:A,instructions:[...T.instructions,...C]}).compileToV0Message(Object.values(y));k.push(new je(I))}else{let I=new He({payerKey:this.feePayer,recentBlockhash:A,instructions:[...C]}).compileToV0Message(Object.values(y));k.push(new je(I))}S.push(h)}return(v=this.owner)!=null&&v.signer&&S.forEach(P=>{P.some(h=>h.publicKey.equals(this.owner.publicKey))||P.push(this.owner.signer)}),k.forEach((P,h)=>{P.sign(S[h])}),{builder:this,transactions:k,buildProps:t,signers:S,instructionTypes:this.instructionTypes,execute:async P=>{var ie;let{sequentially:h,onTxUpdate:I,skipTxCount:R=0,recentBlockHash:L,skipPreflight:V=!0}=P||{};if(k.map(async(q,W)=>{S[W].length&&q.sign(S[W]),L&&(q.message.recentBlockhash=L)}),we(k),(ie=this.owner)!=null&&ie.isKeyPair){if(h){let q=0,W=[];for(let $ of k){if(++q,q<=R){console.log("skip tx: ",q),W.push("tx skipped");continue}let G=await this.connection.sendTransaction($,{skipPreflight:V});await pt(this.connection,G),W.push(G)}return{txIds:W,signedTxs:k}}return{txIds:await Promise.all(k.map(async q=>await this.connection.sendTransaction(q,{skipPreflight:V}))),signedTxs:k}}if(this.signAllTransactions){let q=await this.signAllTransactions(k.slice(R,k.length)),W=[...k.slice(0,R),...q];if(h){let $=0,G=[],te=async()=>{if(!W[$])return;if($<R){G.push({txId:"",status:"success",signedTx:W[$]}),I==null||I([...G]),$++,te();return}let de=await this.connection.sendTransaction(W[$],{skipPreflight:V});G.push({txId:de,status:"sent",signedTx:W[$]}),I==null||I([...G]),$++;let De=!1,Be=null,nt=null,rn=ge=>{Be!==null&&clearInterval(Be),nt!==null&&this.connection.removeSignatureListener(nt);let pe=G.findIndex(fo=>fo.txId===de);if(pe>-1){if(G[pe].status==="error"||G[pe].status==="success")return;G[pe].status=ge.err?"error":"success"}I==null||I([...G]),ge.err||te()};this.loopMultiTxStatus&&(Be=setInterval(async()=>{var ge;if(De){clearInterval(Be);return}try{let pe=await this.connection.getTransaction(de,{commitment:"confirmed",maxSupportedTransactionVersion:0});pe&&(De=!0,clearInterval(Be),rn({err:((ge=pe.meta)==null?void 0:ge.err)||null}),console.log("tx status from getTransaction:",de))}catch(pe){De=!0,clearInterval(Be),console.error("getTransaction timeout:",pe,de)}},ft)),nt=this.connection.onSignature(de,ge=>{if(De){this.connection.removeSignatureListener(nt);return}De=!0,rn(ge)},"confirmed"),this.connection.getSignatureStatus(de)};return te(),{txIds:[],signedTxs:W}}else{let $=[];for(let G=0;G<W.length;G+=1){let te=await this.connection.sendTransaction(W[G],{skipPreflight:V});$.push(te)}return{txIds:$,signedTxs:W}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:u||{}}}};var qt=(...o)=>o.map(t=>{try{return typeof t=="object"?JSON.stringify(t):t}catch{return t}}).join(", "),oe=class{constructor({scope:t,moduleName:n}){this.disabled=!1;this.scope=t,this.logger=_(n)}createTxBuilder(t){return this.scope.checkOwner(),new yt({connection:this.scope.connection,feePayer:t||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(...t){this.logger.debug(qt(t))}logInfo(...t){this.logger.info(qt(t))}logAndCreateError(...t){let n=qt(t);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Kl,SystemProgram as Cl}from"@solana/web3.js";import Ol from"bn.js";import{createCloseAccountInstruction as vl,createInitializeAccountInstruction as Vl,createTransferInstruction as _l,TOKEN_PROGRAM_ID as El}from"@solana/spl-token";import{Keypair as fl,PublicKey as yl}from"@solana/web3.js";import Pl from"bn.js";import{TOKEN_PROGRAM_ID as kl}from"@solana/spl-token";var bt=f([i("mint"),i("owner"),e("amount"),z("delegateOption"),i("delegate"),p("state"),z("isNativeOption"),e("isNative"),e("delegatedAmount"),z("closeAuthorityOption"),i("closeAuthority")]);import{PublicKey as Jg,SystemProgram as eP}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as nP}from"@solana/spl-token";import{PublicKey as dm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as fm}from"@solana/spl-token";import{PublicKey as B}from"@solana/web3.js";var Nn=new B("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Mn=new B("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Fn=new B("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Ut=new B("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Pm=new B("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),ai=new B("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),vn=new B("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Vn=new B("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Am=new B("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),si=new B("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),_n=new B("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),ui=new B("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),ci=new B("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Gt=new B("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),wm=new B("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),li=new B("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),zt=new B("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),mi=new B("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),km=new B("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),di=new B("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),pi=new B("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),fi=new B("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Tm=new B("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),hm=new B("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Im=new B("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Bm=new B("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Sm=new B("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var be={OPEN_BOOK_PROGRAM:new B("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new B("Ray1111111111111111111111111111111111111111"),AMM_V4:new B("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new B("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new B("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new B("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new B("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new B("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new B("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new B("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new B("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new B("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:B.default,Router:new B("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new B("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new B("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new B("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new B("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new B("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new B("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new B("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new B("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new B("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new B("Ray1111111111111111111111111111111111111111")};import dP from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as Ry,TOKEN_2022_PROGRAM_ID as Ly,TOKEN_PROGRAM_ID as Oy}from"@solana/spl-token";import{PublicKey as My}from"@solana/web3.js";import vy from"bn.js";import _y from"decimal.js";import{TOKEN_PROGRAM_ID as Dm}from"@solana/spl-token";import{PublicKey as Gm}from"@solana/web3.js";var yi=f([z("mintAuthorityOption"),i("mintAuthority"),e("supply"),p("decimals"),p("isInitialized"),z("freezeAuthorityOption"),i("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as $f,TOKEN_2022_PROGRAM_ID as Jf,TOKEN_PROGRAM_ID as ey}from"@solana/spl-token";import{Keypair as oy,PublicKey as iy,SystemProgram as ay,TransactionInstruction as sy}from"@solana/web3.js";import cy from"bn.js";import E from"bn.js";var Me=new E(1).shln(64);var bi=new E(1).shln(128),Xt=new E(1).shln(64).subn(1),gi=new E(1).shln(128).subn(1);var Fe=new E("4295048016"),ve=new E("79226673521066979257578248091"),Pi=new E("59543866431248"),Ai=new E("184467440737095516"),wi=new E("15793534762490258745");var Yt=60,nd=new E("18446743708227953217"),ki=[{bit:0,factor:new E("fffcb933bd6fb800",16)},{bit:1,factor:new E("fff97272373d4000",16)},{bit:2,factor:new E("fff2e50f5f657000",16)},{bit:3,factor:new E("ffe5caca7e10f000",16)},{bit:4,factor:new E("ffcb9843d60f7000",16)},{bit:5,factor:new E("ff973b41fa98e800",16)},{bit:6,factor:new E("ff2ea16466c9b000",16)},{bit:7,factor:new E("fe5dee046a9a3800",16)},{bit:8,factor:new E("fcbe86c7900bb000",16)},{bit:9,factor:new E("f987a7253ac65800",16)},{bit:10,factor:new E("f3392b0822bb6000",16)},{bit:11,factor:new E("e7159475a2caf000",16)},{bit:12,factor:new E("d097f3bdfd2f2000",16)},{bit:13,factor:new E("a9f746462d9f8000",16)},{bit:14,factor:new E("70d869a156f31c00",16)},{bit:15,factor:new E("31be135f97ed3200",16)},{bit:16,factor:new E("9aa508b5b85a500",16)},{bit:17,factor:new E("5d6af8dedc582c",16)},{bit:18,factor:new E("2216e584f5fa",16)}];var $e=3,En=100;var Dn=10,Wn=100,Pt=14;var H=new E(0),Ve=new E(1),od=new E(-1);var id=new E("18446744073700000000");var Ti=f([M(8),p("bump"),Y("index"),i("owner"),z("protocolFeeRate"),z("tradeFeeRate"),Y("tickSpacing"),z("fundFeeRate"),b(z(),1),i("fundOwner"),b(e(),3)]),hi=f([z("blockTimestamp"),Se("tickCumulative"),b(e(),4)]),qn=f([M(8),re("initialized"),e("recentEpoch"),Y("observationIndex"),i("poolId"),b(hi,En,"observations"),b(e(),4)]),Ii=f([Y("filterPeriod"),Y("decayPeriod"),Y("reductionFactor"),z("dynamicFeeControl"),z("maxVolatilityAccumulator"),ae("tickSpacingIndexReference"),z("volatilityReference"),z("volatilityAccumulator"),e("lastUpdateTimestamp"),b(p(),46)]),Bi=f([p("state"),e("openTime"),e("endTime"),e("lastUpdateTime"),N("emissionsPerSecondX64"),e("totalEmissioned"),e("claimed"),i("mint"),i("vault"),i("creator"),N("growthGlobalX64")]),Qt=f([M(8),p("bump"),i("configId"),i("creator"),i("mintA"),i("mintB"),i("vaultA"),i("vaultB"),i("observationId"),p("mintDecimalsA"),p("mintDecimalsB"),Y("tickSpacing"),N("liquidity"),N("sqrtPriceX64"),ae("tickCurrent"),z(),N("feeGrowthGlobalX64A"),N("feeGrowthGlobalX64B"),e("protocolFeesTokenA"),e("protocolFeesTokenB"),b(N(),4),p("status"),p("feeOn"),M(6),b(Bi,$e,"rewardInfos"),M(8*16,"tickArrayBitmap"),b(e(),4),e("fundFeesTokenA"),e("fundFeesTokenB"),e("startTime"),e("recentEpoch"),Ii.replicate("dynamicFeeInfo"),b(e(),46)]),Si=f([N("growthInsideLastX64"),e("rewardAmountOwed")]),Ki=f([M(8),p("bump"),i("nftMint"),i("poolId"),ae("tickLower"),ae("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),e("tokenFeesOwedA"),e("tokenFeesOwedB"),b(Si,$e,"rewardInfos"),e("recentEpoch"),b(e(),7)]),ud=f([M(8),p("bump"),i("poolId"),ae("tickLower"),ae("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),e("tokenFeesOwedA"),e("tokenFeesOwedB"),b(N(),$e,"rewardGrowthInside"),e("recentEpoch"),b(e(),7)]),xi=f([ae("tick"),bn("liquidityNet"),N("liquidityGross"),N("feeGrowthOutsideX64A"),N("feeGrowthOutsideX64B"),b(N(),$e,"rewardGrowthsOutsideX64"),e("orderPhase"),e("ordersAmount"),e("partFilledOrdersRemaining"),N("unfilledRatioX64"),b(z(),3)]),Un=f([M(8),i("poolId"),ae("startTickIndex"),b(xi,Yt,"ticks"),p("initializedTickCount"),e("recentEpoch"),b(p(),107)]),Ci=f([M(8),p("bump"),b(i(),Dn,"operationOwners"),b(i(),Wn,"whitelistMints")]),Ri=f([M(8),i("poolId"),i("owner"),ae("tick"),re("zeroForOne"),e("orderPhase"),e("totalAmount"),e("filledAmount"),e("settleBase"),e("settleOutput"),e("openTime"),N("unfilledRatioX64"),b(e(),4)]),Gn=f([M(8),i("poolId"),M(8*8*Pt,"positiveTickArrayBitmap"),M(8*8*Pt,"negativeTickArrayBitmap")]),cd=f([M(8),Y("index"),Y("filterPeriod"),Y("decayPeriod"),Y("reductionFactor"),z("dynamicFeeControl"),z("maxVolatilityAccumulator"),b(e(),8)]),Li=f([M(8),i("wallet"),p("nonceIndex"),e("orderNonce"),b(e(),4)]),ld=f([e(),p("bump"),i("owner"),i("poolId"),i("positionId"),i("nftAccount"),b(e(),8)]),Oi=f([M(8),p("bump"),i("lockOwner"),i("poolId"),i("positionId"),i("nftAccount"),i("lockNftMint"),e("recentEpoch"),b(e(),8)]);import pd from"bn.js";var Id=Buffer.from("amm_config","utf8"),Mi=Buffer.from("pool","utf8"),Fi=Buffer.from("pool_vault","utf8"),Bd=Buffer.from("pool_reward_vault","utf8"),Sd=Buffer.from("position","utf8"),Kd=Buffer.from("tick_array","utf8"),xd=Buffer.from("operation","utf8"),Cd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Rd=Buffer.from("observation","utf8"),Ld=Buffer.from("support_mint","utf8"),Od=Buffer.from("dynamic_fee_config","utf8"),Nd=Buffer.from("permission","utf8");var Md=Buffer.from("locked_position","utf8");import{sha256 as Hi}from"js-sha256";import vi from"bn.js";import _d from"decimal.js";var Dd=new vi(1).shln(256).subn(1);import ip from"bn.js";import Yd from"bn.js";import Zd from"decimal.js";import cp from"bn.js";import mp from"decimal.js";import{PublicKey as jp}from"@solana/web3.js";import Jp from"bn.js";import{TOKEN_2022_PROGRAM_ID as uf,TOKEN_PROGRAM_ID as cf}from"@solana/spl-token";import pf from"decimal.js";import Dp from"bn.js";import Kp from"bn.js";import If from"bn.js";function j(o){let t=`global:${o}`;return Buffer.from(Hi.digest(t)).slice(0,8)}qn.span;var gy=_("Raydium_Clmm"),Py={createPool:j("create_pool"),createCustomizablePool:j("create_customizable_pool"),createPermissionedPool:j("create_permissioned_pool"),openPositionV2:j("open_position_v2"),openPositionWithToken22Nft:j("open_position_with_token22_nft"),closePosition:j("close_position"),increaseLiquidityV2:j("increase_liquidity_v2"),decreaseLiquidityV2:j("decrease_liquidity_v2"),initializeReward:j("initialize_reward"),setRewardParams:j("set_reward_params"),updateRewardInfos:j("update_reward_infos"),collectRemainingRewards:j("collect_remaining_rewards"),swapV2:j("swap_v2"),openLimitOrder:j("open_limit_order"),increaseLimitOrder:j("increase_limit_order"),decreaseLimitOrder:j("decrease_limit_order"),settleLimitOrder:j("settle_limit_order"),closeLimitOrder:j("close_limit_order")};import{PublicKey as $t}from"@solana/web3.js";var er=f([p("instruction")]),tr=f([p("instruction")]),nr=f([e("rewardState"),e("rewardOpenTime"),e("rewardEndTime"),e("rewardLastUpdateTime"),e("totalReward"),e("totalRewardEmissioned"),e("rewardClaimed"),e("rewardPerSecond"),N("accRewardPerShare"),i("rewardVault"),i("rewardMint"),i("rewardSender"),e("rewardType"),b(e(),15,"padding")]),or=f([e("state"),e("nonce"),i("lpVault"),i("rewardVault"),i(),i(),e(),e(),e("totalReward"),N("perShareReward"),e("lastSlot"),e("perSlotReward")]),ir=f([e("state"),e("nonce"),i("lpVault"),i("rewardVaultA"),e("totalRewardA"),N("perShareRewardA"),e("perSlotRewardA"),p("option"),i("rewardVaultB"),M(7),e("totalRewardB"),N("perShareRewardB"),e("perSlotRewardB"),e("lastSlot"),i()]),rr=f([e(),e("state"),e("nonce"),e("validRewardTokenNum"),N("rewardMultiplier"),e("rewardPeriodMax"),e("rewardPeriodMin"),e("rewardPeriodExtend"),i("lpMint"),i("lpVault"),b(nr,5,"rewardInfos"),i("creator"),i(),b(e(),32,"padding")]),ar=new Proxy(or,{get(o,t,n){return t==="decode"?(...r)=>{let s=o.decode(...r);return D(O({},s),{version:3,rewardInfos:[{rewardVault:s.rewardVault,totalReward:s.totalReward,perSlotReward:s.perSlotReward,perShareReward:s.perShareReward}]})}:Reflect.get(o,t,n)}}),sr=new Proxy(ir,{get(o,t,n){return t==="decode"?(...r)=>{let s=o.decode(...r);return D(O({},s),{version:5,rewardInfos:[{rewardVault:s.rewardVaultA,totalReward:s.totalRewardA,perSlotReward:s.perSlotRewardA,perShareReward:s.perShareRewardA},{rewardVault:s.rewardVaultB,totalReward:s.totalRewardB,perSlotReward:s.perSlotRewardB,perShareReward:s.perShareRewardB}]})}:Reflect.get(o,t,n)}}),jn=new Proxy(rr,{get(o,t,n){return t==="decode"?(...r)=>{let s=o.decode(...r);return D(O({},s),{version:6,rewardInfos:s.rewardInfos.map(m=>{var a;return D(O({},m),{rewardType:((a=Object.entries(tt).find(u=>String(u[1])===m.rewardType.toString()))!=null?a:["Standard SPL"])[0]})})})}:Reflect.get(o,t,n)}}),ur=f([e("isSet"),e("rewardPerSecond"),e("rewardOpenTime"),e("rewardEndTime"),e("rewardType")]),cr=f([p("instruction"),e("nonce"),b(ur,5,"rewardTimeInfo")]),lr=f([p("instruction"),e("rewardReopenTime"),e("rewardEndTime"),e("rewardPerSecond")]),mr=f([p("instruction"),e("isSet"),e("rewardPerSecond"),e("rewardOpenTime"),e("rewardEndTime"),e("rewardType")]),gb=f([e("state"),i("id"),i("owner"),e("deposited"),b(e(),1,"rewardDebts")]),$n=f([e("state"),i("id"),i("owner"),e("deposited"),b(N(),1,"rewardDebts"),e(""),e("voteLockedBalance"),b(e(),15)]),Pb=f([e("state"),i("id"),i("owner"),e("deposited"),b(e(),2,"rewardDebts")]),dr=f([e("state"),i("id"),i("owner"),e("deposited"),b(N(),2,"rewardDebts"),b(e(),17)]),pr=f([e(),e("state"),i("id"),i("owner"),e("deposited"),b(N(),5,"rewardDebts"),b(e(),16)]),fr=f([p("instruction"),e("amount")]),yr=f([i("mint"),i("grantAuthority"),e("baselineVoteWeightScaledFactor"),e("maxExtraLockupVoteWeightScaledFactor"),e("lockupSaturationSecs"),yn("digitShift"),b(p(),7,"reserved1"),b(e(),7,"reserved2")]),br=f([M(8),i("governanceProgramId"),i("realm"),i("realmGoverningTokenMint"),i("realmAuthority"),b(p(),32,"reserved1"),b(yr,4,"votingMints"),Se("timeOffset"),p("bump"),b(p(),7,"reserved2"),b(e(),11,"reserved3")]),gr=f([Se("startTime"),Se("endTime"),p("kind"),b(p(),15,"reserved")]),Pr=f([b(gr,1,"lockup"),e("amountDeposited_native"),e("amountInitiallyLockedNative"),re("isUsed"),re("allowClawback"),p("votingMintConfigIdx"),b(p(),29,"reserved")]),Ar=f([M(8),i("voterAuthority"),i("registrar"),b(Pr,32,"deposits"),p("voterBump"),p("voterWweightRecordBump"),b(p(),94,"reserved")]);import{NATIVE_MINT as Kb}from"@solana/spl-token";var xb=_("Raydium_farm_config"),wr=new $t("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),kr=new $t("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Cb=new $t("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var tt={"Standard SPL":0,"Option tokens":1},Jn={[Nn.toString()]:3,[Mn.toString()]:4,[Fn.toString()]:5,[Ut.toString()]:6,[be.FARM_PROGRAM_ID_V3.toString()]:3,[be.FARM_PROGRAM_ID_V4.toString()]:4,[be.FARM_PROGRAM_ID_V5.toString()]:5,[be.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as fg,SystemProgram as yg,SYSVAR_CLOCK_PUBKEY as bg,SYSVAR_RENT_PUBKEY as gg,TransactionInstruction as Pg}from"@solana/web3.js";import wg from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Tg,createAssociatedTokenAccountIdempotentInstruction as hg,TOKEN_PROGRAM_ID as Ig}from"@solana/spl-token";import Gb from"bn.js";import{PublicKey as Fb}from"@solana/web3.js";import Vb from"bn.js";var og=_("Raydium.farm.util");var Fg=_("Raydium_farm_instruction"),vg={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};import hP from"bn.js";import{PublicKey as hw}from"@solana/web3.js";import{AccountLayout as Sw,MintLayout as Kw,NATIVE_MINT as xw,TOKEN_PROGRAM_ID as Rw}from"@solana/spl-token";import SP from"bn.js";import to from"bn.js";var Cr=new to(25),Rr=new to(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as QP,TOKEN_PROGRAM_ID as ZP}from"@solana/spl-token";import{PublicKey as jP,SystemProgram as $P,SYSVAR_RENT_PUBKEY as JP,TransactionInstruction as eA}from"@solana/web3.js";import uA from"bn.js";var Lr=f([p("instruction"),e("amountIn"),e("minAmountOut")]),Or=f([p("instruction"),e("maxAmountIn"),e("amountOut")]),GP=f([p("instruction"),p("nonce")]),Nr=f([p("instruction"),p("nonce"),e("startTime")]),no=f([e("status"),e("nonce"),e("maxOrder"),e("depth"),e("baseDecimal"),e("quoteDecimal"),e("state"),e("resetFlag"),e("minSize"),e("volMaxCutRatio"),e("amountWaveRatio"),e("baseLotSize"),e("quoteLotSize"),e("minPriceMultiplier"),e("maxPriceMultiplier"),e("systemDecimalValue"),e("minSeparateNumerator"),e("minSeparateDenominator"),e("tradeFeeNumerator"),e("tradeFeeDenominator"),e("pnlNumerator"),e("pnlDenominator"),e("swapFeeNumerator"),e("swapFeeDenominator"),e("baseNeedTakePnl"),e("quoteNeedTakePnl"),e("quoteTotalPnl"),e("baseTotalPnl"),e("poolOpenTime"),e("punishPcAmount"),e("punishCoinAmount"),e("orderbookToInitTime"),N("swapBaseInAmount"),N("swapQuoteOutAmount"),e("swapBase2QuoteFee"),N("swapQuoteInAmount"),N("swapBaseOutAmount"),e("swapQuote2BaseFee"),i("baseVault"),i("quoteVault"),i("baseMint"),i("quoteMint"),i("lpMint"),i("openOrders"),i("marketId"),i("marketProgramId"),i("targetOrders"),i("withdrawQueue"),i("lpVault"),i("owner"),e("lpReserve"),b(e(),3,"padding")]),zP=f([e("accountType"),e("status"),e("nonce"),e("maxOrder"),e("depth"),e("baseDecimal"),e("quoteDecimal"),e("state"),e("resetFlag"),e("minSize"),e("volMaxCutRatio"),e("amountWaveRatio"),e("baseLotSize"),e("quoteLotSize"),e("minPriceMultiplier"),e("maxPriceMultiplier"),e("systemDecimalsValue"),e("abortTradeFactor"),e("priceTickMultiplier"),e("priceTick"),e("minSeparateNumerator"),e("minSeparateDenominator"),e("tradeFeeNumerator"),e("tradeFeeDenominator"),e("pnlNumerator"),e("pnlDenominator"),e("swapFeeNumerator"),e("swapFeeDenominator"),e("baseNeedTakePnl"),e("quoteNeedTakePnl"),e("quoteTotalPnl"),e("baseTotalPnl"),e("poolOpenTime"),e("punishPcAmount"),e("punishCoinAmount"),e("orderbookToInitTime"),N("swapBaseInAmount"),N("swapQuoteOutAmount"),N("swapQuoteInAmount"),N("swapBaseOutAmount"),e("swapQuote2BaseFee"),e("swapBase2QuoteFee"),i("baseVault"),i("quoteVault"),i("baseMint"),i("quoteMint"),i("lpMint"),i("modelDataAccount"),i("openOrders"),i("marketId"),i("marketProgramId"),i("targetOrders"),i("owner"),b(e(),64,"padding")]),Mr=f([p("instruction"),e("baseAmountIn"),e("quoteAmountIn"),e("fixedSide"),e("otherAmountMin")]),Fr=f([p("instruction"),e("lpAmount"),e("baseAmountMin"),e("quoteAmountMin")]);var vr=f([e("fee")]);var mA=_("Raydium_liquidity_instruction");import{PublicKey as hA}from"@solana/web3.js";import BA from"decimal.js";import{TOKEN_PROGRAM_ID as KA}from"@solana/spl-token";import{PublicKey as yA}from"@solana/web3.js";var PA=_("Raydium_liquidity_serum");import Hw from"bn.js";import $w from"decimal.js";import{TOKEN_PROGRAM_ID as ew}from"@solana/spl-token";import{PublicKey as nw}from"@solana/web3.js";import iw from"bn.js";import{SystemProgram as WA,SYSVAR_RENT_PUBKEY as qA,Transaction as UA,TransactionInstruction as GA}from"@solana/web3.js";import{createInitializeAccountInstruction as XA,TOKEN_PROGRAM_ID as YA}from"@solana/spl-token";function Vr(o="accountFlags"){let t=new at(o);return t.addBoolean("initialized"),t.addBoolean("market"),t.addBoolean("openOrders"),t.addBoolean("requestQueue"),t.addBoolean("eventQueue"),t.addBoolean("bids"),t.addBoolean("asks"),t}var _r=f([M(5),Vr("accountFlags"),i("ownAddress"),e("vaultSignerNonce"),i("baseMint"),i("quoteMint"),i("baseVault"),e("baseDepositsTotal"),e("baseFeesAccrued"),i("quoteVault"),e("quoteDepositsTotal"),e("quoteFeesAccrued"),e("quoteDustThreshold"),i("requestQueue"),i("eventQueue"),i("bids"),i("asks"),e("baseLotSize"),e("quoteLotSize"),e("feeRateBps"),e("referrerRebatesAccrued"),M(7)]);import{PublicKey as hT}from"@solana/web3.js";import{AccountLayout as BT,NATIVE_MINT as ST,TOKEN_2022_PROGRAM_ID as KT,TOKEN_PROGRAM_ID as xT,createAssociatedTokenAccountIdempotentInstruction as CT}from"@solana/spl-token";import Tk from"bn.js";import Qr from"bn.js";var uk=new Qr(0);import fk from"bn.js";import Zr from"bn.js";var kt=new Zr(1e6);import VT from"bn.js";import ET from"decimal.js";import{PublicKey as Dk,TransactionInstruction as Wk,Keypair as Uk,SystemProgram as Gk}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Xk,TOKEN_2022_PROGRAM_ID as Yk,TOKEN_PROGRAM_ID as Qk}from"@solana/spl-token";var Kk=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),xk=Buffer.from("amm_config","utf8"),Ck=Buffer.from("pool","utf8"),Rk=Buffer.from("pool_lp_mint","utf8"),Lk=Buffer.from("pool_vault","utf8"),Ok=Buffer.from("observation","utf8"),Nk=Buffer.from("permission","utf8"),Mk=Buffer.from("support_mint","utf8");var Fk=Buffer.from("locked_liquidity","utf8");var tT=_("Raydium_cpmm"),nT={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173],lockCpLiquidity:[216,157,29,78,38,51,31,26],collectCpFee:[8,30,51,199,209,184,247,133],createPermissionPda:Buffer.from([135,136,2,216,137,169,181,202]),closePermissionPda:Buffer.from([156,84,32,118,69,135,70,123]),initializeWithPermission:Buffer.from([63,55,254,65,49,178,89,121]),collectCreatorFee:Buffer.from([20,22,86,123,198,28,219,132]),collectCreatorFeePermissionless:Buffer.from([202,202,34,83,226,122,145,229])};var $r=f([M(8),p("bump"),re("disableCreatePool"),Y("index"),e("tradeFeeRate"),e("protocolFeeRate"),e("fundFeeRate"),e("createPoolFee"),i("protocolOwner"),i("fundOwner"),e("creatorFeeRate"),b(e(),15)]),oo=f([M(8),i("configId"),i("poolCreator"),i("vaultA"),i("vaultB"),i("mintLp"),i("mintA"),i("mintB"),i("mintProgramA"),i("mintProgramB"),i("observationId"),p("bump"),p("status"),p("lpDecimals"),p("mintDecimalA"),p("mintDecimalB"),e("lpAmount"),e("protocolFeesMintA"),e("protocolFeesMintB"),e("fundFeesMintA"),e("fundFeesMintB"),e("openTime"),e("epoch"),p("feeOn"),re("enableCreatorFee"),b(p(),6),e("creatorFeesMintA"),e("creatorFeesMintB"),b(e(),28)]),rT=f([M(8),i("configId"),b(e(),30)]);import{PublicKey as RK,SystemProgram as LK}from"@solana/web3.js";import{createTransferInstruction as NK,TOKEN_PROGRAM_ID as MK,TOKEN_2022_PROGRAM_ID as FK,createAssociatedTokenAccountIdempotentInstruction as vK,createSyncNativeInstruction as _K,createTransferCheckedInstruction as EK}from"@solana/spl-token";import ya from"bn.js";import qK from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Zh,TOKEN_2022_PROGRAM_ID as Hh,TOKEN_PROGRAM_ID as jh}from"@solana/spl-token";import{SystemProgram as tI,TransactionInstruction as nI}from"@solana/web3.js";import ra from"bn.js";var ta=f([e(),e("epoch"),p("curveType"),Y("index"),e("migrateFee"),e("tradeFeeRate"),e("maxShareFeeRate"),e("minSupplyA"),e("maxLockRate"),e("minSellRateA"),e("minMigrateRateA"),e("minFundRaisingB"),i("mintB"),i("protocolFeeOwner"),i("migrateFeeOwner"),i("migrateToAmmWallet"),i("migrateToCpmmWallet"),b(e(),16)]),na=f([e("totalLockedAmount"),e("cliffPeriod"),e("unlockPeriod"),e("startTime"),e("totalAllocatedShare")]),oa=f([e(),e("epoch"),p("bump"),p("status"),p("mintDecimalsA"),p("mintDecimalsB"),p("migrateType"),e("supply"),e("totalSellA"),e("virtualA"),e("virtualB"),e("realA"),e("realB"),e("totalFundRaisingB"),e("protocolFee"),e("platformFee"),e("migrateFee"),na.replicate("vestingSchedule"),i("configId"),i("platformId"),i("mintA"),i("mintB"),i("vaultA"),i("vaultB"),i("creator"),p("mintProgramFlag"),p("cpmmCreatorFeeOn"),e("platformVestingShare"),b(p(),54)]),Rh=f([e(),e("epoch"),i("poolId"),i("beneficiary"),e("claimedAmount"),e("tokenShareAmount"),b(e(),8)]),ro=f([p("migrateType"),p("migrateCpmmFeeOn"),e("supply"),e("totalSellA"),e("totalFundRaisingB"),e("totalLockedAmount"),e("cliffPeriod"),e("unlockPeriod")]),ia=f([e("epoch"),p("index"),i("configId"),ro.replicate("bondingCurveParam"),b(e(),50)]),ao=f([e(),e("epoch"),i("platformClaimFeeWallet"),i("platformLockNftWallet"),e("platformScale"),e("creatorScale"),e("burnScale"),e("feeRate"),b(p(),64,"name"),b(p(),256,"web"),b(p(),256,"img"),i("cpConfigId"),e("creatorFeeRate"),i("transferFeeExtensionAuth"),i("platformVestingWallet"),e("platformVestingScale"),i("platformCpCreator"),p("restrictGlobalConfig"),b(p(),107),gn(ia,"platformCurve")]);var Fh=Buffer.from("vault_auth_seed","utf8"),vh=Buffer.from("global_config","utf8"),Vh=Buffer.from("pool_vesting","utf8"),_h=Buffer.from("platform_config","utf8"),Eh=Buffer.from("platform_fee_vault_auth_seed","utf8"),Dh=Buffer.from("creator_fee_vault_auth_seed","utf8"),Wh=Buffer.from("platform_global_access","utf8"),qh=Buffer.from("platform_allow_config","utf8");var aI={initialize:Buffer.from([175,175,109,31,13,152,155,237]),initializeV2:Buffer.from([67,153,175,39,218,16,38,32]),buyExactIn:Buffer.from([250,234,13,123,213,156,19,236]),buyExactOut:Buffer.from([24,211,116,40,105,3,153,56]),sellExactIn:Buffer.from([149,39,222,155,211,124,152,26]),sellExactOut:Buffer.from([95,200,71,34,8,9,11,166]),createVestingAccount:Buffer.from([129,178,2,13,217,172,230,218]),claimVestedToken:Buffer.from([49,33,104,30,189,157,79,35]),createPlatformConfig:Buffer.from([176,90,196,175,253,113,220,20]),claimPlatformFee:Buffer.from([156,39,208,135,76,237,61,72]),updatePlaformConfig:Buffer.from([195,60,76,129,146,45,67,143]),initializeWithToken2022:Buffer.from([37,190,126,222,44,154,171,17]),claimPlatformFeeFromVault:Buffer.from([117,241,198,168,248,218,80,29]),claimCreatorFee:Buffer.from([26,97,138,203,132,171,141,252]),updatePlatformCurveParam:Buffer.from([138,144,138,250,220,128,4,57]),removePlatformCurveParam:Buffer.from([27,30,62,169,93,224,24,145]),createPlatformVestingAccount:Buffer.from([146,71,173,69,98,19,15,106]),createPlatformAllowConfig:Buffer.from([69,71,168,7,214,250,107,102]),closePlatformAllowConfig:Buffer.from([82,205,36,216,16,6,240,215])};var sI=new ra("18446744073709551615");import{TOKEN_2022_PROGRAM_ID as mI,TOKEN_PROGRAM_ID as dI}from"@solana/spl-token";import bI from"bn.js";import PI from"decimal.js";import HI from"bn.js";import $I from"decimal.js";import II from"bn.js";import SI from"decimal.js";import vI from"bn.js";import _I from"decimal.js";import co from"bn.js";import tn from"decimal.js";var It=class{static _multipler(t){return new tn(10).pow(t)}static getPrice({priceX64:t,decimalA:n,decimalB:r}){return new tn(t.toString()).div(this._Q64).mul(this._multipler(n)).div(this._multipler(r))}static getPriceX64({price:t,decimalA:n,decimalB:r}){let s=t.mul(this._multipler(r)).div(this._multipler(n));return new co(s.mul(this._Q64).toFixed(0))}};It._Q64=new tn(new co(1).shln(64).toString());import{NATIVE_MINT as aS,TOKEN_2022_PROGRAM_ID as sS,TOKEN_PROGRAM_ID as uS,createAssociatedTokenAccountIdempotentInstruction as lS,createSyncNativeInstruction as mS,getTransferFeeConfig as dS,unpackMint as pS}from"@solana/spl-token";import Q from"bn.js";import{PublicKey as da,SystemProgram as bS}from"@solana/web3.js";import hS from"decimal.js";var IS={initPriceX64:new Q("515752397214619"),supply:new Q(1e15),totalSellA:new Q(7931e11),totalFundRaisingB:new Q(85e9),totalFundRaisingBUSD:new Q(125e8),totalLockedAmount:new Q("0"),cliffPeriod:new Q("0"),unlockPeriod:new Q("0"),decimals:6,virtualA:new Q("1073471847374405"),virtualB:new Q("30050573465"),realA:new Q(0),realB:new Q(0),protocolFee:new Q(0),platformId:new da("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new Q(0),cliffPeriod:new Q(0),unlockPeriod:new Q(0),startTime:new Q(0),totalAllocatedShare:new Q(0)}},BS=new Q(1e4);var pa={[vn.toBase58()]:3};var fa=f([M(5),M(8),i("ownAddress"),e("vaultSignerNonce"),i("baseMint"),i("quoteMint"),i("baseVault"),e("baseDepositsTotal"),e("baseFeesAccrued"),i("quoteVault"),e("quoteDepositsTotal"),e("quoteFeesAccrued"),e("quoteDustThreshold"),i("requestQueue"),i("eventQueue"),i("bids"),i("asks"),e("baseLotSize"),e("quoteLotSize"),e("feeRateBps"),e("referrerRebatesAccrued"),M(7)]);import{PublicKey as QS}from"@solana/web3.js";var JS=_("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as uK,TOKEN_2022_PROGRAM_ID as cK,TOKEN_PROGRAM_ID as lK}from"@solana/spl-token";import{PublicKey as dK,SystemProgram as pK,TransactionInstruction as fK}from"@solana/web3.js";import bK from"bn.js";var Px=new ya(0);import{PublicKey as ba,Transaction as nn,TransactionInstruction as ga}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Pa}from"@solana/spl-token";import lo from"bn.js";var ee=class extends oe{static getPdaPoolId(t,n){return le([ee.SEED_CONFIG.pool.id,n.toBuffer()],t)}static getPdaOwnerId(t,n,r,s){return le([ee.SEED_CONFIG.owner.id,n.toBuffer(),r.toBuffer(),Buffer.from(new lo(s).toArray())],t)}static async getAllInfo({connection:t,programId:n,poolIds:r,wallet:s,chainTime:m}){if(r.length===0)return[];let a=r.map(d=>ee.getPdaPoolId(n,d).publicKey),u=[];for(let d=0;d<ee.VERSION_PROJECT.length;d++)u.push(...a.map(w=>ee.getPdaOwnerId(n,w,s,d).publicKey));let y=await fe(t,[...a,...u]),g=[];for(let d=0;d<y.length;d++){let w=Math.floor(d/r.length),T=d%r.length,A=a[T],x=u[d],k=y[T],S=y[r.length+d];if(!(k&&S)||k.data.length!==ee.POOL_LAYOUT.span||S.data.length!==ee.OWNER_LAYOUT.span)continue;let C=ee.POOL_LAYOUT.decode(k.data),K=ee.OWNER_LAYOUT.decode(S.data),F=C.openTime.toNumber(),v=C.endTime.toNumber(),P=K.tokenInfo.map(R=>R.debtAmount.gt(new lo(0))).filter(R=>!R).length!==3,h=m>F&&m<v&&C.status===1,I=P&&h;g.push({programId:n,poolId:A,ammId:C.ammId,ownerAccountId:x,snapshotLpAmount:K.lpAmount,project:ee.VERSION_PROJECT[w],openTime:F,endTime:v,canClaim:I,canClaimErrorType:P?h?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:C.tokenInfo.map((R,L)=>({mintAddress:R.mintAddress,mintVault:R.mintVault,mintDecimals:R.mintDecimals,perLpLoss:R.perLpLoss,debtAmount:K.tokenInfo[L].debtAmount.add(K.tokenInfo[L].claimedAmount)}))})}return g}async makeClaimTransaction({poolInfo:t,ownerInfo:n,feePayer:r}){n.wallet||this.scope.checkOwner();let s=this.createTxBuilder(r),m=n.wallet||this.scope.ownerPubKey,a=[];for(let g of t.tokenInfo){let{account:d,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({mint:g.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:g.mintAddress.equals(J.WSOL.mint),createInfo:{payer:m,amount:0},skipCloseAccount:!g.mintAddress.equals(J.WSOL.mint),associatedOnly:g.mintAddress.equals(J.WSOL.mint)?!1:n.associatedOnly});w&&s.addInstruction(w),a.push(d)}s.addInstruction({instructions:[ee.makeClaimInstruction({programId:t.programId,poolInfo:t,ownerInfo:{wallet:m,ownerPda:t.ownerAccountId,claimAddress:a}})]});let{transaction:u,signers:y}=s.build();return[{transaction:u,signer:y}]}async makeClaimAllTransaction({poolInfos:t,ownerInfo:n,feePayer:r}){let s=this.createTxBuilder(r),m=n.wallet||this.scope.ownerPubKey,a={};for(let d of t){let w=[];for(let T of d.tokenInfo){let{account:A,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({mint:T.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:T.mintAddress.equals(J.WSOL.mint),createInfo:{payer:m,amount:0},skipCloseAccount:!T.mintAddress.equals(J.WSOL.mint),associatedOnly:T.mintAddress.equals(J.WSOL.mint)?!1:n.associatedOnly});x&&s.addInstruction(x),A&&(a[T.mintAddress.toString()]=A,w.push(A))}s.addInstruction({instructions:[ee.makeClaimInstruction({programId:d.programId,poolInfo:d,ownerInfo:{wallet:m,ownerPda:d.ownerAccountId,claimAddress:w}})]})}let{transaction:u,signers:y}=s.build(),g=s.allInstructions;return Dt(g,[m,...y.map(d=>d.publicKey)])?[{transaction:u,signer:y}]:[{transaction:new nn().add(...g.slice(0,s.AllTxData.instructions.length-1)),signer:y},{transaction:new nn().add(...g.slice(s.AllTxData.instructions.length-1)),signer:[]},{transaction:new nn().add(...s.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:t,poolInfo:n,ownerInfo:r}){let s=f([]),m=[{pubkey:r.wallet,isSigner:!0,isWritable:!0},{pubkey:n.poolId,isSigner:!1,isWritable:!0},{pubkey:r.ownerPda,isSigner:!1,isWritable:!0},...r.claimAddress.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})),...n.tokenInfo.map(({mintVault:y})=>({pubkey:y,isSigner:!1,isWritable:!0})),{pubkey:Pa,isSigner:!1,isWritable:!1}],a=Buffer.alloc(s.span);s.encode({},a);let u=Buffer.from([10,66,208,184,161,6,191,98,...a]);return new ga({keys:m,programId:t,data:u})}},se=ee;se.CLAIMED_NUM=3,se.POOL_LAYOUT=f([M(8),p("bump"),p("status"),e("openTime"),e("endTime"),i("ammId"),b(f([p("mintDecimals"),i("mintAddress"),i("mintVault"),e("perLpLoss"),e("totalClaimedAmount")]),ee.CLAIMED_NUM,"tokenInfo"),b(e(),10,"padding")]),se.OWNER_LAYOUT=f([M(8),p("bump"),p("version"),i("poolId"),i("owner"),e("lpAmount"),b(f([i("mintAddress"),e("debtAmount"),e("claimedAmount")]),ee.CLAIMED_NUM,"tokenInfo"),b(e(),4,"padding")]),se.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(t=>new ba(t)),se.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},se.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as Fx}from"@solana/web3.js";import{getTransferFeeConfig as Vx,MintLayout as _x,TOKEN_2022_PROGRAM_ID as Ex,TOKEN_PROGRAM_ID as Dx,unpackMint as Wx}from"@solana/spl-token";var yR=new Te(2),bR=new Te(3),gR=new Te(5),Uo=new Te(10),PR=new Te(100),AR=new Te(1e3),wR=new Te(1e4);function Rt(o,t=1,n=[]){let r=[...o];if(t<=0)return n;for(;r.length;)n.push(r.splice(0,t));return n}var Ie=5e4,Aa=f([e("x"),e("y"),e("price")]),wa=f([e("accountType"),e("status"),e("multiplier"),e("validDataCount"),b(Aa,Ie,"DataElement")]);function ka(o,t){return[0,Ie-2]}function Ta(o){return[0,Ie-2]}function ha(o){return[0,Ie-2]}function Ia(o,t,n){let[r,s]=ka(t,n),m=r,a=s,u=0,y=t*o.multiplier/n;for(;m<=a;){if(u=Math.floor((a+m)/2),u===0||u>=Ie-2)return[u,u,!1];let g=o.DataElement[u].x*o.multiplier/o.DataElement[u].y,d=o.DataElement[u-1].x*o.multiplier/o.DataElement[u-1].y,w=o.DataElement[u+1].x*o.multiplier/o.DataElement[u+1].y;if(y===g)return[u,u,!0];if(y===d)return[u-1,u-1,!0];if(y===w)return[u+1,u+1,!0];if(y<d)a=u-1;else{if(y>d&&y<g)return[u-1,u,!0];if(y>g&&y<w)return[u,u+1,!0];m=u+1}}return[u,u,!1]}function on(o,t,n){let[r,s,m]=Ia(o,t,n);if(!m)return 0;if(r===s){let a=o.DataElement[r].x;return t*o.multiplier/a}else{let a=o.DataElement[r].x,u=o.DataElement[r].y,y=o.DataElement[s].x,g=o.DataElement[s].y,d=n*(y*u-a*g),w=a*d,T=(y-a)*(t*u-a*n)*g,A=w+T;return t*o.multiplier*d/A}}function he(o,t,n){return t*o.multiplier/n}function mo(o,t,n){return t*n/o.multiplier}function Ba(o,t){let[n,r]=Ta(t),s=n,m=r,a=0,u=t;for(;s<m;){if(a=Math.floor((m+s)/2),a<=0||a>Ie-2)return[a,a,!1];let y=o.DataElement[a].x,g=o.DataElement[a-1].x,d=o.DataElement[a+1].x;if(u===y)return[a,a,!0];if(u===g)return[a-1,a-1,!0];if(u===d)return[a+1,a+1,!0];if(u<g)m=a-1;else{if(u>g&&u<y)return[a-1,a,!0];if(u>y&&u<d)return[a,a+1,!0];s=a+1}}return[a,a,!1]}function Sa(o,t){let[n,r]=ha(t),s=n,m=r,a=0,u=t;for(;s<=m;){if(a=Math.floor((m+s)/2),a<=0||a>=Ie-2)return[a,a,!1];let y=o.DataElement[a].y,g=o.DataElement[a-1].y,d=o.DataElement[a+1].y;if(u===y)return[a,a,!0];if(u===g)return[a-1,a-1,!0];if(u===d)return[a+1,a+1,!0];if(u<d)s=a+1;else{if(u<g&&u>y)return[a-1,a,!0];if(u<y&&u>d)return[a,a+1,!0];m=a-1}}return[a,a,!1]}function po(o,t,n,r){let s=r?t+n:t-n,[m,a,u]=Ba(o,s);if(!u)return[0,0,!1,u];if(m===a)return[o.DataElement[a].price,o.DataElement[a].y,!1,u];{let y=o.DataElement[m].x,g=o.DataElement[a].x,d=o.DataElement[m].price,w=o.DataElement[a].price,T=o.DataElement[m].y,A=o.DataElement[a].y;if(t>=y&&t<=g)return r?[w,A,!0,u]:[d,T,!0,u];{let x,k;return r?(x=d+(w-d)*(t-y)/(g-y),k=T-(s-y)*o.multiplier/w):(x=d+(w-d)*(t-y)/(g-y),k=A+(g-s)*o.multiplier/d),[x,k,!1,u]}}}function Ka(o,t,n,r){let s=r?t-n:t+n,[m,a,u]=Sa(o,s);if(!u)return[0,0,!1,u];if(m===a)return[o.DataElement[a].price,o.DataElement[a].x,!1,u];{let y=o.DataElement[m].x,g=o.DataElement[a].x,d=o.DataElement[m].price,w=o.DataElement[a].price,T=o.DataElement[m].y,A=o.DataElement[a].y;if(t>=A&&t<=T)return r?[w,g,!0,u]:[d,y,!0,u];{let x,k;return r?(x=d+(w-d)*(T-t)/(T-A),k=y+w*(T-s)/o.multiplier):(x=d+(w-d)*(T-t)/(T-A),k=g-d*(s-A)/o.multiplier),[x,k,!1,u]}}}function xa(o,t){let n=po(o,t,0,!1);return n[3]?n[0]:0}function zr(o,t,n,r){let s=on(o,t,n),m=he(o,t,s),a=he(o,n,s),u=he(o,r,s),y=!0,[g,d,w,T]=po(o,m,u,y);if(!T)return 0;if(w)return r*o.multiplier/g;{let A=a-d;return mo(o,A,s)}}function Xr(o,t,n,r){let s=on(o,t,n),m=he(o,t,s),a=he(o,n,s),u=he(o,r,s),y=!1,[g,d,w,T]=Ka(o,a,u,y);if(!T)return 0;if(w)return r*g/o.multiplier;{let A=m-d;return mo(o,A,s)}}function Ca(o){let t=wa.decode(o);return{accountType:t.accountType.toNumber(),status:t.status.toNumber(),multiplier:t.multiplier.toNumber(),validDataCount:t.validDataCount.toNumber(),DataElement:t.DataElement.map(n=>({x:n.x.toNumber(),y:n.y.toNumber(),price:n.price.toNumber()}))}}function Yr(o,t,n,r){let s=xa(o,he(o,t,on(o,t,n)))/o.multiplier;return r?s:1/s}var en=class{constructor({connection:t,modelDataPubKey:n=Gt}){this._layoutData={accountType:0,status:0,multiplier:0,validDataCount:0,DataElement:[]};this.connection=t,this.modelDataPubKey=n}get stableModelData(){return this._layoutData}async initStableModelLayout(){if(this._layoutData.validDataCount===0&&this.connection){let t=await this.connection.getAccountInfo(this.modelDataPubKey);t&&(this._layoutData=Ca(t==null?void 0:t.data))}}};export{Aa as DataElement,en as StableLayout,Ca as formatLayout,Xr as getDxByDyBaseIn,zr as getDyByDxBaseIn,Yr as getStablePrice,wa as modelDataInfoLayout};
//# sourceMappingURL=stable.mjs.map