@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 78.8 kB
JavaScript
var go=Object.defineProperty,Po=Object.defineProperties;var Ao=Object.getOwnPropertyDescriptors;var st=Object.getOwnPropertySymbols;var un=Object.prototype.hasOwnProperty,cn=Object.prototype.propertyIsEnumerable;var sn=(r,e,n)=>e in r?go(r,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[e]=n,O=(r,e)=>{for(var n in e||(e={}))un.call(e,n)&&sn(r,n,e[n]);if(st)for(var n of st(e))cn.call(e,n)&&sn(r,n,e[n]);return r},V=(r,e)=>Po(r,Ao(e));var pe=(r,e)=>{var n={};for(var o in r)un.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&&cn.call(r,o)&&(n[o]=r[o]);return n};import wa from"bn.js";import E from"bn.js";var j=new E(1).shln(64);var wo=new E(1).shln(128),Kt=new E(1).shln(64).subn(1),ko=new E(1).shln(128).subn(1),Ne=-443636,Me=443636,Be=new E("4295048016"),Se=new E("79226673521066979257578248091"),ln=new E("59543866431248"),mn=new E("184467440737095516"),dn=new E("15793534762490258745"),pn=16;var xt=60,ha=new E("18446743708227953217"),fn=[{bit:0,factor:new E("fffcb933bd6fb800",16)},{bit:1,factor:new E("fff97272373d4000",16)},{bit:2,factor:new E("fff2e50f5f657000",16)},{bit:3,factor:new E("ffe5caca7e10f000",16)},{bit:4,factor:new E("ffcb9843d60f7000",16)},{bit:5,factor:new E("ff973b41fa98e800",16)},{bit:6,factor:new E("ff2ea16466c9b000",16)},{bit:7,factor:new E("fe5dee046a9a3800",16)},{bit:8,factor:new E("fcbe86c7900bb000",16)},{bit:9,factor:new E("f987a7253ac65800",16)},{bit:10,factor:new E("f3392b0822bb6000",16)},{bit:11,factor:new E("e7159475a2caf000",16)},{bit:12,factor:new E("d097f3bdfd2f2000",16)},{bit:13,factor:new E("a9f746462d9f8000",16)},{bit:14,factor:new E("70d869a156f31c00",16)},{bit:15,factor:new E("31be135f97ed3200",16)},{bit:16,factor:new E("9aa508b5b85a500",16)},{bit:17,factor:new E("5d6af8dedc582c",16)},{bit:18,factor:new E("2216e584f5fa",16)}];var Xe=3,yn=100;var bn=10,gn=100,ut=14;var q=new E(0),we=new E(1),Ia=new E(-1);var Ba=new E("18446744073700000000");import{PublicKey as Io}from"@solana/web3.js";import{get as Pn,set as To}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}},An={},ho={};function D(r){let e=Pn(An,r);if(!e){let n=Pn(ho,r);e=new Ct({name:r,logLevel:n}),To(An,r,e)}return e}import{MINT_SIZE as va,TOKEN_PROGRAM_ID as _a,getTransferFeeConfig as Va,unpackMint as Ea}from"@solana/spl-token";var Rt=D("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:L,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:L,lamports:A,owner:new Io(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 iR from"decimal.js";import Oo from"big.js";import ns from"bn.js";import Bo from"toformat";var So=Bo,He=So;import lt from"big.js";import xo from"bn.js";import Co from"decimal.js-light";import Qe from"bn.js";var wn=9007199254740991;function re(r){let e=D("Raydium_parseBigNumberish");if(r instanceof Qe)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new Qe(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=wn||r<=-wn)&&e.logWithError(`BigNumberish number overflow: ${r}`),new Qe(String(r))):typeof r=="bigint"?new Qe(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new Qe(0))}var ct=D("module/fraction"),Ot=He(lt),Ze=He(Co),Ro={[0]:Ze.ROUND_DOWN,[1]:Ze.ROUND_HALF_UP,[2]:Ze.ROUND_UP},Lo={[0]:lt.roundDown,[1]:lt.roundHalfUp,[2]:lt.roundUp},G=class{constructor(e,n=new xo(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.`),Ze.set({precision:e+1,rounding:Ro[o]});let a=new Ze(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=Lo[o]||1,new Ot(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,n)}isZero(){return this.numerator.isZero()}};var ms=D("Raydium_amount"),ds=He(Oo);import{PublicKey as Mo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as kn}from"@solana/spl-token";var mt={chainId:101,address:Mo.default.toBase58(),programId:kn.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:kn.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 Tn,SYSVAR_RENT_PUBKEY as Fo}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:Tn.programId,isWritable:!1}),Fe({pubkey:Fo,isWritable:!1})];function hn({publicKey:r,transformSol:e}){let n=In(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 In(r){try{return new X(r)}catch{return r}}var Nt=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),$e=new X("SysvarRent111111111111111111111111111111111"),ws=new X("SysvarC1ock11111111111111111111111111111111"),dt=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Vo=new X("Sysvar1nstructions1111111111111111111111111"),Eo=Tn.programId,ks=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ts=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),hs=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Is=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Bs=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ss=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ks=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),xs=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Cs=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Rs=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Ls=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:hn({publicKey:e}),this.isToken2022=p}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ne=Ft;ne.WSOL=new Ft(V(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 Do from"bn.js";var Us=new G(new Do(100));var Qs=D("Raydium_price");import{merge as aC}from"lodash";import iu from"axios";var Bn={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"},Wo=V(O({},Bn),{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 Ku=D("Raydium_Api");import{PublicKey as Xl,SystemProgram as Yl}from"@solana/web3.js";import{AccountLayout as jl,createAssociatedTokenAccountIdempotentInstruction as Jl,TOKEN_PROGRAM_ID as em,TOKEN_2022_PROGRAM_ID as tm}from"@solana/spl-token";import{PublicKey as De,sendAndConfirmTransaction as qt,SystemProgram as Yo,Transaction as et,TransactionMessage as tt,VersionedTransaction as nt}from"@solana/web3.js";import Ho from"axios";import{PublicKey as _t,AddressLookupTableAccount as Ve}from"@solana/web3.js";async function Vt({connection:r,address:e,cluster:n="mainnet"}){let o=await ke(r,[...new Set(e.map(l=>l.toString()))].map(l=>new _t(l))),a={};for(let l=0;l<e.length;l++){let p=o[l],c=e[l];if(!p)continue;let b=new Ve({key:c,state:Ve.deserialize(p.data)});a[c.toString()]=b,n==="devnet"?_e[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 _t(e),o=await r.getAccountInfo(n);return o&&(ve[e]=new Ve({key:n,state:Ve.deserialize(o.data)})),ve},_e={},Dt=async r=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(_e[e])return _e;let n=new _t(e),o=await r.getAccountInfo(n);return o&&(_e[e]=new Ve({key:n,state:Ve.deserialize(o.data)})),_e};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 Sn,Keypair as xn,PublicKey as qo,Transaction as Cn,TransactionMessage as Uo,VersionedTransaction as Rn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Go}from"@solana/spl-token";var Kn=D("Raydium_txUtil"),Ln=1644;function ft(r){let e=[],n=[];return r.microLamports&&(e.push(Sn.setComputeUnitPrice({microLamports:r.microLamports})),n.push(J.SetComputeUnitPrice)),r.units&&(e.push(Sn.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&&Kn.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Kn.logWithError(`no signers provided:, ${e.toString()}`);let n=new Cn;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=e[0],n.add(...r);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<Ln}catch{return!1}}function ye(r,e){let[n,o]=qo.findProgramAddressSync(r,e);return{publicKey:n,nonce:o}}function je({instructions:r,payer:e,signers:n}){return Wt(r,[e,...n])}function Je({instructions:r,payer:e,lookupTableAddressAccount:n,recentBlockhash:o=xn.generate().publicKey.toString()}){let l=new Uo({payerKey:e,recentBlockhash:o,instructions:r}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new Rn(l).serialize()).toString("base64").length<Ln}catch{return!1}}var zo=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r),Xo=r=>{let e=r.serialize({requireAllSignatures:!1,verifySignatures:!1});r instanceof Rn&&(e=zo(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 Cn&&(n.recentBlockhash||(n.recentBlockhash=Go.toBase58()),n.feePayer||(n.feePayer=xn.generate().publicKey)),e.push(Xo(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 Ho.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(Yo.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(V(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:L,skipPreflight:A=!0}=y||{},k=L!=null?L: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,N=null,_=null,se=U=>{N!==null&&clearInterval(N),_!==null&&this.connection.removeSignatureListener(_);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&&(N=setInterval(async()=>{var U;if(C){clearInterval(N);return}try{let W=await this.connection.getTransaction(I,{commitment:"confirmed",maxSupportedTransactionVersion:1});W&&(C=!0,clearInterval(N),se({err:((U=W.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",I))}catch(W){C=!0,clearInterval(N),console.error("getTransaction timeout:",W,I)}},bt)),_=this.connection.onSignature(I,U=>{if(C){this.connection.removeSignatureListener(_);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 L=e||{},{lookupTableCache:n={},lookupTableAddress:o=[],forerunCreate:a,recentBlockhash:l}=L,p=pe(L,["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 Vt({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:L=!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:L});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:L}))),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:L});K.push({txId:v,status:"sent",signedTx:k[B]}),x==null||x([...K]),B++;let g=!1,h=null,I=null,C=N=>{h!==null&&clearInterval(h),I!==null&&this.connection.removeSignatureListener(I);let _=K.findIndex(se=>se.txId===v);if(_>-1){if(K[_].status==="error"||K[_].status==="success")return;K[_].status=N.err?"error":"success"}x==null||x([...K]),N.err||F()};this.loopMultiTxStatus&&(h=setInterval(async()=>{var N;if(g){clearInterval(h);return}try{let _=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:1});_&&(g=!0,clearInterval(h),C({err:((N=_.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",v))}catch(_){g=!0,clearInterval(h),console.error("getTransaction timeout:",_,v)}},bt)),I=this.connection.onSignature(v,N=>{if(g){this.connection.removeSignatureListener(I);return}g=!0,C(N)},"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:L});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,L)=>V(O({},w),{[L.publicKey.toBase58()]:L}),{}),c=[],b=[],P=[],y=0;if(this.allInstructions.forEach(w=>{let L=[...P,w],A=o?[...l.instructions,...L]:L,B=[...new Set(L.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&&(je({instructions:A,payer:this.feePayer,signers:B})||je({instructions:L,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,je({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 L=[...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);je({instructions:o?[...l.instructions,...P]:[...P],payer:this.feePayer,signers:L.map(A=>A.publicKey)})?c.push(new et().add(...l.instructions,...P)):c.push(new et().add(...P)),b.push(L)}return c.forEach(w=>w.feePayer=this.feePayer),(x=this.owner)!=null&&x.signer&&b.forEach(w=>{w.some(L=>L.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:L,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(L){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(N=>N.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(L){let I=0,C=[],N=async()=>{if(!h[I])return;I<k&&(C.push({txId:"",status:"success",signedTx:h[I]}),A==null||A([...C]),I++,N());let _=await this.connection.sendRawTransaction(h[I].serialize(),{skipPreflight:K});C.push({txId:_,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===_);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||N()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var z;if(se){clearInterval(U);return}try{let ie=await this.connection.getTransaction(_,{commitment:"confirmed",maxSupportedTransactionVersion:1});ie&&(se=!0,clearInterval(U),te({err:((z=ie.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",_))}catch(ie){se=!0,clearInterval(U),console.error("getTransaction timeout:",ie,_)}},bt)),W=this.connection.onSignature(_,z=>{if(se){this.connection.removeSignatureListener(W);return}se=!0,te(z)},"confirmed"),this.connection.getSignatureStatus(_)};return await N(),{txIds:C.map(_=>_.txId),signedTxs:h}}else{let I=[];for(let C=0;C<h.length;C+=1){let N=await this.connection.sendRawTransaction(h[C].serialize(),{skipPreflight:K});I.push(N)}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 Vt({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),L=this.signers.reduce((g,h)=>V(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 N of[...new Set(P)])b[N]!==void 0&&(C[N]=b[N]);if(n&&Je({instructions:[...x.instructions,...B],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:w})){let N=new tt({payerKey:this.feePayer,recentBlockhash:w,instructions:[...x.instructions,...B]}).compileToV0Message(Object.values(b));A.push(new nt(N))}else{let N=new tt({payerKey:this.feePayer,recentBlockhash:w,instructions:[...B]}).compileToV0Message(Object.values(b));A.push(new nt(N))}k.push(Array.from(new Set(B.map(N=>N.keys.filter(_=>_.isSigner).map(_=>_.pubkey.toString())).flat())).map(N=>L[N]).filter(N=>N!==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=>L[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:N,skipPreflight:_=!0}=g||{};if(A.map(async(U,W)=>{k[W].length&&U.sign(k[W]),N&&(U.message.recentBlockhash=N)}),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:_});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:_}))),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:_});z.push({txId:Pe,status:"sent",signedTx:W[te]}),I==null||I([...z]),te++;let ze=!1,Oe=null,at=null,an=Ie=>{Oe!==null&&clearInterval(Oe),at!==null&&this.connection.removeSignatureListener(at);let Ae=z.findIndex(bo=>bo.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:1});Ae&&(ze=!0,clearInterval(Oe),an({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,an(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:_});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=D(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 hl,SystemProgram as Bl}from"@solana/web3.js";import xl from"bn.js";import{createCloseAccountInstruction as Ol,createInitializeAccountInstruction as Nl,createTransferInstruction as Ml,TOKEN_PROGRAM_ID as Fl}from"@solana/spl-token";import{Keypair as ll,PublicKey as ml}from"@solana/web3.js";import fl from"bn.js";import{TOKEN_PROGRAM_ID as gl}from"@solana/spl-token";import{PublicKey as ai}from"@solana/web3.js";import vn,{isBN as _n}from"bn.js";import{bits as Qo,BitStructure as yc,blob as Zo,Blob as bc,cstr as gc,f32 as Pc,f32be as Ac,f64 as wc,f64be as kc,greedy as Tc,Layout as $o,ns64 as hc,ns64be as Ic,nu64 as Bc,nu64be as Sc,offset as jo,s16 as Kc,s16be as xc,s24 as Cc,s24be as Rc,s32 as Jo,s32be as Lc,s40 as Oc,s40be as Nc,s48 as Mc,s48be as Fc,s8 as vc,seq as ei,struct as _c,Structure as ti,u16 as ni,u16be as Vc,u24 as Ec,u24be as Dc,u32 as oi,u32be as Wc,u40 as qc,u40be as Uc,u48 as Gc,u48be as zc,u8 as ii,UInt as ri,union as Xc,Union as Yc,unionLayoutDiscriminator as Hc,utf8 as Qc}from"@solana/buffer-layout";var Pt=$o,On=ti;var Gt=ri;var Nn=ii,Q=ni;var At=oi;var me=Jo;var Mn=ei;var M=Zo;var zt=Qo,Fn=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 vn(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 vn(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 R(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 En(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 ai(e),e=>e.toBuffer(),r)}function ue(r){return new ot(Nn(),si,ui,r)}function si(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function ui(r){return r?1:0}function Yt(r,e){let n=At("length"),o=d([n,f(r,Fn(n,-n.span),"values")]);return new ot(o,({values:a})=>a,a=>({values:a}),e)}var Xt=class extends On{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:_n(e)?e.toNumber():new Proxy(e,{get(l,p){if(!o){let c=Reflect.get(l,"count");o=_n(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 Mn(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 um}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as lm}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"),Ht=new S("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),fm=new S("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),li=new S("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Gn=new S("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),zn=new S("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),ym=new S("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),mi=new S("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Xn=new S("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),di=new S("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),pi=new S("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Yn=new S("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),bm=new S("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),fi=new S("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Qt=new S("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),yi=new S("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),gm=new S("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),bi=new S("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),gi=new S("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Pi=new S("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Pm=new S("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Am=new S("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),wm=new S("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),km=new S("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Tm=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 ey,TOKEN_2022_PROGRAM_ID as ty,TOKEN_PROGRAM_ID as ny}from"@solana/spl-token";import{PublicKey as iy}from"@solana/web3.js";import ay from"bn.js";import uy from"decimal.js";import{TOKEN_PROGRAM_ID as vm}from"@solana/spl-token";import{PublicKey as Dm}from"@solana/web3.js";var Ai=d([Y("mintAuthorityOption"),i("mintAuthority"),t("supply"),m("decimals"),m("isInitialized"),Y("freezeAuthorityOption"),i("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as hf,TOKEN_2022_PROGRAM_ID as If,TOKEN_PROGRAM_ID as Bf}from"@solana/spl-token";import{Keypair as xf,PublicKey as Cf,SystemProgram as Lf,TransactionInstruction as Of}from"@solana/web3.js";import Mf from"bn.js";var wi=d([M(8),m("bump"),Q("index"),i("owner"),Y("protocolFeeRate"),Y("tradeFeeRate"),Q("tickSpacing"),Y("fundFeeRate"),f(Y(),1),i("fundOwner"),f(t(),3)]),ki=d([Y("blockTimestamp"),We("tickCumulative"),f(t(),4)]),Hn=d([M(8),ue("initialized"),t("recentEpoch"),Q("observationIndex"),i("poolId"),f(ki,yn,"observations"),f(t(),4)]),Ti=d([Q("filterPeriod"),Q("decayPeriod"),Q("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),me("tickSpacingIndexReference"),Y("volatilityReference"),Y("volatilityAccumulator"),t("lastUpdateTimestamp"),f(m(),46)]),hi=d([m("state"),t("openTime"),t("endTime"),t("lastUpdateTime"),R("emissionsPerSecondX64"),t("totalEmissioned"),t("claimed"),i("mint"),i("vault"),i("creator"),R("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"),Q("tickSpacing"),R("liquidity"),R("sqrtPriceX64"),me("tickCurrent"),Y(),R("feeGrowthGlobalX64A"),R("feeGrowthGlobalX64B"),t("protocolFeesTokenA"),t("protocolFeesTokenB"),f(R(),4),m("status"),m("feeOn"),M(6),f(hi,Xe,"rewardInfos"),M(8*16,"tickArrayBitmap"),f(t(),4),t("fundFeesTokenA"),t("fundFeesTokenB"),t("startTime"),t("recentEpoch"),Ti.replicate("dynamicFeeInfo"),f(t(),46)]),Ii=d([R("growthInsideLastX64"),t("rewardAmountOwed")]),Bi=d([M(8),m("bump"),i("nftMint"),i("poolId"),me("tickLower"),me("tickUpper"),R("liquidity"),R("feeGrowthInsideLastX64A"),R("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),f(Ii,Xe,"rewardInfos"),t("recentEpoch"),f(t(),7)]),Jm=d([M(8),m("bump"),i("poolId"),me("tickLower"),me("tickUpper"),R("liquidity"),R("feeGrowthInsideLastX64A"),R("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),f(R(),Xe,"rewardGrowthInside"),t("recentEpoch"),f(t(),7)]),Si=d([me("tick"),En("liquidityNet"),R("liquidityGross"),R("feeGrowthOutsideX64A"),R("feeGrowthOutsideX64B"),f(R(),Xe,"rewardGrowthsOutsideX64"),t("orderPhase"),t("ordersAmount"),t("partFilledOrdersRemaining"),R("unfilledRatioX64"),f(Y(),3)]),Qn=d([M(8),i("poolId"),me("startTickIndex"),f(Si,xt,"ticks"),m("initializedTickCount"),t("recentEpoch"),f(m(),107)]),Ki=d([M(8),m("bump"),f(i(),bn,"operationOwners"),f(i(),gn,"whitelistMints")]),xi=d([M(8),i("poolId"),i("owner"),me("tick"),ue("zeroForOne"),t("orderPhase"),t("totalAmount"),t("filledAmount"),t("settleBase"),t("settleOutput"),t("openTime"),R("unfilledRatioX64"),f(t(),4)]),Zn=d([M(8),i("poolId"),M(8*8*ut,"positiveTickArrayBitmap"),M(8*8*ut,"negativeTickArrayBitmap")]),ed=d([M(8),Q("index"),Q("filterPeriod"),Q("decayPeriod"),Q("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),f(t(),8)]),Ci=d([M(8),i("wallet"),m("nonceIndex"),t("orderNonce"),f(t(),4)]),td=d([t(),m("bump"),i("owner"),i("poolId"),i("positionId"),i("nftAccount"),f(t(),8)]),Ri=d([M(8),m("bump"),i("lockOwner"),i("poolId"),i("positionId"),i("nftAccount"),i("lockNftMint"),t("recentEpoch"),f(t(),8)]);import id from"bn.js";var yd=Buffer.from("amm_config","utf8"),Oi=Buffer.from("pool","utf8"),Ni=Buffer.from("pool_vault","utf8"),bd=Buffer.from("pool_reward_vault","utf8"),gd=Buffer.from("position","utf8"),Pd=Buffer.from("tick_array","utf8"),Ad=Buffer.from("operation","utf8"),wd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),kd=Buffer.from("observation","utf8"),Td=Buffer.from("support_mint","utf8"),hd=Buffer.from("dynamic_fee_config","utf8"),Id=Buffer.from("permission","utf8");var Bd=Buffer.from("locked_position","utf8");import{sha256 as Hi}from"js-sha256";import Mi from"bn.js";import Cd 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 Ld=new Mi(1).shln(256).subn(1);function $n(r){return r.isZero()?-1:r.bitLength()-1}import Md from"bn.js";import vd from"decimal.js";import{PublicKey as Tp}from"@solana/web3.js";import Ip from"bn.js";import{TOKEN_2022_PROGRAM_ID as Op,TOKEN_PROGRAM_ID as Np}from"@solana/spl-token";import _p from"decimal.js";import mp from"bn.js";import jd from"bn.js";import Hp from"bn.js";function ee(r){let e=`global:${r}`;return Buffer.from(Hi.digest(e)).slice(0,8)}Hn.span;var Uf=D("Raydium_Clmm"),Gf={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 tn}from"@solana/web3.js";var ji=d([m("instruction")]),Ji=d([m("instruction")]),er=d([t("rewardState"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardLastUpdateTime"),t("totalReward"),t("totalRewardEmissioned"),t("rewardClaimed"),t("rewardPerSecond"),R("accRewardPerShare"),i("rewardVault"),i("rewardMint"),i("rewardSender"),t("rewardType"),f(t(),15,"padding")]),tr=d([t("state"),t("nonce"),i("lpVault"),i("rewardVault"),i(),i(),t(),t(),t("totalReward"),R("perShareReward"),t("lastSlot"),t("perSlotReward")]),nr=d([t("state"),t("nonce"),i("lpVault"),i("rewardVaultA"),t("totalRewardA"),R("perShareRewardA"),t("perSlotRewardA"),m("option"),i("rewardVaultB"),M(7),t("totalRewardB"),R("perShareRewardB"),t("perSlotRewardB"),t("lastSlot"),i()]),or=d([t(),t("state"),t("nonce"),t("validRewardTokenNum"),R("rewardMultiplier"),t("rewardPeriodMax"),t("rewardPeriodMin"),t("rewardPeriodExtend"),i("lpMint"),i("lpVault"),f(er,5,"rewardInfos"),i("creator"),i(),f(t(),32,"padding")]),ir=new Proxy(tr,{get(r,e,n){return e==="decode"?(...o)=>{let a=r.decode(...o);return V(O({},a),{version:3,rewardInfos:[{rewardVault:a.rewardVault,totalReward:a.totalReward,perSlotReward:a.perSlotReward,perShareReward:a.perShareReward}]})}:Reflect.get(r,e,n)}}),rr=new Proxy(nr,{get(r,e,n){return e==="decode"?(...o)=>{let a=r.decode(...o);return V(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(or,{get(r,e,n){return e==="decode"?(...o)=>{let a=r.decode(...o);return V(O({},a),{version:6,rewardInfos:a.rewardInfos.map(l=>{var p;return V(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)}}),ar=d([t("isSet"),t("rewardPerSecond"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardType")]),sr=d([m("instruction"),t("nonce"),f(ar,5,"rewardTimeInfo")]),ur=d([m("instruction"),t("rewardReopenTime"),t("rewardEndTime"),t("rewardPerSecond")]),cr=d([m("instruction"),t("isSet"),t("rewardPerSecond"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardType")]),Vy=d([t("state"),i("id"),i("owner"),t("deposited"),f(t(),1,"rewardDebts")]),oo=d([t("state"),i("id"),i("owner"),t("deposited"),f(R(),1,"rewardDebts"),t(""),t("voteLockedBalance"),f(t(),15)]),Ey=d([t("state"),i("id"),i("owner"),t("deposited"),f(t(),2,"rewardDebts")]),lr=d([t("state"),i("id"),i("owner"),t("deposited"),f(R(),2,"rewardDebts"),f(t(),17)]),mr=d([t(),t("state"),i("id"),i("owner"),t("deposited"),f(R(),5,"rewardDebts"),f(t(),16)]),dr=d([m("instruction"),t("amount")]),pr=d([i("mint"),i("grantAuthority"),t("baselineVoteWeightScaledFactor"),t("maxExtraLockupVoteWeightScaledFactor"),t("lockupSaturationSecs"),Vn("digitShift"),f(m(),7,"reserved1"),f(t(),7,"reserved2")]),fr=d([M(8),i("governanceProgramId"),i("realm"),i("realmGoverningTokenMint"),i("realmAuthority"),f(m(),32,"reserved1"),f(pr,4,"votingMints"),We("timeOffset"),m("bump"),f(m(),7,"reserved2"),f(t(),11,"reserved3")]),yr=d([We("startTime"),We("endTime"),m("kind"),f(m(),15,"reserved")]),br=d([f(yr,1,"lockup"),t("amountDeposited_native"),t("amountInitiallyLockedNative"),ue("isUsed"),ue("allowClawback"),m("votingMintConfigIdx"),f(m(),29,"reserved")]),gr=d([M(8),i("voterAuthority"),i("registrar"),f(br,32,"deposits"),m("voterBump"),m("voterWweightRecordBump"),f(m(),94,"reserved")]);import{NATIVE_MINT as Hy}from"@solana/spl-token";var Qy=D("Raydium_farm_config"),Pr=new tn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ar=new tn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Zy=new tn("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var rt={"Standard SPL":0,"Option tokens":1},io={[Wn.toString()]:3,[qn.toString()]:4,[Un.toString()]:5,[Ht.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 _b,SYSVAR_RENT_PUBKEY as Vb,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=D("Raydium.farm.util");var ng=D("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 jA}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 Kr=new ao(25),xr=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 Cr=d([m("instruction"),t("amountIn"),t("minAmountOut")]),Rr=d([m("instruction"),t("maxAmountIn"),t("amountOut")]),mP=d([m("instruction"),m("nonce")]),Lr=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"),R("swapBaseInAmount"),R("swapQuoteOutAmount"),t("swapBase2QuoteFee"),R("swapQuoteInAmount"),R("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"),R("swapBaseInAmount"),R("swapQuoteOutAmount"),R("swapQuoteInAmount"),R("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")]),Or=d([m("instruction"),t("baseAmountIn"),t("quoteAmountIn"),t("fixedSide"),t("otherAmountMin")]),Nr=d([m("instruction"),t("lpAmount"),t("baseAmountMin"),t("quoteAmountMin")]);var Mr=d([t("fee")]);var OP=D("Raydium_liquidity_instruction");var Fr=5e4,vr=d([t("x"),t("y"),t("price")]),vP=d([t("accountType"),t("status"),t("multiplier"),t("validDataCount"),f(vr,Fr,"DataElement")]);import{PublicKey as HP}from"@solana/web3.js";import ZP from"decimal.js";import{TOKEN_PROGRAM_ID as jP}from"@solana/spl-token";import{PublicKey as DP}from"@solana/web3.js";var UP=D("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 Vr=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 tT}from"@solana/web3.js";import{AccountLayout as oT,NATIVE_MINT as iT,TOKEN_2022_PROGRAM_ID as rT,TOKEN_PROGRAM_ID as aT,createAssociatedTokenAccountIdempotentInstruction as sT}from"@solana/spl-token";import $w from"bn.js";import zr from"bn.js";var _w=new zr(0);import Uw from"bn.js";import Xr from"bn.js";var ge=new Xr(1e6);import yT from"bn.js";import gT from"decimal.js";import{PublicKey as gk,TransactionInstruction as Pk,Keypair as wk,SystemProgram as kk}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as hk,TOKEN_2022_PROGRAM_ID as Ik,TOKEN_PROGRAM_ID as Bk}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"),lk=Buffer.from("creator_fee_share","utf8");var mk=Buffer.from("locked_liquidity","utf8");var Ok=D("Raydium_cpmm"),Nk={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 Qr=d([M(8),m("bump"),ue("disableCreatePool"),Q("index"),t("tradeFeeRate"),t("protocolFeeRate"),t("fundFeeRate"),t("createPoolFee"),i("protocolOwner"),i("fundOwner"),t("creatorFeeRate"),t("creatorFeeShareRate"),f(t(),14)]),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)]),vk=d([M(8),i("configId"),f(t(),30)]),_k=d([M(8),m("bump"),i("creator"),i("ammConfig"),t("shareRate"),f(t(),8)]);import{PublicKey as CK,SystemProgram as RK}from"@solana/web3.js";import{createTransferInstruction as OK,TOKEN_PROGRAM_ID as NK,TOKEN_2022_PROGRAM_ID as MK,createAssociatedTokenAccountIdempotentInstruction as FK,createSyncNativeInstruction as _K,createTransferCheckedInstruction as VK}from"@solana/spl-token";import ba from"bn.js";import WK from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Bh,TOKEN_2022_PROGRAM_ID as Sh,TOKEN_PROGRAM_ID as Kh}from"@solana/spl-token";import{SystemProgram as Lh,TransactionInstruction as Oh}from"@solana/web3.js";import jr from"bn.js";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"),Ph=Buffer.from("platform_curve_rule","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]),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 vh=new jr("18446744073709551615");var Jr=d([t(),t("epoch"),m("curveType"),Q("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)]),Dh=d([t(),t("epoch"),i("poolId"),i("beneficiary"),t("claimedAmount"),t("tokenShareAmount"),f(t(),8)]),na=d([m("migrateType"),m("migrateCpmmFeeOn"),t("supply"),t("totalSellA"),t("totalFundRaisingB"),t("totalLockedAmount"),t("cliffPeriod"),t("unlockPeriod")]),Wh=d([t("epoch"),m("index"),i("configId"),na.replicate("bondingCurveParam"),f(t(),50)]),lo=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"),m("restrictCurveParam"),i("curveRuleManager"),f(m(),78)]),oa=d([m("field"),m("op"),R("value")]),ia=d([Q("groupId"),t("epoch"),Yt(oa,"constraints")]),ra=d([t(),m("bump"),m("version"),i("platformId"),i("configId"),t("epoch"),f(t(),8),Yt(ia,"groups")]);import{TOKEN_2022_PROGRAM_ID as Gh,TOKEN_PROGRAM_ID as zh}from"@solana/spl-token";import aa from"bn.js";var oI=new aa(1e6);import sI from"bn.js";import cI from"decimal.js";import WI from"bn.js";import UI from"decimal.js";import yI from"bn.js";import gI from"decimal.js";import KI from"bn.js";import CI from"decimal.js";import fo from"bn.js";import on from"decimal.js";var St=class{static _multipler(e){return new on(10).pow(e)}static getPrice({priceX64:e,decimalA:n,decimalB:o}){return new on(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 fo(a.mul(this._Q64).toFixed(0))}};St._Q64=new on(new fo(1).shln(64).toString());import{NATIVE_MINT as iS,TOKEN_2022_PROGRAM_ID as rS,TOKEN_PROGRAM_ID as aS,createAssociatedTokenAccountIdempotentInstruction as uS,createSyncNativeInstruction as cS,getTransferFeeConfig as lS,unpackMint as mS}from"@solana/spl-token";import Z from"bn.js";import{PublicKey as pa,SystemProgram as fS}from"@solana/web3.js";import kS from"decimal.js";var TS={initPriceX64:new Z("515752397214619"),supply:new Z(1e15),totalSellA:new Z(7931e11),totalFundRaisingB:new Z(85e9),totalFundRaisingBUSD:new Z(125e8),totalLockedAmount:new Z("0"),cliffPeriod:new Z("0"),unlockPeriod:new Z("0"),decimals:6,virtualA:new Z("1073471847374405"),virtualB:new Z("30050573465"),realA:new Z(0),realB:new Z(0),protocolFee:new Z(0),platformId:new pa("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new Z(0),cliffPeriod:new Z(0),unlockPeriod:new Z(0),startTime:new Z(0),totalAllocatedShare:new Z(0)}},hS=new Z(1e4);var fa={[Gn.toBase58()]:3};var ya=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 YS}from"@solana/web3.js";var jS=D("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as sK,TOKEN_2022_PROGRAM_ID as uK,TOKEN_PROGRAM_ID as cK}from"@solana/spl-token";import{PublicKey as mK,SystemProgram as dK,TransactionInstruction as pK}from"@solana/web3.js";import yK from"bn.js";var gx=new ba(0);import{PublicKey as ga,Transaction as rn,TransactionInstruction as Pa}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Aa}from"@solana/spl-token";import yo 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 yo(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],L=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 yo(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:L,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,N)=>({mintAddress:C.mintAddress,mintVault:C.mintVault,mintDecimals:C.mintDecimals,perLpLoss:C.perLpLoss,debtAmount:K.tokenInfo[N].debtAmount.add(K.tokenInfo[N].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:L}=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});L&&a.addInstruction(L),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 rn().add(...P.slice(0,a.AllTxData.instructions.length-1)),signer:b},{transaction:new rn().add(...P.slice(a.AllTxData.instructions.length-1)),signer:[]},{transaction:new rn().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:Aa,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 Pa({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 ga(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 Mx}from"@solana/web3.js";import{getTransferFeeConfig as vx,MintLayout as _x,TOKEN_2022_PROGRAM_ID as Vx,TOKEN_PROGRAM_ID as Ex,unpackMint as Dx}from"@solana/spl-token";var fR=new Le(2),yR=new Le(3),bR=new Le(5),No=new Le(10),gR=new Le(100),PR=new Le(1e3),AR=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 $ from"bn.js";import Ge from"decimal.js";var H=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=j.clone();for(let{bit:a,factor:l}of fn)(n&1<<a)!==0&&(o=ce(o,l,j));return e>0&&(o=ce(j,j,o)),o}static getLimitOrderOutput({amountIn:e,tick:n,zeroForOne:o}){if(o){let a=H.getPriceAtTick(n,!1);return ce(e,a,j)}else{let a=H.getPriceAtTick(n,!0);return ce(e,j,a)}}static getLimitOrderInput({amountOut:e,tick:n,zeroForOne:o}){if(o){let a=H.getPriceAtTick(n,!0);return le(e,a,j)}else{let a=H.getPriceAtTick(n,!1);return le(e,j,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 $(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 $(l),ge.sub(new $(l)))));else{let T=$.min(n,b);p?c.amountOut=T:c.amountOut=$.min(le(T,ge,ge.sub(new $(l))),b),c.amountIn=this.getLimitOrderInput({amountOut:c.amountOut,tick:e.tick,zeroForOne:!o}),p&&(c.ammFeeAmount=le(c.amountIn,new $(l),ge.sub(new $(l))))}let P=q;e.partFilledOrdersRemaining.gt(q)&&(P=$.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(j,e.ordersAmount.sub(y),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(y),e.ordersAmount=q}return p||(c.ammFeeAmount=le(c.amountOut,new $(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(j.subn(1)).div(j):o.mul(o).div(j)}static getTickAtSqrtPrice(e){if(!(e.gte(Be)&&e.lte(Se)))throw Error("SqrtPriceX64");let n=$n(e),o=n-64,a;o>=0?a=new $(o).shln(32):a=new $(-o).shln(32).neg();let l;n>=64?l=e.shrn(n-63):l=e.shln(63-n);let p=new $(0),c=new $(1).shln(63);for(let k=0;k<pn&&!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(ln),T=y.sub(mn),x=y.add(dn),w=this.signedShrn64(T),L=this.signedShrn64(x);return w===L?w:H.getSqrtPriceAtTick(L).lte(e)?L:w}static signedShrn64(e){if(e.isNeg()){let n=new $(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 $(10).pow(new $(p)),b=a.mul(c),P=new $(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),L=x+"."+w;return new Ge(L).mul(new Ge(10).pow(l))}static tickToPrice(e,n,o){let a=H.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 $(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=H.toTickIndex(H.priceToTick(p,n,o),l),b=H.tickToPrice(c,n,o);return{price:a?b:new Ge(1).div(b),tick:c}}};var en=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 H.getLimitOrderOutput({amountIn:b,tick:n.tick,zeroForOne:e.zeroForOne}).sub(e.settleOutput)}else{if(e.orderPhase.add(new wa(2)).lte(n.orderPhase))return H.getLimitOrderOutput({amountIn:e.settleBase,tick:n.tick,zeroForOne:e.zeroForOne}).sub(e.settleOutput);throw Error("invalid order phase")}}};export{en as LimitOrderMath};
//# sourceMappingURL=limitOrder.mjs.map