UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

2 lines 87.4 kB
var yi=Object.create;var ot=Object.defineProperty,bi=Object.defineProperties,gi=Object.getOwnPropertyDescriptor,Pi=Object.getOwnPropertyDescriptors,Ai=Object.getOwnPropertyNames,St=Object.getOwnPropertySymbols,wi=Object.getPrototypeOf,un=Object.prototype.hasOwnProperty,Qn=Object.prototype.propertyIsEnumerable;var Yn=(r,e,t)=>e in r?ot(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,F=(r,e)=>{for(var t in e||(e={}))un.call(e,t)&&Yn(r,t,e[t]);if(St)for(var t of St(e))Qn.call(e,t)&&Yn(r,t,e[t]);return r},D=(r,e)=>bi(r,Pi(e));var be=(r,e)=>{var t={};for(var o in r)un.call(r,o)&&e.indexOf(o)<0&&(t[o]=r[o]);if(r!=null&&St)for(var o of St(r))e.indexOf(o)<0&&Qn.call(r,o)&&(t[o]=r[o]);return t};var ki=(r,e)=>{for(var t in e)ot(r,t,{get:e[t],enumerable:!0})},Zn=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Ai(e))!un.call(r,i)&&i!==t&&ot(r,i,{get:()=>e[i],enumerable:!(o=gi(e,i))||o.enumerable});return r};var P=(r,e,t)=>(t=r!=null?yi(wi(r)):{},Zn(e||!r||!r.__esModule?ot(t,"default",{value:r,enumerable:!0}):t,r)),Ti=r=>Zn(ot({},"__esModule",{value:!0}),r);var Ws={};ki(Ws,{Curve:()=>Ve});module.exports=Ti(Ws);var ce=P(require("bn.js")),zn=P(require("decimal.js"));var jn=require("@solana/web3.js");var it=require("lodash");var cn=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}},Hn={},hi={};function W(r){let e=(0,it.get)(Hn,r);if(!e){let t=(0,it.get)(hi,r);e=new cn({name:r,logLevel:t}),(0,it.set)(Hn,r,e)}return e}var Kt=require("@solana/spl-token"),ln=W("Raydium_accountInfo_util");async function he(r,e,t){let{batchRequest:o,commitment:i="confirmed",chunkCount:s=100}=F({batchRequest:!1},t),c=mn(e,s),l=new Array(c.length).fill([]);if(o){let f=c.map(A=>{let T=r._buildArgs([A.map(h=>h.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:T}}),y=mn(f,10);l=(await(await Promise.all(y.map(async A=>await r._rpcBatchRequest(A)))).flat()).map(A=>(A.error&&ln.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${A.error.message}`),A.result.value.map(T=>{if(T){let{data:h,executable:S,lamports:w,owner:B,rentEpoch:I}=T;return h.length!==2&&h[1]!=="base64"&&ln.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(h[0],"base64"),executable:S,lamports:w,owner:new jn.PublicKey(B),rentEpoch:I}}return null})))}else try{l=await Promise.all(c.map(f=>r.getMultipleAccountsInfo(f,i)))}catch(f){f instanceof Error&&ln.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${f.message}`)}return l.flat()}var Be=P(require("bn.js")),Ds=P(require("decimal.js"));var no=P(require("big.js")),xi=P(require("bn.js"));var $n=P(require("toformat")),Ii=$n.default,at=Ii;var st=P(require("big.js")),eo=P(require("bn.js")),to=P(require("decimal.js-light"));var Ee=P(require("bn.js"));var Jn=9007199254740991;function se(r){let e=W("Raydium_parseBigNumberish");if(r instanceof Ee.default)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Ee.default(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Jn||r<=-Jn)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Ee.default(String(r))):typeof r=="bigint"?new Ee.default(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Ee.default(0))}var xt=W("module/fraction"),dn=at(st.default),ut=at(to.default),Si={[0]:ut.ROUND_DOWN,[1]:ut.ROUND_HALF_UP,[2]:ut.ROUND_UP},Ki={[0]:st.default.roundDown,[1]:st.default.roundHalfUp,[2]:st.default.roundUp},X=class{constructor(e,t=new eo.default(1)){this.numerator=se(e),this.denominator=se(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new X(this.denominator,this.numerator)}add(e){let t=e instanceof X?e:new X(se(e));return this.denominator.eq(t.denominator)?new X(this.numerator.add(t.numerator),this.denominator):new X(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof X?e:new X(se(e));return this.denominator.eq(t.denominator)?new X(this.numerator.sub(t.numerator),this.denominator):new X(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof X?e:new X(se(e));return new X(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof X?e:new X(se(e));return new X(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},o=1){Number.isInteger(e)||xt.logWithError(`${e} is not an integer.`),e<=0&&xt.logWithError(`${e} is not positive.`),ut.set({precision:e+1,rounding:Si[o]});let i=new ut(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},o=1){return Number.isInteger(e)||xt.logWithError(`${e} is not an integer.`),e<0&&xt.logWithError(`${e} is negative.`),dn.DP=e,dn.RM=Ki[o]||1,new dn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var du=W("Raydium_amount"),pu=at(no.default);var oo=require("@solana/web3.js"),pn=require("@solana/spl-token"),Ct={chainId:101,address:oo.PublicKey.default.toBase58(),programId:pn.TOKEN_PROGRAM_ID.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ge={chainId:101,address:"So11111111111111111111111111111111111111112",programId:pn.TOKEN_PROGRAM_ID.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"}};var Lt=require("@solana/web3.js");var G=require("@solana/web3.js"),io=require("@solana/spl-token");function De({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var Ri=[De({pubkey:io.TOKEN_PROGRAM_ID,isWritable:!1}),De({pubkey:G.SystemProgram.programId,isWritable:!1}),De({pubkey:G.SYSVAR_RENT_PUBKEY,isWritable:!1})];function ro({publicKey:r,transformSol:e}){let t=ao(r.toString());if(t instanceof G.PublicKey)return e&&t.equals(Le)?Ie:t;if(e&&t.toString()===Le.toBase58())return Ie;if(typeof t=="string"){if(t===G.PublicKey.default.toBase58())return G.PublicKey.default;try{return new G.PublicKey(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function ao(r){try{return new G.PublicKey(r)}catch{return r}}var fn=new G.PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),ct=new G.PublicKey("SysvarRent111111111111111111111111111111111"),gu=new G.PublicKey("SysvarC1ock11111111111111111111111111111111"),Rt=new G.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Li=new G.PublicKey("Sysvar1nstructions1111111111111111111111111"),Oi=G.SystemProgram.programId,Pu=new G.PublicKey("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Au=new G.PublicKey("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),wu=new G.PublicKey("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),ku=new G.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Tu=new G.PublicKey("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),hu=new G.PublicKey("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Iu=new G.PublicKey("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Bu=new G.PublicKey("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Su=new G.PublicKey("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ku=new G.PublicKey("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),xu=new G.PublicKey("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ie=new G.PublicKey("So11111111111111111111111111111111111111112"),Le=G.PublicKey.default;var yn=class{constructor({mint:e,decimals:t,symbol:o,name:i,skipMint:s=!1,isToken2022:c=!1}){if(e===Le.toBase58()||e instanceof Lt.PublicKey&&Le.equals(e)){this.decimals=ge.decimals,this.symbol=ge.symbol,this.name=ge.name,this.mint=new Lt.PublicKey(ge.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=o||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=s?Lt.PublicKey.default:ro({publicKey:e}),this.isToken2022=c}equals(e){return this===e?!0:this.mint.equals(e.mint)}},oe=yn;oe.WSOL=new yn(D(F({},ge),{mint:ge.address}));var bn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:o="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=o}equals(e){return this===e}},Ot=bn;Ot.SOL=new bn(Ct);var so=P(require("bn.js"));var _u=new X(new so.default(100));var Gu=W("Raydium_price");var Es=require("lodash");var Mi=P(require("axios"));var uo={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",MONITOR_BASE_HOST:"https://monitor.raydium.io",SERVICE_1_BASE_HOST:"https://service-v1.raydium.io",TEMP_HOST:"https://temp-api-v1.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",CPMM_CONFIG:"/main/cpmm-config",CLMM_DYNAMIC_CONFIG:"/main/clmm-dynamic-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://lite-api.jup.ag/tokens/v2/tag?query=verified",POOL_LIST:"/pools/info/list-v2",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/list-v2",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",OWNER_LOCK_POSITION:"/position/clmm-lock/{owner}",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee",CPMM_LOCK:"https://dynamic-ipfs.raydium.io/lock/cpmm/position",LAUNCH_AUTH_HOST:"https://launch-auth-v1.raydium.io",LAUNCH_COMMENT_HOST:"hhttps://launch-forum-v1.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1.raydium.io"},Ni=D(F({},uo),{BASE_HOST:"https://api-v3-devnet.raydium.io",OWNER_BASE_HOST:"https://owner-v1-devnet.raydium.io",SWAP_HOST:"https://transaction-v1-devnet.raydium.io",CPMM_LOCK:"https://dynamic-ipfs-devnet.raydium.io/lock/cpmm/position",TEMP_HOST:"https://temp-api-v1-devnet.raydium.io",LAUNCH_AUTH_HOST:"https://launch-auth-v1-devnet.raydium.io",LAUNCH_COMMENT_HOST:"https://launch-forum-v1-devnet.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1-devnet.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1-devnet.raydium.io"});var wc=W("Raydium_Api");var Bo=require("@solana/web3.js");var Ut=require("@solana/spl-token");var q=require("@solana/web3.js"),po=P(require("axios"));var de=require("@solana/web3.js");async function gn({connection:r,address:e,cluster:t="mainnet"}){let o=await he(r,[...new Set(e.map(s=>s.toString()))].map(s=>new de.PublicKey(s))),i={};for(let s=0;s<e.length;s++){let c=o[s],l=e[s];if(!c)continue;let f=new de.AddressLookupTableAccount({key:l,state:de.AddressLookupTableAccount.deserialize(c.data)});i[l.toString()]=f,t==="devnet"?qe[l.toString()]=f:We[l.toString()]=f}return i}var We={},Pn=async r=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(We[e])return We;let t=new de.PublicKey(e),o=await r.getAccountInfo(t);return o&&(We[e]=new de.AddressLookupTableAccount({key:t,state:de.AddressLookupTableAccount.deserialize(o.data)})),We},qe={},An=async r=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(qe[e])return qe;let t=new de.PublicKey(e),o=await r.getAccountInfo(t);return o&&(qe[e]=new de.AddressLookupTableAccount({key:t,state:de.AddressLookupTableAccount.deserialize(o.data)})),qe};var j={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"};var ie=require("@solana/web3.js");var lo=require("@solana/spl-token"),co=W("Raydium_txUtil"),mo=1644;function Nt(r){let e=[],t=[];return r.microLamports&&(e.push(ie.ComputeBudgetProgram.setComputeUnitPrice({microLamports:r.microLamports})),t.push(j.SetComputeUnitPrice)),r.units&&(e.push(ie.ComputeBudgetProgram.setComputeUnitLimit({units:r.units})),t.push(j.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Ue(r,e){var o,i;let t=e!=null?e:"confirmed";return(i=await((o=r.getLatestBlockhash)==null?void 0:o.call(r,{commitment:t})))==null?void 0:i.blockhash}async function Mt(r,e){return r.getSignatureStatuses([e]),new Promise((t,o)=>{let i=setTimeout(o,6e4);r.onSignature(e,s=>{if(clearTimeout(i),!s.err){t("");return}o(Object.assign(s.err,{txId:e}))},"confirmed")})}function wn(r,e){r.length<1&&co.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&co.logWithError(`no signers provided:, ${e.toString()}`);let t=new ie.Transaction;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<mo}catch{return!1}}function Pe(r,e){let[t,o]=ie.PublicKey.findProgramAddressSync(r,e);return{publicKey:t,nonce:o}}function lt({instructions:r,payer:e,signers:t}){return wn(r,[e,...t])}function mt({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:o=ie.Keypair.generate().publicKey.toString()}){let s=new ie.TransactionMessage({payerKey:e,recentBlockhash:o,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new ie.VersionedTransaction(s).serialize()).toString("base64").length<mo}catch{return!1}}var Fi=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r),vi=r=>{let e=r.serialize({requireAllSignatures:!1,verifySignatures:!1});r instanceof ie.VersionedTransaction&&(e=Fi(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Oe(r){let e=[];return r.forEach(t=>{t instanceof ie.Transaction&&(t.recentBlockhash||(t.recentBlockhash=lo.TOKEN_PROGRAM_ID.toBase58()),t.feePayer||(t.feePayer=ie.Keypair.generate().publicKey)),e.push(vi(t))}),console.log("simulate tx string:",e),e}var Ft=2e3,vt=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 po.default.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}=Nt(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(q.SystemProgram.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new q.PublicKey(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(j.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:i=[],endInstructionTypes:s=[],lookupTableAddress:c=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...o),this.instructionTypes.push(...i),this.endInstructionTypes.push(...s),this.lookupTableAddress.push(...c.filter(l=>l!==q.PublicKey.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:o}){return e===0?await this.buildV0(D(F({},t||{}),{lookupTableAddress:o})):this.build(t)}build(e){var o;let t=new q.Transaction;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((o=this.owner)==null?void 0:o.signer)&&!this.signers.some(i=>i.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 i=>{var p;let{recentBlockHash:s,skipPreflight:c=!0,sendAndConfirm:l,notSendToRpc:f}=i||{},y=s!=null?s:await Ue(this.connection,this.blockhashCommitment);if(t.recentBlockhash=y,this.signers.length&&t.sign(...this.signers),Oe([t]),(p=this.owner)!=null&&p.isKeyPair)return{txId:l?await(0,q.sendAndConfirmTransaction)(this.connection,t,this.signers.find(T=>T.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 A=await this.signAllTransactions([t]);if(this.signers.length)for(let T of A)try{T.sign(...this.signers)}catch{}return{txId:f?"":await this.connection.sendRawTransaction(A[0].serialize(),{skipPreflight:c}),signedTx:A[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var y;let{extraPreBuildData:t=[],extInfo:o}=e,{transaction:i}=this.build(o),s=t.filter(p=>p.transaction.instructions.length>0),c=[i,...s.map(p=>p.transaction)],l=[this.signers,...s.map(p=>p.signers)],f=[...this.instructionTypes,...s.map(p=>p.instructionTypes).flat()];return(y=this.owner)!=null&&y.signer&&l.forEach(p=>{p.some(A=>A.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:c,signers:l,instructionTypes:f,execute:async p=>{var I;let{sequentially:A,onTxUpdate:T,skipTxCount:h=0,recentBlockHash:S,skipPreflight:w=!0}=p||{},B=S!=null?S:await Ue(this.connection,this.blockhashCommitment);if((I=this.owner)!=null&&I.isKeyPair){if(A){let k=[],L=0;for(let M of c){if(++L,L<=h)continue;let g=await(0,q.sendAndConfirmTransaction)(this.connection,M,this.signers.find(K=>K.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:w});k.push(g)}return{txIds:k,signedTxs:c}}return{txIds:await await Promise.all(c.map(async k=>(k.recentBlockhash=B,await this.connection.sendRawTransaction(k.serialize(),{skipPreflight:w})))),signedTxs:c}}if(this.signAllTransactions){let k=c.map((M,g)=>(M.recentBlockhash=B,l[g].length&&M.sign(...l[g]),M));Oe(k);let L=await this.signAllTransactions(k);if(A){let M=0,g=[],K=async()=>{if(!L[M])return;let C=await this.connection.sendRawTransaction(L[M].serialize(),{skipPreflight:w});g.push({txId:C,status:"sent",signedTx:L[M]}),T==null||T([...g]),M++;let O=!1,N=null,_=null,ne=z=>{N!==null&&clearInterval(N),_!==null&&this.connection.removeSignatureListener(_);let U=g.findIndex(ee=>ee.txId===C);if(U>-1){if(g[U].status==="error"||g[U].status==="success")return;g[U].status=z.err?"error":"success"}T==null||T([...g]),z.err||K()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var z;if(O){clearInterval(N);return}try{let U=await this.connection.getTransaction(C,{commitment:"confirmed",maxSupportedTransactionVersion:0});U&&(O=!0,clearInterval(N),ne({err:((z=U.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",C))}catch(U){O=!0,clearInterval(N),console.error("getTransaction timeout:",U,C)}},Ft)),_=this.connection.onSignature(C,z=>{if(O){this.connection.removeSignatureListener(_);return}O=!0,ne(z)},"confirmed"),this.connection.getSignatureStatus(C)};return await K(),{txIds:g.map(C=>C.txId),signedTxs:L}}else{let M=[];for(let g=0;g<L.length;g+=1){let K=await this.connection.sendRawTransaction(L[g].serialize(),{skipPreflight:w});M.push(K)}return{txIds:M,signedTxs:L}}}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 w;let S=e||{},{lookupTableCache:t={},lookupTableAddress:o=[],forerunCreate:i,recentBlockhash:s}=S,c=be(S,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),l=F(F({},this.cluster==="devnet"?await An(this.connection):await Pn(this.connection)),t),f=Array.from(new Set([...o,...this.lookupTableAddress])),y=[];for(let B of f)l[B]===void 0&&y.push(new q.PublicKey(B));let p=await gn({connection:this.connection,address:y});for(let[B,I]of Object.entries(p))l[B]=I;let A=i?q.PublicKey.default.toBase58():s!=null?s:await Ue(this.connection,this.blockhashCommitment),T=new q.TransactionMessage({payerKey:this.feePayer,recentBlockhash:A,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(l));((w=this.owner)==null?void 0:w.signer)&&!this.signers.some(B=>B.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let h=new q.VersionedTransaction(T);return h.sign(this.signers),{builder:this,transaction:h,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async B=>{var M;let{skipPreflight:I=!0,sendAndConfirm:k,notSendToRpc:L}=B||{};if(Oe([h]),(M=this.owner)!=null&&M.isKeyPair){let g=await this.connection.sendTransaction(h,{skipPreflight:I});return k&&await Mt(this.connection,g),{txId:g,signedTx:h}}if(this.signAllTransactions){let g=await this.signAllTransactions([h]);if(this.signers.length)for(let K of g)try{K.sign(this.signers)}catch{}return{txId:L?"":await this.connection.sendTransaction(g[0],{skipPreflight:I}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:c||{}}}async buildV0MultiTx(e){var y;let{extraPreBuildData:t=[],buildProps:o}=e,{transaction:i}=await this.buildV0(o),s=t.filter(p=>p.builder.instructions.length>0),c=[i,...s.map(p=>p.transaction)],l=[this.signers,...s.map(p=>p.signers)],f=[...this.instructionTypes,...s.map(p=>p.instructionTypes).flat()];return(y=this.owner)!=null&&y.signer&&l.forEach(p=>{p.some(A=>A.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),c.forEach(async(p,A)=>{p.sign(l[A])}),{builder:this,transactions:c,signers:l,instructionTypes:f,buildProps:o,execute:async p=>{var w;let{sequentially:A,onTxUpdate:T,recentBlockHash:h,skipPreflight:S=!0}=p||{};if(h&&c.forEach(B=>B.message.recentBlockhash=h),Oe(c),(w=this.owner)!=null&&w.isKeyPair){if(A){let B=[];for(let I of c){let k=await this.connection.sendTransaction(I,{skipPreflight:S});await Mt(this.connection,k),B.push(k)}return{txIds:B,signedTxs:c}}return{txIds:await Promise.all(c.map(async B=>await this.connection.sendTransaction(B,{skipPreflight:S}))),signedTxs:c}}if(this.signAllTransactions){let B=await this.signAllTransactions(c);if(A){let I=0,k=[],L=async()=>{if(!B[I])return;let M=await this.connection.sendTransaction(B[I],{skipPreflight:S});k.push({txId:M,status:"sent",signedTx:B[I]}),T==null||T([...k]),I++;let g=!1,K=null,C=null,O=N=>{K!==null&&clearInterval(K),C!==null&&this.connection.removeSignatureListener(C);let _=k.findIndex(ne=>ne.txId===M);if(_>-1){if(k[_].status==="error"||k[_].status==="success")return;k[_].status=N.err?"error":"success"}T==null||T([...k]),N.err||L()};this.loopMultiTxStatus&&(K=setInterval(async()=>{var N;if(g){clearInterval(K);return}try{let _=await this.connection.getTransaction(M,{commitment:"confirmed",maxSupportedTransactionVersion:0});_&&(g=!0,clearInterval(K),O({err:((N=_.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",M))}catch(_){g=!0,clearInterval(K),console.error("getTransaction timeout:",_,M)}},Ft)),C=this.connection.onSignature(M,N=>{if(g){this.connection.removeSignatureListener(C);return}g=!0,O(N)},"confirmed"),this.connection.getSignatureStatus(M)};return L(),{txIds:[],signedTxs:B}}else{let I=[];for(let k=0;k<B.length;k+=1){let L=await this.connection.sendTransaction(B[k],{skipPreflight:S});I.push(L)}return{txIds:I,signedTxs:B}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var T;let A=e||{},{splitIns:t=[],computeBudgetConfig:o}=A,i=be(A,["splitIns","computeBudgetConfig"]),s=o?Nt(o):{instructions:[],instructionTypes:[]},c=this.signers.reduce((h,S)=>D(F({},h),{[S.publicKey.toBase58()]:S}),{}),l=[],f=[],y=[],p=0;if(this.allInstructions.forEach(h=>{let S=[...y,h],w=o?[...s.instructions,...S]:S,I=[...new Set(S.map(k=>k.keys.filter(L=>L.isSigner).map(L=>L.pubkey.toString())).flat()).values()].map(k=>new q.PublicKey(k));if(h!==t[p]&&y.length<12&&(lt({instructions:w,payer:this.feePayer,signers:I})||lt({instructions:S,payer:this.feePayer,signers:I})))y.push(h);else{if(y.length===0)throw Error("item ins too big");p+=h===t[p]?1:0,lt({instructions:o?[...s.instructions,...y]:[...y],payer:this.feePayer,signers:I})?l.push(new q.Transaction().add(...s.instructions,...y)):l.push(new q.Transaction().add(...y)),f.push(Array.from(new Set(y.map(k=>k.keys.filter(L=>L.isSigner).map(L=>L.pubkey.toString())).flat())).map(k=>c[k]).filter(k=>k!==void 0)),y=[h]}}),y.length>0){let S=[...new Set(y.map(w=>w.keys.filter(B=>B.isSigner).map(B=>B.pubkey.toString())).flat()).values()].map(w=>c[w]).filter(w=>w!==void 0);lt({instructions:o?[...s.instructions,...y]:[...y],payer:this.feePayer,signers:S.map(w=>w.publicKey)})?l.push(new q.Transaction().add(...s.instructions,...y)):l.push(new q.Transaction().add(...y)),f.push(S)}return l.forEach(h=>h.feePayer=this.feePayer),(T=this.owner)!=null&&T.signer&&f.forEach(h=>{h.some(S=>S.publicKey.equals(this.owner.publicKey))||h.push(this.owner.signer)}),{builder:this,transactions:l,signers:f,instructionTypes:this.instructionTypes,execute:async h=>{var M;let{sequentially:S,onTxUpdate:w,skipTxCount:B=0,recentBlockHash:I,skipPreflight:k=!0}=h||{},L=I!=null?I:await Ue(this.connection,this.blockhashCommitment);if(l.forEach(async(g,K)=>{g.recentBlockhash=L,f[K].length&&g.sign(...f[K])}),Oe(l),(M=this.owner)!=null&&M.isKeyPair){if(S){let g=0,K=[];for(let C of l){if(++g,g<=B){K.push("tx skipped");continue}let O=await(0,q.sendAndConfirmTransaction)(this.connection,C,this.signers.find(N=>N.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:k});K.push(O)}return{txIds:K,signedTxs:l}}return{txIds:await Promise.all(l.map(async g=>await this.connection.sendRawTransaction(g.serialize(),{skipPreflight:k}))),signedTxs:l}}if(this.signAllTransactions){let g=await this.signAllTransactions(l.slice(B,l.length)),K=[...l.slice(0,B),...g];if(S){let C=0,O=[],N=async()=>{if(!K[C])return;C<B&&(O.push({txId:"",status:"success",signedTx:K[C]}),w==null||w([...O]),C++,N());let _=await this.connection.sendRawTransaction(K[C].serialize(),{skipPreflight:k});O.push({txId:_,status:"sent",signedTx:K[C]}),w==null||w([...O]),C++;let ne=!1,z=null,U=null,ee=Y=>{z!==null&&clearInterval(z),U!==null&&this.connection.removeSignatureListener(U);let ae=O.findIndex(ke=>ke.txId===_);if(ae>-1){if(O[ae].status==="error"||O[ae].status==="success")return;O[ae].status=Y.err?"error":"success"}w==null||w([...O]),Y.err||N()};this.loopMultiTxStatus&&(z=setInterval(async()=>{var Y;if(ne){clearInterval(z);return}try{let ae=await this.connection.getTransaction(_,{commitment:"confirmed",maxSupportedTransactionVersion:0});ae&&(ne=!0,clearInterval(z),ee({err:((Y=ae.meta)==null?void 0:Y.err)||null}),console.log("tx status from getTransaction:",_))}catch(ae){ne=!0,clearInterval(z),console.error("getTransaction timeout:",ae,_)}},Ft)),U=this.connection.onSignature(_,Y=>{if(ne){this.connection.removeSignatureListener(U);return}ne=!0,ee(Y)},"confirmed"),this.connection.getSignatureStatus(_)};return await N(),{txIds:O.map(_=>_.txId),signedTxs:K}}else{let C=[];for(let O=0;O<K.length;O+=1){let N=await this.connection.sendRawTransaction(K[O].serialize(),{skipPreflight:k});C.push(N)}return{txIds:C,signedTxs:K}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var M;let L=e||{},{computeBudgetConfig:t,splitIns:o=[],lookupTableCache:i={},lookupTableAddress:s=[],insCountLimit:c=12}=L,l=be(L,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),f=F(F({},this.cluster==="devnet"?await An(this.connection):await Pn(this.connection)),i),y=Array.from(new Set([...this.lookupTableAddress,...s])),p=[];for(let g of y)f[g]===void 0&&p.push(new q.PublicKey(g));let A=await gn({connection:this.connection,address:p});for(let[g,K]of Object.entries(A))f[g]=K;let T=t?Nt(t):{instructions:[],instructionTypes:[]},h=await Ue(this.connection,this.blockhashCommitment),S=this.signers.reduce((g,K)=>D(F({},g),{[K.publicKey.toBase58()]:K}),{}),w=[],B=[],I=[],k=0;if(this.allInstructions.forEach(g=>{let K=[...I,g],C=t?[...T.instructions,...K]:K;if(g!==o[k]&&I.length<c&&(mt({instructions:C,payer:this.feePayer,lookupTableAddressAccount:f})||mt({instructions:K,payer:this.feePayer,lookupTableAddressAccount:f})))I.push(g);else{if(I.length===0)throw Error("item ins too big");k+=g===o[k]?1:0;let O={};for(let N of[...new Set(y)])f[N]!==void 0&&(O[N]=f[N]);if(t&&mt({instructions:[...T.instructions,...I],payer:this.feePayer,lookupTableAddressAccount:f,recentBlockhash:h})){let N=new q.TransactionMessage({payerKey:this.feePayer,recentBlockhash:h,instructions:[...T.instructions,...I]}).compileToV0Message(Object.values(f));w.push(new q.VersionedTransaction(N))}else{let N=new q.TransactionMessage({payerKey:this.feePayer,recentBlockhash:h,instructions:[...I]}).compileToV0Message(Object.values(f));w.push(new q.VersionedTransaction(N))}B.push(Array.from(new Set(I.map(N=>N.keys.filter(_=>_.isSigner).map(_=>_.pubkey.toString())).flat())).map(N=>S[N]).filter(N=>N!==void 0)),I=[g]}}),I.length>0){let K=[...new Set(I.map(C=>C.keys.filter(O=>O.isSigner).map(O=>O.pubkey.toString())).flat()).values()].map(C=>S[C]).filter(C=>C!==void 0);if(t&&mt({instructions:[...T.instructions,...I],payer:this.feePayer,lookupTableAddressAccount:f,recentBlockhash:h})){let C=new q.TransactionMessage({payerKey:this.feePayer,recentBlockhash:h,instructions:[...T.instructions,...I]}).compileToV0Message(Object.values(f));w.push(new q.VersionedTransaction(C))}else{let C=new q.TransactionMessage({payerKey:this.feePayer,recentBlockhash:h,instructions:[...I]}).compileToV0Message(Object.values(f));w.push(new q.VersionedTransaction(C))}B.push(K)}return(M=this.owner)!=null&&M.signer&&B.forEach(g=>{g.some(K=>K.publicKey.equals(this.owner.publicKey))||g.push(this.owner.signer)}),w.forEach((g,K)=>{g.sign(B[K])}),{builder:this,transactions:w,buildProps:e,signers:B,instructionTypes:this.instructionTypes,execute:async g=>{var ne;let{sequentially:K,onTxUpdate:C,skipTxCount:O=0,recentBlockHash:N,skipPreflight:_=!0}=g||{};if(w.map(async(z,U)=>{B[U].length&&z.sign(B[U]),N&&(z.message.recentBlockhash=N)}),Oe(w),(ne=this.owner)!=null&&ne.isKeyPair){if(K){let z=0,U=[];for(let ee of w){if(++z,z<=O){console.log("skip tx: ",z),U.push("tx skipped");continue}let Y=await this.connection.sendTransaction(ee,{skipPreflight:_});await Mt(this.connection,Y),U.push(Y)}return{txIds:U,signedTxs:w}}return{txIds:await Promise.all(w.map(async z=>await this.connection.sendTransaction(z,{skipPreflight:_}))),signedTxs:w}}if(this.signAllTransactions){let z=await this.signAllTransactions(w.slice(O,w.length)),U=[...w.slice(0,O),...z];if(K){let ee=0,Y=[],ae=async()=>{if(!U[ee])return;if(ee<O){Y.push({txId:"",status:"success",signedTx:U[ee]}),C==null||C([...Y]),ee++,ae();return}let ke=await this.connection.sendTransaction(U[ee],{skipPreflight:_});Y.push({txId:ke,status:"sent",signedTx:U[ee]}),C==null||C([...Y]),ee++;let nt=!1,_e=null,Bt=null,Xn=Re=>{_e!==null&&clearInterval(_e),Bt!==null&&this.connection.removeSignatureListener(Bt);let Te=Y.findIndex(fi=>fi.txId===ke);if(Te>-1){if(Y[Te].status==="error"||Y[Te].status==="success")return;Y[Te].status=Re.err?"error":"success"}C==null||C([...Y]),Re.err||ae()};this.loopMultiTxStatus&&(_e=setInterval(async()=>{var Re;if(nt){clearInterval(_e);return}try{let Te=await this.connection.getTransaction(ke,{commitment:"confirmed",maxSupportedTransactionVersion:0});Te&&(nt=!0,clearInterval(_e),Xn({err:((Re=Te.meta)==null?void 0:Re.err)||null}),console.log("tx status from getTransaction:",ke))}catch(Te){nt=!0,clearInterval(_e),console.error("getTransaction timeout:",Te,ke)}},Ft)),Bt=this.connection.onSignature(ke,Re=>{if(nt){this.connection.removeSignatureListener(Bt);return}nt=!0,Xn(Re)},"confirmed"),this.connection.getSignatureStatus(ke)};return ae(),{txIds:[],signedTxs:U}}else{let ee=[];for(let Y=0;Y<U.length;Y+=1){let ae=await this.connection.sendTransaction(U[Y],{skipPreflight:_});ee.push(ae)}return{txIds:ee,signedTxs:U}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:l||{}}}};var kn=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),le=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=W(t)}createTxBuilder(e){return this.scope.checkOwner(),new vt({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(kn(e))}logInfo(...e){this.logger.info(kn(e))}logAndCreateError(...e){let t=kn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};var ho=require("@solana/web3.js"),Wi=P(require("bn.js"));var qt=require("@solana/spl-token");var To=require("@solana/web3.js"),Ei=P(require("bn.js"));var Di=require("@solana/spl-token");var Po=require("@solana/web3.js"),Ge=P(require("bn.js"));var x=require("@solana/buffer-layout"),Vt=x.Layout,fo=x.Structure;var Tn=x.UInt;var yo=x.u8,H=x.u16;var _t=x.u32;var pe=x.s32;var bo=x.seq;var V=x.blob;var hn=x.bits,go=x.offset;var Me=class extends Vt{constructor(t,o,i){super(t,i);this.blob=V(t),this.signed=o}decode(t,o=0){let i=new Ge.default(this.blob.decode(t,o),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,o,i=0){return typeof t=="number"&&(t=new Ge.default(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),o,i)}},Et=class extends Vt{constructor(t){super(8,t);this._lower=hn(_t(),!1),this._upper=hn(_t(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,o=0){let i=this._lower.decode(t,o),s=this._upper.decode(t,o+this._lower.span);return F(F({},i),s)}encode(t,o,i=0){return this._lower.encode(t,o,i)+this._upper.encode(t,o,i+this._lower.span)}};function m(r){return new Tn(1,r)}function Q(r){return new Tn(4,r)}function n(r){return new Me(8,!1,r)}function v(r){return new Me(16,!1,r)}function Ao(r){return new Me(1,!0,r)}function ze(r){return new Me(8,!0,r)}function wo(r){return new Me(16,!0,r)}var dt=class extends Vt{constructor(t,o,i,s){super(t.span,s);this.layout=t,this.decoder=o,this.encoder=i}decode(t,o){return this.decoder(this.layout.decode(t,o))}encode(t,o,i){return this.layout.encode(this.encoder(t),o,i)}getSpan(t,o){return this.layout.getSpan(t,o)}};function a(r){return new dt(V(32),e=>new Po.PublicKey(e),e=>e.toBuffer(),r)}function me(r){return new dt(yo(),Vi,_i,r)}function Vi(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function _i(r){return r?1:0}function ko(r,e){let t=_t("length"),o=d([t,b(r,go(t,-t.span),"values")]);return new dt(o,({values:i})=>i,i=>({values:i}),e)}var In=class extends fo{decode(e,t){return super.decode(e,t)}};function d(r,e,t){return new In(r,e,t)}function b(r,e,t){let o,i=typeof e=="number"?e:(0,Ge.isBN)(e)?e.toNumber():new Proxy(e,{get(s,c){if(!o){let l=Reflect.get(s,"count");o=(0,Ge.isBN)(l)?l.toNumber():l,Reflect.set(s,"count",o)}return Reflect.get(s,c)},set(s,c,l){return c==="count"&&(o=l),Reflect.set(s,c,l)}});return bo(r,i,t)}var Dt=d([a("mint"),a("owner"),n("amount"),Q("delegateOption"),a("delegate"),m("state"),Q("isNativeOption"),n("isNative"),n("delegatedAmount"),Q("closeAuthorityOption"),a("closeAuthority")]);var $o=require("@solana/web3.js"),va=require("@solana/spl-token");var Ui=require("@solana/web3.js"),Gi=require("@solana/spl-token");var R=require("@solana/web3.js"),So=new R.PublicKey("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ko=new R.PublicKey("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),xo=new R.PublicKey("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Bn=new R.PublicKey("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),ql=new R.PublicKey("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),zi=new R.PublicKey("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Co=new R.PublicKey("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Ro=new R.PublicKey("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Ul=new R.PublicKey("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Xi=new R.PublicKey("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Lo=new R.PublicKey("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Yi=new R.PublicKey("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Qi=new R.PublicKey("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Oo=new R.PublicKey("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Gl=new R.PublicKey("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Zi=new R.PublicKey("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Sn=new R.PublicKey("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Hi=new R.PublicKey("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),zl=new R.PublicKey("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ji=new R.PublicKey("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),$i=new R.PublicKey("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Ji=new R.PublicKey("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Xl=new R.PublicKey("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Yl=new R.PublicKey("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Ql=new R.PublicKey("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Zl=new R.PublicKey("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Hl=new R.PublicKey("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Se={OPEN_BOOK_PROGRAM:new R.PublicKey("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new R.PublicKey("Ray1111111111111111111111111111111111111111"),AMM_V4:new R.PublicKey("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new R.PublicKey("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new R.PublicKey("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new R.PublicKey("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new R.PublicKey("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new R.PublicKey("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new R.PublicKey("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new R.PublicKey("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new R.PublicKey("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new R.PublicKey("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:R.PublicKey.default,Router:new R.PublicKey("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new R.PublicKey("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new R.PublicKey("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new R.PublicKey("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new R.PublicKey("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new R.PublicKey("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new R.PublicKey("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new R.PublicKey("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new R.PublicKey("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new R.PublicKey("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new R.PublicKey("Ray1111111111111111111111111111111111111111")};var Va=P(require("decimal.js"));var Nn=require("@solana/spl-token"),$r=require("@solana/web3.js"),Jr=P(require("bn.js")),ea=P(require("decimal.js"));var tr=require("@solana/spl-token"),nr=require("@solana/web3.js");var er=d([Q("mintAuthorityOption"),a("mintAuthority"),n("supply"),m("decimals"),m("isInitialized"),Q("freezeAuthorityOption"),a("freezeAuthority")]);var Ln=require("@solana/spl-token"),Ht=require("@solana/web3.js"),Zr=P(require("bn.js"));var E=P(require("bn.js")),fe=new E.default(1).shln(64);var or=new E.default(1).shln(128),Gt=new E.default(1).shln(64).subn(1),ir=new E.default(1).shln(128).subn(1);var Ye=new E.default("4295048016"),Qe=new E.default("79226673521066979257578248091"),rr=new E.default("59543866431248"),ar=new E.default("184467440737095516"),sr=new E.default("15793534762490258745");var Kn=60,km=new E.default("18446743708227953217"),ur=[{bit:0,factor:new E.default("fffcb933bd6fb800",16)},{bit:1,factor:new E.default("fff97272373d4000",16)},{bit:2,factor:new E.default("fff2e50f5f657000",16)},{bit:3,factor:new E.default("ffe5caca7e10f000",16)},{bit:4,factor:new E.default("ffcb9843d60f7000",16)},{bit:5,factor:new E.default("ff973b41fa98e800",16)},{bit:6,factor:new E.default("ff2ea16466c9b000",16)},{bit:7,factor:new E.default("fe5dee046a9a3800",16)},{bit:8,factor:new E.default("fcbe86c7900bb000",16)},{bit:9,factor:new E.default("f987a7253ac65800",16)},{bit:10,factor:new E.default("f3392b0822bb6000",16)},{bit:11,factor:new E.default("e7159475a2caf000",16)},{bit:12,factor:new E.default("d097f3bdfd2f2000",16)},{bit:13,factor:new E.default("a9f746462d9f8000",16)},{bit:14,factor:new E.default("70d869a156f31c00",16)},{bit:15,factor:new E.default("31be135f97ed3200",16)},{bit:16,factor:new E.default("9aa508b5b85a500",16)},{bit:17,factor:new E.default("5d6af8dedc582c",16)},{bit:18,factor:new E.default("2216e584f5fa",16)}];var pt=3,No=100;var Mo=10,Fo=100,zt=14;var $=new E.default(0),Ze=new E.default(1),Tm=new E.default(-1);var hm=new E.default("18446744073700000000");var cr=d([V(8),m("bump"),H("index"),a("owner"),Q("protocolFeeRate"),Q("tradeFeeRate"),H("tickSpacing"),Q("fundFeeRate"),b(Q(),1),a("fundOwner"),b(n(),3)]),lr=d([Q("blockTimestamp"),ze("tickCumulative"),b(n(),4)]),vo=d([V(8),me("initialized"),n("recentEpoch"),H("observationIndex"),a("poolId"),b(lr,No,"observations"),b(n(),4)]),mr=d([H("filterPeriod"),H("decayPeriod"),H("reductionFactor"),Q("dynamicFeeControl"),Q("maxVolatilityAccumulator"),pe("tickSpacingIndexReference"),Q("volatilityReference"),Q("volatilityAccumulator"),n("lastUpdateTimestamp"),b(m(),46)]),dr=d([m("state"),n("openTime"),n("endTime"),n("lastUpdateTime"),v("emissionsPerSecondX64"),n("totalEmissioned"),n("claimed"),a("mint"),a("vault"),a("creator"),v("growthGlobalX64")]),xn=d([V(8),m("bump"),a("configId"),a("creator"),a("mintA"),a("mintB"),a("vaultA"),a("vaultB"),a("observationId"),m("mintDecimalsA"),m("mintDecimalsB"),H("tickSpacing"),v("liquidity"),v("sqrtPriceX64"),pe("tickCurrent"),Q(),v("feeGrowthGlobalX64A"),v("feeGrowthGlobalX64B"),n("protocolFeesTokenA"),n("protocolFeesTokenB"),b(v(),4),m("status"),m("feeOn"),V(6),b(dr,pt,"rewardInfos"),V(8*16,"tickArrayBitmap"),b(n(),4),n("fundFeesTokenA"),n("fundFeesTokenB"),n("startTime"),n("recentEpoch"),mr.replicate("dynamicFeeInfo"),b(n(),46)]),pr=d([v("growthInsideLastX64"),n("rewardAmountOwed")]),fr=d([V(8),m("bump"),a("nftMint"),a("poolId"),pe("tickLower"),pe("tickUpper"),v("liquidity"),v("feeGrowthInsideLastX64A"),v("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),b(pr,pt,"rewardInfos"),n("recentEpoch"),b(n(),7)]),Km=d([V(8),m("bump"),a("poolId"),pe("tickLower"),pe("tickUpper"),v("liquidity"),v("feeGrowthInsideLastX64A"),v("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),b(v(),pt,"rewardGrowthInside"),n("recentEpoch"),b(n(),7)]),yr=d([pe("tick"),wo("liquidityNet"),v("liquidityGross"),v("feeGrowthOutsideX64A"),v("feeGrowthOutsideX64B"),b(v(),pt,"rewardGrowthsOutsideX64"),n("orderPhase"),n("ordersAmount"),n("partFilledOrdersRemaining"),v("unfilledRatioX64"),b(Q(),3)]),Vo=d([V(8),a("poolId"),pe("startTickIndex"),b(yr,Kn,"ticks"),m("initializedTickCount"),n("recentEpoch"),b(m(),107)]),br=d([V(8),m("bump"),b(a(),Mo,"operationOwners"),b(a(),Fo,"whitelistMints")]),gr=d([V(8),a("poolId"),a("owner"),pe("tick"),me("zeroForOne"),n("orderPhase"),n("totalAmount"),n("filledAmount"),n("settleBase"),n("settleOutput"),n("openTime"),v("unfilledRatioX64"),b(n(),4)]),_o=d([V(8),a("poolId"),V(8*8*zt,"positiveTickArrayBitmap"),V(8*8*zt,"negativeTickArrayBitmap")]),xm=d([V(8),H("index"),H("filterPeriod"),H("decayPeriod"),H("reductionFactor"),Q("dynamicFeeControl"),Q("maxVolatilityAccumulator"),b(n(),8)]),Pr=d([V(8),a("wallet"),m("nonceIndex"),n("orderNonce"),b(n(),4)]),Cm=d([n(),m("bump"),a("owner"),a("poolId"),a("positionId"),a("nftAccount"),b(n(),8)]),Ar=d([V(8),m("bump"),a("lockOwner"),a("poolId"),a("positionId"),a("nftAccount"),a("lockNftMint"),n("recentEpoch"),b(n(),8)]);var wr=P(require("bn.js"));var Wm=Buffer.from("amm_config","utf8"),Tr=Buffer.from("pool","utf8"),hr=Buffer.from("pool_vault","utf8"),qm=Buffer.from("pool_reward_vault","utf8"),Um=Buffer.from("position","utf8"),Gm=Buffer.from("tick_array","utf8"),zm=Buffer.from("operation","utf8"),Xm=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Ym=Buffer.from("observation","utf8"),Qm=Buffer.from("support_mint","utf8"),Zm=Buffer.from("dynamic_fee_config","utf8"),Hm=Buffer.from("permission","utf8");var jm=Buffer.from("locked_position","utf8");var zo=require("js-sha256");var Eo=P(require("bn.js")),Ir=P(require("decimal.js"));var ed=new Eo.default(1).shln(256).subn(1);var Kr=P(require("bn.js"));var Br=P(require("bn.js")),Sr=P(require("decimal.js"));var Rr=P(require("bn.js")),Lr=P(require("decimal.js"));var _r=require("@solana/web3.js"),Er=P(require("bn.js"));var Uo=require("@solana/spl-token");var Dr=P(require("decimal.js"));var Fr=P(require("bn.js"));var Nr=P(require("bn.js"));var Ur=P(require("bn.js"));function J(r){let e=`global:${r}`;return Buffer.from(zo.sha256.digest(e)).slice(0,8)}vo.span;var Yp=W("Raydium_Clmm"),Qp={createPool:J("create_pool"),createCustomizablePool:J("create_customizable_pool"),createPermissionedPool:J("create_permissioned_pool"),openPositionV2:J("open_position_v2"),openPositionWithToken22Nft:J("open_position_with_token22_nft"),closePosition:J("close_position"),increaseLiquidityV2:J("increase_liquidity_v2"),decreaseLiquidityV2:J("decrease_liquidity_v2"),initializeReward:J("initialize_reward"),setRewardParams:J("set_reward_params"),updateRewardInfos:J("update_reward_infos"),collectRemainingRewards:J("collect_remaining_rewards"),swapV2:J("swap_v2"),openLimitOrder:J("open_limit_order"),increaseLimitOrder:J("increase_limit_order"),decreaseLimitOrder:J("decrease_limit_order"),settleLimitOrder:J("settle_limit_order"),closeLimitOrder:J("close_limit_order")};var jt=require("@solana/web3.js");var na=d([m("instruction")]),oa=d([m("instruction")]),ia=d([n("rewardState"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardLastUpdateTime"),n("totalReward"),n("totalRewardEmissioned"),n("rewardClaimed"),n("rewardPerSecond"),v("accRewardPerShare"),a("rewardVault"),a("rewardMint"),a("rewardSender"),n("rewardType"),b(n(),15,"padding")]),ra=d([n("state"),n("nonce"),a("lpVault"),a("rewardVault"),a(),a(),n(),n(),n("totalReward"),v("perShareReward"),n("lastSlot"),n("perSlotReward")]),aa=d([n("state"),n("nonce"),a("lpVault"),a("rewardVaultA"),n("totalRewardA"),v("perShareRewardA"),n("perSlotRewardA"),m("option"),a("rewardVaultB"),V(7),n("totalRewardB"),v("perShareRewardB"),n("perSlotRewardB"),n("lastSlot"),a()]),sa=d([n(),n("state"),n("nonce"),n("validRewardTokenNum"),v("rewardMultiplier"),n("rewardPeriodMax"),n("rewardPeriodMin"),n("rewardPeriodExtend"),a("lpMint"),a("lpVault"),b(ia,5,"rewardInfos"),a("creator"),a(),b(n(),32,"padding")]),ua=new Proxy(ra,{get(r,e,t){return e==="decode"?(...o)=>{let i=r.decode(...o);return D(F({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),ca=new Proxy(aa,{get(r,e,t){return e==="decode"?(...o)=>{let i=r.decode(...o);return D(F({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(r,e,t)}}),Qo=new Proxy(sa,{get(r,e,t){return e==="decode"?(...o)=>{let i=r.decode(...o);return D(F({},i),{version:6,rewardInfos:i.rewardInfos.map(s=>{var c;return D(F({},s),{rewardType:((c=Object.entries(bt).find(l=>String(l[1])===s.rewardType.toString()))!=null?c:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),la=d([n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),ma=d([m("instruction"),n("nonce"),b(la,5,"rewardTimeInfo")]),da=d([m("instruction"),n("rewardReopenTime"),n("rewardEndTime"),n("rewardPerSecond")]),pa=d([m("instruction"),n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),_f=d([n("state"),a("id"),a("owner"),n("deposited"),b(n(),1,"rewardDebts")]),Zo=d([n("state"),a("id"),a("owner"),n("deposited"),b(v(),1,"rewardDebts"),n(""),n("voteLockedBalance"),b(n(),15)]),Ef=d([n("state"),a("id"),a("owner"),n("deposited"),b(n(),2,"rewardDebts")]),fa=d([n("state"),a("id"),a("owner"),n("deposited"),b(v(),2,"rewardDebts"),b(n(),17)]),ya=d([n(),n("state"),a("id"),a("owner"),n("deposited"),b(v(),5,"rewardDebts"),b(n(),16)]),ba=d([m("instruction"),n("amount")]),ga=d([a("mint"),a("grantAuthority"),n("baselineVoteWeightScaledFactor"),n("maxExtraLockupVoteWeightScaledFactor"),n("lockupSaturationSecs"),Ao("digitShift"),b(m(),7,"reserved1"),b(n(),7,"reserved2")]),Pa=d([V(8),a("governanceProgramId"),a("realm"),a("realmGoverningTokenMint"),a("realmAuthority"),b(m(),32,"reserved1"),b(ga,4,"votingMints"),ze("timeOffset"),m("bump"),b(m(),7,"reserved2"),b(n(),11,"reserved3")]),Aa=d([ze("startTime"),ze("endTime"),m("kind"),b(m(),15,"reserved")]),wa=d([b(Aa,1,"lockup"),n("amountDeposited_native"),n("amountInitiallyLockedNative"),me("isUsed"),me("allowClawback"),m("votingMintConfigIdx"),b(m(),29,"reserved")]),ka=d([V(8),a("voterAuthority"),a("registrar"),b(wa,32,"deposits"),m("voterBump"),m("voterWweightRecordBump"),b(m(),94,"reserved")]);var Ta=require("@solana/spl-token"),Xf=W("Raydium_farm_config"),ha=new jt.PublicKey("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ia=new jt.PublicKey("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Yf=new jt.PublicKey("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var bt={"Standard SPL":0,"Option tokens":1},Ho={[So.toString()]:3,[Ko.toString()]:4,[xo.toString()]:5,[Bn.toString()]:6,[Se.FARM_PROGRAM_ID_V3.toString()]:3,[Se.FARM_PROGRAM_ID_V4.toString()]:4,[Se.FARM_PROGRAM_ID_V5.toString()]:5,[Se.FARM_PROGRAM_ID_V6.toString()]:6};var gt=require("@solana/web3.js"),Ra=P(require("bn.js")),Fn=require("@solana/spl-token");var Ca=P(require("bn.js"));var Ba=require("@solana/web3.js"),Sa=P(require("bn.js"));var yy=W("Raydium.farm.util");var Fy=W("Raydium_farm_instruction"),vy={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])};var _a=P(require("bn.js"));var ms=require("@solana/web3.js"),tn=require("@solana/spl-token");var te=P(require("bn.js")),Pt=1e4;function $t(r,e){let{div:t,mod:o}=r.divmod(e);return o.gt(new te.default(0))?t.add(new te.default(1)):t}function Fe(r,e){if(r.isZero())return new te.default(0);let t=r.div(e);return t.isZero()?new te.default(1):r.mod(e).gt(new te.default(0))?t.add(new te.default(1)):t}function At(r,e,t){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let o=Math.floor(t/432e3),i=o<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,s=new te.default(i.maximumFee.toString()),c=o<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*432e3-t)*400/1e3:void 0,l=$t(r.mul(new te.default(i.transferFeeBasisPoints)),new te.default(Pt)),f=l.gt(s)?s:l;return{amount:r,fee:f,expirationTime:c}}function $e(r,e,t){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let o=Math.floor(t/432e3),i=o<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,s=new te.default(i.maximumFee.toString()),c=o<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*432e3-t)*400/1e3:void 0;if(i.transferFeeBasisPoints===Pt){let l=new te.default(i.maximumFee.toString());return{amount:r.add(l),fee:l,expirationTime:c}}else{let l=$t(r.mul(new te.default(Pt)),new te.default(Pt-i.transferFeeBasisPoints)),f=new te.default(i.maximumFee.toString()),y=l.sub(r).gt(f)?r.add(f):l,p=$t(y.mul(new te.default(i.transferFeeBasisPoints)),new te.default(Pt)),A=p.gt(s)?s:p;return{amount:y,fee:A,expirationTime:c}}}var vn=P(require("bn.js")),Ea=new vn.default(25),Da=new vn.default(1e4);var ei=require("@solana/spl-token"),Jt=require("@solana/web3.js");var Ya=P(require("bn.js"));var Wa=d([m("instruction"),n("amountIn"),n("minAmountOut")]),qa=d([m("instruction"),n("maxAmountIn"),n("amountOut")]),Ob=d([m("instruction"),m("nonce")]),Ua=d([m("instruction"),m("nonce"),n("startTime")]),Jo=d([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"),v("swapBaseInAmount"),v("swapQuoteOutAmount"),n("swapBase2QuoteFee"),v("swapQuoteInAmount"),v("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")]),Nb=d([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"),v("swapBaseInAmount"),v("swapQuoteOutAmount"),v("swapQuoteInAmount"),v("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")]),Ga=d([m("instruction"),n("baseAmountIn"),n("quoteAmountIn"),n("fixedSide"),n("otherAmountMin")]),za=d([m("instruction"),n("lpAmount"),n("baseAmountMin"),n("quoteAmountMin")]);var Xa=d([n("fee")]);var Ub=W("Raydium_liquidity_instruction");var Qa=5e4,Za=d([n("x"),n("y"),n("price")]),Yb=d([n("accountType"),n("status"),n("multiplier"),n("validDataCount"),b(Za,Qa,"DataElement")]);var ja=require("@solana/web3.js"),$a=P(require("decimal.js")),Ja=require("@solana/spl-token");var Ha=require("@solana/web3.js");var $b=W("Raydium_liquidity_serum");var ds=P(require("bn.js")),ps=P(require("decimal.js"));var os=require("@solana/spl-token"),is=require("@solana/web3.js"),rs=P(require("bn.js"));var en=require("@solana/web3.js"),ti=require("@solana/spl-token");function es(r="accountFlags"){let e=new Et(r);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var ts=d([V(5),es("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"),V(7)]);var ws=require("@solana/web3.js"),wt=require("@solana/spl-token");var ys=P(require("bn.js"));var ni=P(require("bn.js"));var pP=new ni.default(0);var fs=P(require("bn.js"));var oi=P(require("bn.js")),we=new oi.default(1e6);var ks=P(require("bn.js")),Ts=P(require("decimal.js"));var nn=require("@solana/web3.js"),_n=require("@solana/spl-token");var KP=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),xP=Buffer.from("amm_config","utf8"),CP=Buffer.from("pool","utf8"),RP=Buffer.from("pool_lp_mint","utf8"),LP=Buffer.from("pool_vault","utf8"),OP=Buffer.from("observation","utf8"),NP=Buffer.from("permission","utf8"),MP=Buffer.from("support_mint","utf8");var FP=Buffer.from("locked_liquidity","utf8");var XP=W("Raydium_cpmm"),YP={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 gs=d([V(8),m("bump"),me("disableCreatePool"),H("index"),n("tradeFeeRate"),n("protocolFeeRate"),n("fundFeeRate"),n("createPoolFee"),a("protocolOwner"),a("fundOwner"),n("creatorFeeRate"),b(n(),15)]),ii=d([V(8),a("configId"),a("poolCreator"),a("vaultA"),a("vaultB"),a("mintLp"),a("mintA"),a("mintB"),a("mintProgramA"),a("mintProgramB"),a("observationId"),m("bump"),m("status"),m("lpDecimals"),m("mintDecimalA"),m("mintDecimalB"),n("lpAmount"),n("protocolFeesMintA"),n("protocolFeesMintB"),n("fundFeesMintA"),n("fundFeesMintB"),n("openTime"),n("epoch"),m("feeOn"),me("enableCreatorFee"),b(m(),6),n("creatorFeesMintA"),n("creatorFeesMintB"),b(n(),28)]),HP=d([V(8),a("configId"),b(n(),30)]);var mi=require("@solana/web3.js"),tt=require("@solana/spl-token"),di=P(require("bn.js")),Vs=P(require("decimal.js"));var En=require("@solana/spl-token"),ui=require("@solana/web3.js"),ci=P(require("bn.js"));var hs=d([n(),n("epoch"),m("curveType"),H("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)]),Is=d([n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod"),n("startTime"),n("totalAllocatedShare")]),Bs=d([n(),n("epoch"),m("bump"),m("status"),m("mintDecimalsA"),m("mintDecimalsB"),m("migrateType"),n("supply"),n("totalSellA"),n("virtualA"),n("virtualB"),n("realA"),n("realB"),n("totalFundRaisingB"),n("protocolFee"),n("platformFee"),n("migrateFee"),Is.replicate("vestingSchedule"),a("configId"),a("platformId"),a("mintA"),a("mintB"),a("vaultA"),a("vaultB"),a("creator"),m("mintProgramFlag"),m("cpmmCreatorFeeOn"),n("platformVestingShare"),b(m(),54)]),cw=d([n(),n("epoch"),a("poolId"),a("beneficiary"),n("claimedAmount"),n("tokenShareAmount"),b(n(),8)]),ai=d([m("migrateType"),m("migrateCpmmFeeOn"),n("supply"),n("totalSellA"),n("totalFundRaisingB"),n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod")]),Ss=d([n("epoch"),m("index"),a("configId"),ai.replicate("bondingCurveParam"),b(n(),50)]),si=d([n(),n("epoch"),a("platformClaimFeeWallet"),a("platformLockNftWallet"),n("platformScale"),n("creatorScale"),n("burnScale"),n("feeRate"),b(m(),64,"name"),b(m(),256,"web"),b(m(),256,"img"),a("cpConfigId"),n("creatorFeeRate"),a("transferFeeExtensionAuth"),a("platformVestingWallet"),n("platformVestingScale"),a("platformCpCreator"),m("restrictGlobalConfig"),b(m(),107),ko(Ss,"platformCurve")]);var fw=Buffer.from("vault_auth_seed","utf8"),yw=Buffer.from("global_config","utf8"),bw=Buffer.from("pool_vesting","utf8"),gw=Buffer.from("platform_config","utf8"),Pw=Buffer.from("platform_fee_vault_auth_seed","utf8"),Aw=Buffer.from("creator_fee_vault_auth_seed","utf8"),ww=Buffer.from("platform_global_access","utf8"),kw=Buffer.from("platform_allow_config","utf8");var Lw={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 Ow=new ci.default("18446744073709551615");var li=require("@solana/spl-token");var kt=P(require("bn.js")),Je=P(require("decimal.js"));var Ke=class{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:o}){throw Error()}static getPoolInitPriceByInit({a:e,b:t,decimalA:o,decimalB:i}){throw Error()}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:o}){throw Error()}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:o,totalFundRaising:i,migrateFee:s,decimalA:c,decimalB:l}){throw Error()}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:o}){throw Error()}static getInitParam({supply:e,totalFundRaising:t,totalSell:o,totalLockedAmount:i,migrateFee:s}){throw Error()}static buyExactIn({poolInfo:e,amount:t}){throw Error()}static buyExactOut({poolInfo:e,amount:t}){throw Error()}static sellExactIn({poolInfo:e,amount:t}){throw Error()}static sellExactOut({poolInfo:e,amount:t}){throw Error()}};var on=class extends Ke{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:o}){return new Je.default(e.virtualB.toString()).div(e.virtualA.toString()).mul(10**(t-o))}static getPoolInitPriceByInit({a:e,b:t,decimalA:o,decimalB:i}){return new Je.default(t.toString()).div(e.toString()).mul(10**(o-i))}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:o}){return new Je.default(e.virtualB.add(e.realB).toString()).div(e.virtualA.sub(e.realA).toString()).mul(10**(t-o))}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:o,totalFundRaising:i,migrateFee:s,decimalA:c,decimalB:l}){return new Je.default(i.sub(s).toString()).div(e.sub(t).sub(o).toString()).mul(10**(c-l))}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:o}){let i=e.totalSellA.sub(e.realA),s=e.totalFundRaisingB.sub(e.realB);return new Je.default(e.virtualB.add(e.realB.add(s)).toString()).div(e.virtualA.sub(e.realA.add(i)).toString()).mul(10**(t-o))}static getInitParam({supply:e,totalFundRaising:t,totalSell:o,totalLockedAmount:i,migrateFee:s}){if(e.lte(o))throw Error("supply need gt total sell");let c=e.sub(o).sub(i);if(c.lte(new kt.default(0)))throw Error("supplyMinusSellLocked <= 0");let l=t.sub(s);if(l.lte(new kt.default(0)))throw Error("tfMinusMf <= 0");let f=l.mul(o).mul(o).div(c),y=l.mul(o).div(c).sub(t),p=f.div(y),A=t.mul(t).div(y);if(p.lt(new kt.default(0))||A.lt(new kt.default(0)))throw Error("invalid input 0");return{a:p,b:A,c:o}}static buyExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,inputReserve:e.virtualB.add(e.realB),outputReserve:e.virtualA.sub(e.realA)})}static buyExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,inputReserve:e.virtualB.add(e.realB),outputReserve:e.virtualA.sub(e.realA)})}static sellExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,inputReserve:e.virtualA.sub(e.realA),outputReserve:e.virtualB.add(e.realB)})}static sellExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,inputReserve:e.virtualA.sub(e.realA),outputReserve:e.virtualB.add(e.realB)})}static getAmountOut({amountIn:e,inputReserve:t,outputReserve:o}){let i=e.mul(o),s=t.add(e);return i.div(s)}static getAmountIn({amountOut:e,inputReserve:t,outputReserve:o}){let i=t.mul(e),s=o.sub(e);return Fe(i,s)}};var Tt=P(require("bn.js")),et=P(require("decimal.js"));var rn=class extends Ke{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:o}){return new et.default(e.virtualB.toString()).div(e.virtualA.toString()).mul(10**(t-o))}static getPoolInitPriceByInit({a:e,b:t,decimalA:o,decimalB:i}){return new et.default(t.toString()).div(e.toString()).mul(10**(o-i))}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:o}){return new et.default(e.virtualB.toString()).div(e.virtualA.toString()).mul(10**(t-o))}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:o,totalFundRaising:i,migrateFee:s,decimalA:c,decimalB:l}){return new et.default(i.sub(s).toString()).div(e.sub(t).sub(o).toString()).mul(10**(c-l))}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:o}){let i=e.totalSellA.sub(e.realA),s=e.totalFundRaisingB.sub(e.realB);return new et.default(e.virtualB.add(e.realB).add(s).toString()).div(e.virtualA.sub(e.realA).add(i).toString()).mul(10**(t-o))}static getInitParam({supply:e,totalFundRaising:t,totalSell:o,totalLockedAmount:i,migrateFee:s}){let c=e.sub(i);if(c.lte(new Tt.default(0)))throw Error("invalid input 1");let l=new Tt.default(2).mul(t).sub(s),y=t.mul(c).div(l);if(y.lt(new Tt.default(0))||t.lt(new Tt.default(0)))throw Error("invalid input 0");return{a:y,b:t,c:y}}static buyExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,initInput:e.virtualB,initOutput:e.virtualA})}static buyExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,initInput:e.virtualB,initOutput:e.virtualA})}static sellExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,initInput:e.virtualA,initOutput:e.virtualB})}static sellExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,initInput:e.virtualA,initOutput:e.virtualB})}static getAmountOut({amountIn:e,initInput:t,initOutput:o}){return o.mul(e).div(t)}static getAmountIn({amountOut:e,initInput:t,initOutput:o}){let i=t.mul(e);return Fe(i,o)}};var Dn=P(require("bn.js")),an=P(require("decimal.js")),ht=class{static _multipler(e){return new an.default(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:o}){return new an.default(e.toString()).div(this._Q64).mul(this._multipler(t)).div(this._multipler(o))}static getPriceX64({price:e,decimalA:t,decimalB:o}){let i=e.mul(this._multipler(o)).div(this._multipler(t));return new Dn.default(i.mul(this._Q64).toFixed(0))}};ht._Q64=new an.default(new Dn.default(1).shln(64).toString());var ue=P(require("bn.js")),xe=P(require("decimal.js"));var sn=class extends Ke{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:o}){return new xe.default(0)}static getPoolInitPriceByInit({a:e,b:t,decimalA:o,decimalB:i}){return new xe.default(0)}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:o}){return new xe.default(e.virtualA.mul(e.realA).toString()).div(ht._Q64).mul(10**(t-o))}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:o,totalFundRaising:i,migrateFee:s,decimalA:c,decimalB:l}){return new xe.default(i.sub(s).toString()).div(e.sub(t).sub(o).toString()).mul(10**(c-l))}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:o}){let i=e.totalSellA.sub(e.realA),s=e.totalFundRaisingB.sub(e.realB);return new xe.default(e.virtualB.add(e.realB).add(s).toString()).div(e.virtualA.sub(e.realA).add(i).toString()).mul(10**(t-o))}static getInitParam({supply:e,totalFundRaising:t,totalSell:o,totalLockedAmount:i,migrateFee:s}){let c=e.sub(i);if(c.lte(new ue.default(0)))throw Error("supplyMinusLocked need gt 0");let l=t.mul(new ue.default(3)).sub(s),y=t.mul(new ue.default(2)).mul(c).div(l),p=y.mul(y),A=t.mul(new ue.default(2)).mul(fe).div(p);if(!A.gt(new ue.default(0)))throw Error("a need gt 0");if(!Gt.gt(A))throw Error("a need lt u64 max");if(A.lt(new ue.default(0))||y.lt(new ue.default(0)))throw Error("invalid input 0");return{a:A,b:new ue.default(0),c:y}}static buyExactIn({poolInfo:e,amount:t}){let o=e.realB.add(t),i=new ue.default(2).mul(o).mul(fe).div(e.virtualA);return new ue.default(new xe.default(i.toString()).sqrt().toFixed(0)).sub(e.realA)}static buyExactOut({poolInfo:e,amount:t}){let o=e.realA.add(t),i=o.mul(o);return Fe(e.virtualA.mul(i),new ue.default(2).mul(fe)).sub(e.realB)}static sellExactIn({poolInfo:e,amount:t}){let o=e.realA.sub(t),i=o.mul(o),s=Fe(e.virtualA.mul(i),new ue.default(2).mul(fe));return e.realB.sub(s)}static sellExactOut({poolInfo:e,amount:t}){let o=e.realB.sub(t),i=new ue.default(2).mul(o).mul(fe).div(e.virtualA),s=new ue.default(new xe.default(i.toString()).sqrt().toFixed(0));return e.realA.sub(s)}};var ve=require("@solana/spl-token"),Z=P(require("bn.js")),Wn=require("@solana/web3.js");var Os=P(require("decimal.js")),iT={initPriceX64:new Z.default("515752397214619"),supply:new Z.default(1e15),totalSellA:new Z.default(7931e11),totalFundRaisingB:new Z.default(85e9),totalFundRaisingBUSD:new Z.default(125e8),totalLockedAmount:new Z.default("0"),cliffPeriod:new Z.default("0"),unlockPeriod:new Z.default("0"),decimals:6,virtualA:new Z.default("1073471847374405"),virtualB:new Z.default("30050573465"),realA:new Z.default(0),realB:new Z.default(0),protocolFee:new Z.default(0),platformId:new Wn.PublicKey("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new Z.default(0),cliffPeriod:new Z.default(0),unlockPeriod:new Z.default(0),startTime:new Z.default(0),totalAllocatedShare:new Z.default(0)}},rT=new Z.default(1e4);var Ns={[Co.toBase58()]:3};var Ms=d([V(5),V(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"),V(7)]);var Fs=require("@solana/web3.js");var LT=W("Serum");var qn=require("@solana/spl-token"),Un=require("@solana/web3.js"),vs=P(require("bn.js"));var Kh=new di.default(0);var Ce=require("@solana/web3.js"),pi=require("@solana/spl-token"),Gn=P(require("bn.js"));var re=class extends le{static getPdaPoolId(e,t){return Pe([re.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,o,i){return Pe([re.SEED_CONFIG.owner.id,t.toBuffer(),o.toBuffer(),Buffer.from(new Gn.default(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:o,wallet:i,chainTime:s}){if(o.length===0)return[];let c=o.map(p=>re.getPdaPoolId(t,p).publicKey),l=[];for(let p=0;p<re.VERSION_PROJECT.length;p++)l.push(...c.map(A=>re.getPdaOwnerId(t,A,i,p).publicKey));let f=await he(e,[...c,...l]),y=[];for(let p=0;p<f.length;p++){let A=Math.floor(p/o.length),T=p%o.length,h=c[T],S=l[p],w=f[T],B=f[o.length+p];if(!(w&&B)||w.data.length!==re.POOL_LAYOUT.span||B.data.length!==re.OWNER_LAYOUT.span)continue;let I=re.POOL_LAYOUT.decode(w.data),k=re.OWNER_LAYOUT.decode(B.data),L=I.openTime.toNumber(),M=I.endTime.toNumber(),g=k.tokenInfo.map(O=>O.debtAmount.gt(new Gn.default(0))).filter(O=>!O).length!==3,K=s>L&&s<M&&I.status===1,C=g&&K;y.push({programId:t,poolId:h,ammId:I.ammId,ownerAccountId:S,snapshotLpAmount:k.lpAmount,project:re.VERSION_PROJECT[A],openTime:L,endTime:M,canClaim:C,canClaimErrorType:g?K?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:I.tokenInfo.map((O,N)=>({mintAddress:O.mintAddress,mintVault:O.mintVault,mintDecimals:O.mintDecimals,perLpLoss:O.perLpLoss,debtAmount:k.tokenInfo[N].debtAmount.add(k.tokenInfo[N].claimedAmount)}))})}return y}async makeClaimTransaction({poolInfo:e,ownerInfo:t,feePayer:o}){t.wallet||this.scope.checkOwner();let i=this.createTxBuilder(o),s=t.wallet||this.scope.ownerPubKey,c=[];for(let y of e.tokenInfo){let{account:p,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({mint:y.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:y.mintAddress.equals(oe.WSOL.mint),createInfo:{payer:s,amount:0},skipCloseAccount:!y.mintAddress.equals(oe.WSOL.mint),associatedOnly:y.mintAddress.equals(oe.WSOL.mint)?!1:t.associatedOnly});A&&i.addInstruction(A),c.push(p)}i.addInstruction({instructions:[re.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:s,ownerPda:e.ownerAccountId,claimAddress:c}})]});let{transaction:l,signers:f}=i.build();return[{transaction:l,signer:f}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:o}){let i=this.createTxBuilder(o),s=t.wallet||this.scope.ownerPubKey,c={};for(let p of e){let A=[];for(let T of p.tokenInfo){let{account:h,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:T.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:T.mintAddress.equals(oe.WSOL.mint),createInfo:{payer:s,amount:0},skipCloseAccount:!T.mintAddress.equals(oe.WSOL.mint),associatedOnly:T.mintAddress.equals(oe.WSOL.mint)?!1:t.associatedOnly});S&&i.addInstruction(S),h&&(c[T.mintAddress.toString()]=h,A.push(h))}i.addInstruction({instructions:[re.makeClaimInstruction({programId:p.programId,poolInfo:p,ownerInfo:{wallet:s,ownerPda:p.ownerAccountId,claimAddress:A}})]})}let{transaction:l,signers:f}=i.build(),y=i.allInstructions;return wn(y,[s,...f.map(p=>p.publicKey)])?[{transaction:l,signer:f}]:[{transaction:new Ce.Transaction().add(...y.slice(0,i.AllTxData.instructions.length-1)),signer:f},{transaction:new Ce.Transaction().add(...y.slice(i.AllTxData.instructions.length-1)),signer:[]},{transaction:new Ce.Transaction().add(...i.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:o}){let i=d([]),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(f=>({pubkey:f,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:f})=>({pubkey:f,isSigner:!1,isWritable:!0})),{pubkey:pi.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1}],c=Buffer.alloc(i.span);i.encode({},c);let l=Buffer.from([10,66,208,184,161,6,191,98,...c]);return new Ce.TransactionInstruction({keys:s,programId:e,data:l})}},ye=re;ye.CLAIMED_NUM=3,ye.POOL_LAYOUT=d([V(8),m("bump"),m("status"),n("openTime"),n("endTime"),a("ammId"),b(d([m("mintDecimals"),a("mintAddress"),a("mintVault"),n("perLpLoss"),n("totalClaimedAmount")]),re.CLAIMED_NUM,"tokenInfo"),b(n(),10,"padding")]),ye.OWNER_LAYOUT=d([V(8),m("bump"),m("version"),a("poolId"),a("owner"),n("lpAmount"),b(d([a("mintAddress"),n("debtAmount"),n("claimedAmount")]),re.CLAIMED_NUM,"tokenInfo"),b(n(),4,"padding")]),ye.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Ce.PublicKey(e)),ye.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},ye.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];var _s=require("@solana/web3.js"),It=require("@solana/spl-token");var uB=new Be.default(2),cB=new Be.default(3),lB=new Be.default(5),Ci=new Be.default(10),mB=new Be.default(100),dB=new Be.default(1e3),pB=new Be.default(1e4);function Vn(r,e,t){return r.mul(e).add(t).sub(new Be.default(1)).div(t)}function mn(r,e=1,t=[]){let o=[...r];if(e<=0)return t;for(;o.length;)t.push(o.splice(0,e));return t}var Ve=class{static getPoolCurvePointByPoolInfo({curveType:e,pointCount:t,poolInfo:o}){return this.getPoolCurvePointByInit({curveType:e,pointCount:t,supply:o.supply,totalFundRaising:o.totalFundRaisingB,totalSell:o.totalSellA,totalLockedAmount:o.vestingSchedule.totalLockedAmount,migrateFee:o.migrateFee,decimalA:o.mintDecimalsA,decimalB:o.mintDecimalsB})}static getPoolCurvePointByInit({curveType:e,pointCount:t,supply:o,totalFundRaising:i,totalSell:s,totalLockedAmount:c,migrateFee:l,decimalA:f,decimalB:y}){if(t<3)throw Error("point count < 3");let p=this.getCurve(e),A=p.getInitParam({supply:o,totalFundRaising:i,totalSell:s,totalLockedAmount:c,migrateFee:l}),T=p.getPoolInitPriceByInit(D(F({},A),{decimalA:f,decimalB:y})),h=i.div(new ce.default(t-1)),S=new ce.default(0),w=[{price:T,totalSellSupply:0}],{a:B,b:I}=A,k=S,L=S;for(let M=1;M<t;M++){let g=M!==t-1?h:i.sub(L),K=this.buyExactIn({poolInfo:{virtualA:B,virtualB:I,realA:k,realB:L,totalFundRaisingB:i,totalSellA:s},amountB:g,protocolFeeRate:S,platformFeeRate:S,curveType:e,shareFeeRate:S,creatorFeeRate:S,transferFeeConfigA:void 0,transferFeeConfigB:void 0,slot:0});k=k.add(K.amountA.amount),L=L.add(K.amountB);let C=this.getPrice({poolInfo:{virtualA:B,virtualB:I,realA:k,realB:L},decimalA:f,decimalB:y,curveType:e});w.push({price:C,totalSellSupply:new zn.default(k.toString()).div(10**f).toNumber()})}return w}static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:o,curveType:i}){return this.getCurve(i).getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:o})}static getPoolInitPriceByInit({a:e,b:t,decimalA:o,decimalB:i,curveType:s}){return this.getCurve(s).getPoolInitPriceByInit({a:e,b:t,decimalA:o,decimalB:i})}static getPrice({poolInfo:e,curveType:t,decimalA:o,decimalB:i}){return this.getCurve(t).getPoolPrice({poolInfo:e,decimalA:o,decimalB:i})}static getEndPrice({poolInfo:e,curveType:t,decimalA:o,decimalB:i}){return this.getCurve(t).getPoolPrice({poolInfo:e,decimalA:o,decimalB:i})}static getPoolEndPriceReal({poolInfo:e,curveType:t,decimalA:o,decimalB:i}){return this.getCurve(t).getPoolEndPriceReal({poolInfo:e,decimalA:o,decimalB:i})}static checkParam({supply:e,totalFundRaising:t,totalSell:o,totalLockedAmount:i,decimals:s,config:c,migrateType:l}){if(Number(s)!==6)throw Error("decimals = 6");if(e.mul(c.maxLockRate).div(we).lt(i))throw Error("total lock amount gte max lock amount");if(e.lt(c.minSupplyA.mul(new ce.default(10**s))))throw Error("supply lt min supply");let y=e.mul(c.minSellRateA).div(we);if(o.lt(y))throw Error("invalid input");if(t.lt(c.minFundRaisingB))throw Error("total fund raising lt min fund raising");let p=e.sub(o).sub(i),A=e.mul(c.minMigrateRateA).div(we);if(p.lt(A))throw Error("migrate lt min migrate amoount");let T=e.sub(o).sub(i),h=new ce.default(new zn.default(T.mul(t).toString()).sqrt().toFixed(0));if(l==="amm"){let S=new ce.default(10).pow(new ce.default(s));if(h.lte(S))throw Error("check migrate lp error")}else if(l==="cpmm"){let S=new ce.default(100);if(h.lte(S))throw Error("check migrate lp error")}else throw Error("migrate type error")}static buyExactIn({poolInfo:e,amountB:t,protocolFeeRate:o,platformFeeRate:i,curveType:s,shareFeeRate:c,creatorFeeRate:l,transferFeeConfigA:f,transferFeeConfigB:y,slot:p}){var O;let A=At(t,y,p),T=t.sub((O=A.fee)!=null?O:new ce.default(0)),h=this.totalFeeRate({protocolFeeRate:o,platformFeeRate:i,shareFeeRate:c,creatorFeeRate:l}),S=this.calculateFee({amount:T,feeRate:h}),w=T.sub(S),B=this.getCurve(s),I=B.buyExactIn({poolInfo:e,amount:w}),k=e.totalSellA.sub(e.realA),L,M,g,K;if(I.gt(k)){L=k;let N=B.buyExactOut({poolInfo:e,amount:L}),_=this.calculatePreFee({postFeeAmount:N,feeRate:h});g=_.sub(N);let ne=$e(_,y,p);M=ne.amount,K=ne.fee}else L=I,M=t,g=S,K=A.fee;let C=this.splitFee({totalFee:g,protocolFeeRate:o,platformFeeRate:i,shareFeeRate:c,creatorFeeRate:l});return{amountA:At(L,f,p),amountB:M,splitFee:C,transferFeeB:K}}static buyExactOut({poolInfo:e,amountA:t,protocolFeeRate:o,platformFeeRate:i,curveType:s,shareFeeRate:c,creatorFeeRate:l,transferFeeConfigA:f,transferFeeConfigB:y,slot:p}){let A=e.totalSellA.sub(e.realA),T=$e(t,f,p),h=T.fee?T.amount.add(T.fee):T.amount;t.gt(A)&&(h=A);let w=this.getCurve(s).buyExactOut({poolInfo:e,amount:h}),B=this.totalFeeRate({protocolFeeRate:o,platformFeeRate:i,shareFeeRate:c,creatorFeeRate:l}),I=this.calculatePreFee({postFeeAmount:w,feeRate:B}),k=I.sub(w),L=$e(I,y,p),M=this.splitFee({totalFee:k,protocolFeeRate:o,platformFeeRate:i,shareFeeRate:c,creatorFeeRate:l});return{amountA:T,amountB:L.amount,splitFee:M,transferFeeB:L.fee}}static sellExactIn({poolInfo:e,amountA:t,protocolFeeRate:o,platformFeeRate:i,curveType:s,shareFeeRate:c,creatorFeeRate:l,transferFeeConfigA:f,transferFeeConfigB:y,slot:p}){var L;let A=this.getCurve(s),T=At(t,f,p),h=T.fee?T.amount.sub(T.fee):T.amount,S=A.sellExactIn({poolInfo:e,amount:h}),w=this.calculateFee({amount:S,feeRate:this.totalFeeRate({protocolFeeRate:o,platformFeeRate:i,shareFeeRate:c,creatorFeeRate:l})}),B=this.splitFee({totalFee:w,protocolFeeRate:o,platformFeeRate:i,shareFeeRate:c,creatorFeeRate:l}),I=S.sub(w),k=At(I,y,p);return{amountA:T,amountB:I.sub((L=k.fee)!=null?L:new ce.default(0)),splitFee:B,transferFeeB:k.fee}}static sellExactOut({poolInfo:e,amountB:t,protocolFeeRate:o,platformFeeRate:i,curveType:s,shareFeeRate:c,creatorFeeRate:l,transferFeeConfigA:f,transferFeeConfigB:y,slot:p}){let A=this.totalFeeRate({protocolFeeRate:o,platformFeeRate:i,shareFeeRate:c,creatorFeeRate:l}),T=$e(t,y,p),h=T.amount,S=this.calculatePreFee({postFeeAmount:h,feeRate:A});if(e.realB.lt(S))throw Error("Insufficient liquidity");let w=S.sub(h),I=Ve.getCurve(s).sellExactOut({poolInfo:e,amount:S});if(I.gt(e.realA))throw Error();let k=this.splitFee({totalFee:w,protocolFeeRate:o,platformFeeRate:i,shareFeeRate:c,creatorFeeRate:l});return{amountA:$e(I,f,p),amountB:t,splitFee:k,transferFeeB:T.fee}}static splitFee({totalFee:e,protocolFeeRate:t,platformFeeRate:o,shareFeeRate:i,creatorFeeRate:s}){let c=this.totalFeeRate({protocolFeeRate:t,platformFeeRate:o,shareFeeRate:i,creatorFeeRate:s}),l=c.isZero()?new ce.default(0):e.mul(o).div(c),f=c.isZero()?new ce.default(0):e.mul(i).div(c),y=c.isZero()?new ce.default(0):e.mul(s).div(c),p=e.sub(l).sub(f).sub(y);return{platformFee:l,shareFee:f,protocolFee:p,creatorFee:y}}static calculateFee({amount:e,feeRate:t}){return Vn(e,t,we)}static calculatePreFee({postFeeAmount:e,feeRate:t}){if(t.isZero())return e;let o=e.mul(we),i=we.sub(t);return o.add(i).sub(new ce.default(1)).div(i)}static totalFeeRate({protocolFeeRate:e,platformFeeRate:t,shareFeeRate:o,creatorFeeRate:i}){if(e.add(t).add(o).add(i).gt(new ce.default(1e6)))throw Error("total fee rate gt 1_000_000");return e.add(t).add(o).add(i)}static getCurve(e){switch(e){case 0:return on;case 1:return rn;case 2:return sn}throw Error("find curve error")}};0&&(module.exports={Curve});
//# sourceMappingURL=curve.js.map