UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

2 lines 78.2 kB
var Po=Object.defineProperty,Ao=Object.defineProperties;var wo=Object.getOwnPropertyDescriptors;var st=Object.getOwnPropertySymbols;var sn=Object.prototype.hasOwnProperty,un=Object.prototype.propertyIsEnumerable;var an=(r,e,n)=>e in r?Po(r,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[e]=n,O=(r,e)=>{for(var n in e||(e={}))sn.call(e,n)&&an(r,n,e[n]);if(st)for(var n of st(e))un.call(e,n)&&an(r,n,e[n]);return r},D=(r,e)=>Ao(r,wo(e));var pe=(r,e)=>{var n={};for(var o in r)sn.call(r,o)&&e.indexOf(o)<0&&(n[o]=r[o]);if(r!=null&&st)for(var o of st(r))e.indexOf(o)<0&&un.call(r,o)&&(n[o]=r[o]);return n};import ga from"bn.js";import _ from"bn.js";var $=new _(1).shln(64);var ko=new _(1).shln(128),Kt=new _(1).shln(64).subn(1),To=new _(1).shln(128).subn(1),Ne=-443636,Me=443636,Be=new _("4295048016"),Se=new _("79226673521066979257578248091"),cn=new _("59543866431248"),ln=new _("184467440737095516"),mn=new _("15793534762490258745"),dn=16;var xt=60,wa=new _("18446743708227953217"),pn=[{bit:0,factor:new _("fffcb933bd6fb800",16)},{bit:1,factor:new _("fff97272373d4000",16)},{bit:2,factor:new _("fff2e50f5f657000",16)},{bit:3,factor:new _("ffe5caca7e10f000",16)},{bit:4,factor:new _("ffcb9843d60f7000",16)},{bit:5,factor:new _("ff973b41fa98e800",16)},{bit:6,factor:new _("ff2ea16466c9b000",16)},{bit:7,factor:new _("fe5dee046a9a3800",16)},{bit:8,factor:new _("fcbe86c7900bb000",16)},{bit:9,factor:new _("f987a7253ac65800",16)},{bit:10,factor:new _("f3392b0822bb6000",16)},{bit:11,factor:new _("e7159475a2caf000",16)},{bit:12,factor:new _("d097f3bdfd2f2000",16)},{bit:13,factor:new _("a9f746462d9f8000",16)},{bit:14,factor:new _("70d869a156f31c00",16)},{bit:15,factor:new _("31be135f97ed3200",16)},{bit:16,factor:new _("9aa508b5b85a500",16)},{bit:17,factor:new _("5d6af8dedc582c",16)},{bit:18,factor:new _("2216e584f5fa",16)}];var Xe=3,fn=100;var yn=10,bn=100,ut=14;var q=new _(0),we=new _(1),ka=new _(-1);var Ta=new _("18446744073700000000");import{PublicKey as Bo}from"@solana/web3.js";import{get as gn,set as ho}from"lodash";var Ct=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 n=e.map(o=>typeof o=="object"?JSON.stringify(o):o).join(", ");throw new Error(n)}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}},Pn={},Io={};function E(r){let e=gn(Pn,r);if(!e){let n=gn(Io,r);e=new Ct({name:r,logLevel:n}),ho(Pn,r,e)}return e}import{MINT_SIZE as Na,TOKEN_PROGRAM_ID as Ma,getTransferFeeConfig as Fa,unpackMint as va}from"@solana/spl-token";var Rt=E("Raydium_accountInfo_util");async function ke(r,e,n){let{batchRequest:o,commitment:a="confirmed",chunkCount:l=100}=O({batchRequest:!1},n),p=Lt(e,l),c=new Array(p.length).fill([]);if(o){let b=p.map(T=>{let x=r._buildArgs([T.map(w=>w.toBase58())],a,"base64");return{methodName:"getMultipleAccounts",args:x}}),P=Lt(b,10);c=(await(await Promise.all(P.map(async T=>await r._rpcBatchRequest(T)))).flat()).map(T=>(T.error&&Rt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${T.error.message}`),T.result.value.map(x=>{if(x){let{data:w,executable:R,lamports:A,owner:k,rentEpoch:B}=x;return w.length!==2&&w[1]!=="base64"&&Rt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(w[0],"base64"),executable:R,lamports:A,owner:new Bo(k),rentEpoch:B}}return null})))}else try{c=await Promise.all(p.map(b=>r.getMultipleAccountsInfo(b,a)))}catch(b){b instanceof Error&&Rt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${b.message}`)}return c.flat()}import Le from"bn.js";import MC from"decimal.js";import No from"big.js";import Ja from"bn.js";import So from"toformat";var Ko=So,Qe=Ko;import lt from"big.js";import Co from"bn.js";import Ro from"decimal.js-light";import Ze from"bn.js";var An=9007199254740991;function re(r){let e=E("Raydium_parseBigNumberish");if(r instanceof Ze)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Ze(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=An||r<=-An)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Ze(String(r))):typeof r=="bigint"?new Ze(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Ze(0))}var ct=E("module/fraction"),Ot=Qe(lt),He=Qe(Ro),Lo={[0]:He.ROUND_DOWN,[1]:He.ROUND_HALF_UP,[2]:He.ROUND_UP},Oo={[0]:lt.roundDown,[1]:lt.roundHalfUp,[2]:lt.roundUp},G=class{constructor(e,n=new Co(1)){this.numerator=re(e),this.denominator=re(n)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new G(this.denominator,this.numerator)}add(e){let n=e instanceof G?e:new G(re(e));return this.denominator.eq(n.denominator)?new G(this.numerator.add(n.numerator),this.denominator):new G(this.numerator.mul(n.denominator).add(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}sub(e){let n=e instanceof G?e:new G(re(e));return this.denominator.eq(n.denominator)?new G(this.numerator.sub(n.numerator),this.denominator):new G(this.numerator.mul(n.denominator).sub(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}mul(e){let n=e instanceof G?e:new G(re(e));return new G(this.numerator.mul(n.numerator),this.denominator.mul(n.denominator))}div(e){let n=e instanceof G?e:new G(re(e));return new G(this.numerator.mul(n.denominator),this.denominator.mul(n.numerator))}toSignificant(e,n={groupSeparator:""},o=1){Number.isInteger(e)||ct.logWithError(`${e} is not an integer.`),e<=0&&ct.logWithError(`${e} is not positive.`),He.set({precision:e+1,rounding:Lo[o]});let a=new He(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return a.toFormat(a.decimalPlaces(),n)}toFixed(e,n={groupSeparator:""},o=1){return Number.isInteger(e)||ct.logWithError(`${e} is not an integer.`),e<0&&ct.logWithError(`${e} is negative.`),Ot.DP=e,Ot.RM=Oo[o]||1,new Ot(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,n)}isZero(){return this.numerator.isZero()}};var us=E("Raydium_amount"),cs=Qe(No);import{PublicKey as Fo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as wn}from"@solana/spl-token";var mt={chainId:101,address:Fo.default.toBase58(),programId:wn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},fe={chainId:101,address:"So11111111111111111111111111111111111111112",programId:wn.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};import{PublicKey as Mt}from"@solana/web3.js";import{PublicKey as X,SystemProgram as kn,SYSVAR_RENT_PUBKEY as vo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Vo}from"@solana/spl-token";function Fe({pubkey:r,isSigner:e=!1,isWritable:n=!0}){return{pubkey:r,isWritable:n,isSigner:e}}var _o=[Fe({pubkey:Vo,isWritable:!1}),Fe({pubkey:kn.programId,isWritable:!1}),Fe({pubkey:vo,isWritable:!1})];function Tn({publicKey:r,transformSol:e}){let n=hn(r.toString());if(n instanceof X)return e&&n.equals(Ke)?Te:n;if(e&&n.toString()===Ke.toBase58())return Te;if(typeof n=="string"){if(n===X.default.toBase58())return X.default;try{return new X(n)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function hn(r){try{return new X(r)}catch{return r}}var Nt=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),je=new X("SysvarRent111111111111111111111111111111111"),gs=new X("SysvarC1ock11111111111111111111111111111111"),dt=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Eo=new X("Sysvar1nstructions1111111111111111111111111"),Do=kn.programId,Ps=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),As=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),ws=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),ks=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Ts=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),hs=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Is=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Bs=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ss=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ks=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),xs=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Te=new X("So11111111111111111111111111111111111111112"),Ke=X.default;var Ft=class{constructor({mint:e,decimals:n,symbol:o,name:a,skipMint:l=!1,isToken2022:p=!1}){if(e===Ke.toBase58()||e instanceof Mt&&Ke.equals(e)){this.decimals=fe.decimals,this.symbol=fe.symbol,this.name=fe.name,this.mint=new Mt(fe.address),this.isToken2022=!1;return}this.decimals=n,this.symbol=o||e.toString().substring(0,6),this.name=a||e.toString().substring(0,6),this.mint=l?Mt.default:Tn({publicKey:e}),this.isToken2022=p}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ne=Ft;ne.WSOL=new Ft(D(O({},fe),{mint:fe.address}));var vt=class{constructor({decimals:e,symbol:n="UNKNOWN",name:o="UNKNOWN"}){this.decimals=e,this.symbol=n,this.name=o}equals(e){return this===e}},pt=vt;pt.SOL=new vt(mt);import Wo from"bn.js";var Ds=new G(new Wo(100));var Xs=E("Raydium_price");import{merge as vx}from"lodash";import tu from"axios";var In={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"},qo=D(O({},In),{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 Iu=E("Raydium_Api");import{PublicKey as Ul,SystemProgram as Gl}from"@solana/web3.js";import{AccountLayout as Zl,createAssociatedTokenAccountIdempotentInstruction as Hl,TOKEN_PROGRAM_ID as jl,TOKEN_2022_PROGRAM_ID as $l}from"@solana/spl-token";import{PublicKey as De,sendAndConfirmTransaction as qt,SystemProgram as Qo,Transaction as et,TransactionMessage as tt,VersionedTransaction as nt}from"@solana/web3.js";import Zo from"axios";import{PublicKey as Vt,AddressLookupTableAccount as _e}from"@solana/web3.js";async function _t({connection:r,address:e,cluster:n="mainnet"}){let o=await ke(r,[...new Set(e.map(l=>l.toString()))].map(l=>new Vt(l))),a={};for(let l=0;l<e.length;l++){let p=o[l],c=e[l];if(!p)continue;let b=new _e({key:c,state:_e.deserialize(p.data)});a[c.toString()]=b,n==="devnet"?Ve[c.toString()]=b:ve[c.toString()]=b}return a}var ve={},Et=async r=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(ve[e])return ve;let n=new Vt(e),o=await r.getAccountInfo(n);return o&&(ve[e]=new _e({key:n,state:_e.deserialize(o.data)})),ve},Ve={},Dt=async r=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Ve[e])return Ve;let n=new Vt(e),o=await r.getAccountInfo(n);return o&&(Ve[e]=new _e({key:n,state:_e.deserialize(o.data)})),Ve};var J={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{ComputeBudgetProgram as Bn,Keypair as Kn,PublicKey as Uo,Transaction as xn,TransactionMessage as Go,VersionedTransaction as Cn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as zo}from"@solana/spl-token";var Sn=E("Raydium_txUtil"),Rn=1644;function ft(r){let e=[],n=[];return r.microLamports&&(e.push(Bn.setComputeUnitPrice({microLamports:r.microLamports})),n.push(J.SetComputeUnitPrice)),r.units&&(e.push(Bn.setComputeUnitLimit({units:r.units})),n.push(J.SetComputeUnitLimit)),{instructions:e,instructionTypes:n}}async function Ee(r,e){var o,a;let n=e!=null?e:"confirmed";return(a=await((o=r.getLatestBlockhash)==null?void 0:o.call(r,{commitment:n})))==null?void 0:a.blockhash}async function yt(r,e){return r.getSignatureStatuses([e]),new Promise((n,o)=>{let a=setTimeout(o,6e4);r.onSignature(e,l=>{if(clearTimeout(a),!l.err){n("");return}o(Object.assign(l.err,{txId:e}))},"confirmed")})}function Wt(r,e){r.length<1&&Sn.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Sn.logWithError(`no signers provided:, ${e.toString()}`);let n=new xn;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=e[0],n.add(...r);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<Rn}catch{return!1}}function ye(r,e){let[n,o]=Uo.findProgramAddressSync(r,e);return{publicKey:n,nonce:o}}function $e({instructions:r,payer:e,signers:n}){return Wt(r,[e,...n])}function Je({instructions:r,payer:e,lookupTableAddressAccount:n,recentBlockhash:o=Kn.generate().publicKey.toString()}){let l=new Go({payerKey:e,recentBlockhash:o,instructions:r}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new Cn(l).serialize()).toString("base64").length<Rn}catch{return!1}}var Xo=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r),Yo=r=>{let e=r.serialize({requireAllSignatures:!1,verifySignatures:!1});r instanceof Cn&&(e=Xo(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function xe(r){let e=[];return r.forEach(n=>{n instanceof xn&&(n.recentBlockhash||(n.recentBlockhash=zo.toBase58()),n.feePayer||(n.feePayer=Kn.generate().publicKey)),e.push(Yo(n))}),console.log("simulate tx string:",e),e}var bt=2e3,gt=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 Zo.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:n}=(o=e==null?void 0:e[15])!=null?o:{};if(!!n)return{units:6e5,microLamports:Math.min(Math.ceil(n*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:n,instructionTypes:o}=ft(e);return this.instructions.unshift(...n),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(e){var n;return e?(this.endInstructions.push(Qo.transfer({fromPubkey:(n=e.feePayer)!=null?n:this.feePayer,toPubkey:new De(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(J.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:n}){try{let o=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(o))return;n&&this.instructions.unshift(...n)}catch{n&&this.instructions.unshift(...n)}}addInstruction({instructions:e=[],endInstructions:n=[],signers:o=[],instructionTypes:a=[],endInstructionTypes:l=[],lookupTableAddress:p=[]}){return this.instructions.push(...e),this.endInstructions.push(...n),this.signers.push(...o),this.instructionTypes.push(...a),this.endInstructionTypes.push(...l),this.lookupTableAddress.push(...p.filter(c=>c!==De.default.toString())),this}async versionBuild({txVersion:e,extInfo:n,lookupTableAddress:o}){return e===0?await this.buildV0(D(O({},n||{}),{lookupTableAddress:o})):this.build(n)}build(e){var o;let n=new et;return this.allInstructions.length&&n.add(...this.allInstructions),n.feePayer=this.feePayer,((o=this.owner)==null?void 0:o.signer)&&!this.signers.some(a=>a.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:n,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async a=>{var y;let{recentBlockHash:l,skipPreflight:p=!0,sendAndConfirm:c,notSendToRpc:b}=a||{},P=l!=null?l:await Ee(this.connection,this.blockhashCommitment);if(n.recentBlockhash=P,this.signers.length&&n.sign(...this.signers),xe([n]),(y=this.owner)!=null&&y.isKeyPair)return{txId:c?await qt(this.connection,n,this.signers.find(x=>x.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:p}):await this.connection.sendRawTransaction(n.serialize(),{skipPreflight:p}),signedTx:n};if(this.signAllTransactions){let T=await this.signAllTransactions([n]);if(this.signers.length)for(let x of T)try{x.sign(...this.signers)}catch{}return{txId:b?"":await this.connection.sendRawTransaction(T[0].serialize(),{skipPreflight:p}),signedTx:T[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var P;let{extraPreBuildData:n=[],extInfo:o}=e,{transaction:a}=this.build(o),l=n.filter(y=>y.transaction.instructions.length>0),p=[a,...l.map(y=>y.transaction)],c=[this.signers,...l.map(y=>y.signers)],b=[...this.instructionTypes,...l.map(y=>y.instructionTypes).flat()];return(P=this.owner)!=null&&P.signer&&c.forEach(y=>{y.some(T=>T.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:p,signers:c,instructionTypes:b,execute:async y=>{var B;let{sequentially:T,onTxUpdate:x,skipTxCount:w=0,recentBlockHash:R,skipPreflight:A=!0}=y||{},k=R!=null?R:await Ee(this.connection,this.blockhashCommitment);if((B=this.owner)!=null&&B.isKeyPair){if(T){let K=[],F=0;for(let v of p){if(++F,F<=w)continue;let g=await qt(this.connection,v,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:A});K.push(g)}return{txIds:K,signedTxs:p}}return{txIds:await await Promise.all(p.map(async K=>(K.recentBlockhash=k,await this.connection.sendRawTransaction(K.serialize(),{skipPreflight:A})))),signedTxs:p}}if(this.signAllTransactions){let K=p.map((v,g)=>(v.recentBlockhash=k,c[g].length&&v.sign(...c[g]),v));xe(K);let F=await this.signAllTransactions(K);if(T){let v=0,g=[],h=async()=>{if(!F[v])return;let I=await this.connection.sendRawTransaction(F[v].serialize(),{skipPreflight:A});g.push({txId:I,status:"sent",signedTx:F[v]}),x==null||x([...g]),v++;let C=!1,L=null,V=null,se=U=>{L!==null&&clearInterval(L),V!==null&&this.connection.removeSignatureListener(V);let W=g.findIndex(te=>te.txId===I);if(W>-1){if(g[W].status==="error"||g[W].status==="success")return;g[W].status=U.err?"error":"success"}x==null||x([...g]),U.err||h()};this.loopMultiTxStatus&&(L=setInterval(async()=>{var U;if(C){clearInterval(L);return}try{let W=await this.connection.getTransaction(I,{commitment:"confirmed",maxSupportedTransactionVersion:0});W&&(C=!0,clearInterval(L),se({err:((U=W.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",I))}catch(W){C=!0,clearInterval(L),console.error("getTransaction timeout:",W,I)}},bt)),V=this.connection.onSignature(I,U=>{if(C){this.connection.removeSignatureListener(V);return}C=!0,se(U)},"confirmed"),this.connection.getSignatureStatus(I)};return await h(),{txIds:g.map(I=>I.txId),signedTxs:F}}else{let v=[];for(let g=0;g<F.length;g+=1){let h=await this.connection.sendRawTransaction(F[g].serialize(),{skipPreflight:A});v.push(h)}return{txIds:v,signedTxs:F}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:n,extInfo:o}){return n===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:o||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:o})}async buildV0(e){var A;let R=e||{},{lookupTableCache:n={},lookupTableAddress:o=[],forerunCreate:a,recentBlockhash:l}=R,p=pe(R,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),c=O(O({},this.cluster==="devnet"?await Dt(this.connection):await Et(this.connection)),n),b=Array.from(new Set([...o,...this.lookupTableAddress])),P=[];for(let k of b)c[k]===void 0&&P.push(new De(k));let y=await _t({connection:this.connection,address:P});for(let[k,B]of Object.entries(y))c[k]=B;let T=a?De.default.toBase58():l!=null?l:await Ee(this.connection,this.blockhashCommitment),x=new tt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(c));((A=this.owner)==null?void 0:A.signer)&&!this.signers.some(k=>k.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let w=new nt(x);return w.sign(this.signers),{builder:this,transaction:w,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async k=>{var v;let{skipPreflight:B=!0,sendAndConfirm:K,notSendToRpc:F}=k||{};if(xe([w]),(v=this.owner)!=null&&v.isKeyPair){let g=await this.connection.sendTransaction(w,{skipPreflight:B});return K&&await yt(this.connection,g),{txId:g,signedTx:w}}if(this.signAllTransactions){let g=await this.signAllTransactions([w]);if(this.signers.length)for(let h of g)try{h.sign(this.signers)}catch{}return{txId:F?"":await this.connection.sendTransaction(g[0],{skipPreflight:B}),signedTx:g[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:p||{}}}async buildV0MultiTx(e){var P;let{extraPreBuildData:n=[],buildProps:o}=e,{transaction:a}=await this.buildV0(o),l=n.filter(y=>y.builder.instructions.length>0),p=[a,...l.map(y=>y.transaction)],c=[this.signers,...l.map(y=>y.signers)],b=[...this.instructionTypes,...l.map(y=>y.instructionTypes).flat()];return(P=this.owner)!=null&&P.signer&&c.forEach(y=>{y.some(T=>T.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),p.forEach(async(y,T)=>{y.sign(c[T])}),{builder:this,transactions:p,signers:c,instructionTypes:b,buildProps:o,execute:async y=>{var A;let{sequentially:T,onTxUpdate:x,recentBlockHash:w,skipPreflight:R=!0}=y||{};if(w&&p.forEach(k=>k.message.recentBlockhash=w),xe(p),(A=this.owner)!=null&&A.isKeyPair){if(T){let k=[];for(let B of p){let K=await this.connection.sendTransaction(B,{skipPreflight:R});await yt(this.connection,K),k.push(K)}return{txIds:k,signedTxs:p}}return{txIds:await Promise.all(p.map(async k=>await this.connection.sendTransaction(k,{skipPreflight:R}))),signedTxs:p}}if(this.signAllTransactions){let k=await this.signAllTransactions(p);if(T){let B=0,K=[],F=async()=>{if(!k[B])return;let v=await this.connection.sendTransaction(k[B],{skipPreflight:R});K.push({txId:v,status:"sent",signedTx:k[B]}),x==null||x([...K]),B++;let g=!1,h=null,I=null,C=L=>{h!==null&&clearInterval(h),I!==null&&this.connection.removeSignatureListener(I);let V=K.findIndex(se=>se.txId===v);if(V>-1){if(K[V].status==="error"||K[V].status==="success")return;K[V].status=L.err?"error":"success"}x==null||x([...K]),L.err||F()};this.loopMultiTxStatus&&(h=setInterval(async()=>{var L;if(g){clearInterval(h);return}try{let V=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(g=!0,clearInterval(h),C({err:((L=V.meta)==null?void 0:L.err)||null}),console.log("tx status from getTransaction:",v))}catch(V){g=!0,clearInterval(h),console.error("getTransaction timeout:",V,v)}},bt)),I=this.connection.onSignature(v,L=>{if(g){this.connection.removeSignatureListener(I);return}g=!0,C(L)},"confirmed"),this.connection.getSignatureStatus(v)};return F(),{txIds:[],signedTxs:k}}else{let B=[];for(let K=0;K<k.length;K+=1){let F=await this.connection.sendTransaction(k[K],{skipPreflight:R});B.push(F)}return{txIds:B,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var x;let T=e||{},{splitIns:n=[],computeBudgetConfig:o}=T,a=pe(T,["splitIns","computeBudgetConfig"]),l=o?ft(o):{instructions:[],instructionTypes:[]},p=this.signers.reduce((w,R)=>D(O({},w),{[R.publicKey.toBase58()]:R}),{}),c=[],b=[],P=[],y=0;if(this.allInstructions.forEach(w=>{let R=[...P,w],A=o?[...l.instructions,...R]:R,B=[...new Set(R.map(K=>K.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat()).values()].map(K=>new De(K));if(w!==n[y]&&P.length<12&&($e({instructions:A,payer:this.feePayer,signers:B})||$e({instructions:R,payer:this.feePayer,signers:B})))P.push(w);else{if(P.length===0)throw Error("item ins too big");y+=w===n[y]?1:0,$e({instructions:o?[...l.instructions,...P]:[...P],payer:this.feePayer,signers:B})?c.push(new et().add(...l.instructions,...P)):c.push(new et().add(...P)),b.push(Array.from(new Set(P.map(K=>K.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat())).map(K=>p[K]).filter(K=>K!==void 0)),P=[w]}}),P.length>0){let R=[...new Set(P.map(A=>A.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat()).values()].map(A=>p[A]).filter(A=>A!==void 0);$e({instructions:o?[...l.instructions,...P]:[...P],payer:this.feePayer,signers:R.map(A=>A.publicKey)})?c.push(new et().add(...l.instructions,...P)):c.push(new et().add(...P)),b.push(R)}return c.forEach(w=>w.feePayer=this.feePayer),(x=this.owner)!=null&&x.signer&&b.forEach(w=>{w.some(R=>R.publicKey.equals(this.owner.publicKey))||w.push(this.owner.signer)}),{builder:this,transactions:c,signers:b,instructionTypes:this.instructionTypes,execute:async w=>{var v;let{sequentially:R,onTxUpdate:A,skipTxCount:k=0,recentBlockHash:B,skipPreflight:K=!0}=w||{},F=B!=null?B:await Ee(this.connection,this.blockhashCommitment);if(c.forEach(async(g,h)=>{g.recentBlockhash=F,b[h].length&&g.sign(...b[h])}),xe(c),(v=this.owner)!=null&&v.isKeyPair){if(R){let g=0,h=[];for(let I of c){if(++g,g<=k){h.push("tx skipped");continue}let C=await qt(this.connection,I,this.signers.find(L=>L.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:K});h.push(C)}return{txIds:h,signedTxs:c}}return{txIds:await Promise.all(c.map(async g=>await this.connection.sendRawTransaction(g.serialize(),{skipPreflight:K}))),signedTxs:c}}if(this.signAllTransactions){let g=await this.signAllTransactions(c.slice(k,c.length)),h=[...c.slice(0,k),...g];if(R){let I=0,C=[],L=async()=>{if(!h[I])return;I<k&&(C.push({txId:"",status:"success",signedTx:h[I]}),A==null||A([...C]),I++,L());let V=await this.connection.sendRawTransaction(h[I].serialize(),{skipPreflight:K});C.push({txId:V,status:"sent",signedTx:h[I]}),A==null||A([...C]),I++;let se=!1,U=null,W=null,te=z=>{U!==null&&clearInterval(U),W!==null&&this.connection.removeSignatureListener(W);let ie=C.findIndex(Pe=>Pe.txId===V);if(ie>-1){if(C[ie].status==="error"||C[ie].status==="success")return;C[ie].status=z.err?"error":"success"}A==null||A([...C]),z.err||L()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var z;if(se){clearInterval(U);return}try{let ie=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});ie&&(se=!0,clearInterval(U),te({err:((z=ie.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",V))}catch(ie){se=!0,clearInterval(U),console.error("getTransaction timeout:",ie,V)}},bt)),W=this.connection.onSignature(V,z=>{if(se){this.connection.removeSignatureListener(W);return}se=!0,te(z)},"confirmed"),this.connection.getSignatureStatus(V)};return await L(),{txIds:C.map(V=>V.txId),signedTxs:h}}else{let I=[];for(let C=0;C<h.length;C+=1){let L=await this.connection.sendRawTransaction(h[C].serialize(),{skipPreflight:K});I.push(L)}return{txIds:I,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}async sizeCheckBuildV0(e){var v;let F=e||{},{computeBudgetConfig:n,splitIns:o=[],lookupTableCache:a={},lookupTableAddress:l=[],insCountLimit:p=12}=F,c=pe(F,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),b=O(O({},this.cluster==="devnet"?await Dt(this.connection):await Et(this.connection)),a),P=Array.from(new Set([...this.lookupTableAddress,...l])),y=[];for(let g of P)b[g]===void 0&&y.push(new De(g));let T=await _t({connection:this.connection,address:y});for(let[g,h]of Object.entries(T))b[g]=h;let x=n?ft(n):{instructions:[],instructionTypes:[]},w=await Ee(this.connection,this.blockhashCommitment),R=this.signers.reduce((g,h)=>D(O({},g),{[h.publicKey.toBase58()]:h}),{}),A=[],k=[],B=[],K=0;if(this.allInstructions.forEach(g=>{let h=[...B,g],I=n?[...x.instructions,...h]:h;if(g!==o[K]&&B.length<p&&(Je({instructions:I,payer:this.feePayer,lookupTableAddressAccount:b})||Je({instructions:h,payer:this.feePayer,lookupTableAddressAccount:b})))B.push(g);else{if(B.length===0)throw Error("item ins too big");K+=g===o[K]?1:0;let C={};for(let L of[...new Set(P)])b[L]!==void 0&&(C[L]=b[L]);if(n&&Je({instructions:[...x.instructions,...B],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:w})){let L=new tt({payerKey:this.feePayer,recentBlockhash:w,instructions:[...x.instructions,...B]}).compileToV0Message(Object.values(b));A.push(new nt(L))}else{let L=new tt({payerKey:this.feePayer,recentBlockhash:w,instructions:[...B]}).compileToV0Message(Object.values(b));A.push(new nt(L))}k.push(Array.from(new Set(B.map(L=>L.keys.filter(V=>V.isSigner).map(V=>V.pubkey.toString())).flat())).map(L=>R[L]).filter(L=>L!==void 0)),B=[g]}}),B.length>0){let h=[...new Set(B.map(I=>I.keys.filter(C=>C.isSigner).map(C=>C.pubkey.toString())).flat()).values()].map(I=>R[I]).filter(I=>I!==void 0);if(n&&Je({instructions:[...x.instructions,...B],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:w})){let I=new tt({payerKey:this.feePayer,recentBlockhash:w,instructions:[...x.instructions,...B]}).compileToV0Message(Object.values(b));A.push(new nt(I))}else{let I=new tt({payerKey:this.feePayer,recentBlockhash:w,instructions:[...B]}).compileToV0Message(Object.values(b));A.push(new nt(I))}k.push(h)}return(v=this.owner)!=null&&v.signer&&k.forEach(g=>{g.some(h=>h.publicKey.equals(this.owner.publicKey))||g.push(this.owner.signer)}),A.forEach((g,h)=>{g.sign(k[h])}),{builder:this,transactions:A,buildProps:e,signers:k,instructionTypes:this.instructionTypes,execute:async g=>{var se;let{sequentially:h,onTxUpdate:I,skipTxCount:C=0,recentBlockHash:L,skipPreflight:V=!0}=g||{};if(A.map(async(U,W)=>{k[W].length&&U.sign(k[W]),L&&(U.message.recentBlockhash=L)}),xe(A),(se=this.owner)!=null&&se.isKeyPair){if(h){let U=0,W=[];for(let te of A){if(++U,U<=C){console.log("skip tx: ",U),W.push("tx skipped");continue}let z=await this.connection.sendTransaction(te,{skipPreflight:V});await yt(this.connection,z),W.push(z)}return{txIds:W,signedTxs:A}}return{txIds:await Promise.all(A.map(async U=>await this.connection.sendTransaction(U,{skipPreflight:V}))),signedTxs:A}}if(this.signAllTransactions){let U=await this.signAllTransactions(A.slice(C,A.length)),W=[...A.slice(0,C),...U];if(h){let te=0,z=[],ie=async()=>{if(!W[te])return;if(te<C){z.push({txId:"",status:"success",signedTx:W[te]}),I==null||I([...z]),te++,ie();return}let Pe=await this.connection.sendTransaction(W[te],{skipPreflight:V});z.push({txId:Pe,status:"sent",signedTx:W[te]}),I==null||I([...z]),te++;let ze=!1,Oe=null,at=null,rn=Ie=>{Oe!==null&&clearInterval(Oe),at!==null&&this.connection.removeSignatureListener(at);let Ae=z.findIndex(go=>go.txId===Pe);if(Ae>-1){if(z[Ae].status==="error"||z[Ae].status==="success")return;z[Ae].status=Ie.err?"error":"success"}I==null||I([...z]),Ie.err||ie()};this.loopMultiTxStatus&&(Oe=setInterval(async()=>{var Ie;if(ze){clearInterval(Oe);return}try{let Ae=await this.connection.getTransaction(Pe,{commitment:"confirmed",maxSupportedTransactionVersion:0});Ae&&(ze=!0,clearInterval(Oe),rn({err:((Ie=Ae.meta)==null?void 0:Ie.err)||null}),console.log("tx status from getTransaction:",Pe))}catch(Ae){ze=!0,clearInterval(Oe),console.error("getTransaction timeout:",Ae,Pe)}},bt)),at=this.connection.onSignature(Pe,Ie=>{if(ze){this.connection.removeSignatureListener(at);return}ze=!0,rn(Ie)},"confirmed"),this.connection.getSignatureStatus(Pe)};return ie(),{txIds:[],signedTxs:W}}else{let te=[];for(let z=0;z<W.length;z+=1){let ie=await this.connection.sendTransaction(W[z],{skipPreflight:V});te.push(ie)}return{txIds:te,signedTxs:W}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:c||{}}}};var Ut=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),ae=class{constructor({scope:e,moduleName:n}){this.disabled=!1;this.scope=e,this.logger=E(n)}createTxBuilder(e){return this.scope.checkOwner(),new gt({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(Ut(e))}logInfo(...e){this.logger.info(Ut(e))}logAndCreateError(...e){let n=Ut(e);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as wl,SystemProgram as Tl}from"@solana/web3.js";import Bl from"bn.js";import{createCloseAccountInstruction as Cl,createInitializeAccountInstruction as Rl,createTransferInstruction as Ll,TOKEN_PROGRAM_ID as Ol}from"@solana/spl-token";import{Keypair as sl,PublicKey as ul}from"@solana/web3.js";import ml from"bn.js";import{TOKEN_PROGRAM_ID as fl}from"@solana/spl-token";import{PublicKey as si}from"@solana/web3.js";import Fn,{isBN as vn}from"bn.js";import{bits as Ho,BitStructure as dc,blob as jo,Blob as pc,cstr as fc,f32 as yc,f32be as bc,f64 as gc,f64be as Pc,greedy as Ac,Layout as $o,ns64 as wc,ns64be as kc,nu64 as Tc,nu64be as hc,offset as Jo,s16 as Ic,s16be as Bc,s24 as Sc,s24be as Kc,s32 as ei,s32be as xc,s40 as Cc,s40be as Rc,s48 as Lc,s48be as Oc,s8 as Nc,seq as ti,struct as Mc,Structure as ni,u16 as oi,u16be as Fc,u24 as vc,u24be as Vc,u32 as ii,u32be as _c,u40 as Ec,u40be as Dc,u48 as Wc,u48be as qc,u8 as ri,UInt as ai,union as Uc,Union as Gc,unionLayoutDiscriminator as zc,utf8 as Xc}from"@solana/buffer-layout";var Pt=$o,Ln=ni;var Gt=ai;var On=ri,Z=oi;var At=ii;var me=ei;var Nn=ti;var M=jo;var zt=Ho,Mn=Jo;var Re=class extends Pt{constructor(n,o,a){super(n,a);this.blob=M(n),this.signed=o}decode(n,o=0){let a=new Fn(this.blob.decode(n,o),10,"le");return this.signed?a.fromTwos(this.span*8).clone():a}encode(n,o,a=0){return typeof n=="number"&&(n=new Fn(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),o,a)}},wt=class extends Pt{constructor(n){super(8,n);this._lower=zt(At(),!1),this._upper=zt(At(),!1)}addBoolean(n){this._lower.fields.length<32?this._lower.addBoolean(n):this._upper.addBoolean(n)}decode(n,o=0){let a=this._lower.decode(n,o),l=this._upper.decode(n,o+this._lower.span);return O(O({},a),l)}encode(n,o,a=0){return this._lower.encode(n,o,a)+this._upper.encode(n,o,a+this._lower.span)}};function m(r){return new Gt(1,r)}function Y(r){return new Gt(4,r)}function t(r){return new Re(8,!1,r)}function N(r){return new Re(16,!1,r)}function Vn(r){return new Re(1,!0,r)}function We(r){return new Re(8,!0,r)}function _n(r){return new Re(16,!0,r)}var ot=class extends Pt{constructor(n,o,a,l){super(n.span,l);this.layout=n,this.decoder=o,this.encoder=a}decode(n,o){return this.decoder(this.layout.decode(n,o))}encode(n,o,a){return this.layout.encode(this.encoder(n),o,a)}getSpan(n,o){return this.layout.getSpan(n,o)}};function i(r){return new ot(M(32),e=>new si(e),e=>e.toBuffer(),r)}function ue(r){return new ot(On(),ui,ci,r)}function ui(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function ci(r){return r?1:0}function En(r,e){let n=At("length"),o=d([n,f(r,Mn(n,-n.span),"values")]);return new ot(o,({values:a})=>a,a=>({values:a}),e)}var Xt=class extends Ln{decode(e,n){return super.decode(e,n)}};function d(r,e,n){return new Xt(r,e,n)}function f(r,e,n){let o,a=typeof e=="number"?e:vn(e)?e.toNumber():new Proxy(e,{get(l,p){if(!o){let c=Reflect.get(l,"count");o=vn(c)?c.toNumber():c,Reflect.set(l,"count",o)}return Reflect.get(l,p)},set(l,p,c){return p==="count"&&(o=c),Reflect.set(l,p,c)}});return Nn(r,a,n)}var kt=d([i("mint"),i("owner"),t("amount"),Y("delegateOption"),i("delegate"),m("state"),Y("isNativeOption"),t("isNative"),t("delegatedAmount"),Y("closeAuthorityOption"),i("closeAuthority")]);import{PublicKey as wg,SystemProgram as kg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as hg}from"@solana/spl-token";import{PublicKey as rm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as sm}from"@solana/spl-token";import{PublicKey as S}from"@solana/web3.js";var Wn=new S("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),qn=new S("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Un=new S("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Yt=new S("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),mm=new S("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),mi=new S("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Gn=new S("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),zn=new S("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),dm=new S("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),di=new S("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Xn=new S("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),pi=new S("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),fi=new S("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Yn=new S("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),pm=new S("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),yi=new S("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Qt=new S("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),bi=new S("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),fm=new S("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),gi=new S("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Pi=new S("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Ai=new S("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),ym=new S("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),bm=new S("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),gm=new S("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Pm=new S("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Am=new S("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var he={OPEN_BOOK_PROGRAM:new S("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new S("Ray1111111111111111111111111111111111111111"),AMM_V4:new S("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new S("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new S("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new S("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new S("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new S("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new S("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new S("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new S("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new S("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:S.default,Router:new S("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new S("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new S("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new S("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new S("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new S("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new S("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new S("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new S("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new S("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new S("Ray1111111111111111111111111111111111111111")};import Ng from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as Hf,TOKEN_2022_PROGRAM_ID as jf,TOKEN_PROGRAM_ID as $f}from"@solana/spl-token";import{PublicKey as ey}from"@solana/web3.js";import ny from"bn.js";import iy from"decimal.js";import{TOKEN_PROGRAM_ID as Nm}from"@solana/spl-token";import{PublicKey as Vm}from"@solana/web3.js";var wi=d([Y("mintAuthorityOption"),i("mintAuthority"),t("supply"),m("decimals"),m("isInitialized"),Y("freezeAuthorityOption"),i("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as wf,TOKEN_2022_PROGRAM_ID as kf,TOKEN_PROGRAM_ID as Tf}from"@solana/spl-token";import{Keypair as Bf,PublicKey as Sf,SystemProgram as xf,TransactionInstruction as Cf}from"@solana/web3.js";import Lf from"bn.js";var ki=d([M(8),m("bump"),Z("index"),i("owner"),Y("protocolFeeRate"),Y("tradeFeeRate"),Z("tickSpacing"),Y("fundFeeRate"),f(Y(),1),i("fundOwner"),f(t(),3)]),Ti=d([Y("blockTimestamp"),We("tickCumulative"),f(t(),4)]),Qn=d([M(8),ue("initialized"),t("recentEpoch"),Z("observationIndex"),i("poolId"),f(Ti,fn,"observations"),f(t(),4)]),hi=d([Z("filterPeriod"),Z("decayPeriod"),Z("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),me("tickSpacingIndexReference"),Y("volatilityReference"),Y("volatilityAccumulator"),t("lastUpdateTimestamp"),f(m(),46)]),Ii=d([m("state"),t("openTime"),t("endTime"),t("lastUpdateTime"),N("emissionsPerSecondX64"),t("totalEmissioned"),t("claimed"),i("mint"),i("vault"),i("creator"),N("growthGlobalX64")]),Zt=d([M(8),m("bump"),i("configId"),i("creator"),i("mintA"),i("mintB"),i("vaultA"),i("vaultB"),i("observationId"),m("mintDecimalsA"),m("mintDecimalsB"),Z("tickSpacing"),N("liquidity"),N("sqrtPriceX64"),me("tickCurrent"),Y(),N("feeGrowthGlobalX64A"),N("feeGrowthGlobalX64B"),t("protocolFeesTokenA"),t("protocolFeesTokenB"),f(N(),4),m("status"),m("feeOn"),M(6),f(Ii,Xe,"rewardInfos"),M(8*16,"tickArrayBitmap"),f(t(),4),t("fundFeesTokenA"),t("fundFeesTokenB"),t("startTime"),t("recentEpoch"),hi.replicate("dynamicFeeInfo"),f(t(),46)]),Bi=d([N("growthInsideLastX64"),t("rewardAmountOwed")]),Si=d([M(8),m("bump"),i("nftMint"),i("poolId"),me("tickLower"),me("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),f(Bi,Xe,"rewardInfos"),t("recentEpoch"),f(t(),7)]),Hm=d([M(8),m("bump"),i("poolId"),me("tickLower"),me("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),f(N(),Xe,"rewardGrowthInside"),t("recentEpoch"),f(t(),7)]),Ki=d([me("tick"),_n("liquidityNet"),N("liquidityGross"),N("feeGrowthOutsideX64A"),N("feeGrowthOutsideX64B"),f(N(),Xe,"rewardGrowthsOutsideX64"),t("orderPhase"),t("ordersAmount"),t("partFilledOrdersRemaining"),N("unfilledRatioX64"),f(Y(),3)]),Zn=d([M(8),i("poolId"),me("startTickIndex"),f(Ki,xt,"ticks"),m("initializedTickCount"),t("recentEpoch"),f(m(),107)]),xi=d([M(8),m("bump"),f(i(),yn,"operationOwners"),f(i(),bn,"whitelistMints")]),Ci=d([M(8),i("poolId"),i("owner"),me("tick"),ue("zeroForOne"),t("orderPhase"),t("totalAmount"),t("filledAmount"),t("settleBase"),t("settleOutput"),t("openTime"),N("unfilledRatioX64"),f(t(),4)]),Hn=d([M(8),i("poolId"),M(8*8*ut,"positiveTickArrayBitmap"),M(8*8*ut,"negativeTickArrayBitmap")]),jm=d([M(8),Z("index"),Z("filterPeriod"),Z("decayPeriod"),Z("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),f(t(),8)]),Ri=d([M(8),i("wallet"),m("nonceIndex"),t("orderNonce"),f(t(),4)]),$m=d([t(),m("bump"),i("owner"),i("poolId"),i("positionId"),i("nftAccount"),f(t(),8)]),Li=d([M(8),m("bump"),i("lockOwner"),i("poolId"),i("positionId"),i("nftAccount"),i("lockNftMint"),t("recentEpoch"),f(t(),8)]);import td from"bn.js";var dd=Buffer.from("amm_config","utf8"),Ni=Buffer.from("pool","utf8"),Mi=Buffer.from("pool_vault","utf8"),pd=Buffer.from("pool_reward_vault","utf8"),fd=Buffer.from("position","utf8"),yd=Buffer.from("tick_array","utf8"),bd=Buffer.from("operation","utf8"),gd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Pd=Buffer.from("observation","utf8"),Ad=Buffer.from("support_mint","utf8"),wd=Buffer.from("dynamic_fee_config","utf8"),kd=Buffer.from("permission","utf8");var Td=Buffer.from("locked_position","utf8");import{sha256 as Zi}from"js-sha256";import Fi from"bn.js";import Sd from"decimal.js";function ce(r,e,n){if(n.isZero())throw new Error("Division by zero");return r.mul(e).div(n)}function le(r,e,n){if(n.isZero())throw new Error("Division by zero");let o=r.mul(e),a=o.div(n);return o.mod(n).isZero()?a:a.addn(1)}var xd=new Fi(1).shln(256).subn(1);function jn(r){return r.isZero()?-1:r.bitLength()-1}import Ld from"bn.js";import Nd from"decimal.js";import{PublicKey as Ap}from"@solana/web3.js";import kp from"bn.js";import{TOKEN_2022_PROGRAM_ID as Cp,TOKEN_PROGRAM_ID as Rp}from"@solana/spl-token";import Mp from"decimal.js";import up from"bn.js";import Zd from"bn.js";import zp from"bn.js";function ee(r){let e=`global:${r}`;return Buffer.from(Zi.digest(e)).slice(0,8)}Qn.span;var Ef=E("Raydium_Clmm"),Df={createPool:ee("create_pool"),createCustomizablePool:ee("create_customizable_pool"),createPermissionedPool:ee("create_permissioned_pool"),openPositionV2:ee("open_position_v2"),openPositionWithToken22Nft:ee("open_position_with_token22_nft"),closePosition:ee("close_position"),increaseLiquidityV2:ee("increase_liquidity_v2"),decreaseLiquidityV2:ee("decrease_liquidity_v2"),initializeReward:ee("initialize_reward"),setRewardParams:ee("set_reward_params"),updateRewardInfos:ee("update_reward_infos"),collectRemainingRewards:ee("collect_remaining_rewards"),swapV2:ee("swap_v2"),openLimitOrder:ee("open_limit_order"),increaseLimitOrder:ee("increase_limit_order"),decreaseLimitOrder:ee("decrease_limit_order"),settleLimitOrder:ee("settle_limit_order"),closeLimitOrder:ee("close_limit_order")};import{PublicKey as en}from"@solana/web3.js";var Ji=d([m("instruction")]),er=d([m("instruction")]),tr=d([t("rewardState"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardLastUpdateTime"),t("totalReward"),t("totalRewardEmissioned"),t("rewardClaimed"),t("rewardPerSecond"),N("accRewardPerShare"),i("rewardVault"),i("rewardMint"),i("rewardSender"),t("rewardType"),f(t(),15,"padding")]),nr=d([t("state"),t("nonce"),i("lpVault"),i("rewardVault"),i(),i(),t(),t(),t("totalReward"),N("perShareReward"),t("lastSlot"),t("perSlotReward")]),or=d([t("state"),t("nonce"),i("lpVault"),i("rewardVaultA"),t("totalRewardA"),N("perShareRewardA"),t("perSlotRewardA"),m("option"),i("rewardVaultB"),M(7),t("totalRewardB"),N("perShareRewardB"),t("perSlotRewardB"),t("lastSlot"),i()]),ir=d([t(),t("state"),t("nonce"),t("validRewardTokenNum"),N("rewardMultiplier"),t("rewardPeriodMax"),t("rewardPeriodMin"),t("rewardPeriodExtend"),i("lpMint"),i("lpVault"),f(tr,5,"rewardInfos"),i("creator"),i(),f(t(),32,"padding")]),rr=new Proxy(nr,{get(r,e,n){return e==="decode"?(...o)=>{let a=r.decode(...o);return D(O({},a),{version:3,rewardInfos:[{rewardVault:a.rewardVault,totalReward:a.totalReward,perSlotReward:a.perSlotReward,perShareReward:a.perShareReward}]})}:Reflect.get(r,e,n)}}),ar=new Proxy(or,{get(r,e,n){return e==="decode"?(...o)=>{let a=r.decode(...o);return D(O({},a),{version:5,rewardInfos:[{rewardVault:a.rewardVaultA,totalReward:a.totalRewardA,perSlotReward:a.perSlotRewardA,perShareReward:a.perShareRewardA},{rewardVault:a.rewardVaultB,totalReward:a.totalRewardB,perSlotReward:a.perSlotRewardB,perShareReward:a.perShareRewardB}]})}:Reflect.get(r,e,n)}}),no=new Proxy(ir,{get(r,e,n){return e==="decode"?(...o)=>{let a=r.decode(...o);return D(O({},a),{version:6,rewardInfos:a.rewardInfos.map(l=>{var p;return D(O({},l),{rewardType:((p=Object.entries(rt).find(c=>String(c[1])===l.rewardType.toString()))!=null?p:["Standard SPL"])[0]})})})}:Reflect.get(r,e,n)}}),sr=d([t("isSet"),t("rewardPerSecond"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardType")]),ur=d([m("instruction"),t("nonce"),f(sr,5,"rewardTimeInfo")]),cr=d([m("instruction"),t("rewardReopenTime"),t("rewardEndTime"),t("rewardPerSecond")]),lr=d([m("instruction"),t("isSet"),t("rewardPerSecond"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardType")]),_y=d([t("state"),i("id"),i("owner"),t("deposited"),f(t(),1,"rewardDebts")]),oo=d([t("state"),i("id"),i("owner"),t("deposited"),f(N(),1,"rewardDebts"),t(""),t("voteLockedBalance"),f(t(),15)]),Ey=d([t("state"),i("id"),i("owner"),t("deposited"),f(t(),2,"rewardDebts")]),mr=d([t("state"),i("id"),i("owner"),t("deposited"),f(N(),2,"rewardDebts"),f(t(),17)]),dr=d([t(),t("state"),i("id"),i("owner"),t("deposited"),f(N(),5,"rewardDebts"),f(t(),16)]),pr=d([m("instruction"),t("amount")]),fr=d([i("mint"),i("grantAuthority"),t("baselineVoteWeightScaledFactor"),t("maxExtraLockupVoteWeightScaledFactor"),t("lockupSaturationSecs"),Vn("digitShift"),f(m(),7,"reserved1"),f(t(),7,"reserved2")]),yr=d([M(8),i("governanceProgramId"),i("realm"),i("realmGoverningTokenMint"),i("realmAuthority"),f(m(),32,"reserved1"),f(fr,4,"votingMints"),We("timeOffset"),m("bump"),f(m(),7,"reserved2"),f(t(),11,"reserved3")]),br=d([We("startTime"),We("endTime"),m("kind"),f(m(),15,"reserved")]),gr=d([f(br,1,"lockup"),t("amountDeposited_native"),t("amountInitiallyLockedNative"),ue("isUsed"),ue("allowClawback"),m("votingMintConfigIdx"),f(m(),29,"reserved")]),Pr=d([M(8),i("voterAuthority"),i("registrar"),f(gr,32,"deposits"),m("voterBump"),m("voterWweightRecordBump"),f(m(),94,"reserved")]);import{NATIVE_MINT as Qy}from"@solana/spl-token";var Zy=E("Raydium_farm_config"),Ar=new en("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),wr=new en("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Hy=new en("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var rt={"Standard SPL":0,"Option tokens":1},io={[Wn.toString()]:3,[qn.toString()]:4,[Un.toString()]:5,[Yt.toString()]:6,[he.FARM_PROGRAM_ID_V3.toString()]:3,[he.FARM_PROGRAM_ID_V4.toString()]:4,[he.FARM_PROGRAM_ID_V5.toString()]:5,[he.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as Fb,SystemProgram as vb,SYSVAR_CLOCK_PUBKEY as Vb,SYSVAR_RENT_PUBKEY as _b,TransactionInstruction as Eb}from"@solana/web3.js";import Wb from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Ub,createAssociatedTokenAccountIdempotentInstruction as Gb,TOKEN_PROGRAM_ID as zb}from"@solana/spl-token";import mb from"bn.js";import{PublicKey as nb}from"@solana/web3.js";import ib from"bn.js";var Ib=E("Raydium.farm.util");var ng=E("Raydium_farm_instruction"),og={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])};import Gg from"bn.js";import{PublicKey as $A}from"@solana/web3.js";import{AccountLayout as tw,MintLayout as nw,NATIVE_MINT as ow,TOKEN_PROGRAM_ID as rw}from"@solana/spl-token";import Yg from"bn.js";import ao from"bn.js";var xr=new ao(25),Cr=new ao(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as yP,TOKEN_PROGRAM_ID as bP}from"@solana/spl-token";import{PublicKey as PP,SystemProgram as AP,SYSVAR_RENT_PUBKEY as wP,TransactionInstruction as kP}from"@solana/web3.js";import CP from"bn.js";var Rr=d([m("instruction"),t("amountIn"),t("minAmountOut")]),Lr=d([m("instruction"),t("maxAmountIn"),t("amountOut")]),mP=d([m("instruction"),m("nonce")]),Or=d([m("instruction"),m("nonce"),t("startTime")]),so=d([t("status"),t("nonce"),t("maxOrder"),t("depth"),t("baseDecimal"),t("quoteDecimal"),t("state"),t("resetFlag"),t("minSize"),t("volMaxCutRatio"),t("amountWaveRatio"),t("baseLotSize"),t("quoteLotSize"),t("minPriceMultiplier"),t("maxPriceMultiplier"),t("systemDecimalValue"),t("minSeparateNumerator"),t("minSeparateDenominator"),t("tradeFeeNumerator"),t("tradeFeeDenominator"),t("pnlNumerator"),t("pnlDenominator"),t("swapFeeNumerator"),t("swapFeeDenominator"),t("baseNeedTakePnl"),t("quoteNeedTakePnl"),t("quoteTotalPnl"),t("baseTotalPnl"),t("poolOpenTime"),t("punishPcAmount"),t("punishCoinAmount"),t("orderbookToInitTime"),N("swapBaseInAmount"),N("swapQuoteOutAmount"),t("swapBase2QuoteFee"),N("swapQuoteInAmount"),N("swapBaseOutAmount"),t("swapQuote2BaseFee"),i("baseVault"),i("quoteVault"),i("baseMint"),i("quoteMint"),i("lpMint"),i("openOrders"),i("marketId"),i("marketProgramId"),i("targetOrders"),i("withdrawQueue"),i("lpVault"),i("owner"),t("lpReserve"),f(t(),3,"padding")]),dP=d([t("accountType"),t("status"),t("nonce"),t("maxOrder"),t("depth"),t("baseDecimal"),t("quoteDecimal"),t("state"),t("resetFlag"),t("minSize"),t("volMaxCutRatio"),t("amountWaveRatio"),t("baseLotSize"),t("quoteLotSize"),t("minPriceMultiplier"),t("maxPriceMultiplier"),t("systemDecimalsValue"),t("abortTradeFactor"),t("priceTickMultiplier"),t("priceTick"),t("minSeparateNumerator"),t("minSeparateDenominator"),t("tradeFeeNumerator"),t("tradeFeeDenominator"),t("pnlNumerator"),t("pnlDenominator"),t("swapFeeNumerator"),t("swapFeeDenominator"),t("baseNeedTakePnl"),t("quoteNeedTakePnl"),t("quoteTotalPnl"),t("baseTotalPnl"),t("poolOpenTime"),t("punishPcAmount"),t("punishCoinAmount"),t("orderbookToInitTime"),N("swapBaseInAmount"),N("swapQuoteOutAmount"),N("swapQuoteInAmount"),N("swapBaseOutAmount"),t("swapQuote2BaseFee"),t("swapBase2QuoteFee"),i("baseVault"),i("quoteVault"),i("baseMint"),i("quoteMint"),i("lpMint"),i("modelDataAccount"),i("openOrders"),i("marketId"),i("marketProgramId"),i("targetOrders"),i("owner"),f(t(),64,"padding")]),Nr=d([m("instruction"),t("baseAmountIn"),t("quoteAmountIn"),t("fixedSide"),t("otherAmountMin")]),Mr=d([m("instruction"),t("lpAmount"),t("baseAmountMin"),t("quoteAmountMin")]);var Fr=d([t("fee")]);var OP=E("Raydium_liquidity_instruction");var vr=5e4,Vr=d([t("x"),t("y"),t("price")]),vP=d([t("accountType"),t("status"),t("multiplier"),t("validDataCount"),f(Vr,vr,"DataElement")]);import{PublicKey as QP}from"@solana/web3.js";import HP from"decimal.js";import{TOKEN_PROGRAM_ID as $P}from"@solana/spl-token";import{PublicKey as DP}from"@solana/web3.js";var UP=E("Raydium_liquidity_serum");import Bw from"bn.js";import Kw from"decimal.js";import{TOKEN_PROGRAM_ID as BA}from"@solana/spl-token";import{PublicKey as KA}from"@solana/web3.js";import CA from"bn.js";import{SystemProgram as dA,SYSVAR_RENT_PUBKEY as pA,Transaction as fA,TransactionInstruction as yA}from"@solana/web3.js";import{createInitializeAccountInstruction as gA,TOKEN_PROGRAM_ID as PA}from"@solana/spl-token";function _r(r="accountFlags"){let e=new wt(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 Er=d([M(5),_r("accountFlags"),i("ownAddress"),t("vaultSignerNonce"),i("baseMint"),i("quoteMint"),i("baseVault"),t("baseDepositsTotal"),t("baseFeesAccrued"),i("quoteVault"),t("quoteDepositsTotal"),t("quoteFeesAccrued"),t("quoteDustThreshold"),i("requestQueue"),i("eventQueue"),i("bids"),i("asks"),t("baseLotSize"),t("quoteLotSize"),t("feeRateBps"),t("referrerRebatesAccrued"),M(7)]);import{PublicKey as $k}from"@solana/web3.js";import{AccountLayout as eT,NATIVE_MINT as tT,TOKEN_2022_PROGRAM_ID as nT,TOKEN_PROGRAM_ID as oT,createAssociatedTokenAccountIdempotentInstruction as iT}from"@solana/spl-token";import jw from"bn.js";import Xr from"bn.js";var Vw=new Xr(0);import Uw from"bn.js";import Yr from"bn.js";var ge=new Yr(1e6);import dT from"bn.js";import fT from"decimal.js";import{PublicKey as yk,TransactionInstruction as bk,Keypair as Pk,SystemProgram as Ak}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as kk,TOKEN_2022_PROGRAM_ID as Tk,TOKEN_PROGRAM_ID as hk}from"@solana/spl-token";var nk=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),ok=Buffer.from("amm_config","utf8"),ik=Buffer.from("pool","utf8"),rk=Buffer.from("pool_lp_mint","utf8"),ak=Buffer.from("pool_vault","utf8"),sk=Buffer.from("observation","utf8"),uk=Buffer.from("permission","utf8"),ck=Buffer.from("support_mint","utf8");var lk=Buffer.from("locked_liquidity","utf8");var Rk=E("Raydium_cpmm"),Lk={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 Hr=d([M(8),m("bump"),ue("disableCreatePool"),Z("index"),t("tradeFeeRate"),t("protocolFeeRate"),t("fundFeeRate"),t("createPoolFee"),i("protocolOwner"),i("fundOwner"),t("creatorFeeRate"),f(t(),15)]),uo=d([M(8),i("configId"),i("poolCreator"),i("vaultA"),i("vaultB"),i("mintLp"),i("mintA"),i("mintB"),i("mintProgramA"),i("mintProgramB"),i("observationId"),m("bump"),m("status"),m("lpDecimals"),m("mintDecimalA"),m("mintDecimalB"),t("lpAmount"),t("protocolFeesMintA"),t("protocolFeesMintB"),t("fundFeesMintA"),t("fundFeesMintB"),t("openTime"),t("epoch"),m("feeOn"),ue("enableCreatorFee"),f(m(),6),t("creatorFeesMintA"),t("creatorFeesMintB"),f(t(),28)]),Mk=d([M(8),i("configId"),f(t(),30)]);import{PublicKey as rK,SystemProgram as aK}from"@solana/web3.js";import{createTransferInstruction as uK,TOKEN_PROGRAM_ID as cK,TOKEN_2022_PROGRAM_ID as lK,createAssociatedTokenAccountIdempotentInstruction as mK,createSyncNativeInstruction as pK,createTransferCheckedInstruction as fK}from"@solana/spl-token";import pa from"bn.js";import gK from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Ih,TOKEN_2022_PROGRAM_ID as Bh,TOKEN_PROGRAM_ID as Sh}from"@solana/spl-token";import{SystemProgram as Rh,TransactionInstruction as Lh}from"@solana/web3.js";import oa from"bn.js";var Jr=d([t(),t("epoch"),m("curveType"),Z("index"),t("migrateFee"),t("tradeFeeRate"),t("maxShareFeeRate"),t("minSupplyA"),t("maxLockRate"),t("minSellRateA"),t("minMigrateRateA"),t("minFundRaisingB"),i("mintB"),i("protocolFeeOwner"),i("migrateFeeOwner"),i("migrateToAmmWallet"),i("migrateToCpmmWallet"),f(t(),16)]),ea=d([t("totalLockedAmount"),t("cliffPeriod"),t("unlockPeriod"),t("startTime"),t("totalAllocatedShare")]),ta=d([t(),t("epoch"),m("bump"),m("status"),m("mintDecimalsA"),m("mintDecimalsB"),m("migrateType"),t("supply"),t("totalSellA"),t("virtualA"),t("virtualB"),t("realA"),t("realB"),t("totalFundRaisingB"),t("protocolFee"),t("platformFee"),t("migrateFee"),ea.replicate("vestingSchedule"),i("configId"),i("platformId"),i("mintA"),i("mintB"),i("vaultA"),i("vaultB"),i("creator"),m("mintProgramFlag"),m("cpmmCreatorFeeOn"),t("platformVestingShare"),f(m(),54)]),rh=d([t(),t("epoch"),i("poolId"),i("beneficiary"),t("claimedAmount"),t("tokenShareAmount"),f(t(),8)]),lo=d([m("migrateType"),m("migrateCpmmFeeOn"),t("supply"),t("totalSellA"),t("totalFundRaisingB"),t("totalLockedAmount"),t("cliffPeriod"),t("unlockPeriod")]),na=d([t("epoch"),m("index"),i("configId"),lo.replicate("bondingCurveParam"),f(t(),50)]),mo=d([t(),t("epoch"),i("platformClaimFeeWallet"),i("platformLockNftWallet"),t("platformScale"),t("creatorScale"),t("burnScale"),t("feeRate"),f(m(),64,"name"),f(m(),256,"web"),f(m(),256,"img"),i("cpConfigId"),t("creatorFeeRate"),i("transferFeeExtensionAuth"),i("platformVestingWallet"),t("platformVestingScale"),i("platformCpCreator"),m("restrictGlobalConfig"),f(m(),107),En(na,"platformCurve")]);var lh=Buffer.from("vault_auth_seed","utf8"),mh=Buffer.from("global_config","utf8"),dh=Buffer.from("pool_vesting","utf8"),ph=Buffer.from("platform_config","utf8"),fh=Buffer.from("platform_fee_vault_auth_seed","utf8"),yh=Buffer.from("creator_fee_vault_auth_seed","utf8"),bh=Buffer.from("platform_global_access","utf8"),gh=Buffer.from("platform_allow_config","utf8");var Fh={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 vh=new oa("18446744073709551615");import{TOKEN_2022_PROGRAM_ID as Dh,TOKEN_PROGRAM_ID as Wh}from"@solana/spl-token";import zh from"bn.js";import Yh from"decimal.js";import BI from"bn.js";import KI from"decimal.js";import Jh from"bn.js";import tI from"decimal.js";import mI from"bn.js";import pI from"decimal.js";import yo from"bn.js";import nn from"decimal.js";var St=class{static _multipler(e){return new nn(10).pow(e)}static getPrice({priceX64:e,decimalA:n,decimalB:o}){return new nn(e.toString()).div(this._Q64).mul(this._multipler(n)).div(this._multipler(o))}static getPriceX64({price:e,decimalA:n,decimalB:o}){let a=e.mul(this._multipler(o)).div(this._multipler(n));return new yo(a.mul(this._Q64).toFixed(0))}};St._Q64=new nn(new yo(1).shln(64).toString());import{NATIVE_MINT as FB,TOKEN_2022_PROGRAM_ID as vB,TOKEN_PROGRAM_ID as VB,createAssociatedTokenAccountIdempotentInstruction as EB,createSyncNativeInstruction as DB,getTransferFeeConfig as WB,unpackMint as qB}from"@solana/spl-token";import H from"bn.js";import{PublicKey as la,SystemProgram as zB}from"@solana/web3.js";import $B from"decimal.js";var JB={initPriceX64:new H("515752397214619"),supply:new H(1e15),totalSellA:new H(7931e11),totalFundRaisingB:new H(85e9),totalFundRaisingBUSD:new H(125e8),totalLockedAmount:new H("0"),cliffPeriod:new H("0"),unlockPeriod:new H("0"),decimals:6,virtualA:new H("1073471847374405"),virtualB:new H("30050573465"),realA:new H(0),realB:new H(0),protocolFee:new H(0),platformId:new la("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new H(0),cliffPeriod:new H(0),unlockPeriod:new H(0),startTime:new H(0),totalAllocatedShare:new H(0)}},eS=new H(1e4);var ma={[Gn.toBase58()]:3};var da=d([M(5),M(8),i("ownAddress"),t("vaultSignerNonce"),i("baseMint"),i("quoteMint"),i("baseVault"),t("baseDepositsTotal"),t("baseFeesAccrued"),i("quoteVault"),t("quoteDepositsTotal"),t("quoteFeesAccrued"),t("quoteDustThreshold"),i("requestQueue"),i("eventQueue"),i("bids"),i("asks"),t("baseLotSize"),t("quoteLotSize"),t("feeRateBps"),t("referrerRebatesAccrued"),M(7)]);import{PublicKey as hS}from"@solana/web3.js";var xS=E("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as VS,TOKEN_2022_PROGRAM_ID as _S,TOKEN_PROGRAM_ID as ES}from"@solana/spl-token";import{PublicKey as WS,SystemProgram as qS,TransactionInstruction as US}from"@solana/web3.js";import zS from"bn.js";var YK=new pa(0);import{PublicKey as fa,Transaction as on,TransactionInstruction as ya}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ba}from"@solana/spl-token";import bo from"bn.js";var oe=class extends ae{static getPdaPoolId(e,n){return ye([oe.SEED_CONFIG.pool.id,n.toBuffer()],e)}static getPdaOwnerId(e,n,o,a){return ye([oe.SEED_CONFIG.owner.id,n.toBuffer(),o.toBuffer(),Buffer.from(new bo(a).toArray())],e)}static async getAllInfo({connection:e,programId:n,poolIds:o,wallet:a,chainTime:l}){if(o.length===0)return[];let p=o.map(y=>oe.getPdaPoolId(n,y).publicKey),c=[];for(let y=0;y<oe.VERSION_PROJECT.length;y++)c.push(...p.map(T=>oe.getPdaOwnerId(n,T,a,y).publicKey));let b=await ke(e,[...p,...c]),P=[];for(let y=0;y<b.length;y++){let T=Math.floor(y/o.length),x=y%o.length,w=p[x],R=c[y],A=b[x],k=b[o.length+y];if(!(A&&k)||A.data.length!==oe.POOL_LAYOUT.span||k.data.length!==oe.OWNER_LAYOUT.span)continue;let B=oe.POOL_LAYOUT.decode(A.data),K=oe.OWNER_LAYOUT.decode(k.data),F=B.openTime.toNumber(),v=B.endTime.toNumber(),g=K.tokenInfo.map(C=>C.debtAmount.gt(new bo(0))).filter(C=>!C).length!==3,h=l>F&&l<v&&B.status===1,I=g&&h;P.push({programId:n,poolId:w,ammId:B.ammId,ownerAccountId:R,snapshotLpAmount:K.lpAmount,project:oe.VERSION_PROJECT[T],openTime:F,endTime:v,canClaim:I,canClaimErrorType:g?h?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:B.tokenInfo.map((C,L)=>({mintAddress:C.mintAddress,mintVault:C.mintVault,mintDecimals:C.mintDecimals,perLpLoss:C.perLpLoss,debtAmount:K.tokenInfo[L].debtAmount.add(K.tokenInfo[L].claimedAmount)}))})}return P}async makeClaimTransaction({poolInfo:e,ownerInfo:n,feePayer:o}){n.wallet||this.scope.checkOwner();let a=this.createTxBuilder(o),l=n.wallet||this.scope.ownerPubKey,p=[];for(let P of e.tokenInfo){let{account:y,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({mint:P.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:P.mintAddress.equals(ne.WSOL.mint),createInfo:{payer:l,amount:0},skipCloseAccount:!P.mintAddress.equals(ne.WSOL.mint),associatedOnly:P.mintAddress.equals(ne.WSOL.mint)?!1:n.associatedOnly});T&&a.addInstruction(T),p.push(y)}a.addInstruction({instructions:[oe.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:l,ownerPda:e.ownerAccountId,claimAddress:p}})]});let{transaction:c,signers:b}=a.build();return[{transaction:c,signer:b}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:n,feePayer:o}){let a=this.createTxBuilder(o),l=n.wallet||this.scope.ownerPubKey,p={};for(let y of e){let T=[];for(let x of y.tokenInfo){let{account:w,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({mint:x.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:x.mintAddress.equals(ne.WSOL.mint),createInfo:{payer:l,amount:0},skipCloseAccount:!x.mintAddress.equals(ne.WSOL.mint),associatedOnly:x.mintAddress.equals(ne.WSOL.mint)?!1:n.associatedOnly});R&&a.addInstruction(R),w&&(p[x.mintAddress.toString()]=w,T.push(w))}a.addInstruction({instructions:[oe.makeClaimInstruction({programId:y.programId,poolInfo:y,ownerInfo:{wallet:l,ownerPda:y.ownerAccountId,claimAddress:T}})]})}let{transaction:c,signers:b}=a.build(),P=a.allInstructions;return Wt(P,[l,...b.map(y=>y.publicKey)])?[{transaction:c,signer:b}]:[{transaction:new on().add(...P.slice(0,a.AllTxData.instructions.length-1)),signer:b},{transaction:new on().add(...P.slice(a.AllTxData.instructions.length-1)),signer:[]},{transaction:new on().add(...a.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:n,ownerInfo:o}){let a=d([]),l=[{pubkey:o.wallet,isSigner:!0,isWritable:!0},{pubkey:n.poolId,isSigner:!1,isWritable:!0},{pubkey:o.ownerPda,isSigner:!1,isWritable:!0},...o.claimAddress.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})),...n.tokenInfo.map(({mintVault:b})=>({pubkey:b,isSigner:!1,isWritable:!0})),{pubkey:ba,isSigner:!1,isWritable:!1}],p=Buffer.alloc(a.span);a.encode({},p);let c=Buffer.from([10,66,208,184,161,6,191,98,...p]);return new ya({keys:l,programId:e,data:c})}},de=oe;de.CLAIMED_NUM=3,de.POOL_LAYOUT=d([M(8),m("bump"),m("status"),t("openTime"),t("endTime"),i("ammId"),f(d([m("mintDecimals"),i("mintAddress"),i("mintVault"),t("perLpLoss"),t("totalClaimedAmount")]),oe.CLAIMED_NUM,"tokenInfo"),f(t(),10,"padding")]),de.OWNER_LAYOUT=d([M(8),m("bump"),m("version"),i("poolId"),i("owner"),t("lpAmount"),f(d([i("mintAddress"),t("debtAmount"),t("claimedAmount")]),oe.CLAIMED_NUM,"tokenInfo"),f(t(),4,"padding")]),de.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new fa(e)),de.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},de.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as lx}from"@solana/web3.js";import{getTransferFeeConfig as dx,MintLayout as px,TOKEN_2022_PROGRAM_ID as fx,TOKEN_PROGRAM_ID as yx,unpackMint as bx}from"@solana/spl-token";var GC=new Le(2),zC=new Le(3),XC=new Le(5),Mo=new Le(10),YC=new Le(100),QC=new Le(1e3),ZC=new Le(1e4);function Lt(r,e=1,n=[]){let o=[...r];if(e<=0)return n;for(;o.length;)n.push(o.splice(0,e));return n}import j from"bn.js";import Ge from"decimal.js";var Q=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>=Ne&&e<=Me}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${Ne}, ${Me}]`)}static getSqrtPriceAtTick(e){this.checkTick(e);let n=Math.abs(e),o=$.clone();for(let{bit:a,factor:l}of pn)(n&1<<a)!==0&&(o=ce(o,l,$));return e>0&&(o=ce($,$,o)),o}static getLimitOrderOutput({amountIn:e,tick:n,zeroForOne:o}){if(o){let a=Q.getPriceAtTick(n,!1);return ce(e,a,$)}else{let a=Q.getPriceAtTick(n,!0);return ce(e,$,a)}}static getLimitOrderInput({amountOut:e,tick:n,zeroForOne:o}){if(o){let a=Q.getPriceAtTick(n,!0);return le(e,a,$)}else{let a=Q.getPriceAtTick(n,!1);return le(e,$,a)}}static limitOrderUnfilledAmount({tick:e}){return e.ordersAmount.add(e.partFilledOrdersRemaining)}static matchLimitOrder({tick:e,swapAmount:n,swapDirectionZeroForOne:o,isBaseInput:a,feeRate:l,isFeeOnInput:p}){let c={amountIn:q,amountOut:q,ammFeeAmount:q},b=this.limitOrderUnfilledAmount({tick:e});if(n.isZero()||b.isZero())return c;if(a)p?(c.ammFeeAmount=le(n,new j(l),ge),c.amountIn=n.sub(c.ammFeeAmount)):c.amountIn=n,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}),p&&(c.ammFeeAmount=le(c.amountIn,new j(l),ge.sub(new j(l)))));else{let T=j.min(n,b);p?c.amountOut=T:c.amountOut=j.min(le(T,ge,ge.sub(new j(l))),b),c.amountIn=this.getLimitOrderInput({amountOut:c.amountOut,tick:e.tick,zeroForOne:!o}),p&&(c.ammFeeAmount=le(c.amountIn,new j(l),ge.sub(new j(l))))}let P=q;e.partFilledOrdersRemaining.gt(q)&&(P=j.min(e.partFilledOrdersRemaining,c.amountOut),P.gt(q)&&(e.unfilledRatioX64=ce(e.unfilledRatioX64,e.partFilledOrdersRemaining.sub(P),e.partFilledOrdersRemaining)),e.partFilledOrdersRemaining=e.partFilledOrdersRemaining.sub(P));let y=c.amountOut.sub(P);if(y.gt(q)){if(!e.partFilledOrdersRemaining.isZero())throw Error("!tick.partFilledOrdersRemaining.isZero()");if(e.ordersAmount.lt(y))throw Error("InvalidLimitOrderAmount");e.orderPhase=e.orderPhase.add(we),e.unfilledRatioX64=ce($,e.ordersAmount.sub(y),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(y),e.ordersAmount=q}return p||(c.ammFeeAmount=le(c.amountOut,new j(l),ge),c.amountOut=c.amountOut.sub(c.ammFeeAmount)),c}static getPriceAtTick(e,n){let o=this.getSqrtPriceAtTick(e);return n?o.mul(o).add($.subn(1)).div($):o.mul(o).div($)}static getTickAtSqrtPrice(e){if(!(e.gte(Be)&&e.lte(Se)))throw Error("SqrtPriceX64");let n=jn(e),o=n-64,a;o>=0?a=new j(o).shln(32):a=new j(-o).shln(32).neg();let l;n>=64?l=e.shrn(n-63):l=e.shln(63-n);let p=new j(0),c=new j(1).shln(63);for(let k=0;k<dn&&!c.isZero();k++){l=l.mul(l);let B=l.shrn(127).toNumber();l=l.shrn(63+B),B&&(p=p.add(c)),c=c.shrn(1)}let b=p.shrn(32),y=a.add(b).mul(cn),T=y.sub(ln),x=y.add(mn),w=this.signedShrn64(T),R=this.signedShrn64(x);return w===R?w:Q.getSqrtPriceAtTick(R).lte(e)?R:w}static signedShrn64(e){if(e.isNeg()){let n=new j(1).shln(64),o=e.div(n);return!e.mod(n).isZero()&&e.isNeg()?o.subn(1).toNumber():o.toNumber()}else return e.shrn(64).toNumber()}static sqrtPriceX64ToPrice(e,n,o){let a=e.mul(e),l=n-o,p=20,c=new j(10).pow(new j(p)),b=a.mul(c),P=new j(1).shln(128),T=b.div(P).toString();for(;T.length<=p;)T="0"+T;let x=T.slice(0,-p),w=T.slice(-p),R=x+"."+w;return new Ge(R).mul(new Ge(10).pow(l))}static tickToPrice(e,n,o){let a=Q.getSqrtPriceAtTick(e);return this.sqrtPriceX64ToPrice(a,n,o)}static priceToTick(e,n,o){let l=e.div(Math.pow(10,n-o)).log().div(new Ge(1.0001).log()).floor();return Math.max(Ne,Math.min(Me,l.toNumber()))}static priceToSqrtPriceX64(e,n,o){let p=e.div(Math.pow(10,n-o)).sqrt().mul(new Ge(2).pow(64));return new j(p.toFixed(0))}static toTickIndex(e,n){return e>=0?e-e%n:e-e%n-(e%n!==0?n:0)}static getPriceAndTick({price:e,mintADecimals:n,mintBDecimals:o,zeroForOne:a,tickSpacing:l}){let p=e.clamp(1/10**Math.max(n,o),Number.MAX_SAFE_INTEGER);a||(p=new Ge(1).div(p));let c=Q.toTickIndex(Q.priceToTick(p,n,o),l),b=Q.tickToPrice(c,n,o);return{price:a?b:new Ge(1).div(b),tick:c}}};var Jt=class{static isFullyFilled({orderInfo:e}){return e.totalAmount.eq(e.filledAmount)}static getUnFilledAmount({orderInfo:e}){return e.totalAmount.sub(e.filledAmount)}static settleFilledOrder({orderInfo:e,tickInfo:n}){if(e.settleBase.isZero())return q;if(e.orderPhase.eq(n.orderPhase))return q;if(e.orderPhase.add(we).eq(n.orderPhase)){let o=e.settleBase.mul(n.unfilledRatioX64),a=e.unfilledRatioX64,l=o.div(a),p=o.mod(a).isZero(),c=e.settleBase.sub(l);if(c.isZero())return q;let b=p?c:c.sub(we);return Q.getLimitOrderOutput({amountIn:b,tick:n.tick,zeroForOne:e.zeroForOne}).sub(e.settleOutput)}else{if(e.orderPhase.add(new ga(2)).lte(n.orderPhase))return Q.getLimitOrderOutput({amountIn:e.settleBase,tick:n.tick,zeroForOne:e.zeroForOne}).sub(e.settleOutput);throw Error("invalid order phase")}}};export{Jt as LimitOrderMath};
//# sourceMappingURL=limitOrder.mjs.map