@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 88.1 kB
JavaScript
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,Hn=Object.prototype.propertyIsEnumerable;var Yn=(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)&&Yn(r,t,e[t]);if(St)for(var t of St(e))Hn.call(e,t)&&Yn(r,t,e[t]);return r},W=(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&&Hn.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 Hs={};Ki(Hs,{SwapMathUtil:()=>Qt,SwapState:()=>Ht});module.exports=xi(Hs);var $n=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 q(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=q("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 b=u.map(A=>{let k=r._buildArgs([A.map(h=>h.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:k}}),m=ln(b,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:M,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:M,lamports:T,owner:new $n.PublicKey(I),rentEpoch:x}}return null})))}else try{c=await Promise.all(u.map(b=>r.getMultipleAccountsInfo(b,i)))}catch(b){b instanceof Error&&cn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${b.message}`)}return c.flat()}var Me=g(require("bn.js")),Ys=g(require("decimal.js"));var no=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")),eo=g(require("bn.js")),to=g(require("decimal.js-light"));var ze=g(require("bn.js"));var Jn=9007199254740991;function me(r){let e=q("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>=Jn||r<=-Jn)&&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=q("module/fraction"),mn=st(ut.default),ct=st(to.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 eo.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 Au=q("Raydium_amount"),wu=st(no.default);var oo=require("@solana/web3.js"),dn=require("@solana/spl-token"),Ct={chainId:101,address:oo.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"),io=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:io.TOKEN_PROGRAM_ID,isWritable:!1}),Xe({pubkey:z.SystemProgram.programId,isWritable:!1}),Xe({pubkey:z.SYSVAR_RENT_PUBKEY,isWritable:!1})];function ro({publicKey:r,transformSol:e}){let t=ao(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 ao(r){try{return new z.PublicKey(r)}catch{return r}}var pn=new z.PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),lt=new z.PublicKey("SysvarRent111111111111111111111111111111111"),Iu=new z.PublicKey("SysvarC1ock11111111111111111111111111111111"),Rt=new z.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),_i=new z.PublicKey("Sysvar1nstructions1111111111111111111111111"),Vi=z.SystemProgram.programId,Bu=new z.PublicKey("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Su=new z.PublicKey("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ku=new z.PublicKey("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),xu=new z.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Cu=new z.PublicKey("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ru=new z.PublicKey("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Lu=new z.PublicKey("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ou=new z.PublicKey("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Nu=new z.PublicKey("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Mu=new z.PublicKey("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Fu=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:ro({publicKey:e}),this.isToken2022=u}equals(e){return this===e?!0:this.mint.equals(e.mint)}},se=fn;se.WSOL=new fn(W(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 so=g(require("bn.js"));var zu=new Y(new so.default(100));var $u=q("Raydium_price");var Xs=require("lodash");var Di=g(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"},Ei=W(N({},uo),{BASE_HOST:"https://api-v3-devnet.raydium.io",OWNER_BASE_HOST:"https://owner-v1-devnet.raydium.io",SWAP_HOST:"https://transaction-v1-devnet.raydium.io",CPMM_LOCK:"https://dynamic-ipfs-devnet.raydium.io/lock/cpmm/position",TEMP_HOST:"https://temp-api-v1-devnet.raydium.io",LAUNCH_AUTH_HOST:"https://launch-auth-v1-devnet.raydium.io",LAUNCH_COMMENT_HOST:"https://launch-forum-v1-devnet.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1-devnet.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1-devnet.raydium.io"});var Kc=q("Raydium_Api");var Io=require("@solana/web3.js");var Ut=require("@solana/spl-token");var U=require("@solana/web3.js"),po=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 b=new ge.AddressLookupTableAccount({key:c,state:ge.AddressLookupTableAccount.deserialize(u.data)});i[c.toString()]=b,t==="devnet"?He[c.toString()]=b:Ye[c.toString()]=b}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},He={},Pn=async r=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(He[e])return He;let t=new ge.PublicKey(e),o=await r.getAccountInfo(t);return o&&(He[e]=new ge.AddressLookupTableAccount({key:t,state:ge.AddressLookupTableAccount.deserialize(o.data)})),He};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 lo=require("@solana/spl-token"),co=q("Raydium_txUtil"),mo=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 Qe(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&&co.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&co.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<mo}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<mo}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 _e(r){let e=[];return r.forEach(t=>{t instanceof ue.Transaction&&(t.recentBlockhash||(t.recentBlockhash=lo.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 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(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(W(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:b}=i||{},m=a!=null?a:await Qe(this.connection,this.blockhashCommitment);if(t.recentBlockhash=m,this.signers.length&&t.sign(...this.signers),_e([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:b?"":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)],b=[...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:b,execute:async f=>{var x;let{sequentially:A,onTxUpdate:k,skipTxCount:h=0,recentBlockHash:M,skipPreflight:T=!0}=f||{},I=M!=null?M:await Qe(this.connection,this.blockhashCommitment);if((x=this.owner)!=null&&x.isKeyPair){if(A){let R=[],V=0;for(let E of u){if(++V,V<=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));_e(R);let V=await this.signAllTransactions(R);if(A){let E=0,P=[],B=async()=>{if(!V[E])return;let S=await this.connection.sendRawTransaction(V[E].serialize(),{skipPreflight:T});P.push({txId:S,status:"sent",signedTx:V[E]}),k==null||k([...P]),E++;let L=!1,F=null,D=null,pe=X=>{F!==null&&clearInterval(F),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&&(F=setInterval(async()=>{var X;if(L){clearInterval(F);return}try{let G=await this.connection.getTransaction(S,{commitment:"confirmed",maxSupportedTransactionVersion:1});G&&(L=!0,clearInterval(F),pe({err:((X=G.meta)==null?void 0:X.err)||null}),console.log("tx status from getTransaction:",S))}catch(G){L=!0,clearInterval(F),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:V}}else{let E=[];for(let P=0;P<V.length;P+=1){let B=await this.connection.sendRawTransaction(V[P].serialize(),{skipPreflight:T});E.push(B)}return{txIds:E,signedTxs:V}}}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 M=e||{},{lookupTableCache:t={},lookupTableAddress:o=[],forerunCreate:i,recentBlockhash:a}=M,u=we(M,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),c=N(N({},this.cluster==="devnet"?await Pn(this.connection):await gn(this.connection)),t),b=Array.from(new Set([...o,...this.lookupTableAddress])),m=[];for(let I of b)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 Qe(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:V}=I||{};if(_e([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:V?"":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)],b=[...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:b,buildProps:o,execute:async f=>{var T;let{sequentially:A,onTxUpdate:k,recentBlockHash:h,skipPreflight:M=!0}=f||{};if(h&&u.forEach(I=>I.message.recentBlockhash=h),_e(u),(T=this.owner)!=null&&T.isKeyPair){if(A){let I=[];for(let x of u){let R=await this.connection.sendTransaction(x,{skipPreflight:M});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:M}))),signedTxs:u}}if(this.signAllTransactions){let I=await this.signAllTransactions(u);if(A){let x=0,R=[],V=async()=>{if(!I[x])return;let E=await this.connection.sendTransaction(I[x],{skipPreflight:M});R.push({txId:E,status:"sent",signedTx:I[x]}),k==null||k([...R]),x++;let P=!1,B=null,S=null,L=F=>{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=F.err?"error":"success"}k==null||k([...R]),F.err||V()};this.loopMultiTxStatus&&(B=setInterval(async()=>{var F;if(P){clearInterval(B);return}try{let D=await this.connection.getTransaction(E,{commitment:"confirmed",maxSupportedTransactionVersion:1});D&&(P=!0,clearInterval(B),L({err:((F=D.meta)==null?void 0:F.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,F=>{if(P){this.connection.removeSignatureListener(S);return}P=!0,L(F)},"confirmed"),this.connection.getSignatureStatus(E)};return V(),{txIds:[],signedTxs:I}}else{let x=[];for(let R=0;R<I.length;R+=1){let V=await this.connection.sendTransaction(I[R],{skipPreflight:M});x.push(V)}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,M)=>W(N({},h),{[M.publicKey.toBase58()]:M}),{}),c=[],b=[],m=[],f=0;if(this.allInstructions.forEach(h=>{let M=[...m,h],T=o?[...a.instructions,...M]:M,x=[...new Set(M.map(R=>R.keys.filter(V=>V.isSigner).map(V=>V.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:M,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)),b.push(Array.from(new Set(m.map(R=>R.keys.filter(V=>V.isSigner).map(V=>V.pubkey.toString())).flat())).map(R=>u[R]).filter(R=>R!==void 0)),m=[h]}}),m.length>0){let M=[...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:M.map(T=>T.publicKey)})?c.push(new U.Transaction().add(...a.instructions,...m)):c.push(new U.Transaction().add(...m)),b.push(M)}return c.forEach(h=>h.feePayer=this.feePayer),(k=this.owner)!=null&&k.signer&&b.forEach(h=>{h.some(M=>M.publicKey.equals(this.owner.publicKey))||h.push(this.owner.signer)}),{builder:this,transactions:c,signers:b,instructionTypes:this.instructionTypes,execute:async h=>{var E;let{sequentially:M,onTxUpdate:T,skipTxCount:I=0,recentBlockHash:x,skipPreflight:R=!0}=h||{},V=x!=null?x:await Qe(this.connection,this.blockhashCommitment);if(c.forEach(async(P,B)=>{P.recentBlockhash=V,b[B].length&&P.sign(...b[B])}),_e(c),(E=this.owner)!=null&&E.isKeyPair){if(M){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(F=>F.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(M){let S=0,L=[],F=async()=>{if(!B[S])return;S<I&&(L.push({txId:"",status:"success",signedTx:B[S]}),T==null||T([...L]),S++,F());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=H=>{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=H.err?"error":"success"}T==null||T([...L]),H.err||F()};this.loopMultiTxStatus&&(X=setInterval(async()=>{var H;if(pe){clearInterval(X);return}try{let le=await this.connection.getTransaction(D,{commitment:"confirmed",maxSupportedTransactionVersion:1});le&&(pe=!0,clearInterval(X),ae({err:((H=le.meta)==null?void 0:H.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,H=>{if(pe){this.connection.removeSignatureListener(G);return}pe=!0,ae(H)},"confirmed"),this.connection.getSignatureStatus(D)};return await F(),{txIds:L.map(D=>D.txId),signedTxs:B}}else{let S=[];for(let L=0;L<B.length;L+=1){let F=await this.connection.sendRawTransaction(B[L].serialize(),{skipPreflight:R});S.push(F)}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 V=e||{},{computeBudgetConfig:t,splitIns:o=[],lookupTableCache:i={},lookupTableAddress:a=[],insCountLimit:u=12}=V,c=we(V,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),b=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)b[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))b[P]=B;let k=t?Nt(t):{instructions:[],instructionTypes:[]},h=await Qe(this.connection,this.blockhashCommitment),M=this.signers.reduce((P,B)=>W(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:b})||dt({instructions:B,payer:this.feePayer,lookupTableAddressAccount:b})))x.push(P);else{if(x.length===0)throw Error("item ins too big");R+=P===o[R]?1:0;let L={};for(let F of[...new Set(m)])b[F]!==void 0&&(L[F]=b[F]);if(t&&dt({instructions:[...k.instructions,...x],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:h})){let F=new U.TransactionMessage({payerKey:this.feePayer,recentBlockhash:h,instructions:[...k.instructions,...x]}).compileToV0Message(Object.values(b));T.push(new U.VersionedTransaction(F))}else{let F=new U.TransactionMessage({payerKey:this.feePayer,recentBlockhash:h,instructions:[...x]}).compileToV0Message(Object.values(b));T.push(new U.VersionedTransaction(F))}I.push(Array.from(new Set(x.map(F=>F.keys.filter(D=>D.isSigner).map(D=>D.pubkey.toString())).flat())).map(F=>M[F]).filter(F=>F!==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=>M[S]).filter(S=>S!==void 0);if(t&&dt({instructions:[...k.instructions,...x],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:h})){let S=new U.TransactionMessage({payerKey:this.feePayer,recentBlockhash:h,instructions:[...k.instructions,...x]}).compileToV0Message(Object.values(b));T.push(new U.VersionedTransaction(S))}else{let S=new U.TransactionMessage({payerKey:this.feePayer,recentBlockhash:h,instructions:[...x]}).compileToV0Message(Object.values(b));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:F,skipPreflight:D=!0}=P||{};if(T.map(async(X,G)=>{I[G].length&&X.sign(I[G]),F&&(X.message.recentBlockhash=F)}),_e(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 H=await this.connection.sendTransaction(ae,{skipPreflight:D});await Mt(this.connection,H),G.push(H)}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,H=[],le=async()=>{if(!G[ae])return;if(ae<L){H.push({txId:"",status:"success",signedTx:G[ae]}),S==null||S([...H]),ae++,le();return}let Be=await this.connection.sendTransaction(G[ae],{skipPreflight:D});H.push({txId:Be,status:"sent",signedTx:G[ae]}),S==null||S([...H]),ae++;let ot=!1,Ge=null,Bt=null,Xn=Fe=>{Ge!==null&&clearInterval(Ge),Bt!==null&&this.connection.removeSignatureListener(Bt);let Se=H.findIndex(wi=>wi.txId===Be);if(Se>-1){if(H[Se].status==="error"||H[Se].status==="success")return;H[Se].status=Fe.err?"error":"success"}S==null||S([...H]),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:1});Se&&(ot=!0,clearInterval(Ge),Xn({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,Xn(Fe)},"confirmed"),this.connection.getSignatureStatus(Be)};return le(),{txIds:[],signedTxs:G}}else{let ae=[];for(let H=0;H<G.length;H+=1){let le=await this.connection.sendTransaction(G[H],{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=q(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 Po=require("@solana/web3.js"),Ze=g(require("bn.js"));var w=require("@solana/buffer-layout"),_t=w.Layout,fo=w.Structure;var kn=w.UInt;var yo=w.u8,ee=w.u16;var Vt=w.u32;var Pe=w.s32;var bo=w.seq;var v=w.blob;var Tn=w.bits,go=w.offset;var Ee=class extends _t{constructor(t,o,i){super(t,i);this.blob=v(t),this.signed=o}decode(t,o=0){let i=new Ze.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 Ze.default(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),o,i)}},Et=class extends _t{constructor(t){super(8,t);this._lower=Tn(Vt(),!1),this._upper=Tn(Vt(),!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 Q(r){return new kn(4,r)}function n(r){return new Ee(8,!1,r)}function O(r){return new Ee(16,!1,r)}function Ao(r){return new Ee(1,!0,r)}function $e(r){return new Ee(8,!0,r)}function wo(r){return new Ee(16,!0,r)}var pt=class extends _t{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 Po.PublicKey(e),e=>e.toBuffer(),r)}function ye(r){return new pt(yo(),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 In(r,e){let t=Vt("length"),o=p([t,y(r,go(t,-t.span),"values")]);return new pt(o,({values:i})=>i,i=>({values:i}),e)}var hn=class extends fo{decode(e,t){return super.decode(e,t)}};function p(r,e,t){return new hn(r,e,t)}function y(r,e,t){let o,i=typeof e=="number"?e:(0,Ze.isBN)(e)?e.toNumber():new Proxy(e,{get(a,u){if(!o){let c=Reflect.get(a,"count");o=(0,Ze.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 bo(r,i,t)}var Dt=p([s("mint"),s("owner"),n("amount"),Q("delegateOption"),s("delegate"),d("state"),Q("isNativeOption"),n("isNative"),n("delegatedAmount"),Q("closeAuthorityOption"),s("closeAuthority")]);var ni=require("@solana/web3.js"),Ca=require("@solana/spl-token");var Qi=require("@solana/web3.js"),Zi=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"),Bn=new K.PublicKey("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Ql=new K.PublicKey("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),$i=new K.PublicKey("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),xo=new K.PublicKey("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Co=new K.PublicKey("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Zl=new K.PublicKey("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),ji=new K.PublicKey("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Ro=new K.PublicKey("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Ji=new K.PublicKey("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),er=new K.PublicKey("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Lo=new K.PublicKey("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),$l=new K.PublicKey("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),tr=new K.PublicKey("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Sn=new K.PublicKey("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),nr=new K.PublicKey("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),jl=new K.PublicKey("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),or=new K.PublicKey("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),ir=new K.PublicKey("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),rr=new K.PublicKey("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Jl=new K.PublicKey("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),em=new K.PublicKey("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),tm=new K.PublicKey("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),nm=new K.PublicKey("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),om=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 Fn=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([Q("mintAuthorityOption"),s("mintAuthority"),n("supply"),d("decimals"),d("isInitialized"),Q("freezeAuthorityOption"),s("freezeAuthority")]);var Nn=require("@solana/spl-token"),jt=require("@solana/web3.js"),qr=g(require("bn.js"));var _=g(require("bn.js")),Z=new _.default(1).shln(64),Je=64,cr=new _.default(1).shln(128),ft=new _.default(1).shln(64).subn(1),lr=new _.default(1).shln(128).subn(1),Ce=-443636,Re=443636,De=new _.default("4295048016"),We=new _.default("79226673521066979257578248091"),Oo=new _.default("59543866431248"),No=new _.default("184467440737095516"),Mo=new _.default("15793534762490258745"),Fo=16;var Kn=60,xm=new _.default("18446743708227953217"),vo=[{bit:0,factor:new _.default("fffcb933bd6fb800",16)},{bit:1,factor:new _.default("fff97272373d4000",16)},{bit:2,factor:new _.default("fff2e50f5f657000",16)},{bit:3,factor:new _.default("ffe5caca7e10f000",16)},{bit:4,factor:new _.default("ffcb9843d60f7000",16)},{bit:5,factor:new _.default("ff973b41fa98e800",16)},{bit:6,factor:new _.default("ff2ea16466c9b000",16)},{bit:7,factor:new _.default("fe5dee046a9a3800",16)},{bit:8,factor:new _.default("fcbe86c7900bb000",16)},{bit:9,factor:new _.default("f987a7253ac65800",16)},{bit:10,factor:new _.default("f3392b0822bb6000",16)},{bit:11,factor:new _.default("e7159475a2caf000",16)},{bit:12,factor:new _.default("d097f3bdfd2f2000",16)},{bit:13,factor:new _.default("a9f746462d9f8000",16)},{bit:14,factor:new _.default("70d869a156f31c00",16)},{bit:15,factor:new _.default("31be135f97ed3200",16)},{bit:16,factor:new _.default("9aa508b5b85a500",16)},{bit:17,factor:new _.default("5d6af8dedc582c",16)},{bit:18,factor:new _.default("2216e584f5fa",16)}],Le=1e6;var Gt=1e5,yt=1e4,_o=1e4,Vo=1e5;var bt=3,Eo=100;var Do=10,Wo=100,zt=14;var C=new _.default(0),Ie=new _.default(1),Cm=new _.default(-1);var Rm=new _.default("18446744073700000000");var mr=p([v(8),d("bump"),ee("index"),s("owner"),Q("protocolFeeRate"),Q("tradeFeeRate"),ee("tickSpacing"),Q("fundFeeRate"),y(Q(),1),s("fundOwner"),y(n(),3)]),dr=p([Q("blockTimestamp"),$e("tickCumulative"),y(n(),4)]),qo=p([v(8),ye("initialized"),n("recentEpoch"),ee("observationIndex"),s("poolId"),y(dr,Eo,"observations"),y(n(),4)]),pr=p([ee("filterPeriod"),ee("decayPeriod"),ee("reductionFactor"),Q("dynamicFeeControl"),Q("maxVolatilityAccumulator"),Pe("tickSpacingIndexReference"),Q("volatilityReference"),Q("volatilityAccumulator"),n("lastUpdateTimestamp"),y(d(),46)]),fr=p([d("state"),n("openTime"),n("endTime"),n("lastUpdateTime"),O("emissionsPerSecondX64"),n("totalEmissioned"),n("claimed"),s("mint"),s("vault"),s("creator"),O("growthGlobalX64")]),xn=p([v(8),d("bump"),s("configId"),s("creator"),s("mintA"),s("mintB"),s("vaultA"),s("vaultB"),s("observationId"),d("mintDecimalsA"),d("mintDecimalsB"),ee("tickSpacing"),O("liquidity"),O("sqrtPriceX64"),Pe("tickCurrent"),Q(),O("feeGrowthGlobalX64A"),O("feeGrowthGlobalX64B"),n("protocolFeesTokenA"),n("protocolFeesTokenB"),y(O(),4),d("status"),d("feeOn"),v(6),y(fr,bt,"rewardInfos"),v(8*16,"tickArrayBitmap"),y(n(),4),n("fundFeesTokenA"),n("fundFeesTokenB"),n("startTime"),n("recentEpoch"),pr.replicate("dynamicFeeInfo"),y(n(),46)]),yr=p([O("growthInsideLastX64"),n("rewardAmountOwed")]),br=p([v(8),d("bump"),s("nftMint"),s("poolId"),Pe("tickLower"),Pe("tickUpper"),O("liquidity"),O("feeGrowthInsideLastX64A"),O("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),y(yr,bt,"rewardInfos"),n("recentEpoch"),y(n(),7)]),Mm=p([v(8),d("bump"),s("poolId"),Pe("tickLower"),Pe("tickUpper"),O("liquidity"),O("feeGrowthInsideLastX64A"),O("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),y(O(),bt,"rewardGrowthInside"),n("recentEpoch"),y(n(),7)]),gr=p([Pe("tick"),wo("liquidityNet"),O("liquidityGross"),O("feeGrowthOutsideX64A"),O("feeGrowthOutsideX64B"),y(O(),bt,"rewardGrowthsOutsideX64"),n("orderPhase"),n("ordersAmount"),n("partFilledOrdersRemaining"),O("unfilledRatioX64"),y(Q(),3)]),Uo=p([v(8),s("poolId"),Pe("startTickIndex"),y(gr,Kn,"ticks"),d("initializedTickCount"),n("recentEpoch"),y(d(),107)]),Pr=p([v(8),d("bump"),y(s(),Do,"operationOwners"),y(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"),O("unfilledRatioX64"),y(n(),4)]),Go=p([v(8),s("poolId"),v(8*8*zt,"positiveTickArrayBitmap"),v(8*8*zt,"negativeTickArrayBitmap")]),Fm=p([v(8),ee("index"),ee("filterPeriod"),ee("decayPeriod"),ee("reductionFactor"),Q("dynamicFeeControl"),Q("maxVolatilityAccumulator"),y(n(),8)]),wr=p([v(8),s("wallet"),d("nonceIndex"),n("orderNonce"),y(n(),4)]),vm=p([n(),d("bump"),s("owner"),s("poolId"),s("positionId"),s("nftAccount"),y(n(),8)]),kr=p([v(8),d("bump"),s("lockOwner"),s("poolId"),s("positionId"),s("nftAccount"),s("lockNftMint"),n("recentEpoch"),y(n(),8)]);var Tr=g(require("bn.js"));var Hm=Buffer.from("amm_config","utf8"),Ir=Buffer.from("pool","utf8"),Br=Buffer.from("pool_vault","utf8"),Qm=Buffer.from("pool_reward_vault","utf8"),Zm=Buffer.from("position","utf8"),$m=Buffer.from("tick_array","utf8"),jm=Buffer.from("operation","utf8"),Jm=Buffer.from("pool_tick_array_bitmap_extension","utf8"),ed=Buffer.from("observation","utf8"),td=Buffer.from("support_mint","utf8"),nd=Buffer.from("dynamic_fee_config","utf8"),od=Buffer.from("permission","utf8");var id=Buffer.from("locked_position","utf8");var Qo=require("js-sha256");var zo=g(require("bn.js")),Sr=g(require("decimal.js"));function te(r,e,t){if(t.isZero())throw new Error("Division by zero");return r.mul(e).div(t)}function $(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 sd=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 ne=g(require("bn.js")),qe=g(require("decimal.js"));var j=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=Z.clone();for(let{bit:i,factor:a}of vo)(t&1<<i)!==0&&(o=te(o,a,Z));return e>0&&(o=te(Z,Z,o)),o}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:o}){if(o){let i=j.getPriceAtTick(t,!1);return te(e,i,Z)}else{let i=j.getPriceAtTick(t,!0);return te(e,Z,i)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:o}){if(o){let i=j.getPriceAtTick(t,!0);return $(e,i,Z)}else{let i=j.getPriceAtTick(t,!1);return $(e,Z,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},b=this.limitOrderUnfilledAmount({tick:e});if(t.isZero()||b.isZero())return c;if(i)u?(c.ammFeeAmount=$(t,new ne.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(b)&&(c.amountOut=b,c.amountIn=this.getLimitOrderInput({amountOut:b,tick:e.tick,zeroForOne:!o}),u&&(c.ammFeeAmount=$(c.amountIn,new ne.default(a),be.sub(new ne.default(a)))));else{let A=ne.default.min(t,b);u?c.amountOut=A:c.amountOut=ne.default.min($(A,be,be.sub(new ne.default(a))),b),c.amountIn=this.getLimitOrderInput({amountOut:c.amountOut,tick:e.tick,zeroForOne:!o}),u&&(c.ammFeeAmount=$(c.amountIn,new ne.default(a),be.sub(new ne.default(a))))}let m=C;e.partFilledOrdersRemaining.gt(C)&&(m=ne.default.min(e.partFilledOrdersRemaining,c.amountOut),m.gt(C)&&(e.unfilledRatioX64=te(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=te(Z,e.ordersAmount.sub(f),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(f),e.ordersAmount=C}return u||(c.ammFeeAmount=$(c.amountOut,new ne.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(Z.subn(1)).div(Z):o.mul(o).div(Z)}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 ne.default(o).shln(32):i=new ne.default(-o).shln(32).neg();let a;t>=64?a=e.shrn(t-63):a=e.shln(63-t);let u=new ne.default(0),c=new ne.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 b=u.shrn(32),f=i.add(b).mul(Oo),A=f.sub(No),k=f.add(Mo),h=this.signedShrn64(A),M=this.signedShrn64(k);return h===M?h:j.getSqrtPriceAtTick(M).lte(e)?M:h}static signedShrn64(e){if(e.isNeg()){let t=new ne.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 ne.default(10).pow(new ne.default(u)),b=i.mul(c),m=new ne.default(1).shln(128),A=b.div(m).toString();for(;A.length<=u;)A="0"+A;let k=A.slice(0,-u),h=A.slice(-u),M=k+"."+h;return new qe.default(M).mul(new qe.default(10).pow(a))}static tickToPrice(e,t,o){let i=j.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 ne.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=j.toTickIndex(j.priceToTick(u,t,o),a),b=j.tickToPrice(c,t,o);return{price:i?b:new qe.default(1).div(b),tick:c}}};var gt=g(require("bn.js")),Rn=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($(a,u,t),e):te(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?$(o,t.sub(e),Z):te(o,t.sub(e),Z);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=te(e,t,Z),a=t.sub(e);return te(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 te(o,Z,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:b,amountB:m}=this.getAmountsForLiquidity(e,t,o,i,u),f=a?1+c:1-c,A=new gt.default(new Rn.default(b.toString()).mul(f).toFixed(0)),k=new gt.default(new Rn.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"),On=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/_o),e.lastUpdateTimestamp=new On.default(o)):(e.tickSpacingIndexReference=t,e.volatilityReference=0,e.lastUpdateTimestamp=new On.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 $(a,e,c);let b=te(a,Ie,e);return $(a,Ie,b.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 $(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(Qo.sha256.digest(e)).slice(0,8)}qo.span;var vp=q("Raydium_Clmm"),_p={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 Qr=p([d("instruction")]),Zr=p([d("instruction")]),$r=p([n("rewardState"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardLastUpdateTime"),n("totalReward"),n("totalRewardEmissioned"),n("rewardClaimed"),n("rewardPerSecond"),O("accRewardPerShare"),s("rewardVault"),s("rewardMint"),s("rewardSender"),n("rewardType"),y(n(),15,"padding")]),jr=p([n("state"),n("nonce"),s("lpVault"),s("rewardVault"),s(),s(),n(),n(),n("totalReward"),O("perShareReward"),n("lastSlot"),n("perSlotReward")]),Jr=p([n("state"),n("nonce"),s("lpVault"),s("rewardVaultA"),n("totalRewardA"),O("perShareRewardA"),n("perSlotRewardA"),d("option"),s("rewardVaultB"),v(7),n("totalRewardB"),O("perShareRewardB"),n("perSlotRewardB"),n("lastSlot"),s()]),ea=p([n(),n("state"),n("nonce"),n("validRewardTokenNum"),O("rewardMultiplier"),n("rewardPeriodMax"),n("rewardPeriodMin"),n("rewardPeriodExtend"),s("lpMint"),s("lpVault"),y($r,5,"rewardInfos"),s("creator"),s(),y(n(),32,"padding")]),ta=new Proxy(jr,{get(r,e,t){return e==="decode"?(...o)=>{let i=r.decode(...o);return W(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 W(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)}}),jo=new Proxy(ea,{get(r,e,t){return e==="decode"?(...o)=>{let i=r.decode(...o);return W(N({},i),{version:6,rewardInfos:i.rewardInfos.map(a=>{var u;return W(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"),y(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"),y(n(),1,"rewardDebts")]),Jo=p([n("state"),s("id"),s("owner"),n("deposited"),y(O(),1,"rewardDebts"),n(""),n("voteLockedBalance"),y(n(),15)]),If=p([n("state"),s("id"),s("owner"),n("deposited"),y(n(),2,"rewardDebts")]),sa=p([n("state"),s("id"),s("owner"),n("deposited"),y(O(),2,"rewardDebts"),y(n(),17)]),ua=p([n(),n("state"),s("id"),s("owner"),n("deposited"),y(O(),5,"rewardDebts"),y(n(),16)]),ca=p([d("instruction"),n("amount")]),la=p([s("mint"),s("grantAuthority"),n("baselineVoteWeightScaledFactor"),n("maxExtraLockupVoteWeightScaledFactor"),n("lockupSaturationSecs"),Ao("digitShift"),y(d(),7,"reserved1"),y(n(),7,"reserved2")]),ma=p([v(8),s("governanceProgramId"),s("realm"),s("realmGoverningTokenMint"),s("realmAuthority"),y(d(),32,"reserved1"),y(la,4,"votingMints"),$e("timeOffset"),d("bump"),y(d(),7,"reserved2"),y(n(),11,"reserved3")]),da=p([$e("startTime"),$e("endTime"),d("kind"),y(d(),15,"reserved")]),pa=p([y(da,1,"lockup"),n("amountDeposited_native"),n("amountInitiallyLockedNative"),ye("isUsed"),ye("allowClawback"),d("votingMintConfigIdx"),y(d(),29,"reserved")]),fa=p([v(8),s("voterAuthority"),s("registrar"),y(pa,32,"deposits"),d("voterBump"),d("voterWweightRecordBump"),y(d(),94,"reserved")]);var ya=require("@solana/spl-token"),Lf=q("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,[Bn.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")),_n=require("@solana/spl-token");var Ta=g(require("bn.js"));var Pa=require("@solana/web3.js"),Aa=g(require("bn.js"));var ey=q("Raydium.farm.util");var wy=q("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")]),_a=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"),O("swapBaseInAmount"),O("swapQuoteOutAmount"),n("swapBase2QuoteFee"),O("swapQuoteInAmount"),O("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"),y(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"),O("swapBaseInAmount"),O("swapQuoteOutAmount"),O("swapQuoteInAmount"),O("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"),y(n(),64,"padding")]),Va=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=q("Raydium_liquidity_instruction");var qa=5e4,Ua=p([n("x"),n("y"),n("price")]),Ob=p([n("accountType"),n("status"),n("multiplier"),n("validDataCount"),y(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 _b=q("Raydium_liquidity_serum");var as=g(require("bn.js")),ss=g(require("decimal.js"));var $a=require("@solana/spl-token"),ja=require("@solana/web3.js"),Ja=g(require("bn.js"));var tn=require("@solana/web3.js"),ri=require("@solana/spl-token");function Ha(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 Qa=p([v(5),Ha("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"),En=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"),kP=Buffer.from("creator_fee_share","utf8");var TP=Buffer.from("locked_liquidity","utf8");var MP=q("Raydium_cpmm"),FP={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"),ee("index"),n("tradeFeeRate"),n("protocolFeeRate"),n("fundFeeRate"),n("createPoolFee"),s("protocolOwner"),s("fundOwner"),n("creatorFeeRate"),n("creatorFeeShareRate"),y(n(),14)]),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"),y(d(),6),n("creatorFeesMintA"),n("creatorFeesMintB"),y(n(),28)]),VP=p([v(8),s("configId"),y(n(),30)]),EP=p([v(8),d("bump"),s("creator"),s("ammConfig"),n("shareRate"),y(n(),8)]);var gi=require("@solana/web3.js"),nt=require("@solana/spl-token"),Pi=g(require("bn.js")),Gs=g(require("decimal.js"));var Dn=require("@solana/spl-token"),li=require("@solana/web3.js"),mi=g(require("bn.js"));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"),uw=Buffer.from("platform_curve_rule","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]),createPlatformVestingAccount:Buffer.from([146,71,173,69,98,19,15,106]),createPlatformAllowConfig:Buffer.from([69,71,168,7,214,250,107,102]),closePlatformAllowConfig:Buffer.from([82,205,36,216,16,6,240,215]),createPlatformCurveRule:Buffer.from([148,71,180,136,122,144,59,21]),updatePlatformCurveRule:Buffer.from([90,100,206,196,54,117,120,139]),removePlatformCurveRule:Buffer.from([236,77,154,138,32,145,127,219]),closePlatformCurveRule:Buffer.from([194,114,82,45,136,88,169,159])};var Pw=new mi.default("18446744073709551615");var Ps=p([n(),n("epoch"),d("curveType"),ee("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"),y(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"),y(d(),54)]),Tw=p([n(),n("epoch"),s("poolId"),s("beneficiary"),n("claimedAmount"),n("tokenShareAmount"),y(n(),8)]),ks=p([d("migrateType"),d("migrateCpmmFeeOn"),n("supply"),n("totalSellA"),n("totalFundRaisingB"),n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod")]),hw=p([n("epoch"),d("index"),s("configId"),ks.replicate("bondingCurveParam"),y(n(),50)]),di=p([n(),n("epoch"),s("platformClaimFeeWallet"),s("platformLockNftWallet"),n("platformScale"),n("creatorScale"),n("burnScale"),n("feeRate"),y(d(),64,"name"),y(d(),256,"web"),y(d(),256,"img"),s("cpConfigId"),n("creatorFeeRate"),s("transferFeeExtensionAuth"),s("platformVestingWallet"),n("platformVestingScale"),s("platformCpCreator"),d("restrictGlobalConfig"),d("restrictCurveParam"),s("curveRuleManager"),y(d(),78)]),Ts=p([d("field"),d("op"),O("value")]),hs=p([ee("groupId"),n("epoch"),In(Ts,"constraints")]),Is=p([n(),d("bump"),d("version"),s("platformId"),s("configId"),n("epoch"),y(n(),8),In(hs,"groups")]);var pi=require("@solana/spl-token");var fi=g(require("bn.js"));var Fw=new fi.default(1e6);var Bs=g(require("bn.js")),Ss=g(require("decimal.js"));var Ls=g(require("bn.js")),Os=g(require("decimal.js"));var Ks=g(require("bn.js")),xs=g(require("decimal.js"));var Cs=g(require("bn.js")),Rs=g(require("decimal.js"));var Wn=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 Wn.default(i.mul(this._Q64).toFixed(0))}};an._Q64=new rn.default(new Wn.default(1).shln(64).toString());var Ue=require("@solana/spl-token"),oe=g(require("bn.js")),qn=require("@solana/web3.js");var Es=g(require("decimal.js")),hT={initPriceX64:new oe.default("515752397214619"),supply:new oe.default(1e15),totalSellA:new oe.default(7931e11),totalFundRaisingB:new oe.default(85e9),totalFundRaisingBUSD:new oe.default(125e8),totalLockedAmount:new oe.default("0"),cliffPeriod:new oe.default("0"),unlockPeriod:new oe.default("0"),decimals:6,virtualA:new oe.default("1073471847374405"),virtualB:new oe.default("30050573465"),realA:new oe.default(0),realB:new oe.default(0),protocolFee:new oe.default(0),platformId:new qn.PublicKey("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new oe.default(0),cliffPeriod:new oe.default(0),unlockPeriod:new oe.default(0),startTime:new oe.default(0),totalAllocatedShare:new oe.default(0)}},IT=new oe.default(1e4);var Ds={[xo.toBase58()]:3};var Ws=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 qs=require("@solana/web3.js");var $T=q("Serum");var Un=require("@solana/spl-token"),Gn=require("@solana/web3.js"),Us=g(require("bn.js"));var Yh=new Pi.default(0);var Ne=require("@solana/web3.js"),Ai=require("@solana/spl-token"),zn=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 zn.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 b=await Ke(e,[...u,...c]),m=[];for(let f=0;f<b.length;f++){let A=Math.floor(f/o.length),k=f%o.length,h=u[k],M=c[f],T=b[k],I=b[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),V=x.openTime.toNumber(),E=x.endTime.toNumber(),P=R.tokenInfo.map(L=>L.debtAmount.gt(new zn.default(0))).filter(L=>!L).length!==3,B=a>V&&a<E&&x.status===1,S=P&&B;m.push({programId:t,poolId:h,ammId:x.ammId,ownerAccountId:M,snapshotLpAmount:R.lpAmount,project:ce.VERSION_PROJECT[A],openTime:V,endTime:E,canClaim:S,canClaimErrorType:P?B?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:x.tokenInfo.map((L,F)=>({mintAddress:L.mintAddress,mintVault:L.mintVault,mintDecimals:L.mintDecimals,perLpLoss:L.perLpLoss,debtAmount:R.tokenInfo[F].debtAmount.add(R.tokenInfo[F].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:b}=i.build();return[{transaction:c,signer:b}]}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:M}=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});M&&i.addInstruction(M),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:b}=i.build(),m=i.allInstructions;return An(m,[a,...b.map(f=>f.publicKey)])?[{transaction:c,signer:b}]:[{transaction:new Ne.Transaction().add(...m.slice(0,i.AllTxData.instructions.length-1)),signer:b},{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(b=>({pubkey:b,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:b})=>({pubkey:b,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"),y(p([d("mintDecimals"),s("mintAddress"),s("mintVault"),n("perLpLoss"),n("totalClaimedAmount")]),ce.CLAIMED_NUM,"tokenInfo"),y(n(),10,"padding")]),Ae.OWNER_LAYOUT=p([v(8),d("bump"),d("version"),s("poolId"),s("owner"),n("lpAmount"),y(p([s("mintAddress"),n("debtAmount"),n("claimedAmount")]),ce.CLAIMED_NUM,"tokenInfo"),y(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 zs=require("@solana/web3.js"),It=require("@solana/spl-token");var xB=new Me.default(2),CB=new Me.default(3),RB=new Me.default(5),Fi=new Me.default(10),LB=new Me.default(100),OB=new Me.default(1e3),NB=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 Ht=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=j.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=Vo*yt*yt,u=$(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=j.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:b}){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:b})}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=te(a,Z,e.liquidity);e.feeGrowthGlobalX64=e.feeGrowthGlobalX64.add(u),e.lpFee=e.lpFee.add(a)}}},Qt=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,b){let m=this.newSwapComputationResult({});if(u){let A=b?te(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=b?i:$(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)b?m.sqrtPriceNextX64.eq(t)?m.feeAmount=$(m.amountIn,new J.default(a),new J.default(Le-a)):m.feeAmount=i.sub(m.amountIn):(m.feeAmount=$(m.amountOut,new J.default(a),new J.default(Le)),m.amountOut=m.amountOut.sub(m.feeAmount),f||(m.amountIn=i));else if(b)m.amountOut=J.default.min(m.amountOut,i),m.feeAmount=$(m.amountIn,new J.default(a),new J.default(Le-a));else{m.feeAmount=$(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