UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

2 lines 117 kB
var si=Object.defineProperty,ui=Object.defineProperties;var ci=Object.getOwnPropertyDescriptors;var Rt=Object.getOwnPropertySymbols;var Yn=Object.prototype.hasOwnProperty,Hn=Object.prototype.propertyIsEnumerable;var Xn=(i,e,t)=>e in i?si(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,F=(i,e)=>{for(var t in e||(e={}))Yn.call(e,t)&&Xn(i,t,e[t]);if(Rt)for(var t of Rt(e))Hn.call(e,t)&&Xn(i,t,e[t]);return i},E=(i,e)=>ui(i,ci(e));var fe=(i,e)=>{var t={};for(var o in i)Yn.call(i,o)&&e.indexOf(o)<0&&(t[o]=i[o]);if(i!=null&&Rt)for(var o of Rt(i))e.indexOf(o)<0&&Hn.call(i,o)&&(t[o]=i[o]);return t};import{PublicKey as g}from"@solana/web3.js";import{AccountLayout as hs,NATIVE_MINT as st,TOKEN_2022_PROGRAM_ID as ai,TOKEN_PROGRAM_ID as pe,createAssociatedTokenAccountIdempotentInstruction as ut}from"@solana/spl-token";import{PublicKey as gi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Pi}from"@solana/spl-token";import{ComputeBudgetProgram as $n,Keypair as Jn,PublicKey as di,Transaction as eo,TransactionMessage as pi,VersionedTransaction as to}from"@solana/web3.js";import{get as Qn,set as li}from"lodash";var sn=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}},Zn={},mi={};function X(i){let e=Qn(Zn,i);if(!e){let t=Qn(mi,i);e=new sn({name:i,logLevel:t}),li(Zn,i,e)}return e}var H={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{TOKEN_PROGRAM_ID as fi}from"@solana/spl-token";var jn=X("Raydium_txUtil"),no=1644;function Lt(i){let e=[],t=[];return i.microLamports&&(e.push($n.setComputeUnitPrice({microLamports:i.microLamports})),t.push(H.SetComputeUnitPrice)),i.units&&(e.push($n.setComputeUnitLimit({units:i.units})),t.push(H.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function ze(i,e){var o,r;let t=e!=null?e:"confirmed";return(r=await((o=i.getLatestBlockhash)==null?void 0:o.call(i,{commitment:t})))==null?void 0:r.blockhash}async function Ot(i,e){return i.getSignatureStatuses([e]),new Promise((t,o)=>{let r=setTimeout(o,6e4);i.onSignature(e,a=>{if(clearTimeout(r),!a.err){t("");return}o(Object.assign(a.err,{txId:e}))},"confirmed")})}function un(i,e){i.length<1&&jn.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&jn.logWithError(`no signers provided:, ${e.toString()}`);let t=new eo;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<no}catch{return!1}}function ee(i,e){let[t,o]=di.findProgramAddressSync(i,e);return{publicKey:t,nonce:o}}function lt({instructions:i,payer:e,signers:t}){return un(i,[e,...t])}function mt({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:o=Jn.generate().publicKey.toString()}){let a=new pi({payerKey:e,recentBlockhash:o,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new to(a).serialize()).toString("base64").length<no}catch{return!1}}var yi=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i),bi=i=>{let e=i.serialize({requireAllSignatures:!1,verifySignatures:!1});i instanceof to&&(e=yi(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function _e(i){let e=[];return i.forEach(t=>{t instanceof eo&&(t.recentBlockhash||(t.recentBlockhash=fi.toBase58()),t.feePayer||(t.feePayer=Jn.generate().publicKey)),e.push(bi(t))}),console.log("simulate tx string:",e),e}function te(i,e,t){return ee([i.toBuffer(),(t!=null?t:Pi).toBuffer(),e.toBuffer()],new gi("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as j,SystemProgram as oo,SYSVAR_RENT_PUBKEY as Ai}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as wi}from"@solana/spl-token";function Xe({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var ki=[Xe({pubkey:wi,isWritable:!1}),Xe({pubkey:oo.programId,isWritable:!1}),Xe({pubkey:Ai,isWritable:!1})];function cn({publicKey:i,transformSol:e}){let t=io(i.toString());if(t instanceof j)return e&&t.equals(Ve)?re:t;if(e&&t.toString()===Ve.toBase58())return re;if(typeof t=="string"){if(t===j.default.toBase58())return j.default;try{return new j(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function io(i){try{return new j(i)}catch{return i}}var dt=new j("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ee=new j("SysvarRent111111111111111111111111111111111"),Xs=new j("SysvarC1ock11111111111111111111111111111111"),De=new j("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Ti=new j("Sysvar1nstructions1111111111111111111111111"),ro=oo.programId,Ys=new j("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Hs=new j("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Qs=new j("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Zs=new j("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),$s=new j("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),js=new j("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Js=new j("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),eu=new j("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),tu=new j("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),nu=new j("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),ou=new j("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),re=new j("So11111111111111111111111111111111111111112"),Ve=j.default;function Ne(i){return cn({publicKey:i,transformSol:!0})}import Ts from"big.js";import rR from"bn.js";import Fe from"bn.js";import EC from"decimal.js";import{PublicKey as hi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ao}from"@solana/spl-token";var Nt={chainId:101,address:hi.default.toBase58(),programId:ao.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Ie={chainId:101,address:"So11111111111111111111111111111111111111112",programId:ao.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 ln}from"@solana/web3.js";var mn=class{constructor({mint:e,decimals:t,symbol:o,name:r,skipMint:a=!1,isToken2022:l=!1}){if(e===Ve.toBase58()||e instanceof ln&&Ve.equals(e)){this.decimals=Ie.decimals,this.symbol=Ie.symbol,this.name=Ie.name,this.mint=new ln(Ie.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=o||e.toString().substring(0,6),this.name=r||e.toString().substring(0,6),this.mint=a?ln.default:cn({publicKey:e}),this.isToken2022=l}equals(e){return this===e?!0:this.mint.equals(e.mint)}},se=mn;se.WSOL=new mn(E(F({},Ie),{mint:Ie.address}));var dn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:o="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=o}equals(e){return this===e}},Mt=dn;Mt.SOL=new dn(Nt);import vt from"big.js";import Ki from"bn.js";import xi from"decimal.js-light";import pt from"bn.js";var so=9007199254740991;function me(i){let e=X("Raydium_parseBigNumberish");if(i instanceof pt)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new pt(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=so||i<=-so)&&e.logWithError(`BigNumberish number overflow: ${i}`),new pt(String(i))):typeof i=="bigint"?new pt(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new pt(0))}import Ii from"toformat";var Bi=Ii,ft=Bi;var Ft=X("module/fraction"),pn=ft(vt),yt=ft(xi),Ci={[0]:yt.ROUND_DOWN,[1]:yt.ROUND_HALF_UP,[2]:yt.ROUND_UP},Ri={[0]:vt.roundDown,[1]:vt.roundHalfUp,[2]:vt.roundUp},Z=class{constructor(e,t=new Ki(1)){this.numerator=me(e),this.denominator=me(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new Z(this.denominator,this.numerator)}add(e){let t=e instanceof Z?e:new Z(me(e));return this.denominator.eq(t.denominator)?new Z(this.numerator.add(t.numerator),this.denominator):new Z(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof Z?e:new Z(me(e));return this.denominator.eq(t.denominator)?new Z(this.numerator.sub(t.numerator),this.denominator):new Z(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof Z?e:new Z(me(e));return new Z(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof Z?e:new Z(me(e));return new Z(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},o=1){Number.isInteger(e)||Ft.logWithError(`${e} is not an integer.`),e<=0&&Ft.logWithError(`${e} is not positive.`),yt.set({precision:e+1,rounding:Ci[o]});let r=new yt(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return r.toFormat(r.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},o=1){return Number.isInteger(e)||Ft.logWithError(`${e} is not an integer.`),e<0&&Ft.logWithError(`${e} is negative.`),pn.DP=e,pn.RM=Ri[o]||1,new pn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};import Li from"bn.js";var uo=new Z(new Li(100)),be=class extends Z{toSignificant(e=5,t,o){return this.mul(uo).toSignificant(e,t,o)}toFixed(e=2,t,o){return this.mul(uo).toFixed(e,t,o)}};var vu=X("Raydium_price");import{merge as qx}from"lodash";import al from"axios";import{PublicKey as co}from"@solana/web3.js";import{MINT_SIZE as Oi,TOKEN_PROGRAM_ID as Ni,getTransferFeeConfig as Mi,unpackMint as Fi}from"@solana/spl-token";var fn=X("Raydium_accountInfo_util");async function Be(i,e,t){let{batchRequest:o,commitment:r="confirmed",chunkCount:a=100}=F({batchRequest:!1},t),l=yn(e,a),s=new Array(l.length).fill([]);if(o){let c=l.map(b=>{let d=i._buildArgs([b.map(f=>f.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:d}}),p=yn(c,10);s=(await(await Promise.all(p.map(async b=>await i._rpcBatchRequest(b)))).flat()).map(b=>(b.error&&fn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${b.error.message}`),b.result.value.map(d=>{if(d){let{data:f,executable:A,lamports:y,owner:P,rentEpoch:T}=d;return f.length!==2&&f[1]!=="base64"&&fn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(f[0],"base64"),executable:A,lamports:y,owner:new co(P),rentEpoch:T}}return null})))}else try{s=await Promise.all(l.map(c=>i.getMultipleAccountsInfo(c,r)))}catch(c){c instanceof Error&&fn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return s.flat()}async function Pe(i,e,t){let o=await Be(i,e.map(r=>r.pubkey),t);return e.map((r,a)=>E(F({},r),{accountInfo:o[a]}))}async function _t({connection:i,mints:e,config:t}){var a,l,s;if(e.length===0)return{};let o=await Pe(i,e.map(c=>({pubkey:Ne(c)})),t),r={};for(let c of o){if(!c.accountInfo||c.accountInfo.data.length<Oi){console.log("invalid mint account",c.pubkey.toBase58());continue}let p=Fi(c.pubkey,c.accountInfo,(a=c.accountInfo)==null?void 0:a.owner);r[c.pubkey.toString()]=E(F({},p),{programId:((l=c.accountInfo)==null?void 0:l.owner)||Ni,feeConfig:(s=Mi(p))!=null?s:void 0})}return r[co.default.toBase58()]=r[re.toBase58()],r}function yn(i,e=1,t=[]){let o=[...i];if(e<=0)return t;for(;o.length;)t.push(o.splice(0,e));return t}import{PublicKey as V}from"@solana/web3.js";var lo=new V("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),mo=new V("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),po=new V("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),bn=new V("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),$u=new V("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),vi=new V("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),fo=new V("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),yo=new V("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),ju=new V("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),_i=new V("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),bo=new V("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Vi=new V("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ei=new V("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),go=new V("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Ju=new V("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Di=new V("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),We=new V("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Po=new V("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),ec=new V("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),bt=new V("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Vt=new V("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Wi=new V("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),tc=new V("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),nc=new V("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),oc=new V("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),ic=new V("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),rc=new V("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Re={OPEN_BOOK_PROGRAM:new V("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new V("Ray1111111111111111111111111111111111111111"),AMM_V4:new V("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new V("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new V("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new V("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new V("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new V("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new V("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new V("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new V("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new V("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:V.default,Router:new V("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new V("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new V("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new V("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new V("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new V("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new V("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new V("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new V("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new V("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new V("Ray1111111111111111111111111111111111111111")};import ke from"bn.js";var gt=1e4;function Me(i,e,t,o){if(e===void 0)return{amount:i,fee:void 0,expirationTime:void 0};let r=E(F({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),a=t.epoch<r.newerTransferFee.epoch?r.olderTransferFee:r.newerTransferFee,l=new ke(a.maximumFee.toString()),s=t.epoch<r.newerTransferFee.epoch?(Number(r.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(o)if(a.transferFeeBasisPoints===gt){let c=new ke(a.maximumFee.toString());return{amount:i.add(c),fee:c,expirationTime:s}}else{let c=Et(i.mul(new ke(gt)),new ke(gt-a.transferFeeBasisPoints)),p=new ke(a.maximumFee.toString()),m=c.sub(i).gt(p)?i.add(p):c,b=Et(m.mul(new ke(a.transferFeeBasisPoints)),new ke(gt)),d=b.gt(l)?l:b;return{amount:m,fee:d,expirationTime:s}}else{let c=Et(i.mul(new ke(a.transferFeeBasisPoints)),new ke(gt)),p=c.gt(l)?l:c;return{amount:i,fee:p,expirationTime:s}}}function Et(i,e){let{div:t,mod:o}=i.divmod(e);return o.gt(new ke(0))?t.add(new ke(1)):t}import{PublicKey as gn,AddressLookupTableAccount as Qe}from"@solana/web3.js";async function Pn({connection:i,address:e,cluster:t="mainnet"}){let o=await Be(i,[...new Set(e.map(a=>a.toString()))].map(a=>new gn(a))),r={};for(let a=0;a<e.length;a++){let l=o[a],s=e[a];if(!l)continue;let c=new Qe({key:s,state:Qe.deserialize(l.data)});r[s.toString()]=c,t==="devnet"?He[s.toString()]=c:Ye[s.toString()]=c}return r}var Ye={},An=async i=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Ye[e])return Ye;let t=new gn(e),o=await i.getAccountInfo(t);return o&&(Ye[e]=new Qe({key:t,state:Qe.deserialize(o.data)})),Ye},He={},wn=async i=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(He[e])return He;let t=new gn(e),o=await i.getAccountInfo(t);return o&&(He[e]=new Qe({key:t,state:Qe.deserialize(o.data)})),He};import{PublicKey as Ze,sendAndConfirmTransaction as kn,SystemProgram as qi,Transaction as Pt,TransactionMessage as At,VersionedTransaction as wt}from"@solana/web3.js";import Ui from"axios";var Dt=2e3,Wt=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 Ui.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}=Lt(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(qi.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new Ze(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(H.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:r=[],endInstructionTypes:a=[],lookupTableAddress:l=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...o),this.instructionTypes.push(...r),this.endInstructionTypes.push(...a),this.lookupTableAddress.push(...l.filter(s=>s!==Ze.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:o}){return e===0?await this.buildV0(E(F({},t||{}),{lookupTableAddress:o})):this.build(t)}build(e){var o;let t=new Pt;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((o=this.owner)==null?void 0:o.signer)&&!this.signers.some(r=>r.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 r=>{var m;let{recentBlockHash:a,skipPreflight:l=!0,sendAndConfirm:s,notSendToRpc:c}=r||{},p=a!=null?a:await ze(this.connection,this.blockhashCommitment);if(t.recentBlockhash=p,this.signers.length&&t.sign(...this.signers),_e([t]),(m=this.owner)!=null&&m.isKeyPair)return{txId:s?await kn(this.connection,t,this.signers.find(d=>d.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:l}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:l}),signedTx:t};if(this.signAllTransactions){let b=await this.signAllTransactions([t]);if(this.signers.length)for(let d of b)try{d.sign(...this.signers)}catch{}return{txId:c?"":await this.connection.sendRawTransaction(b[0].serialize(),{skipPreflight:l}),signedTx:b[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var p;let{extraPreBuildData:t=[],extInfo:o}=e,{transaction:r}=this.build(o),a=t.filter(m=>m.transaction.instructions.length>0),l=[r,...a.map(m=>m.transaction)],s=[this.signers,...a.map(m=>m.signers)],c=[...this.instructionTypes,...a.map(m=>m.instructionTypes).flat()];return(p=this.owner)!=null&&p.signer&&s.forEach(m=>{m.some(b=>b.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:l,signers:s,instructionTypes:c,execute:async m=>{var T;let{sequentially:b,onTxUpdate:d,skipTxCount:f=0,recentBlockHash:A,skipPreflight:y=!0}=m||{},P=A!=null?A:await ze(this.connection,this.blockhashCommitment);if((T=this.owner)!=null&&T.isKeyPair){if(b){let I=[],R=0;for(let L of l){if(++R,R<=f)continue;let K=await kn(this.connection,L,this.signers.find(x=>x.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});I.push(K)}return{txIds:I,signedTxs:l}}return{txIds:await await Promise.all(l.map(async I=>(I.recentBlockhash=P,await this.connection.sendRawTransaction(I.serialize(),{skipPreflight:y})))),signedTxs:l}}if(this.signAllTransactions){let I=l.map((L,K)=>(L.recentBlockhash=P,s[K].length&&L.sign(...s[K]),L));_e(I);let R=await this.signAllTransactions(I);if(b){let L=0,K=[],x=async()=>{if(!R[L])return;let B=await this.connection.sendRawTransaction(R[L].serialize(),{skipPreflight:y});K.push({txId:B,status:"sent",signedTx:R[L]}),d==null||d([...K]),L++;let C=!1,N=null,M=null,W=v=>{N!==null&&clearInterval(N),M!==null&&this.connection.removeSignatureListener(M);let _=K.findIndex(z=>z.txId===B);if(_>-1){if(K[_].status==="error"||K[_].status==="success")return;K[_].status=v.err?"error":"success"}d==null||d([...K]),v.err||x()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var v;if(C){clearInterval(N);return}try{let _=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:1});_&&(C=!0,clearInterval(N),W({err:((v=_.meta)==null?void 0:v.err)||null}),console.log("tx status from getTransaction:",B))}catch(_){C=!0,clearInterval(N),console.error("getTransaction timeout:",_,B)}},Dt)),M=this.connection.onSignature(B,v=>{if(C){this.connection.removeSignatureListener(M);return}C=!0,W(v)},"confirmed"),this.connection.getSignatureStatus(B)};return await x(),{txIds:K.map(B=>B.txId),signedTxs:R}}else{let L=[];for(let K=0;K<R.length;K+=1){let x=await this.connection.sendRawTransaction(R[K].serialize(),{skipPreflight:y});L.push(x)}return{txIds:L,signedTxs:R}}}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 y;let A=e||{},{lookupTableCache:t={},lookupTableAddress:o=[],forerunCreate:r,recentBlockhash:a}=A,l=fe(A,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),s=F(F({},this.cluster==="devnet"?await wn(this.connection):await An(this.connection)),t),c=Array.from(new Set([...o,...this.lookupTableAddress])),p=[];for(let P of c)s[P]===void 0&&p.push(new Ze(P));let m=await Pn({connection:this.connection,address:p});for(let[P,T]of Object.entries(m))s[P]=T;let b=r?Ze.default.toBase58():a!=null?a:await ze(this.connection,this.blockhashCommitment),d=new At({payerKey:this.feePayer,recentBlockhash:b,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s));((y=this.owner)==null?void 0:y.signer)&&!this.signers.some(P=>P.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let f=new wt(d);return f.sign(this.signers),{builder:this,transaction:f,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async P=>{var L;let{skipPreflight:T=!0,sendAndConfirm:I,notSendToRpc:R}=P||{};if(_e([f]),(L=this.owner)!=null&&L.isKeyPair){let K=await this.connection.sendTransaction(f,{skipPreflight:T});return I&&await Ot(this.connection,K),{txId:K,signedTx:f}}if(this.signAllTransactions){let K=await this.signAllTransactions([f]);if(this.signers.length)for(let x of K)try{x.sign(this.signers)}catch{}return{txId:R?"":await this.connection.sendTransaction(K[0],{skipPreflight:T}),signedTx:K[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:l||{}}}async buildV0MultiTx(e){var p;let{extraPreBuildData:t=[],buildProps:o}=e,{transaction:r}=await this.buildV0(o),a=t.filter(m=>m.builder.instructions.length>0),l=[r,...a.map(m=>m.transaction)],s=[this.signers,...a.map(m=>m.signers)],c=[...this.instructionTypes,...a.map(m=>m.instructionTypes).flat()];return(p=this.owner)!=null&&p.signer&&s.forEach(m=>{m.some(b=>b.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),l.forEach(async(m,b)=>{m.sign(s[b])}),{builder:this,transactions:l,signers:s,instructionTypes:c,buildProps:o,execute:async m=>{var y;let{sequentially:b,onTxUpdate:d,recentBlockHash:f,skipPreflight:A=!0}=m||{};if(f&&l.forEach(P=>P.message.recentBlockhash=f),_e(l),(y=this.owner)!=null&&y.isKeyPair){if(b){let P=[];for(let T of l){let I=await this.connection.sendTransaction(T,{skipPreflight:A});await Ot(this.connection,I),P.push(I)}return{txIds:P,signedTxs:l}}return{txIds:await Promise.all(l.map(async P=>await this.connection.sendTransaction(P,{skipPreflight:A}))),signedTxs:l}}if(this.signAllTransactions){let P=await this.signAllTransactions(l);if(b){let T=0,I=[],R=async()=>{if(!P[T])return;let L=await this.connection.sendTransaction(P[T],{skipPreflight:A});I.push({txId:L,status:"sent",signedTx:P[T]}),d==null||d([...I]),T++;let K=!1,x=null,B=null,C=N=>{x!==null&&clearInterval(x),B!==null&&this.connection.removeSignatureListener(B);let M=I.findIndex(W=>W.txId===L);if(M>-1){if(I[M].status==="error"||I[M].status==="success")return;I[M].status=N.err?"error":"success"}d==null||d([...I]),N.err||R()};this.loopMultiTxStatus&&(x=setInterval(async()=>{var N;if(K){clearInterval(x);return}try{let M=await this.connection.getTransaction(L,{commitment:"confirmed",maxSupportedTransactionVersion:1});M&&(K=!0,clearInterval(x),C({err:((N=M.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",L))}catch(M){K=!0,clearInterval(x),console.error("getTransaction timeout:",M,L)}},Dt)),B=this.connection.onSignature(L,N=>{if(K){this.connection.removeSignatureListener(B);return}K=!0,C(N)},"confirmed"),this.connection.getSignatureStatus(L)};return R(),{txIds:[],signedTxs:P}}else{let T=[];for(let I=0;I<P.length;I+=1){let R=await this.connection.sendTransaction(P[I],{skipPreflight:A});T.push(R)}return{txIds:T,signedTxs:P}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var d;let b=e||{},{splitIns:t=[],computeBudgetConfig:o}=b,r=fe(b,["splitIns","computeBudgetConfig"]),a=o?Lt(o):{instructions:[],instructionTypes:[]},l=this.signers.reduce((f,A)=>E(F({},f),{[A.publicKey.toBase58()]:A}),{}),s=[],c=[],p=[],m=0;if(this.allInstructions.forEach(f=>{let A=[...p,f],y=o?[...a.instructions,...A]:A,T=[...new Set(A.map(I=>I.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat()).values()].map(I=>new Ze(I));if(f!==t[m]&&p.length<12&&(lt({instructions:y,payer:this.feePayer,signers:T})||lt({instructions:A,payer:this.feePayer,signers:T})))p.push(f);else{if(p.length===0)throw Error("item ins too big");m+=f===t[m]?1:0,lt({instructions:o?[...a.instructions,...p]:[...p],payer:this.feePayer,signers:T})?s.push(new Pt().add(...a.instructions,...p)):s.push(new Pt().add(...p)),c.push(Array.from(new Set(p.map(I=>I.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat())).map(I=>l[I]).filter(I=>I!==void 0)),p=[f]}}),p.length>0){let A=[...new Set(p.map(y=>y.keys.filter(P=>P.isSigner).map(P=>P.pubkey.toString())).flat()).values()].map(y=>l[y]).filter(y=>y!==void 0);lt({instructions:o?[...a.instructions,...p]:[...p],payer:this.feePayer,signers:A.map(y=>y.publicKey)})?s.push(new Pt().add(...a.instructions,...p)):s.push(new Pt().add(...p)),c.push(A)}return s.forEach(f=>f.feePayer=this.feePayer),(d=this.owner)!=null&&d.signer&&c.forEach(f=>{f.some(A=>A.publicKey.equals(this.owner.publicKey))||f.push(this.owner.signer)}),{builder:this,transactions:s,signers:c,instructionTypes:this.instructionTypes,execute:async f=>{var L;let{sequentially:A,onTxUpdate:y,skipTxCount:P=0,recentBlockHash:T,skipPreflight:I=!0}=f||{},R=T!=null?T:await ze(this.connection,this.blockhashCommitment);if(s.forEach(async(K,x)=>{K.recentBlockhash=R,c[x].length&&K.sign(...c[x])}),_e(s),(L=this.owner)!=null&&L.isKeyPair){if(A){let K=0,x=[];for(let B of s){if(++K,K<=P){x.push("tx skipped");continue}let C=await kn(this.connection,B,this.signers.find(N=>N.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:I});x.push(C)}return{txIds:x,signedTxs:s}}return{txIds:await Promise.all(s.map(async K=>await this.connection.sendRawTransaction(K.serialize(),{skipPreflight:I}))),signedTxs:s}}if(this.signAllTransactions){let K=await this.signAllTransactions(s.slice(P,s.length)),x=[...s.slice(0,P),...K];if(A){let B=0,C=[],N=async()=>{if(!x[B])return;B<P&&(C.push({txId:"",status:"success",signedTx:x[B]}),y==null||y([...C]),B++,N());let M=await this.connection.sendRawTransaction(x[B].serialize(),{skipPreflight:I});C.push({txId:M,status:"sent",signedTx:x[B]}),y==null||y([...C]),B++;let W=!1,v=null,_=null,z=q=>{v!==null&&clearInterval(v),_!==null&&this.connection.removeSignatureListener(_);let U=C.findIndex(Q=>Q.txId===M);if(U>-1){if(C[U].status==="error"||C[U].status==="success")return;C[U].status=q.err?"error":"success"}y==null||y([...C]),q.err||N()};this.loopMultiTxStatus&&(v=setInterval(async()=>{var q;if(W){clearInterval(v);return}try{let U=await this.connection.getTransaction(M,{commitment:"confirmed",maxSupportedTransactionVersion:1});U&&(W=!0,clearInterval(v),z({err:((q=U.meta)==null?void 0:q.err)||null}),console.log("tx status from getTransaction:",M))}catch(U){W=!0,clearInterval(v),console.error("getTransaction timeout:",U,M)}},Dt)),_=this.connection.onSignature(M,q=>{if(W){this.connection.removeSignatureListener(_);return}W=!0,z(q)},"confirmed"),this.connection.getSignatureStatus(M)};return await N(),{txIds:C.map(M=>M.txId),signedTxs:x}}else{let B=[];for(let C=0;C<x.length;C+=1){let N=await this.connection.sendRawTransaction(x[C].serialize(),{skipPreflight:I});B.push(N)}return{txIds:B,signedTxs:x}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async sizeCheckBuildV0(e){var L;let R=e||{},{computeBudgetConfig:t,splitIns:o=[],lookupTableCache:r={},lookupTableAddress:a=[],insCountLimit:l=12}=R,s=fe(R,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),c=F(F({},this.cluster==="devnet"?await wn(this.connection):await An(this.connection)),r),p=Array.from(new Set([...this.lookupTableAddress,...a])),m=[];for(let K of p)c[K]===void 0&&m.push(new Ze(K));let b=await Pn({connection:this.connection,address:m});for(let[K,x]of Object.entries(b))c[K]=x;let d=t?Lt(t):{instructions:[],instructionTypes:[]},f=await ze(this.connection,this.blockhashCommitment),A=this.signers.reduce((K,x)=>E(F({},K),{[x.publicKey.toBase58()]:x}),{}),y=[],P=[],T=[],I=0;if(this.allInstructions.forEach(K=>{let x=[...T,K],B=t?[...d.instructions,...x]:x;if(K!==o[I]&&T.length<l&&(mt({instructions:B,payer:this.feePayer,lookupTableAddressAccount:c})||mt({instructions:x,payer:this.feePayer,lookupTableAddressAccount:c})))T.push(K);else{if(T.length===0)throw Error("item ins too big");I+=K===o[I]?1:0;let C={};for(let N of[...new Set(p)])c[N]!==void 0&&(C[N]=c[N]);if(t&&mt({instructions:[...d.instructions,...T],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:f})){let N=new At({payerKey:this.feePayer,recentBlockhash:f,instructions:[...d.instructions,...T]}).compileToV0Message(Object.values(c));y.push(new wt(N))}else{let N=new At({payerKey:this.feePayer,recentBlockhash:f,instructions:[...T]}).compileToV0Message(Object.values(c));y.push(new wt(N))}P.push(Array.from(new Set(T.map(N=>N.keys.filter(M=>M.isSigner).map(M=>M.pubkey.toString())).flat())).map(N=>A[N]).filter(N=>N!==void 0)),T=[K]}}),T.length>0){let x=[...new Set(T.map(B=>B.keys.filter(C=>C.isSigner).map(C=>C.pubkey.toString())).flat()).values()].map(B=>A[B]).filter(B=>B!==void 0);if(t&&mt({instructions:[...d.instructions,...T],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:f})){let B=new At({payerKey:this.feePayer,recentBlockhash:f,instructions:[...d.instructions,...T]}).compileToV0Message(Object.values(c));y.push(new wt(B))}else{let B=new At({payerKey:this.feePayer,recentBlockhash:f,instructions:[...T]}).compileToV0Message(Object.values(c));y.push(new wt(B))}P.push(x)}return(L=this.owner)!=null&&L.signer&&P.forEach(K=>{K.some(x=>x.publicKey.equals(this.owner.publicKey))||K.push(this.owner.signer)}),y.forEach((K,x)=>{K.sign(P[x])}),{builder:this,transactions:y,buildProps:e,signers:P,instructionTypes:this.instructionTypes,execute:async K=>{var W;let{sequentially:x,onTxUpdate:B,skipTxCount:C=0,recentBlockHash:N,skipPreflight:M=!0}=K||{};if(y.map(async(v,_)=>{P[_].length&&v.sign(P[_]),N&&(v.message.recentBlockhash=N)}),_e(y),(W=this.owner)!=null&&W.isKeyPair){if(x){let v=0,_=[];for(let z of y){if(++v,v<=C){console.log("skip tx: ",v),_.push("tx skipped");continue}let q=await this.connection.sendTransaction(z,{skipPreflight:M});await Ot(this.connection,q),_.push(q)}return{txIds:_,signedTxs:y}}return{txIds:await Promise.all(y.map(async v=>await this.connection.sendTransaction(v,{skipPreflight:M}))),signedTxs:y}}if(this.signAllTransactions){let v=await this.signAllTransactions(y.slice(C,y.length)),_=[...y.slice(0,C),...v];if(x){let z=0,q=[],U=async()=>{if(!_[z])return;if(z<C){q.push({txId:"",status:"success",signedTx:_[z]}),B==null||B([...q]),z++,U();return}let Q=await this.connection.sendTransaction(_[z],{skipPreflight:M});q.push({txId:Q,status:"sent",signedTx:_[z]}),B==null||B([...q]),z++;let ce=!1,le=null,ve=null,ct=Oe=>{le!==null&&clearInterval(le),ve!==null&&this.connection.removeSignatureListener(ve);let we=q.findIndex(an=>an.txId===Q);if(we>-1){if(q[we].status==="error"||q[we].status==="success")return;q[we].status=Oe.err?"error":"success"}B==null||B([...q]),Oe.err||U()};this.loopMultiTxStatus&&(le=setInterval(async()=>{var Oe;if(ce){clearInterval(le);return}try{let we=await this.connection.getTransaction(Q,{commitment:"confirmed",maxSupportedTransactionVersion:1});we&&(ce=!0,clearInterval(le),ct({err:((Oe=we.meta)==null?void 0:Oe.err)||null}),console.log("tx status from getTransaction:",Q))}catch(we){ce=!0,clearInterval(le),console.error("getTransaction timeout:",we,Q)}},Dt)),ve=this.connection.onSignature(Q,Oe=>{if(ce){this.connection.removeSignatureListener(ve);return}ce=!0,ct(Oe)},"confirmed"),this.connection.getSignatureStatus(Q)};return U(),{txIds:[],signedTxs:_}}else{let z=[];for(let q=0;q<_.length;q+=1){let U=await this.connection.sendTransaction(_[q],{skipPreflight:M});z.push(U)}return{txIds:z,signedTxs:_}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}};import{PublicKey as Sc}from"@solana/web3.js";import xc from"bn.js";import Gi from"bn.js";var Se=new Gi(1e6);var Ao={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"},zi=E(F({},Ao),{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 Cl=X("Raydium_Api");import{PublicKey as Ad,SystemProgram as wd}from"@solana/web3.js";import{AccountLayout as Bd,createAssociatedTokenAccountIdempotentInstruction as Sd,TOKEN_PROGRAM_ID as Kd,TOKEN_2022_PROGRAM_ID as xd}from"@solana/spl-token";var Tn=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),de=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=X(t)}createTxBuilder(e){return this.scope.checkOwner(),new Wt({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(Tn(e))}logInfo(...e){this.logger.info(Tn(e))}logAndCreateError(...e){let t=Tn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Zm,SystemProgram as jm}from"@solana/web3.js";import td from"bn.js";import{createCloseAccountInstruction as rd,createInitializeAccountInstruction as ad,createTransferInstruction as sd,TOKEN_PROGRAM_ID as ud}from"@solana/spl-token";import{Keypair as _m,PublicKey as Vm}from"@solana/web3.js";import Wm from"bn.js";import{TOKEN_PROGRAM_ID as Gm}from"@solana/spl-token";import{PublicKey as or}from"@solana/web3.js";import Io,{isBN as Bo}from"bn.js";import{bits as Xi,BitStructure as ql,blob as Yi,Blob as Ul,cstr as Gl,f32 as zl,f32be as Xl,f64 as Yl,f64be as Hl,greedy as Ql,Layout as Hi,ns64 as Zl,ns64be as $l,nu64 as jl,nu64be as Jl,offset as Qi,s16 as em,s16be as tm,s24 as nm,s24be as om,s32 as Zi,s32be as im,s40 as rm,s40be as am,s48 as sm,s48be as um,s8 as cm,seq as $i,struct as lm,Structure as ji,u16 as Ji,u16be as mm,u24 as dm,u24be as pm,u32 as er,u32be as fm,u40 as ym,u40be as bm,u48 as gm,u48be as Pm,u8 as tr,UInt as nr,union as Am,Union as wm,unionLayoutDiscriminator as km,utf8 as Tm}from"@solana/buffer-layout";var Ut=Hi,wo=ji;var hn=nr;var ko=tr,ne=Ji;var Gt=er;var Te=Zi;var To=$i;var G=Yi;var In=Xi,ho=Qi;var Ue=class extends Ut{constructor(t,o,r){super(t,r);this.blob=G(t),this.signed=o}decode(t,o=0){let r=new Io(this.blob.decode(t,o),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,o,r=0){return typeof t=="number"&&(t=new Io(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),o,r)}},zt=class extends Ut{constructor(t){super(8,t);this._lower=In(Gt(),!1),this._upper=In(Gt(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,o=0){let r=this._lower.decode(t,o),a=this._upper.decode(t,o+this._lower.span);return F(F({},r),a)}encode(t,o,r=0){return this._lower.encode(t,o,r)+this._upper.encode(t,o,r+this._lower.span)}};function S(i){return new hn(1,i)}function J(i){return new hn(4,i)}function n(i){return new Ue(8,!1,i)}function D(i){return new Ue(16,!1,i)}function So(i){return new Ue(1,!0,i)}function je(i){return new Ue(8,!0,i)}function Ko(i){return new Ue(16,!0,i)}var kt=class extends Ut{constructor(t,o,r,a){super(t.span,a);this.layout=t,this.decoder=o,this.encoder=r}decode(t,o){return this.decoder(this.layout.decode(t,o))}encode(t,o,r){return this.layout.encode(this.encoder(t),o,r)}getSpan(t,o){return this.layout.getSpan(t,o)}};function u(i){return new kt(G(32),e=>new or(e),e=>e.toBuffer(),i)}function ge(i){return new kt(ko(),ir,rr,i)}function ir(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function rr(i){return i?1:0}function Sn(i,e){let t=Gt("length"),o=h([t,O(i,ho(t,-t.span),"values")]);return new kt(o,({values:r})=>r,r=>({values:r}),e)}var Bn=class extends wo{decode(e,t){return super.decode(e,t)}};function h(i,e,t){return new Bn(i,e,t)}function O(i,e,t){let o,r=typeof e=="number"?e:Bo(e)?e.toNumber():new Proxy(e,{get(a,l){if(!o){let s=Reflect.get(a,"count");o=Bo(s)?s.toNumber():s,Reflect.set(a,"count",o)}return Reflect.get(a,l)},set(a,l,s){return l==="count"&&(o=s),Reflect.set(a,l,s)}});return To(i,r,t)}var Xt=h([u("mint"),u("owner"),n("amount"),J("delegateOption"),u("delegate"),S("state"),J("isNativeOption"),n("isNative"),n("delegatedAmount"),J("closeAuthorityOption"),u("closeAuthority")]);import{PublicKey as DP,SystemProgram as WP}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as UP}from"@solana/spl-token";import JP from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as Cb,TOKEN_2022_PROGRAM_ID as Rb,TOKEN_PROGRAM_ID as Lb}from"@solana/spl-token";import{PublicKey as Nb}from"@solana/web3.js";import Fb from"bn.js";import _b from"decimal.js";import{TOKEN_PROGRAM_ID as Vd}from"@solana/spl-token";import{PublicKey as qd}from"@solana/web3.js";var sr=h([J("mintAuthorityOption"),u("mintAuthority"),n("supply"),S("decimals"),S("isInitialized"),J("freezeAuthorityOption"),u("freezeAuthority")]);var Ke=r=>{var a=r,{address:i,programId:e,decimals:t}=a,o=fe(a,["address","programId","decimals"]);return F({chainId:101,address:Ne(i).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:o.extensions||{}},o)},Ge=i=>i?E(F({},i),{transferFeeConfigAuthority:i.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:i.withdrawWithheldAuthority.toBase58(),withheldAmount:i.withheldAmount.toString(),olderTransferFee:E(F({},i.olderTransferFee),{epoch:i.olderTransferFee.epoch.toString(),maximumFee:i.olderTransferFee.maximumFee.toString()}),newerTransferFee:E(F({},i.newerTransferFee),{epoch:i.newerTransferFee.epoch.toString(),maximumFee:i.newerTransferFee.maximumFee.toString()})}):void 0;import{ASSOCIATED_TOKEN_PROGRAM_ID as Zy,TOKEN_2022_PROGRAM_ID as $y,TOKEN_PROGRAM_ID as jy}from"@solana/spl-token";import{Keypair as tb,PublicKey as nb,SystemProgram as ib,TransactionInstruction as rb}from"@solana/web3.js";import sb from"bn.js";import Y from"bn.js";var Je=new Y(1).shln(64);var ur=new Y(1).shln(128),Kn=new Y(1).shln(64).subn(1),cr=new Y(1).shln(128).subn(1);var et=new Y("4295048016"),tt=new Y("79226673521066979257578248091"),lr=new Y("59543866431248"),mr=new Y("184467440737095516"),dr=new Y("15793534762490258745");var xn=60,ep=new Y("18446743708227953217"),pr=[{bit:0,factor:new Y("fffcb933bd6fb800",16)},{bit:1,factor:new Y("fff97272373d4000",16)},{bit:2,factor:new Y("fff2e50f5f657000",16)},{bit:3,factor:new Y("ffe5caca7e10f000",16)},{bit:4,factor:new Y("ffcb9843d60f7000",16)},{bit:5,factor:new Y("ff973b41fa98e800",16)},{bit:6,factor:new Y("ff2ea16466c9b000",16)},{bit:7,factor:new Y("fe5dee046a9a3800",16)},{bit:8,factor:new Y("fcbe86c7900bb000",16)},{bit:9,factor:new Y("f987a7253ac65800",16)},{bit:10,factor:new Y("f3392b0822bb6000",16)},{bit:11,factor:new Y("e7159475a2caf000",16)},{bit:12,factor:new Y("d097f3bdfd2f2000",16)},{bit:13,factor:new Y("a9f746462d9f8000",16)},{bit:14,factor:new Y("70d869a156f31c00",16)},{bit:15,factor:new Y("31be135f97ed3200",16)},{bit:16,factor:new Y("9aa508b5b85a500",16)},{bit:17,factor:new Y("5d6af8dedc582c",16)},{bit:18,factor:new Y("2216e584f5fa",16)}];var Tt=3,Co=100;var Ro=10,Lo=100,Ht=14;var oe=new Y(0),nt=new Y(1),tp=new Y(-1);var np=new Y("18446744073700000000");var fr=h([G(8),S("bump"),ne("index"),u("owner"),J("protocolFeeRate"),J("tradeFeeRate"),ne("tickSpacing"),J("fundFeeRate"),O(J(),1),u("fundOwner"),O(n(),3)]),yr=h([J("blockTimestamp"),je("tickCumulative"),O(n(),4)]),Oo=h([G(8),ge("initialized"),n("recentEpoch"),ne("observationIndex"),u("poolId"),O(yr,Co,"observations"),O(n(),4)]),br=h([ne("filterPeriod"),ne("decayPeriod"),ne("reductionFactor"),J("dynamicFeeControl"),J("maxVolatilityAccumulator"),Te("tickSpacingIndexReference"),J("volatilityReference"),J("volatilityAccumulator"),n("lastUpdateTimestamp"),O(S(),46)]),gr=h([S("state"),n("openTime"),n("endTime"),n("lastUpdateTime"),D("emissionsPerSecondX64"),n("totalEmissioned"),n("claimed"),u("mint"),u("vault"),u("creator"),D("growthGlobalX64")]),Cn=h([G(8),S("bump"),u("configId"),u("creator"),u("mintA"),u("mintB"),u("vaultA"),u("vaultB"),u("observationId"),S("mintDecimalsA"),S("mintDecimalsB"),ne("tickSpacing"),D("liquidity"),D("sqrtPriceX64"),Te("tickCurrent"),J(),D("feeGrowthGlobalX64A"),D("feeGrowthGlobalX64B"),n("protocolFeesTokenA"),n("protocolFeesTokenB"),O(D(),4),S("status"),S("feeOn"),G(6),O(gr,Tt,"rewardInfos"),G(8*16,"tickArrayBitmap"),O(n(),4),n("fundFeesTokenA"),n("fundFeesTokenB"),n("startTime"),n("recentEpoch"),br.replicate("dynamicFeeInfo"),O(n(),46)]),Pr=h([D("growthInsideLastX64"),n("rewardAmountOwed")]),Ar=h([G(8),S("bump"),u("nftMint"),u("poolId"),Te("tickLower"),Te("tickUpper"),D("liquidity"),D("feeGrowthInsideLastX64A"),D("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),O(Pr,Tt,"rewardInfos"),n("recentEpoch"),O(n(),7)]),ap=h([G(8),S("bump"),u("poolId"),Te("tickLower"),Te("tickUpper"),D("liquidity"),D("feeGrowthInsideLastX64A"),D("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),O(D(),Tt,"rewardGrowthInside"),n("recentEpoch"),O(n(),7)]),wr=h([Te("tick"),Ko("liquidityNet"),D("liquidityGross"),D("feeGrowthOutsideX64A"),D("feeGrowthOutsideX64B"),O(D(),Tt,"rewardGrowthsOutsideX64"),n("orderPhase"),n("ordersAmount"),n("partFilledOrdersRemaining"),D("unfilledRatioX64"),O(J(),3)]),No=h([G(8),u("poolId"),Te("startTickIndex"),O(wr,xn,"ticks"),S("initializedTickCount"),n("recentEpoch"),O(S(),107)]),kr=h([G(8),S("bump"),O(u(),Ro,"operationOwners"),O(u(),Lo,"whitelistMints")]),Tr=h([G(8),u("poolId"),u("owner"),Te("tick"),ge("zeroForOne"),n("orderPhase"),n("totalAmount"),n("filledAmount"),n("settleBase"),n("settleOutput"),n("openTime"),D("unfilledRatioX64"),O(n(),4)]),Mo=h([G(8),u("poolId"),G(8*8*Ht,"positiveTickArrayBitmap"),G(8*8*Ht,"negativeTickArrayBitmap")]),sp=h([G(8),ne("index"),ne("filterPeriod"),ne("decayPeriod"),ne("reductionFactor"),J("dynamicFeeControl"),J("maxVolatilityAccumulator"),O(n(),8)]),hr=h([G(8),u("wallet"),S("nonceIndex"),n("orderNonce"),O(n(),4)]),up=h([n(),S("bump"),u("owner"),u("poolId"),u("positionId"),u("nftAccount"),O(n(),8)]),Ir=h([G(8),S("bump"),u("lockOwner"),u("poolId"),u("positionId"),u("nftAccount"),u("lockNftMint"),n("recentEpoch"),O(n(),8)]);import mp from"bn.js";var Tp=Buffer.from("amm_config","utf8"),Sr=Buffer.from("pool","utf8"),Kr=Buffer.from("pool_vault","utf8"),hp=Buffer.from("pool_reward_vault","utf8"),Ip=Buffer.from("position","utf8"),Bp=Buffer.from("tick_array","utf8"),Sp=Buffer.from("operation","utf8"),Kp=Buffer.from("pool_tick_array_bitmap_extension","utf8"),xp=Buffer.from("observation","utf8"),Cp=Buffer.from("support_mint","utf8"),Rp=Buffer.from("dynamic_fee_config","utf8"),Lp=Buffer.from("permission","utf8");function Qt(i){return ee([Buffer.from("metadata","utf8"),De.toBuffer(),i.toBuffer()],De)}var Op=Buffer.from("locked_position","utf8");import{sha256 as Wr}from"js-sha256";import xr from"bn.js";import vp from"decimal.js";var Vp=new xr(1).shln(256).subn(1);import nf from"bn.js";import zp from"bn.js";import Yp from"decimal.js";import uf from"bn.js";import lf from"decimal.js";import{PublicKey as Zf}from"@solana/web3.js";import jf from"bn.js";import{TOKEN_2022_PROGRAM_ID as ay,TOKEN_PROGRAM_ID as sy}from"@solana/spl-token";import my from"decimal.js";import Ef from"bn.js";import Sf from"bn.js";import Ty from"bn.js";function ae(i){let e=`global:${i}`;return Buffer.from(Wr.digest(e)).slice(0,8)}Oo.span;var bb=X("Raydium_Clmm"),gb={createPool:ae("create_pool"),createCustomizablePool:ae("create_customizable_pool"),createPermissionedPool:ae("create_permissioned_pool"),openPositionV2:ae("open_position_v2"),openPositionWithToken22Nft:ae("open_position_with_token22_nft"),closePosition:ae("close_position"),increaseLiquidityV2:ae("increase_liquidity_v2"),decreaseLiquidityV2:ae("decrease_liquidity_v2"),initializeReward:ae("initialize_reward"),setRewardParams:ae("set_reward_params"),updateRewardInfos:ae("update_reward_infos"),collectRemainingRewards:ae("collect_remaining_rewards"),swapV2:ae("swap_v2"),openLimitOrder:ae("open_limit_order"),increaseLimitOrder:ae("increase_limit_order"),decreaseLimitOrder:ae("decrease_limit_order"),settleLimitOrder:ae("settle_limit_order"),closeLimitOrder:ae("close_limit_order")};import{PublicKey as Nn}from"@solana/web3.js";var zr=h([S("instruction")]),Xr=h([S("instruction")]),Yr=h([n("rewardState"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardLastUpdateTime"),n("totalReward"),n("totalRewardEmissioned"),n("rewardClaimed"),n("rewardPerSecond"),D("accRewardPerShare"),u("rewardVault"),u("rewardMint"),u("rewardSender"),n("rewardType"),O(n(),15,"padding")]),Hr=h([n("state"),n("nonce"),u("lpVault"),u("rewardVault"),u(),u(),n(),n(),n("totalReward"),D("perShareReward"),n("lastSlot"),n("perSlotReward")]),Qr=h([n("state"),n("nonce"),u("lpVault"),u("rewardVaultA"),n("totalRewardA"),D("perShareRewardA"),n("perSlotRewardA"),S("option"),u("rewardVaultB"),G(7),n("totalRewardB"),D("perShareRewardB"),n("perSlotRewardB"),n("lastSlot"),u()]),Zr=h([n(),n("state"),n("nonce"),n("validRewardTokenNum"),D("rewardMultiplier"),n("rewardPeriodMax"),n("rewardPeriodMin"),n("rewardPeriodExtend"),u("lpMint"),u("lpVault"),O(Yr,5,"rewardInfos"),u("creator"),u(),O(n(),32,"padding")]),$r=new Proxy(Hr,{get(i,e,t){return e==="decode"?(...o)=>{let r=i.decode(...o);return E(F({},r),{version:3,rewardInfos:[{rewardVault:r.rewardVault,totalReward:r.totalReward,perSlotReward:r.perSlotReward,perShareReward:r.perShareReward}]})}:Reflect.get(i,e,t)}}),jr=new Proxy(Qr,{get(i,e,t){return e==="decode"?(...o)=>{let r=i.decode(...o);return E(F({},r),{version:5,rewardInfos:[{rewardVault:r.rewardVaultA,totalReward:r.totalRewardA,perSlotReward:r.perSlotRewardA,perShareReward:r.perShareRewardA},{rewardVault:r.rewardVaultB,totalReward:r.totalRewardB,perSlotReward:r.perSlotRewardB,perShareReward:r.perShareRewardB}]})}:Reflect.get(i,e,t)}}),Vo=new Proxy(Zr,{get(i,e,t){return e==="decode"?(...o)=>{let r=i.decode(...o);return E(F({},r),{version:6,rewardInfos:r.rewardInfos.map(a=>{var l;return E(F({},a),{rewardType:((l=Object.entries(It).find(s=>String(s[1])===a.rewardType.toString()))!=null?l:["Standard SPL"])[0]})})})}:Reflect.get(i,e,t)}}),Jr=h([n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),ea=h([S("instruction"),n("nonce"),O(Jr,5,"rewardTimeInfo")]),ta=h([S("instruction"),n("rewardReopenTime"),n("rewardEndTime"),n("rewardPerSecond")]),na=h([S("instruction"),n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),dg=h([n("state"),u("id"),u("owner"),n("deposited"),O(n(),1,"rewardDebts")]),Eo=h([n("state"),u("id"),u("owner"),n("deposited"),O(D(),1,"rewardDebts"),n(""),n("voteLockedBalance"),O(n(),15)]),pg=h([n("state"),u("id"),u("owner"),n("deposited"),O(n(),2,"rewardDebts")]),oa=h([n("state"),u("id"),u("owner"),n("deposited"),O(D(),2,"rewardDebts"),O(n(),17)]),ia=h([n(),n("state"),u("id"),u("owner"),n("deposited"),O(D(),5,"rewardDebts"),O(n(),16)]),ra=h([S("instruction"),n("amount")]),aa=h([u("mint"),u("grantAuthority"),n("baselineVoteWeightScaledFactor"),n("maxExtraLockupVoteWeightScaledFactor"),n("lockupSaturationSecs"),So("digitShift"),O(S(),7,"reserved1"),O(n(),7,"reserved2")]),sa=h([G(8),u("governanceProgramId"),u("realm"),u("realmGoverningTokenMint"),u("realmAuthority"),O(S(),32,"reserved1"),O(aa,4,"votingMints"),je("timeOffset"),S("bump"),O(S(),7,"reserved2"),O(n(),11,"reserved3")]),ua=h([je("startTime"),je("endTime"),S("kind"),O(S(),15,"reserved")]),ca=h([O(ua,1,"lockup"),n("amountDeposited_native"),n("amountInitiallyLockedNative"),ge("isUsed"),ge("allowClawback"),S("votingMintConfigIdx"),O(S(),29,"reserved")]),la=h([G(8),u("voterAuthority"),u("registrar"),O(ca,32,"deposits"),S("voterBump"),S("voterWweightRecordBump"),O(S(),94,"reserved")]);import{NATIVE_MINT as Tg}from"@solana/spl-token";var hg=X("Raydium_farm_config"),ma=new Nn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),da=new Nn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Ig=new Nn("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var It={"Standard SPL":0,"Option tokens":1},Do={[lo.toString()]:3,[mo.toString()]:4,[po.toString()]:5,[bn.toString()]:6,[Re.FARM_PROGRAM_ID_V3.toString()]:3,[Re.FARM_PROGRAM_ID_V4.toString()]:4,[Re.FARM_PROGRAM_ID_V5.toString()]:5,[Re.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as tP,SystemProgram as nP,SYSVAR_CLOCK_PUBKEY as oP,SYSVAR_RENT_PUBKEY as iP,TransactionInstruction as rP}from"@solana/web3.js";import sP from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as cP,createAssociatedTokenAccountIdempotentInstruction as lP,TOKEN_PROGRAM_ID as mP}from"@solana/spl-token";import Lg from"bn.js";var Gg=X("Raydium.farm.util");var TP=X("Raydium_farm_instruction"),hP={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 lA from"bn.js";import{PublicKey as fk}from"@solana/web3.js";import{AccountLayout as gk,MintLayout as Pk,NATIVE_MINT as Ak,TOKEN_PROGRAM_ID as kk}from"@solana/spl-token";import qo from"bn.js";var wa=new qo(25),ka=new qo(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as OA,TOKEN_PROGRAM_ID as NA}from"@solana/spl-token";import{PublicKey as FA,SystemProgram as vA,SYSVAR_RENT_PUBKEY as _A,TransactionInstruction as VA}from"@solana/web3.js";import XA from"bn.js";var Ta=h([S("instruction"),n("amountIn"),n("minAmountOut")]),ha=h([S("instruction"),n("maxAmountIn"),n("amountOut")]),xA=h([S("instruction"),S("nonce")]),Ia=h([S("instruction"),S("nonce"),n("startTime")]),Uo=h([n("status"),n("nonce"),n("maxOrder"),n("depth"),n("baseDecimal"),n("quoteDecimal"),n("state"),n("resetFlag"),n("minSize"),n("volMaxCutRatio"),n("amountWaveRatio"),n("baseLotSize"),n("quoteLotSize"),n("minPriceMultiplier"),n("maxPriceMultiplier"),n("systemDecimalValue"),n("minSeparateNumerator"),n("minSeparateDenominator"),n("tradeFeeNumerator"),n("tradeFeeDenominator"),n("pnlNumerator"),n("pnlDenominator"),n("swapFeeNumerator"),n("swapFeeDenominator"),n("baseNeedTakePnl"),n("quoteNeedTakePnl"),n("quoteTotalPnl"),n("baseTotalPnl"),n("poolOpenTime"),n("punishPcAmount"),n("punishCoinAmount"),n("orderbookToInitTime"),D("swapBaseInAmount"),D("swapQuoteOutAmount"),n("swapBase2QuoteFee"),D("swapQuoteInAmount"),D("swapBaseOutAmount"),n("swapQuote2BaseFee"),u("baseVault"),u("quoteVault"),u("baseMint"),u("quoteMint"),u("lpMint"),u("openOrders"),u("marketId"),u("marketProgramId"),u("targetOrders"),u("withdrawQueue"),u("lpVault"),u("owner"),n("lpReserve"),O(n(),3,"padding")]),CA=h([n("accountType"),n("status"),n("nonce"),n("maxOrder"),n("depth"),n("baseDecimal"),n("quoteDecimal"),n("state"),n("resetFlag"),n("minSize"),n("volMaxCutRatio"),n("amountWaveRatio"),n("baseLotSize"),n("quoteLotSize"),n("minPriceMultiplier"),n("maxPriceMultiplier"),n("systemDecimalsValue"),n("abortTradeFactor"),n("priceTickMultiplier"),n("priceTick"),n("minSeparateNumerator"),n("minSeparateDenominator"),n("tradeFeeNumerator"),n("tradeFeeDenominator"),n("pnlNumerator"),n("pnlDenominator"),n("swapFeeNumerator"),n("swapFeeDenominator"),n("baseNeedTakePnl"),n("quoteNeedTakePnl"),n("quoteTotalPnl"),n("baseTotalPnl"),n("poolOpenTime"),n("punishPcAmount"),n("punishCoinAmount"),n("orderbookToInitTime"),D("swapBaseInAmount"),D("swapQuoteOutAmount"),D("swapQuoteInAmount"),D("swapBaseOutAmount"),n("swapQuote2BaseFee"),n("swapBase2QuoteFee"),u("baseVault"),u("quoteVault"),u("baseMint"),u("quoteMint"),u("lpMint"),u("modelDataAccount"),u("openOrders"),u("marketId"),u("marketProgramId"),u("targetOrders"),u("owner"),O(n(),64,"padding")]),Ba=h([S("instruction"),n("baseAmountIn"),n("quoteAmountIn"),n("fixedSide"),n("otherAmountMin")]),Sa=h([S("instruction"),n("lpAmount"),n("baseAmountMin"),n("quoteAmountMin")]);var Ka=h([n("fee")]);var QA=X("Raydium_liquidity_instruction");var xa=5e4,Ca=h([n("x"),n("y"),n("price")]),JA=h([n("accountType"),n("status"),n("multiplier"),n("validDataCount"),O(Ca,xa,"DataElement")]);import{PublicKey as mw}from"@solana/web3.js";import pw from"decimal.js";import{TOKEN_PROGRAM_ID as yw}from"@solana/spl-token";import{PublicKey as ow}from"@solana/web3.js";var aw=X("Raydium_liquidity_serum");import Wk from"bn.js";import Uk from"decimal.js";import{TOKEN_PROGRAM_ID as qw}from"@solana/spl-token";import{PublicKey as Gw}from"@solana/web3.js";import Xw from"bn.js";import{SystemProgram as Cw,SYSVAR_RENT_PUBKEY as Rw,Transaction as Lw,TransactionInstruction as Ow}from"@solana/web3.js";import{createInitializeAccountInstruction as Mw,TOKEN_PROGRAM_ID as Fw}from"@solana/spl-token";function Ra(i="accountFlags"){let e=new zt(i);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var La=h([G(5),Ra("accountFlags"),u("ownAddress"),n("vaultSignerNonce"),u("baseMint"),u("quoteMint"),u("baseVault"),n("baseDepositsTotal"),n("baseFeesAccrued"),u("quoteVault"),n("quoteDepositsTotal"),n("quoteFeesAccrued"),n("quoteDustThreshold"),u("requestQueue"),u("eventQueue"),u("bids"),u("asks"),n("baseLotSize"),n("quoteLotSize"),n("feeRateBps"),n("referrerRebatesAccrued"),G(7)]);import{PublicKey as dK,SystemProgram as pK}from"@solana/web3.js";import{createTransferInstruction as yK,TOKEN_PROGRAM_ID as bK,TOKEN_2022_PROGRAM_ID as gK,createAssociatedTokenAccountIdempotentInstruction as PK,createSyncNativeInstruction as wK,createTransferCheckedInstruction as kK}from"@solana/spl-token";import gs from"bn.js";import IK from"decimal.js";var Go=h([G(8),S("bump"),ge("disableCreatePool"),ne("index"),n("tradeFeeRate"),n("protocolFeeRate"),n("fundFeeRate"),n("createPoolFee"),u("protocolOwner"),u("fundOwner"),n("creatorFeeRate"),n("creatorFeeShareRate"),O(n(),14)]),Fn=h([G(8),u("configId"),u("poolCreator"),u("vaultA"),u("vaultB"),u("mintLp"),u("mintA"),u("mintB"),u("mintProgramA"),u("mintProgramB"),u("observationId"),S("bump"),S("status"),S("lpDecimals"),S("mintDecimalA"),S("mintDecimalB"),n("lpAmount"),n("protocolFeesMintA"),n("protocolFeesMintB"),n("fundFeesMintA"),n("fundFeesMintB"),n("openTime"),n("epoch"),S("feeOn"),ge("enableCreatorFee"),O(S(),6),n("creatorFeesMintA"),n("creatorFeesMintB"),O(n(),28)]),$k=h([G(8),u("configId"),O(n(),30)]),jk=h([G(8),S("bump"),u("creator"),u("ammConfig"),n("shareRate"),O(n(),8)]);import{PublicKey as Bt,TransactionInstruction as xe,Keypair as Ha,SystemProgram as jt}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as St,TOKEN_2022_PROGRAM_ID as Dn,TOKEN_PROGRAM_ID as Le}from"@solana/spl-token";var Va=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),nT=Buffer.from("amm_config","utf8"),Ea=Buffer.from("pool","utf8"),Da=Buffer.from("pool_lp_mint","utf8"),Wa=Buffer.from("pool_vault","utf8"),qa=Buffer.from("observation","utf8"),Ua=Buffer.from("permission","utf8"),Ga=Buffer.from("support_mint","utf8"),za=Buffer.from("creator_fee_share","utf8");function it(i){return ee([Va],i)}function vn(i,e,t,o){return ee([Ea,e.toBuffer(),t.toBuffer(),o.toBuffer()],i)}function Xa(i,e){return ee([Da,e.toBuffer()],i)}function zo(i,e,t){return ee([Wa,e.toBuffer(),t.toBuffer()],i)}function rt(i,e){return ee([qa,e.toBuffer()],i)}function _n({poolId:i,programId:e,configId:t,mintA:o,mintB:r}){let a=it(e).publicKey,l=i||vn(e,t,o,r).publicKey,s=Xa(e,l).publicKey,c=zo(e,l,o).publicKey,p=zo(e,l,r).publicKey,m=rt(e,l).publicKey;return{poolId:l,configId:t,authority:a,lpMint:s,vaultA:c,vaultB:p,observationId:m}}var Ya=Buffer.from("locked_liquidity","utf8");function at(i,e){return ee([Ya,e.toBuffer()],i)}function Xo(i,e){return ee([Ua,e.toBuffer()],i)}function Vn(i,e){return ee([Ga,e.toBuffer()],i)}function En(i,e,t){return ee([za,e.toBuffer(),t.toBuffer()],i)}var Qa=X("Raydium_cpmm"),Ce={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])};function Yo(i,e,t,o,r,a,l,s,c,p,m,b,d,f,A,y,P,T,I,R,L){let K=h([n("amountMaxA"),n("amountMaxB"),n("openTime")]),x=vn(i,t,a,l).publicKey,B=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!r.equals(x),isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:Le,isSigner:!1,isWritable:!1},{pubkey:A,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:St,isSigner:!1,isWritable:!1},{pubkey:ro,isSigner:!1,isWritable:!1},{pubkey:Ee,isSigner:!1,isWritable:!1},...(L!=null?L:[]).map(N=>({pubkey:N,isSigner:!1,isWritable:!1}))],C=Buffer.alloc(K.span);return K.encode({amountMaxA:T,amountMaxB:I,openTime:R},C),new xe({keys:B,programId:i,data:Buffer.from([...Ce.initialize,...C])})}function Ho(i,e,t,o,r,a,l,s,c,p,m,b,d,f,A){let y=h([n("lpAmount"),n("amountMaxA"),n("amountMaxB")]),P=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:Le,isSigner:!1,isWritable:!1},{pubkey:Dn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!0}],T=Buffer.alloc(y.span);return Qa.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:f.toString(),amountMaxB:A.toString()}),y.encode({lpAmount:d,amountMaxA:f,amountMaxB:A},T),new xe({keys:P,programId:i,data:Buffer.from([...Ce.deposit,...T])})}function Qo(i,e,t,o,r,a,l,s,c,p,m,b,d,f,A){let y=h([n("lpAmount"),n("amountMinA"),n("amountMinB")]),P=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:Le,isSigner:!1,isWritable:!1},{pubkey:Dn,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:dt,isSigner:!1,isWritable:!1}],T=Buffer.alloc(y.span);return y.encode({lpAmount:d,amountMinA:f,amountMinB:A},T),new xe({keys:P,programId:i,data:Buffer.from([...Ce.withdraw,...T])})}function Jt(i,e,t,o,r,a,l,s,c,p,m,b,d,f,A,y){let P=h([n("amountIn"),n("amounOutMin")]),T=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!0}],I=Buffer.alloc(P.span);return P.encode({amountIn:A,amounOutMin:y},I),new xe({keys:T,programId:i,data:Buffer.from([...Ce.swapBaseInput,...I])})}function Zo(i,e,t,o,r,a,l,s,c,p,m,b,d,f,A,y){let P=h([n("amountInMax"),n("amountOut")]),T=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!0}],I=Buffer.alloc(P.span);return P.encode({amountInMax:A,amountOut:y},I),new xe({keys:T,programId:i,data:Buffer.from([...Ce.swapBaseOutput,...I])})}async function $o(i){var P;let{ownerInfo:e,poolInfo:t,poolKeys:o,feeNftOwner:r,getEphemeralSigners:a}=i,l=[],[s,c]=[new Bt(t.id),new Bt(t.lpMint.address)],p;if(a)p=new Bt((await a(1))[0]);else{let T=Ha.generate();l.push(T),p=T.publicKey}let{publicKey:m}=te(r,p,Le),{publicKey:b}=Qt(p),{publicKey:d}=at(i.lockProgram,p),{publicKey:f}=te(e.wallet,c,Le),{publicKey:A}=te(i.lockAuthProgram,c,Le),y=Za({programId:i.lockProgram,auth:i.lockAuthProgram,payer:e.feePayer,liquidityOwner:e.wallet,nftOwner:r,nftMint:p,nftAccount:m,poolId:s,lockPda:d,mintLp:c,userLpVault:f,lockLpVault:A,poolVaultA:new Bt(o.vault.A),poolVaultB:new Bt(o.vault.B),metadataAccount:b,lpAmount:i.lpAmount,withMetadata:(P=i.withMetadata)!=null?P:!0});return{address:{nftMint:p,nftAccount:m,metadataAccount:b,lockPda:d,userLpVault:f,lockLpVault:A},instructions:[y],signers:l,instructionTypes:[H.CpmmLockLp],lookupTableAddress:[]}}function Za({programId:i,auth:e,payer:t,liquidityOwner:o,nftOwner:r,nftMint:a,nftAccount:l,poolId:s,lockPda:c,mintLp:p,userLpVault:m,lockLpVault:b,poolVaultA:d,poolVaultB:f,metadataAccount:A,lpAmount:y,withMetadata:P}){let T=[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!0,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:A,isSigner:!1,isWritable:!0},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:jt.programId,isSigner:!1,isWritable:!1},{pubkey:Le,isSigner:!1,isWritable:!1},{pubkey:St,isSigner:!1,isWritable:!1},{pubkey:De,isSigner:!1,isWritable:!1}],I=h([n("lpAmount"),ge("withMetadata")]),R=Buffer.alloc(I.span);I.encode({lpAmount:y,withMetadata:P},R);let L=Buffer.from([...Ce.lockCpLiquidity,...R]);return new xe({keys:T,programId:i,data:L})}function Wn({programId:i,nftOwner:e,auth:t,nftAccount:o,lockPda:r,poolId:a,mintLp:l,userVaultA:s,userVaultB:c,poolVaultA:p,poolVaultB:m,mintA:b,mintB:d,lockLpVault:f,lpFeeAmount:A,cpmmProgram:y,cpmmAuthProgram:P}){let T=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:y!=null?y:We,isSigner:!1,isWritable:!1},{pubkey:P!=null?P:Po,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:Le,isSigner:!1,isWritable:!1},{pubkey:Dn,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1}],I=h([n("lpFeeAmount")]),R=Buffer.alloc(I.span);I.encode({lpFeeAmount:A},R);let L=Buffer.from([...Ce.collectCpFee,...R]);return new xe({keys:T,programId:i,data:L})}function qn(i,e,t,o,r,a,l,s,c,p,m,b,d){let f=En(i,e,r).publicKey,A=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:St,isSigner:!1,isWritable:!1},{pubkey:jt.programId,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1}];return new xe({keys:A,programId:i,data:Ce.collectCreatorFee})}function jo(i,e,t,o,r,a,l,s,c,p,m,b,d,f){let A=En(i,t,a).publicKey,y=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:St,isSigner:!1,isWritable:!1},{pubkey:jt.programId,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:A,isSigner:!1,isWritable:!1}];return new xe({keys:y,programId:i,data:Ce.collectCreatorFeePermissionless})}function Jo(i,e,t,o,r,a,l,s,c,p,m,b,d,f,A,y,P,T,I,R,L,K,x,B){let C=h([n("amountA"),n("amountB"),n("openTime"),S("feeOn")]),N=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:A,isSigner:!1,isWritable:!0},{pubkey:T,isSigner:!1,isWritable:!0},{pubkey:I,isSigner:!1,isWritable:!0},{pubkey:Le,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:P,isSigner:!1,isWritable:!1},{pubkey:St,isSigner:!1,isWritable:!1},{pubkey:jt.programId,isSigner:!1,isWritable:!1},...(B!=null?B:[]).map(W=>({pubkey:W,isSigner:!1,isWritable:!1}))],M=Buffer.alloc(C.span);return C.encode({amountA:R,amountB:L,openTime:K,feeOn:x},M),new xe({keys:N,programId:i,data:Buffer.from([...Ce.initializeWithPermission,...M])})}import ei from"bn.js";import en from"bn.js";function Un(i,e){if(e.isZero())throw Error("divisor is zero");return i.mod(e)}function $a(i,e){if(e.isZero())throw Error("rhs is zero");let t=i.div(e);return Un(i,e).gt(Kt)&&(t=t.add(new en(1))),[t,e]}var Kt=new en(0),xt=class{static swapBaseInputWithoutFees(e,t,o){let r=e.mul(o),a=t.add(e);return r.div(a)}static swapBaseOutputWithoutFees(e,t,o){let r=t.mul(e),a=o.sub(e),[l]=$a(r,a);return l}static lpTokensToTradingTokens(e,t,o,r,a){let l=e.mul(o).div(t),s=e.mul(r).div(t);if(a===0)return{tokenAmount0:l,tokenAmount1:s};if(a===1)return Un(e.mul(o),t).gt(Kt)&&l.gt(Kt)&&(l=l.add(new en(1))),Un(e.mul(r),t).gt(Kt)&&s.gt(Kt)&&(s=s.add(new en(1))),{tokenAmount0:l,tokenAmount1:s};throw Error("roundDirection value error")}};import ja from"bn.js";var ye=class{static tradingFee(e,t){return nn(e,t,Se)}static protocolFee(e,t){return tn(e,t,Se)}static fundFee(e,t){return tn(e,t,Se)}static creatorFee(e,t){return nn(e,t,Se)}static splitCreatorFee(e,t,o){return tn(e,o,t.add(o))}static calculatePreFeeAmount(e,t){if(t.isZero())return e;let o=e.mul(Se),r=Se.sub(t);return o.add(r).sub(new ja(1)).div(r)}};var Ct=class{static validate_supply(e,t){if(e.isZero())throw Error("tokenAmount0 is zero");if(t.isZero())throw Error("tokenAmount1 is zero")}static swapBaseInput(e,t,o,r,a,l,s,c){let p=new ei(0),m=ye.tradingFee(e,r),b;c?(p=ye.creatorFee(e,a),b=e.sub(m).sub(p)):b=e.sub(m);let d=ye.protocolFee(m,l),f=ye.protocolFee(m,s),A=xt.swapBaseInputWithoutFees(b,t,o),y;return c?y=A:(p=ye.creatorFee(A,a),y=A.sub(p)),{newInputVaultAmount:t.add(b),newOutputVaultAmount:o.sub(A),inputAmount:e,outputAmount:y,tradeFee:m,protocolFee:d,fundFee:f,creatorFee:p}}static swapBaseOutput(e,t,o,r,a,l,s,c){let p,m=new ei(0),b;if(c)b=e;else{let P=ye.calculatePreFeeAmount(e,a);m=P.sub(e),b=P}let d=xt.swapBaseOutputWithoutFees(b,t,o),f;if(c){let P=ye.calculatePreFeeAmount(d,r.add(a)),T=P.sub(d);m=ye.splitCreatorFee(T,r,a),p=T.sub(m),f=P}else{let P=ye.calculatePreFeeAmount(d,r);p=P.sub(d),f=P}let A=ye.protocolFee(p,l),y=ye.fundFee(p,s);return{newInputVaultAmount:t.add(d),newOutputVaultAmount:o.sub(b),inputAmount:f,outputAmount:e,tradeFee:p,protocolFee:A,fundFee:y,creatorFee:m}}};import{ASSOCIATED_TOKEN_PROGRAM_ID as uh,TOKEN_2022_PROGRAM_ID as ch,TOKEN_PROGRAM_ID as lh}from"@solana/spl-token";import{SystemProgram as fh,TransactionInstruction as yh}from"@solana/web3.js";import Ja from"bn.js";var YT=Buffer.from("vault_auth_seed","utf8"),HT=Buffer.from("global_config","utf8"),QT=Buffer.from("pool_vesting","utf8"),ZT=Buffer.from("platform_config","utf8"),$T=Buffer.from("platform_fee_vault_auth_seed","utf8"),jT=Buffer.from("creator_fee_vault_auth_seed","utf8"),JT=Buffer.from("platform_global_access","utf8"),eh=Buffer.from("platform_allow_config","utf8"),th=Buffer.from("platform_curve_rule","utf8");var Ph={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]),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]),createPlatformCurveRule:Buffer.from([148,71,180,136,122,144,59,21]),updatePlatformCurveRule:Buffer.from([90,100,206,196,54,117,120,139]),removePlatformCurveRule:Buffer.from([236,77,154,138,32,145,127,219]),closePlatformCurveRule:Buffer.from([194,114,82,45,136,88,169,159])};var Ah=new Ja("18446744073709551615");var es=h([n(),n("epoch"),S("curveType"),ne("index"),n("migrateFee"),n("tradeFeeRate"),n("maxShareFeeRate"),n("minSupplyA"),n("maxLockRate"),n("minSellRateA"),n("minMigrateRateA"),n("minFundRaisingB"),u("mintB"),u("protocolFeeOwner"),u("migrateFeeOwner"),u("migrateToAmmWallet"),u("migrateToCpmmWallet"),O(n(),16)]),ts=h([n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod"),n("startTime"),n("totalAllocatedShare")]),ns=h([n(),n("epoch"),S("bump"),S("status"),S("mintDecimalsA"),S("mintDecimalsB"),S("migrateType"),n("supply"),n("totalSellA"),n("virtualA"),n("virtualB"),n("realA"),n("realB"),n("totalFundRaisingB"),n("protocolFee"),n("platformFee"),n("migrateFee"),ts.replicate("vestingSchedule"),u("configId"),u("platformId"),u("mintA"),u("mintB"),u("vaultA"),u("vaultB"),u("creator"),S("mintProgramFlag"),S("cpmmCreatorFeeOn"),n("platformVestingShare"),O(S(),54)]),hh=h([n(),n("epoch"),u("poolId"),u("beneficiary"),n("claimedAmount"),n("tokenShareAmount"),O(n(),8)]),os=h([S("migrateType"),S("migrateCpmmFeeOn"),n("supply"),n("totalSellA"),n("totalFundRaisingB"),n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod")]),Ih=h([n("epoch"),S("index"),u("configId"),os.replicate("bondingCurveParam"),O(n(),50)]),ti=h([n(),n("epoch"),u("platformClaimFeeWallet"),u("platformLockNftWallet"),n("platformScale"),n("creatorScale"),n("burnScale"),n("feeRate"),O(S(),64,"name"),O(S(),256,"web"),O(S(),256,"img"),u("cpConfigId"),n("creatorFeeRate"),u("transferFeeExtensionAuth"),u("platformVestingWallet"),n("platformVestingScale"),u("platformCpCreator"),S("restrictGlobalConfig"),S("restrictCurveParam"),u("curveRuleManager"),O(S(),78)]),is=h([S("field"),S("op"),D("value")]),rs=h([ne("groupId"),n("epoch"),Sn(is,"constraints")]),as=h([n(),S("bump"),S("version"),u("platformId"),u("configId"),n("epoch"),O(n(),8),Sn(rs,"groups")]);import{TOKEN_2022_PROGRAM_ID as Kh,TOKEN_PROGRAM_ID as xh}from"@solana/spl-token";import ss from"bn.js";var Dh=new ss(1e6);import Gh from"bn.js";import Xh from"decimal.js";import II from"bn.js";import SI from"decimal.js";import jh from"bn.js";import eI from"decimal.js";import lI from"bn.js";import dI from"decimal.js";import ii from"bn.js";import Gn from"decimal.js";var on=class{static _multipler(e){return new Gn(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:o}){return new Gn(e.toString()).div(this._Q64).mul(this._multipler(t)).div(this._multipler(o))}static getPriceX64({price:e,decimalA:t,decimalB:o}){let r=e.mul(this._multipler(o)).div(this._multipler(t));return new ii(r.mul(this._Q64).toFixed(0))}};on._Q64=new Gn(new ii(1).shln(64).toString());import{NATIVE_MINT as WB,TOKEN_2022_PROGRAM_ID as qB,TOKEN_PROGRAM_ID as UB,createAssociatedTokenAccountIdempotentInstruction as zB,createSyncNativeInstruction as XB,getTransferFeeConfig as YB,unpackMint as HB}from"@solana/spl-token";import ie from"bn.js";import{PublicKey as fs,SystemProgram as $B}from"@solana/web3.js";import iS from"decimal.js";var rS={initPriceX64:new ie("515752397214619"),supply:new ie(1e15),totalSellA:new ie(7931e11),totalFundRaisingB:new ie(85e9),totalFundRaisingBUSD:new ie(125e8),totalLockedAmount:new ie("0"),cliffPeriod:new ie("0"),unlockPeriod:new ie("0"),decimals:6,virtualA:new ie("1073471847374405"),virtualB:new ie("30050573465"),realA:new ie(0),realB:new ie(0),protocolFee:new ie(0),platformId:new fs("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new ie(0),cliffPeriod:new ie(0),unlockPeriod:new ie(0),startTime:new ie(0),totalAllocatedShare:new ie(0)}},aS=new ie(1e4);var ys={[fo.toBase58()]:3};var bs=h([G(5),G(8),u("ownAddress"),n("vaultSignerNonce"),u("baseMint"),u("quoteMint"),u("baseVault"),n("baseDepositsTotal"),n("baseFeesAccrued"),u("quoteVault"),n("quoteDepositsTotal"),n("quoteFeesAccrued"),n("quoteDustThreshold"),u("requestQueue"),u("eventQueue"),u("bids"),u("asks"),n("baseLotSize"),n("quoteLotSize"),n("feeRateBps"),n("referrerRebatesAccrued"),G(7)]);import{PublicKey as RS}from"@solana/web3.js";var FS=X("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as GS,TOKEN_2022_PROGRAM_ID as zS,TOKEN_PROGRAM_ID as XS}from"@solana/spl-token";import{PublicKey as HS,SystemProgram as QS,TransactionInstruction as ZS}from"@solana/web3.js";import jS from"bn.js";var ex=new gs(0);import{PublicKey as Ps,Transaction as zn,TransactionInstruction as As}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ws}from"@solana/spl-token";import ri from"bn.js";var ue=class extends de{static getPdaPoolId(e,t){return ee([ue.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,o,r){return ee([ue.SEED_CONFIG.owner.id,t.toBuffer(),o.toBuffer(),Buffer.from(new ri(r).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:o,wallet:r,chainTime:a}){if(o.length===0)return[];let l=o.map(m=>ue.getPdaPoolId(t,m).publicKey),s=[];for(let m=0;m<ue.VERSION_PROJECT.length;m++)s.push(...l.map(b=>ue.getPdaOwnerId(t,b,r,m).publicKey));let c=await Be(e,[...l,...s]),p=[];for(let m=0;m<c.length;m++){let b=Math.floor(m/o.length),d=m%o.length,f=l[d],A=s[m],y=c[d],P=c[o.length+m];if(!(y&&P)||y.data.length!==ue.POOL_LAYOUT.span||P.data.length!==ue.OWNER_LAYOUT.span)continue;let T=ue.POOL_LAYOUT.decode(y.data),I=ue.OWNER_LAYOUT.decode(P.data),R=T.openTime.toNumber(),L=T.endTime.toNumber(),K=I.tokenInfo.map(C=>C.debtAmount.gt(new ri(0))).filter(C=>!C).length!==3,x=a>R&&a<L&&T.status===1,B=K&&x;p.push({programId:t,poolId:f,ammId:T.ammId,ownerAccountId:A,snapshotLpAmount:I.lpAmount,project:ue.VERSION_PROJECT[b],openTime:R,endTime:L,canClaim:B,canClaimErrorType:K?x?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:T.tokenInfo.map((C,N)=>({mintAddress:C.mintAddress,mintVault:C.mintVault,mintDecimals:C.mintDecimals,perLpLoss:C.perLpLoss,debtAmount:I.tokenInfo[N].debtAmount.add(I.tokenInfo[N].claimedAmount)}))})}return p}async makeClaimTransaction({poolInfo:e,ownerInfo:t,feePayer:o}){t.wallet||this.scope.checkOwner();let r=this.createTxBuilder(o),a=t.wallet||this.scope.ownerPubKey,l=[];for(let p of e.tokenInfo){let{account:m,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({mint:p.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:p.mintAddress.equals(se.WSOL.mint),createInfo:{payer:a,amount:0},skipCloseAccount:!p.mintAddress.equals(se.WSOL.mint),associatedOnly:p.mintAddress.equals(se.WSOL.mint)?!1:t.associatedOnly});b&&r.addInstruction(b),l.push(m)}r.addInstruction({instructions:[ue.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:a,ownerPda:e.ownerAccountId,claimAddress:l}})]});let{transaction:s,signers:c}=r.build();return[{transaction:s,signer:c}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:o}){let r=this.createTxBuilder(o),a=t.wallet||this.scope.ownerPubKey,l={};for(let m of e){let b=[];for(let d of m.tokenInfo){let{account:f,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({mint:d.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:d.mintAddress.equals(se.WSOL.mint),createInfo:{payer:a,amount:0},skipCloseAccount:!d.mintAddress.equals(se.WSOL.mint),associatedOnly:d.mintAddress.equals(se.WSOL.mint)?!1:t.associatedOnly});A&&r.addInstruction(A),f&&(l[d.mintAddress.toString()]=f,b.push(f))}r.addInstruction({instructions:[ue.makeClaimInstruction({programId:m.programId,poolInfo:m,ownerInfo:{wallet:a,ownerPda:m.ownerAccountId,claimAddress:b}})]})}let{transaction:s,signers:c}=r.build(),p=r.allInstructions;return un(p,[a,...c.map(m=>m.publicKey)])?[{transaction:s,signer:c}]:[{transaction:new zn().add(...p.slice(0,r.AllTxData.instructions.length-1)),signer:c},{transaction:new zn().add(...p.slice(r.AllTxData.instructions.length-1)),signer:[]},{transaction:new zn().add(...r.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:o}){let r=h([]),a=[{pubkey:o.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:o.ownerPda,isSigner:!1,isWritable:!0},...o.claimAddress.map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:c})=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:ws,isSigner:!1,isWritable:!1}],l=Buffer.alloc(r.span);r.encode({},l);let s=Buffer.from([10,66,208,184,161,6,191,98,...l]);return new As({keys:a,programId:e,data:s})}},he=ue;he.CLAIMED_NUM=3,he.POOL_LAYOUT=h([G(8),S("bump"),S("status"),n("openTime"),n("endTime"),u("ammId"),O(h([S("mintDecimals"),u("mintAddress"),u("mintVault"),n("perLpLoss"),n("totalClaimedAmount")]),ue.CLAIMED_NUM,"tokenInfo"),O(n(),10,"padding")]),he.OWNER_LAYOUT=h([G(8),S("bump"),S("version"),u("poolId"),u("owner"),n("lpAmount"),O(h([u("mintAddress"),n("debtAmount"),n("claimedAmount")]),ue.CLAIMED_NUM,"tokenInfo"),O(n(),4,"padding")]),he.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Ps(e)),he.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},he.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as gx}from"@solana/web3.js";import{getTransferFeeConfig as Ax,MintLayout as wx,TOKEN_2022_PROGRAM_ID as kx,TOKEN_PROGRAM_ID as Tx,unpackMint as hx}from"@solana/spl-token";var QC=new Fe(2),ZC=new Fe(3),$C=new Fe(5),ks=new Fe(10),jC=new Fe(100),JC=new Fe(1e3),eR=new Fe(1e4);function nn(i,e,t){return i.mul(e).add(t).sub(new Fe(1)).div(t)}function tn(i,e,t){return i.mul(e).div(t)}var fR=X("Raydium_amount"),yR=ft(Ts);import $ from"bn.js";import Ae from"decimal.js";var rn=class extends de{constructor(e){super(e)}async load(){this.checkDisabled()}async getCpmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async getRpcPoolInfo(e,t){return(await this.getRpcPoolInfos([e],t))[e]}async getRpcPoolInfos(e,t){let o=await Pe(this.scope.connection,e.map(b=>({pubkey:new g(b)}))),r={},a=new Set,l=[];for(let b=0;b<e.length;b++){let d=o[b];if(d.accountInfo===null)throw Error("fetch pool info error: "+String(e[b]));let f=Fn.decode(d.accountInfo.data);r[String(e[b])]=E(F({},f),{programId:d.accountInfo.owner}),a.add(String(f.configId)),l.push(f.vaultA,f.vaultB)}let s={};if(t){let b=[...a],d=await Pe(this.scope.connection,b.map(f=>({pubkey:new g(f)})));for(let f=0;f<b.length;f++){let A=d[f].accountInfo;if(A===null)throw Error("fetch pool config error: "+b[f]);s[b[f]]=Go.decode(A.data)}}let c={},p=await Pe(this.scope.connection,l.map(b=>({pubkey:new g(b)})));for(let b=0;b<l.length;b++){let d=p[b].accountInfo;if(d===null)throw Error("fetch vault info error: "+l[b]);c[String(l[b])]=new $(hs.decode(d.data).amount.toString())}let m={};for(let[b,d]of Object.entries(r)){let f=c[d.vaultA.toString()].sub(d.protocolFeesMintA).sub(d.fundFeesMintA).sub(d.creatorFeesMintA),A=c[d.vaultB.toString()].sub(d.protocolFeesMintB).sub(d.fundFeesMintB).sub(d.creatorFeesMintB);m[b]=E(F({},d),{baseReserve:f,quoteReserve:A,vaultAAmount:c[d.vaultA.toString()],vaultBAmount:c[d.vaultB.toString()],configInfo:s[d.configId.toString()],poolPrice:new Ae(A.toString()).div(new Ae(10).pow(d.mintDecimalB)).div(new Ae(f.toString()).div(new Ae(10).pow(d.mintDecimalA)))})}return m}toComputePoolInfos({pools:e,mintInfos:t}){return Object.keys(e).reduce((o,r)=>{var c,p,m,b;let a=e[r],[l,s]=[a.mintA.toBase58(),a.mintB.toBase58()];return E(F({},o),{[r]:E(F({},a),{id:new g(r),configInfo:a.configInfo,version:7,authority:it(a.programId).publicKey,mintA:Ke({address:l,decimals:a.mintDecimalA,programId:a.mintProgramA.toBase58(),extensions:{feeConfig:(c=t[l])!=null&&c.feeConfig?Ge((p=t[l])==null?void 0:p.feeConfig):void 0}}),mintB:Ke({address:s,decimals:a.mintDecimalB,programId:a.mintProgramB.toBase58(),extensions:{feeConfig:(m=t[s])!=null&&m.feeConfig?Ge((b=t[s])==null?void 0:b.feeConfig):void 0}})})})},{})}async getPoolInfoFromRpc(e){let t=await this.getRpcPoolInfo(e,!0),o=await _t({connection:this.scope.connection,mints:[t.mintA,t.mintB]}),r=Ke({address:t.mintA.toBase58(),decimals:t.mintDecimalA,programId:t.mintProgramA.toBase58(),extensions:{feeConfig:o[t.mintA.toBase58()].feeConfig?Ge(o[t.mintA.toBase58()].feeConfig):void 0}}),a=Ke({address:t.mintB.toBase58(),decimals:t.mintDecimalB,programId:t.mintProgramB.toBase58(),extensions:{feeConfig:o[t.mintB.toBase58()].feeConfig?Ge(o[t.mintB.toBase58()].feeConfig):void 0}}),l=Ke({address:t.mintLp.toBase58(),decimals:t.lpDecimals,programId:pe.toBase58()}),s={id:t.configId.toBase58(),index:t.configInfo.index,protocolFeeRate:t.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:t.configInfo.tradeFeeRate.toNumber(),fundFeeRate:t.configInfo.fundFeeRate.toNumber(),createPoolFee:t.configInfo.createPoolFee.toString()},c={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};return{poolInfo:{programId:t.programId.toBase58(),id:e,type:"Standard",lpMint:l,lpPrice:0,lpAmount:t.lpAmount.toNumber(),config:s,mintA:r,mintB:a,rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:t.poolPrice.toNumber(),mintAmountA:new Ae(t.vaultAAmount.toString()).div(10**r.decimals).toNumber(),mintAmountB:new Ae(t.vaultBAmount.toString()).div(10**a.decimals).toNumber(),feeRate:t.configInfo.tradeFeeRate.toNumber(),openTime:t.openTime.toString(),tvl:0,burnPercent:0,day:c,week:c,month:c,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,feeOn:"",hasDynamicFee:!1,launchMigratePool:!1,tips:[]},poolKeys:{programId:t.programId.toBase58(),id:e,mintA:r,mintB:a,openTime:t.openTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},authority:it(t.programId).publicKey.toBase58(),mintLp:l,config:s,observationId:rt(t.programId,new g(e)).publicKey.toBase58()},rpcData:t,computePoolInfo:E(F({},t),{id:new g(e),configInfo:t.configInfo,version:7,authority:it(t.programId).publicKey,mintA:r,mintB:a})}}async createPool(y){var P=y,{poolId:e,programId:t,poolFeeAccount:o,startTime:r,ownerInfo:a,associatedOnly:l=!1,checkCreateATAOwner:s=!1,txVersion:c,feeConfig:p,computeBudgetConfig:m,txTipConfig:b,feePayer:d,addSupportMintExt:f}=P,A=fe(P,["poolId","programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","feeConfig","computeBudgetConfig","txTipConfig","feePayer","addSupportMintExt"]);var le,ve,ct;let T=a.feePayer||((le=this.scope.owner)==null?void 0:le.publicKey),I=new $(new g(A.mintA.address).toBuffer()).lte(new $(new g(A.mintB.address).toBuffer())),[R,L]=I?[A.mintA,A.mintB]:[A.mintB,A.mintA],[K,x]=I?[A.mintAAmount,A.mintBAmount]:[A.mintBAmount,A.mintAAmount],B=a.useSOLBalance&&R.address===st.toBase58(),C=a.useSOLBalance&&L.address===st.toBase58(),[N,M]=[new g(R.address),new g(L.address)],W=this.createTxBuilder(d),{account:v,instructionParams:_}=await this.scope.account.getOrCreateTokenAccount({mint:N,tokenProgram:R.programId,owner:this.scope.ownerPubKey,createInfo:B?{payer:T,amount:K}:void 0,notUseTokenAccount:B,skipCloseAccount:!B,associatedOnly:B?!1:l,checkCreateATAOwner:s});W.addInstruction(_||{});let{account:z,instructionParams:q}=await this.scope.account.getOrCreateTokenAccount({mint:new g(L.address),tokenProgram:L.programId,owner:this.scope.ownerPubKey,createInfo:C?{payer:T,amount:x}:void 0,notUseTokenAccount:C,skipCloseAccount:!C,associatedOnly:C?!1:l,checkCreateATAOwner:s});if(W.addInstruction(q||{}),v===void 0||z===void 0)throw Error(`you don't has some token account, userVaultA: ${v==null?void 0:v.toBase58()}, userVaultB: ${z==null?void 0:z.toBase58()}`);let U=_n({poolId:e,programId:t,configId:new g(p.id),mintA:N,mintB:M}),Q=[],ce=[];return f&&(R.programId===ai.toBase58()&&ce.push(Vn(t,new g(R.address)).publicKey),L.programId===ai.toBase58()&&ce.push(Vn(t,new g(L.address)).publicKey),(await this.scope.connection.getMultipleAccountsInfo(ce)).forEach((we,an)=>{we&&Q.push(ce[an])})),W.addInstruction({instructions:[Yo(t,this.scope.ownerPubKey,new g(p.id),U.authority,U.poolId,N,M,U.lpMint,v,z,te(this.scope.ownerPubKey,U.lpMint).publicKey,U.vaultA,U.vaultB,o,new g((ve=R.programId)!=null?ve:pe),new g((ct=L.programId)!=null?ct:pe),U.observationId,K,x,r,Q)],instructionTypes:[H.CpmmCreatePool]}),W.addCustomComputeBudget(m),W.addTipInstruction(b),W.versionBuild({txVersion:c,extInfo:{address:E(F({},U),{mintA:R,mintB:L,programId:t,poolFeeAccount:o,feeConfig:p})}})}async addLiquidity(e){let{poolInfo:t,poolKeys:o,inputAmount:r,baseIn:a,slippage:l,computeResult:s,computeBudgetConfig:c,txTipConfig:p,config:m,txVersion:b,feePayer:d}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),r.isZero()&&this.logAndCreateError("amounts must greater than zero","amountInA",{amountInA:r.toString()});let{account:f}=this.scope,{bypassAssociatedCheck:A,checkCreateATAOwner:y}=F({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},m),P=s?void 0:await this.getRpcPoolInfo(t.id),{liquidity:T,inputAmountFee:I,anotherAmount:R}=s||this.computePairAmount({poolInfo:E(F({},t),{lpAmount:new Ae(P.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),baseReserve:P.baseReserve,quoteReserve:P.quoteReserve,slippage:new be(0),baseIn:a,epochInfo:await this.scope.fetchEpochInfo(),amount:new Ae(r.toString()).div(10**(a?t.mintA.decimals:t.mintB.decimals))}),L=R.amount,K=t.mintA.address===st.toString(),x=t.mintB.address===st.toString(),B=this.createTxBuilder(d),[C,N]=[new g(t.mintA.address),new g(t.mintB.address)],{account:M,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new g(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:K||(a?r:L).isZero()?{payer:this.scope.ownerPubKey,amount:a?r:L}:void 0,skipCloseAccount:!K,notUseTokenAccount:K,associatedOnly:!1,checkCreateATAOwner:y});B.addInstruction(W||{});let{account:v,instructionParams:_}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new g(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:x||(a?L:r).isZero()?{payer:this.scope.ownerPubKey,amount:a?L:r}:void 0,skipCloseAccount:!x,notUseTokenAccount:x,associatedOnly:!1,checkCreateATAOwner:y});B.addInstruction(_||{}),!M&&!v&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",f.tokenAccounts);let z=await f.getCreatedTokenAccount({mint:new g(t.lpMint.address)}),le=await f.handleTokenAccount({side:"out",amount:0,mint:new g(t.lpMint.address),tokenAccount:z,bypassAssociatedCheck:A,checkCreateATAOwner:y}),{tokenAccount:q}=le,U=fe(le,["tokenAccount"]);B.addInstruction(U);let Q=o!=null?o:await this.getCpmmPoolKeys(t.id),ce=new be(new $(1)).sub(l);return B.addInstruction({instructions:[Ho(new g(t.programId),this.scope.ownerPubKey,new g(Q.authority),new g(t.id),q,M,v,new g(Q.vault.A),new g(Q.vault.B),C,N,new g(t.lpMint.address),s?s==null?void 0:s.liquidity:ce.mul(T).quotient,a?I.amount:L,a?L:I.amount)],instructionTypes:[H.CpmmAddLiquidity],lookupTableAddress:Q.lookupTableAccount?[Q.lookupTableAccount]:[]}),B.addCustomComputeBudget(c),B.addTipInstruction(p),B.versionBuild({txVersion:b,lookupTableAddress:Q.lookupTableAccount?[Q.lookupTableAccount]:void 0})}async withdrawLiquidity(e){var U,Q;let{poolInfo:t,poolKeys:o,lpAmount:r,slippage:a,computeBudgetConfig:l,txTipConfig:s,txVersion:c,feePayer:p,closeWsol:m=!0}=e;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region");let b=new be(new $(1)).sub(a),d=await this.getRpcPoolInfo(t.id),[f,A]=[b.mul(r.mul(d.baseReserve).div(d.lpAmount)).quotient,b.mul(r.mul(d.quoteReserve).div(d.lpAmount)).quotient],y=await this.scope.fetchEpochInfo(),[P,T]=[Me(f,t.mintA.extensions.feeConfig,y,!1),Me(A,t.mintB.extensions.feeConfig,y,!1)],{account:I}=this.scope,R=this.createTxBuilder(p),[L,K]=[new g(t.mintA.address),new g(t.mintB.address)],x=L.equals(re),B=K.equals(re),C,N,{account:M,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new g(t.mintA.address),notUseTokenAccount:x,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(x&&m),associatedOnly:!x,checkCreateATAOwner:!1});C=M,W&&R.addInstruction(W);let{account:v,instructionParams:_}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new g(t.mintB.address),notUseTokenAccount:B,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(B&&m),associatedOnly:!B,checkCreateATAOwner:!1});N=v,_&&R.addInstruction(_),(!C||!N)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",I.tokenAccounts);let z=await I.getCreatedTokenAccount({mint:new g(t.lpMint.address)});z||this.logAndCreateError("cannot found lp token account","tokenAccounts",I.tokenAccounts);let q=o!=null?o:await this.getCpmmPoolKeys(t.id);return R.addInstruction({instructions:[Qo(new g(t.programId),this.scope.ownerPubKey,new g(q.authority),new g(t.id),z,C,N,new g(q.vault.A),new g(q.vault.B),L,K,new g(t.lpMint.address),r,f.sub((U=P.fee)!=null?U:new $(0)),A.sub((Q=T.fee)!=null?Q:new $(0)))],instructionTypes:[H.CpmmWithdrawLiquidity],lookupTableAddress:q.lookupTableAccount?[q.lookupTableAccount]:[]}),R.addCustomComputeBudget(l),R.addTipInstruction(s),R.versionBuild({txVersion:c,lookupTableAddress:q.lookupTableAccount?[q.lookupTableAccount]:void 0})}async swap(e){var W,v,_,z,q,U;let{poolInfo:t,poolKeys:o,baseIn:r,fixedOut:a,inputAmount:l,swapResult:s,slippage:c=0,config:p,computeBudgetConfig:m,txTipConfig:b,txVersion:d,feePayer:f}=e,{bypassAssociatedCheck:A,checkCreateATAOwner:y,associatedOnly:P}=F({bypassAssociatedCheck:!1,checkCreateATAOwner:!1,associatedOnly:!0},p),T=this.createTxBuilder(f),[I,R]=[new g(t.mintA.address),new g(t.mintB.address)];a?s.inputAmount=s.inputAmount.mul(new $((1+c)*1e4)).div(new $(1e4)):s.outputAmount=s.outputAmount.mul(new $((1-c)*1e4)).div(new $(1e4));let L=t.mintA.address===re.toBase58(),K=t.mintB.address===re.toBase58(),{account:x,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({mint:I,tokenProgram:new g((W=t.mintA.programId)!=null?W:pe),owner:this.scope.ownerPubKey,createInfo:L||!r?{payer:f||this.scope.ownerPubKey,amount:r?s.inputAmount:0}:void 0,notUseTokenAccount:L,skipCloseAccount:!L,associatedOnly:L?!1:P,checkCreateATAOwner:y});B&&T.addInstruction(B);let{account:C,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({mint:R,tokenProgram:new g((v=t.mintB.programId)!=null?v:pe),owner:this.scope.ownerPubKey,createInfo:K||r?{payer:f||this.scope.ownerPubKey,amount:r?0:s.inputAmount}:void 0,notUseTokenAccount:K,skipCloseAccount:!K,associatedOnly:K?!1:P,checkCreateATAOwner:y});N&&T.addInstruction(N),(!x||!C)&&this.logAndCreateError("user do not have token account",{mintA:t.mintA.symbol||t.mintA.address,mintB:t.mintB.symbol||t.mintB.address,mintATokenAcc:x,mintBTokenAcc:C,mintAUseSOLBalance:L,mintBUseSOLBalance:K,associatedOnly:P});let M=o!=null?o:await this.getCpmmPoolKeys(t.id);return T.addInstruction({instructions:[a?Zo(new g(t.programId),this.scope.ownerPubKey,new g(M.authority),new g(M.config.id),new g(t.id),r?x:C,r?C:x,new g(M.vault[r?"A":"B"]),new g(M.vault[r?"B":"A"]),new g((q=t[r?"mintA":"mintB"].programId)!=null?q:pe),new g((U=t[r?"mintB":"mintA"].programId)!=null?U:pe),r?I:R,r?R:I,rt(new g(t.programId),new g(t.id)).publicKey,s.inputAmount,s.outputAmount):Jt(new g(t.programId),this.scope.ownerPubKey,new g(M.authority),new g(M.config.id),new g(t.id),r?x:C,r?C:x,new g(M.vault[r?"A":"B"]),new g(M.vault[r?"B":"A"]),new g((_=t[r?"mintA":"mintB"].programId)!=null?_:pe),new g((z=t[r?"mintB":"mintA"].programId)!=null?z:pe),r?I:R,r?R:I,rt(new g(t.programId),new g(t.id)).publicKey,l,s.outputAmount)],instructionTypes:[a?H.CpmmSwapBaseOut:H.ClmmSwapBaseIn]}),T.addCustomComputeBudget(m),T.addTipInstruction(b),T.versionBuild({txVersion:d,lookupTableAddress:M.lookupTableAccount?[M.lookupTableAccount]:void 0})}async lockLp(e){var d,f,A,y,P;let{poolInfo:t,lpAmount:o,computeBudgetConfig:r,txTipConfig:a,txVersion:l,feePayer:s,feeNftOwner:c}=e;o.isZero()&&this.logAndCreateError("lpAmount must greater than zero",{lpAmount:o.toString()});let p=this.createTxBuilder(s),m=(d=e.poolKeys)!=null?d:await this.getCpmmPoolKeys(t.id),b=await $o({poolInfo:t,poolKeys:m,ownerInfo:{wallet:this.scope.ownerPubKey,feePayer:(f=e.feePayer)!=null?f:this.scope.ownerPubKey},feeNftOwner:c!=null?c:this.scope.ownerPubKey,lockProgram:(A=e.programId)!=null?A:bt,lockAuthProgram:(y=e.authProgram)!=null?y:Vt,lpAmount:o,withMetadata:(P=e.withMetadata)!=null?P:!0,getEphemeralSigners:e.getEphemeralSigners});return p.addInstruction(b),p.addCustomComputeBudget(r),p.addTipInstruction(a),p.versionBuild({txVersion:l,extInfo:b.address,lookupTableAddress:m.lookupTableAccount?[m.lookupTableAccount]:void 0})}async harvestLockLp(e){var v;let{poolInfo:t,lpFeeAmount:o,nftMint:r,programId:a=bt,authProgram:l=Vt,cpmmProgram:s,computeBudgetConfig:c,txTipConfig:p,txVersion:m,closeWsol:b=!0}=e;o.isZero()&&this.logAndCreateError("lpFeeAmount must greater than zero",{lpAmount:o.toString()});let d=e.feePayer||this.scope.ownerPubKey,f=this.createTxBuilder(d),[A,y]=[new g(t.mintA.address),new g(t.mintB.address)],P=A.equals(re),T=y.equals(re),I,R,{account:L,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new g(t.mintA.address),notUseTokenAccount:P,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(P&&b),associatedOnly:!P,checkCreateATAOwner:!1});I=L,K&&f.addInstruction(K);let{account:x,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new g(t.mintB.address),notUseTokenAccount:T,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(T&&b),associatedOnly:!T,checkCreateATAOwner:!1});R=x,B&&f.addInstruction(B),(!I||!R)&&this.logAndCreateError("cannot found target token accounts",{tokenAccountA:I,tokenAccountB:R});let C=(v=e.poolKeys)!=null?v:await this.getCpmmPoolKeys(t.id),{publicKey:N}=te(d,r,pe),{publicKey:M}=at(a,r),{publicKey:W}=te(l,new g(t.lpMint.address),pe);return f.addInstruction({instructions:[Wn({programId:a,nftOwner:this.scope.ownerPubKey,auth:l,nftMint:r,nftAccount:N,lockPda:M,poolId:new g(t.id),mintLp:new g(C.mintLp.address),userVaultA:I,userVaultB:R,poolVaultA:new g(C.vault.A),poolVaultB:new g(C.vault.B),mintA:A,mintB:y,lockLpVault:W,lpFeeAmount:o,cpmmProgram:s==null?void 0:s.programId,cpmmAuthProgram:s==null?void 0:s.authProgram})],instructionTypes:[H.CpmmCollectLockFee]}),f.addCustomComputeBudget(c),f.addTipInstruction(p),f.versionBuild({txVersion:m,lookupTableAddress:C.lookupTableAccount?[C.lookupTableAccount]:void 0})}async harvestMultiLockLp(e){var f;let{lockInfo:t,programId:o=bt,authProgram:r=Vt,cpmmProgram:a,computeBudgetConfig:l,txVersion:s,closeWsol:c=!0}=e,p=e.feePayer||this.scope.ownerPubKey,m=this.createTxBuilder(p),b={},d=[];for(let A of t){let{poolInfo:y,lpFeeAmount:P,nftMint:T}=A;if(P.isZero())continue;let[I,R]=[new g(y.mintA.address),new g(y.mintB.address)],L=I.equals(re),K=R.equals(re),x=b[y.mintA.address],B=b[y.mintB.address];if(!x)if(L){let{account:v,instructionParams:_}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.mintA.programId,mint:new g(y.mintA.address),notUseTokenAccount:!0,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!c,associatedOnly:!1,checkCreateATAOwner:!1});x=v,_&&m.addInstruction(_),b[y.mintA.address]=v}else{let v=new g(y.mintA.address);x=this.scope.account.getAssociatedTokenAccount(v,new g(y.mintA.programId)),m.addInstruction({instructions:[ut(this.scope.ownerPubKey,x,this.scope.ownerPubKey,v,new g(y.mintA.programId))]}),b[y.mintA.address]=x}if(!B)if(K){let{account:v,instructionParams:_}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y.mintB.programId,mint:new g(y.mintB.address),notUseTokenAccount:!0,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!c,associatedOnly:!1,checkCreateATAOwner:!1});B=v,_&&m.addInstruction(_),b[y.mintB.address]=v}else{let v=new g(y.mintB.address);B=this.scope.account.getAssociatedTokenAccount(v,new g(y.mintB.programId)),m.addInstruction({instructions:[ut(this.scope.ownerPubKey,B,this.scope.ownerPubKey,v,new g(y.mintB.programId))]}),b[y.mintB.address]=B}(!x||!B)&&this.logAndCreateError("cannot found target token accounts",{tokenAccountA:x,tokenAccountB:B});let C=(f=A.poolKeys)!=null?f:await this.getCpmmPoolKeys(y.id);C.lookupTableAccount&&d.push(C.lookupTableAccount);let{publicKey:N}=te(p,T,pe),{publicKey:M}=at(o,T),{publicKey:W}=te(r,new g(y.lpMint.address),pe);m.addInstruction({instructions:[Wn({programId:o,nftOwner:this.scope.ownerPubKey,auth:r,nftMint:T,nftAccount:N,lockPda:M,poolId:new g(y.id),mintLp:new g(C.mintLp.address),userVaultA:x,userVaultB:B,poolVaultA:new g(C.vault.A),poolVaultB:new g(C.vault.B),mintA:I,mintB:R,lockLpVault:W,lpFeeAmount:P,cpmmProgram:a==null?void 0:a.programId,cpmmAuthProgram:a==null?void 0:a.authProgram})],instructionTypes:[H.CpmmCollectLockFee]})}return s===0?m.sizeCheckBuildV0({computeBudgetConfig:l,lookupTableAddress:d}):m.sizeCheckBuild({computeBudgetConfig:l})}async createPoolWithPermission(y){var P=y,{poolId:e,programId:t,poolFeeAccount:o,startTime:r,ownerInfo:a,associatedOnly:l=!1,checkCreateATAOwner:s=!1,txVersion:c,feeConfig:p,computeBudgetConfig:m,txTipConfig:b,feePayer:d,feeOn:f}=P,A=fe(P,["poolId","programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","feeConfig","computeBudgetConfig","txTipConfig","feePayer","feeOn"]);var Q,ce,le;console.log("***this method only available for wallet with permissions***");let T=a.feePayer||((Q=this.scope.owner)==null?void 0:Q.publicKey),I=new $(new g(A.mintA.address).toBuffer()).lte(new $(new g(A.mintB.address).toBuffer())),[R,L]=I?[A.mintA,A.mintB]:[A.mintB,A.mintA],[K,x]=I?[A.mintAAmount,A.mintBAmount]:[A.mintBAmount,A.mintAAmount],B=a.useSOLBalance&&R.address===st.toBase58(),C=a.useSOLBalance&&L.address===st.toBase58(),[N,M]=[new g(R.address),new g(L.address)],W=this.createTxBuilder(d),{account:v,instructionParams:_}=await this.scope.account.getOrCreateTokenAccount({mint:N,tokenProgram:R.programId,owner:this.scope.ownerPubKey,createInfo:B?{payer:T,amount:K}:void 0,notUseTokenAccount:B,skipCloseAccount:!B,associatedOnly:B?!1:l,checkCreateATAOwner:s});W.addInstruction(_||{});let{account:z,instructionParams:q}=await this.scope.account.getOrCreateTokenAccount({mint:new g(L.address),tokenProgram:L.programId,owner:this.scope.ownerPubKey,createInfo:C?{payer:T,amount:x}:void 0,notUseTokenAccount:C,skipCloseAccount:!C,associatedOnly:C?!1:l,checkCreateATAOwner:s});if(W.addInstruction(q||{}),v===void 0||z===void 0)throw Error("you don't has some token account");let U=_n({poolId:e,programId:t,configId:new g(p.id),mintA:N,mintB:M});return W.addInstruction({instructions:[Jo(t,this.scope.ownerPubKey,this.scope.ownerPubKey,new g(p.id),U.authority,U.poolId,N,M,U.lpMint,v,z,te(this.scope.ownerPubKey,U.lpMint).publicKey,U.vaultA,U.vaultB,o,new g((ce=R.programId)!=null?ce:pe),new g((le=L.programId)!=null?le:pe),U.observationId,Xo(t,this.scope.ownerPubKey).publicKey,K,x,r,f)],instructionTypes:[H.CpmmCreatePool]}),W.addCustomComputeBudget(m),W.addTipInstruction(b),W.versionBuild({txVersion:c,extInfo:{address:E(F({},U),{mintA:R,mintB:L,programId:t,poolFeeAccount:o,feeConfig:p})}})}async collectCreatorFees({poolInfo:e,poolKeys:t,programId:o=We,txVersion:r,computeBudgetConfig:a,txTipConfig:l,feePayer:s}){let c=s||this.scope.ownerPubKey,p=this.createTxBuilder(c),m=t!=null?t:await this.getCpmmPoolKeys(e.id),[b,d,f,A]=[new g(e.mintA.address),new g(e.mintB.address),new g(e.mintA.programId),new g(e.mintB.programId)],y=this.scope.account.getAssociatedTokenAccount(b,f),P=this.scope.account.getAssociatedTokenAccount(d,A);return p.addInstruction({instructions:[ut(this.scope.ownerPubKey,y,this.scope.ownerPubKey,b,new g(e.mintA.programId)),ut(this.scope.ownerPubKey,P,this.scope.ownerPubKey,d,new g(e.mintB.programId))]}),p.addInstruction({instructions:[qn(o,this.scope.ownerPubKey,new g(m.authority),new g(m.id),new g(m.config.id),new g(m.vault.A),new g(m.vault.B),b,d,y,P,f,A)],instructionTypes:[]}),p.addCustomComputeBudget(a),p.addTipInstruction(l),p.versionBuild({txVersion:r})}async collectMultiCreatorFees({poolInfoList:e,poolKeyList:t,programId:o=We,txVersion:r,computeBudgetConfig:a,feePayer:l}){let s=l||this.scope.ownerPubKey,c=this.createTxBuilder(s),p={},m=t!=null?t:[];if(!m.length){let d=e.map(P=>P.id),f=95,A=[];for(let P=0;P<d.length;P+=f)A.push(d.slice(P,P+f));m=(await Promise.all(A.map(P=>this.scope.api.fetchPoolKeysById({idList:P})))).flat()}let b=m.reduce((d,f)=>E(F({},d),{[f.id]:f}),{});for(let d of e){let f=b[d.id]||await this.getCpmmPoolKeys(d.id),[A,y,P,T]=[new g(d.mintA.address),new g(d.mintB.address),new g(d.mintA.programId),new g(d.mintB.programId)],I=p[d.mintA.address]||this.scope.account.getAssociatedTokenAccount(A,P),R=p[d.mintB.address]||this.scope.account.getAssociatedTokenAccount(y,T);p[d.mintA.address]=I,p[d.mintB.address]=R,c.addInstruction({instructions:[qn(o,this.scope.ownerPubKey,new g(f.authority),new g(f.id),new g(f.config.id),new g(f.vault.A),new g(f.vault.B),A,y,I,R,P,T)],instructionTypes:[]})}return r===0?c.sizeCheckBuildV0({computeBudgetConfig:a,lookupTableAddress:m.map(d=>d.lookupTableAccount).filter(Boolean),insCountLimit:6}):c.sizeCheckBuild({computeBudgetConfig:a})}async collectCreatorFeesPermissionless({poolInfo:e,poolKeys:t,programId:o=We,txVersion:r,computeBudgetConfig:a,txTipConfig:l,feePayer:s}){let c=s||this.scope.ownerPubKey,p=this.createTxBuilder(c),m=t!=null?t:await this.getCpmmPoolKeys(e.id),[b,d,f,A]=[new g(e.mintA.address),new g(e.mintB.address),new g(e.mintA.programId),new g(e.mintB.programId)],y=this.scope.account.getAssociatedTokenAccount(b,f),P=this.scope.account.getAssociatedTokenAccount(d,A);return p.addInstruction({instructions:[ut(this.scope.ownerPubKey,y,this.scope.ownerPubKey,b,new g(e.mintA.programId)),ut(this.scope.ownerPubKey,P,this.scope.ownerPubKey,d,new g(e.mintB.programId))]}),p.addInstruction({instructions:[jo(o,c,this.scope.ownerPubKey,new g(m.authority),new g(m.id),new g(m.config.id),new g(m.vault.A),new g(m.vault.B),b,d,y,P,f,A)],instructionTypes:[]}),p.addCustomComputeBudget(a),p.addTipInstruction(l),p.versionBuild({txVersion:r})}computeSwapAmount({pool:e,amountIn:t,outputMint:o,slippage:r,swapBaseIn:a=!0}){let l=o.toString()===e.mintB.address,s=e.feeOn===0||e.feeOn===2,c=a?Ct.swapBaseInput(t,l?e.baseReserve:e.quoteReserve,l?e.quoteReserve:e.baseReserve,e.configInfo.tradeFeeRate,e.configInfo.creatorFeeRate,e.configInfo.protocolFeeRate,e.configInfo.fundFeeRate,s):Ct.swapBaseOutput(t,l?e.baseReserve:e.quoteReserve,l?e.quoteReserve:e.baseReserve,e.configInfo.tradeFeeRate,e.configInfo.creatorFeeRate,e.configInfo.protocolFeeRate,e.configInfo.fundFeeRate,s),p=new Ae(c.outputAmount.toString()).div(c.inputAmount.toString()),m=c.outputAmount.mul(new $((1-r)*1e4)).div(new $(1e4));return{allTrade:a?c.inputAmount.eq(t):c.outputAmount.eq(t),amountIn:a?t:c.inputAmount,amountOut:c.outputAmount,minAmountOut:m,executionPrice:p,fee:c.tradeFee,priceImpact:e.poolPrice.sub(p).div(e.poolPrice),swapResult:c}}computePairAmount({poolInfo:e,baseReserve:t,quoteReserve:o,amount:r,slippage:a,epochInfo:l,baseIn:s}){var L,K,x,B,C,N,M,W,v;let c=1-Number(a.toSignificant())/100,p=new $(new Ae(r).mul(10**e[s?"mintA":"mintB"].decimals).mul(c).toFixed(0)),m=Me(p,e[s?"mintA":"mintB"].extensions.feeConfig,l,!1),b=p.sub((L=m.fee)!=null?L:new $(0)),d=new $(new Ae(e.lpAmount).mul(10**e.lpMint.decimals).toFixed(0,Ae.ROUND_DOWN));this.logDebug("baseReserve:",t.toString(),"quoteReserve:",o.toString()),this.logDebug("tokenIn:",s?e.mintA.symbol:e.mintB.symbol,"amountIn:",p.toString(),"amountInFee:",(x=(K=m.fee)==null?void 0:K.toString())!=null?x:0,"anotherToken:",s?e.mintB.symbol:e.mintA.symbol,"slippage:",`${a.toSignificant()}%`);let f=s?"base":"quote";this.logDebug("input side:",f);let A=b.mul(d).div(f==="base"?t:o),y={amount:oe,fee:void 0,expirationTime:void 0};if(!b.isZero()){let _=Is(A,t,o,d);this.logDebug("lpAmountData:",{amountA:_.amountA.toString(),amountB:_.amountB.toString()}),y=Me(_[s?"amountB":"amountA"],e[s?"mintB":"mintA"].extensions.feeConfig,l,!0)}let P=new be(new $(1)).add(a),T=new be(new $(1)).sub(a),I=Me(P.mul(y.amount.sub((B=y.fee)!=null?B:new $(0))).quotient,e[s?"mintB":"mintA"].extensions.feeConfig,l,!0),R=Me(T.mul(y.amount.sub((C=y.fee)!=null?C:new $(0))).quotient,e[s?"mintB":"mintA"].extensions.feeConfig,l,!0);return this.logDebug("anotherAmount:",y.amount.toString(),"anotherAmountFee:",(M=(N=y.fee)==null?void 0:N.toString())!=null?M:0,"maxAnotherAmount:",I.amount.toString(),"maxAnotherAmountFee:",(v=(W=I.fee)==null?void 0:W.toString())!=null?v:0),{inputAmountFee:m,anotherAmount:y,maxAnotherAmount:I,minAnotherAmount:R,liquidity:A}}async fetchCpmmLockBalances(){await this.scope.account.fetchWalletTokenAccounts({forceUpdate:!0});let e=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new $(1))),t=e.map(s=>at(this.scope.cluster==="mainnet"?bt:Re.LOCK_CPMM_PROGRAM,s.accountInfo.mint).publicKey),o=await Pe(this.scope.connection,t.map(s=>({pubkey:s}))),r=new Map,a=o.filter((s,c)=>(r.set(s.pubkey.toString(),e[c].accountInfo.mint.toString()),!!s.accountInfo)).map(s=>s.pubkey);return(await Promise.all(a.map(s=>this.scope.api.fetchCpmmLockInfo(s)))).map((s,c)=>E(F({},s),{nftMint:new g(r.get(a[c].toString()))}))}};function Is(i,e,t,o){let r=i.mul(e).div(o);!r.isZero()&&!i.mul(e).mod(o).isZero()&&(r=r.add(new $(1)));let a=i.mul(t).div(o);return!a.isZero()&&!i.mul(t).mod(o).isZero()&&(a=a.add(new $(1))),{amountA:r,amountB:a}}export{rn as default};
//# sourceMappingURL=cpmm.mjs.map