@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 82.6 kB
JavaScript
var Ao=Object.defineProperty,wo=Object.defineProperties;var ko=Object.getOwnPropertyDescriptors;var pt=Object.getOwnPropertySymbols;var mn=Object.prototype.hasOwnProperty,dn=Object.prototype.propertyIsEnumerable;var ln=(r,e,n)=>e in r?Ao(r,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[e]=n,O=(r,e)=>{for(var n in e||(e={}))mn.call(e,n)&&ln(r,n,e[n]);if(pt)for(var n of pt(e))dn.call(e,n)&&ln(r,n,e[n]);return r},V=(r,e)=>wo(r,ko(e));var ye=(r,e)=>{var n={};for(var o in r)mn.call(r,o)&&e.indexOf(o)<0&&(n[o]=r[o]);if(r!=null&&pt)for(var o of pt(r))e.indexOf(o)<0&&dn.call(r,o)&&(n[o]=r[o]);return n};import{PublicKey as Io}from"@solana/web3.js";import{get as pn,set as To}from"lodash";var Ot=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}},fn={},ho={};function E(r){let e=pn(fn,r);if(!e){let n=pn(ho,r);e=new Ot({name:r,logLevel:n}),To(fn,r,e)}return e}import{MINT_SIZE as Ma,TOKEN_PROGRAM_ID as Fa,getTransferFeeConfig as va,unpackMint as _a}from"@solana/spl-token";var Nt=E("Raydium_accountInfo_util");async function be(r,e,n){let{batchRequest:o,commitment:a="confirmed",chunkCount:l=100}=O({batchRequest:!1},n),d=Mt(e,l),s=new Array(d.length).fill([]);if(o){let y=d.map(g=>{let k=r._buildArgs([g.map(w=>w.toBase58())],a,"base64");return{methodName:"getMultipleAccounts",args:k}}),P=Mt(y,10);s=(await(await Promise.all(P.map(async g=>await r._rpcBatchRequest(g)))).flat()).map(g=>(g.error&&Nt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${g.error.message}`),g.result.value.map(k=>{if(k){let{data:w,executable:C,lamports:T,owner:h,rentEpoch:S}=k;return w.length!==2&&w[1]!=="base64"&&Nt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(w[0],"base64"),executable:C,lamports:T,owner:new Io(h),rentEpoch:S}}return null})))}else try{s=await Promise.all(d.map(y=>r.getMultipleAccountsInfo(y,a)))}catch(y){y instanceof Error&&Nt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${y.message}`)}return s.flat()}import Fe from"bn.js";import cR from"decimal.js";import Oo from"big.js";import es from"bn.js";import Bo from"toformat";var So=Bo,$e=So;import yt from"big.js";import xo from"bn.js";import Co from"decimal.js-light";import je from"bn.js";var yn=9007199254740991;function re(r){let e=E("Raydium_parseBigNumberish");if(r instanceof je)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new je(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=yn||r<=-yn)&&e.logWithError(`BigNumberish number overflow: ${r}`),new je(String(r))):typeof r=="bigint"?new je(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new je(0))}var ft=E("module/fraction"),Ft=$e(yt),Je=$e(Co),Ro={[0]:Je.ROUND_DOWN,[1]:Je.ROUND_HALF_UP,[2]:Je.ROUND_UP},Lo={[0]:yt.roundDown,[1]:yt.roundHalfUp,[2]:yt.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)||ft.logWithError(`${e} is not an integer.`),e<=0&&ft.logWithError(`${e} is not positive.`),Je.set({precision:e+1,rounding:Ro[o]});let a=new Je(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)||ft.logWithError(`${e} is not an integer.`),e<0&&ft.logWithError(`${e} is negative.`),Ft.DP=e,Ft.RM=Lo[o]||1,new Ft(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,n)}isZero(){return this.numerator.isZero()}};var cs=E("Raydium_amount"),ls=$e(Oo);import{PublicKey as Mo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as bn}from"@solana/spl-token";var bt={chainId:101,address:Mo.default.toBase58(),programId:bn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ge={chainId:101,address:"So11111111111111111111111111111111111111112",programId:bn.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 _t}from"@solana/web3.js";import{PublicKey as X,SystemProgram as gn,SYSVAR_RENT_PUBKEY as Fo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as vo}from"@solana/spl-token";function _e({pubkey:r,isSigner:e=!1,isWritable:n=!0}){return{pubkey:r,isWritable:n,isSigner:e}}var _o=[_e({pubkey:vo,isWritable:!1}),_e({pubkey:gn.programId,isWritable:!1}),_e({pubkey:Fo,isWritable:!1})];function Pn({publicKey:r,transformSol:e}){let n=An(r.toString());if(n instanceof X)return e&&n.equals(Be)?Te:n;if(e&&n.toString()===Be.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 An(r){try{return new X(r)}catch{return r}}var vt=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),et=new X("SysvarRent111111111111111111111111111111111"),Ps=new X("SysvarC1ock11111111111111111111111111111111"),gt=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Vo=new X("Sysvar1nstructions1111111111111111111111111"),Eo=gn.programId,As=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ws=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),ks=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ts=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),hs=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Is=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Bs=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ss=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ks=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),xs=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Cs=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Te=new X("So11111111111111111111111111111111111111112"),Be=X.default;var Vt=class{constructor({mint:e,decimals:n,symbol:o,name:a,skipMint:l=!1,isToken2022:d=!1}){if(e===Be.toBase58()||e instanceof _t&&Be.equals(e)){this.decimals=ge.decimals,this.symbol=ge.symbol,this.name=ge.name,this.mint=new _t(ge.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?_t.default:Pn({publicKey:e}),this.isToken2022=d}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ne=Vt;ne.WSOL=new Vt(V(O({},ge),{mint:ge.address}));var Et=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=Et;Pt.SOL=new Et(bt);import Do from"bn.js";var Ws=new G(new Do(100));var Ys=E("Raydium_price");import{merge as mC}from"lodash";import nu from"axios";var wn={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({},wn),{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 Bu=E("Raydium_Api");import{PublicKey as Gl,SystemProgram as zl}from"@solana/web3.js";import{AccountLayout as Zl,createAssociatedTokenAccountIdempotentInstruction as $l,TOKEN_PROGRAM_ID as jl,TOKEN_2022_PROGRAM_ID as Jl}from"@solana/spl-token";import{PublicKey as qe,sendAndConfirmTransaction as zt,SystemProgram as Yo,Transaction as ot,TransactionMessage as it,VersionedTransaction as rt}from"@solana/web3.js";import Ho from"axios";import{PublicKey as Dt,AddressLookupTableAccount as De}from"@solana/web3.js";async function Wt({connection:r,address:e,cluster:n="mainnet"}){let o=await be(r,[...new Set(e.map(l=>l.toString()))].map(l=>new Dt(l))),a={};for(let l=0;l<e.length;l++){let d=o[l],s=e[l];if(!d)continue;let y=new De({key:s,state:De.deserialize(d.data)});a[s.toString()]=y,n==="devnet"?Ee[s.toString()]=y:Ve[s.toString()]=y}return a}var Ve={},qt=async r=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Ve[e])return Ve;let n=new Dt(e),o=await r.getAccountInfo(n);return o&&(Ve[e]=new De({key:n,state:De.deserialize(o.data)})),Ve},Ee={},Ut=async r=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Ee[e])return Ee;let n=new Dt(e),o=await r.getAccountInfo(n);return o&&(Ee[e]=new De({key:n,state:De.deserialize(o.data)})),Ee};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 kn,Keypair as hn,PublicKey as qo,Transaction as In,TransactionMessage as Uo,VersionedTransaction as Bn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Go}from"@solana/spl-token";var Tn=E("Raydium_txUtil"),Sn=1644;function At(r){let e=[],n=[];return r.microLamports&&(e.push(kn.setComputeUnitPrice({microLamports:r.microLamports})),n.push(j.SetComputeUnitPrice)),r.units&&(e.push(kn.setComputeUnitLimit({units:r.units})),n.push(j.SetComputeUnitLimit)),{instructions:e,instructionTypes:n}}async function We(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 wt(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 Gt(r,e){r.length<1&&Tn.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Tn.logWithError(`no signers provided:, ${e.toString()}`);let n=new In;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=e[0],n.add(...r);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<Sn}catch{return!1}}function ce(r,e){let[n,o]=qo.findProgramAddressSync(r,e);return{publicKey:n,nonce:o}}function tt({instructions:r,payer:e,signers:n}){return Gt(r,[e,...n])}function nt({instructions:r,payer:e,lookupTableAddressAccount:n,recentBlockhash:o=hn.generate().publicKey.toString()}){let l=new Uo({payerKey:e,recentBlockhash:o,instructions:r}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new Bn(l).serialize()).toString("base64").length<Sn}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 Bn&&(e=zo(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Se(r){let e=[];return r.forEach(n=>{n instanceof In&&(n.recentBlockhash||(n.recentBlockhash=Go.toBase58()),n.feePayer||(n.feePayer=hn.generate().publicKey)),e.push(Xo(n))}),console.log("simulate tx string:",e),e}var kt=2e3,Tt=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}=At(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 qe(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:d=[]}){return this.instructions.push(...e),this.endInstructions.push(...n),this.signers.push(...o),this.instructionTypes.push(...a),this.endInstructionTypes.push(...l),this.lookupTableAddress.push(...d.filter(s=>s!==qe.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 ot;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 f;let{recentBlockHash:l,skipPreflight:d=!0,sendAndConfirm:s,notSendToRpc:y}=a||{},P=l!=null?l:await We(this.connection,this.blockhashCommitment);if(n.recentBlockhash=P,this.signers.length&&n.sign(...this.signers),Se([n]),(f=this.owner)!=null&&f.isKeyPair)return{txId:s?await zt(this.connection,n,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:d}):await this.connection.sendRawTransaction(n.serialize(),{skipPreflight:d}),signedTx:n};if(this.signAllTransactions){let g=await this.signAllTransactions([n]);if(this.signers.length)for(let k of g)try{k.sign(...this.signers)}catch{}return{txId:y?"":await this.connection.sendRawTransaction(g[0].serialize(),{skipPreflight:d}),signedTx:g[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(f=>f.transaction.instructions.length>0),d=[a,...l.map(f=>f.transaction)],s=[this.signers,...l.map(f=>f.signers)],y=[...this.instructionTypes,...l.map(f=>f.instructionTypes).flat()];return(P=this.owner)!=null&&P.signer&&s.forEach(f=>{f.some(g=>g.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:d,signers:s,instructionTypes:y,execute:async f=>{var S;let{sequentially:g,onTxUpdate:k,skipTxCount:w=0,recentBlockHash:C,skipPreflight:T=!0}=f||{},h=C!=null?C:await We(this.connection,this.blockhashCommitment);if((S=this.owner)!=null&&S.isKeyPair){if(g){let x=[],F=0;for(let v of d){if(++F,F<=w)continue;let A=await zt(this.connection,v,this.signers.find(I=>I.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:T});x.push(A)}return{txIds:x,signedTxs:d}}return{txIds:await await Promise.all(d.map(async x=>(x.recentBlockhash=h,await this.connection.sendRawTransaction(x.serialize(),{skipPreflight:T})))),signedTxs:d}}if(this.signAllTransactions){let x=d.map((v,A)=>(v.recentBlockhash=h,s[A].length&&v.sign(...s[A]),v));Se(x);let F=await this.signAllTransactions(x);if(g){let v=0,A=[],I=async()=>{if(!F[v])return;let B=await this.connection.sendRawTransaction(F[v].serialize(),{skipPreflight:T});A.push({txId:B,status:"sent",signedTx:F[v]}),k==null||k([...A]),v++;let R=!1,N=null,_=null,ue=U=>{N!==null&&clearInterval(N),_!==null&&this.connection.removeSignatureListener(_);let W=A.findIndex(te=>te.txId===B);if(W>-1){if(A[W].status==="error"||A[W].status==="success")return;A[W].status=U.err?"error":"success"}k==null||k([...A]),U.err||I()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var U;if(R){clearInterval(N);return}try{let W=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:1});W&&(R=!0,clearInterval(N),ue({err:((U=W.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",B))}catch(W){R=!0,clearInterval(N),console.error("getTransaction timeout:",W,B)}},kt)),_=this.connection.onSignature(B,U=>{if(R){this.connection.removeSignatureListener(_);return}R=!0,ue(U)},"confirmed"),this.connection.getSignatureStatus(B)};return await I(),{txIds:A.map(B=>B.txId),signedTxs:F}}else{let v=[];for(let A=0;A<F.length;A+=1){let I=await this.connection.sendRawTransaction(F[A].serialize(),{skipPreflight:T});v.push(I)}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 T;let C=e||{},{lookupTableCache:n={},lookupTableAddress:o=[],forerunCreate:a,recentBlockhash:l}=C,d=ye(C,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),s=O(O({},this.cluster==="devnet"?await Ut(this.connection):await qt(this.connection)),n),y=Array.from(new Set([...o,...this.lookupTableAddress])),P=[];for(let h of y)s[h]===void 0&&P.push(new qe(h));let f=await Wt({connection:this.connection,address:P});for(let[h,S]of Object.entries(f))s[h]=S;let g=a?qe.default.toBase58():l!=null?l:await We(this.connection,this.blockhashCommitment),k=new it({payerKey:this.feePayer,recentBlockhash:g,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(s));((T=this.owner)==null?void 0:T.signer)&&!this.signers.some(h=>h.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let w=new rt(k);return w.sign(this.signers),{builder:this,transaction:w,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async h=>{var v;let{skipPreflight:S=!0,sendAndConfirm:x,notSendToRpc:F}=h||{};if(Se([w]),(v=this.owner)!=null&&v.isKeyPair){let A=await this.connection.sendTransaction(w,{skipPreflight:S});return x&&await wt(this.connection,A),{txId:A,signedTx:w}}if(this.signAllTransactions){let A=await this.signAllTransactions([w]);if(this.signers.length)for(let I of A)try{I.sign(this.signers)}catch{}return{txId:F?"":await this.connection.sendTransaction(A[0],{skipPreflight:S}),signedTx:A[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:d||{}}}async buildV0MultiTx(e){var P;let{extraPreBuildData:n=[],buildProps:o}=e,{transaction:a}=await this.buildV0(o),l=n.filter(f=>f.builder.instructions.length>0),d=[a,...l.map(f=>f.transaction)],s=[this.signers,...l.map(f=>f.signers)],y=[...this.instructionTypes,...l.map(f=>f.instructionTypes).flat()];return(P=this.owner)!=null&&P.signer&&s.forEach(f=>{f.some(g=>g.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),d.forEach(async(f,g)=>{f.sign(s[g])}),{builder:this,transactions:d,signers:s,instructionTypes:y,buildProps:o,execute:async f=>{var T;let{sequentially:g,onTxUpdate:k,recentBlockHash:w,skipPreflight:C=!0}=f||{};if(w&&d.forEach(h=>h.message.recentBlockhash=w),Se(d),(T=this.owner)!=null&&T.isKeyPair){if(g){let h=[];for(let S of d){let x=await this.connection.sendTransaction(S,{skipPreflight:C});await wt(this.connection,x),h.push(x)}return{txIds:h,signedTxs:d}}return{txIds:await Promise.all(d.map(async h=>await this.connection.sendTransaction(h,{skipPreflight:C}))),signedTxs:d}}if(this.signAllTransactions){let h=await this.signAllTransactions(d);if(g){let S=0,x=[],F=async()=>{if(!h[S])return;let v=await this.connection.sendTransaction(h[S],{skipPreflight:C});x.push({txId:v,status:"sent",signedTx:h[S]}),k==null||k([...x]),S++;let A=!1,I=null,B=null,R=N=>{I!==null&&clearInterval(I),B!==null&&this.connection.removeSignatureListener(B);let _=x.findIndex(ue=>ue.txId===v);if(_>-1){if(x[_].status==="error"||x[_].status==="success")return;x[_].status=N.err?"error":"success"}k==null||k([...x]),N.err||F()};this.loopMultiTxStatus&&(I=setInterval(async()=>{var N;if(A){clearInterval(I);return}try{let _=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:1});_&&(A=!0,clearInterval(I),R({err:((N=_.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",v))}catch(_){A=!0,clearInterval(I),console.error("getTransaction timeout:",_,v)}},kt)),B=this.connection.onSignature(v,N=>{if(A){this.connection.removeSignatureListener(B);return}A=!0,R(N)},"confirmed"),this.connection.getSignatureStatus(v)};return F(),{txIds:[],signedTxs:h}}else{let S=[];for(let x=0;x<h.length;x+=1){let F=await this.connection.sendTransaction(h[x],{skipPreflight:C});S.push(F)}return{txIds:S,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var k;let g=e||{},{splitIns:n=[],computeBudgetConfig:o}=g,a=ye(g,["splitIns","computeBudgetConfig"]),l=o?At(o):{instructions:[],instructionTypes:[]},d=this.signers.reduce((w,C)=>V(O({},w),{[C.publicKey.toBase58()]:C}),{}),s=[],y=[],P=[],f=0;if(this.allInstructions.forEach(w=>{let C=[...P,w],T=o?[...l.instructions,...C]:C,S=[...new Set(C.map(x=>x.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat()).values()].map(x=>new qe(x));if(w!==n[f]&&P.length<12&&(tt({instructions:T,payer:this.feePayer,signers:S})||tt({instructions:C,payer:this.feePayer,signers:S})))P.push(w);else{if(P.length===0)throw Error("item ins too big");f+=w===n[f]?1:0,tt({instructions:o?[...l.instructions,...P]:[...P],payer:this.feePayer,signers:S})?s.push(new ot().add(...l.instructions,...P)):s.push(new ot().add(...P)),y.push(Array.from(new Set(P.map(x=>x.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat())).map(x=>d[x]).filter(x=>x!==void 0)),P=[w]}}),P.length>0){let C=[...new Set(P.map(T=>T.keys.filter(h=>h.isSigner).map(h=>h.pubkey.toString())).flat()).values()].map(T=>d[T]).filter(T=>T!==void 0);tt({instructions:o?[...l.instructions,...P]:[...P],payer:this.feePayer,signers:C.map(T=>T.publicKey)})?s.push(new ot().add(...l.instructions,...P)):s.push(new ot().add(...P)),y.push(C)}return s.forEach(w=>w.feePayer=this.feePayer),(k=this.owner)!=null&&k.signer&&y.forEach(w=>{w.some(C=>C.publicKey.equals(this.owner.publicKey))||w.push(this.owner.signer)}),{builder:this,transactions:s,signers:y,instructionTypes:this.instructionTypes,execute:async w=>{var v;let{sequentially:C,onTxUpdate:T,skipTxCount:h=0,recentBlockHash:S,skipPreflight:x=!0}=w||{},F=S!=null?S:await We(this.connection,this.blockhashCommitment);if(s.forEach(async(A,I)=>{A.recentBlockhash=F,y[I].length&&A.sign(...y[I])}),Se(s),(v=this.owner)!=null&&v.isKeyPair){if(C){let A=0,I=[];for(let B of s){if(++A,A<=h){I.push("tx skipped");continue}let R=await zt(this.connection,B,this.signers.find(N=>N.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:x});I.push(R)}return{txIds:I,signedTxs:s}}return{txIds:await Promise.all(s.map(async A=>await this.connection.sendRawTransaction(A.serialize(),{skipPreflight:x}))),signedTxs:s}}if(this.signAllTransactions){let A=await this.signAllTransactions(s.slice(h,s.length)),I=[...s.slice(0,h),...A];if(C){let B=0,R=[],N=async()=>{if(!I[B])return;B<h&&(R.push({txId:"",status:"success",signedTx:I[B]}),T==null||T([...R]),B++,N());let _=await this.connection.sendRawTransaction(I[B].serialize(),{skipPreflight:x});R.push({txId:_,status:"sent",signedTx:I[B]}),T==null||T([...R]),B++;let ue=!1,U=null,W=null,te=z=>{U!==null&&clearInterval(U),W!==null&&this.connection.removeSignatureListener(W);let ie=R.findIndex(we=>we.txId===_);if(ie>-1){if(R[ie].status==="error"||R[ie].status==="success")return;R[ie].status=z.err?"error":"success"}T==null||T([...R]),z.err||N()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var z;if(ue){clearInterval(U);return}try{let ie=await this.connection.getTransaction(_,{commitment:"confirmed",maxSupportedTransactionVersion:1});ie&&(ue=!0,clearInterval(U),te({err:((z=ie.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",_))}catch(ie){ue=!0,clearInterval(U),console.error("getTransaction timeout:",ie,_)}},kt)),W=this.connection.onSignature(_,z=>{if(ue){this.connection.removeSignatureListener(W);return}ue=!0,te(z)},"confirmed"),this.connection.getSignatureStatus(_)};return await N(),{txIds:R.map(_=>_.txId),signedTxs:I}}else{let B=[];for(let R=0;R<I.length;R+=1){let N=await this.connection.sendRawTransaction(I[R].serialize(),{skipPreflight:x});B.push(N)}return{txIds:B,signedTxs:I}}}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:d=12}=F,s=ye(F,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),y=O(O({},this.cluster==="devnet"?await Ut(this.connection):await qt(this.connection)),a),P=Array.from(new Set([...this.lookupTableAddress,...l])),f=[];for(let A of P)y[A]===void 0&&f.push(new qe(A));let g=await Wt({connection:this.connection,address:f});for(let[A,I]of Object.entries(g))y[A]=I;let k=n?At(n):{instructions:[],instructionTypes:[]},w=await We(this.connection,this.blockhashCommitment),C=this.signers.reduce((A,I)=>V(O({},A),{[I.publicKey.toBase58()]:I}),{}),T=[],h=[],S=[],x=0;if(this.allInstructions.forEach(A=>{let I=[...S,A],B=n?[...k.instructions,...I]:I;if(A!==o[x]&&S.length<d&&(nt({instructions:B,payer:this.feePayer,lookupTableAddressAccount:y})||nt({instructions:I,payer:this.feePayer,lookupTableAddressAccount:y})))S.push(A);else{if(S.length===0)throw Error("item ins too big");x+=A===o[x]?1:0;let R={};for(let N of[...new Set(P)])y[N]!==void 0&&(R[N]=y[N]);if(n&&nt({instructions:[...k.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:y,recentBlockhash:w})){let N=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...k.instructions,...S]}).compileToV0Message(Object.values(y));T.push(new rt(N))}else{let N=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...S]}).compileToV0Message(Object.values(y));T.push(new rt(N))}h.push(Array.from(new Set(S.map(N=>N.keys.filter(_=>_.isSigner).map(_=>_.pubkey.toString())).flat())).map(N=>C[N]).filter(N=>N!==void 0)),S=[A]}}),S.length>0){let I=[...new Set(S.map(B=>B.keys.filter(R=>R.isSigner).map(R=>R.pubkey.toString())).flat()).values()].map(B=>C[B]).filter(B=>B!==void 0);if(n&&nt({instructions:[...k.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:y,recentBlockhash:w})){let B=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...k.instructions,...S]}).compileToV0Message(Object.values(y));T.push(new rt(B))}else{let B=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...S]}).compileToV0Message(Object.values(y));T.push(new rt(B))}h.push(I)}return(v=this.owner)!=null&&v.signer&&h.forEach(A=>{A.some(I=>I.publicKey.equals(this.owner.publicKey))||A.push(this.owner.signer)}),T.forEach((A,I)=>{A.sign(h[I])}),{builder:this,transactions:T,buildProps:e,signers:h,instructionTypes:this.instructionTypes,execute:async A=>{var ue;let{sequentially:I,onTxUpdate:B,skipTxCount:R=0,recentBlockHash:N,skipPreflight:_=!0}=A||{};if(T.map(async(U,W)=>{h[W].length&&U.sign(h[W]),N&&(U.message.recentBlockhash=N)}),Se(T),(ue=this.owner)!=null&&ue.isKeyPair){if(I){let U=0,W=[];for(let te of T){if(++U,U<=R){console.log("skip tx: ",U),W.push("tx skipped");continue}let z=await this.connection.sendTransaction(te,{skipPreflight:_});await wt(this.connection,z),W.push(z)}return{txIds:W,signedTxs:T}}return{txIds:await Promise.all(T.map(async U=>await this.connection.sendTransaction(U,{skipPreflight:_}))),signedTxs:T}}if(this.signAllTransactions){let U=await this.signAllTransactions(T.slice(R,T.length)),W=[...T.slice(0,R),...U];if(I){let te=0,z=[],ie=async()=>{if(!W[te])return;if(te<R){z.push({txId:"",status:"success",signedTx:W[te]}),B==null||B([...z]),te++,ie();return}let we=await this.connection.sendTransaction(W[te],{skipPreflight:_});z.push({txId:we,status:"sent",signedTx:W[te]}),B==null||B([...z]),te++;let Qe=!1,ve=null,dt=null,cn=Ie=>{ve!==null&&clearInterval(ve),dt!==null&&this.connection.removeSignatureListener(dt);let ke=z.findIndex(Po=>Po.txId===we);if(ke>-1){if(z[ke].status==="error"||z[ke].status==="success")return;z[ke].status=Ie.err?"error":"success"}B==null||B([...z]),Ie.err||ie()};this.loopMultiTxStatus&&(ve=setInterval(async()=>{var Ie;if(Qe){clearInterval(ve);return}try{let ke=await this.connection.getTransaction(we,{commitment:"confirmed",maxSupportedTransactionVersion:1});ke&&(Qe=!0,clearInterval(ve),cn({err:((Ie=ke.meta)==null?void 0:Ie.err)||null}),console.log("tx status from getTransaction:",we))}catch(ke){Qe=!0,clearInterval(ve),console.error("getTransaction timeout:",ke,we)}},kt)),dt=this.connection.onSignature(we,Ie=>{if(Qe){this.connection.removeSignatureListener(dt);return}Qe=!0,cn(Ie)},"confirmed"),this.connection.getSignatureStatus(we)};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:s||{}}}};var Xt=(...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 Tt({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(Xt(e))}logInfo(...e){this.logger.info(Xt(e))}logAndCreateError(...e){let n=Xt(e);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as kl,SystemProgram as hl}from"@solana/web3.js";import Sl from"bn.js";import{createCloseAccountInstruction as Rl,createInitializeAccountInstruction as Ll,createTransferInstruction as Ol,TOKEN_PROGRAM_ID as Nl}from"@solana/spl-token";import{Keypair as ul,PublicKey as cl}from"@solana/web3.js";import dl from"bn.js";import{TOKEN_PROGRAM_ID as yl}from"@solana/spl-token";import{PublicKey as ai}from"@solana/web3.js";import Ln,{isBN as On}from"bn.js";import{bits as Qo,BitStructure as pc,blob as Zo,Blob as fc,cstr as yc,f32 as bc,f32be as gc,f64 as Pc,f64be as Ac,greedy as wc,Layout as $o,ns64 as kc,ns64be as Tc,nu64 as hc,nu64be as Ic,offset as jo,s16 as Bc,s16be as Sc,s24 as Kc,s24be as xc,s32 as Jo,s32be as Cc,s40 as Rc,s40be as Lc,s48 as Oc,s48be as Nc,s8 as Mc,seq as ei,struct as Fc,Structure as ti,u16 as ni,u16be as vc,u24 as _c,u24be as Vc,u32 as oi,u32be as Ec,u40 as Dc,u40be as Wc,u48 as qc,u48be as Uc,u8 as ii,UInt as ri,union as Gc,Union as zc,unionLayoutDiscriminator as Xc,utf8 as Yc}from"@solana/buffer-layout";var ht=$o,Kn=ti;var Yt=ri;var xn=ii,Q=ni;var It=oi;var pe=Jo;var Cn=ei;var M=Zo;var Ht=Qo,Rn=jo;var xe=class extends ht{constructor(n,o,a){super(n,a);this.blob=M(n),this.signed=o}decode(n,o=0){let a=new Ln(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 Ln(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),o,a)}},Bt=class extends ht{constructor(n){super(8,n);this._lower=Ht(It(),!1),this._upper=Ht(It(),!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 Yt(1,r)}function Y(r){return new Yt(4,r)}function t(r){return new xe(8,!1,r)}function L(r){return new xe(16,!1,r)}function Nn(r){return new xe(1,!0,r)}function Ue(r){return new xe(8,!0,r)}function Mn(r){return new xe(16,!0,r)}var at=class extends ht{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 at(M(32),e=>new ai(e),e=>e.toBuffer(),r)}function le(r){return new at(xn(),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 Zt(r,e){let n=It("length"),o=p([n,b(r,Rn(n,-n.span),"values")]);return new at(o,({values:a})=>a,a=>({values:a}),e)}var Qt=class extends Kn{decode(e,n){return super.decode(e,n)}};function p(r,e,n){return new Qt(r,e,n)}function b(r,e,n){let o,a=typeof e=="number"?e:On(e)?e.toNumber():new Proxy(e,{get(l,d){if(!o){let s=Reflect.get(l,"count");o=On(s)?s.toNumber():s,Reflect.set(l,"count",o)}return Reflect.get(l,d)},set(l,d,s){return d==="count"&&(o=s),Reflect.set(l,d,s)}});return Cn(r,a,n)}var St=p([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 Bg,SystemProgram as Sg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as xg}from"@solana/spl-token";import{PublicKey as am}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as um}from"@solana/spl-token";import{PublicKey as K}from"@solana/web3.js";var vn=new K("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),_n=new K("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Vn=new K("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),$t=new K("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),dm=new K("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),li=new K("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),En=new K("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Dn=new K("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),pm=new K("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),mi=new K("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Wn=new K("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),di=new K("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),pi=new K("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),qn=new K("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),fm=new K("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),fi=new K("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),jt=new K("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),yi=new K("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),ym=new K("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),bi=new K("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),gi=new K("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Pi=new K("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),bm=new K("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),gm=new K("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Pm=new K("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Am=new K("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),wm=new K("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var he={OPEN_BOOK_PROGRAM:new K("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new K("Ray1111111111111111111111111111111111111111"),AMM_V4:new K("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new K("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new K("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new K("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new K("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new K("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new K("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new K("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new K("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new K("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:K.default,Router:new K("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new K("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new K("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new K("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new K("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new K("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new K("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new K("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new K("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new K("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new K("Ray1111111111111111111111111111111111111111")};import Vg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as ay,TOKEN_2022_PROGRAM_ID as sy,TOKEN_PROGRAM_ID as uy}from"@solana/spl-token";import{PublicKey as ly}from"@solana/web3.js";import dy from"bn.js";import fy from"decimal.js";import{TOKEN_PROGRAM_ID as Mm}from"@solana/spl-token";import{PublicKey as Vm}from"@solana/web3.js";var Ai=p([Y("mintAuthorityOption"),i("mintAuthority"),t("supply"),m("decimals"),m("isInitialized"),Y("freezeAuthorityOption"),i("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as xf,TOKEN_2022_PROGRAM_ID as Cf,TOKEN_PROGRAM_ID as Rf}from"@solana/spl-token";import{Keypair as Nf,PublicKey as Mf,SystemProgram as vf,TransactionInstruction as _f}from"@solana/web3.js";import Ef from"bn.js";import D from"bn.js";var J=new D(1).shln(64);var wi=new D(1).shln(128),Jt=new D(1).shln(64).subn(1),ki=new D(1).shln(128).subn(1),Ce=-443636,Re=443636,Le=new D("4295048016"),Oe=new D("79226673521066979257578248091"),Un=new D("59543866431248"),Gn=new D("184467440737095516"),zn=new D("15793534762490258745"),Xn=16,xt=512,se=60,Zm=new D("18446743708227953217"),Yn=[{bit:0,factor:new D("fffcb933bd6fb800",16)},{bit:1,factor:new D("fff97272373d4000",16)},{bit:2,factor:new D("fff2e50f5f657000",16)},{bit:3,factor:new D("ffe5caca7e10f000",16)},{bit:4,factor:new D("ffcb9843d60f7000",16)},{bit:5,factor:new D("ff973b41fa98e800",16)},{bit:6,factor:new D("ff2ea16466c9b000",16)},{bit:7,factor:new D("fe5dee046a9a3800",16)},{bit:8,factor:new D("fcbe86c7900bb000",16)},{bit:9,factor:new D("f987a7253ac65800",16)},{bit:10,factor:new D("f3392b0822bb6000",16)},{bit:11,factor:new D("e7159475a2caf000",16)},{bit:12,factor:new D("d097f3bdfd2f2000",16)},{bit:13,factor:new D("a9f746462d9f8000",16)},{bit:14,factor:new D("70d869a156f31c00",16)},{bit:15,factor:new D("31be135f97ed3200",16)},{bit:16,factor:new D("9aa508b5b85a500",16)},{bit:17,factor:new D("5d6af8dedc582c",16)},{bit:18,factor:new D("2216e584f5fa",16)}];var st=3,Hn=100;var Qn=10,Zn=100,ze=14;var q=new D(0),Ne=new D(1),$m=new D(-1);var jm=new D("18446744073700000000");var Ti=p([M(8),m("bump"),Q("index"),i("owner"),Y("protocolFeeRate"),Y("tradeFeeRate"),Q("tickSpacing"),Y("fundFeeRate"),b(Y(),1),i("fundOwner"),b(t(),3)]),hi=p([Y("blockTimestamp"),Ue("tickCumulative"),b(t(),4)]),$n=p([M(8),le("initialized"),t("recentEpoch"),Q("observationIndex"),i("poolId"),b(hi,Hn,"observations"),b(t(),4)]),Ii=p([Q("filterPeriod"),Q("decayPeriod"),Q("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),pe("tickSpacingIndexReference"),Y("volatilityReference"),Y("volatilityAccumulator"),t("lastUpdateTimestamp"),b(m(),46)]),Bi=p([m("state"),t("openTime"),t("endTime"),t("lastUpdateTime"),L("emissionsPerSecondX64"),t("totalEmissioned"),t("claimed"),i("mint"),i("vault"),i("creator"),L("growthGlobalX64")]),en=p([M(8),m("bump"),i("configId"),i("creator"),i("mintA"),i("mintB"),i("vaultA"),i("vaultB"),i("observationId"),m("mintDecimalsA"),m("mintDecimalsB"),Q("tickSpacing"),L("liquidity"),L("sqrtPriceX64"),pe("tickCurrent"),Y(),L("feeGrowthGlobalX64A"),L("feeGrowthGlobalX64B"),t("protocolFeesTokenA"),t("protocolFeesTokenB"),b(L(),4),m("status"),m("feeOn"),M(6),b(Bi,st,"rewardInfos"),M(8*16,"tickArrayBitmap"),b(t(),4),t("fundFeesTokenA"),t("fundFeesTokenB"),t("startTime"),t("recentEpoch"),Ii.replicate("dynamicFeeInfo"),b(t(),46)]),Si=p([L("growthInsideLastX64"),t("rewardAmountOwed")]),Ki=p([M(8),m("bump"),i("nftMint"),i("poolId"),pe("tickLower"),pe("tickUpper"),L("liquidity"),L("feeGrowthInsideLastX64A"),L("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),b(Si,st,"rewardInfos"),t("recentEpoch"),b(t(),7)]),nd=p([M(8),m("bump"),i("poolId"),pe("tickLower"),pe("tickUpper"),L("liquidity"),L("feeGrowthInsideLastX64A"),L("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),b(L(),st,"rewardGrowthInside"),t("recentEpoch"),b(t(),7)]),xi=p([pe("tick"),Mn("liquidityNet"),L("liquidityGross"),L("feeGrowthOutsideX64A"),L("feeGrowthOutsideX64B"),b(L(),st,"rewardGrowthsOutsideX64"),t("orderPhase"),t("ordersAmount"),t("partFilledOrdersRemaining"),L("unfilledRatioX64"),b(Y(),3)]),tn=p([M(8),i("poolId"),pe("startTickIndex"),b(xi,se,"ticks"),m("initializedTickCount"),t("recentEpoch"),b(m(),107)]),Ci=p([M(8),m("bump"),b(i(),Qn,"operationOwners"),b(i(),Zn,"whitelistMints")]),Ri=p([M(8),i("poolId"),i("owner"),pe("tick"),le("zeroForOne"),t("orderPhase"),t("totalAmount"),t("filledAmount"),t("settleBase"),t("settleOutput"),t("openTime"),L("unfilledRatioX64"),b(t(),4)]),nn=p([M(8),i("poolId"),M(8*8*ze,"positiveTickArrayBitmap"),M(8*8*ze,"negativeTickArrayBitmap")]),od=p([M(8),Q("index"),Q("filterPeriod"),Q("decayPeriod"),Q("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),b(t(),8)]),Li=p([M(8),i("wallet"),m("nonceIndex"),t("orderNonce"),b(t(),4)]),id=p([t(),m("bump"),i("owner"),i("poolId"),i("positionId"),i("nftAccount"),b(t(),8)]),Oi=p([M(8),m("bump"),i("lockOwner"),i("poolId"),i("positionId"),i("nftAccount"),i("lockNftMint"),t("recentEpoch"),b(t(),8)]);import sd from"bn.js";function jn(r){let e=Buffer.alloc(4);return e.writeInt32BE(r),e}var gd=Buffer.from("amm_config","utf8"),Mi=Buffer.from("pool","utf8"),Fi=Buffer.from("pool_vault","utf8"),Pd=Buffer.from("pool_reward_vault","utf8"),Ad=Buffer.from("position","utf8"),vi=Buffer.from("tick_array","utf8"),wd=Buffer.from("operation","utf8"),_i=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");function ut(r,e,n){return ce([vi,e.toBuffer(),jn(n)],r)}function Xe(r,e){return ce([_i,e.toBuffer()],r)}var Bd=Buffer.from("locked_position","utf8");import{sha256 as $i}from"js-sha256";import Vi from"bn.js";import Cd from"decimal.js";function me(r,e,n){if(n.isZero())throw new Error("Division by zero");return r.mul(e).div(n)}function de(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 Vi(1).shln(256).subn(1);function Jn(r){return r.isZero()?-1:r.bitLength()-1}import Md from"bn.js";import Ed from"bn.js";import Wd from"decimal.js";import{PublicKey as Kp}from"@solana/web3.js";import Cp from"bn.js";import{TOKEN_2022_PROGRAM_ID as _p,TOKEN_PROGRAM_ID as Vp}from"@solana/spl-token";import qp from"decimal.js";import bp from"bn.js";import op from"bn.js";import Jp from"bn.js";function ee(r){let e=`global:${r}`;return Buffer.from($i.digest(e)).slice(0,8)}$n.span;var Hf=E("Raydium_Clmm"),Qf={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 rn}from"@solana/web3.js";var nr=p([m("instruction")]),or=p([m("instruction")]),ir=p([t("rewardState"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardLastUpdateTime"),t("totalReward"),t("totalRewardEmissioned"),t("rewardClaimed"),t("rewardPerSecond"),L("accRewardPerShare"),i("rewardVault"),i("rewardMint"),i("rewardSender"),t("rewardType"),b(t(),15,"padding")]),rr=p([t("state"),t("nonce"),i("lpVault"),i("rewardVault"),i(),i(),t(),t(),t("totalReward"),L("perShareReward"),t("lastSlot"),t("perSlotReward")]),ar=p([t("state"),t("nonce"),i("lpVault"),i("rewardVaultA"),t("totalRewardA"),L("perShareRewardA"),t("perSlotRewardA"),m("option"),i("rewardVaultB"),M(7),t("totalRewardB"),L("perShareRewardB"),t("perSlotRewardB"),t("lastSlot"),i()]),sr=p([t(),t("state"),t("nonce"),t("validRewardTokenNum"),L("rewardMultiplier"),t("rewardPeriodMax"),t("rewardPeriodMin"),t("rewardPeriodExtend"),i("lpMint"),i("lpVault"),b(ir,5,"rewardInfos"),i("creator"),i(),b(t(),32,"padding")]),ur=new Proxy(rr,{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)}}),cr=new Proxy(ar,{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)}}),io=new Proxy(sr,{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 d;return V(O({},l),{rewardType:((d=Object.entries(mt).find(s=>String(s[1])===l.rewardType.toString()))!=null?d:["Standard SPL"])[0]})})})}:Reflect.get(r,e,n)}}),lr=p([t("isSet"),t("rewardPerSecond"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardType")]),mr=p([m("instruction"),t("nonce"),b(lr,5,"rewardTimeInfo")]),dr=p([m("instruction"),t("rewardReopenTime"),t("rewardEndTime"),t("rewardPerSecond")]),pr=p([m("instruction"),t("isSet"),t("rewardPerSecond"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardType")]),Uy=p([t("state"),i("id"),i("owner"),t("deposited"),b(t(),1,"rewardDebts")]),ro=p([t("state"),i("id"),i("owner"),t("deposited"),b(L(),1,"rewardDebts"),t(""),t("voteLockedBalance"),b(t(),15)]),Gy=p([t("state"),i("id"),i("owner"),t("deposited"),b(t(),2,"rewardDebts")]),fr=p([t("state"),i("id"),i("owner"),t("deposited"),b(L(),2,"rewardDebts"),b(t(),17)]),yr=p([t(),t("state"),i("id"),i("owner"),t("deposited"),b(L(),5,"rewardDebts"),b(t(),16)]),br=p([m("instruction"),t("amount")]),gr=p([i("mint"),i("grantAuthority"),t("baselineVoteWeightScaledFactor"),t("maxExtraLockupVoteWeightScaledFactor"),t("lockupSaturationSecs"),Nn("digitShift"),b(m(),7,"reserved1"),b(t(),7,"reserved2")]),Pr=p([M(8),i("governanceProgramId"),i("realm"),i("realmGoverningTokenMint"),i("realmAuthority"),b(m(),32,"reserved1"),b(gr,4,"votingMints"),Ue("timeOffset"),m("bump"),b(m(),7,"reserved2"),b(t(),11,"reserved3")]),Ar=p([Ue("startTime"),Ue("endTime"),m("kind"),b(m(),15,"reserved")]),wr=p([b(Ar,1,"lockup"),t("amountDeposited_native"),t("amountInitiallyLockedNative"),le("isUsed"),le("allowClawback"),m("votingMintConfigIdx"),b(m(),29,"reserved")]),kr=p([M(8),i("voterAuthority"),i("registrar"),b(wr,32,"deposits"),m("voterBump"),m("voterWweightRecordBump"),b(m(),94,"reserved")]);import{NATIVE_MINT as Jy}from"@solana/spl-token";var eb=E("Raydium_farm_config"),Tr=new rn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),hr=new rn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var tb=new rn("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var mt={"Standard SPL":0,"Option tokens":1},ao={[vn.toString()]:3,[_n.toString()]:4,[Vn.toString()]:5,[$t.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 Db,SystemProgram as Wb,SYSVAR_CLOCK_PUBKEY as qb,SYSVAR_RENT_PUBKEY as Ub,TransactionInstruction as Gb}from"@solana/web3.js";import Xb from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Hb,createAssociatedTokenAccountIdempotentInstruction as Qb,TOKEN_PROGRAM_ID as Zb}from"@solana/spl-token";import bb from"bn.js";import{PublicKey as sb}from"@solana/web3.js";import cb from"bn.js";var Cb=E("Raydium.farm.util");var sg=E("Raydium_farm_instruction"),ug={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 Qg from"bn.js";import{PublicKey as ow}from"@solana/web3.js";import{AccountLayout as aw,MintLayout as sw,NATIVE_MINT as uw,TOKEN_PROGRAM_ID as lw}from"@solana/spl-token";import jg from"bn.js";import uo from"bn.js";var Lr=new uo(25),Or=new uo(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as wP,TOKEN_PROGRAM_ID as kP}from"@solana/spl-token";import{PublicKey as hP,SystemProgram as IP,SYSVAR_RENT_PUBKEY as BP,TransactionInstruction as SP}from"@solana/web3.js";import MP from"bn.js";var Nr=p([m("instruction"),t("amountIn"),t("minAmountOut")]),Mr=p([m("instruction"),t("maxAmountIn"),t("amountOut")]),bP=p([m("instruction"),m("nonce")]),Fr=p([m("instruction"),m("nonce"),t("startTime")]),co=p([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"),L("swapBaseInAmount"),L("swapQuoteOutAmount"),t("swapBase2QuoteFee"),L("swapQuoteInAmount"),L("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"),b(t(),3,"padding")]),gP=p([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"),L("swapBaseInAmount"),L("swapQuoteOutAmount"),L("swapQuoteInAmount"),L("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"),b(t(),64,"padding")]),vr=p([m("instruction"),t("baseAmountIn"),t("quoteAmountIn"),t("fixedSide"),t("otherAmountMin")]),_r=p([m("instruction"),t("lpAmount"),t("baseAmountMin"),t("quoteAmountMin")]);var Vr=p([t("fee")]);var _P=E("Raydium_liquidity_instruction");var Er=5e4,Dr=p([t("x"),t("y"),t("price")]),WP=p([t("accountType"),t("status"),t("multiplier"),t("validDataCount"),b(Dr,Er,"DataElement")]);import{PublicKey as JP}from"@solana/web3.js";import tA from"decimal.js";import{TOKEN_PROGRAM_ID as oA}from"@solana/spl-token";import{PublicKey as zP}from"@solana/web3.js";var HP=E("Raydium_liquidity_serum");import Rw from"bn.js";import Ow from"decimal.js";import{TOKEN_PROGRAM_ID as RA}from"@solana/spl-token";import{PublicKey as OA}from"@solana/web3.js";import MA from"bn.js";import{SystemProgram as gA,SYSVAR_RENT_PUBKEY as PA,Transaction as AA,TransactionInstruction as wA}from"@solana/web3.js";import{createInitializeAccountInstruction as TA,TOKEN_PROGRAM_ID as hA}from"@solana/spl-token";function Wr(r="accountFlags"){let e=new Bt(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 qr=p([M(5),Wr("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 aT}from"@solana/web3.js";import{AccountLayout as uT,NATIVE_MINT as cT,TOKEN_2022_PROGRAM_ID as lT,TOKEN_PROGRAM_ID as mT,createAssociatedTokenAccountIdempotentInstruction as dT}from"@solana/spl-token";import nk from"bn.js";import Qr from"bn.js";var qw=new Qr(0);import Hw from"bn.js";import Zr from"bn.js";var Ae=new Zr(1e6);import wT from"bn.js";import TT from"decimal.js";import{PublicKey as Tk,TransactionInstruction as hk,Keypair as Bk,SystemProgram as Sk}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as xk,TOKEN_2022_PROGRAM_ID as Ck,TOKEN_PROGRAM_ID as Rk}from"@solana/spl-token";var sk=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),uk=Buffer.from("amm_config","utf8"),ck=Buffer.from("pool","utf8"),lk=Buffer.from("pool_lp_mint","utf8"),mk=Buffer.from("pool_vault","utf8"),dk=Buffer.from("observation","utf8"),pk=Buffer.from("permission","utf8"),fk=Buffer.from("support_mint","utf8"),yk=Buffer.from("creator_fee_share","utf8");var bk=Buffer.from("locked_liquidity","utf8");var _k=E("Raydium_cpmm"),Vk={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 Jr=p([M(8),m("bump"),le("disableCreatePool"),Q("index"),t("tradeFeeRate"),t("protocolFeeRate"),t("fundFeeRate"),t("createPoolFee"),i("protocolOwner"),i("fundOwner"),t("creatorFeeRate"),t("creatorFeeShareRate"),b(t(),14)]),lo=p([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"),le("enableCreatorFee"),b(m(),6),t("creatorFeesMintA"),t("creatorFeesMintB"),b(t(),28)]),Wk=p([M(8),i("configId"),b(t(),30)]),qk=p([M(8),m("bump"),i("creator"),i("ammConfig"),t("shareRate"),b(t(),8)]);import{PublicKey as MK,SystemProgram as FK}from"@solana/web3.js";import{createTransferInstruction as _K,TOKEN_PROGRAM_ID as VK,TOKEN_2022_PROGRAM_ID as EK,createAssociatedTokenAccountIdempotentInstruction as DK,createSyncNativeInstruction as qK,createTransferCheckedInstruction as UK}from"@solana/spl-token";import wa from"bn.js";import XK from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Rh,TOKEN_2022_PROGRAM_ID as Lh,TOKEN_PROGRAM_ID as Oh}from"@solana/spl-token";import{SystemProgram as vh,TransactionInstruction as _h}from"@solana/web3.js";import na from"bn.js";var yh=Buffer.from("vault_auth_seed","utf8"),bh=Buffer.from("global_config","utf8"),gh=Buffer.from("pool_vesting","utf8"),Ph=Buffer.from("platform_config","utf8"),Ah=Buffer.from("platform_fee_vault_auth_seed","utf8"),wh=Buffer.from("creator_fee_vault_auth_seed","utf8"),kh=Buffer.from("platform_global_access","utf8"),Th=Buffer.from("platform_allow_config","utf8"),hh=Buffer.from("platform_curve_rule","utf8");var Dh={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 Wh=new na("18446744073709551615");var oa=p([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"),b(t(),16)]),ia=p([t("totalLockedAmount"),t("cliffPeriod"),t("unlockPeriod"),t("startTime"),t("totalAllocatedShare")]),ra=p([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"),ia.replicate("vestingSchedule"),i("configId"),i("platformId"),i("mintA"),i("mintB"),i("vaultA"),i("vaultB"),i("creator"),m("mintProgramFlag"),m("cpmmCreatorFeeOn"),t("platformVestingShare"),b(m(),54)]),zh=p([t(),t("epoch"),i("poolId"),i("beneficiary"),t("claimedAmount"),t("tokenShareAmount"),b(t(),8)]),aa=p([m("migrateType"),m("migrateCpmmFeeOn"),t("supply"),t("totalSellA"),t("totalFundRaisingB"),t("totalLockedAmount"),t("cliffPeriod"),t("unlockPeriod")]),Xh=p([t("epoch"),m("index"),i("configId"),aa.replicate("bondingCurveParam"),b(t(),50)]),po=p([t(),t("epoch"),i("platformClaimFeeWallet"),i("platformLockNftWallet"),t("platformScale"),t("creatorScale"),t("burnScale"),t("feeRate"),b(m(),64,"name"),b(m(),256,"web"),b(m(),256,"img"),i("cpConfigId"),t("creatorFeeRate"),i("transferFeeExtensionAuth"),i("platformVestingWallet"),t("platformVestingScale"),i("platformCpCreator"),m("restrictGlobalConfig"),m("restrictCurveParam"),i("curveRuleManager"),b(m(),78)]),sa=p([m("field"),m("op"),L("value")]),ua=p([Q("groupId"),t("epoch"),Zt(sa,"constraints")]),ca=p([t(),m("bump"),m("version"),i("platformId"),i("configId"),t("epoch"),b(t(),8),Zt(ua,"groups")]);import{TOKEN_2022_PROGRAM_ID as Qh,TOKEN_PROGRAM_ID as Zh}from"@solana/spl-token";import la from"bn.js";var uI=new la(1e6);import dI from"bn.js";import fI from"decimal.js";import XI from"bn.js";import HI from"decimal.js";import wI from"bn.js";import TI from"decimal.js";import OI from"bn.js";import MI from"decimal.js";import bo from"bn.js";import sn from"decimal.js";var Lt=class{static _multipler(e){return new sn(10).pow(e)}static getPrice({priceX64:e,decimalA:n,decimalB:o}){return new sn(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 bo(a.mul(this._Q64).toFixed(0))}};Lt._Q64=new sn(new bo(1).shln(64).toString());import{NATIVE_MINT as cS,TOKEN_2022_PROGRAM_ID as lS,TOKEN_PROGRAM_ID as mS,createAssociatedTokenAccountIdempotentInstruction as pS,createSyncNativeInstruction as fS,getTransferFeeConfig as yS,unpackMint as bS}from"@solana/spl-token";import Z from"bn.js";import{PublicKey as ga,SystemProgram as AS}from"@solana/web3.js";import SS from"decimal.js";var KS={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 ga("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new Z(0),cliffPeriod:new Z(0),unlockPeriod:new Z(0),startTime:new Z(0),totalAllocatedShare:new Z(0)}},xS=new Z(1e4);var Pa={[En.toBase58()]:3};var Aa=p([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 jS}from"@solana/web3.js";var oK=E("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as dK,TOKEN_2022_PROGRAM_ID as pK,TOKEN_PROGRAM_ID as fK}from"@solana/spl-token";import{PublicKey as bK,SystemProgram as gK,TransactionInstruction as PK}from"@solana/web3.js";import wK from"bn.js";var Tx=new wa(0);import{PublicKey as ka,Transaction as un,TransactionInstruction as Ta}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ha}from"@solana/spl-token";import go from"bn.js";var oe=class extends ae{static getPdaPoolId(e,n){return ce([oe.SEED_CONFIG.pool.id,n.toBuffer()],e)}static getPdaOwnerId(e,n,o,a){return ce([oe.SEED_CONFIG.owner.id,n.toBuffer(),o.toBuffer(),Buffer.from(new go(a).toArray())],e)}static async getAllInfo({connection:e,programId:n,poolIds:o,wallet:a,chainTime:l}){if(o.length===0)return[];let d=o.map(f=>oe.getPdaPoolId(n,f).publicKey),s=[];for(let f=0;f<oe.VERSION_PROJECT.length;f++)s.push(...d.map(g=>oe.getPdaOwnerId(n,g,a,f).publicKey));let y=await be(e,[...d,...s]),P=[];for(let f=0;f<y.length;f++){let g=Math.floor(f/o.length),k=f%o.length,w=d[k],C=s[f],T=y[k],h=y[o.length+f];if(!(T&&h)||T.data.length!==oe.POOL_LAYOUT.span||h.data.length!==oe.OWNER_LAYOUT.span)continue;let S=oe.POOL_LAYOUT.decode(T.data),x=oe.OWNER_LAYOUT.decode(h.data),F=S.openTime.toNumber(),v=S.endTime.toNumber(),A=x.tokenInfo.map(R=>R.debtAmount.gt(new go(0))).filter(R=>!R).length!==3,I=l>F&&l<v&&S.status===1,B=A&&I;P.push({programId:n,poolId:w,ammId:S.ammId,ownerAccountId:C,snapshotLpAmount:x.lpAmount,project:oe.VERSION_PROJECT[g],openTime:F,endTime:v,canClaim:B,canClaimErrorType:A?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:S.tokenInfo.map((R,N)=>({mintAddress:R.mintAddress,mintVault:R.mintVault,mintDecimals:R.mintDecimals,perLpLoss:R.perLpLoss,debtAmount:x.tokenInfo[N].debtAmount.add(x.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,d=[];for(let P of e.tokenInfo){let{account:f,instructionParams:g}=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});g&&a.addInstruction(g),d.push(f)}a.addInstruction({instructions:[oe.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:l,ownerPda:e.ownerAccountId,claimAddress:d}})]});let{transaction:s,signers:y}=a.build();return[{transaction:s,signer:y}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:n,feePayer:o}){let a=this.createTxBuilder(o),l=n.wallet||this.scope.ownerPubKey,d={};for(let f of e){let g=[];for(let k of f.tokenInfo){let{account:w,instructionParams:C}=await this.scope.account.getOrCreateTokenAccount({mint:k.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:k.mintAddress.equals(ne.WSOL.mint),createInfo:{payer:l,amount:0},skipCloseAccount:!k.mintAddress.equals(ne.WSOL.mint),associatedOnly:k.mintAddress.equals(ne.WSOL.mint)?!1:n.associatedOnly});C&&a.addInstruction(C),w&&(d[k.mintAddress.toString()]=w,g.push(w))}a.addInstruction({instructions:[oe.makeClaimInstruction({programId:f.programId,poolInfo:f,ownerInfo:{wallet:l,ownerPda:f.ownerAccountId,claimAddress:g}})]})}let{transaction:s,signers:y}=a.build(),P=a.allInstructions;return Gt(P,[l,...y.map(f=>f.publicKey)])?[{transaction:s,signer:y}]:[{transaction:new un().add(...P.slice(0,a.AllTxData.instructions.length-1)),signer:y},{transaction:new un().add(...P.slice(a.AllTxData.instructions.length-1)),signer:[]},{transaction:new un().add(...a.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:n,ownerInfo:o}){let a=p([]),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(y=>({pubkey:y,isSigner:!1,isWritable:!0})),...n.tokenInfo.map(({mintVault:y})=>({pubkey:y,isSigner:!1,isWritable:!0})),{pubkey:ha,isSigner:!1,isWritable:!1}],d=Buffer.alloc(a.span);a.encode({},d);let s=Buffer.from([10,66,208,184,161,6,191,98,...d]);return new Ta({keys:l,programId:e,data:s})}},fe=oe;fe.CLAIMED_NUM=3,fe.POOL_LAYOUT=p([M(8),m("bump"),m("status"),t("openTime"),t("endTime"),i("ammId"),b(p([m("mintDecimals"),i("mintAddress"),i("mintVault"),t("perLpLoss"),t("totalClaimedAmount")]),oe.CLAIMED_NUM,"tokenInfo"),b(t(),10,"padding")]),fe.OWNER_LAYOUT=p([M(8),m("bump"),m("version"),i("poolId"),i("owner"),t("lpAmount"),b(p([i("mintAddress"),t("debtAmount"),t("claimedAmount")]),oe.CLAIMED_NUM,"tokenInfo"),b(t(),4,"padding")]),fe.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new ka(e)),fe.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},fe.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as Ex}from"@solana/web3.js";import{getTransferFeeConfig as Wx,MintLayout as qx,TOKEN_2022_PROGRAM_ID as Ux,TOKEN_PROGRAM_ID as Gx,unpackMint as zx}from"@solana/spl-token";var AR=new Fe(2),wR=new Fe(3),kR=new Fe(5),No=new Fe(10),TR=new Fe(100),hR=new Fe(1e3),IR=new Fe(1e4);function Mt(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 He from"decimal.js";var ct=class{static scanLinearBitmap({bitmap:e,tickSpacing:n,offset:o,checkInfo:a}){let l=[],d=e.length*8,s=0,y=d-1;if(a){let g=a.tick/(n*se)-o;a.valueType==="gte"?s=Math.max(0,Math.ceil(g)):y=Math.min(d-1,Math.floor(g))}if(s>y)return l;let P=Math.floor(s/8),f=Math.floor(y/8);for(let g=P;g<=f;g++){if(!e[g])continue;let k=g===P?s%8:0,w=g===f?y%8:7;for(let C=k;C<=w;C++)e[g]&1<<C&&l.push((g*8+C+o)*n*se)}return l}static findPoolBitmap({bitmap:e,tickSpacing:n,checkInfo:o}){if(o){let a=Math.floor(o.tick/se/n);if(o.valueType==="lte"&&a<-512)return[];if(o.valueType==="gte"&&a>512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:n,offset:-xt,checkInfo:o})}static findPositiveTickArrayBitmap({bitmap:e,tickSpacing:n,checkInfo:o}){if(o){let a=Math.floor(o.tick/se/n);if(o.valueType==="lte"&&a<512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:n,offset:xt,checkInfo:o})}static findNegativeTickArrayBitmap({bitmap:e,tickSpacing:n,count:o,checkInfo:a}){let l=[];if(a){let y=Math.floor(a.tick/se/n);if(a.valueType==="gte"&&y>=-512)return l}let d=(a==null?void 0:a.valueType)==="lte"?Math.floor(a.tick/(se*n))+7680:1/0,s=(a==null?void 0:a.valueType)==="gte"?Math.ceil(a.tick/(se*n))+7680:0;e:for(let y=0;y<ze;y++){let P=ze-1-y;for(let f=0;f<512;f++){let g=y*512+f;if(g>d)break e;if(g<s)continue;let k=P*64+Math.floor(f/8);if(!e[k]){f=Math.floor(f/8)*8+7;continue}if(e[k]&1<<f%8){let w=(y*512+f-7680)*se*n;if(l.push(w),o!==void 0&&l.length>=o)break e}}}return l}static findTickArrayStartIndex({tickSpacing:e,poolBitmap:n,tickArrayBitmap:o,findInfo:a}){if(a.type==="all")return[...this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:o.negativeTickArrayBitmap}),...this.findPoolBitmap({tickSpacing:e,bitmap:n}),...this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:o.positiveTickArrayBitmap})];let l=Me.getTickArrayStartIndex(a.tickArrayCurrent,e),{count:d}=a;if(a.type==="oneForZero"){let s={tick:l,valueType:"gte"},y=[()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:o.negativeTickArrayBitmap,checkInfo:s}),()=>this.findPoolBitmap({tickSpacing:e,bitmap:n,checkInfo:s}),()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:o.positiveTickArrayBitmap,checkInfo:s})];return this.collectUntil(y,d)}if(a.type==="zeroForOne"){let s={tick:l,valueType:"lte"},y=[()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:o.positiveTickArrayBitmap,checkInfo:s}).sort((P,f)=>f-P),()=>this.findPoolBitmap({tickSpacing:e,bitmap:n,checkInfo:s}).sort((P,f)=>f-P),()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:o.negativeTickArrayBitmap,checkInfo:s}).sort((P,f)=>f-P)];return this.collectUntil(y,d)}throw new Error("find info type check error")}static collectUntil(e,n){let o=[];for(let a of e){if(n!==void 0&&o.length>=n)break;o.push(...a())}return o.slice(0,n)}static findTickArrayAddress(e){return this.findTickArrayStartIndex(e).map(n=>ut(e.programId,e.poolId,n).publicKey)}static maxTickInTickarrayBitmap(e){return e*se*xt}},Me=class{static firstinitializedTick({data:e,zeroForOne:n}){if(n){for(let o=e.ticks.length-1;o>=0;o--)if(H.isInitialized({data:e.ticks[o]}))return e.ticks[o]}else for(let o=0;o<e.ticks.length;o++)if(H.isInitialized({data:e.ticks[o]}))return e.ticks[o]}static nextInitalizedTick({data:e,currentTickIndex:n,tickSpacing:o,zeroForOne:a}){if(this.getTickArrayStartIndex(n,o)!==e.startTickIndex)return;let d=Math.floor((n-e.startTickIndex)/o);if(a){for(let s=d;s>=0;s--)if(H.isInitialized({data:e.ticks[s]}))return e.ticks[s]}else for(let s=d+1;s<se;s++)if(H.isInitialized({data:e.ticks[s]}))return e.ticks[s]}static getTickArrayStartIndex(e,n){let o=this.tickCount(n);return Math.floor(e/o)*o}static getTickOffsetInArray(e,n){if(e%n!=0)throw new Error("tickIndex % tickSpacing not equal 0");let o=this.getTickArrayStartIndex(e,n);return Math.floor((e-o)/n)}static tickCount(e){return se*e}static getMinTick(e){return Math.ceil(Ce/e)*e}static getMaxTick(e){return Math.floor(Re/e)*e}},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>=Ce&&e<=Re}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${Ce}, ${Re}]`)}static getSqrtPriceAtTick(e){this.checkTick(e);let n=Math.abs(e),o=J.clone();for(let{bit:a,factor:l}of Yn)(n&1<<a)!==0&&(o=me(o,l,J));return e>0&&(o=me(J,J,o)),o}static getLimitOrderOutput({amountIn:e,tick:n,zeroForOne:o}){if(o){let a=H.getPriceAtTick(n,!1);return me(e,a,J)}else{let a=H.getPriceAtTick(n,!0);return me(e,J,a)}}static getLimitOrderInput({amountOut:e,tick:n,zeroForOne:o}){if(o){let a=H.getPriceAtTick(n,!0);return de(e,a,J)}else{let a=H.getPriceAtTick(n,!1);return de(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:d}){let s={amountIn:q,amountOut:q,ammFeeAmount:q},y=this.limitOrderUnfilledAmount({tick:e});if(n.isZero()||y.isZero())return s;if(a)d?(s.ammFeeAmount=de(n,new $(l),Ae),s.amountIn=n.sub(s.ammFeeAmount)):s.amountIn=n,s.amountOut=this.getLimitOrderOutput({amountIn:s.amountIn,tick:e.tick,zeroForOne:o}),s.amountOut.gt(y)&&(s.amountOut=y,s.amountIn=this.getLimitOrderInput({amountOut:y,tick:e.tick,zeroForOne:!o}),d&&(s.ammFeeAmount=de(s.amountIn,new $(l),Ae.sub(new $(l)))));else{let g=$.min(n,y);d?s.amountOut=g:s.amountOut=$.min(de(g,Ae,Ae.sub(new $(l))),y),s.amountIn=this.getLimitOrderInput({amountOut:s.amountOut,tick:e.tick,zeroForOne:!o}),d&&(s.ammFeeAmount=de(s.amountIn,new $(l),Ae.sub(new $(l))))}let P=q;e.partFilledOrdersRemaining.gt(q)&&(P=$.min(e.partFilledOrdersRemaining,s.amountOut),P.gt(q)&&(e.unfilledRatioX64=me(e.unfilledRatioX64,e.partFilledOrdersRemaining.sub(P),e.partFilledOrdersRemaining)),e.partFilledOrdersRemaining=e.partFilledOrdersRemaining.sub(P));let f=s.amountOut.sub(P);if(f.gt(q)){if(!e.partFilledOrdersRemaining.isZero())throw Error("!tick.partFilledOrdersRemaining.isZero()");if(e.ordersAmount.lt(f))throw Error("InvalidLimitOrderAmount");e.orderPhase=e.orderPhase.add(Ne),e.unfilledRatioX64=me(J,e.ordersAmount.sub(f),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(f),e.ordersAmount=q}return d||(s.ammFeeAmount=de(s.amountOut,new $(l),Ae),s.amountOut=s.amountOut.sub(s.ammFeeAmount)),s}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(Le)&&e.lte(Oe)))throw Error("SqrtPriceX64");let n=Jn(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 d=new $(0),s=new $(1).shln(63);for(let h=0;h<Xn&&!s.isZero();h++){l=l.mul(l);let S=l.shrn(127).toNumber();l=l.shrn(63+S),S&&(d=d.add(s)),s=s.shrn(1)}let y=d.shrn(32),f=a.add(y).mul(Un),g=f.sub(Gn),k=f.add(zn),w=this.signedShrn64(g),C=this.signedShrn64(k);return w===C?w:H.getSqrtPriceAtTick(C).lte(e)?C: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,d=20,s=new $(10).pow(new $(d)),y=a.mul(s),P=new $(1).shln(128),g=y.div(P).toString();for(;g.length<=d;)g="0"+g;let k=g.slice(0,-d),w=g.slice(-d),C=k+"."+w;return new He(C).mul(new He(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 He(1.0001).log()).floor();return Math.max(Ce,Math.min(Re,l.toNumber()))}static priceToSqrtPriceX64(e,n,o){let d=e.div(Math.pow(10,n-o)).sqrt().mul(new He(2).pow(64));return new $(d.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 d=e.clamp(1/10**Math.max(n,o),Number.MAX_SAFE_INTEGER);a||(d=new He(1).div(d));let s=H.toTickIndex(H.priceToTick(d,n,o),l),y=H.tickToPrice(s,n,o);return{price:a?y:new He(1).div(y),tick:s}}};async function er(r,e,n,o,a,l,d=!0){let s=[],y=Xe(r,n).publicKey,P=await e.getAccountInfo(y),f=ct.findTickArrayAddress({programId:r,poolId:n,poolBitmap:l,tickArrayBitmap:nn.decode(P.data),tickSpacing:a,findInfo:{type:d?"zeroForOne":"oneForZero",tickArrayCurrent:o}});return(await be(e,f)).forEach((k,w)=>{k&&s.push({address:f[w],value:tn.decode(k.data)})}),s}export{ct as TickArrayBitmapUtil,Me as TickArrayUtil,H as TickUtil,er as fetchTickArrays};
//# sourceMappingURL=tickArrayUtil.mjs.map