@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 117 kB
JavaScript
var si=Object.defineProperty,ui=Object.defineProperties;var ci=Object.getOwnPropertyDescriptors;var Rt=Object.getOwnPropertySymbols;var zn=Object.prototype.hasOwnProperty,Xn=Object.prototype.propertyIsEnumerable;var Gn=(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={}))zn.call(e,t)&&Gn(i,t,e[t]);if(Rt)for(var t of Rt(e))Xn.call(e,t)&&Gn(i,t,e[t]);return i},E=(i,e)=>ui(i,ci(e));var fe=(i,e)=>{var t={};for(var o in i)zn.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&&Xn.call(i,o)&&(t[o]=i[o]);return t};import{PublicKey as P}from"@solana/web3.js";import{AccountLayout as Ps,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 Zn,Keypair as jn,PublicKey as di,Transaction as $n,TransactionMessage as pi,VersionedTransaction as Jn}from"@solana/web3.js";import{get as Yn,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}},Qn={},mi={};function X(i){let e=Yn(Qn,i);if(!e){let t=Yn(mi,i);e=new sn({name:i,logLevel:t}),li(Qn,i,e)}return e}var Q={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{TOKEN_PROGRAM_ID as fi}from"@solana/spl-token";var Hn=X("Raydium_txUtil"),eo=1644;function Lt(i){let e=[],t=[];return i.microLamports&&(e.push(Zn.setComputeUnitPrice({microLamports:i.microLamports})),t.push(Q.SetComputeUnitPrice)),i.units&&(e.push(Zn.setComputeUnitLimit({units:i.units})),t.push(Q.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&&Hn.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&Hn.logWithError(`no signers provided:, ${e.toString()}`);let t=new $n;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<eo}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 Jn(a).serialize()).toString("base64").length<eo}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 Jn&&(e=yi(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Ve(i){let e=[];return i.forEach(t=>{t instanceof $n&&(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 $,SystemProgram as to,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:to.programId,isWritable:!1}),Xe({pubkey:Ai,isWritable:!1})];function cn({publicKey:i,transformSol:e}){let t=no(i.toString());if(t instanceof $)return e&&t.equals(_e)?re:t;if(e&&t.toString()===_e.toBase58())return re;if(typeof t=="string"){if(t===$.default.toBase58())return $.default;try{return new $(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function no(i){try{return new $(i)}catch{return i}}var dt=new $("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ee=new $("SysvarRent111111111111111111111111111111111"),Ws=new $("SysvarC1ock11111111111111111111111111111111"),De=new $("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Ti=new $("Sysvar1nstructions1111111111111111111111111"),oo=to.programId,qs=new $("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Us=new $("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Gs=new $("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),zs=new $("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Xs=new $("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ys=new $("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Qs=new $("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Zs=new $("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Hs=new $("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),js=new $("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),$s=new $("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),re=new $("So11111111111111111111111111111111111111112"),_e=$.default;function Ne(i){return cn({publicKey:i,transformSol:!0})}import gs from"big.js";import FC from"bn.js";import Fe from"bn.js";import yC from"decimal.js";import{PublicKey as hi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as io}from"@solana/spl-token";var Nt={chainId:101,address:hi.default.toBase58(),programId:io.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:io.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===_e.toBase58()||e instanceof ln&&_e.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 ro=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>=ro||i<=-ro)&&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},H=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 H(this.denominator,this.numerator)}add(e){let t=e instanceof H?e:new H(me(e));return this.denominator.eq(t.denominator)?new H(this.numerator.add(t.numerator),this.denominator):new H(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof H?e:new H(me(e));return this.denominator.eq(t.denominator)?new H(this.numerator.sub(t.numerator),this.denominator):new H(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof H?e:new H(me(e));return new H(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof H?e:new H(me(e));return new H(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 ao=new H(new Li(100)),be=class extends H{toSignificant(e=5,t,o){return this.mul(ao).toSignificant(e,t,o)}toFixed(e=2,t,o){return this.mul(ao).toFixed(e,t,o)}};var Lu=X("Raydium_price");import{merge as Px}from"lodash";import tl from"axios";import{PublicKey as so}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(y=>{let d=i._buildArgs([y.map(f=>f.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:d}}),p=yn(c,10);s=(await(await Promise.all(p.map(async y=>await i._rpcBatchRequest(y)))).flat()).map(y=>(y.error&&fn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${y.error.message}`),y.result.value.map(d=>{if(d){let{data:f,executable:k,lamports:b,owner:g,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:k,lamports:b,owner:new so(g),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 Vt({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[so.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 _}from"@solana/web3.js";var uo=new _("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),co=new _("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),lo=new _("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),bn=new _("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Xu=new _("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),vi=new _("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),mo=new _("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),po=new _("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Yu=new _("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Vi=new _("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),fo=new _("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),_i=new _("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ei=new _("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),yo=new _("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Qu=new _("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Di=new _("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),We=new _("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),bo=new _("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Zu=new _("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),bt=new _("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),_t=new _("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Wi=new _("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Hu=new _("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),ju=new _("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),$u=new _("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Ju=new _("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),ec=new _("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Re={OPEN_BOOK_PROGRAM:new _("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new _("Ray1111111111111111111111111111111111111111"),AMM_V4:new _("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new _("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new _("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new _("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new _("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new _("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new _("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new _("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new _("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new _("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:_.default,Router:new _("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new _("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new _("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new _("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new _("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new _("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new _("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new _("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new _("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new _("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new _("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,y=Et(m.mul(new ke(a.transferFeeBasisPoints)),new ke(gt)),d=y.gt(l)?l:y;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 Ze}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 Ze({key:s,state:Ze.deserialize(l.data)});r[s.toString()]=c,t==="devnet"?Qe[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 Ze({key:t,state:Ze.deserialize(o.data)})),Ye},Qe={},wn=async i=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Qe[e])return Qe;let t=new gn(e),o=await i.getAccountInfo(t);return o&&(Qe[e]=new Ze({key:t,state:Ze.deserialize(o.data)})),Qe};import{PublicKey as He,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 He(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(Q.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!==He.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),Ve([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 y=await this.signAllTransactions([t]);if(this.signers.length)for(let d of y)try{d.sign(...this.signers)}catch{}return{txId:c?"":await this.connection.sendRawTransaction(y[0].serialize(),{skipPreflight:l}),signedTx:y[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(y=>y.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:y,onTxUpdate:d,skipTxCount:f=0,recentBlockHash:k,skipPreflight:b=!0}=m||{},g=k!=null?k:await ze(this.connection,this.blockhashCommitment);if((T=this.owner)!=null&&T.isKeyPair){if(y){let h=[],R=0;for(let L of l){if(++R,R<=f)continue;let S=await kn(this.connection,L,this.signers.find(K=>K.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:b});h.push(S)}return{txIds:h,signedTxs:l}}return{txIds:await await Promise.all(l.map(async h=>(h.recentBlockhash=g,await this.connection.sendRawTransaction(h.serialize(),{skipPreflight:b})))),signedTxs:l}}if(this.signAllTransactions){let h=l.map((L,S)=>(L.recentBlockhash=g,s[S].length&&L.sign(...s[S]),L));Ve(h);let R=await this.signAllTransactions(h);if(y){let L=0,S=[],K=async()=>{if(!R[L])return;let I=await this.connection.sendRawTransaction(R[L].serialize(),{skipPreflight:b});S.push({txId:I,status:"sent",signedTx:R[L]}),d==null||d([...S]),L++;let C=!1,N=null,M=null,D=v=>{N!==null&&clearInterval(N),M!==null&&this.connection.removeSignatureListener(M);let V=S.findIndex(z=>z.txId===I);if(V>-1){if(S[V].status==="error"||S[V].status==="success")return;S[V].status=v.err?"error":"success"}d==null||d([...S]),v.err||K()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var v;if(C){clearInterval(N);return}try{let V=await this.connection.getTransaction(I,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(C=!0,clearInterval(N),D({err:((v=V.meta)==null?void 0:v.err)||null}),console.log("tx status from getTransaction:",I))}catch(V){C=!0,clearInterval(N),console.error("getTransaction timeout:",V,I)}},Dt)),M=this.connection.onSignature(I,v=>{if(C){this.connection.removeSignatureListener(M);return}C=!0,D(v)},"confirmed"),this.connection.getSignatureStatus(I)};return await K(),{txIds:S.map(I=>I.txId),signedTxs:R}}else{let L=[];for(let S=0;S<R.length;S+=1){let K=await this.connection.sendRawTransaction(R[S].serialize(),{skipPreflight:b});L.push(K)}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 b;let k=e||{},{lookupTableCache:t={},lookupTableAddress:o=[],forerunCreate:r,recentBlockhash:a}=k,l=fe(k,["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 g of c)s[g]===void 0&&p.push(new He(g));let m=await Pn({connection:this.connection,address:p});for(let[g,T]of Object.entries(m))s[g]=T;let y=r?He.default.toBase58():a!=null?a:await ze(this.connection,this.blockhashCommitment),d=new At({payerKey:this.feePayer,recentBlockhash:y,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s));((b=this.owner)==null?void 0:b.signer)&&!this.signers.some(g=>g.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 g=>{var L;let{skipPreflight:T=!0,sendAndConfirm:h,notSendToRpc:R}=g||{};if(Ve([f]),(L=this.owner)!=null&&L.isKeyPair){let S=await this.connection.sendTransaction(f,{skipPreflight:T});return h&&await Ot(this.connection,S),{txId:S,signedTx:f}}if(this.signAllTransactions){let S=await this.signAllTransactions([f]);if(this.signers.length)for(let K of S)try{K.sign(this.signers)}catch{}return{txId:R?"":await this.connection.sendTransaction(S[0],{skipPreflight:T}),signedTx:S[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(y=>y.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),l.forEach(async(m,y)=>{m.sign(s[y])}),{builder:this,transactions:l,signers:s,instructionTypes:c,buildProps:o,execute:async m=>{var b;let{sequentially:y,onTxUpdate:d,recentBlockHash:f,skipPreflight:k=!0}=m||{};if(f&&l.forEach(g=>g.message.recentBlockhash=f),Ve(l),(b=this.owner)!=null&&b.isKeyPair){if(y){let g=[];for(let T of l){let h=await this.connection.sendTransaction(T,{skipPreflight:k});await Ot(this.connection,h),g.push(h)}return{txIds:g,signedTxs:l}}return{txIds:await Promise.all(l.map(async g=>await this.connection.sendTransaction(g,{skipPreflight:k}))),signedTxs:l}}if(this.signAllTransactions){let g=await this.signAllTransactions(l);if(y){let T=0,h=[],R=async()=>{if(!g[T])return;let L=await this.connection.sendTransaction(g[T],{skipPreflight:k});h.push({txId:L,status:"sent",signedTx:g[T]}),d==null||d([...h]),T++;let S=!1,K=null,I=null,C=N=>{K!==null&&clearInterval(K),I!==null&&this.connection.removeSignatureListener(I);let M=h.findIndex(D=>D.txId===L);if(M>-1){if(h[M].status==="error"||h[M].status==="success")return;h[M].status=N.err?"error":"success"}d==null||d([...h]),N.err||R()};this.loopMultiTxStatus&&(K=setInterval(async()=>{var N;if(S){clearInterval(K);return}try{let M=await this.connection.getTransaction(L,{commitment:"confirmed",maxSupportedTransactionVersion:0});M&&(S=!0,clearInterval(K),C({err:((N=M.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",L))}catch(M){S=!0,clearInterval(K),console.error("getTransaction timeout:",M,L)}},Dt)),I=this.connection.onSignature(L,N=>{if(S){this.connection.removeSignatureListener(I);return}S=!0,C(N)},"confirmed"),this.connection.getSignatureStatus(L)};return R(),{txIds:[],signedTxs:g}}else{let T=[];for(let h=0;h<g.length;h+=1){let R=await this.connection.sendTransaction(g[h],{skipPreflight:k});T.push(R)}return{txIds:T,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var d;let y=e||{},{splitIns:t=[],computeBudgetConfig:o}=y,r=fe(y,["splitIns","computeBudgetConfig"]),a=o?Lt(o):{instructions:[],instructionTypes:[]},l=this.signers.reduce((f,k)=>E(F({},f),{[k.publicKey.toBase58()]:k}),{}),s=[],c=[],p=[],m=0;if(this.allInstructions.forEach(f=>{let k=[...p,f],b=o?[...a.instructions,...k]:k,T=[...new Set(k.map(h=>h.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat()).values()].map(h=>new He(h));if(f!==t[m]&&p.length<12&&(lt({instructions:b,payer:this.feePayer,signers:T})||lt({instructions:k,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(h=>h.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat())).map(h=>l[h]).filter(h=>h!==void 0)),p=[f]}}),p.length>0){let k=[...new Set(p.map(b=>b.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(b=>l[b]).filter(b=>b!==void 0);lt({instructions:o?[...a.instructions,...p]:[...p],payer:this.feePayer,signers:k.map(b=>b.publicKey)})?s.push(new Pt().add(...a.instructions,...p)):s.push(new Pt().add(...p)),c.push(k)}return s.forEach(f=>f.feePayer=this.feePayer),(d=this.owner)!=null&&d.signer&&c.forEach(f=>{f.some(k=>k.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:k,onTxUpdate:b,skipTxCount:g=0,recentBlockHash:T,skipPreflight:h=!0}=f||{},R=T!=null?T:await ze(this.connection,this.blockhashCommitment);if(s.forEach(async(S,K)=>{S.recentBlockhash=R,c[K].length&&S.sign(...c[K])}),Ve(s),(L=this.owner)!=null&&L.isKeyPair){if(k){let S=0,K=[];for(let I of s){if(++S,S<=g){K.push("tx skipped");continue}let C=await kn(this.connection,I,this.signers.find(N=>N.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:h});K.push(C)}return{txIds:K,signedTxs:s}}return{txIds:await Promise.all(s.map(async S=>await this.connection.sendRawTransaction(S.serialize(),{skipPreflight:h}))),signedTxs:s}}if(this.signAllTransactions){let S=await this.signAllTransactions(s.slice(g,s.length)),K=[...s.slice(0,g),...S];if(k){let I=0,C=[],N=async()=>{if(!K[I])return;I<g&&(C.push({txId:"",status:"success",signedTx:K[I]}),b==null||b([...C]),I++,N());let M=await this.connection.sendRawTransaction(K[I].serialize(),{skipPreflight:h});C.push({txId:M,status:"sent",signedTx:K[I]}),b==null||b([...C]),I++;let D=!1,v=null,V=null,z=q=>{v!==null&&clearInterval(v),V!==null&&this.connection.removeSignatureListener(V);let U=C.findIndex(Z=>Z.txId===M);if(U>-1){if(C[U].status==="error"||C[U].status==="success")return;C[U].status=q.err?"error":"success"}b==null||b([...C]),q.err||N()};this.loopMultiTxStatus&&(v=setInterval(async()=>{var q;if(D){clearInterval(v);return}try{let U=await this.connection.getTransaction(M,{commitment:"confirmed",maxSupportedTransactionVersion:0});U&&(D=!0,clearInterval(v),z({err:((q=U.meta)==null?void 0:q.err)||null}),console.log("tx status from getTransaction:",M))}catch(U){D=!0,clearInterval(v),console.error("getTransaction timeout:",U,M)}},Dt)),V=this.connection.onSignature(M,q=>{if(D){this.connection.removeSignatureListener(V);return}D=!0,z(q)},"confirmed"),this.connection.getSignatureStatus(M)};return await N(),{txIds:C.map(M=>M.txId),signedTxs:K}}else{let I=[];for(let C=0;C<K.length;C+=1){let N=await this.connection.sendRawTransaction(K[C].serialize(),{skipPreflight:h});I.push(N)}return{txIds:I,signedTxs:K}}}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 S of p)c[S]===void 0&&m.push(new He(S));let y=await Pn({connection:this.connection,address:m});for(let[S,K]of Object.entries(y))c[S]=K;let d=t?Lt(t):{instructions:[],instructionTypes:[]},f=await ze(this.connection,this.blockhashCommitment),k=this.signers.reduce((S,K)=>E(F({},S),{[K.publicKey.toBase58()]:K}),{}),b=[],g=[],T=[],h=0;if(this.allInstructions.forEach(S=>{let K=[...T,S],I=t?[...d.instructions,...K]:K;if(S!==o[h]&&T.length<l&&(mt({instructions:I,payer:this.feePayer,lookupTableAddressAccount:c})||mt({instructions:K,payer:this.feePayer,lookupTableAddressAccount:c})))T.push(S);else{if(T.length===0)throw Error("item ins too big");h+=S===o[h]?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));b.push(new wt(N))}else{let N=new At({payerKey:this.feePayer,recentBlockhash:f,instructions:[...T]}).compileToV0Message(Object.values(c));b.push(new wt(N))}g.push(Array.from(new Set(T.map(N=>N.keys.filter(M=>M.isSigner).map(M=>M.pubkey.toString())).flat())).map(N=>k[N]).filter(N=>N!==void 0)),T=[S]}}),T.length>0){let K=[...new Set(T.map(I=>I.keys.filter(C=>C.isSigner).map(C=>C.pubkey.toString())).flat()).values()].map(I=>k[I]).filter(I=>I!==void 0);if(t&&mt({instructions:[...d.instructions,...T],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:f})){let I=new At({payerKey:this.feePayer,recentBlockhash:f,instructions:[...d.instructions,...T]}).compileToV0Message(Object.values(c));b.push(new wt(I))}else{let I=new At({payerKey:this.feePayer,recentBlockhash:f,instructions:[...T]}).compileToV0Message(Object.values(c));b.push(new wt(I))}g.push(K)}return(L=this.owner)!=null&&L.signer&&g.forEach(S=>{S.some(K=>K.publicKey.equals(this.owner.publicKey))||S.push(this.owner.signer)}),b.forEach((S,K)=>{S.sign(g[K])}),{builder:this,transactions:b,buildProps:e,signers:g,instructionTypes:this.instructionTypes,execute:async S=>{var D;let{sequentially:K,onTxUpdate:I,skipTxCount:C=0,recentBlockHash:N,skipPreflight:M=!0}=S||{};if(b.map(async(v,V)=>{g[V].length&&v.sign(g[V]),N&&(v.message.recentBlockhash=N)}),Ve(b),(D=this.owner)!=null&&D.isKeyPair){if(K){let v=0,V=[];for(let z of b){if(++v,v<=C){console.log("skip tx: ",v),V.push("tx skipped");continue}let q=await this.connection.sendTransaction(z,{skipPreflight:M});await Ot(this.connection,q),V.push(q)}return{txIds:V,signedTxs:b}}return{txIds:await Promise.all(b.map(async v=>await this.connection.sendTransaction(v,{skipPreflight:M}))),signedTxs:b}}if(this.signAllTransactions){let v=await this.signAllTransactions(b.slice(C,b.length)),V=[...b.slice(0,C),...v];if(K){let z=0,q=[],U=async()=>{if(!V[z])return;if(z<C){q.push({txId:"",status:"success",signedTx:V[z]}),I==null||I([...q]),z++,U();return}let Z=await this.connection.sendTransaction(V[z],{skipPreflight:M});q.push({txId:Z,status:"sent",signedTx:V[z]}),I==null||I([...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===Z);if(we>-1){if(q[we].status==="error"||q[we].status==="success")return;q[we].status=Oe.err?"error":"success"}I==null||I([...q]),Oe.err||U()};this.loopMultiTxStatus&&(le=setInterval(async()=>{var Oe;if(ce){clearInterval(le);return}try{let we=await this.connection.getTransaction(Z,{commitment:"confirmed",maxSupportedTransactionVersion:0});we&&(ce=!0,clearInterval(le),ct({err:((Oe=we.meta)==null?void 0:Oe.err)||null}),console.log("tx status from getTransaction:",Z))}catch(we){ce=!0,clearInterval(le),console.error("getTransaction timeout:",we,Z)}},Dt)),ve=this.connection.onSignature(Z,Oe=>{if(ce){this.connection.removeSignatureListener(ve);return}ce=!0,ct(Oe)},"confirmed"),this.connection.getSignatureStatus(Z)};return U(),{txIds:[],signedTxs:V}}else{let z=[];for(let q=0;q<V.length;q+=1){let U=await this.connection.sendTransaction(V[q],{skipPreflight:M});z.push(U)}return{txIds:z,signedTxs:V}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}};import{PublicKey as kc}from"@solana/web3.js";import hc from"bn.js";import Gi from"bn.js";var Se=new Gi(1e6);var go={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({},go),{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 Il=X("Raydium_Api");import{PublicKey as fd,SystemProgram as yd}from"@solana/web3.js";import{AccountLayout as wd,createAssociatedTokenAccountIdempotentInstruction as kd,TOKEN_PROGRAM_ID as Td,TOKEN_2022_PROGRAM_ID as hd}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 Ym}from"@solana/web3.js";import Hm from"bn.js";import{createCloseAccountInstruction as ed,createInitializeAccountInstruction as td,createTransferInstruction as nd,TOKEN_PROGRAM_ID as od}from"@solana/spl-token";import{Keypair as Om,PublicKey as Nm}from"@solana/web3.js";import vm from"bn.js";import{TOKEN_PROGRAM_ID as Em}from"@solana/spl-token";import{PublicKey as or}from"@solana/web3.js";import To,{isBN as ho}from"bn.js";import{bits as Xi,BitStructure as Vl,blob as Yi,Blob as _l,cstr as El,f32 as Dl,f32be as Wl,f64 as ql,f64be as Ul,greedy as Gl,Layout as Qi,ns64 as zl,ns64be as Xl,nu64 as Yl,nu64be as Ql,offset as Zi,s16 as Zl,s16be as Hl,s24 as jl,s24be as $l,s32 as Hi,s32be as Jl,s40 as em,s40be as tm,s48 as nm,s48be as om,s8 as im,seq as ji,struct as rm,Structure as $i,u16 as Ji,u16be as am,u24 as sm,u24be as um,u32 as er,u32be as cm,u40 as lm,u40be as mm,u48 as dm,u48be as pm,u8 as tr,UInt as nr,union as fm,Union as ym,unionLayoutDiscriminator as bm,utf8 as gm}from"@solana/buffer-layout";var Ut=Qi,Po=$i;var hn=nr;var Ao=tr,ne=Ji;var Gt=er;var Te=Hi;var wo=ji;var G=Yi;var In=Xi,ko=Zi;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 To(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 To(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 x(i){return new hn(1,i)}function J(i){return new hn(4,i)}function n(i){return new Ue(8,!1,i)}function W(i){return new Ue(16,!1,i)}function Io(i){return new Ue(1,!0,i)}function $e(i){return new Ue(8,!0,i)}function Bo(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(Ao(),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 So(i,e){let t=Gt("length"),o=B([t,O(i,ko(t,-t.span),"values")]);return new kt(o,({values:r})=>r,r=>({values:r}),e)}var Bn=class extends Po{decode(e,t){return super.decode(e,t)}};function B(i,e,t){return new Bn(i,e,t)}function O(i,e,t){let o,r=typeof e=="number"?e:ho(e)?e.toNumber():new Proxy(e,{get(a,l){if(!o){let s=Reflect.get(a,"count");o=ho(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 wo(i,r,t)}var Xt=B([u("mint"),u("owner"),n("amount"),J("delegateOption"),u("delegate"),x("state"),J("isNativeOption"),n("isNative"),n("delegatedAmount"),J("closeAuthorityOption"),u("closeAuthority")]);import{PublicKey as _P,SystemProgram as EP}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as WP}from"@solana/spl-token";import jP from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as hb,TOKEN_2022_PROGRAM_ID as Ib,TOKEN_PROGRAM_ID as Bb}from"@solana/spl-token";import{PublicKey as Kb}from"@solana/web3.js";import Cb from"bn.js";import Lb from"decimal.js";import{TOKEN_PROGRAM_ID as Nd}from"@solana/spl-token";import{PublicKey as Vd}from"@solana/web3.js";var sr=B([J("mintAuthorityOption"),u("mintAuthority"),n("supply"),x("decimals"),x("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 Xy,TOKEN_PROGRAM_ID as Yy}from"@solana/spl-token";import{Keypair as Hy,PublicKey as jy,SystemProgram as Jy,TransactionInstruction as eb}from"@solana/web3.js";import nb from"bn.js";import Y from"bn.js";var Je=new Y(1).shln(64);var ur=new Y(1).shln(128),Sn=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 Kn=60,Zd=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,xo=100;var Co=10,Ro=100,Qt=14;var oe=new Y(0),nt=new Y(1),Hd=new Y(-1);var jd=new Y("18446744073700000000");var fr=B([G(8),x("bump"),ne("index"),u("owner"),J("protocolFeeRate"),J("tradeFeeRate"),ne("tickSpacing"),J("fundFeeRate"),O(J(),1),u("fundOwner"),O(n(),3)]),yr=B([J("blockTimestamp"),$e("tickCumulative"),O(n(),4)]),Lo=B([G(8),ge("initialized"),n("recentEpoch"),ne("observationIndex"),u("poolId"),O(yr,xo,"observations"),O(n(),4)]),br=B([ne("filterPeriod"),ne("decayPeriod"),ne("reductionFactor"),J("dynamicFeeControl"),J("maxVolatilityAccumulator"),Te("tickSpacingIndexReference"),J("volatilityReference"),J("volatilityAccumulator"),n("lastUpdateTimestamp"),O(x(),46)]),gr=B([x("state"),n("openTime"),n("endTime"),n("lastUpdateTime"),W("emissionsPerSecondX64"),n("totalEmissioned"),n("claimed"),u("mint"),u("vault"),u("creator"),W("growthGlobalX64")]),xn=B([G(8),x("bump"),u("configId"),u("creator"),u("mintA"),u("mintB"),u("vaultA"),u("vaultB"),u("observationId"),x("mintDecimalsA"),x("mintDecimalsB"),ne("tickSpacing"),W("liquidity"),W("sqrtPriceX64"),Te("tickCurrent"),J(),W("feeGrowthGlobalX64A"),W("feeGrowthGlobalX64B"),n("protocolFeesTokenA"),n("protocolFeesTokenB"),O(W(),4),x("status"),x("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=B([W("growthInsideLastX64"),n("rewardAmountOwed")]),Ar=B([G(8),x("bump"),u("nftMint"),u("poolId"),Te("tickLower"),Te("tickUpper"),W("liquidity"),W("feeGrowthInsideLastX64A"),W("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),O(Pr,Tt,"rewardInfos"),n("recentEpoch"),O(n(),7)]),tp=B([G(8),x("bump"),u("poolId"),Te("tickLower"),Te("tickUpper"),W("liquidity"),W("feeGrowthInsideLastX64A"),W("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),O(W(),Tt,"rewardGrowthInside"),n("recentEpoch"),O(n(),7)]),wr=B([Te("tick"),Bo("liquidityNet"),W("liquidityGross"),W("feeGrowthOutsideX64A"),W("feeGrowthOutsideX64B"),O(W(),Tt,"rewardGrowthsOutsideX64"),n("orderPhase"),n("ordersAmount"),n("partFilledOrdersRemaining"),W("unfilledRatioX64"),O(J(),3)]),Oo=B([G(8),u("poolId"),Te("startTickIndex"),O(wr,Kn,"ticks"),x("initializedTickCount"),n("recentEpoch"),O(x(),107)]),kr=B([G(8),x("bump"),O(u(),Co,"operationOwners"),O(u(),Ro,"whitelistMints")]),Tr=B([G(8),u("poolId"),u("owner"),Te("tick"),ge("zeroForOne"),n("orderPhase"),n("totalAmount"),n("filledAmount"),n("settleBase"),n("settleOutput"),n("openTime"),W("unfilledRatioX64"),O(n(),4)]),No=B([G(8),u("poolId"),G(8*8*Qt,"positiveTickArrayBitmap"),G(8*8*Qt,"negativeTickArrayBitmap")]),np=B([G(8),ne("index"),ne("filterPeriod"),ne("decayPeriod"),ne("reductionFactor"),J("dynamicFeeControl"),J("maxVolatilityAccumulator"),O(n(),8)]),hr=B([G(8),u("wallet"),x("nonceIndex"),n("orderNonce"),O(n(),4)]),op=B([n(),x("bump"),u("owner"),u("poolId"),u("positionId"),u("nftAccount"),O(n(),8)]),Ir=B([G(8),x("bump"),u("lockOwner"),u("poolId"),u("positionId"),u("nftAccount"),u("lockNftMint"),n("recentEpoch"),O(n(),8)]);import ap from"bn.js";var gp=Buffer.from("amm_config","utf8"),Sr=Buffer.from("pool","utf8"),Kr=Buffer.from("pool_vault","utf8"),Pp=Buffer.from("pool_reward_vault","utf8"),Ap=Buffer.from("position","utf8"),wp=Buffer.from("tick_array","utf8"),kp=Buffer.from("operation","utf8"),Tp=Buffer.from("pool_tick_array_bitmap_extension","utf8"),hp=Buffer.from("observation","utf8"),Ip=Buffer.from("support_mint","utf8"),Bp=Buffer.from("dynamic_fee_config","utf8"),Sp=Buffer.from("permission","utf8");function Zt(i){return ee([Buffer.from("metadata","utf8"),De.toBuffer(),i.toBuffer()],De)}var Kp=Buffer.from("locked_position","utf8");import{sha256 as Wr}from"js-sha256";import xr from"bn.js";import Lp from"decimal.js";var Np=new xr(1).shln(256).subn(1);import jp from"bn.js";import Dp from"bn.js";import qp from"decimal.js";import nf from"bn.js";import rf from"decimal.js";import{PublicKey as zf}from"@solana/web3.js";import Yf from"bn.js";import{TOKEN_2022_PROGRAM_ID as ty,TOKEN_PROGRAM_ID as ny}from"@solana/spl-token";import ay from"decimal.js";import Mf from"bn.js";import kf from"bn.js";import gy from"bn.js";function ae(i){let e=`global:${i}`;return Buffer.from(Wr.digest(e)).slice(0,8)}Lo.span;var lb=X("Raydium_Clmm"),mb={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 On}from"@solana/web3.js";var zr=B([x("instruction")]),Xr=B([x("instruction")]),Yr=B([n("rewardState"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardLastUpdateTime"),n("totalReward"),n("totalRewardEmissioned"),n("rewardClaimed"),n("rewardPerSecond"),W("accRewardPerShare"),u("rewardVault"),u("rewardMint"),u("rewardSender"),n("rewardType"),O(n(),15,"padding")]),Qr=B([n("state"),n("nonce"),u("lpVault"),u("rewardVault"),u(),u(),n(),n(),n("totalReward"),W("perShareReward"),n("lastSlot"),n("perSlotReward")]),Zr=B([n("state"),n("nonce"),u("lpVault"),u("rewardVaultA"),n("totalRewardA"),W("perShareRewardA"),n("perSlotRewardA"),x("option"),u("rewardVaultB"),G(7),n("totalRewardB"),W("perShareRewardB"),n("perSlotRewardB"),n("lastSlot"),u()]),Hr=B([n(),n("state"),n("nonce"),n("validRewardTokenNum"),W("rewardMultiplier"),n("rewardPeriodMax"),n("rewardPeriodMin"),n("rewardPeriodExtend"),u("lpMint"),u("lpVault"),O(Yr,5,"rewardInfos"),u("creator"),u(),O(n(),32,"padding")]),jr=new Proxy(Qr,{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)}}),$r=new Proxy(Zr,{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(Hr,{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=B([n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),ea=B([x("instruction"),n("nonce"),O(Jr,5,"rewardTimeInfo")]),ta=B([x("instruction"),n("rewardReopenTime"),n("rewardEndTime"),n("rewardPerSecond")]),na=B([x("instruction"),n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),lg=B([n("state"),u("id"),u("owner"),n("deposited"),O(n(),1,"rewardDebts")]),_o=B([n("state"),u("id"),u("owner"),n("deposited"),O(W(),1,"rewardDebts"),n(""),n("voteLockedBalance"),O(n(),15)]),mg=B([n("state"),u("id"),u("owner"),n("deposited"),O(n(),2,"rewardDebts")]),oa=B([n("state"),u("id"),u("owner"),n("deposited"),O(W(),2,"rewardDebts"),O(n(),17)]),ia=B([n(),n("state"),u("id"),u("owner"),n("deposited"),O(W(),5,"rewardDebts"),O(n(),16)]),ra=B([x("instruction"),n("amount")]),aa=B([u("mint"),u("grantAuthority"),n("baselineVoteWeightScaledFactor"),n("maxExtraLockupVoteWeightScaledFactor"),n("lockupSaturationSecs"),Io("digitShift"),O(x(),7,"reserved1"),O(n(),7,"reserved2")]),sa=B([G(8),u("governanceProgramId"),u("realm"),u("realmGoverningTokenMint"),u("realmAuthority"),O(x(),32,"reserved1"),O(aa,4,"votingMints"),$e("timeOffset"),x("bump"),O(x(),7,"reserved2"),O(n(),11,"reserved3")]),ua=B([$e("startTime"),$e("endTime"),x("kind"),O(x(),15,"reserved")]),ca=B([O(ua,1,"lockup"),n("amountDeposited_native"),n("amountInitiallyLockedNative"),ge("isUsed"),ge("allowClawback"),x("votingMintConfigIdx"),O(x(),29,"reserved")]),la=B([G(8),u("voterAuthority"),u("registrar"),O(ca,32,"deposits"),x("voterBump"),x("voterWweightRecordBump"),O(x(),94,"reserved")]);import{NATIVE_MINT as wg}from"@solana/spl-token";var kg=X("Raydium_farm_config"),ma=new On("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),da=new On("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Tg=new On("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var It={"Standard SPL":0,"Option tokens":1},Eo={[uo.toString()]:3,[co.toString()]:4,[lo.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 Jg,SystemProgram as eP,SYSVAR_CLOCK_PUBKEY as tP,SYSVAR_RENT_PUBKEY as nP,TransactionInstruction as oP}from"@solana/web3.js";import rP from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as sP,createAssociatedTokenAccountIdempotentInstruction as uP,TOKEN_PROGRAM_ID as cP}from"@solana/spl-token";import Cg from"bn.js";var qg=X("Raydium.farm.util");var wP=X("Raydium_farm_instruction"),kP={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 uA from"bn.js";import{PublicKey as dk}from"@solana/web3.js";import{AccountLayout as yk,MintLayout as bk,NATIVE_MINT as gk,TOKEN_PROGRAM_ID as Ak}from"@solana/spl-token";import Wo from"bn.js";var wa=new Wo(25),ka=new Wo(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as RA,TOKEN_PROGRAM_ID as LA}from"@solana/spl-token";import{PublicKey as NA,SystemProgram as MA,SYSVAR_RENT_PUBKEY as FA,TransactionInstruction as vA}from"@solana/web3.js";import GA from"bn.js";var Ta=B([x("instruction"),n("amountIn"),n("minAmountOut")]),ha=B([x("instruction"),n("maxAmountIn"),n("amountOut")]),SA=B([x("instruction"),x("nonce")]),Ia=B([x("instruction"),x("nonce"),n("startTime")]),qo=B([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"),W("swapBaseInAmount"),W("swapQuoteOutAmount"),n("swapBase2QuoteFee"),W("swapQuoteInAmount"),W("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")]),KA=B([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"),W("swapBaseInAmount"),W("swapQuoteOutAmount"),W("swapQuoteInAmount"),W("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=B([x("instruction"),n("baseAmountIn"),n("quoteAmountIn"),n("fixedSide"),n("otherAmountMin")]),Sa=B([x("instruction"),n("lpAmount"),n("baseAmountMin"),n("quoteAmountMin")]);var Ka=B([n("fee")]);var YA=X("Raydium_liquidity_instruction");var xa=5e4,Ca=B([n("x"),n("y"),n("price")]),jA=B([n("accountType"),n("status"),n("multiplier"),n("validDataCount"),O(Ca,xa,"DataElement")]);import{PublicKey as cw}from"@solana/web3.js";import mw from"decimal.js";import{TOKEN_PROGRAM_ID as pw}from"@solana/spl-token";import{PublicKey as tw}from"@solana/web3.js";var iw=X("Raydium_liquidity_serum");import Ek from"bn.js";import Wk from"decimal.js";import{TOKEN_PROGRAM_ID as Dw}from"@solana/spl-token";import{PublicKey as qw}from"@solana/web3.js";import Gw from"bn.js";import{SystemProgram as Kw,SYSVAR_RENT_PUBKEY as xw,Transaction as Cw,TransactionInstruction as Rw}from"@solana/web3.js";import{createInitializeAccountInstruction as Ow,TOKEN_PROGRAM_ID as Nw}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=B([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 qS,SystemProgram as US}from"@solana/web3.js";import{createTransferInstruction as zS,TOKEN_PROGRAM_ID as XS,TOKEN_2022_PROGRAM_ID as YS,createAssociatedTokenAccountIdempotentInstruction as QS,createSyncNativeInstruction as HS,createTransferCheckedInstruction as jS}from"@solana/spl-token";import ds from"bn.js";import eK from"decimal.js";var Uo=B([G(8),x("bump"),ge("disableCreatePool"),ne("index"),n("tradeFeeRate"),n("protocolFeeRate"),n("fundFeeRate"),n("createPoolFee"),u("protocolOwner"),u("fundOwner"),n("creatorFeeRate"),O(n(),15)]),Mn=B([G(8),u("configId"),u("poolCreator"),u("vaultA"),u("vaultB"),u("mintLp"),u("mintA"),u("mintB"),u("mintProgramA"),u("mintProgramB"),u("observationId"),x("bump"),x("status"),x("lpDecimals"),x("mintDecimalA"),x("mintDecimalB"),n("lpAmount"),n("protocolFeesMintA"),n("protocolFeesMintB"),n("fundFeesMintA"),n("fundFeesMintB"),n("openTime"),n("epoch"),x("feeOn"),ge("enableCreatorFee"),O(x(),6),n("creatorFeesMintA"),n("creatorFeesMintB"),O(n(),28)]),Zk=B([G(8),u("configId"),O(n(),30)]);import{PublicKey as Bt,TransactionInstruction as xe,Keypair as Ya,SystemProgram as $t}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as St,TOKEN_2022_PROGRAM_ID as _n,TOKEN_PROGRAM_ID as Le}from"@solana/spl-token";var _a=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Jk=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");function it(i){return ee([_a],i)}function Fn(i,e,t,o){return ee([Ea,e.toBuffer(),t.toBuffer(),o.toBuffer()],i)}function za(i,e){return ee([Da,e.toBuffer()],i)}function Go(i,e,t){return ee([Wa,e.toBuffer(),t.toBuffer()],i)}function rt(i,e){return ee([qa,e.toBuffer()],i)}function vn({poolId:i,programId:e,configId:t,mintA:o,mintB:r}){let a=it(e).publicKey,l=i||Fn(e,t,o,r).publicKey,s=za(e,l).publicKey,c=Go(e,l,o).publicKey,p=Go(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 Xa=Buffer.from("locked_liquidity","utf8");function at(i,e){return ee([Xa,e.toBuffer()],i)}function zo(i,e){return ee([Ua,e.toBuffer()],i)}function Vn(i,e){return ee([Ga,e.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 Xo(i,e,t,o,r,a,l,s,c,p,m,y,d,f,k,b,g,T,h,R,L){let S=B([n("amountMaxA"),n("amountMaxB"),n("openTime")]),K=Fn(i,t,a,l).publicKey,I=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!r.equals(K),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:y,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:Le,isSigner:!1,isWritable:!1},{pubkey:k,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:St,isSigner:!1,isWritable:!1},{pubkey:oo,isSigner:!1,isWritable:!1},{pubkey:Ee,isSigner:!1,isWritable:!1},...(L!=null?L:[]).map(N=>({pubkey:N,isSigner:!1,isWritable:!1}))],C=Buffer.alloc(S.span);return S.encode({amountMaxA:T,amountMaxB:h,openTime:R},C),new xe({keys:I,programId:i,data:Buffer.from([...Ce.initialize,...C])})}function Yo(i,e,t,o,r,a,l,s,c,p,m,y,d,f,k){let b=B([n("lpAmount"),n("amountMaxA"),n("amountMaxB")]),g=[{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:_n,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!0}],T=Buffer.alloc(b.span);return Qa.debug("cpmm deposit data",{lpAmount:d.toString(),amountMaxA:f.toString(),amountMaxB:k.toString()}),b.encode({lpAmount:d,amountMaxA:f,amountMaxB:k},T),new xe({keys:g,programId:i,data:Buffer.from([...Ce.deposit,...T])})}function Qo(i,e,t,o,r,a,l,s,c,p,m,y,d,f,k){let b=B([n("lpAmount"),n("amountMinA"),n("amountMinB")]),g=[{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:_n,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:dt,isSigner:!1,isWritable:!1}],T=Buffer.alloc(b.span);return b.encode({lpAmount:d,amountMinA:f,amountMinB:k},T),new xe({keys:g,programId:i,data:Buffer.from([...Ce.withdraw,...T])})}function Jt(i,e,t,o,r,a,l,s,c,p,m,y,d,f,k,b){let g=B([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:y,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!0}],h=Buffer.alloc(g.span);return g.encode({amountIn:k,amounOutMin:b},h),new xe({keys:T,programId:i,data:Buffer.from([...Ce.swapBaseInput,...h])})}function Zo(i,e,t,o,r,a,l,s,c,p,m,y,d,f,k,b){let g=B([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:y,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!0}],h=Buffer.alloc(g.span);return g.encode({amountInMax:k,amountOut:b},h),new xe({keys:T,programId:i,data:Buffer.from([...Ce.swapBaseOutput,...h])})}async function Ho(i){var g;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=Ya.generate();l.push(T),p=T.publicKey}let{publicKey:m}=te(r,p,Le),{publicKey:y}=Zt(p),{publicKey:d}=at(i.lockProgram,p),{publicKey:f}=te(e.wallet,c,Le),{publicKey:k}=te(i.lockAuthProgram,c,Le),b=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:k,poolVaultA:new Bt(o.vault.A),poolVaultB:new Bt(o.vault.B),metadataAccount:y,lpAmount:i.lpAmount,withMetadata:(g=i.withMetadata)!=null?g:!0});return{address:{nftMint:p,nftAccount:m,metadataAccount:y,lockPda:d,userLpVault:f,lockLpVault:k},instructions:[b],signers:l,instructionTypes:[Q.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:y,poolVaultA:d,poolVaultB:f,metadataAccount:k,lpAmount:b,withMetadata:g}){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:y,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:k,isSigner:!1,isWritable:!0},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:$t.programId,isSigner:!1,isWritable:!1},{pubkey:Le,isSigner:!1,isWritable:!1},{pubkey:St,isSigner:!1,isWritable:!1},{pubkey:De,isSigner:!1,isWritable:!1}],h=B([n("lpAmount"),ge("withMetadata")]),R=Buffer.alloc(h.span);h.encode({lpAmount:b,withMetadata:g},R);let L=Buffer.from([...Ce.lockCpLiquidity,...R]);return new xe({keys:T,programId:i,data:L})}function En({programId:i,nftOwner:e,auth:t,nftAccount:o,lockPda:r,poolId:a,mintLp:l,userVaultA:s,userVaultB:c,poolVaultA:p,poolVaultB:m,mintA:y,mintB:d,lockLpVault:f,lpFeeAmount:k,cpmmProgram:b,cpmmAuthProgram:g}){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:b!=null?b:We,isSigner:!1,isWritable:!1},{pubkey:g!=null?g:bo,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:y,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:Le,isSigner:!1,isWritable:!1},{pubkey:_n,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1}],h=B([n("lpFeeAmount")]),R=Buffer.alloc(h.span);h.encode({lpFeeAmount:k},R);let L=Buffer.from([...Ce.collectCpFee,...R]);return new xe({keys:T,programId:i,data:L})}function Dn(i,e,t,o,r,a,l,s,c,p,m,y,d){let f=[{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:y,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:St,isSigner:!1,isWritable:!1},{pubkey:$t.programId,isSigner:!1,isWritable:!1}];return new xe({keys:f,programId:i,data:Ce.collectCreatorFee})}function jo(i,e,t,o,r,a,l,s,c,p,m,y,d){let f=[{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: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:y,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:St,isSigner:!1,isWritable:!1},{pubkey:$t.programId,isSigner:!1,isWritable:!1}];return new xe({keys:f,programId:i,data:Ce.collectCreatorFeePermissionless})}function $o(i,e,t,o,r,a,l,s,c,p,m,y,d,f,k,b,g,T,h,R,L,S,K,I){let C=B([n("amountA"),n("amountB"),n("openTime"),x("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:y,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:k,isSigner:!1,isWritable:!0},{pubkey:T,isSigner:!1,isWritable:!0},{pubkey:h,isSigner:!1,isWritable:!0},{pubkey:Le,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:St,isSigner:!1,isWritable:!1},{pubkey:$t.programId,isSigner:!1,isWritable:!1},...(I!=null?I:[]).map(D=>({pubkey:D,isSigner:!1,isWritable:!1}))],M=Buffer.alloc(C.span);return C.encode({amountA:R,amountB:L,openTime:S,feeOn:K},M),new xe({keys:N,programId:i,data:Buffer.from([...Ce.initializeWithPermission,...M])})}import Jo from"bn.js";import en from"bn.js";function Wn(i,e){if(e.isZero())throw Error("divisor is zero");return i.mod(e)}function Ha(i,e){if(e.isZero())throw Error("rhs is zero");let t=i.div(e);return Wn(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]=Ha(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 Wn(e.mul(o),t).gt(Kt)&&l.gt(Kt)&&(l=l.add(new en(1))),Wn(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 Jo(0),m=ye.tradingFee(e,r),y;c?(p=ye.creatorFee(e,a),y=e.sub(m).sub(p)):y=e.sub(m);let d=ye.protocolFee(m,l),f=ye.protocolFee(m,s),k=xt.swapBaseInputWithoutFees(y,t,o),b;return c?b=k:(p=ye.creatorFee(k,a),b=k.sub(p)),{newInputVaultAmount:t.add(y),newOutputVaultAmount:o.sub(k),inputAmount:e,outputAmount:b,tradeFee:m,protocolFee:d,fundFee:f,creatorFee:p}}static swapBaseOutput(e,t,o,r,a,l,s,c){let p,m=new Jo(0),y;if(c)y=e;else{let g=ye.calculatePreFeeAmount(e,a);m=g.sub(e),y=g}let d=xt.swapBaseOutputWithoutFees(y,t,o),f;if(c){let g=ye.calculatePreFeeAmount(d,r.add(a)),T=g.sub(d);m=ye.splitCreatorFee(T,r,a),p=T.sub(m),f=g}else{let g=ye.calculatePreFeeAmount(d,r);p=g.sub(d),f=g}let k=ye.protocolFee(p,l),b=ye.fundFee(p,s);return{newInputVaultAmount:t.add(d),newOutputVaultAmount:o.sub(y),inputAmount:f,outputAmount:e,tradeFee:p,protocolFee:k,fundFee:b,creatorFee:m}}};import{ASSOCIATED_TOKEN_PROGRAM_ID as sh,TOKEN_2022_PROGRAM_ID as uh,TOKEN_PROGRAM_ID as ch}from"@solana/spl-token";import{SystemProgram as ph,TransactionInstruction as fh}from"@solana/web3.js";import ns from"bn.js";var $a=B([n(),n("epoch"),x("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)]),Ja=B([n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod"),n("startTime"),n("totalAllocatedShare")]),es=B([n(),n("epoch"),x("bump"),x("status"),x("mintDecimalsA"),x("mintDecimalsB"),x("migrateType"),n("supply"),n("totalSellA"),n("virtualA"),n("virtualB"),n("realA"),n("realB"),n("totalFundRaisingB"),n("protocolFee"),n("platformFee"),n("migrateFee"),Ja.replicate("vestingSchedule"),u("configId"),u("platformId"),u("mintA"),u("mintB"),u("vaultA"),u("vaultB"),u("creator"),x("mintProgramFlag"),x("cpmmCreatorFeeOn"),n("platformVestingShare"),O(x(),54)]),qT=B([n(),n("epoch"),u("poolId"),u("beneficiary"),n("claimedAmount"),n("tokenShareAmount"),O(n(),8)]),ei=B([x("migrateType"),x("migrateCpmmFeeOn"),n("supply"),n("totalSellA"),n("totalFundRaisingB"),n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod")]),ts=B([n("epoch"),x("index"),u("configId"),ei.replicate("bondingCurveParam"),O(n(),50)]),ti=B([n(),n("epoch"),u("platformClaimFeeWallet"),u("platformLockNftWallet"),n("platformScale"),n("creatorScale"),n("burnScale"),n("feeRate"),O(x(),64,"name"),O(x(),256,"web"),O(x(),256,"img"),u("cpConfigId"),n("creatorFeeRate"),u("transferFeeExtensionAuth"),u("platformVestingWallet"),n("platformVestingScale"),u("platformCpCreator"),x("restrictGlobalConfig"),O(x(),107),So(ts,"platformCurve")]);var YT=Buffer.from("vault_auth_seed","utf8"),QT=Buffer.from("global_config","utf8"),ZT=Buffer.from("pool_vesting","utf8"),HT=Buffer.from("platform_config","utf8"),jT=Buffer.from("platform_fee_vault_auth_seed","utf8"),$T=Buffer.from("creator_fee_vault_auth_seed","utf8"),JT=Buffer.from("platform_global_access","utf8"),eh=Buffer.from("platform_allow_config","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]),updatePlatformCurveParam:Buffer.from([138,144,138,250,220,128,4,57]),removePlatformCurveParam:Buffer.from([27,30,62,169,93,224,24,145]),createPlatformVestingAccount:Buffer.from([146,71,173,69,98,19,15,106]),createPlatformAllowConfig:Buffer.from([69,71,168,7,214,250,107,102]),closePlatformAllowConfig:Buffer.from([82,205,36,216,16,6,240,215])};var Ah=new ns("18446744073709551615");import{TOKEN_2022_PROGRAM_ID as hh,TOKEN_PROGRAM_ID as Ih}from"@solana/spl-token";import xh from"bn.js";import Rh from"decimal.js";import uI from"bn.js";import lI from"decimal.js";import vh from"bn.js";import _h from"decimal.js";import Qh from"bn.js";import Hh from"decimal.js";import ii from"bn.js";import qn from"decimal.js";var on=class{static _multipler(e){return new qn(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:o}){return new qn(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 qn(new ii(1).shln(64).toString());import{NATIVE_MINT as PB,TOKEN_2022_PROGRAM_ID as AB,TOKEN_PROGRAM_ID as wB,createAssociatedTokenAccountIdempotentInstruction as TB,createSyncNativeInstruction as hB,getTransferFeeConfig as IB,unpackMint as BB}from"@solana/spl-token";import ie from"bn.js";import{PublicKey as cs,SystemProgram as xB}from"@solana/web3.js";import FB from"decimal.js";var vB={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 cs("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new ie(0),cliffPeriod:new ie(0),unlockPeriod:new ie(0),startTime:new ie(0),totalAllocatedShare:new ie(0)}},VB=new ie(1e4);var ls={[mo.toBase58()]:3};var ms=B([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 aS}from"@solana/web3.js";var mS=X("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as wS,TOKEN_2022_PROGRAM_ID as kS,TOKEN_PROGRAM_ID as TS}from"@solana/spl-token";import{PublicKey as IS,SystemProgram as BS,TransactionInstruction as SS}from"@solana/web3.js";import xS from"bn.js";var RK=new ds(0);import{PublicKey as ps,Transaction as Un,TransactionInstruction as fs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ys}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(y=>ue.getPdaOwnerId(t,y,r,m).publicKey));let c=await Be(e,[...l,...s]),p=[];for(let m=0;m<c.length;m++){let y=Math.floor(m/o.length),d=m%o.length,f=l[d],k=s[m],b=c[d],g=c[o.length+m];if(!(b&&g)||b.data.length!==ue.POOL_LAYOUT.span||g.data.length!==ue.OWNER_LAYOUT.span)continue;let T=ue.POOL_LAYOUT.decode(b.data),h=ue.OWNER_LAYOUT.decode(g.data),R=T.openTime.toNumber(),L=T.endTime.toNumber(),S=h.tokenInfo.map(C=>C.debtAmount.gt(new ri(0))).filter(C=>!C).length!==3,K=a>R&&a<L&&T.status===1,I=S&&K;p.push({programId:t,poolId:f,ammId:T.ammId,ownerAccountId:k,snapshotLpAmount:h.lpAmount,project:ue.VERSION_PROJECT[y],openTime:R,endTime:L,canClaim:I,canClaimErrorType:S?K?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:T.tokenInfo.map((C,N)=>({mintAddress:C.mintAddress,mintVault:C.mintVault,mintDecimals:C.mintDecimals,perLpLoss:C.perLpLoss,debtAmount:h.tokenInfo[N].debtAmount.add(h.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:y}=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});y&&r.addInstruction(y),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 y=[];for(let d of m.tokenInfo){let{account:f,instructionParams:k}=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});k&&r.addInstruction(k),f&&(l[d.mintAddress.toString()]=f,y.push(f))}r.addInstruction({instructions:[ue.makeClaimInstruction({programId:m.programId,poolInfo:m,ownerInfo:{wallet:a,ownerPda:m.ownerAccountId,claimAddress:y}})]})}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 Un().add(...p.slice(0,r.AllTxData.instructions.length-1)),signer:c},{transaction:new Un().add(...p.slice(r.AllTxData.instructions.length-1)),signer:[]},{transaction:new Un().add(...r.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:o}){let r=B([]),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:ys,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 fs({keys:a,programId:e,data:s})}},he=ue;he.CLAIMED_NUM=3,he.POOL_LAYOUT=B([G(8),x("bump"),x("status"),n("openTime"),n("endTime"),u("ammId"),O(B([x("mintDecimals"),u("mintAddress"),u("mintVault"),n("perLpLoss"),n("totalClaimedAmount")]),ue.CLAIMED_NUM,"tokenInfo"),O(n(),10,"padding")]),he.OWNER_LAYOUT=B([G(8),x("bump"),x("version"),u("poolId"),u("owner"),n("lpAmount"),O(B([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 YK}from"@solana/web3.js";import{getTransferFeeConfig as ZK,MintLayout as HK,TOKEN_2022_PROGRAM_ID as jK,TOKEN_PROGRAM_ID as $K,unpackMint as JK}from"@solana/spl-token";var BC=new Fe(2),SC=new Fe(3),KC=new Fe(5),bs=new Fe(10),xC=new Fe(100),CC=new Fe(1e3),RC=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 GC=X("Raydium_amount"),zC=ft(gs);import j 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(y=>({pubkey:new P(y)}))),r={},a=new Set,l=[];for(let y=0;y<e.length;y++){let d=o[y];if(d.accountInfo===null)throw Error("fetch pool info error: "+String(e[y]));let f=Mn.decode(d.accountInfo.data);r[String(e[y])]=E(F({},f),{programId:d.accountInfo.owner}),a.add(String(f.configId)),l.push(f.vaultA,f.vaultB)}let s={};if(t){let y=[...a],d=await Pe(this.scope.connection,y.map(f=>({pubkey:new P(f)})));for(let f=0;f<y.length;f++){let k=d[f].accountInfo;if(k===null)throw Error("fetch pool config error: "+y[f]);s[y[f]]=Uo.decode(k.data)}}let c={},p=await Pe(this.scope.connection,l.map(y=>({pubkey:new P(y)})));for(let y=0;y<l.length;y++){let d=p[y].accountInfo;if(d===null)throw Error("fetch vault info error: "+l[y]);c[String(l[y])]=new j(Ps.decode(d.data).amount.toString())}let m={};for(let[y,d]of Object.entries(r)){let f=c[d.vaultA.toString()].sub(d.protocolFeesMintA).sub(d.fundFeesMintA).sub(d.creatorFeesMintA),k=c[d.vaultB.toString()].sub(d.protocolFeesMintB).sub(d.fundFeesMintB).sub(d.creatorFeesMintB);m[y]=E(F({},d),{baseReserve:f,quoteReserve:k,vaultAAmount:c[d.vaultA.toString()],vaultBAmount:c[d.vaultB.toString()],configInfo:s[d.configId.toString()],poolPrice:new Ae(k.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,y;let a=e[r],[l,s]=[a.mintA.toBase58(),a.mintB.toBase58()];return E(F({},o),{[r]:E(F({},a),{id:new P(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((y=t[s])==null?void 0:y.feeConfig):void 0}})})})},{})}async getPoolInfoFromRpc(e){let t=await this.getRpcPoolInfo(e,!0),o=await Vt({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 P(e)).publicKey.toBase58()},rpcData:t,computePoolInfo:E(F({},t),{id:new P(e),configInfo:t.configInfo,version:7,authority:it(t.programId).publicKey,mintA:r,mintB:a})}}async createPool(b){var g=b,{poolId:e,programId:t,poolFeeAccount:o,startTime:r,ownerInfo:a,associatedOnly:l=!1,checkCreateATAOwner:s=!1,txVersion:c,feeConfig:p,computeBudgetConfig:m,txTipConfig:y,feePayer:d,addSupportMintExt:f}=g,k=fe(g,["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),h=new j(new P(k.mintA.address).toBuffer()).lte(new j(new P(k.mintB.address).toBuffer())),[R,L]=h?[k.mintA,k.mintB]:[k.mintB,k.mintA],[S,K]=h?[k.mintAAmount,k.mintBAmount]:[k.mintBAmount,k.mintAAmount],I=a.useSOLBalance&&R.address===st.toBase58(),C=a.useSOLBalance&&L.address===st.toBase58(),[N,M]=[new P(R.address),new P(L.address)],D=this.createTxBuilder(d),{account:v,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({mint:N,tokenProgram:R.programId,owner:this.scope.ownerPubKey,createInfo:I?{payer:T,amount:S}:void 0,notUseTokenAccount:I,skipCloseAccount:!I,associatedOnly:I?!1:l,checkCreateATAOwner:s});D.addInstruction(V||{});let{account:z,instructionParams:q}=await this.scope.account.getOrCreateTokenAccount({mint:new P(L.address),tokenProgram:L.programId,owner:this.scope.ownerPubKey,createInfo:C?{payer:T,amount:K}:void 0,notUseTokenAccount:C,skipCloseAccount:!C,associatedOnly:C?!1:l,checkCreateATAOwner:s});if(D.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=vn({poolId:e,programId:t,configId:new P(p.id),mintA:N,mintB:M}),Z=[],ce=[];return f&&(R.programId===ai.toBase58()&&ce.push(Vn(t,new P(R.address)).publicKey),L.programId===ai.toBase58()&&ce.push(Vn(t,new P(L.address)).publicKey),(await this.scope.connection.getMultipleAccountsInfo(ce)).forEach((we,an)=>{we&&Z.push(ce[an])})),D.addInstruction({instructions:[Xo(t,this.scope.ownerPubKey,new P(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 P((ve=R.programId)!=null?ve:pe),new P((ct=L.programId)!=null?ct:pe),U.observationId,S,K,r,Z)],instructionTypes:[Q.CpmmCreatePool]}),D.addCustomComputeBudget(m),D.addTipInstruction(y),D.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:y,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:k,checkCreateATAOwner:b}=F({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},m),g=s?void 0:await this.getRpcPoolInfo(t.id),{liquidity:T,inputAmountFee:h,anotherAmount:R}=s||this.computePairAmount({poolInfo:E(F({},t),{lpAmount:new Ae(g.lpAmount.toString()).div(10**t.lpMint.decimals).toNumber()}),baseReserve:g.baseReserve,quoteReserve:g.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,S=t.mintA.address===st.toString(),K=t.mintB.address===st.toString(),I=this.createTxBuilder(d),[C,N]=[new P(t.mintA.address),new P(t.mintB.address)],{account:M,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new P(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:S||(a?r:L).isZero()?{payer:this.scope.ownerPubKey,amount:a?r:L}:void 0,skipCloseAccount:!S,notUseTokenAccount:S,associatedOnly:!1,checkCreateATAOwner:b});I.addInstruction(D||{});let{account:v,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new P(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:K||(a?L:r).isZero()?{payer:this.scope.ownerPubKey,amount:a?L:r}:void 0,skipCloseAccount:!K,notUseTokenAccount:K,associatedOnly:!1,checkCreateATAOwner:b});I.addInstruction(V||{}),!M&&!v&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",f.tokenAccounts);let z=await f.getCreatedTokenAccount({mint:new P(t.lpMint.address)}),le=await f.handleTokenAccount({side:"out",amount:0,mint:new P(t.lpMint.address),tokenAccount:z,bypassAssociatedCheck:k,checkCreateATAOwner:b}),{tokenAccount:q}=le,U=fe(le,["tokenAccount"]);I.addInstruction(U);let Z=o!=null?o:await this.getCpmmPoolKeys(t.id),ce=new be(new j(1)).sub(l);return I.addInstruction({instructions:[Yo(new P(t.programId),this.scope.ownerPubKey,new P(Z.authority),new P(t.id),q,M,v,new P(Z.vault.A),new P(Z.vault.B),C,N,new P(t.lpMint.address),s?s==null?void 0:s.liquidity:ce.mul(T).quotient,a?h.amount:L,a?L:h.amount)],instructionTypes:[Q.CpmmAddLiquidity],lookupTableAddress:Z.lookupTableAccount?[Z.lookupTableAccount]:[]}),I.addCustomComputeBudget(c),I.addTipInstruction(p),I.versionBuild({txVersion:y,lookupTableAddress:Z.lookupTableAccount?[Z.lookupTableAccount]:void 0})}async withdrawLiquidity(e){var U,Z;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 y=new be(new j(1)).sub(a),d=await this.getRpcPoolInfo(t.id),[f,k]=[y.mul(r.mul(d.baseReserve).div(d.lpAmount)).quotient,y.mul(r.mul(d.quoteReserve).div(d.lpAmount)).quotient],b=await this.scope.fetchEpochInfo(),[g,T]=[Me(f,t.mintA.extensions.feeConfig,b,!1),Me(k,t.mintB.extensions.feeConfig,b,!1)],{account:h}=this.scope,R=this.createTxBuilder(p),[L,S]=[new P(t.mintA.address),new P(t.mintB.address)],K=L.equals(re),I=S.equals(re),C,N,{account:M,instructionParams:D}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new P(t.mintA.address),notUseTokenAccount:K,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(K&&m),associatedOnly:!K,checkCreateATAOwner:!1});C=M,D&&R.addInstruction(D);let{account:v,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new P(t.mintB.address),notUseTokenAccount:I,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(I&&m),associatedOnly:!I,checkCreateATAOwner:!1});N=v,V&&R.addInstruction(V),(!C||!N)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",h.tokenAccounts);let z=await h.getCreatedTokenAccount({mint:new P(t.lpMint.address)});z||this.logAndCreateError("cannot found lp token account","tokenAccounts",h.tokenAccounts);let q=o!=null?o:await this.getCpmmPoolKeys(t.id);return R.addInstruction({instructions:[Qo(new P(t.programId),this.scope.ownerPubKey,new P(q.authority),new P(t.id),z,C,N,new P(q.vault.A),new P(q.vault.B),L,S,new P(t.lpMint.address),r,f.sub((U=g.fee)!=null?U:new j(0)),k.sub((Z=T.fee)!=null?Z:new j(0)))],instructionTypes:[Q.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 D,v,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:y,txVersion:d,feePayer:f}=e,{bypassAssociatedCheck:k,checkCreateATAOwner:b,associatedOnly:g}=F({bypassAssociatedCheck:!1,checkCreateATAOwner:!1,associatedOnly:!0},p),T=this.createTxBuilder(f),[h,R]=[new P(t.mintA.address),new P(t.mintB.address)];a?s.inputAmount=s.inputAmount.mul(new j((1+c)*1e4)).div(new j(1e4)):s.outputAmount=s.outputAmount.mul(new j((1-c)*1e4)).div(new j(1e4));let L=t.mintA.address===re.toBase58(),S=t.mintB.address===re.toBase58(),{account:K,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({mint:h,tokenProgram:new P((D=t.mintA.programId)!=null?D: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:g,checkCreateATAOwner:b});I&&T.addInstruction(I);let{account:C,instructionParams:N}=await this.scope.account.getOrCreateTokenAccount({mint:R,tokenProgram:new P((v=t.mintB.programId)!=null?v:pe),owner:this.scope.ownerPubKey,createInfo:S||r?{payer:f||this.scope.ownerPubKey,amount:r?0:s.inputAmount}:void 0,notUseTokenAccount:S,skipCloseAccount:!S,associatedOnly:S?!1:g,checkCreateATAOwner:b});N&&T.addInstruction(N),(!K||!C)&&this.logAndCreateError("user do not have token account",{mintA:t.mintA.symbol||t.mintA.address,mintB:t.mintB.symbol||t.mintB.address,mintATokenAcc:K,mintBTokenAcc:C,mintAUseSOLBalance:L,mintBUseSOLBalance:S,associatedOnly:g});let M=o!=null?o:await this.getCpmmPoolKeys(t.id);return T.addInstruction({instructions:[a?Zo(new P(t.programId),this.scope.ownerPubKey,new P(M.authority),new P(M.config.id),new P(t.id),r?K:C,r?C:K,new P(M.vault[r?"A":"B"]),new P(M.vault[r?"B":"A"]),new P((q=t[r?"mintA":"mintB"].programId)!=null?q:pe),new P((U=t[r?"mintB":"mintA"].programId)!=null?U:pe),r?h:R,r?R:h,rt(new P(t.programId),new P(t.id)).publicKey,s.inputAmount,s.outputAmount):Jt(new P(t.programId),this.scope.ownerPubKey,new P(M.authority),new P(M.config.id),new P(t.id),r?K:C,r?C:K,new P(M.vault[r?"A":"B"]),new P(M.vault[r?"B":"A"]),new P((V=t[r?"mintA":"mintB"].programId)!=null?V:pe),new P((z=t[r?"mintB":"mintA"].programId)!=null?z:pe),r?h:R,r?R:h,rt(new P(t.programId),new P(t.id)).publicKey,l,s.outputAmount)],instructionTypes:[a?Q.CpmmSwapBaseOut:Q.ClmmSwapBaseIn]}),T.addCustomComputeBudget(m),T.addTipInstruction(y),T.versionBuild({txVersion:d,lookupTableAddress:M.lookupTableAccount?[M.lookupTableAccount]:void 0})}async lockLp(e){var d,f,k,b,g;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),y=await Ho({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:(k=e.programId)!=null?k:bt,lockAuthProgram:(b=e.authProgram)!=null?b:_t,lpAmount:o,withMetadata:(g=e.withMetadata)!=null?g:!0,getEphemeralSigners:e.getEphemeralSigners});return p.addInstruction(y),p.addCustomComputeBudget(r),p.addTipInstruction(a),p.versionBuild({txVersion:l,extInfo:y.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=_t,cpmmProgram:s,computeBudgetConfig:c,txTipConfig:p,txVersion:m,closeWsol:y=!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),[k,b]=[new P(t.mintA.address),new P(t.mintB.address)],g=k.equals(re),T=b.equals(re),h,R,{account:L,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new P(t.mintA.address),notUseTokenAccount:g,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(g&&y),associatedOnly:!g,checkCreateATAOwner:!1});h=L,S&&f.addInstruction(S);let{account:K,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new P(t.mintB.address),notUseTokenAccount:T,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!(T&&y),associatedOnly:!T,checkCreateATAOwner:!1});R=K,I&&f.addInstruction(I),(!h||!R)&&this.logAndCreateError("cannot found target token accounts",{tokenAccountA:h,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:D}=te(l,new P(t.lpMint.address),pe);return f.addInstruction({instructions:[En({programId:a,nftOwner:this.scope.ownerPubKey,auth:l,nftMint:r,nftAccount:N,lockPda:M,poolId:new P(t.id),mintLp:new P(C.mintLp.address),userVaultA:h,userVaultB:R,poolVaultA:new P(C.vault.A),poolVaultB:new P(C.vault.B),mintA:k,mintB:b,lockLpVault:D,lpFeeAmount:o,cpmmProgram:s==null?void 0:s.programId,cpmmAuthProgram:s==null?void 0:s.authProgram})],instructionTypes:[Q.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=_t,cpmmProgram:a,computeBudgetConfig:l,txVersion:s,closeWsol:c=!0}=e,p=e.feePayer||this.scope.ownerPubKey,m=this.createTxBuilder(p),y={},d=[];for(let k of t){let{poolInfo:b,lpFeeAmount:g,nftMint:T}=k;if(g.isZero())continue;let[h,R]=[new P(b.mintA.address),new P(b.mintB.address)],L=h.equals(re),S=R.equals(re),K=y[b.mintA.address],I=y[b.mintB.address];if(!K)if(L){let{account:v,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.mintA.programId,mint:new P(b.mintA.address),notUseTokenAccount:!0,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!c,associatedOnly:!1,checkCreateATAOwner:!1});K=v,V&&m.addInstruction(V),y[b.mintA.address]=v}else{let v=new P(b.mintA.address);K=this.scope.account.getAssociatedTokenAccount(v,new P(b.mintA.programId)),m.addInstruction({instructions:[ut(this.scope.ownerPubKey,K,this.scope.ownerPubKey,v,new P(b.mintA.programId))]}),y[b.mintA.address]=K}if(!I)if(S){let{account:v,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:b.mintB.programId,mint:new P(b.mintB.address),notUseTokenAccount:!0,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!c,associatedOnly:!1,checkCreateATAOwner:!1});I=v,V&&m.addInstruction(V),y[b.mintB.address]=v}else{let v=new P(b.mintB.address);I=this.scope.account.getAssociatedTokenAccount(v,new P(b.mintB.programId)),m.addInstruction({instructions:[ut(this.scope.ownerPubKey,I,this.scope.ownerPubKey,v,new P(b.mintB.programId))]}),y[b.mintB.address]=I}(!K||!I)&&this.logAndCreateError("cannot found target token accounts",{tokenAccountA:K,tokenAccountB:I});let C=(f=k.poolKeys)!=null?f:await this.getCpmmPoolKeys(b.id);C.lookupTableAccount&&d.push(C.lookupTableAccount);let{publicKey:N}=te(p,T,pe),{publicKey:M}=at(o,T),{publicKey:D}=te(r,new P(b.lpMint.address),pe);m.addInstruction({instructions:[En({programId:o,nftOwner:this.scope.ownerPubKey,auth:r,nftMint:T,nftAccount:N,lockPda:M,poolId:new P(b.id),mintLp:new P(C.mintLp.address),userVaultA:K,userVaultB:I,poolVaultA:new P(C.vault.A),poolVaultB:new P(C.vault.B),mintA:h,mintB:R,lockLpVault:D,lpFeeAmount:g,cpmmProgram:a==null?void 0:a.programId,cpmmAuthProgram:a==null?void 0:a.authProgram})],instructionTypes:[Q.CpmmCollectLockFee]})}return s===0?m.sizeCheckBuildV0({computeBudgetConfig:l,lookupTableAddress:d}):m.sizeCheckBuild({computeBudgetConfig:l})}async createPoolWithPermission(b){var g=b,{poolId:e,programId:t,poolFeeAccount:o,startTime:r,ownerInfo:a,associatedOnly:l=!1,checkCreateATAOwner:s=!1,txVersion:c,feeConfig:p,computeBudgetConfig:m,txTipConfig:y,feePayer:d,feeOn:f}=g,k=fe(g,["poolId","programId","poolFeeAccount","startTime","ownerInfo","associatedOnly","checkCreateATAOwner","txVersion","feeConfig","computeBudgetConfig","txTipConfig","feePayer","feeOn"]);var Z,ce,le;console.log("***this method only available for wallet with permissions***");let T=a.feePayer||((Z=this.scope.owner)==null?void 0:Z.publicKey),h=new j(new P(k.mintA.address).toBuffer()).lte(new j(new P(k.mintB.address).toBuffer())),[R,L]=h?[k.mintA,k.mintB]:[k.mintB,k.mintA],[S,K]=h?[k.mintAAmount,k.mintBAmount]:[k.mintBAmount,k.mintAAmount],I=a.useSOLBalance&&R.address===st.toBase58(),C=a.useSOLBalance&&L.address===st.toBase58(),[N,M]=[new P(R.address),new P(L.address)],D=this.createTxBuilder(d),{account:v,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({mint:N,tokenProgram:R.programId,owner:this.scope.ownerPubKey,createInfo:I?{payer:T,amount:S}:void 0,notUseTokenAccount:I,skipCloseAccount:!I,associatedOnly:I?!1:l,checkCreateATAOwner:s});D.addInstruction(V||{});let{account:z,instructionParams:q}=await this.scope.account.getOrCreateTokenAccount({mint:new P(L.address),tokenProgram:L.programId,owner:this.scope.ownerPubKey,createInfo:C?{payer:T,amount:K}:void 0,notUseTokenAccount:C,skipCloseAccount:!C,associatedOnly:C?!1:l,checkCreateATAOwner:s});if(D.addInstruction(q||{}),v===void 0||z===void 0)throw Error("you don't has some token account");let U=vn({poolId:e,programId:t,configId:new P(p.id),mintA:N,mintB:M});return D.addInstruction({instructions:[$o(t,this.scope.ownerPubKey,this.scope.ownerPubKey,new P(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 P((ce=R.programId)!=null?ce:pe),new P((le=L.programId)!=null?le:pe),U.observationId,zo(t,this.scope.ownerPubKey).publicKey,S,K,r,f)],instructionTypes:[Q.CpmmCreatePool]}),D.addCustomComputeBudget(m),D.addTipInstruction(y),D.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),[y,d,f,k]=[new P(e.mintA.address),new P(e.mintB.address),new P(e.mintA.programId),new P(e.mintB.programId)],b=this.scope.account.getAssociatedTokenAccount(y,f),g=this.scope.account.getAssociatedTokenAccount(d,k);return p.addInstruction({instructions:[ut(this.scope.ownerPubKey,b,this.scope.ownerPubKey,y,new P(e.mintA.programId)),ut(this.scope.ownerPubKey,g,this.scope.ownerPubKey,d,new P(e.mintB.programId))]}),p.addInstruction({instructions:[Dn(o,this.scope.ownerPubKey,new P(m.authority),new P(m.id),new P(m.config.id),new P(m.vault.A),new P(m.vault.B),y,d,b,g,f,k)],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(g=>g.id),f=95,k=[];for(let g=0;g<d.length;g+=f)k.push(d.slice(g,g+f));m=(await Promise.all(k.map(g=>this.scope.api.fetchPoolKeysById({idList:g})))).flat()}let y=m.reduce((d,f)=>E(F({},d),{[f.id]:f}),{});for(let d of e){let f=y[d.id]||await this.getCpmmPoolKeys(d.id),[k,b,g,T]=[new P(d.mintA.address),new P(d.mintB.address),new P(d.mintA.programId),new P(d.mintB.programId)],h=p[d.mintA.address]||this.scope.account.getAssociatedTokenAccount(k,g),R=p[d.mintB.address]||this.scope.account.getAssociatedTokenAccount(b,T);p[d.mintA.address]=h,p[d.mintB.address]=R,c.addInstruction({instructions:[Dn(o,this.scope.ownerPubKey,new P(f.authority),new P(f.id),new P(f.config.id),new P(f.vault.A),new P(f.vault.B),k,b,h,R,g,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),[y,d,f,k]=[new P(e.mintA.address),new P(e.mintB.address),new P(e.mintA.programId),new P(e.mintB.programId)],b=this.scope.account.getAssociatedTokenAccount(y,f),g=this.scope.account.getAssociatedTokenAccount(d,k);return p.addInstruction({instructions:[ut(this.scope.ownerPubKey,b,this.scope.ownerPubKey,y,new P(e.mintA.programId)),ut(this.scope.ownerPubKey,g,this.scope.ownerPubKey,d,new P(e.mintB.programId))]}),p.addInstruction({instructions:[jo(o,c,this.scope.ownerPubKey,new P(m.authority),new P(m.id),new P(m.vault.A),new P(m.vault.B),y,d,b,g,f,k)],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 j((1-r)*1e4)).div(new j(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,S,K,I,C,N,M,D,v;let c=1-Number(a.toSignificant())/100,p=new j(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),y=p.sub((L=m.fee)!=null?L:new j(0)),d=new j(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:",(K=(S=m.fee)==null?void 0:S.toString())!=null?K:0,"anotherToken:",s?e.mintB.symbol:e.mintA.symbol,"slippage:",`${a.toSignificant()}%`);let f=s?"base":"quote";this.logDebug("input side:",f);let k=y.mul(d).div(f==="base"?t:o),b={amount:oe,fee:void 0,expirationTime:void 0};if(!y.isZero()){let V=As(k,t,o,d);this.logDebug("lpAmountData:",{amountA:V.amountA.toString(),amountB:V.amountB.toString()}),b=Me(V[s?"amountB":"amountA"],e[s?"mintB":"mintA"].extensions.feeConfig,l,!0)}let g=new be(new j(1)).add(a),T=new be(new j(1)).sub(a),h=Me(g.mul(b.amount.sub((I=b.fee)!=null?I:new j(0))).quotient,e[s?"mintB":"mintA"].extensions.feeConfig,l,!0),R=Me(T.mul(b.amount.sub((C=b.fee)!=null?C:new j(0))).quotient,e[s?"mintB":"mintA"].extensions.feeConfig,l,!0);return this.logDebug("anotherAmount:",b.amount.toString(),"anotherAmountFee:",(M=(N=b.fee)==null?void 0:N.toString())!=null?M:0,"maxAnotherAmount:",h.amount.toString(),"maxAnotherAmountFee:",(v=(D=h.fee)==null?void 0:D.toString())!=null?v:0),{inputAmountFee:m,anotherAmount:b,maxAnotherAmount:h,minAnotherAmount:R,liquidity:k}}async fetchCpmmLockBalances(){await this.scope.account.fetchWalletTokenAccounts({forceUpdate:!0});let e=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new j(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 P(r.get(a[c].toString()))}))}};function As(i,e,t,o){let r=i.mul(e).div(o);!r.isZero()&&!i.mul(e).mod(o).isZero()&&(r=r.add(new j(1)));let a=i.mul(t).div(o);return!a.isZero()&&!i.mul(t).mod(o).isZero()&&(a=a.add(new j(1))),{amountA:r,amountB:a}}export{rn as default};
//# sourceMappingURL=cpmm.mjs.map