UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

2 lines 87.5 kB
var ki=Object.create;var it=Object.defineProperty,Ti=Object.defineProperties,hi=Object.getOwnPropertyDescriptor,Ii=Object.getOwnPropertyDescriptors,Bi=Object.getOwnPropertyNames,St=Object.getOwnPropertySymbols,Si=Object.getPrototypeOf,sn=Object.prototype.hasOwnProperty,Yn=Object.prototype.propertyIsEnumerable;var Xn=(r,e,t)=>e in r?it(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,N=(r,e)=>{for(var t in e||(e={}))sn.call(e,t)&&Xn(r,t,e[t]);if(St)for(var t of St(e))Yn.call(e,t)&&Xn(r,t,e[t]);return r},q=(r,e)=>Ti(r,Ii(e));var we=(r,e)=>{var t={};for(var o in r)sn.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&&Yn.call(r,o)&&(t[o]=r[o]);return t};var Ki=(r,e)=>{for(var t in e)it(r,t,{get:e[t],enumerable:!0})},Qn=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Bi(e))!sn.call(r,i)&&i!==t&&it(r,i,{get:()=>e[i],enumerable:!(o=hi(e,i))||o.enumerable});return r};var g=(r,e,t)=>(t=r!=null?ki(Si(r)):{},Qn(e||!r||!r.__esModule?it(t,"default",{value:r,enumerable:!0}):t,r)),xi=r=>Qn(it({},"__esModule",{value:!0}),r);var zs={};Ki(zs,{SwapMathUtil:()=>Zt,SwapState:()=>Qt});module.exports=xi(zs);var Hn=require("@solana/web3.js");var rt=require("lodash");var un=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(o=>typeof o=="object"?JSON.stringify(o):o).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},Zn={},Ci={};function W(r){let e=(0,rt.get)(Zn,r);if(!e){let t=(0,rt.get)(Ci,r);e=new un({name:r,logLevel:t}),(0,rt.set)(Zn,r,e)}return e}var Kt=require("@solana/spl-token"),cn=W("Raydium_accountInfo_util");async function Ke(r,e,t){let{batchRequest:o,commitment:i="confirmed",chunkCount:a=100}=N({batchRequest:!1},t),u=ln(e,a),c=new Array(u.length).fill([]);if(o){let y=u.map(A=>{let k=r._buildArgs([A.map(h=>h.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:k}}),m=ln(y,10);c=(await(await Promise.all(m.map(async A=>await r._rpcBatchRequest(A)))).flat()).map(A=>(A.error&&cn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${A.error.message}`),A.result.value.map(k=>{if(k){let{data:h,executable:O,lamports:T,owner:I,rentEpoch:x}=k;return h.length!==2&&h[1]!=="base64"&&cn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(h[0],"base64"),executable:O,lamports:T,owner:new Hn.PublicKey(I),rentEpoch:x}}return null})))}else try{c=await Promise.all(u.map(y=>r.getMultipleAccountsInfo(y,i)))}catch(y){y instanceof Error&&cn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${y.message}`)}return c.flat()}var Me=g(require("bn.js")),Gs=g(require("decimal.js"));var to=g(require("big.js")),Mi=g(require("bn.js"));var jn=g(require("toformat")),Ri=jn.default,st=Ri;var ut=g(require("big.js")),Jn=g(require("bn.js")),eo=g(require("decimal.js-light"));var ze=g(require("bn.js"));var $n=9007199254740991;function me(r){let e=W("Raydium_parseBigNumberish");if(r instanceof ze.default)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new ze.default(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=$n||r<=-$n)&&e.logWithError(`BigNumberish number overflow: ${r}`),new ze.default(String(r))):typeof r=="bigint"?new ze.default(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new ze.default(0))}var xt=W("module/fraction"),mn=st(ut.default),ct=st(eo.default),Oi={[0]:ct.ROUND_DOWN,[1]:ct.ROUND_HALF_UP,[2]:ct.ROUND_UP},Ni={[0]:ut.default.roundDown,[1]:ut.default.roundHalfUp,[2]:ut.default.roundUp},Y=class{constructor(e,t=new Jn.default(1)){this.numerator=me(e),this.denominator=me(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new Y(this.denominator,this.numerator)}add(e){let t=e instanceof Y?e:new Y(me(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.add(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof Y?e:new Y(me(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.sub(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof Y?e:new Y(me(e));return new Y(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof Y?e:new Y(me(e));return new Y(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.`),ct.set({precision:e+1,rounding:Oi[o]});let i=new ct(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.`),mn.DP=e,mn.RM=Ni[o]||1,new mn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var bu=W("Raydium_amount"),gu=st(to.default);var no=require("@solana/web3.js"),dn=require("@solana/spl-token"),Ct={chainId:101,address:no.PublicKey.default.toBase58(),programId:dn.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"}},ke={chainId:101,address:"So11111111111111111111111111111111111111112",programId:dn.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 z=require("@solana/web3.js"),oo=require("@solana/spl-token");function Xe({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var vi=[Xe({pubkey:oo.TOKEN_PROGRAM_ID,isWritable:!1}),Xe({pubkey:z.SystemProgram.programId,isWritable:!1}),Xe({pubkey:z.SYSVAR_RENT_PUBKEY,isWritable:!1})];function io({publicKey:r,transformSol:e}){let t=ro(r.toString());if(t instanceof z.PublicKey)return e&&t.equals(ve)?xe:t;if(e&&t.toString()===ve.toBase58())return xe;if(typeof t=="string"){if(t===z.PublicKey.default.toBase58())return z.PublicKey.default;try{return new z.PublicKey(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function ro(r){try{return new z.PublicKey(r)}catch{return r}}var pn=new z.PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),lt=new z.PublicKey("SysvarRent111111111111111111111111111111111"),ku=new z.PublicKey("SysvarC1ock11111111111111111111111111111111"),Rt=new z.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Vi=new z.PublicKey("Sysvar1nstructions1111111111111111111111111"),_i=z.SystemProgram.programId,Tu=new z.PublicKey("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),hu=new z.PublicKey("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Iu=new z.PublicKey("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Bu=new z.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Su=new z.PublicKey("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ku=new z.PublicKey("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),xu=new z.PublicKey("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Cu=new z.PublicKey("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ru=new z.PublicKey("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Lu=new z.PublicKey("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Ou=new z.PublicKey("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),xe=new z.PublicKey("So11111111111111111111111111111111111111112"),ve=z.PublicKey.default;var fn=class{constructor({mint:e,decimals:t,symbol:o,name:i,skipMint:a=!1,isToken2022:u=!1}){if(e===ve.toBase58()||e instanceof Lt.PublicKey&&ve.equals(e)){this.decimals=ke.decimals,this.symbol=ke.symbol,this.name=ke.name,this.mint=new Lt.PublicKey(ke.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=a?Lt.PublicKey.default:io({publicKey:e}),this.isToken2022=u}equals(e){return this===e?!0:this.mint.equals(e.mint)}},se=fn;se.WSOL=new fn(q(N({},ke),{mint:ke.address}));var yn=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=yn;Ot.SOL=new yn(Ct);var ao=g(require("bn.js"));var qu=new Y(new ao.default(100));var Qu=W("Raydium_price");var Us=require("lodash");var Di=g(require("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"},Ei=q(N({},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 Ic=W("Raydium_Api");var Io=require("@solana/web3.js");var Ut=require("@solana/spl-token");var U=require("@solana/web3.js"),mo=g(require("axios"));var ge=require("@solana/web3.js");async function bn({connection:r,address:e,cluster:t="mainnet"}){let o=await Ke(r,[...new Set(e.map(a=>a.toString()))].map(a=>new ge.PublicKey(a))),i={};for(let a=0;a<e.length;a++){let u=o[a],c=e[a];if(!u)continue;let y=new ge.AddressLookupTableAccount({key:c,state:ge.AddressLookupTableAccount.deserialize(u.data)});i[c.toString()]=y,t==="devnet"?Qe[c.toString()]=y:Ye[c.toString()]=y}return i}var Ye={},gn=async r=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Ye[e])return Ye;let t=new ge.PublicKey(e),o=await r.getAccountInfo(t);return o&&(Ye[e]=new ge.AddressLookupTableAccount({key:t,state:ge.AddressLookupTableAccount.deserialize(o.data)})),Ye},Qe={},Pn=async r=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Qe[e])return Qe;let t=new ge.PublicKey(e),o=await r.getAccountInfo(t);return o&&(Qe[e]=new ge.AddressLookupTableAccount({key:t,state:ge.AddressLookupTableAccount.deserialize(o.data)})),Qe};var ie={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 ue=require("@solana/web3.js");var co=require("@solana/spl-token"),uo=W("Raydium_txUtil"),lo=1644;function Nt(r){let e=[],t=[];return r.microLamports&&(e.push(ue.ComputeBudgetProgram.setComputeUnitPrice({microLamports:r.microLamports})),t.push(ie.SetComputeUnitPrice)),r.units&&(e.push(ue.ComputeBudgetProgram.setComputeUnitLimit({units:r.units})),t.push(ie.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Ze(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,a=>{if(clearTimeout(i),!a.err){t("");return}o(Object.assign(a.err,{txId:e}))},"confirmed")})}function An(r,e){r.length<1&&uo.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&uo.logWithError(`no signers provided:, ${e.toString()}`);let t=new ue.Transaction;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<lo}catch{return!1}}function Te(r,e){let[t,o]=ue.PublicKey.findProgramAddressSync(r,e);return{publicKey:t,nonce:o}}function mt({instructions:r,payer:e,signers:t}){return An(r,[e,...t])}function dt({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:o=ue.Keypair.generate().publicKey.toString()}){let a=new ue.TransactionMessage({payerKey:e,recentBlockhash:o,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new ue.VersionedTransaction(a).serialize()).toString("base64").length<lo}catch{return!1}}var Wi=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r),qi=r=>{let e=r.serialize({requireAllSignatures:!1,verifySignatures:!1});r instanceof ue.VersionedTransaction&&(e=Wi(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Ve(r){let e=[];return r.forEach(t=>{t instanceof ue.Transaction&&(t.recentBlockhash||(t.recentBlockhash=co.TOKEN_PROGRAM_ID.toBase58()),t.feePayer||(t.feePayer=ue.Keypair.generate().publicKey)),e.push(qi(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 mo.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(U.SystemProgram.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new U.PublicKey(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(ie.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:a=[],lookupTableAddress:u=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...o),this.instructionTypes.push(...i),this.endInstructionTypes.push(...a),this.lookupTableAddress.push(...u.filter(c=>c!==U.PublicKey.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:o}){return e===0?await this.buildV0(q(N({},t||{}),{lookupTableAddress:o})):this.build(t)}build(e){var o;let t=new U.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 f;let{recentBlockHash:a,skipPreflight:u=!0,sendAndConfirm:c,notSendToRpc:y}=i||{},m=a!=null?a:await Ze(this.connection,this.blockhashCommitment);if(t.recentBlockhash=m,this.signers.length&&t.sign(...this.signers),Ve([t]),(f=this.owner)!=null&&f.isKeyPair)return{txId:c?await(0,U.sendAndConfirmTransaction)(this.connection,t,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:u}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:u}),signedTx:t};if(this.signAllTransactions){let A=await this.signAllTransactions([t]);if(this.signers.length)for(let k of A)try{k.sign(...this.signers)}catch{}return{txId:y?"":await this.connection.sendRawTransaction(A[0].serialize(),{skipPreflight:u}),signedTx:A[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var m;let{extraPreBuildData:t=[],extInfo:o}=e,{transaction:i}=this.build(o),a=t.filter(f=>f.transaction.instructions.length>0),u=[i,...a.map(f=>f.transaction)],c=[this.signers,...a.map(f=>f.signers)],y=[...this.instructionTypes,...a.map(f=>f.instructionTypes).flat()];return(m=this.owner)!=null&&m.signer&&c.forEach(f=>{f.some(A=>A.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:u,signers:c,instructionTypes:y,execute:async f=>{var x;let{sequentially:A,onTxUpdate:k,skipTxCount:h=0,recentBlockHash:O,skipPreflight:T=!0}=f||{},I=O!=null?O:await Ze(this.connection,this.blockhashCommitment);if((x=this.owner)!=null&&x.isKeyPair){if(A){let R=[],_=0;for(let E of u){if(++_,_<=h)continue;let P=await(0,U.sendAndConfirmTransaction)(this.connection,E,this.signers.find(B=>B.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:T});R.push(P)}return{txIds:R,signedTxs:u}}return{txIds:await await Promise.all(u.map(async R=>(R.recentBlockhash=I,await this.connection.sendRawTransaction(R.serialize(),{skipPreflight:T})))),signedTxs:u}}if(this.signAllTransactions){let R=u.map((E,P)=>(E.recentBlockhash=I,c[P].length&&E.sign(...c[P]),E));Ve(R);let _=await this.signAllTransactions(R);if(A){let E=0,P=[],B=async()=>{if(!_[E])return;let S=await this.connection.sendRawTransaction(_[E].serialize(),{skipPreflight:T});P.push({txId:S,status:"sent",signedTx:_[E]}),k==null||k([...P]),E++;let L=!1,M=null,D=null,pe=X=>{M!==null&&clearInterval(M),D!==null&&this.connection.removeSignatureListener(D);let G=P.findIndex(ae=>ae.txId===S);if(G>-1){if(P[G].status==="error"||P[G].status==="success")return;P[G].status=X.err?"error":"success"}k==null||k([...P]),X.err||B()};this.loopMultiTxStatus&&(M=setInterval(async()=>{var X;if(L){clearInterval(M);return}try{let G=await this.connection.getTransaction(S,{commitment:"confirmed",maxSupportedTransactionVersion:0});G&&(L=!0,clearInterval(M),pe({err:((X=G.meta)==null?void 0:X.err)||null}),console.log("tx status from getTransaction:",S))}catch(G){L=!0,clearInterval(M),console.error("getTransaction timeout:",G,S)}},Ft)),D=this.connection.onSignature(S,X=>{if(L){this.connection.removeSignatureListener(D);return}L=!0,pe(X)},"confirmed"),this.connection.getSignatureStatus(S)};return await B(),{txIds:P.map(S=>S.txId),signedTxs:_}}else{let E=[];for(let P=0;P<_.length;P+=1){let B=await this.connection.sendRawTransaction(_[P].serialize(),{skipPreflight:T});E.push(B)}return{txIds:E,signedTxs:_}}}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 T;let O=e||{},{lookupTableCache:t={},lookupTableAddress:o=[],forerunCreate:i,recentBlockhash:a}=O,u=we(O,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),c=N(N({},this.cluster==="devnet"?await Pn(this.connection):await gn(this.connection)),t),y=Array.from(new Set([...o,...this.lookupTableAddress])),m=[];for(let I of y)c[I]===void 0&&m.push(new U.PublicKey(I));let f=await bn({connection:this.connection,address:m});for(let[I,x]of Object.entries(f))c[I]=x;let A=i?U.PublicKey.default.toBase58():a!=null?a:await Ze(this.connection,this.blockhashCommitment),k=new U.TransactionMessage({payerKey:this.feePayer,recentBlockhash:A,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(c));((T=this.owner)==null?void 0:T.signer)&&!this.signers.some(I=>I.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let h=new U.VersionedTransaction(k);return h.sign(this.signers),{builder:this,transaction:h,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async I=>{var E;let{skipPreflight:x=!0,sendAndConfirm:R,notSendToRpc:_}=I||{};if(Ve([h]),(E=this.owner)!=null&&E.isKeyPair){let P=await this.connection.sendTransaction(h,{skipPreflight:x});return R&&await Mt(this.connection,P),{txId:P,signedTx:h}}if(this.signAllTransactions){let P=await this.signAllTransactions([h]);if(this.signers.length)for(let B of P)try{B.sign(this.signers)}catch{}return{txId:_?"":await this.connection.sendTransaction(P[0],{skipPreflight:x}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:u||{}}}async buildV0MultiTx(e){var m;let{extraPreBuildData:t=[],buildProps:o}=e,{transaction:i}=await this.buildV0(o),a=t.filter(f=>f.builder.instructions.length>0),u=[i,...a.map(f=>f.transaction)],c=[this.signers,...a.map(f=>f.signers)],y=[...this.instructionTypes,...a.map(f=>f.instructionTypes).flat()];return(m=this.owner)!=null&&m.signer&&c.forEach(f=>{f.some(A=>A.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),u.forEach(async(f,A)=>{f.sign(c[A])}),{builder:this,transactions:u,signers:c,instructionTypes:y,buildProps:o,execute:async f=>{var T;let{sequentially:A,onTxUpdate:k,recentBlockHash:h,skipPreflight:O=!0}=f||{};if(h&&u.forEach(I=>I.message.recentBlockhash=h),Ve(u),(T=this.owner)!=null&&T.isKeyPair){if(A){let I=[];for(let x of u){let R=await this.connection.sendTransaction(x,{skipPreflight:O});await Mt(this.connection,R),I.push(R)}return{txIds:I,signedTxs:u}}return{txIds:await Promise.all(u.map(async I=>await this.connection.sendTransaction(I,{skipPreflight:O}))),signedTxs:u}}if(this.signAllTransactions){let I=await this.signAllTransactions(u);if(A){let x=0,R=[],_=async()=>{if(!I[x])return;let E=await this.connection.sendTransaction(I[x],{skipPreflight:O});R.push({txId:E,status:"sent",signedTx:I[x]}),k==null||k([...R]),x++;let P=!1,B=null,S=null,L=M=>{B!==null&&clearInterval(B),S!==null&&this.connection.removeSignatureListener(S);let D=R.findIndex(pe=>pe.txId===E);if(D>-1){if(R[D].status==="error"||R[D].status==="success")return;R[D].status=M.err?"error":"success"}k==null||k([...R]),M.err||_()};this.loopMultiTxStatus&&(B=setInterval(async()=>{var M;if(P){clearInterval(B);return}try{let D=await this.connection.getTransaction(E,{commitment:"confirmed",maxSupportedTransactionVersion:0});D&&(P=!0,clearInterval(B),L({err:((M=D.meta)==null?void 0:M.err)||null}),console.log("tx status from getTransaction:",E))}catch(D){P=!0,clearInterval(B),console.error("getTransaction timeout:",D,E)}},Ft)),S=this.connection.onSignature(E,M=>{if(P){this.connection.removeSignatureListener(S);return}P=!0,L(M)},"confirmed"),this.connection.getSignatureStatus(E)};return _(),{txIds:[],signedTxs:I}}else{let x=[];for(let R=0;R<I.length;R+=1){let _=await this.connection.sendTransaction(I[R],{skipPreflight:O});x.push(_)}return{txIds:x,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var k;let A=e||{},{splitIns:t=[],computeBudgetConfig:o}=A,i=we(A,["splitIns","computeBudgetConfig"]),a=o?Nt(o):{instructions:[],instructionTypes:[]},u=this.signers.reduce((h,O)=>q(N({},h),{[O.publicKey.toBase58()]:O}),{}),c=[],y=[],m=[],f=0;if(this.allInstructions.forEach(h=>{let O=[...m,h],T=o?[...a.instructions,...O]:O,x=[...new Set(O.map(R=>R.keys.filter(_=>_.isSigner).map(_=>_.pubkey.toString())).flat()).values()].map(R=>new U.PublicKey(R));if(h!==t[f]&&m.length<12&&(mt({instructions:T,payer:this.feePayer,signers:x})||mt({instructions:O,payer:this.feePayer,signers:x})))m.push(h);else{if(m.length===0)throw Error("item ins too big");f+=h===t[f]?1:0,mt({instructions:o?[...a.instructions,...m]:[...m],payer:this.feePayer,signers:x})?c.push(new U.Transaction().add(...a.instructions,...m)):c.push(new U.Transaction().add(...m)),y.push(Array.from(new Set(m.map(R=>R.keys.filter(_=>_.isSigner).map(_=>_.pubkey.toString())).flat())).map(R=>u[R]).filter(R=>R!==void 0)),m=[h]}}),m.length>0){let O=[...new Set(m.map(T=>T.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat()).values()].map(T=>u[T]).filter(T=>T!==void 0);mt({instructions:o?[...a.instructions,...m]:[...m],payer:this.feePayer,signers:O.map(T=>T.publicKey)})?c.push(new U.Transaction().add(...a.instructions,...m)):c.push(new U.Transaction().add(...m)),y.push(O)}return c.forEach(h=>h.feePayer=this.feePayer),(k=this.owner)!=null&&k.signer&&y.forEach(h=>{h.some(O=>O.publicKey.equals(this.owner.publicKey))||h.push(this.owner.signer)}),{builder:this,transactions:c,signers:y,instructionTypes:this.instructionTypes,execute:async h=>{var E;let{sequentially:O,onTxUpdate:T,skipTxCount:I=0,recentBlockHash:x,skipPreflight:R=!0}=h||{},_=x!=null?x:await Ze(this.connection,this.blockhashCommitment);if(c.forEach(async(P,B)=>{P.recentBlockhash=_,y[B].length&&P.sign(...y[B])}),Ve(c),(E=this.owner)!=null&&E.isKeyPair){if(O){let P=0,B=[];for(let S of c){if(++P,P<=I){B.push("tx skipped");continue}let L=await(0,U.sendAndConfirmTransaction)(this.connection,S,this.signers.find(M=>M.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:R});B.push(L)}return{txIds:B,signedTxs:c}}return{txIds:await Promise.all(c.map(async P=>await this.connection.sendRawTransaction(P.serialize(),{skipPreflight:R}))),signedTxs:c}}if(this.signAllTransactions){let P=await this.signAllTransactions(c.slice(I,c.length)),B=[...c.slice(0,I),...P];if(O){let S=0,L=[],M=async()=>{if(!B[S])return;S<I&&(L.push({txId:"",status:"success",signedTx:B[S]}),T==null||T([...L]),S++,M());let D=await this.connection.sendRawTransaction(B[S].serialize(),{skipPreflight:R});L.push({txId:D,status:"sent",signedTx:B[S]}),T==null||T([...L]),S++;let pe=!1,X=null,G=null,ae=Q=>{X!==null&&clearInterval(X),G!==null&&this.connection.removeSignatureListener(G);let le=L.findIndex(Be=>Be.txId===D);if(le>-1){if(L[le].status==="error"||L[le].status==="success")return;L[le].status=Q.err?"error":"success"}T==null||T([...L]),Q.err||M()};this.loopMultiTxStatus&&(X=setInterval(async()=>{var Q;if(pe){clearInterval(X);return}try{let le=await this.connection.getTransaction(D,{commitment:"confirmed",maxSupportedTransactionVersion:0});le&&(pe=!0,clearInterval(X),ae({err:((Q=le.meta)==null?void 0:Q.err)||null}),console.log("tx status from getTransaction:",D))}catch(le){pe=!0,clearInterval(X),console.error("getTransaction timeout:",le,D)}},Ft)),G=this.connection.onSignature(D,Q=>{if(pe){this.connection.removeSignatureListener(G);return}pe=!0,ae(Q)},"confirmed"),this.connection.getSignatureStatus(D)};return await M(),{txIds:L.map(D=>D.txId),signedTxs:B}}else{let S=[];for(let L=0;L<B.length;L+=1){let M=await this.connection.sendRawTransaction(B[L].serialize(),{skipPreflight:R});S.push(M)}return{txIds:S,signedTxs:B}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var E;let _=e||{},{computeBudgetConfig:t,splitIns:o=[],lookupTableCache:i={},lookupTableAddress:a=[],insCountLimit:u=12}=_,c=we(_,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),y=N(N({},this.cluster==="devnet"?await Pn(this.connection):await gn(this.connection)),i),m=Array.from(new Set([...this.lookupTableAddress,...a])),f=[];for(let P of m)y[P]===void 0&&f.push(new U.PublicKey(P));let A=await bn({connection:this.connection,address:f});for(let[P,B]of Object.entries(A))y[P]=B;let k=t?Nt(t):{instructions:[],instructionTypes:[]},h=await Ze(this.connection,this.blockhashCommitment),O=this.signers.reduce((P,B)=>q(N({},P),{[B.publicKey.toBase58()]:B}),{}),T=[],I=[],x=[],R=0;if(this.allInstructions.forEach(P=>{let B=[...x,P],S=t?[...k.instructions,...B]:B;if(P!==o[R]&&x.length<u&&(dt({instructions:S,payer:this.feePayer,lookupTableAddressAccount:y})||dt({instructions:B,payer:this.feePayer,lookupTableAddressAccount:y})))x.push(P);else{if(x.length===0)throw Error("item ins too big");R+=P===o[R]?1:0;let L={};for(let M of[...new Set(m)])y[M]!==void 0&&(L[M]=y[M]);if(t&&dt({instructions:[...k.instructions,...x],payer:this.feePayer,lookupTableAddressAccount:y,recentBlockhash:h})){let M=new U.TransactionMessage({payerKey:this.feePayer,recentBlockhash:h,instructions:[...k.instructions,...x]}).compileToV0Message(Object.values(y));T.push(new U.VersionedTransaction(M))}else{let M=new U.TransactionMessage({payerKey:this.feePayer,recentBlockhash:h,instructions:[...x]}).compileToV0Message(Object.values(y));T.push(new U.VersionedTransaction(M))}I.push(Array.from(new Set(x.map(M=>M.keys.filter(D=>D.isSigner).map(D=>D.pubkey.toString())).flat())).map(M=>O[M]).filter(M=>M!==void 0)),x=[P]}}),x.length>0){let B=[...new Set(x.map(S=>S.keys.filter(L=>L.isSigner).map(L=>L.pubkey.toString())).flat()).values()].map(S=>O[S]).filter(S=>S!==void 0);if(t&&dt({instructions:[...k.instructions,...x],payer:this.feePayer,lookupTableAddressAccount:y,recentBlockhash:h})){let S=new U.TransactionMessage({payerKey:this.feePayer,recentBlockhash:h,instructions:[...k.instructions,...x]}).compileToV0Message(Object.values(y));T.push(new U.VersionedTransaction(S))}else{let S=new U.TransactionMessage({payerKey:this.feePayer,recentBlockhash:h,instructions:[...x]}).compileToV0Message(Object.values(y));T.push(new U.VersionedTransaction(S))}I.push(B)}return(E=this.owner)!=null&&E.signer&&I.forEach(P=>{P.some(B=>B.publicKey.equals(this.owner.publicKey))||P.push(this.owner.signer)}),T.forEach((P,B)=>{P.sign(I[B])}),{builder:this,transactions:T,buildProps:e,signers:I,instructionTypes:this.instructionTypes,execute:async P=>{var pe;let{sequentially:B,onTxUpdate:S,skipTxCount:L=0,recentBlockHash:M,skipPreflight:D=!0}=P||{};if(T.map(async(X,G)=>{I[G].length&&X.sign(I[G]),M&&(X.message.recentBlockhash=M)}),Ve(T),(pe=this.owner)!=null&&pe.isKeyPair){if(B){let X=0,G=[];for(let ae of T){if(++X,X<=L){console.log("skip tx: ",X),G.push("tx skipped");continue}let Q=await this.connection.sendTransaction(ae,{skipPreflight:D});await Mt(this.connection,Q),G.push(Q)}return{txIds:G,signedTxs:T}}return{txIds:await Promise.all(T.map(async X=>await this.connection.sendTransaction(X,{skipPreflight:D}))),signedTxs:T}}if(this.signAllTransactions){let X=await this.signAllTransactions(T.slice(L,T.length)),G=[...T.slice(0,L),...X];if(B){let ae=0,Q=[],le=async()=>{if(!G[ae])return;if(ae<L){Q.push({txId:"",status:"success",signedTx:G[ae]}),S==null||S([...Q]),ae++,le();return}let Be=await this.connection.sendTransaction(G[ae],{skipPreflight:D});Q.push({txId:Be,status:"sent",signedTx:G[ae]}),S==null||S([...Q]),ae++;let ot=!1,Ge=null,Bt=null,zn=Fe=>{Ge!==null&&clearInterval(Ge),Bt!==null&&this.connection.removeSignatureListener(Bt);let Se=Q.findIndex(wi=>wi.txId===Be);if(Se>-1){if(Q[Se].status==="error"||Q[Se].status==="success")return;Q[Se].status=Fe.err?"error":"success"}S==null||S([...Q]),Fe.err||le()};this.loopMultiTxStatus&&(Ge=setInterval(async()=>{var Fe;if(ot){clearInterval(Ge);return}try{let Se=await this.connection.getTransaction(Be,{commitment:"confirmed",maxSupportedTransactionVersion:0});Se&&(ot=!0,clearInterval(Ge),zn({err:((Fe=Se.meta)==null?void 0:Fe.err)||null}),console.log("tx status from getTransaction:",Be))}catch(Se){ot=!0,clearInterval(Ge),console.error("getTransaction timeout:",Se,Be)}},Ft)),Bt=this.connection.onSignature(Be,Fe=>{if(ot){this.connection.removeSignatureListener(Bt);return}ot=!0,zn(Fe)},"confirmed"),this.connection.getSignatureStatus(Be)};return le(),{txIds:[],signedTxs:G}}else{let ae=[];for(let Q=0;Q<G.length;Q+=1){let le=await this.connection.sendTransaction(G[Q],{skipPreflight:D});ae.push(le)}return{txIds:ae,signedTxs:G}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:c||{}}}};var wn=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),de=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=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(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")}};var To=require("@solana/web3.js"),Yi=g(require("bn.js"));var qt=require("@solana/spl-token");var ko=require("@solana/web3.js"),zi=g(require("bn.js"));var Xi=require("@solana/spl-token");var go=require("@solana/web3.js"),He=g(require("bn.js"));var w=require("@solana/buffer-layout"),Vt=w.Layout,po=w.Structure;var kn=w.UInt;var fo=w.u8,oe=w.u16;var _t=w.u32;var Pe=w.s32;var yo=w.seq;var v=w.blob;var Tn=w.bits,bo=w.offset;var Ee=class extends Vt{constructor(t,o,i){super(t,i);this.blob=v(t),this.signed=o}decode(t,o=0){let i=new He.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 He.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=Tn(_t(),!1),this._upper=Tn(_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),a=this._upper.decode(t,o+this._lower.span);return N(N({},i),a)}encode(t,o,i=0){return this._lower.encode(t,o,i)+this._upper.encode(t,o,i+this._lower.span)}};function d(r){return new kn(1,r)}function Z(r){return new kn(4,r)}function n(r){return new Ee(8,!1,r)}function F(r){return new Ee(16,!1,r)}function Po(r){return new Ee(1,!0,r)}function je(r){return new Ee(8,!0,r)}function Ao(r){return new Ee(16,!0,r)}var pt=class extends Vt{constructor(t,o,i,a){super(t.span,a);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 s(r){return new pt(v(32),e=>new go.PublicKey(e),e=>e.toBuffer(),r)}function ye(r){return new pt(fo(),Ui,Gi,r)}function Ui(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function Gi(r){return r?1:0}function wo(r,e){let t=_t("length"),o=p([t,b(r,bo(t,-t.span),"values")]);return new pt(o,({values:i})=>i,i=>({values:i}),e)}var hn=class extends po{decode(e,t){return super.decode(e,t)}};function p(r,e,t){return new hn(r,e,t)}function b(r,e,t){let o,i=typeof e=="number"?e:(0,He.isBN)(e)?e.toNumber():new Proxy(e,{get(a,u){if(!o){let c=Reflect.get(a,"count");o=(0,He.isBN)(c)?c.toNumber():c,Reflect.set(a,"count",o)}return Reflect.get(a,u)},set(a,u,c){return u==="count"&&(o=c),Reflect.set(a,u,c)}});return yo(r,i,t)}var Dt=p([s("mint"),s("owner"),n("amount"),Z("delegateOption"),s("delegate"),d("state"),Z("isNativeOption"),n("isNative"),n("delegatedAmount"),Z("closeAuthorityOption"),s("closeAuthority")]);var ni=require("@solana/web3.js"),Ca=require("@solana/spl-token");var Zi=require("@solana/web3.js"),Hi=require("@solana/spl-token");var K=require("@solana/web3.js"),Bo=new K.PublicKey("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),So=new K.PublicKey("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Ko=new K.PublicKey("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),In=new K.PublicKey("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Xl=new K.PublicKey("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),ji=new K.PublicKey("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),xo=new K.PublicKey("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Co=new K.PublicKey("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Yl=new K.PublicKey("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),$i=new K.PublicKey("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Ro=new K.PublicKey("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Ji=new K.PublicKey("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),er=new K.PublicKey("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Lo=new K.PublicKey("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Ql=new K.PublicKey("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),tr=new K.PublicKey("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Bn=new K.PublicKey("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),nr=new K.PublicKey("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Zl=new K.PublicKey("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),or=new K.PublicKey("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),ir=new K.PublicKey("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),rr=new K.PublicKey("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Hl=new K.PublicKey("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),jl=new K.PublicKey("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),$l=new K.PublicKey("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Jl=new K.PublicKey("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),em=new K.PublicKey("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Oe={OPEN_BOOK_PROGRAM:new K.PublicKey("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new K.PublicKey("Ray1111111111111111111111111111111111111111"),AMM_V4:new K.PublicKey("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new K.PublicKey("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new K.PublicKey("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new K.PublicKey("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new K.PublicKey("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new K.PublicKey("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new K.PublicKey("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new K.PublicKey("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new K.PublicKey("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new K.PublicKey("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:K.PublicKey.default,Router:new K.PublicKey("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new K.PublicKey("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new K.PublicKey("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new K.PublicKey("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new K.PublicKey("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new K.PublicKey("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new K.PublicKey("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new K.PublicKey("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new K.PublicKey("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new K.PublicKey("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new K.PublicKey("Ray1111111111111111111111111111111111111111")};var Ra=g(require("decimal.js"));var Mn=require("@solana/spl-token"),zr=require("@solana/web3.js"),Xr=g(require("bn.js")),Yr=g(require("decimal.js"));var sr=require("@solana/spl-token"),ur=require("@solana/web3.js");var ar=p([Z("mintAuthorityOption"),s("mintAuthority"),n("supply"),d("decimals"),d("isInitialized"),Z("freezeAuthorityOption"),s("freezeAuthority")]);var On=require("@solana/spl-token"),$t=require("@solana/web3.js"),qr=g(require("bn.js"));var V=g(require("bn.js")),H=new V.default(1).shln(64),Je=64,cr=new V.default(1).shln(128),ft=new V.default(1).shln(64).subn(1),lr=new V.default(1).shln(128).subn(1),Ce=-443636,Re=443636,De=new V.default("4295048016"),We=new V.default("79226673521066979257578248091"),Oo=new V.default("59543866431248"),No=new V.default("184467440737095516"),Mo=new V.default("15793534762490258745"),Fo=16;var Sn=60,Bm=new V.default("18446743708227953217"),vo=[{bit:0,factor:new V.default("fffcb933bd6fb800",16)},{bit:1,factor:new V.default("fff97272373d4000",16)},{bit:2,factor:new V.default("fff2e50f5f657000",16)},{bit:3,factor:new V.default("ffe5caca7e10f000",16)},{bit:4,factor:new V.default("ffcb9843d60f7000",16)},{bit:5,factor:new V.default("ff973b41fa98e800",16)},{bit:6,factor:new V.default("ff2ea16466c9b000",16)},{bit:7,factor:new V.default("fe5dee046a9a3800",16)},{bit:8,factor:new V.default("fcbe86c7900bb000",16)},{bit:9,factor:new V.default("f987a7253ac65800",16)},{bit:10,factor:new V.default("f3392b0822bb6000",16)},{bit:11,factor:new V.default("e7159475a2caf000",16)},{bit:12,factor:new V.default("d097f3bdfd2f2000",16)},{bit:13,factor:new V.default("a9f746462d9f8000",16)},{bit:14,factor:new V.default("70d869a156f31c00",16)},{bit:15,factor:new V.default("31be135f97ed3200",16)},{bit:16,factor:new V.default("9aa508b5b85a500",16)},{bit:17,factor:new V.default("5d6af8dedc582c",16)},{bit:18,factor:new V.default("2216e584f5fa",16)}],Le=1e6;var Gt=1e5,yt=1e4,Vo=1e4,_o=1e5;var bt=3,Eo=100;var Do=10,Wo=100,zt=14;var C=new V.default(0),Ie=new V.default(1),Sm=new V.default(-1);var Km=new V.default("18446744073700000000");var mr=p([v(8),d("bump"),oe("index"),s("owner"),Z("protocolFeeRate"),Z("tradeFeeRate"),oe("tickSpacing"),Z("fundFeeRate"),b(Z(),1),s("fundOwner"),b(n(),3)]),dr=p([Z("blockTimestamp"),je("tickCumulative"),b(n(),4)]),qo=p([v(8),ye("initialized"),n("recentEpoch"),oe("observationIndex"),s("poolId"),b(dr,Eo,"observations"),b(n(),4)]),pr=p([oe("filterPeriod"),oe("decayPeriod"),oe("reductionFactor"),Z("dynamicFeeControl"),Z("maxVolatilityAccumulator"),Pe("tickSpacingIndexReference"),Z("volatilityReference"),Z("volatilityAccumulator"),n("lastUpdateTimestamp"),b(d(),46)]),fr=p([d("state"),n("openTime"),n("endTime"),n("lastUpdateTime"),F("emissionsPerSecondX64"),n("totalEmissioned"),n("claimed"),s("mint"),s("vault"),s("creator"),F("growthGlobalX64")]),Kn=p([v(8),d("bump"),s("configId"),s("creator"),s("mintA"),s("mintB"),s("vaultA"),s("vaultB"),s("observationId"),d("mintDecimalsA"),d("mintDecimalsB"),oe("tickSpacing"),F("liquidity"),F("sqrtPriceX64"),Pe("tickCurrent"),Z(),F("feeGrowthGlobalX64A"),F("feeGrowthGlobalX64B"),n("protocolFeesTokenA"),n("protocolFeesTokenB"),b(F(),4),d("status"),d("feeOn"),v(6),b(fr,bt,"rewardInfos"),v(8*16,"tickArrayBitmap"),b(n(),4),n("fundFeesTokenA"),n("fundFeesTokenB"),n("startTime"),n("recentEpoch"),pr.replicate("dynamicFeeInfo"),b(n(),46)]),yr=p([F("growthInsideLastX64"),n("rewardAmountOwed")]),br=p([v(8),d("bump"),s("nftMint"),s("poolId"),Pe("tickLower"),Pe("tickUpper"),F("liquidity"),F("feeGrowthInsideLastX64A"),F("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),b(yr,bt,"rewardInfos"),n("recentEpoch"),b(n(),7)]),Lm=p([v(8),d("bump"),s("poolId"),Pe("tickLower"),Pe("tickUpper"),F("liquidity"),F("feeGrowthInsideLastX64A"),F("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),b(F(),bt,"rewardGrowthInside"),n("recentEpoch"),b(n(),7)]),gr=p([Pe("tick"),Ao("liquidityNet"),F("liquidityGross"),F("feeGrowthOutsideX64A"),F("feeGrowthOutsideX64B"),b(F(),bt,"rewardGrowthsOutsideX64"),n("orderPhase"),n("ordersAmount"),n("partFilledOrdersRemaining"),F("unfilledRatioX64"),b(Z(),3)]),Uo=p([v(8),s("poolId"),Pe("startTickIndex"),b(gr,Sn,"ticks"),d("initializedTickCount"),n("recentEpoch"),b(d(),107)]),Pr=p([v(8),d("bump"),b(s(),Do,"operationOwners"),b(s(),Wo,"whitelistMints")]),Ar=p([v(8),s("poolId"),s("owner"),Pe("tick"),ye("zeroForOne"),n("orderPhase"),n("totalAmount"),n("filledAmount"),n("settleBase"),n("settleOutput"),n("openTime"),F("unfilledRatioX64"),b(n(),4)]),Go=p([v(8),s("poolId"),v(8*8*zt,"positiveTickArrayBitmap"),v(8*8*zt,"negativeTickArrayBitmap")]),Om=p([v(8),oe("index"),oe("filterPeriod"),oe("decayPeriod"),oe("reductionFactor"),Z("dynamicFeeControl"),Z("maxVolatilityAccumulator"),b(n(),8)]),wr=p([v(8),s("wallet"),d("nonceIndex"),n("orderNonce"),b(n(),4)]),Nm=p([n(),d("bump"),s("owner"),s("poolId"),s("positionId"),s("nftAccount"),b(n(),8)]),kr=p([v(8),d("bump"),s("lockOwner"),s("poolId"),s("positionId"),s("nftAccount"),s("lockNftMint"),n("recentEpoch"),b(n(),8)]);var Tr=g(require("bn.js"));var zm=Buffer.from("amm_config","utf8"),Ir=Buffer.from("pool","utf8"),Br=Buffer.from("pool_vault","utf8"),Xm=Buffer.from("pool_reward_vault","utf8"),Ym=Buffer.from("position","utf8"),Qm=Buffer.from("tick_array","utf8"),Zm=Buffer.from("operation","utf8"),Hm=Buffer.from("pool_tick_array_bitmap_extension","utf8"),jm=Buffer.from("observation","utf8"),$m=Buffer.from("support_mint","utf8"),Jm=Buffer.from("dynamic_fee_config","utf8"),ed=Buffer.from("permission","utf8");var td=Buffer.from("locked_position","utf8");var Zo=require("js-sha256");var zo=g(require("bn.js")),Sr=g(require("decimal.js"));function ee(r,e,t){if(t.isZero())throw new Error("Division by zero");return r.mul(e).div(t)}function j(r,e,t){if(t.isZero())throw new Error("Division by zero");let o=r.mul(e),i=o.div(t);return o.mod(t).isZero()?i:i.addn(1)}function Xt(r,e){return r.div(e).add(r.mod(e).isZero()?C:Ie)}var id=new zo.default(1).shln(256).subn(1);function Xo(r){return r.isZero()?-1:r.bitLength()-1}var Kr=g(require("bn.js"));var te=g(require("bn.js")),qe=g(require("decimal.js"));var $=class{static isInitialized({data:e}){return this.hasLiquidity({data:e})||this.hasLimitOrders({data:e})}static hasLimitOrders({data:e}){return!e.ordersAmount.isZero()||!e.partFilledOrdersRemaining.isZero()}static hasLiquidity({data:e}){return!e.liquidityGross.isZero()}static isValidTick(e){return e>=Ce&&e<=Re}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${Ce}, ${Re}]`)}static getSqrtPriceAtTick(e){this.checkTick(e);let t=Math.abs(e),o=H.clone();for(let{bit:i,factor:a}of vo)(t&1<<i)!==0&&(o=ee(o,a,H));return e>0&&(o=ee(H,H,o)),o}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:o}){if(o){let i=$.getPriceAtTick(t,!1);return ee(e,i,H)}else{let i=$.getPriceAtTick(t,!0);return ee(e,H,i)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:o}){if(o){let i=$.getPriceAtTick(t,!0);return j(e,i,H)}else{let i=$.getPriceAtTick(t,!1);return j(e,H,i)}}static limitOrderUnfilledAmount({tick:e}){return e.ordersAmount.add(e.partFilledOrdersRemaining)}static matchLimitOrder({tick:e,swapAmount:t,swapDirectionZeroForOne:o,isBaseInput:i,feeRate:a,isFeeOnInput:u}){let c={amountIn:C,amountOut:C,ammFeeAmount:C},y=this.limitOrderUnfilledAmount({tick:e});if(t.isZero()||y.isZero())return c;if(i)u?(c.ammFeeAmount=j(t,new te.default(a),be),c.amountIn=t.sub(c.ammFeeAmount)):c.amountIn=t,c.amountOut=this.getLimitOrderOutput({amountIn:c.amountIn,tick:e.tick,zeroForOne:o}),c.amountOut.gt(y)&&(c.amountOut=y,c.amountIn=this.getLimitOrderInput({amountOut:y,tick:e.tick,zeroForOne:!o}),u&&(c.ammFeeAmount=j(c.amountIn,new te.default(a),be.sub(new te.default(a)))));else{let A=te.default.min(t,y);u?c.amountOut=A:c.amountOut=te.default.min(j(A,be,be.sub(new te.default(a))),y),c.amountIn=this.getLimitOrderInput({amountOut:c.amountOut,tick:e.tick,zeroForOne:!o}),u&&(c.ammFeeAmount=j(c.amountIn,new te.default(a),be.sub(new te.default(a))))}let m=C;e.partFilledOrdersRemaining.gt(C)&&(m=te.default.min(e.partFilledOrdersRemaining,c.amountOut),m.gt(C)&&(e.unfilledRatioX64=ee(e.unfilledRatioX64,e.partFilledOrdersRemaining.sub(m),e.partFilledOrdersRemaining)),e.partFilledOrdersRemaining=e.partFilledOrdersRemaining.sub(m));let f=c.amountOut.sub(m);if(f.gt(C)){if(!e.partFilledOrdersRemaining.isZero())throw Error("!tick.partFilledOrdersRemaining.isZero()");if(e.ordersAmount.lt(f))throw Error("InvalidLimitOrderAmount");e.orderPhase=e.orderPhase.add(Ie),e.unfilledRatioX64=ee(H,e.ordersAmount.sub(f),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(f),e.ordersAmount=C}return u||(c.ammFeeAmount=j(c.amountOut,new te.default(a),be),c.amountOut=c.amountOut.sub(c.ammFeeAmount)),c}static getPriceAtTick(e,t){let o=this.getSqrtPriceAtTick(e);return t?o.mul(o).add(H.subn(1)).div(H):o.mul(o).div(H)}static getTickAtSqrtPrice(e){if(!(e.gte(De)&&e.lte(We)))throw Error("SqrtPriceX64");let t=Xo(e),o=t-64,i;o>=0?i=new te.default(o).shln(32):i=new te.default(-o).shln(32).neg();let a;t>=64?a=e.shrn(t-63):a=e.shln(63-t);let u=new te.default(0),c=new te.default(1).shln(63);for(let I=0;I<Fo&&!c.isZero();I++){a=a.mul(a);let x=a.shrn(127).toNumber();a=a.shrn(63+x),x&&(u=u.add(c)),c=c.shrn(1)}let y=u.shrn(32),f=i.add(y).mul(Oo),A=f.sub(No),k=f.add(Mo),h=this.signedShrn64(A),O=this.signedShrn64(k);return h===O?h:$.getSqrtPriceAtTick(O).lte(e)?O:h}static signedShrn64(e){if(e.isNeg()){let t=new te.default(1).shln(64),o=e.div(t);return!e.mod(t).isZero()&&e.isNeg()?o.subn(1).toNumber():o.toNumber()}else return e.shrn(64).toNumber()}static sqrtPriceX64ToPrice(e,t,o){let i=e.mul(e),a=t-o,u=20,c=new te.default(10).pow(new te.default(u)),y=i.mul(c),m=new te.default(1).shln(128),A=y.div(m).toString();for(;A.length<=u;)A="0"+A;let k=A.slice(0,-u),h=A.slice(-u),O=k+"."+h;return new qe.default(O).mul(new qe.default(10).pow(a))}static tickToPrice(e,t,o){let i=$.getSqrtPriceAtTick(e);return this.sqrtPriceX64ToPrice(i,t,o)}static priceToTick(e,t,o){let a=e.div(Math.pow(10,t-o)).log().div(new qe.default(1.0001).log()).floor();return Math.max(Ce,Math.min(Re,a.toNumber()))}static priceToSqrtPriceX64(e,t,o){let u=e.div(Math.pow(10,t-o)).sqrt().mul(new qe.default(2).pow(64));return new te.default(u.toFixed(0))}static toTickIndex(e,t){return e>=0?e-e%t:e-e%t-(e%t!==0?t:0)}static getPriceAndTick({price:e,mintADecimals:t,mintBDecimals:o,zeroForOne:i,tickSpacing:a}){let u=e.clamp(1/10**Math.max(t,o),Number.MAX_SAFE_INTEGER);i||(u=new qe.default(1).div(u));let c=$.toTickIndex($.priceToTick(u,t,o),a),y=$.tickToPrice(c,t,o);return{price:i?y:new qe.default(1).div(y),tick:c}}};var gt=g(require("bn.js")),Cn=g(require("decimal.js"));var fe=class{static getDeltaAmountAUnsigned(e,t,o,i){e.gt(t)&&([e,t]=[t,e]);let a=o.shln(Je),u=t.sub(e);if(!e.gt(C))throw Error("!sqrtPriceX64A.gt(BN_ZERO)");let c=i?Xt(j(a,u,t),e):ee(a,u,t).div(e);if(c.gt(ft))throw Error("MaxTokenOverflow");return c}static getDeltaAmountBUnsigned(e,t,o,i){e.gt(t)&&([e,t]=[t,e]);let a=i?j(o,t.sub(e),H):ee(o,t.sub(e),H);if(a.gt(ft))throw Error("MaxTokenOverflow");return a}static addDelta(e,t){if(t.isNeg()){let o=t.neg();if(e.lt(o))throw new Error("Liquidity underflow");return e.sub(o)}else return e.add(t)}static getLiquidityFromAmountA(e,t,o){if(o.isZero())return C;e.gt(t)&&([e,t]=[t,e]);let i=ee(e,t,H),a=t.sub(e);return ee(o,i,a)}static getLiquidityFromAmountB(e,t,o){if(o.isZero())return C;e.gt(t)&&([e,t]=[t,e]);let i=t.sub(e);return ee(o,H,i)}static getLiquidityFromAmounts(e,t,o,i,a){if(t.gt(o)&&([t,o]=[o,t]),e.lte(t))return this.getLiquidityFromAmountA(t,o,i);if(e.lt(o)){let u=this.getLiquidityFromAmountA(e,o,i),c=this.getLiquidityFromAmountB(t,e,a);return u.lt(c)?u:c}else return this.getLiquidityFromAmountB(t,o,a)}static getAmountsForLiquidity(e,t,o,i,a){t.gt(o)&&([t,o]=[o,t]);let u=C,c=C;return e.lte(t)?u=this.getDeltaAmountAUnsigned(t,o,i,a):e.lt(o)?(u=this.getDeltaAmountAUnsigned(e,o,i,a),c=this.getDeltaAmountBUnsigned(t,e,i,a)):c=this.getDeltaAmountBUnsigned(t,o,i,a),{amountA:u,amountB:c}}static getAmountsFromLiquidityWithSlippage(e,t,o,i,a,u,c){let{amountA:y,amountB:m}=this.getAmountsForLiquidity(e,t,o,i,u),f=a?1+c:1-c,A=new gt.default(new Cn.default(y.toString()).mul(f).toFixed(0)),k=new gt.default(new Cn.default(m.toString()).mul(f).toFixed(0));return{amountSlippageA:A,amountSlippageB:k}}static getLiquidityAndAmountsFromAmount({sqrtPriceCurrentX64:e,sqrtPriceLowerX64:t,sqrtPriceUpperX64:o,amountInfo:i}){let a;if(i.type==="liquidity")a=i.amount;else if(i.type==="amountA")a=e.gte(o)?C:this.getLiquidityFromAmountA(gt.default.max(e,t),o,i.amount);else if(i.type==="amountB")a=e.lte(t)?C:this.getLiquidityFromAmountB(t,gt.default.min(e,o),i.amount);else throw Error("amount info type check error");return N({liquidity:a},this.getAmountsForLiquidity(e,t,o,i.amount,!0))}};var Or=require("@solana/web3.js"),Ln=g(require("bn.js"));var Yo=require("@solana/spl-token");var Nr=g(require("decimal.js"));var Cr=g(require("bn.js"));var Pt=class{static tickSpacingIndexFromTick(e,t){return Math.floor(e/t)}},et=class{static getDynamicFeeInfo({poolInfo:e}){if(!(e.dynamicFeeInfo.filterPeriod===0&&e.dynamicFeeInfo.decayPeriod===0&&e.dynamicFeeInfo.reductionFactor===0&&e.dynamicFeeInfo.dynamicFeeControl===0&&e.dynamicFeeInfo.maxVolatilityAccumulator===0&&e.dynamicFeeInfo.tickSpacingIndexReference===0&&e.dynamicFeeInfo.volatilityReference===0&&e.dynamicFeeInfo.volatilityAccumulator===0&&e.dynamicFeeInfo.lastUpdateTimestamp.isZero()))return e.dynamicFeeInfo}static updateReference({dynamicFeeInfo:e,tickSpacingIndex:t,currentTimestamp:o}){let i=o-e.lastUpdateTimestamp.toNumber();i<e.filterPeriod||(i<e.decayPeriod?(e.tickSpacingIndexReference=t,e.volatilityReference=Math.floor(e.volatilityAccumulator*e.reductionFactor/Vo),e.lastUpdateTimestamp=new Ln.default(o)):(e.tickSpacingIndexReference=t,e.volatilityReference=0,e.lastUpdateTimestamp=new Ln.default(o)))}static updateVolatilityAccumulator({state:e,tickSpacingIndex:t}){let o=Math.abs(e.tickSpacingIndexReference-t),i=e.volatilityReference+o*yt;e.volatilityAccumulator=Math.min(i,e.maxVolatilityAccumulator)}};var vr=g(require("bn.js"));var wt=class{static getNextSqrtPriceFromAmountARoundingUp(e,t,o,i){if(o.isZero())return e;let a=t.shln(Je);if(i){let u=o.mul(e),c=a.add(u);if(c.gte(a))return j(a,e,c);let y=ee(a,Ie,e);return j(a,Ie,y.add(o))}else{let u=o.mul(e);if(a.lte(u))throw new Error("Insufficient liquidity for token0 removal");let c=a.sub(u);return j(a,e,c)}}static getNextSqrtPriceFromAmountBRoundingDown(e,t,o,i){if(o.isZero())return e;if(i){let a=o.shln(Je).div(t);return e.add(a)}else{let a=Xt(o.shln(Je),t);return e.sub(a)}}static getNextSqrtPriceFromInput(e,t,o,i){if(!e.gt(C))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(C))throw Error("liquidity.gt(BN_ZERO)");return i?this.getNextSqrtPriceFromAmountARoundingUp(e,t,o,!0):this.getNextSqrtPriceFromAmountBRoundingDown(e,t,o,!0)}static getNextSqrtPriceFromOutput(e,t,o,i){if(!e.gt(C))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(C))throw Error("liquidity.gt(BN_ZERO)");return i?this.getNextSqrtPriceFromAmountBRoundingDown(e,t,o,!1):this.getNextSqrtPriceFromAmountARoundingUp(e,t,o,!1)}};function re(r){let e=`global:${r}`;return Buffer.from(Zo.sha256.digest(e)).slice(0,8)}qo.span;var Op=W("Raydium_Clmm"),Np={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")};var Jt=require("@solana/web3.js");var Zr=p([d("instruction")]),Hr=p([d("instruction")]),jr=p([n("rewardState"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardLastUpdateTime"),n("totalReward"),n("totalRewardEmissioned"),n("rewardClaimed"),n("rewardPerSecond"),F("accRewardPerShare"),s("rewardVault"),s("rewardMint"),s("rewardSender"),n("rewardType"),b(n(),15,"padding")]),$r=p([n("state"),n("nonce"),s("lpVault"),s("rewardVault"),s(),s(),n(),n(),n("totalReward"),F("perShareReward"),n("lastSlot"),n("perSlotReward")]),Jr=p([n("state"),n("nonce"),s("lpVault"),s("rewardVaultA"),n("totalRewardA"),F("perShareRewardA"),n("perSlotRewardA"),d("option"),s("rewardVaultB"),v(7),n("totalRewardB"),F("perShareRewardB"),n("perSlotRewardB"),n("lastSlot"),s()]),ea=p([n(),n("state"),n("nonce"),n("validRewardTokenNum"),F("rewardMultiplier"),n("rewardPeriodMax"),n("rewardPeriodMin"),n("rewardPeriodExtend"),s("lpMint"),s("lpVault"),b(jr,5,"rewardInfos"),s("creator"),s(),b(n(),32,"padding")]),ta=new Proxy($r,{get(r,e,t){return e==="decode"?(...o)=>{let i=r.decode(...o);return q(N({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(r,e,t)}}),na=new Proxy(Jr,{get(r,e,t){return e==="decode"?(...o)=>{let i=r.decode(...o);return q(N({},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)}}),$o=new Proxy(ea,{get(r,e,t){return e==="decode"?(...o)=>{let i=r.decode(...o);return q(N({},i),{version:6,rewardInfos:i.rewardInfos.map(a=>{var u;return q(N({},a),{rewardType:((u=Object.entries(kt).find(c=>String(c[1])===a.rewardType.toString()))!=null?u:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),oa=p([n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),ia=p([d("instruction"),n("nonce"),b(oa,5,"rewardTimeInfo")]),ra=p([d("instruction"),n("rewardReopenTime"),n("rewardEndTime"),n("rewardPerSecond")]),aa=p([d("instruction"),n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),hf=p([n("state"),s("id"),s("owner"),n("deposited"),b(n(),1,"rewardDebts")]),Jo=p([n("state"),s("id"),s("owner"),n("deposited"),b(F(),1,"rewardDebts"),n(""),n("voteLockedBalance"),b(n(),15)]),If=p([n("state"),s("id"),s("owner"),n("deposited"),b(n(),2,"rewardDebts")]),sa=p([n("state"),s("id"),s("owner"),n("deposited"),b(F(),2,"rewardDebts"),b(n(),17)]),ua=p([n(),n("state"),s("id"),s("owner"),n("deposited"),b(F(),5,"rewardDebts"),b(n(),16)]),ca=p([d("instruction"),n("amount")]),la=p([s("mint"),s("grantAuthority"),n("baselineVoteWeightScaledFactor"),n("maxExtraLockupVoteWeightScaledFactor"),n("lockupSaturationSecs"),Po("digitShift"),b(d(),7,"reserved1"),b(n(),7,"reserved2")]),ma=p([v(8),s("governanceProgramId"),s("realm"),s("realmGoverningTokenMint"),s("realmAuthority"),b(d(),32,"reserved1"),b(la,4,"votingMints"),je("timeOffset"),d("bump"),b(d(),7,"reserved2"),b(n(),11,"reserved3")]),da=p([je("startTime"),je("endTime"),d("kind"),b(d(),15,"reserved")]),pa=p([b(da,1,"lockup"),n("amountDeposited_native"),n("amountInitiallyLockedNative"),ye("isUsed"),ye("allowClawback"),d("votingMintConfigIdx"),b(d(),29,"reserved")]),fa=p([v(8),s("voterAuthority"),s("registrar"),b(pa,32,"deposits"),d("voterBump"),d("voterWweightRecordBump"),b(d(),94,"reserved")]);var ya=require("@solana/spl-token"),Lf=W("Raydium_farm_config"),ba=new Jt.PublicKey("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ga=new Jt.PublicKey("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Of=new Jt.PublicKey("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var kt={"Standard SPL":0,"Option tokens":1},ei={[Bo.toString()]:3,[So.toString()]:4,[Ko.toString()]:5,[In.toString()]:6,[Oe.FARM_PROGRAM_ID_V3.toString()]:3,[Oe.FARM_PROGRAM_ID_V4.toString()]:4,[Oe.FARM_PROGRAM_ID_V5.toString()]:5,[Oe.FARM_PROGRAM_ID_V6.toString()]:6};var Tt=require("@solana/web3.js"),ha=g(require("bn.js")),vn=require("@solana/spl-token");var Ta=g(require("bn.js"));var Pa=require("@solana/web3.js"),Aa=g(require("bn.js"));var ey=W("Raydium.farm.util");var wy=W("Raydium_farm_instruction"),ky={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 La=g(require("bn.js"));var rs=require("@solana/web3.js"),nn=require("@solana/spl-token");var Oa=g(require("bn.js"));var Vn=g(require("bn.js")),Na=new Vn.default(25),Ma=new Vn.default(1e4);var ii=require("@solana/spl-token"),en=require("@solana/web3.js");var Wa=g(require("bn.js"));var Fa=p([d("instruction"),n("amountIn"),n("minAmountOut")]),va=p([d("instruction"),n("maxAmountIn"),n("amountOut")]),gb=p([d("instruction"),d("nonce")]),Va=p([d("instruction"),d("nonce"),n("startTime")]),oi=p([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"),F("swapBaseInAmount"),F("swapQuoteOutAmount"),n("swapBase2QuoteFee"),F("swapQuoteInAmount"),F("swapBaseOutAmount"),n("swapQuote2BaseFee"),s("baseVault"),s("quoteVault"),s("baseMint"),s("quoteMint"),s("lpMint"),s("openOrders"),s("marketId"),s("marketProgramId"),s("targetOrders"),s("withdrawQueue"),s("lpVault"),s("owner"),n("lpReserve"),b(n(),3,"padding")]),Pb=p([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"),F("swapBaseInAmount"),F("swapQuoteOutAmount"),F("swapQuoteInAmount"),F("swapBaseOutAmount"),n("swapQuote2BaseFee"),n("swapBase2QuoteFee"),s("baseVault"),s("quoteVault"),s("baseMint"),s("quoteMint"),s("lpMint"),s("modelDataAccount"),s("openOrders"),s("marketId"),s("marketProgramId"),s("targetOrders"),s("owner"),b(n(),64,"padding")]),_a=p([d("instruction"),n("baseAmountIn"),n("quoteAmountIn"),n("fixedSide"),n("otherAmountMin")]),Ea=p([d("instruction"),n("lpAmount"),n("baseAmountMin"),n("quoteAmountMin")]);var Da=p([n("fee")]);var xb=W("Raydium_liquidity_instruction");var qa=5e4,Ua=p([n("x"),n("y"),n("price")]),Ob=p([n("accountType"),n("status"),n("multiplier"),n("validDataCount"),b(Ua,qa,"DataElement")]);var za=require("@solana/web3.js"),Xa=g(require("decimal.js")),Ya=require("@solana/spl-token");var Ga=require("@solana/web3.js");var Vb=W("Raydium_liquidity_serum");var as=g(require("bn.js")),ss=g(require("decimal.js"));var ja=require("@solana/spl-token"),$a=require("@solana/web3.js"),Ja=g(require("bn.js"));var tn=require("@solana/web3.js"),ri=require("@solana/spl-token");function Qa(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 Za=p([v(5),Qa("accountFlags"),s("ownAddress"),n("vaultSignerNonce"),s("baseMint"),s("quoteMint"),s("baseVault"),n("baseDepositsTotal"),n("baseFeesAccrued"),s("quoteVault"),n("quoteDepositsTotal"),n("quoteFeesAccrued"),n("quoteDustThreshold"),s("requestQueue"),s("eventQueue"),s("bids"),s("asks"),n("baseLotSize"),n("quoteLotSize"),n("feeRateBps"),n("referrerRebatesAccrued"),v(7)]);var ys=require("@solana/web3.js"),ht=require("@solana/spl-token");var ls=g(require("bn.js"));var ai=g(require("bn.js"));var Jg=new ai.default(0);var us=g(require("bn.js"));var si=g(require("bn.js")),be=new si.default(1e6);var bs=g(require("bn.js")),gs=g(require("decimal.js"));var on=require("@solana/web3.js"),_n=require("@solana/spl-token");var pP=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),fP=Buffer.from("amm_config","utf8"),yP=Buffer.from("pool","utf8"),bP=Buffer.from("pool_lp_mint","utf8"),gP=Buffer.from("pool_vault","utf8"),PP=Buffer.from("observation","utf8"),AP=Buffer.from("permission","utf8"),wP=Buffer.from("support_mint","utf8");var kP=Buffer.from("locked_liquidity","utf8");var OP=W("Raydium_cpmm"),NP={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 ds=p([v(8),d("bump"),ye("disableCreatePool"),oe("index"),n("tradeFeeRate"),n("protocolFeeRate"),n("fundFeeRate"),n("createPoolFee"),s("protocolOwner"),s("fundOwner"),n("creatorFeeRate"),b(n(),15)]),ui=p([v(8),s("configId"),s("poolCreator"),s("vaultA"),s("vaultB"),s("mintLp"),s("mintA"),s("mintB"),s("mintProgramA"),s("mintProgramB"),s("observationId"),d("bump"),d("status"),d("lpDecimals"),d("mintDecimalA"),d("mintDecimalB"),n("lpAmount"),n("protocolFeesMintA"),n("protocolFeesMintB"),n("fundFeesMintA"),n("fundFeesMintB"),n("openTime"),n("epoch"),d("feeOn"),ye("enableCreatorFee"),b(d(),6),n("creatorFeesMintA"),n("creatorFeesMintB"),b(n(),28)]),vP=p([v(8),s("configId"),b(n(),30)]);var gi=require("@solana/web3.js"),nt=require("@solana/spl-token"),Pi=g(require("bn.js")),Ws=g(require("decimal.js"));var En=require("@solana/spl-token"),di=require("@solana/web3.js"),pi=g(require("bn.js"));var Ps=p([n(),n("epoch"),d("curveType"),oe("index"),n("migrateFee"),n("tradeFeeRate"),n("maxShareFeeRate"),n("minSupplyA"),n("maxLockRate"),n("minSellRateA"),n("minMigrateRateA"),n("minFundRaisingB"),s("mintB"),s("protocolFeeOwner"),s("migrateFeeOwner"),s("migrateToAmmWallet"),s("migrateToCpmmWallet"),b(n(),16)]),As=p([n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod"),n("startTime"),n("totalAllocatedShare")]),ws=p([n(),n("epoch"),d("bump"),d("status"),d("mintDecimalsA"),d("mintDecimalsB"),d("migrateType"),n("supply"),n("totalSellA"),n("virtualA"),n("virtualB"),n("realA"),n("realB"),n("totalFundRaisingB"),n("protocolFee"),n("platformFee"),n("migrateFee"),As.replicate("vestingSchedule"),s("configId"),s("platformId"),s("mintA"),s("mintB"),s("vaultA"),s("vaultB"),s("creator"),d("mintProgramFlag"),d("cpmmCreatorFeeOn"),n("platformVestingShare"),b(d(),54)]),ZA=p([n(),n("epoch"),s("poolId"),s("beneficiary"),n("claimedAmount"),n("tokenShareAmount"),b(n(),8)]),li=p([d("migrateType"),d("migrateCpmmFeeOn"),n("supply"),n("totalSellA"),n("totalFundRaisingB"),n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod")]),ks=p([n("epoch"),d("index"),s("configId"),li.replicate("bondingCurveParam"),b(n(),50)]),mi=p([n(),n("epoch"),s("platformClaimFeeWallet"),s("platformLockNftWallet"),n("platformScale"),n("creatorScale"),n("burnScale"),n("feeRate"),b(d(),64,"name"),b(d(),256,"web"),b(d(),256,"img"),s("cpConfigId"),n("creatorFeeRate"),s("transferFeeExtensionAuth"),s("platformVestingWallet"),n("platformVestingScale"),s("platformCpCreator"),d("restrictGlobalConfig"),b(d(),107),wo(ks,"platformCurve")]);var ew=Buffer.from("vault_auth_seed","utf8"),tw=Buffer.from("global_config","utf8"),nw=Buffer.from("pool_vesting","utf8"),ow=Buffer.from("platform_config","utf8"),iw=Buffer.from("platform_fee_vault_auth_seed","utf8"),rw=Buffer.from("creator_fee_vault_auth_seed","utf8"),aw=Buffer.from("platform_global_access","utf8"),sw=Buffer.from("platform_allow_config","utf8");var gw={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 Pw=new pi.default("18446744073709551615");var fi=require("@solana/spl-token");var Ts=g(require("bn.js")),hs=g(require("decimal.js"));var xs=g(require("bn.js")),Cs=g(require("decimal.js"));var Is=g(require("bn.js")),Bs=g(require("decimal.js"));var Ss=g(require("bn.js")),Ks=g(require("decimal.js"));var Dn=g(require("bn.js")),rn=g(require("decimal.js")),an=class{static _multipler(e){return new rn.default(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:o}){return new rn.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))}};an._Q64=new rn.default(new Dn.default(1).shln(64).toString());var Ue=require("@solana/spl-token"),ne=g(require("bn.js")),Wn=require("@solana/web3.js");var vs=g(require("decimal.js")),tT={initPriceX64:new ne.default("515752397214619"),supply:new ne.default(1e15),totalSellA:new ne.default(7931e11),totalFundRaisingB:new ne.default(85e9),totalFundRaisingBUSD:new ne.default(125e8),totalLockedAmount:new ne.default("0"),cliffPeriod:new ne.default("0"),unlockPeriod:new ne.default("0"),decimals:6,virtualA:new ne.default("1073471847374405"),virtualB:new ne.default("30050573465"),realA:new ne.default(0),realB:new ne.default(0),protocolFee:new ne.default(0),platformId:new Wn.PublicKey("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new ne.default(0),cliffPeriod:new ne.default(0),unlockPeriod:new ne.default(0),startTime:new ne.default(0),totalAllocatedShare:new ne.default(0)}},nT=new ne.default(1e4);var Vs={[xo.toBase58()]:3};var _s=p([v(5),v(8),s("ownAddress"),n("vaultSignerNonce"),s("baseMint"),s("quoteMint"),s("baseVault"),n("baseDepositsTotal"),n("baseFeesAccrued"),s("quoteVault"),n("quoteDepositsTotal"),n("quoteFeesAccrued"),n("quoteDustThreshold"),s("requestQueue"),s("eventQueue"),s("bids"),s("asks"),n("baseLotSize"),n("quoteLotSize"),n("feeRateBps"),n("referrerRebatesAccrued"),v(7)]);var Es=require("@solana/web3.js");var xT=W("Serum");var qn=require("@solana/spl-token"),Un=require("@solana/web3.js"),Ds=g(require("bn.js"));var Ih=new Pi.default(0);var Ne=require("@solana/web3.js"),Ai=require("@solana/spl-token"),Gn=g(require("bn.js"));var ce=class extends de{static getPdaPoolId(e,t){return Te([ce.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,o,i){return Te([ce.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:a}){if(o.length===0)return[];let u=o.map(f=>ce.getPdaPoolId(t,f).publicKey),c=[];for(let f=0;f<ce.VERSION_PROJECT.length;f++)c.push(...u.map(A=>ce.getPdaOwnerId(t,A,i,f).publicKey));let y=await Ke(e,[...u,...c]),m=[];for(let f=0;f<y.length;f++){let A=Math.floor(f/o.length),k=f%o.length,h=u[k],O=c[f],T=y[k],I=y[o.length+f];if(!(T&&I)||T.data.length!==ce.POOL_LAYOUT.span||I.data.length!==ce.OWNER_LAYOUT.span)continue;let x=ce.POOL_LAYOUT.decode(T.data),R=ce.OWNER_LAYOUT.decode(I.data),_=x.openTime.toNumber(),E=x.endTime.toNumber(),P=R.tokenInfo.map(L=>L.debtAmount.gt(new Gn.default(0))).filter(L=>!L).length!==3,B=a>_&&a<E&&x.status===1,S=P&&B;m.push({programId:t,poolId:h,ammId:x.ammId,ownerAccountId:O,snapshotLpAmount:R.lpAmount,project:ce.VERSION_PROJECT[A],openTime:_,endTime:E,canClaim:S,canClaimErrorType:P?B?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:x.tokenInfo.map((L,M)=>({mintAddress:L.mintAddress,mintVault:L.mintVault,mintDecimals:L.mintDecimals,perLpLoss:L.perLpLoss,debtAmount:R.tokenInfo[M].debtAmount.add(R.tokenInfo[M].claimedAmount)}))})}return m}async makeClaimTransaction({poolInfo:e,ownerInfo:t,feePayer:o}){t.wallet||this.scope.checkOwner();let i=this.createTxBuilder(o),a=t.wallet||this.scope.ownerPubKey,u=[];for(let m of e.tokenInfo){let{account:f,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(se.WSOL.mint),createInfo:{payer:a,amount:0},skipCloseAccount:!m.mintAddress.equals(se.WSOL.mint),associatedOnly:m.mintAddress.equals(se.WSOL.mint)?!1:t.associatedOnly});A&&i.addInstruction(A),u.push(f)}i.addInstruction({instructions:[ce.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:a,ownerPda:e.ownerAccountId,claimAddress:u}})]});let{transaction:c,signers:y}=i.build();return[{transaction:c,signer:y}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:o}){let i=this.createTxBuilder(o),a=t.wallet||this.scope.ownerPubKey,u={};for(let f of e){let A=[];for(let k of f.tokenInfo){let{account:h,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({mint:k.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:k.mintAddress.equals(se.WSOL.mint),createInfo:{payer:a,amount:0},skipCloseAccount:!k.mintAddress.equals(se.WSOL.mint),associatedOnly:k.mintAddress.equals(se.WSOL.mint)?!1:t.associatedOnly});O&&i.addInstruction(O),h&&(u[k.mintAddress.toString()]=h,A.push(h))}i.addInstruction({instructions:[ce.makeClaimInstruction({programId:f.programId,poolInfo:f,ownerInfo:{wallet:a,ownerPda:f.ownerAccountId,claimAddress:A}})]})}let{transaction:c,signers:y}=i.build(),m=i.allInstructions;return An(m,[a,...y.map(f=>f.publicKey)])?[{transaction:c,signer:y}]:[{transaction:new Ne.Transaction().add(...m.slice(0,i.AllTxData.instructions.length-1)),signer:y},{transaction:new Ne.Transaction().add(...m.slice(i.AllTxData.instructions.length-1)),signer:[]},{transaction:new Ne.Transaction().add(...i.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:o}){let i=p([]),a=[{pubkey:o.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:o.ownerPda,isSigner:!1,isWritable:!0},...o.claimAddress.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:y})=>({pubkey:y,isSigner:!1,isWritable:!0})),{pubkey:Ai.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1}],u=Buffer.alloc(i.span);i.encode({},u);let c=Buffer.from([10,66,208,184,161,6,191,98,...u]);return new Ne.TransactionInstruction({keys:a,programId:e,data:c})}},Ae=ce;Ae.CLAIMED_NUM=3,Ae.POOL_LAYOUT=p([v(8),d("bump"),d("status"),n("openTime"),n("endTime"),s("ammId"),b(p([d("mintDecimals"),s("mintAddress"),s("mintVault"),n("perLpLoss"),n("totalClaimedAmount")]),ce.CLAIMED_NUM,"tokenInfo"),b(n(),10,"padding")]),Ae.OWNER_LAYOUT=p([v(8),d("bump"),d("version"),s("poolId"),s("owner"),n("lpAmount"),b(p([s("mintAddress"),n("debtAmount"),n("claimedAmount")]),ce.CLAIMED_NUM,"tokenInfo"),b(n(),4,"padding")]),Ae.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Ne.PublicKey(e)),Ae.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},Ae.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];var qs=require("@solana/web3.js"),It=require("@solana/spl-token");var rB=new Me.default(2),aB=new Me.default(3),sB=new Me.default(5),Fi=new Me.default(10),uB=new Me.default(100),cB=new Me.default(1e3),lB=new Me.default(1e4);function ln(r,e=1,t=[]){let o=[...r];if(e<=0)return t;for(;o.length;)t.push(o.splice(0,e));return t}var J=g(require("bn.js"));var Qt=class{static newValue({poolInfo:e,amountSpecified:t,zeroForOne:o,feeRate:i,blockTimestamp:a}){let u={amountSpecifiedRemaining:t,amountCalculated:C,sqrtPriceX64:e.sqrtPriceX64,tick:e.tickCurrent,feeGrowthGlobalX64:o?e.feeGrowthGlobalX64A:e.feeGrowthGlobalX64B,lpFee:C,protocolFee:C,fundFee:C,liquidity:e.liquidity,sqrtPriceNextX64:C,tickNext:0,baseFeeRate:i,tickSpacing:e.tickSpacing,tickSpacingIndex:0,dynamicFeeInfo:et.getDynamicFeeInfo({poolInfo:e})};return u.dynamicFeeInfo&&(u.tickSpacingIndex=Pt.tickSpacingIndexFromTick(u.tick,u.tickSpacing),et.updateReference({dynamicFeeInfo:u.dynamicFeeInfo,tickSpacingIndex:u.tickSpacingIndex,currentTimestamp:a})),u}static getTargetPriceBasedOnNextTick({data:e,tickNext:t,zeroForOne:o,sqrtPriceLimitX64:i}){e.tickNext=t,e.tickNext<Ce?e.tickNext=Ce:e.tickNext>Re&&(e.tickNext=Re),e.sqrtPriceNextX64=$.getSqrtPriceAtTick(e.tickNext);let a;if(o&&e.sqrtPriceNextX64.lt(i)||!o&&e.sqrtPriceNextX64.gt(i)?a=i:a=e.sqrtPriceNextX64,o){if(e.tick<e.tickNext)throw Error("data.tick < data.tickNext");if(e.sqrtPriceX64.lt(e.sqrtPriceNextX64))throw Error("data.sqrtPriceX64.lt(data.sqrtPriceNextX64)");if(e.sqrtPriceX64.lt(a))throw Error("data.sqrtPriceX64.lt(targetPrice)")}else{if(e.tickNext<=e.tick)throw Error("data.tickNext <= data.tick");if(e.sqrtPriceNextX64.lt(e.sqrtPriceX64))throw Error("data.sqrtPriceNextX64.lt(data.sqrtPriceX64)");if(a.lt(e.sqrtPriceX64))throw Error("targetPrice.lt(data.sqrtPriceX64)")}return a}static updateVolatilityAccumulator({state:e}){!e.dynamicFeeInfo||et.updateVolatilityAccumulator({state:e.dynamicFeeInfo,tickSpacingIndex:e.tickSpacingIndex})}static computeDynamicFeeRate({data:e,tickSpacing:t}){let o=e.volatilityAccumulator*t,i=o*o,a=_o*yt*yt,u=j(new J.default(e.dynamicFeeControl),new J.default(i),new J.default(a)).toNumber();return u>Gt?Gt:u}static getTotalFeeRate({data:e}){if(e.dynamicFeeInfo){let t=this.computeDynamicFeeRate({data:e.dynamicFeeInfo,tickSpacing:e.tickSpacing}),o=e.baseFeeRate+t;return Math.min(Gt,o)}return e.baseFeeRate}static getSpacingBoundedPrice({data:e,targetPrice:t,zeroForOne:o}){if(e.dynamicFeeInfo===void 0)return{isSkipped:!0,boundedPrice:t};if(e.liquidity.isZero()||e.dynamicFeeInfo.volatilityAccumulator===e.dynamicFeeInfo.maxVolatilityAccumulator)return{isSkipped:!0,boundedPrice:t};let i=e.tickSpacing,a=o?e.tickSpacingIndex*i:(e.tickSpacingIndex+1)*i,u=Math.max(Ce,Math.min(Re,a)),c=$.getSqrtPriceAtTick(u);return o?{isSkipped:!1,boundedPrice:J.default.max(t,c)}:{isSkipped:!1,boundedPrice:J.default.min(t,c)}}static applySwapAmounts({state:e,amountIn:t,amountOut:o,feeAmount:i,isBaseInput:a,isFeeOnInput:u,protocolFeeRate:c,fundFeeRate:y}){let m=u?t.add(i):t;a?(e.amountSpecifiedRemaining=e.amountSpecifiedRemaining.sub(m),e.amountCalculated=e.amountCalculated.add(o)):(e.amountSpecifiedRemaining=e.amountSpecifiedRemaining.sub(o),e.amountCalculated=e.amountCalculated.add(m)),this.splitFee({state:e,feeAmount:i,protocolFeeRate:c,fundFeeRate:y})}static updateDynamicFeeIndex({state:e,zeroForOne:t,isSkippedTickSpacing:o}){if(e.dynamicFeeInfo!==void 0){if(o){let i=e.sqrtPriceX64.eq(e.sqrtPriceNextX64)?e.tickNext:e.tick,a=Pt.tickSpacingIndexFromTick(i,e.tickSpacing);!t&&i%e.tickSpacing===0&&(a=a-1),e.tickSpacingIndex=a,e.dynamicFeeInfo.volatilityAccumulator!==e.dynamicFeeInfo.maxVolatilityAccumulator&&this.updateVolatilityAccumulator({state:e})}e.tickSpacingIndex+=t?-1:1}}static splitFee({state:e,feeAmount:t,protocolFeeRate:o,fundFeeRate:i}){let a=t;if(o.gt(C)){let u=t.mul(o).div(new J.default(be));e.protocolFee=e.protocolFee.add(u),a=a.sub(u)}if(i.gt(C)){let u=t.mul(i).div(new J.default(be));e.fundFee=e.fundFee.add(u),a=a.sub(u)}if(e.liquidity.gt(C)){let u=ee(a,H,e.liquidity);e.feeGrowthGlobalX64=e.feeGrowthGlobalX64.add(u),e.lpFee=e.lpFee.add(a)}}},Zt=class{static newSwapComputationResult({sqrtPriceNextX64:e}){return{sqrtPriceNextX64:e!=null?e:C,amountIn:C,amountOut:C,feeAmount:C}}static calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:o,zeroForOne:i,isBaseInput:a}){if(a)try{return i?fe.getDeltaAmountAUnsigned(t,e,o,!0):fe.getDeltaAmountBUnsigned(e,t,o,!0)}catch(u){if(u.message==="MaxTokenOverflow")return null;throw u}else try{return i?fe.getDeltaAmountBUnsigned(t,e,o,!1):fe.getDeltaAmountAUnsigned(e,t,o,!1)}catch(u){if(u.message==="MaxTokenOverflow")return null;throw u}}static computeSwap(e,t,o,i,a,u,c,y){let m=this.newSwapComputationResult({});if(u){let A=y?ee(i,new J.default(Le-a),new J.default(Le)):i,k=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:o,zeroForOne:c,isBaseInput:u});k!==null&&(m.amountIn=k),m.sqrtPriceNextX64=k!==null&&A.gte(m.amountIn)?t:wt.getNextSqrtPriceFromInput(e,o,A,c)}else{let A=y?i:j(i,new J.default(Le),new J.default(Le-a)),k=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:o,zeroForOne:c,isBaseInput:u});k!==null&&(m.amountOut=k),m.sqrtPriceNextX64=k!==null&&A.gte(m.amountOut)?t:wt.getNextSqrtPriceFromOutput(e,o,A,c)}if(c){if(!m.sqrtPriceNextX64.gte(t))throw Error("!result.sqrtPriceNextX64.gte(sqrtPriceTargetX64)")}else if(!t.gte(m.sqrtPriceNextX64))throw Error("!sqrtPriceTargetX64.gte(result.sqrtPriceNextX64)");let f=t.eq(m.sqrtPriceNextX64);if(c?(f&&u||(m.amountIn=fe.getDeltaAmountAUnsigned(m.sqrtPriceNextX64,e,o,!0)),f&&!u||(m.amountOut=fe.getDeltaAmountBUnsigned(m.sqrtPriceNextX64,e,o,!1))):(f&&u||(m.amountIn=fe.getDeltaAmountBUnsigned(e,m.sqrtPriceNextX64,o,!0)),f&&!u||(m.amountOut=fe.getDeltaAmountAUnsigned(e,m.sqrtPriceNextX64,o,!1))),u)y?m.sqrtPriceNextX64.eq(t)?m.feeAmount=j(m.amountIn,new J.default(a),new J.default(Le-a)):m.feeAmount=i.sub(m.amountIn):(m.feeAmount=j(m.amountOut,new J.default(a),new J.default(Le)),m.amountOut=m.amountOut.sub(m.feeAmount),f||(m.amountIn=i));else if(y)m.amountOut=J.default.min(m.amountOut,i),m.feeAmount=j(m.amountIn,new J.default(a),new J.default(Le-a));else{m.feeAmount=j(m.amountOut,new J.default(a),new J.default(Le));let A=m.amountOut.sub(m.feeAmount);A.gt(i)?(m.feeAmount=m.amountOut.sub(i),m.amountOut=i):m.amountOut=A}return m}};0&&(module.exports={SwapMathUtil,SwapState});
//# sourceMappingURL=swapMath.js.map