UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

3 lines 107 kB
var hi=Object.defineProperty,Ii=Object.defineProperties;var Bi=Object.getOwnPropertyDescriptors;var It=Object.getOwnPropertySymbols;var $n=Object.prototype.hasOwnProperty,Jn=Object.prototype.propertyIsEnumerable;var jn=(i,e,t)=>e in i?hi(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,v=(i,e)=>{for(var t in e||(e={}))$n.call(e,t)&&jn(i,t,e[t]);if(It)for(var t of It(e))Jn.call(e,t)&&jn(i,t,e[t]);return i},q=(i,e)=>Ii(i,Bi(e));var xe=(i,e)=>{var t={};for(var o in i)$n.call(i,o)&&e.indexOf(o)<0&&(t[o]=i[o]);if(i!=null&&It)for(var o of It(i))e.indexOf(o)<0&&Jn.call(i,o)&&(t[o]=i[o]);return t};import{PublicKey as Z,SystemProgram as Cs}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as ki}from"@solana/spl-token";import{PublicKey as Ki}from"@solana/web3.js";import{get as eo,set as xi}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}},to={},Si={};function H(i){let e=eo(to,i);if(!e){let t=eo(Si,i);e=new en({name:i,logLevel:t}),xi(to,i,e)}return e}import{MINT_SIZE as Ds,TOKEN_PROGRAM_ID as Ws,getTransferFeeConfig as qs,unpackMint as Us}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}=v({batchRequest:!1},t),c=nn(e,s),u=new Array(c.length).fill([]);if(o){let b=c.map(m=>{let y=i._buildArgs([m.map(w=>w.toBase58())],r,"base64");return{methodName:"getMultipleAccounts",args:y}}),l=nn(b,10);u=(await(await Promise.all(l.map(async m=>await i._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&tn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.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 Ki(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 sR from"decimal.js";import vi from"big.js";import St from"bn.js";import Ci from"toformat";var Ri=Ci,it=Ri;import xt from"big.js";import Oi from"bn.js";import Ni from"decimal.js-light";import rt from"bn.js";var no=9007199254740991;function D(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>=no||i<=-no)&&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 Bt=H("module/fraction"),on=it(xt),at=it(Ni),Mi={[0]:at.ROUND_DOWN,[1]:at.ROUND_HALF_UP,[2]:at.ROUND_UP},Fi={[0]:xt.roundDown,[1]:xt.roundHalfUp,[2]:xt.roundUp},j=class{constructor(e,t=new Oi(1)){this.numerator=D(e),this.denominator=D(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new j(this.denominator,this.numerator)}add(e){let t=e instanceof j?e:new j(D(e));return this.denominator.eq(t.denominator)?new j(this.numerator.add(t.numerator),this.denominator):new j(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof j?e:new j(D(e));return this.denominator.eq(t.denominator)?new j(this.numerator.sub(t.numerator),this.denominator):new j(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof j?e:new j(D(e));return new j(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof j?e:new j(D(e));return new j(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},o=1){Number.isInteger(e)||Bt.logWithError(`${e} is not an integer.`),e<=0&&Bt.logWithError(`${e} is not positive.`),at.set({precision:e+1,rounding:Mi[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)||Bt.logWithError(`${e} is not an integer.`),e<0&&Bt.logWithError(`${e} is negative.`),on.DP=e,on.RM=Fi[o]||1,new on(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var _i=H("Raydium_amount"),oo=it(vi);function Vi(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")):_i.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,o.slice(0,e)||o]}var pe=class extends j{constructor(t,o,r=!0,s){let c=new St(0),u=rn.pow(new St(t.decimals));if(r)c=D(o);else{let b=new St(0),l=new St(0);if(typeof o=="string"||typeof o=="number"||typeof o=="bigint"){let[d,m]=Vi(o.toString(),t.decimals);b=D(d),l=D(m)}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 oo.DP=this.token.decimals,new oo(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Ei}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as io}from"@solana/spl-token";var Kt={chainId:101,address:Ei.default.toBase58(),programId:io.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},se={chainId:101,address:"So11111111111111111111111111111111111111112",programId:io.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};import{PublicKey as ln}from"@solana/web3.js";import{PublicKey as J,SystemProgram as ro,SYSVAR_RENT_PUBKEY as Di}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Wi}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:Wi,isWritable:!1}),g({pubkey:ro.programId,isWritable:!1}),g({pubkey:Di,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"),ku=new J("SysvarC1ock11111111111111111111111111111111"),Ct=new J("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),qi=new J("Sysvar1nstructions1111111111111111111111111"),Ui=ro.programId,Tu=new J("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),hu=new J("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Iu=new J("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Bu=new J("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),xu=new J("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Su=new J("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ku=new J("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Cu=new J("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ru=new J("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Lu=new J("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Ou=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(v({},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 Gi from"bn.js";var ao=new j(new Gi(100)),Ke=class extends j{toSignificant(e=5,t,o){return this.mul(ao).toSignificant(e,t,o)}toFixed(e=2,t,o){return this.mul(ao).toFixed(e,t,o)}};var zi=H("Raydium_price"),Ae=class extends j{constructor(t){let{baseToken:o,quoteToken:r,numerator:s,denominator:c}=t;super(s,c);this.baseToken=o,this.quoteToken=r,this.scalar=new j(pn(o.decimals),pn(r.decimals))}get raw(){return new j(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&&zi.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 cC}from"lodash";import nc from"axios";var so={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"},Xi=q(v({},so),{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 Bc=H("Raydium_Api");import{PublicKey as Xm,SystemProgram as Ym}from"@solana/web3.js";import{AccountLayout as $m,createAssociatedTokenAccountIdempotentInstruction as Jm,TOKEN_PROGRAM_ID as ed,TOKEN_2022_PROGRAM_ID as td}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 uo,Keypair as lo,PublicKey as Yi,Transaction as mo,TransactionMessage as Hi,VersionedTransaction as po}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Qi}from"@solana/spl-token";var co=H("Raydium_txUtil"),fo=1644;function Lt(i){let e=[],t=[];return i.microLamports&&(e.push(uo.setComputeUnitPrice({microLamports:i.microLamports})),t.push(U.SetComputeUnitPrice)),i.units&&(e.push(uo.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&&co.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&co.logWithError(`no signers provided:, ${e.toString()}`);let t=new mo;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<fo}catch{return!1}}function me(i,e){let[t,o]=Yi.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=lo.generate().publicKey.toString()}){let s=new Hi({payerKey:e,recentBlockhash:o,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new po(s).serialize()).toString("base64").length<fo}catch{return!1}}var Zi=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i),ji=i=>{let e=i.serialize({requireAllSignatures:!1,verifySignatures:!1});i instanceof po&&(e=Zi(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 mo&&(t.recentBlockhash||(t.recentBlockhash=Qi.toBase58()),t.feePayer||(t.feePayer=lo.generate().publicKey)),e.push(ji(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(v({},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 d;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]),(d=this.owner)!=null&&d.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 m=await this.signAllTransactions([t]);if(this.signers.length)for(let y of m)try{y.sign(...this.signers)}catch{}return{txId:b?"":await this.connection.sendRawTransaction(m[0].serialize(),{skipPreflight:c}),signedTx:m[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(d=>d.transaction.instructions.length>0),c=[r,...s.map(d=>d.transaction)],u=[this.signers,...s.map(d=>d.signers)],b=[...this.instructionTypes,...s.map(d=>d.instructionTypes).flat()];return(l=this.owner)!=null&&l.signer&&u.forEach(d=>{d.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:c,signers:u,instructionTypes:b,execute:async d=>{var x;let{sequentially:m,onTxUpdate:y,skipTxCount:w=0,recentBlockHash:P,skipPreflight:A=!0}=d||{},k=P!=null?P:await He(this.connection,this.blockhashCommitment);if((x=this.owner)!=null&&x.isKeyPair){if(m){let S=[],N=0;for(let O of c){if(++N,N<=w)continue;let I=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(I)}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,I)=>(O.recentBlockhash=k,u[I].length&&O.sign(...u[I]),O));Ee(S);let N=await this.signAllTransactions(S);if(m){let O=0,I=[],K=async()=>{if(!N[O])return;let C=await this.connection.sendRawTransaction(N[O].serialize(),{skipPreflight:A});I.push({txId:C,status:"sent",signedTx:N[O]}),y==null||y([...I]),O++;let M=!1,R=null,L=null,Y=_=>{R!==null&&clearInterval(R),L!==null&&this.connection.removeSignatureListener(L);let E=I.findIndex(V=>V.txId===C);if(E>-1){if(I[E].status==="error"||I[E].status==="success")return;I[E].status=_.err?"error":"success"}y==null||y([...I]),_.err||K()};this.loopMultiTxStatus&&(R=setInterval(async()=>{var _;if(M){clearInterval(R);return}try{let E=await this.connection.getTransaction(C,{commitment:"confirmed",maxSupportedTransactionVersion:0});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:I.map(C=>C.txId),signedTxs:N}}else{let O=[];for(let I=0;I<N.length;I+=1){let K=await this.connection.sendRawTransaction(N[I].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=v(v({},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 d=await yn({connection:this.connection,address:l});for(let[k,x]of Object.entries(d))u[k]=x;let m=r?Qe.default.toBase58():s!=null?s:await He(this.connection,this.blockhashCommitment),y=new mt({payerKey:this.feePayer,recentBlockhash:m,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 I=await this.connection.sendTransaction(w,{skipPreflight:x});return S&&await Ot(this.connection,I),{txId:I,signedTx:w}}if(this.signAllTransactions){let I=await this.signAllTransactions([w]);if(this.signers.length)for(let K of I)try{K.sign(this.signers)}catch{}return{txId:N?"":await this.connection.sendTransaction(I[0],{skipPreflight:x}),signedTx:I[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(d=>d.builder.instructions.length>0),c=[r,...s.map(d=>d.transaction)],u=[this.signers,...s.map(d=>d.signers)],b=[...this.instructionTypes,...s.map(d=>d.instructionTypes).flat()];return(l=this.owner)!=null&&l.signer&&u.forEach(d=>{d.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),c.forEach(async(d,m)=>{d.sign(u[m])}),{builder:this,transactions:c,signers:u,instructionTypes:b,buildProps:o,execute:async d=>{var A;let{sequentially:m,onTxUpdate:y,recentBlockHash:w,skipPreflight:P=!0}=d||{};if(w&&c.forEach(k=>k.message.recentBlockhash=w),Ee(c),(A=this.owner)!=null&&A.isKeyPair){if(m){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(m){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 I=!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(I){clearInterval(K);return}try{let L=await this.connection.getTransaction(O,{commitment:"confirmed",maxSupportedTransactionVersion:0});L&&(I=!0,clearInterval(K),M({err:((R=L.meta)==null?void 0:R.err)||null}),console.log("tx status from getTransaction:",O))}catch(L){I=!0,clearInterval(K),console.error("getTransaction timeout:",L,O)}},Nt)),C=this.connection.onSignature(O,R=>{if(I){this.connection.removeSignatureListener(C);return}I=!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 m=e||{},{splitIns:t=[],computeBudgetConfig:o}=m,r=xe(m,["splitIns","computeBudgetConfig"]),s=o?Lt(o):{instructions:[],instructionTypes:[]},c=this.signers.reduce((w,P)=>q(v({},w),{[P.publicKey.toBase58()]:P}),{}),u=[],b=[],l=[],d=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[d]&&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");d+=w===t[d]?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(I,K)=>{I.recentBlockhash=N,b[K].length&&I.sign(...b[K])}),Ee(u),(O=this.owner)!=null&&O.isKeyPair){if(P){let I=0,K=[];for(let C of u){if(++I,I<=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 I=>await this.connection.sendRawTransaction(I.serialize(),{skipPreflight:S}))),signedTxs:u}}if(this.signAllTransactions){let I=await this.signAllTransactions(u.slice(k,u.length)),K=[...u.slice(0,k),...I];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 $=M.findIndex(ge=>ge.txId===L);if($>-1){if(M[$].status==="error"||M[$].status==="success")return;M[$].status=X.err?"error":"success"}A==null||A([...M]),X.err||R()};this.loopMultiTxStatus&&(_=setInterval(async()=>{var X;if(Y){clearInterval(_);return}try{let $=await this.connection.getTransaction(L,{commitment:"confirmed",maxSupportedTransactionVersion:0});$&&(Y=!0,clearInterval(_),V({err:((X=$.meta)==null?void 0:X.err)||null}),console.log("tx status from getTransaction:",L))}catch($){Y=!0,clearInterval(_),console.error("getTransaction timeout:",$,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=v(v({},this.cluster==="devnet"?await gn(this.connection):await bn(this.connection)),r),l=Array.from(new Set([...this.lookupTableAddress,...s])),d=[];for(let I of l)b[I]===void 0&&d.push(new Qe(I));let m=await yn({connection:this.connection,address:d});for(let[I,K]of Object.entries(m))b[I]=K;let y=t?Lt(t):{instructions:[],instructionTypes:[]},w=await He(this.connection,this.blockhashCommitment),P=this.signers.reduce((I,K)=>q(v({},I),{[K.publicKey.toBase58()]:K}),{}),A=[],k=[],x=[],S=0;if(this.allInstructions.forEach(I=>{let K=[...x,I],C=t?[...y.instructions,...K]:K;if(I!==o[S]&&x.length<c&&(ct({instructions:C,payer:this.feePayer,lookupTableAddressAccount:b})||ct({instructions:K,payer:this.feePayer,lookupTableAddressAccount:b})))x.push(I);else{if(x.length===0)throw Error("item ins too big");S+=I===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=[I]}}),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(I=>{I.some(K=>K.publicKey.equals(this.owner.publicKey))||I.push(this.owner.signer)}),A.forEach((I,K)=>{I.sign(k[K])}),{builder:this,transactions:A,buildProps:e,signers:k,instructionTypes:this.instructionTypes,execute:async I=>{var Y;let{sequentially:K,onTxUpdate:C,skipTxCount:M=0,recentBlockHash:R,skipPreflight:L=!0}=I||{};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=[],$=async()=>{if(!E[V])return;if(V<M){X.push({txId:"",status:"success",signedTx:E[V]}),C==null||C([...X]),V++,$();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,Zn=Ve=>{Ge!==null&&clearInterval(Ge),ht!==null&&this.connection.removeSignatureListener(ht);let Se=X.findIndex(Ti=>Ti.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||$()};this.loopMultiTxStatus&&(Ge=setInterval(async()=>{var Ve;if(Le){clearInterval(Ge);return}try{let Se=await this.connection.getTransaction(ge,{commitment:"confirmed",maxSupportedTransactionVersion:0});Se&&(Le=!0,clearInterval(Ge),Zn({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,Zn(Ve)},"confirmed"),this.connection.getSignatureStatus(ge)};return $(),{txIds:[],signedTxs:E}}else{let V=[];for(let X=0;X<E.length;X+=1){let $=await this.connection.sendTransaction(E[X],{skipPreflight:L});V.push($)}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 Tr,SystemProgram as hr}from"@solana/web3.js";import Ir from"bn.js";import{createCloseAccountInstruction as Br,createInitializeAccountInstruction as xr,createTransferInstruction as vm,TOKEN_PROGRAM_ID as ft}from"@solana/spl-token";import{Keypair as Pr,PublicKey as Ar}from"@solana/web3.js";import km from"bn.js";import{TOKEN_PROGRAM_ID as wr}from"@solana/spl-token";function er(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function kn(i,...e){if(!er(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 yo(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 fl=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function tr(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=tr(i)),kn(i),i}var Ft=class{clone(){return this._cloneInto()}},yl={}.toString;function bo(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 nr(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 go=(i,e,t)=>i&e^~i&t,Po=(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),yo(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 m=c;m<r;m++)t[m]=0;nr(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,d=this.get();if(l>d.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<l;m++)u.setUint32(4*m,d[m],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 or=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),In=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 m=0;m<16;m++,t+=4)Me[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let y=Me[m-15],w=Me[m-2],P=we(y,7)^we(y,18)^y>>>3,A=we(w,17)^we(w,19)^w>>>10;Me[m]=A+Me[m-7]+P+Me[m-16]|0}let{A:o,B:r,C:s,D:c,E:u,F:b,G:l,H:d}=this;for(let m=0;m<64;m++){let y=we(u,6)^we(u,11)^we(u,25),w=d+y+go(u,b,l)+or[m]+Me[m]|0,A=(we(o,2)^we(o,13)^we(o,22))+Po(o,r,s)|0;d=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,d=d+this.H|0,this.set(o,r,s,c,u,b,l,d)}roundClean(){Me.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Ao=bo(()=>new In);import{PublicKey as yr}from"@solana/web3.js";import Io,{isBN as Bo}from"bn.js";import{bits as ir,BitStructure as Il,blob as rr,Blob as Bl,cstr as xl,f32 as Sl,f32be as Kl,f64 as Cl,f64be as Rl,greedy as Ll,Layout as ar,ns64 as Ol,ns64be as Nl,nu64 as Ml,nu64be as Fl,offset as sr,s16 as vl,s16be as _l,s24 as Vl,s24be as El,s32 as ur,s32be as Dl,s40 as Wl,s40be as ql,s48 as Ul,s48be as Gl,s8 as zl,seq as cr,struct as Xl,Structure as lr,u16 as mr,u16be as Yl,u24 as Hl,u24be as Ql,u32 as dr,u32be as Zl,u40 as jl,u40be as $l,u48 as Jl,u48be as em,u8 as pr,UInt as fr,union as tm,Union as nm,unionLayoutDiscriminator as om,utf8 as im}from"@solana/buffer-layout";var Vt=ar,wo=lr;var Bn=fr;var ko=pr,te=mr;var Et=dr;var ke=ur;var To=cr;var G=rr;var xn=ir,ho=sr;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 v(v({},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 Bn(1,i)}function ee(i){return new Bn(4,i)}function n(i){return new We(8,!1,i)}function W(i){return new We(16,!1,i)}function xo(i){return new We(1,!0,i)}function Ze(i){return new We(8,!0,i)}function So(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 yr(e),e=>e.toBuffer(),i)}function ye(i){return new pt(ko(),br,gr,i)}function br(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function gr(i){return i?1:0}function Ko(i,e){let t=Et("length"),o=h([t,B(i,ho(t,-t.span),"values")]);return new pt(o,({values:r})=>r,r=>({values:r}),e)}var Sn=class extends wo{decode(e,t){return super.decode(e,t)}};function h(i,e,t){return new Sn(i,e,t)}function B(i,e,t){let o,r=typeof e=="number"?e:Bo(e)?e.toNumber():new Proxy(e,{get(s,c){if(!o){let u=Reflect.get(s,"count");o=Bo(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 To(i,r,t)}var je=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=wr,assignSeed:t}){let o=t?btoa(t).slice(0,32):Pr.generate().publicKey.toBase58().slice(0,32);return{publicKey:kr(i,o,e),seed:o}}function kr(i,e,t){let o=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),r=Ao(o);return new Ar(r)}function Co(i){let{mint:e,tokenAccount:t,owner:o,programId:r=ft}=i;return xr(t,e,o,r)}function Kn(i){let{tokenAccount:e,payer: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,payer:r,owner:s,skipCloseAccount:c}=i,u=await e.getMinimumBalanceForRentExemption(je.span,o),b=D(t).add(new Ir(u)),l=qe({fromPublicKey:r,programId:ft});return{addresses:{newAccount:l.publicKey},signers:[],instructions:[hr.createAccountWithSeed({fromPubkey:r,basePubkey:r,seed:l.seed,newAccountPubkey:l.publicKey,lamports:b.toNumber(),space:je.span,programId:ft}),Co({mint:new Tr(se.address),tokenAccount:l.publicKey,owner:s,programId:ft})],instructionTypes:[U.CreateAccount,U.InitAccount],endInstructionTypes:c?[]:[U.CloseAccount],endInstructions:c?[]:[Kn({tokenAccount:l.publicKey,payer:r,owner:s})]}}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 Sr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Kr}from"@solana/spl-token";function de(i,e,t){return me([i.toBuffer(),(t!=null?t:Kr).toBuffer(),e.toBuffer()],new Sr("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import dd from"bn.js";import{PublicKey as Rn}from"@solana/web3.js";import{PublicKey as F}from"@solana/web3.js";var Ro=new F("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Lo=new F("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Oo=new F("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),bt=new F("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),hd=new F("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Cr=new F("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),No=new F("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Mo=new F("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Id=new F("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Rr=new F("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Fo=new F("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Lr=new F("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Or=new F("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),vo=new F("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Bd=new F("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Nr=new F("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Cn=new F("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Mr=new F("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),xd=new F("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Fr=new F("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),vr=new F("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),_r=new F("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Sd=new F("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Kd=new F("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Cd=new F("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Rd=new F("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Ld=new F("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Ce={OPEN_BOOK_PROGRAM:new F("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new F("Ray1111111111111111111111111111111111111111"),AMM_V4:new F("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new F("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new F("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new F("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new F("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new F("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new F("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new F("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new F("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new F("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:F.default,Router:new F("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new F("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new F("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new F("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new F("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new F("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new F("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new F("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new F("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new F("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new F("Ray1111111111111111111111111111111111111111")};import{NATIVE_MINT as Dd}from"@solana/spl-token";var Wd=H("Raydium_farm_config"),_o=new Rn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Vo=new Rn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var qd=new Rn("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX"),Wt={3:Eo,5:Do,6:Pt},gt={3:Nn,5:Wo,6:qo},Ln=i=>[3,4,5,6].indexOf(i)!==-1,On=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 Mn=h([T("instruction")]),Fn=h([T("instruction")]),Vr=h([n("rewardState"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardLastUpdateTime"),n("totalReward"),n("totalRewardEmissioned"),n("rewardClaimed"),n("rewardPerSecond"),W("accRewardPerShare"),a("rewardVault"),a("rewardMint"),a("rewardSender"),n("rewardType"),B(n(),15,"padding")]),Er=h([n("state"),n("nonce"),a("lpVault"),a("rewardVault"),a(),a(),n(),n(),n("totalReward"),W("perShareReward"),n("lastSlot"),n("perSlotReward")]),Dr=h([n("state"),n("nonce"),a("lpVault"),a("rewardVaultA"),n("totalRewardA"),W("perShareRewardA"),n("perSlotRewardA"),T("option"),a("rewardVaultB"),G(7),n("totalRewardB"),W("perShareRewardB"),n("perSlotRewardB"),n("lastSlot"),a()]),Wr=h([n(),n("state"),n("nonce"),n("validRewardTokenNum"),W("rewardMultiplier"),n("rewardPeriodMax"),n("rewardPeriodMin"),n("rewardPeriodExtend"),a("lpMint"),a("lpVault"),B(Vr,5,"rewardInfos"),a("creator"),a(),B(n(),32,"padding")]),Eo=new Proxy(Er,{get(i,e,t){return e==="decode"?(...o)=>{let r=i.decode(...o);return q(v({},r),{version:3,rewardInfos:[{rewardVault:r.rewardVault,totalReward:r.totalReward,perSlotReward:r.perSlotReward,perShareReward:r.perShareReward}]})}:Reflect.get(i,e,t)}}),Do=new Proxy(Dr,{get(i,e,t){return e==="decode"?(...o)=>{let r=i.decode(...o);return q(v({},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(Wr,{get(i,e,t){return e==="decode"?(...o)=>{let r=i.decode(...o);return q(v({},r),{version:6,rewardInfos:r.rewardInfos.map(s=>{var c;return q(v({},s),{rewardType:((c=Object.entries(Fe).find(u=>String(u[1])===s.rewardType.toString()))!=null?c:["Standard SPL"])[0]})})})}:Reflect.get(i,e,t)}}),qr=h([n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),vn=h([T("instruction"),n("nonce"),B(qr,5,"rewardTimeInfo")]),_n=h([T("instruction"),n("rewardReopenTime"),n("rewardEndTime"),n("rewardPerSecond")]),Vn=h([T("instruction"),n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),Qd=h([n("state"),a("id"),a("owner"),n("deposited"),B(n(),1,"rewardDebts")]),Nn=h([n("state"),a("id"),a("owner"),n("deposited"),B(W(),1,"rewardDebts"),n(""),n("voteLockedBalance"),B(n(),15)]),Zd=h([n("state"),a("id"),a("owner"),n("deposited"),B(n(),2,"rewardDebts")]),Wo=h([n("state"),a("id"),a("owner"),n("deposited"),B(W(),2,"rewardDebts"),B(n(),17)]),qo=h([n(),n("state"),a("id"),a("owner"),n("deposited"),B(W(),5,"rewardDebts"),B(n(),16)]),fe=h([T("instruction"),n("amount")]),Ur=h([a("mint"),a("grantAuthority"),n("baselineVoteWeightScaledFactor"),n("maxExtraLockupVoteWeightScaledFactor"),n("lockupSaturationSecs"),xo("digitShift"),B(T(),7,"reserved1"),B(n(),7,"reserved2")]),Gr=h([G(8),a("governanceProgramId"),a("realm"),a("realmGoverningTokenMint"),a("realmAuthority"),B(T(),32,"reserved1"),B(Ur,4,"votingMints"),Ze("timeOffset"),T("bump"),B(T(),7,"reserved2"),B(n(),11,"reserved3")]),zr=h([Ze("startTime"),Ze("endTime"),T("kind"),B(T(),15,"reserved")]),Xr=h([B(zr,1,"lockup"),n("amountDeposited_native"),n("amountInitiallyLockedNative"),ye("isUsed"),ye("allowClawback"),T("votingMintConfigIdx"),B(T(),29,"reserved")]),Yr=h([G(8),a("voterAuthority"),a("registrar"),B(Xr,32,"deposits"),T("voterBump"),T("voterWweightRecordBump"),B(T(),94,"reserved")]);import jr from"bn.js";import{PublicKey as Hr}from"@solana/web3.js";import Qr from"bn.js";function Zr(i){return typeof i=="object"&&i!==null&&![ae,pe,Hr,j,Qr,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)):Zr(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 Ie({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 jr(1),rewardPerSecond:D(i.perSecond),rewardOpenTime:D(i.openTime),rewardEndTime:D(i.endTime),rewardType:D(Fe[i.rewardType])}}function En(i){return D(i.endTime).sub(D(i.openTime)).mul(D(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 Np,createAssociatedTokenAccountIdempotentInstruction as Mp,TOKEN_PROGRAM_ID as Re}from"@solana/spl-token";var ea=H("Raydium_farm_instruction"),zp={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||ea.logWithError(`invalid farm pool version: ${e}`);let u=Buffer.alloc(Mn.span);Mn.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(vn.span);vn.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(Fn.span);Fn.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 Dn({payer:i,rewardVault:e,userRewardTokenPub:t,farmKeys:o,rewardInfo:r}){let s=Buffer.alloc(_n.span);_n.encode({instruction:3,rewardReopenTime:D(r.openTime),rewardEndTime:D(r.endTime),rewardPerSecond:D(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 Wn({payer:i,userRewardTokenPub:e,farmKeys:t,rewardVault:o,rewardInfo:r}){let s=Buffer.alloc(Vn.span);Vn.encode({instruction:4,isSet:new Xo(1),rewardPerSecond:D(r.perSecond),rewardOpenTime:D(r.openTime),rewardEndTime:D(r.endTime),rewardType:D(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=Ie({programId:u,poolId:b,owner:s,version:6}),d=Buffer.alloc(fe.span);fe.encode({instruction:2,amount:D(c)},d);let m=[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++)m.push(g({pubkey:new z(t.rewardInfos[y].vault)})),m.push(g({pubkey:r[y]}));return new be({programId:u,keys:m,data:d})}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)],d=Ie({programId:b,poolId:l,owner:s,version:5}),m=Buffer.alloc(fe.span);fe.encode({instruction:12,amount:D(c)},m);let y=[g({pubkey:l}),g({pubkey:new z(t.authority),isWritable:!1}),g({pubkey:d}),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:m})}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)],d=h([T("instruction"),n("amount")]),m=[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(d.span);return d.encode({instruction:2,amount:c},y),new be({keys:m,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)],d=Ie({programId:b,poolId:l,owner:s,version:3}),m=Buffer.alloc(fe.span);fe.encode({instruction:11,amount:D(c)},m);let y=[g({pubkey:l}),g({pubkey:new z(t.authority),isWritable:!1}),g({pubkey:d}),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:m})}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)],d=Ie({programId:b,poolId:l,owner:s,version:3}),m=Buffer.alloc(fe.span);fe.encode({instruction:10,amount:D(c)},m);let y=[g({pubkey:l}),g({pubkey:new z(t.authority),isWritable:!1}),g({pubkey:d}),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:m})}function jo(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)],d=Ie({programId:b,poolId:l,owner:s,version:5}),m=Buffer.alloc(fe.span);fe.encode({instruction:11,amount:D(c)},m);let y=[g({pubkey:l}),g({pubkey:new z(t.authority),isWritable:!1}),g({pubkey:d}),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:m})}function $o(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=Ie({programId:u,poolId:b,owner:s,version:6}),d=Buffer.alloc(fe.span);fe.encode({instruction:1,amount:D(c)},d);let m=[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++)m.push(g({pubkey:new z(t.rewardInfos[y].vault)})),m.push(g({pubkey:r[y]}));return new be({programId:u,keys:m,data:d})}import{ASSOCIATED_TOKEN_PROGRAM_ID as uP,TOKEN_2022_PROGRAM_ID as cP,TOKEN_PROGRAM_ID as lP}from"@solana/spl-token";import{Keypair as pP,PublicKey as fP,SystemProgram as bP,TransactionInstruction as gP}from"@solana/web3.js";import AP from"bn.js";import Q from"bn.js";var Je=new Q(1).shln(64);var ta=new Q(1).shln(128),qn=new Q(1).shln(64).subn(1),na=new Q(1).shln(128).subn(1);var et=new Q("4295048016"),tt=new Q("79226673521066979257578248091"),oa=new Q("59543866431248"),ia=new Q("184467440737095516"),ra=new Q("15793534762490258745");var Un=60,tf=new Q("18446743708227953217"),aa=[{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),nf=new Q(-1);var of=new Q("18446744073700000000");var sa=h([G(8),T("bump"),te("index"),a("owner"),ee("protocolFeeRate"),ee("tradeFeeRate"),te("tickSpacing"),ee("fundFeeRate"),B(ee(),1),a("fundOwner"),B(n(),3)]),ua=h([ee("blockTimestamp"),Ze("tickCumulative"),B(n(),4)]),ni=h([G(8),ye("initialized"),n("recentEpoch"),te("observationIndex"),a("poolId"),B(ua,Jo,"observations"),B(n(),4)]),ca=h([te("filterPeriod"),te("decayPeriod"),te("reductionFactor"),ee("dynamicFeeControl"),ee("maxVolatilityAccumulator"),ke("tickSpacingIndexReference"),ee("volatilityReference"),ee("volatilityAccumulator"),n("lastUpdateTimestamp"),B(T(),46)]),la=h([T("state"),n("openTime"),n("endTime"),n("lastUpdateTime"),W("emissionsPerSecondX64"),n("totalEmissioned"),n("claimed"),a("mint"),a("vault"),a("creator"),W("growthGlobalX64")]),Gn=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"),W("liquidity"),W("sqrtPriceX64"),ke("tickCurrent"),ee(),W("feeGrowthGlobalX64A"),W("feeGrowthGlobalX64B"),n("protocolFeesTokenA"),n("protocolFeesTokenB"),B(W(),4),T("status"),T("feeOn"),G(6),B(la,kt,"rewardInfos"),G(8*16,"tickArrayBitmap"),B(n(),4),n("fundFeesTokenA"),n("fundFeesTokenB"),n("startTime"),n("recentEpoch"),ca.replicate("dynamicFeeInfo"),B(n(),46)]),ma=h([W("growthInsideLastX64"),n("rewardAmountOwed")]),da=h([G(8),T("bump"),a("nftMint"),a("poolId"),ke("tickLower"),ke("tickUpper"),W("liquidity"),W("feeGrowthInsideLastX64A"),W("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),B(ma,kt,"rewardInfos"),n("recentEpoch"),B(n(),7)]),uf=h([G(8),T("bump"),a("poolId"),ke("tickLower"),ke("tickUpper"),W("liquidity"),W("feeGrowthInsideLastX64A"),W("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),B(W(),kt,"rewardGrowthInside"),n("recentEpoch"),B(n(),7)]),pa=h([ke("tick"),So("liquidityNet"),W("liquidityGross"),W("feeGrowthOutsideX64A"),W("feeGrowthOutsideX64B"),B(W(),kt,"rewardGrowthsOutsideX64"),n("orderPhase"),n("ordersAmount"),n("partFilledOrdersRemaining"),W("unfilledRatioX64"),B(ee(),3)]),oi=h([G(8),a("poolId"),ke("startTickIndex"),B(pa,Un,"ticks"),T("initializedTickCount"),n("recentEpoch"),B(T(),107)]),fa=h([G(8),T("bump"),B(a(),ei,"operationOwners"),B(a(),ti,"whitelistMints")]),ya=h([G(8),a("poolId"),a("owner"),ke("tick"),ye("zeroForOne"),n("orderPhase"),n("totalAmount"),n("filledAmount"),n("settleBase"),n("settleOutput"),n("openTime"),W("unfilledRatioX64"),B(n(),4)]),ii=h([G(8),a("poolId"),G(8*8*Yt,"positiveTickArrayBitmap"),G(8*8*Yt,"negativeTickArrayBitmap")]),cf=h([G(8),te("index"),te("filterPeriod"),te("decayPeriod"),te("reductionFactor"),ee("dynamicFeeControl"),ee("maxVolatilityAccumulator"),B(n(),8)]),ba=h([G(8),a("wallet"),T("nonceIndex"),n("orderNonce"),B(n(),4)]),lf=h([n(),T("bump"),a("owner"),a("poolId"),a("positionId"),a("nftAccount"),B(n(),8)]),ga=h([G(8),T("bump"),a("lockOwner"),a("poolId"),a("positionId"),a("nftAccount"),a("lockNftMint"),n("recentEpoch"),B(n(),8)]);import{createAssociatedTokenAccountIdempotentInstruction as Xb,TOKEN_2022_PROGRAM_ID as Yb,TOKEN_PROGRAM_ID as Hb}from"@solana/spl-token";import{PublicKey as Zb}from"@solana/web3.js";import $b from"bn.js";import eg from"decimal.js";import{TOKEN_PROGRAM_ID as bf}from"@solana/spl-token";import{PublicKey as wf}from"@solana/web3.js";var Pa=h([ee("mintAuthorityOption"),a("mintAuthority"),n("supply"),T("decimals"),T("isInitialized"),ee("freezeAuthorityOption"),a("freezeAuthority")]);import Aa from"bn.js";import Nf from"decimal.js";var Ff=new Aa(1).shln(256).subn(1);import Jf from"bn.js";import qf from"bn.js";import Gf from"decimal.js";import iy from"bn.js";import ay from"decimal.js";import{PublicKey as Xy}from"@solana/web3.js";import Hy from"bn.js";import{TOKEN_2022_PROGRAM_ID as nb,TOKEN_PROGRAM_ID as ob}from"@solana/spl-token";import sb from"decimal.js";import Fy from"bn.js";import Ty from"bn.js";import Pb from"bn.js";import hb from"bn.js";var Dg=Buffer.from("amm_config","utf8"),_a=Buffer.from("pool","utf8"),Va=Buffer.from("pool_vault","utf8"),Wg=Buffer.from("pool_reward_vault","utf8"),qg=Buffer.from("position","utf8"),Ug=Buffer.from("tick_array","utf8"),Gg=Buffer.from("operation","utf8"),zg=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Xg=Buffer.from("observation","utf8"),Yg=Buffer.from("support_mint","utf8"),Hg=Buffer.from("dynamic_fee_config","utf8"),Qg=Buffer.from("permission","utf8");var Zg=Buffer.from("locked_position","utf8");import{sha256 as Ea}from"js-sha256";function re(i){let e=`global:${i}`;return Buffer.from(Ea.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 Da=new mi(25),Wa=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 qa=h([T("instruction"),n("amountIn"),n("minAmountOut")]),Ua=h([T("instruction"),n("maxAmountIn"),n("amountOut")]),EP=h([T("instruction"),T("nonce")]),Ga=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"),W("swapBaseInAmount"),W("swapQuoteOutAmount"),n("swapBase2QuoteFee"),W("swapQuoteInAmount"),W("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"),B(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"),W("swapBaseInAmount"),W("swapQuoteOutAmount"),W("swapQuoteInAmount"),W("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"),B(n(),64,"padding")]),za=h([T("instruction"),n("baseAmountIn"),n("quoteAmountIn"),n("fixedSide"),n("otherAmountMin")]),Xa=h([T("instruction"),n("lpAmount"),n("baseAmountMin"),n("quoteAmountMin")]);var Ya=h([n("fee")]);var aA=H("Raydium_liquidity_instruction");var Ha=5e4,Qa=h([n("x"),n("y"),n("price")]),lA=h([n("accountType"),n("status"),n("multiplier"),n("validDataCount"),B(Qa,Ha,"DataElement")]);import{PublicKey as TA}from"@solana/web3.js";import IA 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 Za(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 ja=h([G(5),Za("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 xT}from"@solana/web3.js";import{AccountLayout as KT,NATIVE_MINT as CT,TOKEN_2022_PROGRAM_ID as RT,TOKEN_PROGRAM_ID as LT,createAssociatedTokenAccountIdempotentInstruction as OT}from"@solana/spl-token";import Bk from"bn.js";import is from"bn.js";var mk=new is(0);import gk from"bn.js";import rs from"bn.js";var Zt=new rs(1e6);import DT from"bn.js";import qT from"decimal.js";import{PublicKey as Uk,TransactionInstruction as Gk,Keypair as Xk,SystemProgram as Yk}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Qk,TOKEN_2022_PROGRAM_ID as Zk,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");var Vk=Buffer.from("locked_liquidity","utf8");var iT=H("Raydium_cpmm"),rT={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 us=h([G(8),T("bump"),ye("disableCreatePool"),te("index"),n("tradeFeeRate"),n("protocolFeeRate"),n("fundFeeRate"),n("createPoolFee"),a("protocolOwner"),a("fundOwner"),n("creatorFeeRate"),B(n(),15)]),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"),B(T(),6),n("creatorFeesMintA"),n("creatorFeesMintB"),B(n(),28)]),uT=h([G(8),a("configId"),B(n(),30)]);import{PublicKey as NS,SystemProgram as MS}from"@solana/web3.js";import{createTransferInstruction as vS,TOKEN_PROGRAM_ID as _S,TOKEN_2022_PROGRAM_ID as VS,createAssociatedTokenAccountIdempotentInstruction as ES,createSyncNativeInstruction as WS,createTransferCheckedInstruction as qS}from"@solana/spl-token";import Bs from"bn.js";import zS from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as $h,TOKEN_2022_PROGRAM_ID as Jh,TOKEN_PROGRAM_ID as eI}from"@solana/spl-token";import{SystemProgram as iI,TransactionInstruction as rI}from"@solana/web3.js";import ys from"bn.js";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"),B(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"),B(T(),54)]),Nh=h([n(),n("epoch"),a("poolId"),a("beneficiary"),n("claimedAmount"),n("tokenShareAmount"),B(n(),8)]),yi=h([T("migrateType"),T("migrateCpmmFeeOn"),n("supply"),n("totalSellA"),n("totalFundRaisingB"),n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod")]),fs=h([n("epoch"),T("index"),a("configId"),yi.replicate("bondingCurveParam"),B(n(),50)]),bi=h([n(),n("epoch"),a("platformClaimFeeWallet"),a("platformLockNftWallet"),n("platformScale"),n("creatorScale"),n("burnScale"),n("feeRate"),B(T(),64,"name"),B(T(),256,"web"),B(T(),256,"img"),a("cpConfigId"),n("creatorFeeRate"),a("transferFeeExtensionAuth"),a("platformVestingWallet"),n("platformVestingScale"),a("platformCpCreator"),T("restrictGlobalConfig"),B(T(),107),Ko(fs,"platformCurve")]);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");var cI={initialize:Buffer.from([175,175,109,31,13,152,155,237]),initializeV2:Buffer.from([67,153,175,39,218,16,38,32]),buyExactIn:Buffer.from([250,234,13,123,213,156,19,236]),buyExactOut:Buffer.from([24,211,116,40,105,3,153,56]),sellExactIn:Buffer.from([149,39,222,155,211,124,152,26]),sellExactOut:Buffer.from([95,200,71,34,8,9,11,166]),createVestingAccount:Buffer.from([129,178,2,13,217,172,230,218]),claimVestedToken:Buffer.from([49,33,104,30,189,157,79,35]),createPlatformConfig:Buffer.from([176,90,196,175,253,113,220,20]),claimPlatformFee:Buffer.from([156,39,208,135,76,237,61,72]),updatePlaformConfig:Buffer.from([195,60,76,129,146,45,67,143]),initializeWithToken2022:Buffer.from([37,190,126,222,44,154,171,17]),claimPlatformFeeFromVault:Buffer.from([117,241,198,168,248,218,80,29]),claimCreatorFee:Buffer.from([26,97,138,203,132,171,141,252]),updatePlatformCurveParam:Buffer.from([138,144,138,250,220,128,4,57]),removePlatformCurveParam:Buffer.from([27,30,62,169,93,224,24,145]),createPlatformVestingAccount:Buffer.from([146,71,173,69,98,19,15,106]),createPlatformAllowConfig:Buffer.from([69,71,168,7,214,250,107,102]),closePlatformAllowConfig:Buffer.from([82,205,36,216,16,6,240,215])};var lI=new ys("18446744073709551615");import{TOKEN_2022_PROGRAM_ID as fI,TOKEN_PROGRAM_ID as yI}from"@solana/spl-token";import AI from"bn.js";import kI from"decimal.js";import JI from"bn.js";import tB from"decimal.js";import SI from"bn.js";import CI from"decimal.js";import EI from"bn.js";import WI from"decimal.js";import Ai from"bn.js";import Hn from"decimal.js";var $t=class{static _multipler(e){return new Hn(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:o}){return new Hn(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 Ai(r.mul(this._Q64).toFixed(0))}};$t._Q64=new Hn(new Ai(1).shln(64).toString());import{NATIVE_MINT as cx,TOKEN_2022_PROGRAM_ID as lx,TOKEN_PROGRAM_ID as mx,createAssociatedTokenAccountIdempotentInstruction as px,createSyncNativeInstruction as fx,getTransferFeeConfig as yx,unpackMint as bx}from"@solana/spl-token";import oe from"bn.js";import{PublicKey as Ts,SystemProgram as Ax}from"@solana/web3.js";import xx from"decimal.js";var Sx={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 Ts("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new oe(0),cliffPeriod:new oe(0),unlockPeriod:new oe(0),startTime:new oe(0),totalAllocatedShare:new oe(0)}},Kx=new oe(1e4);var hs={[No.toBase58()]:3};var Is=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 jx}from"@solana/web3.js";var nS=H("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as mS,TOKEN_2022_PROGRAM_ID as dS,TOKEN_PROGRAM_ID as pS}from"@solana/spl-token";import{PublicKey as yS,SystemProgram as bS,TransactionInstruction as gS}from"@solana/web3.js";import AS from"bn.js";var kK=new Bs(0);import{PublicKey as xs,Transaction as Qn,TransactionInstruction as Ss}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ks}from"@solana/spl-token";import wi 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 wi(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(d=>ue.getPdaPoolId(t,d).publicKey),u=[];for(let d=0;d<ue.VERSION_PROJECT.length;d++)u.push(...c.map(m=>ue.getPdaOwnerId(t,m,r,d).publicKey));let b=await Pe(e,[...c,...u]),l=[];for(let d=0;d<b.length;d++){let m=Math.floor(d/o.length),y=d%o.length,w=c[y],P=u[d],A=b[y],k=b[o.length+d];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(),I=S.tokenInfo.map(M=>M.debtAmount.gt(new wi(0))).filter(M=>!M).length!==3,K=s>N&&s<O&&x.status===1,C=I&&K;l.push({programId:t,poolId:w,ammId:x.ammId,ownerAccountId:P,snapshotLpAmount:S.lpAmount,project:ue.VERSION_PROJECT[m],openTime:N,endTime:O,canClaim:C,canClaimErrorType:I?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:d,instructionParams:m}=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});m&&r.addInstruction(m),c.push(d)}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 d of e){let m=[];for(let y of d.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,m.push(w))}r.addInstruction({instructions:[ue.makeClaimInstruction({programId:d.programId,poolInfo:d,ownerInfo:{wallet:s,ownerPda:d.ownerAccountId,claimAddress:m}})]})}let{transaction:u,signers:b}=r.build(),l=r.allInstructions;return Pn(l,[s,...b.map(d=>d.publicKey)])?[{transaction:u,signer:b}]:[{transaction:new Qn().add(...l.slice(0,r.AllTxData.instructions.length-1)),signer:b},{transaction:new Qn().add(...l.slice(r.AllTxData.instructions.length-1)),signer:[]},{transaction:new Qn().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:Ks,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 Ss({keys:s,programId:e,data:u})}},Be=ue;Be.CLAIMED_NUM=3,Be.POOL_LAYOUT=h([G(8),T("bump"),T("status"),n("openTime"),n("endTime"),a("ammId"),B(h([T("mintDecimals"),a("mintAddress"),a("mintVault"),n("perLpLoss"),n("totalClaimedAmount")]),ue.CLAIMED_NUM,"tokenInfo"),B(n(),10,"padding")]),Be.OWNER_LAYOUT=h([G(8),T("bump"),T("version"),a("poolId"),a("owner"),n("lpAmount"),B(h([a("mintAddress"),n("debtAmount"),n("claimedAmount")]),ue.CLAIMED_NUM,"tokenInfo"),B(n(),4,"padding")]),Be.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new xs(e)),Be.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},Be.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as VK}from"@solana/web3.js";import{getTransferFeeConfig as DK,MintLayout as WK,TOKEN_2022_PROGRAM_ID as qK,TOKEN_PROGRAM_ID as UK,unpackMint as GK}from"@solana/spl-token";var gR=new Ue(2),PR=new Ue(3),AR=new Ue(5),rn=new Ue(10),wR=new Ue(100),kR=new Ue(1e3),TR=new Ue(1e4);function pn(i){return rn.pow(D(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:En(q(v({},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},d=this.createTxBuilder(c),m=o!=null?o:this.scope.ownerPubKey,y=qe({fromPublicKey:m,programId:l.programId}),w=await this.scope.connection.getMinimumBalanceForRentExemption(Pt.span);d.addInstruction({instructions:[Cs.createAccountWithSeed({fromPubkey:m,basePubkey:m,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:m});Y&&d.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&&d.addInstruction(O),N||this.logAndCreateError("cannot found lock vault","tokenAccounts",this.scope.account.tokenAccounts);let{instruction:I,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 d.addInstruction({instructions:[I],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,d=o.mint.equals(ie)?new Z(se.address):o.mint,m=b.rewardInfos.findIndex(S=>new Z(S.mint.address).equals(d)),y=u.rewardInfos[m];y||this.logAndCreateError("configuration does not exist","rewardMint",d);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:[Dn({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 m;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,d=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=(m=A.vault)!=null?m:ie,{rewardPubKey:x,newInstruction:S}=await this._getUserRewardInfo({rewardInfo:y,payer:l});S&&d.addInstruction(S),x||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let N=Dn({payer:this.scope.ownerPubKey,rewardVault:k,userRewardTokenPub:x,farmKeys:b,rewardInfo:y});d.addInstruction({instructions:[N],instructionTypes:[U.FarmV6Restart]})}return d.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,d=this.createTxBuilder(c),m=r.mint.equals(ie)?new Z(se.address):r.mint,y=At({programId:new Z(o.programId),poolId:new Z(o.id),mint:m,type:"rewardVault"}),{rewardPubKey:w,newInstruction:P}=await this._getUserRewardInfo({rewardInfo:r,payer:l});return P&&d.addInstruction(P),w||this.logAndCreateError("annot found target token accounts",this.scope.account.tokenAccounts),r.mint=m,d.addInstruction({instructions:[Wn({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,d=this.createTxBuilder(c);for(let m of r){let y=m.mint.equals(ie)?new Z(se.address):m.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:m,payer:l});A&&d.addInstruction(A),P||this.logAndCreateError("cannot found target token accounts",this.scope.account.tokenAccounts);let k=Wn({payer:this.scope.ownerPubKey,userRewardTokenPub:P,farmKeys:b,rewardVault:w,rewardInfo:q(v({},m),{mint:y})});d.addInstruction({instructions:[k],instructionTypes:[U.FarmV6CreatorAddReward]})}return d.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:d,txTipConfig:m}=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),Ln(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=Ie({programId:A,poolId:k,owner:this.scope.ownerPubKey,version:P}),N=this.createTxBuilder(s);N.addCustomComputeBudget(d),N.addTipInstruction(m);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 I=x.lpMint,K=O[I.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(),$=O[V.mint.address];if(!$){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});$=ge,Le&&N.addInstruction(Le)}O[V.mint.address]=$,C.push($)}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=On({version:P,rewardInfos:y,rewardTokenAccountsPublicKeys:C});L&&this.logAndCreateError(L);let Y={amount:D(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?$o(Y):P===5?jo(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:d,computeBudgetConfig:m,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];Ln(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(m),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=Ie({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()&&!(d||[]).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 I=[];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]=_,I.push(_)}let K=On({version:P,rewardInfos:w,rewardTokenAccountsPublicKeys:I});K&&this.logAndCreateError(K);let C={amount:D(r),owner:this.scope.ownerPubKey,farmInfo:o,farmKeys:A,lpAccount:O,rewardAccounts:I,userAuxiliaryLedgers:d==null?void 0:d.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 d=(A=l==null?void 0:l.vault)!=null?A:ie,m=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:En(q(v({},l),{openTime:l.openTime,endTime:l.endTime,perSecond:new ve(l.perSecond).mul(10**l.mint.decimals).toString()}))});y=k.addresses.newAccount,m.addInstruction(k)}else{let k=await this.scope.account.getCreatedTokenAccount({mint:t});k?y=k:(y=await this.scope.account.getAssociatedTokenAccount(t),m.addInstruction({instructions:[ki(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:d,userRewardToken:y,owner:this.scope.ownerPubKey});return m.addCustomComputeBudget(r),m.addTipInstruction(s),m.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,d=this.createTxBuilder(r),m={};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)&&(m[P.mint.toString()]=P.publicKey)}else m[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(v({},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,I=o&&O===le.toString(),K=m[O];if(!K){let{account:_,instructionParams:E}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:k.programId,mint:new Z(O),notUseTokenAccount:I,createInfo:{payer:r||this.scope.ownerPubKey,amount:0},owner:this.scope.ownerPubKey,skipCloseAccount:!0,associatedOnly:I?!1:s,checkCreateATAOwner:c});K=_,E&&d.addInstruction(E)}m[O.toString()]=K;let C=[];for(let _ of x){let E=o&&_.mint.address===le.toString(),V=m[_.mint.address];if(!V)if(E){let{account:X,instructionParams:$}=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,$&&d.addInstruction($)}else{let X=new Z(_.mint.address);V=this.scope.account.getAssociatedTokenAccount(X),d.addInstruction({instructions:[ki(this.scope.ownerPubKey,V,this.scope.ownerPubKey,X)]})}m[_.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};d.addInstruction({instructions:[L],instructionTypes:[Y[N]]})}return b===1?d.sizeCheckBuild({computeBudgetConfig:l}):d.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 d,m;Object.keys(e[l]).forEach(y=>{Object.keys(e[l][y]).forEach(w=>{var x,S,N,O,I,K;let P=q(v({},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((I=k==null?void 0:k.totalV1LpAmount)!=null?I: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(v({},t.get(l)),{totalLpAmount:new ve((m=(d=t.get(l))==null?void 0:d.totalLpAmount)!=null?m: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,d)=>{var x;if(!l||!c[d])return;let m=Te[r[d].programId];if(!Wt[m]||!gt[m])return;let y=gt[m].decode(c[d].data),w=Wt[m].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[d],k=w?w.rewardInfos.map((S,N)=>{var K;let O=y.rewardDebts[N],I=y.deposited.mul((w==null?void 0:w.version)===6?S.accRewardPerShare:S.perShareReward).div(P).sub(O);return I.lt(new _e(0))&&(I=new _e(0)),{mint:(K=A.rewardInfos[N])==null?void 0:K.mint,amount:I.toString()}}):[];return q(v(v({},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