@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
3 lines • 108 kB
JavaScript
var Ti=Object.defineProperty,hi=Object.defineProperties;var Bi=Object.getOwnPropertyDescriptors;var Bt=Object.getOwnPropertySymbols;var Jn=Object.prototype.hasOwnProperty,eo=Object.prototype.propertyIsEnumerable;var jn=(i,e,t)=>e in i?Ti(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,F=(i,e)=>{for(var t in e||(e={}))Jn.call(e,t)&&jn(i,t,e[t]);if(Bt)for(var t of Bt(e))eo.call(e,t)&&jn(i,t,e[t]);return i},q=(i,e)=>hi(i,Bi(e));var xe=(i,e)=>{var t={};for(var o in i)Jn.call(i,o)&&e.indexOf(o)<0&&(t[o]=i[o]);if(i!=null&&Bt)for(var o of Bt(i))e.indexOf(o)<0&&eo.call(i,o)&&(t[o]=i[o]);return t};import{PublicKey as Z,SystemProgram as Os}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as wi}from"@solana/spl-token";import{PublicKey as Si}from"@solana/web3.js";import{get as to,set as Ii}from"lodash";var en=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}},no={},xi={};function H(i){let e=to(no,i);if(!e){let t=to(xi,i);e=new en({name:i,logLevel:t}),Ii(no,i,e)}return e}import{MINT_SIZE as Us,TOKEN_PROGRAM_ID as Gs,getTransferFeeConfig as zs,unpackMint as Xs}from"@solana/spl-token";var tn=H("Raydium_accountInfo_util");async function Pe(i,e,t){let{batchRequest:o,commitment:r="confirmed",chunkCount:s=100}=F({batchRequest:!1},t),c=nn(e,s),u=new Array(c.length).fill([]);if(o){let b=c.map(d=>{let y=i._buildArgs([d.map(w=>w.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:y}}),l=nn(b,10);u=(await(await Promise.all(l.map(async d=>await i._rpcBatchRequest(d)))).flat()).map(d=>(d.error&&tn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${d.error.message}`),d.result.value.map(y=>{if(y){let{data:w,executable:P,lamports:A,owner:k,rentEpoch:x}=y;return w.length!==2&&w[1]!=="base64"&&tn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(w[0],"base64"),executable:P,lamports:A,owner:new Si(k),rentEpoch:x}}return null})))}else try{u=await Promise.all(c.map(b=>i.getMultipleAccountsInfo(b,r)))}catch(b){b instanceof Error&&tn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${b.message}`)}return u.flat()}import Ue from"bn.js";import LR from"decimal.js";import Fi from"big.js";import St from"bn.js";import Ki from"toformat";var Ci=Ki,it=Ci;import xt from"big.js";import Li from"bn.js";import Oi from"decimal.js-light";import rt from"bn.js";var oo=9007199254740991;function W(i){let e=H("Raydium_parseBigNumberish");if(i instanceof rt)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new rt(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=oo||i<=-oo)&&e.logWithError(`BigNumberish number overflow: ${i}`),new rt(String(i))):typeof i=="bigint"?new rt(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new rt(0))}var It=H("module/fraction"),on=it(xt),at=it(Oi),Ni={[0]:at.ROUND_DOWN,[1]:at.ROUND_HALF_UP,[2]:at.ROUND_UP},Mi={[0]:xt.roundDown,[1]:xt.roundHalfUp,[2]:xt.roundUp},$=class{constructor(e,t=new Li(1)){this.numerator=W(e),this.denominator=W(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new $(this.denominator,this.numerator)}add(e){let t=e instanceof $?e:new $(W(e));return this.denominator.eq(t.denominator)?new $(this.numerator.add(t.numerator),this.denominator):new $(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof $?e:new $(W(e));return this.denominator.eq(t.denominator)?new $(this.numerator.sub(t.numerator),this.denominator):new $(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof $?e:new $(W(e));return new $(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof $?e:new $(W(e));return new $(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},o=1){Number.isInteger(e)||It.logWithError(`${e} is not an integer.`),e<=0&&It.logWithError(`${e} is not positive.`),at.set({precision:e+1,rounding:Ni[o]});let r=new at(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)||It.logWithError(`${e} is not an integer.`),e<0&&It.logWithError(`${e} is negative.`),on.DP=e,on.RM=Mi[o]||1,new on(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var vi=H("Raydium_amount"),io=it(Fi);function _i(i,e){let t="0",o="0";if(i.includes(".")){let r=i.split(".");r.length===2?([t,o]=r,o=o.padEnd(e,"0")):vi.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,o.slice(0,e)||o]}var pe=class extends ${constructor(t,o,r=!0,s){let c=new St(0),u=rn.pow(new St(t.decimals));if(r)c=W(o);else{let b=new St(0),l=new St(0);if(typeof o=="string"||typeof o=="number"||typeof o=="bigint"){let[m,d]=_i(o.toString(),t.decimals);b=W(m),l=W(d)}b=b.mul(u),c=b.add(l)}super(c,u);this.logger=H(s||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new pe(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new pe(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,o,r=0){return super.toSignificant(t,o,r)}toFixed(t=this.token.decimals,o,r=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,o,r)}toExact(t={groupSeparator:""}){return io.DP=this.token.decimals,new io(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Vi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ro}from"@solana/spl-token";var Kt={chainId:101,address:Vi.default.toBase58(),programId:ro.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},se={chainId:101,address:"So11111111111111111111111111111111111111112",programId:ro.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";import{PublicKey as J,SystemProgram as ao,SYSVAR_RENT_PUBKEY as Ei}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Di}from"@solana/spl-token";function g({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var an=[g({pubkey:Di,isWritable:!1}),g({pubkey:ao.programId,isWritable:!1}),g({pubkey:Ei,isWritable:!1})];function sn({publicKey:i,transformSol:e}){let t=un(i.toString());if(t instanceof J)return e&&t.equals(ie)?le:t;if(e&&t.toString()===ie.toBase58())return le;if(typeof t=="string"){if(t===J.default.toBase58())return J.default;try{return new J(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function un(i){try{return new J(i)}catch{return i}}var cn=new J("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),st=new J("SysvarRent111111111111111111111111111111111"),Bu=new J("SysvarC1ock11111111111111111111111111111111"),Ct=new J("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Wi=new J("Sysvar1nstructions1111111111111111111111111"),qi=ao.programId,Iu=new J("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),xu=new J("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Su=new J("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ku=new J("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Cu=new J("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ru=new J("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Lu=new J("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ou=new J("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Nu=new J("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Mu=new J("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Fu=new J("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),le=new J("So11111111111111111111111111111111111111112"),ie=J.default;function Oe(i){return sn({publicKey:i,transformSol:!0})}var mn=class{constructor({mint:e,decimals:t,symbol:o,name:r,skipMint:s=!1,isToken2022:c=!1}){if(e===ie.toBase58()||e instanceof ln&&ie.equals(e)){this.decimals=se.decimals,this.symbol=se.symbol,this.name=se.name,this.mint=new ln(se.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=s?ln.default:sn({publicKey:e}),this.isToken2022=c}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ae=mn;ae.WSOL=new mn(q(F({},se),{mint:se.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}},Rt=dn;Rt.SOL=new dn(Kt);import Ui from"bn.js";var so=new $(new Ui(100)),Ke=class extends ${toSignificant(e=5,t,o){return this.mul(so).toSignificant(e,t,o)}toFixed(e=2,t,o){return this.mul(so).toFixed(e,t,o)}};var Gi=H("Raydium_price"),Ae=class extends ${constructor(t){let{baseToken:o,quoteToken:r,numerator:s,denominator:c}=t;super(s,c);this.baseToken=o,this.quoteToken=r,this.scalar=new $(pn(o.decimals),pn(r.decimals))}get raw(){return new $(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ae({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Gi.logWithError("mul token not equals");let o=super.mul(t);return new Ae({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:o.denominator,numerator:o.numerator})}toSignificant(t=this.quoteToken.decimals,o,r){return this.adjusted.toSignificant(t,o,r)}toFixed(t=this.quoteToken.decimals,o,r){return this.adjusted.toFixed(t,o,r)}};import{merge as NC}from"lodash";import rc from"axios";var uo={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=q(F({},uo),{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 Kc=H("Raydium_Api");import{PublicKey as Qm,SystemProgram as Zm}from"@solana/web3.js";import{AccountLayout as td,createAssociatedTokenAccountIdempotentInstruction as nd,TOKEN_PROGRAM_ID as od,TOKEN_2022_PROGRAM_ID as id}from"@solana/spl-token";import{PublicKey as Qe,sendAndConfirmTransaction as An,SystemProgram as $i,Transaction as lt,TransactionMessage as mt,VersionedTransaction as dt}from"@solana/web3.js";import ji from"axios";import{PublicKey as fn,AddressLookupTableAccount as Ye}from"@solana/web3.js";async function yn({connection:i,address:e,cluster:t="mainnet"}){let o=await Pe(i,[...new Set(e.map(s=>s.toString()))].map(s=>new fn(s))),r={};for(let s=0;s<e.length;s++){let c=o[s],u=e[s];if(!c)continue;let b=new Ye({key:u,state:Ye.deserialize(c.data)});r[u.toString()]=b,t==="devnet"?Xe[u.toString()]=b:ze[u.toString()]=b}return r}var ze={},bn=async i=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(ze[e])return ze;let t=new fn(e),o=await i.getAccountInfo(t);return o&&(ze[e]=new Ye({key:t,state:Ye.deserialize(o.data)})),ze},Xe={},gn=async i=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Xe[e])return Xe;let t=new fn(e),o=await i.getAccountInfo(t);return o&&(Xe[e]=new Ye({key:t,state:Ye.deserialize(o.data)})),Xe};var U={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{ComputeBudgetProgram as co,Keypair as mo,PublicKey as Xi,Transaction as po,TransactionMessage as Yi,VersionedTransaction as fo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Hi}from"@solana/spl-token";var lo=H("Raydium_txUtil"),yo=1644;function Lt(i){let e=[],t=[];return i.microLamports&&(e.push(co.setComputeUnitPrice({microLamports:i.microLamports})),t.push(U.SetComputeUnitPrice)),i.units&&(e.push(co.setComputeUnitLimit({units:i.units})),t.push(U.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function He(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,s=>{if(clearTimeout(r),!s.err){t("");return}o(Object.assign(s.err,{txId:e}))},"confirmed")})}function Pn(i,e){i.length<1&&lo.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&lo.logWithError(`no signers provided:, ${e.toString()}`);let t=new po;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<yo}catch{return!1}}function me(i,e){let[t,o]=Xi.findProgramAddressSync(i,e);return{publicKey:t,nonce:o}}function ut({instructions:i,payer:e,signers:t}){return Pn(i,[e,...t])}function ct({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:o=mo.generate().publicKey.toString()}){let s=new Yi({payerKey:e,recentBlockhash:o,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new fo(s).serialize()).toString("base64").length<yo}catch{return!1}}var Qi=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i),Zi=i=>{let e=i.serialize({requireAllSignatures:!1,verifySignatures:!1});i instanceof fo&&(e=Qi(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Ee(i){let e=[];return i.forEach(t=>{t instanceof po&&(t.recentBlockhash||(t.recentBlockhash=Hi.toBase58()),t.feePayer||(t.feePayer=mo.generate().publicKey)),e.push(Zi(t))}),console.log("simulate tx string:",e),e}var Nt=2e3,Mt=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 ji.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($i.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new Qe(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(U.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:s=[],lookupTableAddress:c=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...o),this.instructionTypes.push(...r),this.endInstructionTypes.push(...s),this.lookupTableAddress.push(...c.filter(u=>u!==Qe.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:o}){return e===0?await this.buildV0(q(F({},t||{}),{lookupTableAddress:o})):this.build(t)}build(e){var o;let t=new lt;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:s,skipPreflight:c=!0,sendAndConfirm:u,notSendToRpc:b}=r||{},l=s!=null?s:await He(this.connection,this.blockhashCommitment);if(t.recentBlockhash=l,this.signers.length&&t.sign(...this.signers),Ee([t]),(m=this.owner)!=null&&m.isKeyPair)return{txId:u?await An(this.connection,t,this.signers.find(y=>y.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:c}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:c}),signedTx:t};if(this.signAllTransactions){let d=await this.signAllTransactions([t]);if(this.signers.length)for(let y of d)try{y.sign(...this.signers)}catch{}return{txId:b?"":await this.connection.sendRawTransaction(d[0].serialize(),{skipPreflight:c}),signedTx:d[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var l;let{extraPreBuildData:t=[],extInfo:o}=e,{transaction:r}=this.build(o),s=t.filter(m=>m.transaction.instructions.length>0),c=[r,...s.map(m=>m.transaction)],u=[this.signers,...s.map(m=>m.signers)],b=[...this.instructionTypes,...s.map(m=>m.instructionTypes).flat()];return(l=this.owner)!=null&&l.signer&&u.forEach(m=>{m.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:c,signers:u,instructionTypes:b,execute:async m=>{var x;let{sequentially:d,onTxUpdate:y,skipTxCount:w=0,recentBlockHash:P,skipPreflight:A=!0}=m||{},k=P!=null?P:await He(this.connection,this.blockhashCommitment);if((x=this.owner)!=null&&x.isKeyPair){if(d){let S=[],N=0;for(let O of c){if(++N,N<=w)continue;let B=await An(this.connection,O,this.signers.find(K=>K.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:A});S.push(B)}return{txIds:S,signedTxs:c}}return{txIds:await await Promise.all(c.map(async S=>(S.recentBlockhash=k,await this.connection.sendRawTransaction(S.serialize(),{skipPreflight:A})))),signedTxs:c}}if(this.signAllTransactions){let S=c.map((O,B)=>(O.recentBlockhash=k,u[B].length&&O.sign(...u[B]),O));Ee(S);let N=await this.signAllTransactions(S);if(d){let O=0,B=[],K=async()=>{if(!N[O])return;let C=await this.connection.sendRawTransaction(N[O].serialize(),{skipPreflight:A});B.push({txId:C,status:"sent",signedTx:N[O]}),y==null||y([...B]),O++;let M=!1,R=null,L=null,Y=_=>{R!==null&&clearInterval(R),L!==null&&this.connection.removeSignatureListener(L);let E=B.findIndex(V=>V.txId===C);if(E>-1){if(B[E].status==="error"||B[E].status==="success")return;B[E].status=_.err?"error":"success"}y==null||y([...B]),_.err||K()};this.loopMultiTxStatus&&(R=setInterval(async()=>{var _;if(M){clearInterval(R);return}try{let E=await this.connection.getTransaction(C,{commitment:"confirmed",maxSupportedTransactionVersion:1});E&&(M=!0,clearInterval(R),Y({err:((_=E.meta)==null?void 0:_.err)||null}),console.log("tx status from getTransaction:",C))}catch(E){M=!0,clearInterval(R),console.error("getTransaction timeout:",E,C)}},Nt)),L=this.connection.onSignature(C,_=>{if(M){this.connection.removeSignatureListener(L);return}M=!0,Y(_)},"confirmed"),this.connection.getSignatureStatus(C)};return await K(),{txIds:B.map(C=>C.txId),signedTxs:N}}else{let O=[];for(let B=0;B<N.length;B+=1){let K=await this.connection.sendRawTransaction(N[B].serialize(),{skipPreflight:A});O.push(K)}return{txIds:O,signedTxs:N}}}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 A;let P=e||{},{lookupTableCache:t={},lookupTableAddress:o=[],forerunCreate:r,recentBlockhash:s}=P,c=xe(P,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),u=F(F({},this.cluster==="devnet"?await gn(this.connection):await bn(this.connection)),t),b=Array.from(new Set([...o,...this.lookupTableAddress])),l=[];for(let k of b)u[k]===void 0&&l.push(new Qe(k));let m=await yn({connection:this.connection,address:l});for(let[k,x]of Object.entries(m))u[k]=x;let d=r?Qe.default.toBase58():s!=null?s:await He(this.connection,this.blockhashCommitment),y=new mt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(u));((A=this.owner)==null?void 0:A.signer)&&!this.signers.some(k=>k.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let w=new dt(y);return w.sign(this.signers),{builder:this,transaction:w,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async k=>{var O;let{skipPreflight:x=!0,sendAndConfirm:S,notSendToRpc:N}=k||{};if(Ee([w]),(O=this.owner)!=null&&O.isKeyPair){let B=await this.connection.sendTransaction(w,{skipPreflight:x});return S&&await Ot(this.connection,B),{txId:B,signedTx:w}}if(this.signAllTransactions){let B=await this.signAllTransactions([w]);if(this.signers.length)for(let K of B)try{K.sign(this.signers)}catch{}return{txId:N?"":await this.connection.sendTransaction(B[0],{skipPreflight:x}),signedTx:B[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:c||{}}}async buildV0MultiTx(e){var l;let{extraPreBuildData:t=[],buildProps:o}=e,{transaction:r}=await this.buildV0(o),s=t.filter(m=>m.builder.instructions.length>0),c=[r,...s.map(m=>m.transaction)],u=[this.signers,...s.map(m=>m.signers)],b=[...this.instructionTypes,...s.map(m=>m.instructionTypes).flat()];return(l=this.owner)!=null&&l.signer&&u.forEach(m=>{m.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),c.forEach(async(m,d)=>{m.sign(u[d])}),{builder:this,transactions:c,signers:u,instructionTypes:b,buildProps:o,execute:async m=>{var A;let{sequentially:d,onTxUpdate:y,recentBlockHash:w,skipPreflight:P=!0}=m||{};if(w&&c.forEach(k=>k.message.recentBlockhash=w),Ee(c),(A=this.owner)!=null&&A.isKeyPair){if(d){let k=[];for(let x of c){let S=await this.connection.sendTransaction(x,{skipPreflight:P});await Ot(this.connection,S),k.push(S)}return{txIds:k,signedTxs:c}}return{txIds:await Promise.all(c.map(async k=>await this.connection.sendTransaction(k,{skipPreflight:P}))),signedTxs:c}}if(this.signAllTransactions){let k=await this.signAllTransactions(c);if(d){let x=0,S=[],N=async()=>{if(!k[x])return;let O=await this.connection.sendTransaction(k[x],{skipPreflight:P});S.push({txId:O,status:"sent",signedTx:k[x]}),y==null||y([...S]),x++;let B=!1,K=null,C=null,M=R=>{K!==null&&clearInterval(K),C!==null&&this.connection.removeSignatureListener(C);let L=S.findIndex(Y=>Y.txId===O);if(L>-1){if(S[L].status==="error"||S[L].status==="success")return;S[L].status=R.err?"error":"success"}y==null||y([...S]),R.err||N()};this.loopMultiTxStatus&&(K=setInterval(async()=>{var R;if(B){clearInterval(K);return}try{let L=await this.connection.getTransaction(O,{commitment:"confirmed",maxSupportedTransactionVersion:1});L&&(B=!0,clearInterval(K),M({err:((R=L.meta)==null?void 0:R.err)||null}),console.log("tx status from getTransaction:",O))}catch(L){B=!0,clearInterval(K),console.error("getTransaction timeout:",L,O)}},Nt)),C=this.connection.onSignature(O,R=>{if(B){this.connection.removeSignatureListener(C);return}B=!0,M(R)},"confirmed"),this.connection.getSignatureStatus(O)};return N(),{txIds:[],signedTxs:k}}else{let x=[];for(let S=0;S<k.length;S+=1){let N=await this.connection.sendTransaction(k[S],{skipPreflight:P});x.push(N)}return{txIds:x,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var y;let d=e||{},{splitIns:t=[],computeBudgetConfig:o}=d,r=xe(d,["splitIns","computeBudgetConfig"]),s=o?Lt(o):{instructions:[],instructionTypes:[]},c=this.signers.reduce((w,P)=>q(F({},w),{[P.publicKey.toBase58()]:P}),{}),u=[],b=[],l=[],m=0;if(this.allInstructions.forEach(w=>{let P=[...l,w],A=o?[...s.instructions,...P]:P,x=[...new Set(P.map(S=>S.keys.filter(N=>N.isSigner).map(N=>N.pubkey.toString())).flat()).values()].map(S=>new Qe(S));if(w!==t[m]&&l.length<12&&(ut({instructions:A,payer:this.feePayer,signers:x})||ut({instructions:P,payer:this.feePayer,signers:x})))l.push(w);else{if(l.length===0)throw Error("item ins too big");m+=w===t[m]?1:0,ut({instructions:o?[...s.instructions,...l]:[...l],payer:this.feePayer,signers:x})?u.push(new lt().add(...s.instructions,...l)):u.push(new lt().add(...l)),b.push(Array.from(new Set(l.map(S=>S.keys.filter(N=>N.isSigner).map(N=>N.pubkey.toString())).flat())).map(S=>c[S]).filter(S=>S!==void 0)),l=[w]}}),l.length>0){let P=[...new Set(l.map(A=>A.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat()).values()].map(A=>c[A]).filter(A=>A!==void 0);ut({instructions:o?[...s.instructions,...l]:[...l],payer:this.feePayer,signers:P.map(A=>A.publicKey)})?u.push(new lt().add(...s.instructions,...l)):u.push(new lt().add(...l)),b.push(P)}return u.forEach(w=>w.feePayer=this.feePayer),(y=this.owner)!=null&&y.signer&&b.forEach(w=>{w.some(P=>P.publicKey.equals(this.owner.publicKey))||w.push(this.owner.signer)}),{builder:this,transactions:u,signers:b,instructionTypes:this.instructionTypes,execute:async w=>{var O;let{sequentially:P,onTxUpdate:A,skipTxCount:k=0,recentBlockHash:x,skipPreflight:S=!0}=w||{},N=x!=null?x:await He(this.connection,this.blockhashCommitment);if(u.forEach(async(B,K)=>{B.recentBlockhash=N,b[K].length&&B.sign(...b[K])}),Ee(u),(O=this.owner)!=null&&O.isKeyPair){if(P){let B=0,K=[];for(let C of u){if(++B,B<=k){K.push("tx skipped");continue}let M=await An(this.connection,C,this.signers.find(R=>R.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:S});K.push(M)}return{txIds:K,signedTxs:u}}return{txIds:await Promise.all(u.map(async B=>await this.connection.sendRawTransaction(B.serialize(),{skipPreflight:S}))),signedTxs:u}}if(this.signAllTransactions){let B=await this.signAllTransactions(u.slice(k,u.length)),K=[...u.slice(0,k),...B];if(P){let C=0,M=[],R=async()=>{if(!K[C])return;C<k&&(M.push({txId:"",status:"success",signedTx:K[C]}),A==null||A([...M]),C++,R());let L=await this.connection.sendRawTransaction(K[C].serialize(),{skipPreflight:S});M.push({txId:L,status:"sent",signedTx:K[C]}),A==null||A([...M]),C++;let Y=!1,_=null,E=null,V=X=>{_!==null&&clearInterval(_),E!==null&&this.connection.removeSignatureListener(E);let j=M.findIndex(ge=>ge.txId===L);if(j>-1){if(M[j].status==="error"||M[j].status==="success")return;M[j].status=X.err?"error":"success"}A==null||A([...M]),X.err||R()};this.loopMultiTxStatus&&(_=setInterval(async()=>{var X;if(Y){clearInterval(_);return}try{let j=await this.connection.getTransaction(L,{commitment:"confirmed",maxSupportedTransactionVersion:1});j&&(Y=!0,clearInterval(_),V({err:((X=j.meta)==null?void 0:X.err)||null}),console.log("tx status from getTransaction:",L))}catch(j){Y=!0,clearInterval(_),console.error("getTransaction timeout:",j,L)}},Nt)),E=this.connection.onSignature(L,X=>{if(Y){this.connection.removeSignatureListener(E);return}Y=!0,V(X)},"confirmed"),this.connection.getSignatureStatus(L)};return await R(),{txIds:M.map(L=>L.txId),signedTxs:K}}else{let C=[];for(let M=0;M<K.length;M+=1){let R=await this.connection.sendRawTransaction(K[M].serialize(),{skipPreflight:S});C.push(R)}return{txIds:C,signedTxs:K}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async sizeCheckBuildV0(e){var O;let N=e||{},{computeBudgetConfig:t,splitIns:o=[],lookupTableCache:r={},lookupTableAddress:s=[],insCountLimit:c=12}=N,u=xe(N,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),b=F(F({},this.cluster==="devnet"?await gn(this.connection):await bn(this.connection)),r),l=Array.from(new Set([...this.lookupTableAddress,...s])),m=[];for(let B of l)b[B]===void 0&&m.push(new Qe(B));let d=await yn({connection:this.connection,address:m});for(let[B,K]of Object.entries(d))b[B]=K;let y=t?Lt(t):{instructions:[],instructionTypes:[]},w=await He(this.connection,this.blockhashCommitment),P=this.signers.reduce((B,K)=>q(F({},B),{[K.publicKey.toBase58()]:K}),{}),A=[],k=[],x=[],S=0;if(this.allInstructions.forEach(B=>{let K=[...x,B],C=t?[...y.instructions,...K]:K;if(B!==o[S]&&x.length<c&&(ct({instructions:C,payer:this.feePayer,lookupTableAddressAccount:b})||ct({instructions:K,payer:this.feePayer,lookupTableAddressAccount:b})))x.push(B);else{if(x.length===0)throw Error("item ins too big");S+=B===o[S]?1:0;let M={};for(let R of[...new Set(l)])b[R]!==void 0&&(M[R]=b[R]);if(t&&ct({instructions:[...y.instructions,...x],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:w})){let R=new mt({payerKey:this.feePayer,recentBlockhash:w,instructions:[...y.instructions,...x]}).compileToV0Message(Object.values(b));A.push(new dt(R))}else{let R=new mt({payerKey:this.feePayer,recentBlockhash:w,instructions:[...x]}).compileToV0Message(Object.values(b));A.push(new dt(R))}k.push(Array.from(new Set(x.map(R=>R.keys.filter(L=>L.isSigner).map(L=>L.pubkey.toString())).flat())).map(R=>P[R]).filter(R=>R!==void 0)),x=[B]}}),x.length>0){let K=[...new Set(x.map(C=>C.keys.filter(M=>M.isSigner).map(M=>M.pubkey.toString())).flat()).values()].map(C=>P[C]).filter(C=>C!==void 0);if(t&&ct({instructions:[...y.instructions,...x],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:w})){let C=new mt({payerKey:this.feePayer,recentBlockhash:w,instructions:[...y.instructions,...x]}).compileToV0Message(Object.values(b));A.push(new dt(C))}else{let C=new mt({payerKey:this.feePayer,recentBlockhash:w,instructions:[...x]}).compileToV0Message(Object.values(b));A.push(new dt(C))}k.push(K)}return(O=this.owner)!=null&&O.signer&&k.forEach(B=>{B.some(K=>K.publicKey.equals(this.owner.publicKey))||B.push(this.owner.signer)}),A.forEach((B,K)=>{B.sign(k[K])}),{builder:this,transactions:A,buildProps:e,signers:k,instructionTypes:this.instructionTypes,execute:async B=>{var Y;let{sequentially:K,onTxUpdate:C,skipTxCount:M=0,recentBlockHash:R,skipPreflight:L=!0}=B||{};if(A.map(async(_,E)=>{k[E].length&&_.sign(k[E]),R&&(_.message.recentBlockhash=R)}),Ee(A),(Y=this.owner)!=null&&Y.isKeyPair){if(K){let _=0,E=[];for(let V of A){if(++_,_<=M){console.log("skip tx: ",_),E.push("tx skipped");continue}let X=await this.connection.sendTransaction(V,{skipPreflight:L});await Ot(this.connection,X),E.push(X)}return{txIds:E,signedTxs:A}}return{txIds:await Promise.all(A.map(async _=>await this.connection.sendTransaction(_,{skipPreflight:L}))),signedTxs:A}}if(this.signAllTransactions){let _=await this.signAllTransactions(A.slice(M,A.length)),E=[...A.slice(0,M),..._];if(K){let V=0,X=[],j=async()=>{if(!E[V])return;if(V<M){X.push({txId:"",status:"success",signedTx:E[V]}),C==null||C([...X]),V++,j();return}let ge=await this.connection.sendTransaction(E[V],{skipPreflight:L});X.push({txId:ge,status:"sent",signedTx:E[V]}),C==null||C([...X]),V++;let Le=!1,Ge=null,ht=null,$n=Ve=>{Ge!==null&&clearInterval(Ge),ht!==null&&this.connection.removeSignatureListener(ht);let Se=X.findIndex(ki=>ki.txId===ge);if(Se>-1){if(X[Se].status==="error"||X[Se].status==="success")return;X[Se].status=Ve.err?"error":"success"}C==null||C([...X]),Ve.err||j()};this.loopMultiTxStatus&&(Ge=setInterval(async()=>{var Ve;if(Le){clearInterval(Ge);return}try{let Se=await this.connection.getTransaction(ge,{commitment:"confirmed",maxSupportedTransactionVersion:1});Se&&(Le=!0,clearInterval(Ge),$n({err:((Ve=Se.meta)==null?void 0:Ve.err)||null}),console.log("tx status from getTransaction:",ge))}catch(Se){Le=!0,clearInterval(Ge),console.error("getTransaction timeout:",Se,ge)}},Nt)),ht=this.connection.onSignature(ge,Ve=>{if(Le){this.connection.removeSignatureListener(ht);return}Le=!0,$n(Ve)},"confirmed"),this.connection.getSignatureStatus(ge)};return j(),{txIds:[],signedTxs:E}}else{let V=[];for(let X=0;X<E.length;X+=1){let j=await this.connection.sendTransaction(E[X],{skipPreflight:L});V.push(j)}return{txIds:V,signedTxs:E}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:u||{}}}};var wn=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),ce=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=H(t)}createTxBuilder(e){return this.scope.checkOwner(),new Mt({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(wn(e))}logInfo(...e){this.logger.info(wn(e))}logAndCreateError(...e){let t=wn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as kr,SystemProgram as Tr}from"@solana/web3.js";import hr from"bn.js";import{createCloseAccountInstruction as Br,createInitializeAccountInstruction as Ir,createTransferInstruction as Em,TOKEN_PROGRAM_ID as ft}from"@solana/spl-token";import{Keypair as gr,PublicKey as Pr}from"@solana/web3.js";import Bm from"bn.js";import{TOKEN_PROGRAM_ID as Ar}from"@solana/spl-token";function Ji(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function kn(i,...e){if(!Ji(i))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(i.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${i.length}`)}function Tn(i,e=!0){if(i.destroyed)throw new Error("Hash instance has been destroyed");if(e&&i.finished)throw new Error("Hash#digest() has already been called")}function bo(i,e){kn(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var vt=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),we=(i,e)=>i<<32-e|i>>>e;var gl=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function er(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function hn(i){return typeof i=="string"&&(i=er(i)),kn(i),i}var Ft=class{clone(){return this._cloneInto()}},Pl={}.toString;function go(i){let e=o=>i().update(hn(o)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function tr(i,e,t,o){if(typeof i.setBigUint64=="function")return i.setBigUint64(e,t,o);let r=BigInt(32),s=BigInt(4294967295),c=Number(t>>r&s),u=Number(t&s),b=o?4:0,l=o?0:4;i.setUint32(e+b,c,o),i.setUint32(e+l,u,o)}var Po=(i,e,t)=>i&e^~i&t,Ao=(i,e,t)=>i&e^i&t^e&t,_t=class extends Ft{constructor(e,t,o,r){super(),this.blockLen=e,this.outputLen=t,this.padOffset=o,this.isLE=r,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=vt(this.buffer)}update(e){Tn(this);let{view:t,buffer:o,blockLen:r}=this;e=hn(e);let s=e.length;for(let c=0;c<s;){let u=Math.min(r-this.pos,s-c);if(u===r){let b=vt(e);for(;r<=s-c;c+=r)this.process(b,c);continue}o.set(e.subarray(c,c+u),this.pos),this.pos+=u,c+=u,this.pos===r&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){Tn(this),bo(e,this),this.finished=!0;let{buffer:t,view:o,blockLen:r,isLE:s}=this,{pos:c}=this;t[c++]=128,this.buffer.subarray(c).fill(0),this.padOffset>r-c&&(this.process(o,0),c=0);for(let d=c;d<r;d++)t[d]=0;tr(o,r-8,BigInt(this.length*8),s),this.process(o,0);let u=vt(e),b=this.outputLen;if(b%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let l=b/4,m=this.get();if(l>m.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;d<l;d++)u.setUint32(4*d,m[d],s)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let o=e.slice(0,t);return this.destroy(),o}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:o,length:r,finished:s,destroyed:c,pos:u}=this;return e.length=r,e.pos=u,e.finished=s,e.destroyed=c,r%t&&e.buffer.set(o),e}};var nr=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Ne=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Me=new Uint32Array(64),Bn=class extends _t{constructor(){super(64,32,8,!1),this.A=Ne[0]|0,this.B=Ne[1]|0,this.C=Ne[2]|0,this.D=Ne[3]|0,this.E=Ne[4]|0,this.F=Ne[5]|0,this.G=Ne[6]|0,this.H=Ne[7]|0}get(){let{A:e,B:t,C:o,D:r,E:s,F:c,G:u,H:b}=this;return[e,t,o,r,s,c,u,b]}set(e,t,o,r,s,c,u,b){this.A=e|0,this.B=t|0,this.C=o|0,this.D=r|0,this.E=s|0,this.F=c|0,this.G=u|0,this.H=b|0}process(e,t){for(let d=0;d<16;d++,t+=4)Me[d]=e.getUint32(t,!1);for(let d=16;d<64;d++){let y=Me[d-15],w=Me[d-2],P=we(y,7)^we(y,18)^y>>>3,A=we(w,17)^we(w,19)^w>>>10;Me[d]=A+Me[d-7]+P+Me[d-16]|0}let{A:o,B:r,C:s,D:c,E:u,F:b,G:l,H:m}=this;for(let d=0;d<64;d++){let y=we(u,6)^we(u,11)^we(u,25),w=m+y+Po(u,b,l)+nr[d]+Me[d]|0,A=(we(o,2)^we(o,13)^we(o,22))+Ao(o,r,s)|0;m=l,l=b,b=u,u=c+w|0,c=s,s=r,r=o,o=w+A|0}o=o+this.A|0,r=r+this.B|0,s=s+this.C|0,c=c+this.D|0,u=u+this.E|0,b=b+this.F|0,l=l+this.G|0,m=m+this.H|0,this.set(o,r,s,c,u,b,l,m)}roundClean(){Me.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var wo=go(()=>new Bn);import{PublicKey as fr}from"@solana/web3.js";import Io,{isBN as xo}from"bn.js";import{bits as or,BitStructure as Sl,blob as ir,Blob as Kl,cstr as Cl,f32 as Rl,f32be as Ll,f64 as Ol,f64be as Nl,greedy as Ml,Layout as rr,ns64 as Fl,ns64be as vl,nu64 as _l,nu64be as Vl,offset as ar,s16 as El,s16be as Dl,s24 as Wl,s24be as ql,s32 as sr,s32be as Ul,s40 as Gl,s40be as zl,s48 as Xl,s48be as Yl,s8 as Hl,seq as ur,struct as Ql,Structure as cr,u16 as lr,u16be as Zl,u24 as $l,u24be as jl,u32 as mr,u32be as Jl,u40 as em,u40be as tm,u48 as nm,u48be as om,u8 as dr,UInt as pr,union as im,Union as rm,unionLayoutDiscriminator as am,utf8 as sm}from"@solana/buffer-layout";var Vt=rr,ko=cr;var In=pr;var To=dr,te=lr;var Et=mr;var ke=sr;var ho=ur;var G=ir;var xn=or,Bo=ar;var We=class extends Vt{constructor(t,o,r){super(t,r);this.blob=G(t),this.signed=o}decode(t,o=0){let r=new Io(this.blob.decode(t,o),10,"le");return this.signed?r.fromTwos(this.span*8).clone():r}encode(t,o,r=0){return typeof t=="number"&&(t=new Io(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),o,r)}},Dt=class extends Vt{constructor(t){super(8,t);this._lower=xn(Et(),!1),this._upper=xn(Et(),!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),s=this._upper.decode(t,o+this._lower.span);return F(F({},r),s)}encode(t,o,r=0){return this._lower.encode(t,o,r)+this._upper.encode(t,o,r+this._lower.span)}};function T(i){return new In(1,i)}function ee(i){return new In(4,i)}function n(i){return new We(8,!1,i)}function D(i){return new We(16,!1,i)}function So(i){return new We(1,!0,i)}function Ze(i){return new We(8,!0,i)}function Ko(i){return new We(16,!0,i)}var pt=class extends Vt{constructor(t,o,r,s){super(t.span,s);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 a(i){return new pt(G(32),e=>new fr(e),e=>e.toBuffer(),i)}function ye(i){return new pt(To(),yr,br,i)}function yr(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function br(i){return i?1:0}function Kn(i,e){let t=Et("length"),o=h([t,I(i,Bo(t,-t.span),"values")]);return new pt(o,({values:r})=>r,r=>({values:r}),e)}var Sn=class extends ko{decode(e,t){return super.decode(e,t)}};function h(i,e,t){return new Sn(i,e,t)}function I(i,e,t){let o,r=typeof e=="number"?e:xo(e)?e.toNumber():new Proxy(e,{get(s,c){if(!o){let u=Reflect.get(s,"count");o=xo(u)?u.toNumber():u,Reflect.set(s,"count",o)}return Reflect.get(s,c)},set(s,c,u){return c==="count"&&(o=u),Reflect.set(s,c,u)}});return ho(i,r,t)}var $e=h([a("mint"),a("owner"),n("amount"),ee("delegateOption"),a("delegate"),T("state"),ee("isNativeOption"),n("isNative"),n("delegatedAmount"),ee("closeAuthorityOption"),a("closeAuthority")]);function qe({fromPublicKey:i,programId:e=Ar,assignSeed:t}){let o=t?btoa(t).slice(0,32):gr.generate().publicKey.toBase58().slice(0,32);return{publicKey:wr(i,o,e),seed:o}}function wr(i,e,t){let o=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=wo(o);return new Pr(r)}function Co(i){let{mint:e,tokenAccount:t,owner:o,programId:r=ft}=i;return Ir(t,e,o,r)}function Cn(i){let{tokenAccount:e,destination:t,multiSigners:o=[],owner:r,programId:s=ft}=i;return Br(e,t,r,o,s)}async function yt(i){let{connection:e,amount:t,commitment:o,closeDestination:r,payer:s,owner:c,skipCloseAccount:u}=i,b=await e.getMinimumBalanceForRentExemption($e.span,o),l=W(t).add(new hr(b)),m=qe({fromPublicKey:s,programId:ft});return{addresses:{newAccount:m.publicKey},signers:[],instructions:[Tr.createAccountWithSeed({fromPubkey:s,basePubkey:s,seed:m.seed,newAccountPubkey:m.publicKey,lamports:l.toNumber(),space:$e.span,programId:ft}),Co({mint:new kr(se.address),tokenAccount:m.publicKey,owner:c,programId:ft})],instructionTypes:[U.CreateAccount,U.InitAccount],endInstructionTypes:u?[]:[U.CloseAccount],endInstructions:u?[]:[Cn({tokenAccount:m.publicKey,destination:r!=null?r:c,owner:c})]}}import{PublicKey as xw}from"@solana/web3.js";import{AccountLayout as Cw,MintLayout as Rw,NATIVE_MINT as Lw,TOKEN_PROGRAM_ID as Nw}from"@solana/spl-token";import{PublicKey as xr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Sr}from"@solana/spl-token";function de(i,e,t){return me([i.toBuffer(),(t!=null?t:Sr).toBuffer(),e.toBuffer()],new xr("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import yd from"bn.js";import{PublicKey as Ln}from"@solana/web3.js";import{PublicKey as v}from"@solana/web3.js";var Ro=new v("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Lo=new v("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Oo=new v("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),bt=new v("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),xd=new v("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Kr=new v("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),No=new v("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Mo=new v("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Sd=new v("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Cr=new v("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Fo=new v("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Rr=new v("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Lr=new v("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),vo=new v("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Kd=new v("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Or=new v("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Rn=new v("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Nr=new v("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Cd=new v("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Mr=new v("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Fr=new v("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),vr=new v("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Rd=new v("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Ld=new v("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Od=new v("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Nd=new v("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Md=new v("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Ce={OPEN_BOOK_PROGRAM:new v("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new v("Ray1111111111111111111111111111111111111111"),AMM_V4:new v("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new v("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new v("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new v("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new v("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new v("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new v("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new v("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new v("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new v("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:v.default,Router:new v("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new v("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new v("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new v("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new v("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new v("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new v("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new v("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new v("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new v("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new v("Ray1111111111111111111111111111111111111111")};import{NATIVE_MINT as Ud}from"@solana/spl-token";var Gd=H("Raydium_farm_config"),_o=new Ln("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Vo=new Ln("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var zd=new Ln("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX"),Wt={3:Eo,5:Do,6:Pt},gt={3:Mn,5:Wo,6:qo},On=i=>[3,4,5,6].indexOf(i)!==-1,Nn=i=>{var c;let{version:e,rewardInfos:t,rewardTokenAccountsPublicKeys:o}=i,r=`rewardInfo:${JSON.stringify(t)}, rewardAccount:${JSON.stringify(o)}`,s={3:()=>{if(t.length!==1||o.length!==1)return`rewardInfos or rewardTokenAccounts lengths not equal 1: ${r}`},5:()=>{if(t.length!==o.length)return`rewardInfos and rewardTokenAccounts lengths not equal: ${r}`},6:()=>{if(!o.length||t.length!==o.length)return`no rewardTokenAccounts or rewardInfos and rewardTokenAccounts lengths not equal: ${r}`}};return(c=s[e])==null?void 0:c.call(s)},Fe={"Standard SPL":0,"Option tokens":1},Te={[Ro.toString()]:3,[Lo.toString()]:4,[Oo.toString()]:5,[bt.toString()]:6,[Ce.FARM_PROGRAM_ID_V3.toString()]:3,[Ce.FARM_PROGRAM_ID_V4.toString()]:4,[Ce.FARM_PROGRAM_ID_V5.toString()]:5,[Ce.FARM_PROGRAM_ID_V6.toString()]:6};var Fn=h([T("instruction")]),vn=h([T("instruction")]),_r=h([n("rewardState"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardLastUpdateTime"),n("totalReward"),n("totalRewardEmissioned"),n("rewardClaimed"),n("rewardPerSecond"),D("accRewardPerShare"),a("rewardVault"),a("rewardMint"),a("rewardSender"),n("rewardType"),I(n(),15,"padding")]),Vr=h([n("state"),n("nonce"),a("lpVault"),a("rewardVault"),a(),a(),n(),n(),n("totalReward"),D("perShareReward"),n("lastSlot"),n("perSlotReward")]),Er=h([n("state"),n("nonce"),a("lpVault"),a("rewardVaultA"),n("totalRewardA"),D("perShareRewardA"),n("perSlotRewardA"),T("option"),a("rewardVaultB"),G(7),n("totalRewardB"),D("perShareRewardB"),n("perSlotRewardB"),n("lastSlot"),a()]),Dr=h([n(),n("state"),n("nonce"),n("validRewardTokenNum"),D("rewardMultiplier"),n("rewardPeriodMax"),n("rewardPeriodMin"),n("rewardPeriodExtend"),a("lpMint"),a("lpVault"),I(_r,5,"rewardInfos"),a("creator"),a(),I(n(),32,"padding")]),Eo=new Proxy(Vr,{get(i,e,t){return e==="decode"?(...o)=>{let r=i.decode(...o);return q(F({},r),{version:3,rewardInfos:[{rewardVault:r.rewardVault,totalReward:r.totalReward,perSlotReward:r.perSlotReward,perShareReward:r.perShareReward}]})}:Reflect.get(i,e,t)}}),Do=new Proxy(Er,{get(i,e,t){return e==="decode"?(...o)=>{let r=i.decode(...o);return q(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)}}),Pt=new Proxy(Dr,{get(i,e,t){return e==="decode"?(...o)=>{let r=i.decode(...o);return q(F({},r),{version:6,rewardInfos:r.rewardInfos.map(s=>{var c;return q(F({},s),{rewardType:((c=Object.entries(Fe).find(u=>String(u[1])===s.rewardType.toString()))!=null?c:["Standard SPL"])[0]})})})}:Reflect.get(i,e,t)}}),Wr=h([n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),_n=h([T("instruction"),n("nonce"),I(Wr,5,"rewardTimeInfo")]),Vn=h([T("instruction"),n("rewardReopenTime"),n("rewardEndTime"),n("rewardPerSecond")]),En=h([T("instruction"),n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),jd=h([n("state"),a("id"),a("owner"),n("deposited"),I(n(),1,"rewardDebts")]),Mn=h([n("state"),a("id"),a("owner"),n("deposited"),I(D(),1,"rewardDebts"),n(""),n("voteLockedBalance"),I(n(),15)]),Jd=h([n("state"),a("id"),a("owner"),n("deposited"),I(n(),2,"rewardDebts")]),Wo=h([n("state"),a("id"),a("owner"),n("deposited"),I(D(),2,"rewardDebts"),I(n(),17)]),qo=h([n(),n("state"),a("id"),a("owner"),n("deposited"),I(D(),5,"rewardDebts"),I(n(),16)]),fe=h([T("instruction"),n("amount")]),qr=h([a("mint"),a("grantAuthority"),n("baselineVoteWeightScaledFactor"),n("maxExtraLockupVoteWeightScaledFactor"),n("lockupSaturationSecs"),So("digitShift"),I(T(),7,"reserved1"),I(n(),7,"reserved2")]),Ur=h([G(8),a("governanceProgramId"),a("realm"),a("realmGoverningTokenMint"),a("realmAuthority"),I(T(),32,"reserved1"),I(qr,4,"votingMints"),Ze("timeOffset"),T("bump"),I(T(),7,"reserved2"),I(n(),11,"reserved3")]),Gr=h([Ze("startTime"),Ze("endTime"),T("kind"),I(T(),15,"reserved")]),zr=h([I(Gr,1,"lockup"),n("amountDeposited_native"),n("amountInitiallyLockedNative"),ye("isUsed"),ye("allowClawback"),T("votingMintConfigIdx"),I(T(),29,"reserved")]),Xr=h([G(8),a("voterAuthority"),a("registrar"),I(zr,32,"deposits"),T("voterBump"),T("voterWweightRecordBump"),I(T(),94,"reserved")]);import Zr from"bn.js";import{PublicKey as Yr}from"@solana/web3.js";import Hr from"bn.js";function Qr(i){return typeof i=="object"&&i!==null&&![ae,pe,Yr,$,Hr,Ae,Ke].some(e=>typeof e=="object"&&i instanceof e)}function he(i){return typeof i=="string"?un(i):Array.isArray(i)?i.map(e=>he(e)):Qr(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,he(t)])):i}var $r=H("Raydium.farm.util");function At({programId:i,poolId:e,mint:t,type:o}){let{publicKey:r}=me([e.toBuffer(),t.toBuffer(),Buffer.from(o==="lpVault"?"lp_vault_associated_seed":o==="rewardVault"?"reward_vault_associated_seed":"","utf-8")],i);return r}function Be({programId:i,poolId:e,owner:t,version:o}){let{publicKey:r}=me([e.toBuffer(),t.toBuffer(),Buffer.from(o===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],i);return r}var Uo=({programId:i,poolId:e})=>me([e.toBuffer()],i);function Go(i){return{isSet:new Zr(1),rewardPerSecond:W(i.perSecond),rewardOpenTime:W(i.openTime),rewardEndTime:W(i.endTime),rewardType:W(Fe[i.rewardType])}}function Dn(i){return W(i.endTime).sub(W(i.openTime)).mul(W(i.perSecond))}function qt(i){let e=gt[i];return e||$r.logWithError("invalid version",i),e}import{PublicKey as z,SystemProgram as zo,SYSVAR_CLOCK_PUBKEY as wt,SYSVAR_RENT_PUBKEY as jr,TransactionInstruction as be}from"@solana/web3.js";import Xo from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as vp,createAssociatedTokenAccountIdempotentInstruction as _p,TOKEN_PROGRAM_ID as Re}from"@solana/spl-token";var Jr=H("Raydium_farm_instruction"),Hp={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};function Ut(i){let{version:e,id:t,ledger:o,programId:r,owner:s}=i,c={3:9,5:10}[e];c||Jr.logWithError(`invalid farm pool version: ${e}`);let u=Buffer.alloc(Fn.span);Fn.encode({instruction:c},u);let b=[g({pubkey:t}),g({pubkey:o}),g({pubkey:s,isWritable:!1}),g({pubkey:zo.programId,isWritable:!1}),g({pubkey:jr,isWritable:!1})];return{instruction:new be({programId:r,keys:b,data:u}),instructionType:U.FarmV3CreateLedger}}function Yo(i){var o;let e=Buffer.alloc(_n.span);_n.encode({instruction:0,nonce:new Xo(i.nonce),rewardTimeInfo:i.rewardInfoConfig},e);let t=[...an,g({pubkey:i.farmId}),g({pubkey:i.farmAuthority,isWritable:!1}),g({pubkey:i.lpVault}),g({pubkey:i.lpMint,isWritable:!1}),g({pubkey:i.lockVault}),g({pubkey:i.lockMint,isWritable:!1}),g({pubkey:(o=i.lockUserAccount)!=null?o:ie}),g({pubkey:i.owner,isWritable:!1,isSigner:!0})];for(let r of i.rewardInfo)t.push(g({pubkey:r.rewardMint,isWritable:!1}),g({pubkey:r.rewardVault}),g({pubkey:r.userRewardToken}));return{instruction:new be({programId:i.programId,keys:t,data:e}),instructionType:U.FarmV6Create}}function Ho(i){let e=Buffer.alloc(vn.span);vn.encode({instruction:5},e);let t=[g({pubkey:Re,isWritable:!1}),g({pubkey:i.id}),g({pubkey:i.authority,isWritable:!1}),g({pubkey:i.lpVault,isWritable:!1}),g({pubkey:i.rewardVault}),g({pubkey:i.userRewardToken}),g({pubkey:i.owner,isWritable:!1,isSigner:!0})];return{instruction:new be({programId:i.programId,keys:t,data:e}),instructionType:U.FarmV6CreatorWithdraw}}function Wn({payer:i,rewardVault:e,userRewardTokenPub:t,farmKeys:o,rewardInfo:r}){let s=Buffer.alloc(Vn.span);Vn.encode({instruction:3,rewardReopenTime:W(r.openTime),rewardEndTime:W(r.endTime),rewardPerSecond:W(r.perSecond)},s);let c=[g({pubkey:Re,isWritable:!1}),g({pubkey:o.id}),g({pubkey:o.lpVault,isWritable:!1}),g({pubkey:e}),g({pubkey:t}),g({pubkey:i,isWritable:!1,isSigner:!0})];return new be({programId:o.programId,keys:c,data:s})}function qn({payer:i,userRewardTokenPub:e,farmKeys:t,rewardVault:o,rewardInfo:r}){let s=Buffer.alloc(En.span);En.encode({instruction:4,isSet:new Xo(1),rewardPerSecond:W(r.perSecond),rewardOpenTime:W(r.openTime),rewardEndTime:W(r.endTime),rewardType:W(Fe[r.rewardType])},s);let c=[...an,g({pubkey:t.id}),g({pubkey:t.authority,isWritable:!1}),g({pubkey:r.mint,isWritable:!1}),g({pubkey:o}),g({pubkey:e}),g({pubkey:i,isWritable:!1,isSigner:!0})];return new be({programId:t.programId,keys:c,data:s})}function Gt(i){let{farmInfo:e,farmKeys:t,lpAccount:o,rewardAccounts:r,owner:s,amount:c}=i,[u,b]=[new z(e.programId),new z(e.id)],l=Be({programId:u,poolId:b,owner:s,version:6}),m=Buffer.alloc(fe.span);fe.encode({instruction:2,amount:W(c)},m);let d=[g({pubkey:Re,isWritable:!1}),g({pubkey:b}),g({pubkey:new z(t.authority),isWritable:!1}),g({pubkey:new z(t.lpVault)}),g({pubkey:l}),g({pubkey:s,isWritable:!1,isSigner:!0}),g({pubkey:o})];for(let y=0;y<t.rewardInfos.length;y++)d.push(g({pubkey:new z(t.rewardInfos[y].vault)})),d.push(g({pubkey:r[y]}));return new be({programId:u,keys:d,data:m})}function zt(i){let{farmInfo:e,farmKeys:t,lpAccount:o,rewardAccounts:r,owner:s,amount:c,userAuxiliaryLedgers:u}=i,[b,l]=[new z(e.programId),new z(e.id)],m=Be({programId:b,poolId:l,owner:s,version:5}),d=Buffer.alloc(fe.span);fe.encode({instruction:12,amount:W(c)},d);let y=[g({pubkey:l}),g({pubkey:new z(t.authority),isWritable:!1}),g({pubkey:m}),g({pubkey:s,isWritable:!1,isSigner:!0}),g({pubkey:o}),g({pubkey:new z(t.lpVault)}),g({pubkey:r[0]}),g({pubkey:new z(t.rewardInfos[0].vault)}),g({pubkey:wt,isWritable:!1}),g({pubkey:Re,isWritable:!1})];for(let w=1;w<t.rewardInfos.length;w++)y.push(g({pubkey:r[w]})),y.push(g({pubkey:new z(t.rewardInfos[w].vault)}));if(u)for(let w of u)y.push(g({pubkey:w}));return new be({programId:b,keys:y,data:d})}function Qo(i){let{farmInfo:e,farmKeys:t,lpAccount:o,rewardAccounts:r,owner:s,amount:c,userAuxiliaryLedgers:u}=i,[b,l]=[new z(e.programId),new z(e.id)],m=h([T("instruction"),n("amount")]),d=[g({pubkey:l}),g({pubkey:new z(t.authority),isWritable:!1}),g({pubkey:u[0]}),g({pubkey:s,isSigner:!0,isWritable:!1}),g({pubkey:o}),g({pubkey:new z(t.lpVault)}),g({pubkey:r[0]}),g({pubkey:new z(t.rewardInfos[0].vault)}),g({pubkey:wt,isWritable:!1}),g({pubkey:Re,isWritable:!1}),g({pubkey:r[1]}),g({pubkey:new z(t.rewardInfos[1].vault)})],y=Buffer.alloc(m.span);return m.encode({instruction:2,amount:c},y),new be({keys:d,programId:b,data:y})}function Xt(i){let{farmInfo:e,farmKeys:t,lpAccount:o,rewardAccounts:r,owner:s,amount:c,userAuxiliaryLedgers:u}=i,[b,l]=[new z(e.programId),new z(e.id)],m=Be({programId:b,poolId:l,owner:s,version:3}),d=Buffer.alloc(fe.span);fe.encode({instruction:11,amount:W(c)},d);let y=[g({pubkey:l}),g({pubkey:new z(t.authority),isWritable:!1}),g({pubkey:m}),g({pubkey:s,isWritable:!1,isSigner:!0}),g({pubkey:o}),g({pubkey:new z(t.lpVault)}),g({pubkey:r[0]}),g({pubkey:new z(t.rewardInfos[0].vault)}),g({pubkey:wt,isWritable:!1}),g({pubkey:Re,isWritable:!1})];if(u)for(let w of u)y.push(g({pubkey:w}));return new be({programId:b,keys:y,data:d})}function Zo(i){let{farmInfo:e,farmKeys:t,lpAccount:o,rewardAccounts:r,owner:s,amount:c,userAuxiliaryLedgers:u}=i,[b,l]=[new z(e.programId),new z(e.id)],m=Be({programId:b,poolId:l,owner:s,version:3}),d=Buffer.alloc(fe.span);fe.encode({instruction:10,amount:W(c)},d);let y=[g({pubkey:l}),g({pubkey:new z(t.authority),isWritable:!1}),g({pubkey:m}),g({pubkey:s,isWritable:!1,isSigner:!0}),g({pubkey:o}),g({pubkey:new z(t.lpVault)}),g({pubkey:r[0]}),g({pubkey:new z(t.rewardInfos[0].vault)}),g({pubkey:wt,isWritable:!1}),g({pubkey:Re,isWritable:!1})];if(u)for(let w of u)y.push(g({pubkey:w}));return new be({programId:b,keys:y,data:d})}function $o(i){let{farmInfo:e,farmKeys:t,lpAccount:o,rewardAccounts:r,owner:s,amount:c,userAuxiliaryLedgers:u}=i,[b,l]=[new z(e.programId),new z(e.id)],m=Be({programId:b,poolId:l,owner:s,version:5}),d=Buffer.alloc(fe.span);fe.encode({instruction:11,amount:W(c)},d);let y=[g({pubkey:l}),g({pubkey:new z(t.authority),isWritable:!1}),g({pubkey:m}),g({pubkey:s,isWritable:!1,isSigner:!0}),g({pubkey:o}),g({pubkey:new z(t.lpVault)}),g({pubkey:r[0]}),g({pubkey:new z(t.rewardInfos[0].vault)}),g({pubkey:wt,isWritable:!1}),g({pubkey:Re,isWritable:!1})];for(let w=1;w<t.rewardInfos.length;w++)y.push(g({pubkey:r[w]})),y.push(g({pubkey:new z(t.rewardInfos[w].vault)}));if(u)for(let w of u)y.push(g({pubkey:w}));return new be({programId:b,keys:y,data:d})}function jo(i){let{farmInfo:e,farmKeys:t,lpAccount:o,rewardAccounts:r,owner:s,amount:c}=i,[u,b]=[new z(e.programId),new z(e.id)],l=Be({programId:u,poolId:b,owner:s,version:6}),m=Buffer.alloc(fe.span);fe.encode({instruction:1,amount:W(c)},m);let d=[g({pubkey:Re,isWritable:!1}),g({pubkey:zo.programId,isWritable:!1}),g({pubkey:b}),g({pubkey:new z(t.authority),isWritable:!1}),g({pubkey:new z(t.lpVault)}),g({pubkey:l}),g({pubkey:s,isWritable:!1,isSigner:!0}),g({pubkey:o})];for(let y=0;y<t.rewardInfos.length;y++)d.push(g({pubkey:new z(t.rewardInfos[y].vault)})),d.push(g({pubkey:r[y]}));return new be({programId:u,keys:d,data:m})}import{ASSOCIATED_TOKEN_PROGRAM_ID as sP,TOKEN_2022_PROGRAM_ID as uP,TOKEN_PROGRAM_ID as cP}from"@solana/spl-token";import{Keypair as dP,PublicKey as pP,SystemProgram as yP,TransactionInstruction as bP}from"@solana/web3.js";import PP from"bn.js";import Q from"bn.js";var Je=new Q(1).shln(64);var ea=new Q(1).shln(128),Un=new Q(1).shln(64).subn(1),ta=new Q(1).shln(128).subn(1);var et=new Q("4295048016"),tt=new Q("79226673521066979257578248091"),na=new Q("59543866431248"),oa=new Q("184467440737095516"),ia=new Q("15793534762490258745");var Gn=60,rf=new Q("18446743708227953217"),ra=[{bit:0,factor:new Q("fffcb933bd6fb800",16)},{bit:1,factor:new Q("fff97272373d4000",16)},{bit:2,factor:new Q("fff2e50f5f657000",16)},{bit:3,factor:new Q("ffe5caca7e10f000",16)},{bit:4,factor:new Q("ffcb9843d60f7000",16)},{bit:5,factor:new Q("ff973b41fa98e800",16)},{bit:6,factor:new Q("ff2ea16466c9b000",16)},{bit:7,factor:new Q("fe5dee046a9a3800",16)},{bit:8,factor:new Q("fcbe86c7900bb000",16)},{bit:9,factor:new Q("f987a7253ac65800",16)},{bit:10,factor:new Q("f3392b0822bb6000",16)},{bit:11,factor:new Q("e7159475a2caf000",16)},{bit:12,factor:new Q("d097f3bdfd2f2000",16)},{bit:13,factor:new Q("a9f746462d9f8000",16)},{bit:14,factor:new Q("70d869a156f31c00",16)},{bit:15,factor:new Q("31be135f97ed3200",16)},{bit:16,factor:new Q("9aa508b5b85a500",16)},{bit:17,factor:new Q("5d6af8dedc582c",16)},{bit:18,factor:new Q("2216e584f5fa",16)}];var kt=3,Jo=100;var ei=10,ti=100,Yt=14;var ne=new Q(0),nt=new Q(1),af=new Q(-1);var sf=new Q("18446744073700000000");var aa=h([G(8),T("bump"),te("index"),a("owner"),ee("protocolFeeRate"),ee("tradeFeeRate"),te("tickSpacing"),ee("fundFeeRate"),I(ee(),1),a("fundOwner"),I(n(),3)]),sa=h([ee("blockTimestamp"),Ze("tickCumulative"),I(n(),4)]),ni=h([G(8),ye("initialized"),n("recentEpoch"),te("observationIndex"),a("poolId"),I(sa,Jo,"observations"),I(n(),4)]),ua=h([te("filterPeriod"),te("decayPeriod"),te("reductionFactor"),ee("dynamicFeeControl"),ee("maxVolatilityAccumulator"),ke("tickSpacingIndexReference"),ee("volatilityReference"),ee("volatilityAccumulator"),n("lastUpdateTimestamp"),I(T(),46)]),ca=h([T("state"),n("openTime"),n("endTime"),n("lastUpdateTime"),D("emissionsPerSecondX64"),n("totalEmissioned"),n("claimed"),a("mint"),a("vault"),a("creator"),D("growthGlobalX64")]),zn=h([G(8),T("bump"),a("configId"),a("creator"),a("mintA"),a("mintB"),a("vaultA"),a("vaultB"),a("observationId"),T("mintDecimalsA"),T("mintDecimalsB"),te("tickSpacing"),D("liquidity"),D("sqrtPriceX64"),ke("tickCurrent"),ee(),D("feeGrowthGlobalX64A"),D("feeGrowthGlobalX64B"),n("protocolFeesTokenA"),n("protocolFeesTokenB"),I(D(),4),T("status"),T("feeOn"),G(6),I(ca,kt,"rewardInfos"),G(8*16,"tickArrayBitmap"),I(n(),4),n("fundFeesTokenA"),n("fundFeesTokenB"),n("startTime"),n("recentEpoch"),ua.replicate("dynamicFeeInfo"),I(n(),46)]),la=h([D("growthInsideLastX64"),n("rewardAmountOwed")]),ma=h([G(8),T("bump"),a("nftMint"),a("poolId"),ke("tickLower"),ke("tickUpper"),D("liquidity"),D("feeGrowthInsideLastX64A"),D("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),I(la,kt,"rewardInfos"),n("recentEpoch"),I(n(),7)]),mf=h([G(8),T("bump"),a("poolId"),ke("tickLower"),ke("tickUpper"),D("liquidity"),D("feeGrowthInsideLastX64A"),D("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),I(D(),kt,"rewardGrowthInside"),n("recentEpoch"),I(n(),7)]),da=h([ke("tick"),Ko("liquidityNet"),D("liquidityGross"),D("feeGrowthOutsideX64A"),D("feeGrowthOutsideX64B"),I(D(),kt,"rewardGrowthsOutsideX64"),n("orderPhase"),n("ordersAmount"),n("partFilledOrdersRemaining"),D("unfilledRatioX64"),I(ee(),3)]),oi=h([G(8),a("poolId"),ke("startTickIndex"),I(da,Gn,"ticks"),T("initializedTickCount"),n("recentEpoch"),I(T(),107)]),pa=h([G(8),T("bump"),I(a(),ei,"operationOwners"),I(a(),ti,"whitelistMints")]),fa=h([G(8),a("poolId"),a("owner"),ke("tick"),ye("zeroForOne"),n("orderPhase"),n("totalAmount"),n("filledAmount"),n("settleBase"),n("settleOutput"),n("openTime"),D("unfilledRatioX64"),I(n(),4)]),ii=h([G(8),a("poolId"),G(8*8*Yt,"positiveTickArrayBitmap"),G(8*8*Yt,"negativeTickArrayBitmap")]),df=h([G(8),te("index"),te("filterPeriod"),te("decayPeriod"),te("reductionFactor"),ee("dynamicFeeControl"),ee("maxVolatilityAccumulator"),I(n(),8)]),ya=h([G(8),a("wallet"),T("nonceIndex"),n("orderNonce"),I(n(),4)]),pf=h([n(),T("bump"),a("owner"),a("poolId"),a("positionId"),a("nftAccount"),I(n(),8)]),ba=h([G(8),T("bump"),a("lockOwner"),a("poolId"),a("positionId"),a("nftAccount"),a("lockNftMint"),n("recentEpoch"),I(n(),8)]);import{createAssociatedTokenAccountIdempotentInstruction as Qb,TOKEN_2022_PROGRAM_ID as Zb,TOKEN_PROGRAM_ID as $b}from"@solana/spl-token";import{PublicKey as Jb}from"@solana/web3.js";import tg from"bn.js";import og from"decimal.js";import{TOKEN_PROGRAM_ID as Af}from"@solana/spl-token";import{PublicKey as hf}from"@solana/web3.js";var ga=h([ee("mintAuthorityOption"),a("mintAuthority"),n("supply"),T("decimals"),T("isInitialized"),ee("freezeAuthorityOption"),a("freezeAuthority")]);import Pa from"bn.js";import vf from"decimal.js";var Vf=new Pa(1).shln(256).subn(1);import ny from"bn.js";import zf from"bn.js";import Yf from"decimal.js";import sy from"bn.js";import cy from"decimal.js";import{PublicKey as Qy}from"@solana/web3.js";import $y from"bn.js";import{TOKEN_2022_PROGRAM_ID as rb,TOKEN_PROGRAM_ID as ab}from"@solana/spl-token";import lb from"decimal.js";import Vy from"bn.js";import Iy from"bn.js";import kb from"bn.js";import xb from"bn.js";var Eg=Buffer.from("amm_config","utf8"),va=Buffer.from("pool","utf8"),_a=Buffer.from("pool_vault","utf8"),Dg=Buffer.from("pool_reward_vault","utf8"),Wg=Buffer.from("position","utf8"),qg=Buffer.from("tick_array","utf8"),Ug=Buffer.from("operation","utf8"),Gg=Buffer.from("pool_tick_array_bitmap_extension","utf8"),zg=Buffer.from("observation","utf8"),Xg=Buffer.from("support_mint","utf8"),Yg=Buffer.from("dynamic_fee_config","utf8"),Hg=Buffer.from("permission","utf8");var Qg=Buffer.from("locked_position","utf8");import{sha256 as Va}from"js-sha256";function re(i){let e=`global:${i}`;return Buffer.from(Va.digest(e)).slice(0,8)}ni.span;var SP=H("Raydium_Clmm"),KP={createPool:re("create_pool"),createCustomizablePool:re("create_customizable_pool"),createPermissionedPool:re("create_permissioned_pool"),openPositionV2:re("open_position_v2"),openPositionWithToken22Nft:re("open_position_with_token22_nft"),closePosition:re("close_position"),increaseLiquidityV2:re("increase_liquidity_v2"),decreaseLiquidityV2:re("decrease_liquidity_v2"),initializeReward:re("initialize_reward"),setRewardParams:re("set_reward_params"),updateRewardInfos:re("update_reward_infos"),collectRemainingRewards:re("collect_remaining_rewards"),swapV2:re("swap_v2"),openLimitOrder:re("open_limit_order"),increaseLimitOrder:re("increase_limit_order"),decreaseLimitOrder:re("decrease_limit_order"),settleLimitOrder:re("settle_limit_order"),closeLimitOrder:re("close_limit_order")};import mi from"bn.js";var Ea=new mi(25),Da=new mi(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as UP,TOKEN_PROGRAM_ID as GP}from"@solana/spl-token";import{PublicKey as XP,SystemProgram as YP,SYSVAR_RENT_PUBKEY as HP,TransactionInstruction as QP}from"@solana/web3.js";import oA from"bn.js";var Wa=h([T("instruction"),n("amountIn"),n("minAmountOut")]),qa=h([T("instruction"),n("maxAmountIn"),n("amountOut")]),EP=h([T("instruction"),T("nonce")]),Ua=h([T("instruction"),T("nonce"),n("startTime")]),di=h([n("status"),n("nonce"),n("maxOrder"),n("depth"),n("baseDecimal"),n("quoteDecimal"),n("state"),n("resetFlag"),n("minSize"),n("volMaxCutRatio"),n("amountWaveRatio"),n("baseLotSize"),n("quoteLotSize"),n("minPriceMultiplier"),n("maxPriceMultiplier"),n("systemDecimalValue"),n("minSeparateNumerator"),n("minSeparateDenominator"),n("tradeFeeNumerator"),n("tradeFeeDenominator"),n("pnlNumerator"),n("pnlDenominator"),n("swapFeeNumerator"),n("swapFeeDenominator"),n("baseNeedTakePnl"),n("quoteNeedTakePnl"),n("quoteTotalPnl"),n("baseTotalPnl"),n("poolOpenTime"),n("punishPcAmount"),n("punishCoinAmount"),n("orderbookToInitTime"),D("swapBaseInAmount"),D("swapQuoteOutAmount"),n("swapBase2QuoteFee"),D("swapQuoteInAmount"),D("swapBaseOutAmount"),n("swapQuote2BaseFee"),a("baseVault"),a("quoteVault"),a("baseMint"),a("quoteMint"),a("lpMint"),a("openOrders"),a("marketId"),a("marketProgramId"),a("targetOrders"),a("withdrawQueue"),a("lpVault"),a("owner"),n("lpReserve"),I(n(),3,"padding")]),DP=h([n("accountType"),n("status"),n("nonce"),n("maxOrder"),n("depth"),n("baseDecimal"),n("quoteDecimal"),n("state"),n("resetFlag"),n("minSize"),n("volMaxCutRatio"),n("amountWaveRatio"),n("baseLotSize"),n("quoteLotSize"),n("minPriceMultiplier"),n("maxPriceMultiplier"),n("systemDecimalsValue"),n("abortTradeFactor"),n("priceTickMultiplier"),n("priceTick"),n("minSeparateNumerator"),n("minSeparateDenominator"),n("tradeFeeNumerator"),n("tradeFeeDenominator"),n("pnlNumerator"),n("pnlDenominator"),n("swapFeeNumerator"),n("swapFeeDenominator"),n("baseNeedTakePnl"),n("quoteNeedTakePnl"),n("quoteTotalPnl"),n("baseTotalPnl"),n("poolOpenTime"),n("punishPcAmount"),n("punishCoinAmount"),n("orderbookToInitTime"),D("swapBaseInAmount"),D("swapQuoteOutAmount"),D("swapQuoteInAmount"),D("swapBaseOutAmount"),n("swapQuote2BaseFee"),n("swapBase2QuoteFee"),a("baseVault"),a("quoteVault"),a("baseMint"),a("quoteMint"),a("lpMint"),a("modelDataAccount"),a("openOrders"),a("marketId"),a("marketProgramId"),a("targetOrders"),a("owner"),I(n(),64,"padding")]),Ga=h([T("instruction"),n("baseAmountIn"),n("quoteAmountIn"),n("fixedSide"),n("otherAmountMin")]),za=h([T("instruction"),n("lpAmount"),n("baseAmountMin"),n("quoteAmountMin")]);var Xa=h([n("fee")]);var aA=H("Raydium_liquidity_instruction");var Ya=5e4,Ha=h([n("x"),n("y"),n("price")]),lA=h([n("accountType"),n("status"),n("multiplier"),n("validDataCount"),I(Ha,Ya,"DataElement")]);import{PublicKey as TA}from"@solana/web3.js";import BA from"decimal.js";import{TOKEN_PROGRAM_ID as xA}from"@solana/spl-token";import{PublicKey as fA}from"@solana/web3.js";var gA=H("Raydium_liquidity_serum");import Jw from"bn.js";import tk from"decimal.js";import{TOKEN_PROGRAM_ID as JA}from"@solana/spl-token";import{PublicKey as tw}from"@solana/web3.js";import ow from"bn.js";import{SystemProgram as DA,SYSVAR_RENT_PUBKEY as WA,Transaction as qA,TransactionInstruction as UA}from"@solana/web3.js";import{createInitializeAccountInstruction as zA,TOKEN_PROGRAM_ID as XA}from"@solana/spl-token";function Qa(i="accountFlags"){let e=new Dt(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 Za=h([G(5),Qa("accountFlags"),a("ownAddress"),n("vaultSignerNonce"),a("baseMint"),a("quoteMint"),a("baseVault"),n("baseDepositsTotal"),n("baseFeesAccrued"),a("quoteVault"),n("quoteDepositsTotal"),n("quoteFeesAccrued"),n("quoteDustThreshold"),a("requestQueue"),a("eventQueue"),a("bids"),a("asks"),n("baseLotSize"),n("quoteLotSize"),n("feeRateBps"),n("referrerRebatesAccrued"),G(7)]);import{PublicKey as CT}from"@solana/web3.js";import{AccountLayout as LT,NATIVE_MINT as OT,TOKEN_2022_PROGRAM_ID as NT,TOKEN_PROGRAM_ID as MT,createAssociatedTokenAccountIdempotentInstruction as FT}from"@solana/spl-token";import Ik from"bn.js";import os from"bn.js";var mk=new os(0);import gk from"bn.js";import is from"bn.js";var Zt=new is(1e6);import UT from"bn.js";import zT from"decimal.js";import{PublicKey as zk,TransactionInstruction as Xk,Keypair as Hk,SystemProgram as Qk}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as $k,TOKEN_2022_PROGRAM_ID as jk,TOKEN_PROGRAM_ID as Jk}from"@solana/spl-token";var Rk=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Lk=Buffer.from("amm_config","utf8"),Ok=Buffer.from("pool","utf8"),Nk=Buffer.from("pool_lp_mint","utf8"),Mk=Buffer.from("pool_vault","utf8"),Fk=Buffer.from("observation","utf8"),vk=Buffer.from("permission","utf8"),_k=Buffer.from("support_mint","utf8"),Vk=Buffer.from("creator_fee_share","utf8");var Ek=Buffer.from("locked_liquidity","utf8");var aT=H("Raydium_cpmm"),sT={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173],lockCpLiquidity:[216,157,29,78,38,51,31,26],collectCpFee:[8,30,51,199,209,184,247,133],createPermissionPda:Buffer.from([135,136,2,216,137,169,181,202]),closePermissionPda:Buffer.from([156,84,32,118,69,135,70,123]),initializeWithPermission:Buffer.from([63,55,254,65,49,178,89,121]),collectCreatorFee:Buffer.from([20,22,86,123,198,28,219,132]),collectCreatorFeePermissionless:Buffer.from([202,202,34,83,226,122,145,229])};var ss=h([G(8),T("bump"),ye("disableCreatePool"),te("index"),n("tradeFeeRate"),n("protocolFeeRate"),n("fundFeeRate"),n("createPoolFee"),a("protocolOwner"),a("fundOwner"),n("creatorFeeRate"),n("creatorFeeShareRate"),I(n(),14)]),pi=h([G(8),a("configId"),a("poolCreator"),a("vaultA"),a("vaultB"),a("mintLp"),a("mintA"),a("mintB"),a("mintProgramA"),a("mintProgramB"),a("observationId"),T("bump"),T("status"),T("lpDecimals"),T("mintDecimalA"),T("mintDecimalB"),n("lpAmount"),n("protocolFeesMintA"),n("protocolFeesMintB"),n("fundFeesMintA"),n("fundFeesMintB"),n("openTime"),n("epoch"),T("feeOn"),ye("enableCreatorFee"),I(T(),6),n("creatorFeesMintA"),n("creatorFeesMintB"),I(n(),28)]),lT=h([G(8),a("configId"),I(n(),30)]),mT=h([G(8),T("bump"),a("creator"),a("ammConfig"),n("shareRate"),I(n(),8)]);import{PublicKey as oK,SystemProgram as iK}from"@solana/web3.js";import{createTransferInstruction as aK,TOKEN_PROGRAM_ID as sK,TOKEN_2022_PROGRAM_ID as uK,createAssociatedTokenAccountIdempotentInstruction as cK,createSyncNativeInstruction as mK,createTransferCheckedInstruction as dK}from"@solana/spl-token";import Ks from"bn.js";import yK from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Jh,TOKEN_2022_PROGRAM_ID as eB,TOKEN_PROGRAM_ID as tB}from"@solana/spl-token";import{SystemProgram as rB,TransactionInstruction as aB}from"@solana/web3.js";import ls from"bn.js";var Vh=Buffer.from("vault_auth_seed","utf8"),Eh=Buffer.from("global_config","utf8"),Dh=Buffer.from("pool_vesting","utf8"),Wh=Buffer.from("platform_config","utf8"),qh=Buffer.from("platform_fee_vault_auth_seed","utf8"),Uh=Buffer.from("creator_fee_vault_auth_seed","utf8"),Gh=Buffer.from("platform_global_access","utf8"),zh=Buffer.from("platform_allow_config","utf8"),Xh=Buffer.from("platform_curve_rule","utf8");var cB={initialize:Buffer.from([175,175,109,31,13,152,155,237]),initializeV2:Buffer.from([67,153,175,39,218,16,38,32]),buyExactIn:Buffer.from([250,234,13,123,213,156,19,236]),buyExactOut:Buffer.from([24,211,116,40,105,3,153,56]),sellExactIn:Buffer.from([149,39,222,155,211,124,152,26]),sellExactOut:Buffer.from([95,200,71,34,8,9,11,166]),createVestingAccount:Buffer.from([129,178,2,13,217,172,230,218]),claimVestedToken:Buffer.from([49,33,104,30,189,157,79,35]),createPlatformConfig:Buffer.from([176,90,196,175,253,113,220,20]),claimPlatformFee:Buffer.from([156,39,208,135,76,237,61,72]),updatePlaformConfig:Buffer.from([195,60,76,129,146,45,67,143]),initializeWithToken2022:Buffer.from([37,190,126,222,44,154,171,17]),claimPlatformFeeFromVault:Buffer.from([117,241,198,168,248,218,80,29]),claimCreatorFee:Buffer.from([26,97,138,203,132,171,141,252]),createPlatformVestingAccount:Buffer.from([146,71,173,69,98,19,15,106]),createPlatformAllowConfig:Buffer.from([69,71,168,7,214,250,107,102]),closePlatformAllowConfig:Buffer.from([82,205,36,216,16,6,240,215]),createPlatformCurveRule:Buffer.from([148,71,180,136,122,144,59,21]),updatePlatformCurveRule:Buffer.from([90,100,206,196,54,117,120,139]),removePlatformCurveRule:Buffer.from([236,77,154,138,32,145,127,219]),closePlatformCurveRule:Buffer.from([194,114,82,45,136,88,169,159])};var lB=new ls("18446744073709551615");var ms=h([n(),n("epoch"),T("curveType"),te("index"),n("migrateFee"),n("tradeFeeRate"),n("maxShareFeeRate"),n("minSupplyA"),n("maxLockRate"),n("minSellRateA"),n("minMigrateRateA"),n("minFundRaisingB"),a("mintB"),a("protocolFeeOwner"),a("migrateFeeOwner"),a("migrateToAmmWallet"),a("migrateToCpmmWallet"),I(n(),16)]),ds=h([n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod"),n("startTime"),n("totalAllocatedShare")]),ps=h([n(),n("epoch"),T("bump"),T("status"),T("mintDecimalsA"),T("mintDecimalsB"),T("migrateType"),n("supply"),n("totalSellA"),n("virtualA"),n("virtualB"),n("realA"),n("realB"),n("totalFundRaisingB"),n("protocolFee"),n("platformFee"),n("migrateFee"),ds.replicate("vestingSchedule"),a("configId"),a("platformId"),a("mintA"),a("mintB"),a("vaultA"),a("vaultB"),a("creator"),T("mintProgramFlag"),T("cpmmCreatorFeeOn"),n("platformVestingShare"),I(T(),54)]),fB=h([n(),n("epoch"),a("poolId"),a("beneficiary"),n("claimedAmount"),n("tokenShareAmount"),I(n(),8)]),fs=h([T("migrateType"),T("migrateCpmmFeeOn"),n("supply"),n("totalSellA"),n("totalFundRaisingB"),n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod")]),yB=h([n("epoch"),T("index"),a("configId"),fs.replicate("bondingCurveParam"),I(n(),50)]),yi=h([n(),n("epoch"),a("platformClaimFeeWallet"),a("platformLockNftWallet"),n("platformScale"),n("creatorScale"),n("burnScale"),n("feeRate"),I(T(),64,"name"),I(T(),256,"web"),I(T(),256,"img"),a("cpConfigId"),n("creatorFeeRate"),a("transferFeeExtensionAuth"),a("platformVestingWallet"),n("platformVestingScale"),a("platformCpCreator"),T("restrictGlobalConfig"),T("restrictCurveParam"),a("curveRuleManager"),I(T(),78)]),ys=h([T("field"),T("op"),D("value")]),bs=h([te("groupId"),n("epoch"),Kn(ys,"constraints")]),gs=h([n(),T("bump"),T("version"),a("platformId"),a("configId"),n("epoch"),I(n(),8),Kn(bs,"groups")]);import{TOKEN_2022_PROGRAM_ID as PB,TOKEN_PROGRAM_ID as AB}from"@solana/spl-token";import Ps from"bn.js";var LB=new Ps(1e6);import FB from"bn.js";import _B from"decimal.js";import yI from"bn.js";import gI from"decimal.js";import UB from"bn.js";import zB from"decimal.js";import tI from"bn.js";import oI from"decimal.js";import Pi from"bn.js";import Qn from"decimal.js";var jt=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 Pi(r.mul(this._Q64).toFixed(0))}};jt._Q64=new Qn(new Pi(1).shln(64).toString());import{NATIVE_MINT as Ox,TOKEN_2022_PROGRAM_ID as Nx,TOKEN_PROGRAM_ID as Mx,createAssociatedTokenAccountIdempotentInstruction as vx,createSyncNativeInstruction as _x,getTransferFeeConfig as Vx,unpackMint as Ex}from"@solana/spl-token";import oe from"bn.js";import{PublicKey as Is,SystemProgram as qx}from"@solana/web3.js";import Qx from"decimal.js";var Zx={initPriceX64:new oe("515752397214619"),supply:new oe(1e15),totalSellA:new oe(7931e11),totalFundRaisingB:new oe(85e9),totalFundRaisingBUSD:new oe(125e8),totalLockedAmount:new oe("0"),cliffPeriod:new oe("0"),unlockPeriod:new oe("0"),decimals:6,virtualA:new oe("1073471847374405"),virtualB:new oe("30050573465"),realA:new oe(0),realB:new oe(0),protocolFee:new oe(0),platformId:new Is("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new oe(0),cliffPeriod:new oe(0),unlockPeriod:new oe(0),startTime:new oe(0),totalAllocatedShare:new oe(0)}},$x=new oe(1e4);var xs={[No.toBase58()]:3};var Ss=h([G(5),G(8),a("ownAddress"),n("vaultSignerNonce"),a("baseMint"),a("quoteMint"),a("baseVault"),n("baseDepositsTotal"),n("baseFeesAccrued"),a("quoteVault"),n("quoteDepositsTotal"),n("quoteFeesAccrued"),n("quoteDustThreshold"),a("requestQueue"),a("eventQueue"),a("bids"),a("asks"),n("baseLotSize"),n("quoteLotSize"),n("feeRateBps"),n("referrerRebatesAccrued"),G(7)]);import{PublicKey as kS}from"@solana/web3.js";var xS=H("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as FS,TOKEN_2022_PROGRAM_ID as vS,TOKEN_PROGRAM_ID as _S}from"@solana/spl-token";import{PublicKey as ES,SystemProgram as DS,TransactionInstruction as WS}from"@solana/web3.js";import US from"bn.js";var zK=new Ks(0);import{PublicKey as Cs,Transaction as Zn,TransactionInstruction as Rs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ls}from"@solana/spl-token";import Ai from"bn.js";var ue=class extends ce{static getPdaPoolId(e,t){return me([ue.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,o,r){return me([ue.SEED_CONFIG.owner.id,t.toBuffer(),o.toBuffer(),Buffer.from(new Ai(r).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:o,wallet:r,chainTime:s}){if(o.length===0)return[];let c=o.map(m=>ue.getPdaPoolId(t,m).publicKey),u=[];for(let m=0;m<ue.VERSION_PROJECT.length;m++)u.push(...c.map(d=>ue.getPdaOwnerId(t,d,r,m).publicKey));let b=await Pe(e,[...c,...u]),l=[];for(let m=0;m<b.length;m++){let d=Math.floor(m/o.length),y=m%o.length,w=c[y],P=u[m],A=b[y],k=b[o.length+m];if(!(A&&k)||A.data.length!==ue.POOL_LAYOUT.span||k.data.length!==ue.OWNER_LAYOUT.span)continue;let x=ue.POOL_LAYOUT.decode(A.data),S=ue.OWNER_LAYOUT.decode(k.data),N=x.openTime.toNumber(),O=x.endTime.toNumber(),B=S.tokenInfo.map(M=>M.debtAmount.gt(new Ai(0))).filter(M=>!M).length!==3,K=s>N&&s<O&&x.status===1,C=B&&K;l.push({programId:t,poolId:w,ammId:x.ammId,ownerAccountId:P,snapshotLpAmount:S.lpAmount,project:ue.VERSION_PROJECT[d],openTime:N,endTime:O,canClaim:C,canClaimErrorType:B?K?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:x.tokenInfo.map((M,R)=>({mintAddress:M.mintAddress,mintVault:M.mintVault,mintDecimals:M.mintDecimals,perLpLoss:M.perLpLoss,debtAmount:S.tokenInfo[R].debtAmount.add(S.tokenInfo[R].claimedAmount)}))})}return l}async makeClaimTransaction({poolInfo:e,ownerInfo:t,feePayer:o}){t.wallet||this.scope.checkOwner();let r=this.createTxBuilder(o),s=t.wallet||this.scope.ownerPubKey,c=[];for(let l of e.tokenInfo){let{account:m,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({mint:l.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:l.mintAddress.equals(ae.WSOL.mint),createInfo:{payer:s,amount:0},skipCloseAccount:!l.mintAddress.equals(ae.WSOL.mint),associatedOnly:l.mintAddress.equals(ae.WSOL.mint)?!1:t.associatedOnly});d&&r.addInstruction(d),c.push(m)}r.addInstruction({instructions:[ue.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:s,ownerPda:e.ownerAccountId,claimAddress:c}})]});let{transaction:u,signers:b}=r.build();return[{transaction:u,signer:b}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:o}){let r=this.createTxBuilder(o),s=t.wallet||this.scope.ownerPubKey,c={};for(let m of e){let d=[];for(let y of m.tokenInfo){let{account:w,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({mint:y.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:y.mintAddress.equals(ae.WSOL.mint),createInfo:{payer:s,amount:0},skipCloseAccount:!y.mintAddress.equals(ae.WSOL.mint),associatedOnly:y.mintAddress.equals(ae.WSOL.mint)?!1:t.associatedOnly});P&&r.addInstruction(P),w&&(c[y.mintAddress.toString()]=w,d.push(w))}r.addInstruction({instructions:[ue.makeClaimInstruction({programId:m.programId,poolInfo:m,ownerInfo:{wallet:s,ownerPda:m.ownerAccountId,claimAddress:d}})]})}let{transaction:u,signers:b}=r.build(),l=r.allInstructions;return Pn(l,[s,...b.map(m=>m.publicKey)])?[{transaction:u,signer:b}]:[{transaction:new Zn().add(...l.slice(0,r.AllTxData.instructions.length-1)),signer:b},{transaction:new Zn().add(...l.slice(r.AllTxData.instructions.length-1)),signer:[]},{transaction:new Zn().add(...r.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:o}){let r=h([]),s=[{pubkey:o.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:o.ownerPda,isSigner:!1,isWritable:!0},...o.claimAddress.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:b})=>({pubkey:b,isSigner:!1,isWritable:!0})),{pubkey:Ls,isSigner:!1,isWritable:!1}],c=Buffer.alloc(r.span);r.encode({},c);let u=Buffer.from([10,66,208,184,161,6,191,98,...c]);return new Rs({keys:s,programId:e,data:u})}},Ie=ue;Ie.CLAIMED_NUM=3,Ie.POOL_LAYOUT=h([G(8),T("bump"),T("status"),n("openTime"),n("endTime"),a("ammId"),I(h([T("mintDecimals"),a("mintAddress"),a("mintVault"),n("perLpLoss"),n("totalClaimedAmount")]),ue.CLAIMED_NUM,"tokenInfo"),I(n(),10,"padding")]),Ie.OWNER_LAYOUT=h([G(8),T("bump"),T("version"),a("poolId"),a("owner"),n("lpAmount"),I(h([a("mintAddress"),n("debtAmount"),n("claimedAmount")]),ue.CLAIMED_NUM,"tokenInfo"),I(n(),4,"padding")]),Ie.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Cs(e)),Ie.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},Ie.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as uC}from"@solana/web3.js";import{getTransferFeeConfig as lC,MintLayout as mC,TOKEN_2022_PROGRAM_ID as dC,TOKEN_PROGRAM_ID as pC,unpackMint as fC}from"@solana/spl-token";var WR=new Ue(2),qR=new Ue(3),UR=new Ue(5),rn=new Ue(10),GR=new Ue(100),zR=new Ue(1e3),XR=new Ue(1e4);function pn(i){return rn.pow(W(i))}function nn(i,e=1,t=[]){let o=[...i];if(e<=0)return t;for(;o.length;)t.push(o.splice(0,e));return t}import ve from"decimal.js";import _e from"bn.js";var Jt=class extends ce{async _getUserRewardInfo({payer:e,rewardInfo:t}){if(t.mint.equals(ie)){let o=await yt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:e,amount:Dn(q(F({},t),{openTime:t.openTime.toString(),endTime:t.endTime.toString()}))});return{rewardPubKey:o.addresses.newAccount,newInstruction:o}}return{rewardPubKey:await this.scope.account.getCreatedTokenAccount({mint:t.mint,associatedOnly:!1})}}async create({poolInfo:e,rewardInfos:t,payer:o,programId:r=bt,txVersion:s,feePayer:c,lockProgram:u}){var C,M;this.checkDisabled(),this.scope.checkOwner();let l={lpMint:new Z(e.lpMint.address),lockInfo:{lockMint:(C=u==null?void 0:u.mint)!=null?C:_o,lockVault:(M=u==null?void 0:u.vault)!=null?M:Vo},version:6,rewardInfos:t,programId:r},m=this.createTxBuilder(c),d=o!=null?o:this.scope.ownerPubKey,y=qe({fromPublicKey:d,programId:l.programId}),w=await this.scope.connection.getMinimumBalanceForRentExemption(Pt.span);m.addInstruction({instructions:[Os.createAccountWithSeed({fromPubkey:d,basePubkey:d,seed:y.seed,newAccountPubkey:y.publicKey,lamports:w,space:Pt.span,programId:l.programId})]});let{publicKey:P,nonce:A}=Uo({programId:new Z(l.programId),poolId:y.publicKey}),k=At({programId:l.programId,poolId:y.publicKey,mint:l.lpMint,type:"lpVault"}),x=[],S=[];for(let R of l.rewardInfos){R.openTime>=R.endTime&&this.logAndCreateError("start time error","rewardInfo.rewardOpenTime",R.openTime.toString()),isNaN(Fe[R.rewardType])&&this.logAndCreateError("rewardType error",R.rewardType),Number(R.perSecond)<=0&&this.logAndCreateError("rewardPerSecond error",R.perSecond),x.push(Go(R));let{rewardPubKey:L,newInstruction:Y}=await this._getUserRewardInfo({rewardInfo:R,payer:d});Y&&m.addInstruction(Y),L||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let _=R.mint.equals(ie)?new Z(se.address):R.mint;S.push({rewardMint:_,rewardVault:At({programId:l.programId,poolId:y.publicKey,mint:_,type:"rewardVault"}),userRewardToken:L})}let{account:N,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({mint:new Z(l.lockInfo.lockMint),owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1});O&&m.addInstruction(O),N||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:B,instructionType:K}=Yo({farmId:y.publicKey,owner:this.scope.ownerPubKey,farmAuthority:P,lpVault:k,lpMint:l.lpMint,lockVault:l.lockInfo.lockVault,lockMint:l.lockInfo.lockMint,lockUserAccount:N,programId:l.programId,rewardInfo:S,rewardInfoConfig:x,nonce:A});return m.addInstruction({instructions:[B],instructionTypes:[K]}).versionBuild({txVersion:s,extInfo:{farmId:y.publicKey,farmAuthority:P,lpVault:k,lockUserAccount:N,nonce:A}})}async restartReward({farmInfo:e,payer:t,newRewardInfo:o,txVersion:r,feePayer:s}){var x;let c=Te[e.programId];c!==6&&this.logAndCreateError("invalid farm version ",c);let u=he((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),b={id:u.id,rewardInfos:e.rewardInfos,lpVault:u.lpVault,programId:u.programId};o.openTime>=o.endTime&&this.logAndCreateError("start time error","newRewardInfo",o);let l=t||this.scope.ownerPubKey,m=o.mint.equals(ie)?new Z(se.address):o.mint,d=b.rewardInfos.findIndex(S=>new Z(S.mint.address).equals(m)),y=u.rewardInfos[d];y||this.logAndCreateError("configuration does not exist","rewardMint",m);let w=(x=y.vault)!=null?x:ie,P=this.createTxBuilder(s),{rewardPubKey:A,newInstruction:k}=await this._getUserRewardInfo({rewardInfo:o,payer:l});return k&&P.addInstruction(k),A||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts),P.addInstruction({instructions:[Wn({payer:this.scope.ownerPubKey,rewardVault:w,userRewardTokenPub:A,farmKeys:b,rewardInfo:o})],instructionTypes:[U.FarmV6Restart]}).versionBuild({txVersion:r})}async restartRewards({farmInfo:e,payer:t,newRewardInfos:o,txVersion:r,feePayer:s}){var d;let c=Te[e.programId];c!==6&&this.logAndCreateError("invalid farm version ",c);let u=he((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),b={id:u.id,rewardInfos:e.rewardInfos,lpVault:u.lpVault,programId:u.programId};o.forEach(y=>{y.openTime>=y.endTime&&this.logAndCreateError("start time error","newRewardInfo",y)});let l=t||this.scope.ownerPubKey,m=this.createTxBuilder(s);for(let y of o){let w=y.mint.equals(ie)?new Z(se.address):y.mint,P=b.rewardInfos.findIndex(O=>new Z(O.mint.address).equals(w)),A=u.rewardInfos[P];A||this.logAndCreateError("configuration does not exist","rewardMint",w);let k=(d=A.vault)!=null?d:ie,{rewardPubKey:x,newInstruction:S}=await this._getUserRewardInfo({rewardInfo:y,payer:l});S&&m.addInstruction(S),x||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let N=Wn({payer:this.scope.ownerPubKey,rewardVault:k,userRewardTokenPub:x,farmKeys:b,rewardInfo:y});m.addInstruction({instructions:[N],instructionTypes:[U.FarmV6Restart]})}return m.versionBuild({txVersion:r})}async addNewRewardToken(e){let{txVersion:t,farmInfo:o,newRewardInfo:r,payer:s,feePayer:c}=e,u=Te[o.programId];u!==6&&this.logAndCreateError("invalid farm version ",u);let b=he((await this.scope.api.fetchFarmKeysById({ids:o.id}))[0]),l=s!=null?s:this.scope.ownerPubKey,m=this.createTxBuilder(c),d=r.mint.equals(ie)?new Z(se.address):r.mint,y=At({programId:new Z(o.programId),poolId:new Z(o.id),mint:d,type:"rewardVault"}),{rewardPubKey:w,newInstruction:P}=await this._getUserRewardInfo({rewardInfo:r,payer:l});return P&&m.addInstruction(P),w||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),r.mint=d,m.addInstruction({instructions:[qn({payer:this.scope.ownerPubKey,userRewardTokenPub:w,farmKeys:b,rewardVault:y,rewardInfo:r})],instructionTypes:[U.FarmV6CreatorAddReward]}).versionBuild({txVersion:t})}async addNewRewardsToken(e){let{txVersion:t,farmInfo:o,newRewardInfos:r,payer:s,feePayer:c}=e,u=Te[o.programId];u!==6&&this.logAndCreateError("invalid farm version ",u);let b=he((await this.scope.api.fetchFarmKeysById({ids:o.id}))[0]),l=s!=null?s:this.scope.ownerPubKey,m=this.createTxBuilder(c);for(let d of r){let y=d.mint.equals(ie)?new Z(se.address):d.mint,w=At({programId:new Z(o.programId),poolId:new Z(o.id),mint:y,type:"rewardVault"}),{rewardPubKey:P,newInstruction:A}=await this._getUserRewardInfo({rewardInfo:d,payer:l});A&&m.addInstruction(A),P||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let k=qn({payer:this.scope.ownerPubKey,userRewardTokenPub:P,farmKeys:b,rewardVault:w,rewardInfo:q(F({},d),{mint:y})});m.addInstruction({instructions:[k],instructionTypes:[U.FarmV6CreatorAddReward]})}return m.versionBuild({txVersion:t})}async deposit(e){let{txVersion:t,farmInfo:o,amount:r,feePayer:s,useSOLBalance:c,associatedOnly:u=!0,checkCreateATAOwner:b=!1,userAuxiliaryLedgers:l,computeBudgetConfig:m,txTipConfig:d}=e;this.scope.availability.addFarm===!1&&this.logAndCreateError("farm deposit feature disabled in your region");let{rewardInfos:y,programId:w}=o,P=Te[w];P===4&&this.logAndCreateError("V4 has suspended deposits:",o.programId),On(P)||this.logAndCreateError("invalid farm program:",o.programId);let[A,k]=[new Z(o.programId),new Z(o.id)],x=(await this.scope.api.fetchFarmKeysById({ids:o.id}))[0],S=Be({programId:A,poolId:k,owner:this.scope.ownerPubKey,version:P}),N=this.createTxBuilder(s);N.addCustomComputeBudget(m),N.addTipInstruction(d);let O={};for(let V of this.scope.account.tokenAccounts)if(u){let X=de(this.scope.ownerPubKey,V.mint,V.programId).publicKey;V.publicKey&&X.equals(V.publicKey)&&(O[V.mint.toString()]=V.publicKey)}else O[V.mint.toString()]=V.publicKey;let B=x.lpMint,K=O[B.address];K||this.logAndCreateError("you don't have any lp","lp zero",O);let C=[];for(let V of y){let X=c&&V.mint.address===le.toString(),j=O[V.mint.address];if(!j){let{account:ge,instructionParams:Le}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:V.mint.programId,mint:new Z(V.mint.address),notUseTokenAccount:X,createInfo:{payer:s||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!X,associatedOnly:X?!1:u,checkCreateATAOwner:b});j=ge,Le&&N.addInstruction(Le)}O[V.mint.address]=j,C.push(j)}let M,R=await this.scope.connection.getAccountInfo(S);if(R&&(M=qt(P).decode(R.data)),o.programId!==bt.toString()&&o.programId!==Ce.FARM_PROGRAM_ID_V6.toString()&&!M){let{instruction:V,instructionType:X}=Ut({id:k,programId:A,version:P,ledger:S,owner:this.scope.ownerPubKey});N.addInstruction({instructions:[V],instructionTypes:[X]})}let L=Nn({version:P,rewardInfos:y,rewardTokenAccountsPublicKeys:C});L&&this.logAndCreateError(L);let Y={amount:W(r),owner:this.scope.ownerPubKey,farmInfo:o,farmKeys:x,lpAccount:K,rewardAccounts:C,userAuxiliaryLedgers:l==null?void 0:l.map(V=>new Z(V))},_=P===6?jo(Y):P===5?$o(Y):Zo(Y),E={3:U.FarmV3Deposit,5:U.FarmV5Deposit,6:U.FarmV6Deposit};return N.addInstruction({instructions:[_],instructionTypes:[E[P]]}).versionBuild({txVersion:t})}async withdraw(e){let{txVersion:t,farmInfo:o,amount:r,deposited:s,useSOLBalance:c,feePayer:u,associatedOnly:b=!0,checkCreateATAOwner:l=!1,userAuxiliaryLedgers:m,computeBudgetConfig:d,txTipConfig:y}=e,{rewardInfos:w}=o;this.scope.availability.removeFarm===!1&&this.logAndCreateError("farm withdraw feature disabled in your region");let P=Te[o.programId];On(P)||this.logAndCreateError("invalid farm program:",o.programId);let A=(await this.scope.api.fetchFarmKeysById({ids:o.id}))[0],k=this.createTxBuilder(u);k.addCustomComputeBudget(d),k.addTipInstruction(y);let x={};for(let L of this.scope.account.tokenAccounts)if(b){let Y=de(this.scope.ownerPubKey,L.mint).publicKey;L.publicKey&&Y.equals(L.publicKey)&&(x[L.mint.toString()]=L.publicKey)}else x[L.mint.toString()]=L.publicKey;if(P!==4){let L=Be({programId:new Z(o.programId),poolId:new Z(o.id),owner:this.scope.ownerPubKey,version:P}),Y=await this.scope.connection.getAccountInfo(L);if(Y)qt(P).decode(Y.data).deposited.isZero()&&this.logAndCreateError("no deposited lp",{farmId:o.id});else if(P!==6){let{instruction:_,instructionType:E}=Ut({id:new Z(A.id),programId:new Z(A.programId),version:P,ledger:L,owner:this.scope.ownerPubKey});k.addInstruction({instructions:[_],instructionTypes:[E]})}}s&&s.isZero()&&!(m||[]).length&&this.logAndCreateError("no deposited lp",{farmId:o.id});let S=A.lpMint.address,N=c&&S===le.toString(),O=x[S.toString()];if(!O){let{account:L,instructionParams:Y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:A.lpMint.programId,mint:new Z(S),notUseTokenAccount:N,createInfo:{payer:u||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:N?!1:b,checkCreateATAOwner:l});O=L,Y&&k.addInstruction(Y)}x[S.toString()]=O;let B=[];for(let L of w){let Y=c&&L.mint.address===le.toString(),_=x[L.mint.address];if(!_){let{account:E,instructionParams:V}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:L.mint.programId,mint:new Z(L.mint.address),notUseTokenAccount:Y,createInfo:{payer:u||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!Y,associatedOnly:Y?!1:b,checkCreateATAOwner:l});_=E,V&&k.addInstruction(V)}x[L.mint.address]=_,B.push(_)}let K=Nn({version:P,rewardInfos:w,rewardTokenAccountsPublicKeys:B});K&&this.logAndCreateError(K);let C={amount:W(r),owner:this.scope.ownerPubKey,farmInfo:o,farmKeys:A,lpAccount:O,rewardAccounts:B,userAuxiliaryLedgers:m==null?void 0:m.map(L=>new Z(L))},M=P===6?Gt(C):P===5?zt(C):P===4?Qo(C):Xt(C),R={3:U.FarmV3Withdraw,4:U.FarmV4Withdraw,5:U.FarmV5Withdraw,6:U.FarmV6Withdraw};return k.addInstruction({instructions:[M],instructionTypes:[R[P]]}).versionBuild({txVersion:t})}async withdrawFarmReward({farmInfo:e,withdrawMint:t,txVersion:o,computeBudgetConfig:r,txTipConfig:s,feePayer:c}){var A;this.scope.checkOwner();let u=he((await this.scope.api.fetchFarmKeysById({ids:e.id}))[0]),b=Te[e.programId];b!==6&&this.logAndCreateError("invalid farm version",b);let l=u.rewardInfos.find(k=>Oe(k.mint.address).equals(Oe(t)));l||this.logAndCreateError("withdraw mint error","rewardInfos",e);let m=(A=l==null?void 0:l.vault)!=null?A:ie,d=this.createTxBuilder(c),y;if(t.equals(ie)||t.equals(Z.default)){let k=await yt({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:Dn(q(F({},l),{openTime:l.openTime,endTime:l.endTime,perSecond:new ve(l.perSecond).mul(10**l.mint.decimals).toString()}))});y=k.addresses.newAccount,d.addInstruction(k)}else{let k=await this.scope.account.getCreatedTokenAccount({mint:t});k?y=k:(y=await this.scope.account.getAssociatedTokenAccount(t),d.addInstruction({instructions:[wi(this.scope.ownerPubKey,y,this.scope.ownerPubKey,t)],instructionTypes:[U.CreateATA]}))}let{instruction:w,instructionType:P}=Ho({programId:u.programId,id:u.id,authority:u.authority,lpVault:u.lpVault,rewardVault:m,userRewardToken:y,owner:this.scope.ownerPubKey});return d.addCustomComputeBudget(r),d.addTipInstruction(s),d.addInstruction({instructions:[w],instructionTypes:[P]}).versionBuild({txVersion:o})}async harvestAllRewards(e){let{farmInfoList:t,useSOLBalance:o,feePayer:r,associatedOnly:s=!0,checkCreateATAOwner:c=!1,userAuxiliaryLedgers:u,txVersion:b,computeBudgetConfig:l}=e,m=this.createTxBuilder(r),d={};for(let P of this.scope.account.tokenAccounts)if(s){let A=de(this.scope.ownerPubKey,P.mint).publicKey;P.publicKey&&A.equals(P.publicKey)&&(d[P.mint.toString()]=P.publicKey)}else d[P.mint.toString()]=P.publicKey;let w=(await this.scope.api.fetchFarmKeysById({ids:Object.values(t).map(P=>P.id).join(",")})).reduce((P,A)=>q(F({},P),{[A.id]:A}),{});for(let P of Object.values(t)){let{programId:A,lpMint:k,rewardInfos:x,id:S}=P,N=Te[A],O=k.address,B=o&&O===le.toString(),K=d[O];if(!K){let{account:_,instructionParams:E}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:k.programId,mint:new Z(O),notUseTokenAccount:B,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:B?!1:s,checkCreateATAOwner:c});K=_,E&&m.addInstruction(E)}d[O.toString()]=K;let C=[];for(let _ of x){let E=o&&_.mint.address===le.toString(),V=d[_.mint.address];if(!V)if(E){let{account:X,instructionParams:j}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:_.mint.programId,mint:new Z(_.mint.address),notUseTokenAccount:E,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!E,associatedOnly:E?!1:s,checkCreateATAOwner:c});V=X,j&&m.addInstruction(j)}else{let X=new Z(_.mint.address);V=this.scope.account.getAssociatedTokenAccount(X),m.addInstruction({instructions:[wi(this.scope.ownerPubKey,V,this.scope.ownerPubKey,X)]})}d[_.mint.address]=V,C.push(V)}let M=w[S],R={amount:ne,owner:this.scope.ownerPubKey,farmInfo:P,farmKeys:M,lpAccount:K,rewardAccounts:C,userAuxiliaryLedgers:u==null?void 0:u.map(_=>new Z(_))},L=N===6?Gt(R):N===5?zt(R):Xt(R),Y={3:U.FarmV3Withdraw,5:U.FarmV5Withdraw,6:U.FarmV6Withdraw};m.addInstruction({instructions:[L],instructionTypes:[Y[N]]})}return b===1?m.sizeCheckBuild({computeBudgetConfig:l}):m.sizeCheckBuildV0({computeBudgetConfig:l})}async fetchFarmBalances(){let e=await this.scope.api.fetchFarmPositions(this.scope.ownerPubKey.toBase58()),t=new Map,o=new Map;Object.keys(e||{}).forEach(l=>{var m,d;Object.keys(e[l]).forEach(y=>{Object.keys(e[l][y]).forEach(w=>{var x,S,N,O,B,K;let P=q(F({},e[l][y][w]),{farmId:y,lpMint:l,userVault:w}),A=t.get(l);t.set(l,{lpMint:l,hasAmount:(A==null?void 0:A.hasAmount)||new ve(P.lpAmount||0).gt(0),hasV1Data:(A==null?void 0:A.hasV1Data)||P.version==="V1",totalLpAmount:new ve((x=A==null?void 0:A.totalLpAmount)!=null?x:0).add(P.lpAmount||0).toString(),totalV1LpAmount:P.version==="V1"?new ve((S=A==null?void 0:A.totalV1LpAmount)!=null?S:0).add(P.lpAmount||0).toString():(N=A==null?void 0:A.totalV1LpAmount)!=null?N:"0",data:[...(A==null?void 0:A.data)||[],P]});let k=o.get(y);P.programId,o.set(y,{lpMint:l,hasAmount:(k==null?void 0:k.hasAmount)||new ve(P.lpAmount||0).gt(0),hasV1Data:(k==null?void 0:k.hasV1Data)||P.version==="V1",totalLpAmount:new ve((O=k==null?void 0:k.totalLpAmount)!=null?O:0).add(P.lpAmount||0).toString(),totalV1LpAmount:P.version==="V1"?new ve((B=k==null?void 0:k.totalV1LpAmount)!=null?B:0).add(P.lpAmount||0).toString():(K=k==null?void 0:k.totalV1LpAmount)!=null?K:"0",data:[...(k==null?void 0:k.data)||[],P]})})}),t.set(l,q(F({},t.get(l)),{totalLpAmount:new ve((d=(m=t.get(l))==null?void 0:m.totalLpAmount)!=null?d:0).toString()}))});let r=Array.from(o).map(l=>l[1].data).flat(),s=await this.scope.api.fetchFarmInfoById({ids:r.map(l=>l.farmId).join(",")}),c=await Pe(this.scope.connection,r.map(l=>new Z(l.userVault)));return(await Pe(this.scope.connection,r.map(l=>new Z(l.farmId)))).map((l,m)=>{var x;if(!l||!c[m])return;let d=Te[r[m].programId];if(!Wt[d]||!gt[d])return;let y=gt[d].decode(c[m].data),w=Wt[d].decode(l.data),P;w.version===6?P=(x=w.rewardMultiplier)!=null?x:new _e(10).pow(new _e(9)):P=w.rewardInfos.length===1?new _e(10).pow(new _e(9)):new _e(10).pow(new _e(15));let A=s[m],k=w?w.rewardInfos.map((S,N)=>{var K;let O=y.rewardDebts[N],B=y.deposited.mul((w==null?void 0:w.version)===6?S.accRewardPerShare:S.perShareReward).div(P).sub(O);return B.lt(new _e(0))&&(B=new _e(0)),{mint:(K=A.rewardInfos[N])==null?void 0:K.mint,amount:B.toString()}}):[];return q(F(F({},y),w),{farmInfo:A,pendingRewards:k})}).filter(Boolean)}};export{Jt as default};
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
//# sourceMappingURL=farm.mjs.map