UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

2 lines 77.6 kB
var go=Object.defineProperty,Po=Object.defineProperties;var Ao=Object.getOwnPropertyDescriptors;var st=Object.getOwnPropertySymbols;var an=Object.prototype.hasOwnProperty,sn=Object.prototype.propertyIsEnumerable;var rn=(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={}))an.call(e,n)&&rn(r,n,e[n]);if(st)for(var n of st(e))sn.call(e,n)&&rn(r,n,e[n]);return r},D=(r,e)=>Po(r,Ao(e));var pe=(r,e)=>{var n={};for(var o in r)an.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&&sn.call(r,o)&&(n[o]=r[o]);return n};import{PublicKey as To}from"@solana/web3.js";import{get as un,set as wo}from"lodash";var Kt=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}},cn={},ko={};function _(r){let e=un(cn,r);if(!e){let n=un(ko,r);e=new Kt({name:r,logLevel:n}),wo(cn,r,e)}return e}import{MINT_SIZE as Sa,TOKEN_PROGRAM_ID as Ka,getTransferFeeConfig as xa,unpackMint as Ca}from"@solana/spl-token";var xt=_("Raydium_accountInfo_util");async function we(r,e,n){let{batchRequest:o,commitment:a="confirmed",chunkCount:l=100}=O({batchRequest:!1},n),p=Ct(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}}),A=Ct(b,10);c=(await(await Promise.all(A.map(async T=>await r._rpcBatchRequest(T)))).flat()).map(T=>(T.error&&xt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${T.error.message}`),T.result.value.map(x=>{if(x){let{data:w,executable:R,lamports:P,owner:k,rentEpoch:B}=x;return w.length!==2&&w[1]!=="base64"&&xt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(w[0],"base64"),executable:R,lamports:P,owner:new To(k),rentEpoch:B}}return null})))}else try{c=await Promise.all(p.map(b=>r.getMultipleAccountsInfo(b,a)))}catch(b){b instanceof Error&&xt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${b.message}`)}return c.flat()}import Le from"bn.js";import vC from"decimal.js";import Ro from"big.js";import Xa from"bn.js";import ho from"toformat";var Io=ho,Ye=Io;import ct from"big.js";import So from"bn.js";import Ko from"decimal.js-light";import Qe from"bn.js";var ln=9007199254740991;function re(r){let e=_("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>=ln||r<=-ln)&&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 ut=_("module/fraction"),Rt=Ye(ct),Ze=Ye(Ko),xo={[0]:Ze.ROUND_DOWN,[1]:Ze.ROUND_HALF_UP,[2]:Ze.ROUND_UP},Co={[0]:ct.roundDown,[1]:ct.roundHalfUp,[2]:ct.roundUp},G=class{constructor(e,n=new So(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)||ut.logWithError(`${e} is not an integer.`),e<=0&&ut.logWithError(`${e} is not positive.`),Ze.set({precision:e+1,rounding:xo[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)||ut.logWithError(`${e} is not an integer.`),e<0&&ut.logWithError(`${e} is negative.`),Rt.DP=e,Rt.RM=Co[o]||1,new Rt(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,n)}isZero(){return this.numerator.isZero()}};var ts=_("Raydium_amount"),ns=Ye(Ro);import{PublicKey as Oo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as mn}from"@solana/spl-token";var lt={chainId:101,address:Oo.default.toBase58(),programId:mn.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:mn.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 Ot}from"@solana/web3.js";import{PublicKey as X,SystemProgram as dn,SYSVAR_RENT_PUBKEY as No}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Mo}from"@solana/spl-token";function Ne({pubkey:r,isSigner:e=!1,isWritable:n=!0}){return{pubkey:r,isWritable:n,isSigner:e}}var Fo=[Ne({pubkey:Mo,isWritable:!1}),Ne({pubkey:dn.programId,isWritable:!1}),Ne({pubkey:No,isWritable:!1})];function pn({publicKey:r,transformSol:e}){let n=fn(r.toString());if(n instanceof X)return e&&n.equals(Ie)?ke:n;if(e&&n.toString()===Ie.toBase58())return ke;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 fn(r){try{return new X(r)}catch{return r}}var Lt=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),He=new X("SysvarRent111111111111111111111111111111111"),ls=new X("SysvarC1ock11111111111111111111111111111111"),mt=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),vo=new X("Sysvar1nstructions1111111111111111111111111"),Vo=dn.programId,ms=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ds=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),ps=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),fs=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),ys=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),bs=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),gs=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ps=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),As=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),ws=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),ks=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ke=new X("So11111111111111111111111111111111111111112"),Ie=X.default;var Nt=class{constructor({mint:e,decimals:n,symbol:o,name:a,skipMint:l=!1,isToken2022:p=!1}){if(e===Ie.toBase58()||e instanceof Ot&&Ie.equals(e)){this.decimals=fe.decimals,this.symbol=fe.symbol,this.name=fe.name,this.mint=new Ot(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?Ot.default:pn({publicKey:e}),this.isToken2022=p}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ne=Nt;ne.WSOL=new Nt(D(O({},fe),{mint:fe.address}));var Mt=class{constructor({decimals:e,symbol:n="UNKNOWN",name:o="UNKNOWN"}){this.decimals=e,this.symbol=n,this.name=o}equals(e){return this===e}},dt=Mt;dt.SOL=new Mt(lt);import _o from"bn.js";var Ns=new G(new _o(100));var Es=_("Raydium_price");import{merge as _x}from"lodash";import Qs from"axios";var yn={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"},Eo=D(O({},yn),{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 gu=_("Raydium_Api");import{PublicKey as vl,SystemProgram as Vl}from"@solana/web3.js";import{AccountLayout as ql,createAssociatedTokenAccountIdempotentInstruction as Ul,TOKEN_PROGRAM_ID as Gl,TOKEN_2022_PROGRAM_ID as zl}from"@solana/spl-token";import{PublicKey as _e,sendAndConfirmTransaction as Dt,SystemProgram as zo,Transaction as Je,TransactionMessage as et,VersionedTransaction as tt}from"@solana/web3.js";import Xo from"axios";import{PublicKey as Ft,AddressLookupTableAccount as ve}from"@solana/web3.js";async function vt({connection:r,address:e,cluster:n="mainnet"}){let o=await we(r,[...new Set(e.map(l=>l.toString()))].map(l=>new Ft(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"?Fe[c.toString()]=b:Me[c.toString()]=b}return a}var Me={},Vt=async r=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Me[e])return Me;let n=new Ft(e),o=await r.getAccountInfo(n);return o&&(Me[e]=new ve({key:n,state:ve.deserialize(o.data)})),Me},Fe={},_t=async r=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Fe[e])return Fe;let n=new Ft(e),o=await r.getAccountInfo(n);return o&&(Fe[e]=new ve({key:n,state:ve.deserialize(o.data)})),Fe};var $={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{ComputeBudgetProgram as bn,Keypair as Pn,PublicKey as Do,Transaction as An,TransactionMessage as Wo,VersionedTransaction as wn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as qo}from"@solana/spl-token";var gn=_("Raydium_txUtil"),kn=1644;function pt(r){let e=[],n=[];return r.microLamports&&(e.push(bn.setComputeUnitPrice({microLamports:r.microLamports})),n.push($.SetComputeUnitPrice)),r.units&&(e.push(bn.setComputeUnitLimit({units:r.units})),n.push($.SetComputeUnitLimit)),{instructions:e,instructionTypes:n}}async function Ve(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 ft(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 Et(r,e){r.length<1&&gn.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&gn.logWithError(`no signers provided:, ${e.toString()}`);let n=new An;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=e[0],n.add(...r);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<kn}catch{return!1}}function ye(r,e){let[n,o]=Do.findProgramAddressSync(r,e);return{publicKey:n,nonce:o}}function je({instructions:r,payer:e,signers:n}){return Et(r,[e,...n])}function $e({instructions:r,payer:e,lookupTableAddressAccount:n,recentBlockhash:o=Pn.generate().publicKey.toString()}){let l=new Wo({payerKey:e,recentBlockhash:o,instructions:r}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new wn(l).serialize()).toString("base64").length<kn}catch{return!1}}var Uo=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r),Go=r=>{let e=r.serialize({requireAllSignatures:!1,verifySignatures:!1});r instanceof wn&&(e=Uo(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Be(r){let e=[];return r.forEach(n=>{n instanceof An&&(n.recentBlockhash||(n.recentBlockhash=qo.toBase58()),n.feePayer||(n.feePayer=Pn.generate().publicKey)),e.push(Go(n))}),console.log("simulate tx string:",e),e}var yt=2e3,bt=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 Xo.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}=pt(e);return this.instructions.unshift(...n),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(e){var n;return e?(this.endInstructions.push(zo.transfer({fromPubkey:(n=e.feePayer)!=null?n:this.feePayer,toPubkey:new _e(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push($.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!==_e.default.toString())),this}async versionBuild({txVersion:e,extInfo:n,lookupTableAddress:o}){return e===0?await this.buildV0(D(O({},n||{}),{lookupTableAddress:o})):this.build(n)}build(e){var o;let n=new Je;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||{},A=l!=null?l:await Ve(this.connection,this.blockhashCommitment);if(n.recentBlockhash=A,this.signers.length&&n.sign(...this.signers),Be([n]),(y=this.owner)!=null&&y.isKeyPair)return{txId:c?await Dt(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 A;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(A=this.owner)!=null&&A.signer&&c.forEach(y=>{y.some(T=>T.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:p,signers:c,instructionTypes:b,execute:async y=>{var B;let{sequentially:T,onTxUpdate:x,skipTxCount:w=0,recentBlockHash:R,skipPreflight:P=!0}=y||{},k=R!=null?R:await Ve(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 Dt(this.connection,v,this.signers.find(h=>h.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:P});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:P})))),signedTxs:p}}if(this.signAllTransactions){let K=p.map((v,g)=>(v.recentBlockhash=k,c[g].length&&v.sign(...c[g]),v));Be(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:P});g.push({txId:I,status:"sent",signedTx:F[v]}),x==null||x([...g]),v++;let C=!1,L=null,V=null,se=U=>{L!==null&&clearInterval(L),V!==null&&this.connection.removeSignatureListener(V);let W=g.findIndex(te=>te.txId===I);if(W>-1){if(g[W].status==="error"||g[W].status==="success")return;g[W].status=U.err?"error":"success"}x==null||x([...g]),U.err||h()};this.loopMultiTxStatus&&(L=setInterval(async()=>{var U;if(C){clearInterval(L);return}try{let W=await this.connection.getTransaction(I,{commitment:"confirmed",maxSupportedTransactionVersion:0});W&&(C=!0,clearInterval(L),se({err:((U=W.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",I))}catch(W){C=!0,clearInterval(L),console.error("getTransaction timeout:",W,I)}},yt)),V=this.connection.onSignature(I,U=>{if(C){this.connection.removeSignatureListener(V);return}C=!0,se(U)},"confirmed"),this.connection.getSignatureStatus(I)};return await h(),{txIds:g.map(I=>I.txId),signedTxs:F}}else{let v=[];for(let g=0;g<F.length;g+=1){let h=await this.connection.sendRawTransaction(F[g].serialize(),{skipPreflight:P});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 P;let R=e||{},{lookupTableCache:n={},lookupTableAddress:o=[],forerunCreate:a,recentBlockhash:l}=R,p=pe(R,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),c=O(O({},this.cluster==="devnet"?await _t(this.connection):await Vt(this.connection)),n),b=Array.from(new Set([...o,...this.lookupTableAddress])),A=[];for(let k of b)c[k]===void 0&&A.push(new _e(k));let y=await vt({connection:this.connection,address:A});for(let[k,B]of Object.entries(y))c[k]=B;let T=a?_e.default.toBase58():l!=null?l:await Ve(this.connection,this.blockhashCommitment),x=new et({payerKey:this.feePayer,recentBlockhash:T,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(c));((P=this.owner)==null?void 0:P.signer)&&!this.signers.some(k=>k.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let w=new tt(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(Be([w]),(v=this.owner)!=null&&v.isKeyPair){let g=await this.connection.sendTransaction(w,{skipPreflight:B});return K&&await ft(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 A;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(A=this.owner)!=null&&A.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 P;let{sequentially:T,onTxUpdate:x,recentBlockHash:w,skipPreflight:R=!0}=y||{};if(w&&p.forEach(k=>k.message.recentBlockhash=w),Be(p),(P=this.owner)!=null&&P.isKeyPair){if(T){let k=[];for(let B of p){let K=await this.connection.sendTransaction(B,{skipPreflight:R});await ft(this.connection,K),k.push(K)}return{txIds:k,signedTxs:p}}return{txIds:await Promise.all(p.map(async k=>await this.connection.sendTransaction(k,{skipPreflight:R}))),signedTxs:p}}if(this.signAllTransactions){let k=await this.signAllTransactions(p);if(T){let B=0,K=[],F=async()=>{if(!k[B])return;let v=await this.connection.sendTransaction(k[B],{skipPreflight:R});K.push({txId:v,status:"sent",signedTx:k[B]}),x==null||x([...K]),B++;let g=!1,h=null,I=null,C=L=>{h!==null&&clearInterval(h),I!==null&&this.connection.removeSignatureListener(I);let V=K.findIndex(se=>se.txId===v);if(V>-1){if(K[V].status==="error"||K[V].status==="success")return;K[V].status=L.err?"error":"success"}x==null||x([...K]),L.err||F()};this.loopMultiTxStatus&&(h=setInterval(async()=>{var L;if(g){clearInterval(h);return}try{let V=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(g=!0,clearInterval(h),C({err:((L=V.meta)==null?void 0:L.err)||null}),console.log("tx status from getTransaction:",v))}catch(V){g=!0,clearInterval(h),console.error("getTransaction timeout:",V,v)}},yt)),I=this.connection.onSignature(v,L=>{if(g){this.connection.removeSignatureListener(I);return}g=!0,C(L)},"confirmed"),this.connection.getSignatureStatus(v)};return F(),{txIds:[],signedTxs:k}}else{let B=[];for(let K=0;K<k.length;K+=1){let F=await this.connection.sendTransaction(k[K],{skipPreflight:R});B.push(F)}return{txIds:B,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var x;let T=e||{},{splitIns:n=[],computeBudgetConfig:o}=T,a=pe(T,["splitIns","computeBudgetConfig"]),l=o?pt(o):{instructions:[],instructionTypes:[]},p=this.signers.reduce((w,R)=>D(O({},w),{[R.publicKey.toBase58()]:R}),{}),c=[],b=[],A=[],y=0;if(this.allInstructions.forEach(w=>{let R=[...A,w],P=o?[...l.instructions,...R]:R,B=[...new Set(R.map(K=>K.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat()).values()].map(K=>new _e(K));if(w!==n[y]&&A.length<12&&(je({instructions:P,payer:this.feePayer,signers:B})||je({instructions:R,payer:this.feePayer,signers:B})))A.push(w);else{if(A.length===0)throw Error("item ins too big");y+=w===n[y]?1:0,je({instructions:o?[...l.instructions,...A]:[...A],payer:this.feePayer,signers:B})?c.push(new Je().add(...l.instructions,...A)):c.push(new Je().add(...A)),b.push(Array.from(new Set(A.map(K=>K.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat())).map(K=>p[K]).filter(K=>K!==void 0)),A=[w]}}),A.length>0){let R=[...new Set(A.map(P=>P.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat()).values()].map(P=>p[P]).filter(P=>P!==void 0);je({instructions:o?[...l.instructions,...A]:[...A],payer:this.feePayer,signers:R.map(P=>P.publicKey)})?c.push(new Je().add(...l.instructions,...A)):c.push(new Je().add(...A)),b.push(R)}return c.forEach(w=>w.feePayer=this.feePayer),(x=this.owner)!=null&&x.signer&&b.forEach(w=>{w.some(R=>R.publicKey.equals(this.owner.publicKey))||w.push(this.owner.signer)}),{builder:this,transactions:c,signers:b,instructionTypes:this.instructionTypes,execute:async w=>{var v;let{sequentially:R,onTxUpdate:P,skipTxCount:k=0,recentBlockHash:B,skipPreflight:K=!0}=w||{},F=B!=null?B:await Ve(this.connection,this.blockhashCommitment);if(c.forEach(async(g,h)=>{g.recentBlockhash=F,b[h].length&&g.sign(...b[h])}),Be(c),(v=this.owner)!=null&&v.isKeyPair){if(R){let g=0,h=[];for(let I of c){if(++g,g<=k){h.push("tx skipped");continue}let C=await Dt(this.connection,I,this.signers.find(L=>L.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:K});h.push(C)}return{txIds:h,signedTxs:c}}return{txIds:await Promise.all(c.map(async g=>await this.connection.sendRawTransaction(g.serialize(),{skipPreflight:K}))),signedTxs:c}}if(this.signAllTransactions){let g=await this.signAllTransactions(c.slice(k,c.length)),h=[...c.slice(0,k),...g];if(R){let I=0,C=[],L=async()=>{if(!h[I])return;I<k&&(C.push({txId:"",status:"success",signedTx:h[I]}),P==null||P([...C]),I++,L());let V=await this.connection.sendRawTransaction(h[I].serialize(),{skipPreflight:K});C.push({txId:V,status:"sent",signedTx:h[I]}),P==null||P([...C]),I++;let se=!1,U=null,W=null,te=z=>{U!==null&&clearInterval(U),W!==null&&this.connection.removeSignatureListener(W);let ie=C.findIndex(Pe=>Pe.txId===V);if(ie>-1){if(C[ie].status==="error"||C[ie].status==="success")return;C[ie].status=z.err?"error":"success"}P==null||P([...C]),z.err||L()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var z;if(se){clearInterval(U);return}try{let ie=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});ie&&(se=!0,clearInterval(U),te({err:((z=ie.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",V))}catch(ie){se=!0,clearInterval(U),console.error("getTransaction timeout:",ie,V)}},yt)),W=this.connection.onSignature(V,z=>{if(se){this.connection.removeSignatureListener(W);return}se=!0,te(z)},"confirmed"),this.connection.getSignatureStatus(V)};return await L(),{txIds:C.map(V=>V.txId),signedTxs:h}}else{let I=[];for(let C=0;C<h.length;C+=1){let L=await this.connection.sendRawTransaction(h[C].serialize(),{skipPreflight:K});I.push(L)}return{txIds:I,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}async sizeCheckBuildV0(e){var v;let F=e||{},{computeBudgetConfig:n,splitIns:o=[],lookupTableCache:a={},lookupTableAddress:l=[],insCountLimit:p=12}=F,c=pe(F,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),b=O(O({},this.cluster==="devnet"?await _t(this.connection):await Vt(this.connection)),a),A=Array.from(new Set([...this.lookupTableAddress,...l])),y=[];for(let g of A)b[g]===void 0&&y.push(new _e(g));let T=await vt({connection:this.connection,address:y});for(let[g,h]of Object.entries(T))b[g]=h;let x=n?pt(n):{instructions:[],instructionTypes:[]},w=await Ve(this.connection,this.blockhashCommitment),R=this.signers.reduce((g,h)=>D(O({},g),{[h.publicKey.toBase58()]:h}),{}),P=[],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&&($e({instructions:I,payer:this.feePayer,lookupTableAddressAccount:b})||$e({instructions:h,payer:this.feePayer,lookupTableAddressAccount:b})))B.push(g);else{if(B.length===0)throw Error("item ins too big");K+=g===o[K]?1:0;let C={};for(let L of[...new Set(A)])b[L]!==void 0&&(C[L]=b[L]);if(n&&$e({instructions:[...x.instructions,...B],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:w})){let L=new et({payerKey:this.feePayer,recentBlockhash:w,instructions:[...x.instructions,...B]}).compileToV0Message(Object.values(b));P.push(new tt(L))}else{let L=new et({payerKey:this.feePayer,recentBlockhash:w,instructions:[...B]}).compileToV0Message(Object.values(b));P.push(new tt(L))}k.push(Array.from(new Set(B.map(L=>L.keys.filter(V=>V.isSigner).map(V=>V.pubkey.toString())).flat())).map(L=>R[L]).filter(L=>L!==void 0)),B=[g]}}),B.length>0){let h=[...new Set(B.map(I=>I.keys.filter(C=>C.isSigner).map(C=>C.pubkey.toString())).flat()).values()].map(I=>R[I]).filter(I=>I!==void 0);if(n&&$e({instructions:[...x.instructions,...B],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:w})){let I=new et({payerKey:this.feePayer,recentBlockhash:w,instructions:[...x.instructions,...B]}).compileToV0Message(Object.values(b));P.push(new tt(I))}else{let I=new et({payerKey:this.feePayer,recentBlockhash:w,instructions:[...B]}).compileToV0Message(Object.values(b));P.push(new tt(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)}),P.forEach((g,h)=>{g.sign(k[h])}),{builder:this,transactions:P,buildProps:e,signers:k,instructionTypes:this.instructionTypes,execute:async g=>{var se;let{sequentially:h,onTxUpdate:I,skipTxCount:C=0,recentBlockHash:L,skipPreflight:V=!0}=g||{};if(P.map(async(U,W)=>{k[W].length&&U.sign(k[W]),L&&(U.message.recentBlockhash=L)}),Be(P),(se=this.owner)!=null&&se.isKeyPair){if(h){let U=0,W=[];for(let te of P){if(++U,U<=C){console.log("skip tx: ",U),W.push("tx skipped");continue}let z=await this.connection.sendTransaction(te,{skipPreflight:V});await ft(this.connection,z),W.push(z)}return{txIds:W,signedTxs:P}}return{txIds:await Promise.all(P.map(async U=>await this.connection.sendTransaction(U,{skipPreflight:V}))),signedTxs:P}}if(this.signAllTransactions){let U=await this.signAllTransactions(P.slice(C,P.length)),W=[...P.slice(0,C),...U];if(h){let te=0,z=[],ie=async()=>{if(!W[te])return;if(te<C){z.push({txId:"",status:"success",signedTx:W[te]}),I==null||I([...z]),te++,ie();return}let Pe=await this.connection.sendTransaction(W[te],{skipPreflight:V});z.push({txId:Pe,status:"sent",signedTx:W[te]}),I==null||I([...z]),te++;let ze=!1,Oe=null,at=null,on=he=>{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=he.err?"error":"success"}I==null||I([...z]),he.err||ie()};this.loopMultiTxStatus&&(Oe=setInterval(async()=>{var he;if(ze){clearInterval(Oe);return}try{let Ae=await this.connection.getTransaction(Pe,{commitment:"confirmed",maxSupportedTransactionVersion:0});Ae&&(ze=!0,clearInterval(Oe),on({err:((he=Ae.meta)==null?void 0:he.err)||null}),console.log("tx status from getTransaction:",Pe))}catch(Ae){ze=!0,clearInterval(Oe),console.error("getTransaction timeout:",Ae,Pe)}},yt)),at=this.connection.onSignature(Pe,he=>{if(ze){this.connection.removeSignatureListener(at);return}ze=!0,on(he)},"confirmed"),this.connection.getSignatureStatus(Pe)};return ie(),{txIds:[],signedTxs:W}}else{let te=[];for(let z=0;z<W.length;z+=1){let ie=await this.connection.sendTransaction(W[z],{skipPreflight:V});te.push(ie)}return{txIds:te,signedTxs:W}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:c||{}}}};var Wt=(...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=_(n)}createTxBuilder(e){return this.scope.checkOwner(),new bt({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(Wt(e))}logInfo(...e){this.logger.info(Wt(e))}logAndCreateError(...e){let n=Wt(e);throw new Error(n)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as pl,SystemProgram as yl}from"@solana/web3.js";import Pl from"bn.js";import{createCloseAccountInstruction as Tl,createInitializeAccountInstruction as hl,createTransferInstruction as Il,TOKEN_PROGRAM_ID as Bl}from"@solana/spl-token";import{Keypair as el,PublicKey as tl}from"@solana/web3.js";import il from"bn.js";import{TOKEN_PROGRAM_ID as sl}from"@solana/spl-token";import{PublicKey as ii}from"@solana/web3.js";import Sn,{isBN as Kn}from"bn.js";import{bits as Yo,BitStructure as rc,blob as Qo,Blob as ac,cstr as sc,f32 as uc,f32be as cc,f64 as lc,f64be as mc,greedy as dc,Layout as Zo,ns64 as pc,ns64be as fc,nu64 as yc,nu64be as bc,offset as Ho,s16 as gc,s16be as Pc,s24 as Ac,s24be as wc,s32 as jo,s32be as kc,s40 as Tc,s40be as hc,s48 as Ic,s48be as Bc,s8 as Sc,seq as $o,struct as Kc,Structure as Jo,u16 as ei,u16be as xc,u24 as Cc,u24be as Rc,u32 as ti,u32be as Lc,u40 as Oc,u40be as Nc,u48 as Mc,u48be as Fc,u8 as ni,UInt as oi,union as vc,Union as Vc,unionLayoutDiscriminator as _c,utf8 as Ec}from"@solana/buffer-layout";var gt=Zo,Tn=Jo;var qt=oi;var hn=ni,Z=ei;var Pt=ti;var me=jo;var In=$o;var M=Qo;var Ut=Yo,Bn=Ho;var Ke=class extends gt{constructor(n,o,a){super(n,a);this.blob=M(n),this.signed=o}decode(n,o=0){let a=new Sn(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 Sn(n)),this.signed&&(n=n.toTwos(this.span*8)),this.blob.encode(n.toArrayLike(Buffer,"le",this.span),o,a)}},At=class extends gt{constructor(n){super(8,n);this._lower=Ut(Pt(),!1),this._upper=Ut(Pt(),!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 qt(1,r)}function Y(r){return new qt(4,r)}function t(r){return new Ke(8,!1,r)}function N(r){return new Ke(16,!1,r)}function xn(r){return new Ke(1,!0,r)}function Ee(r){return new Ke(8,!0,r)}function Cn(r){return new Ke(16,!0,r)}var nt=class extends gt{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 nt(M(32),e=>new ii(e),e=>e.toBuffer(),r)}function ue(r){return new nt(hn(),ri,ai,r)}function ri(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function ai(r){return r?1:0}function Rn(r,e){let n=Pt("length"),o=d([n,f(r,Bn(n,-n.span),"values")]);return new nt(o,({values:a})=>a,a=>({values:a}),e)}var Gt=class extends Tn{decode(e,n){return super.decode(e,n)}};function d(r,e,n){return new Gt(r,e,n)}function f(r,e,n){let o,a=typeof e=="number"?e:Kn(e)?e.toNumber():new Proxy(e,{get(l,p){if(!o){let c=Reflect.get(l,"count");o=Kn(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 In(r,a,n)}var wt=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 Tg,SystemProgram as hg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Bg}from"@solana/spl-token";import{PublicKey as $l}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as em}from"@solana/spl-token";import{PublicKey as S}from"@solana/web3.js";var On=new S("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Nn=new S("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Mn=new S("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),zt=new S("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),im=new S("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),ui=new S("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Fn=new S("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),vn=new S("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),rm=new S("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),ci=new S("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Vn=new S("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),li=new S("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),mi=new S("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),_n=new S("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),am=new S("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),di=new S("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Xt=new S("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),pi=new S("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),sm=new S("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),fi=new S("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),yi=new S("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),bi=new S("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),um=new S("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),cm=new S("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),lm=new S("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),mm=new S("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),dm=new S("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Te={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 Fg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as $f,TOKEN_2022_PROGRAM_ID as Jf,TOKEN_PROGRAM_ID as ey}from"@solana/spl-token";import{PublicKey as ny}from"@solana/web3.js";import iy from"bn.js";import ay from"decimal.js";import{TOKEN_PROGRAM_ID as Sm}from"@solana/spl-token";import{PublicKey as Rm}from"@solana/web3.js";var gi=d([Y("mintAuthorityOption"),i("mintAuthority"),t("supply"),m("decimals"),m("isInitialized"),Y("freezeAuthorityOption"),i("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as kf,TOKEN_2022_PROGRAM_ID as Tf,TOKEN_PROGRAM_ID as hf}from"@solana/spl-token";import{Keypair as Sf,PublicKey as Kf,SystemProgram as Cf,TransactionInstruction as Rf}from"@solana/web3.js";import Of from"bn.js";import E from"bn.js";var J=new E(1).shln(64);var Pi=new E(1).shln(128),Yt=new E(1).shln(64).subn(1),Ai=new E(1).shln(128).subn(1),We=-443636,qe=443636,xe=new E("4295048016"),Ce=new E("79226673521066979257578248091"),En=new E("59543866431248"),Dn=new E("184467440737095516"),Wn=new E("15793534762490258745"),qn=16;var Qt=60,qm=new E("18446743708227953217"),Un=[{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 ot=3,Gn=100;var zn=10,Xn=100,Tt=14;var q=new E(0),Re=new E(1),Um=new E(-1);var Gm=new E("18446744073700000000");var wi=d([M(8),m("bump"),Z("index"),i("owner"),Y("protocolFeeRate"),Y("tradeFeeRate"),Z("tickSpacing"),Y("fundFeeRate"),f(Y(),1),i("fundOwner"),f(t(),3)]),ki=d([Y("blockTimestamp"),Ee("tickCumulative"),f(t(),4)]),Yn=d([M(8),ue("initialized"),t("recentEpoch"),Z("observationIndex"),i("poolId"),f(ki,Gn,"observations"),f(t(),4)]),Ti=d([Z("filterPeriod"),Z("decayPeriod"),Z("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"),N("emissionsPerSecondX64"),t("totalEmissioned"),t("claimed"),i("mint"),i("vault"),i("creator"),N("growthGlobalX64")]),Zt=d([M(8),m("bump"),i("configId"),i("creator"),i("mintA"),i("mintB"),i("vaultA"),i("vaultB"),i("observationId"),m("mintDecimalsA"),m("mintDecimalsB"),Z("tickSpacing"),N("liquidity"),N("sqrtPriceX64"),me("tickCurrent"),Y(),N("feeGrowthGlobalX64A"),N("feeGrowthGlobalX64B"),t("protocolFeesTokenA"),t("protocolFeesTokenB"),f(N(),4),m("status"),m("feeOn"),M(6),f(hi,ot,"rewardInfos"),M(8*16,"tickArrayBitmap"),f(t(),4),t("fundFeesTokenA"),t("fundFeesTokenB"),t("startTime"),t("recentEpoch"),Ti.replicate("dynamicFeeInfo"),f(t(),46)]),Ii=d([N("growthInsideLastX64"),t("rewardAmountOwed")]),Bi=d([M(8),m("bump"),i("nftMint"),i("poolId"),me("tickLower"),me("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),f(Ii,ot,"rewardInfos"),t("recentEpoch"),f(t(),7)]),Qm=d([M(8),m("bump"),i("poolId"),me("tickLower"),me("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),f(N(),ot,"rewardGrowthInside"),t("recentEpoch"),f(t(),7)]),Si=d([me("tick"),Cn("liquidityNet"),N("liquidityGross"),N("feeGrowthOutsideX64A"),N("feeGrowthOutsideX64B"),f(N(),ot,"rewardGrowthsOutsideX64"),t("orderPhase"),t("ordersAmount"),t("partFilledOrdersRemaining"),N("unfilledRatioX64"),f(Y(),3)]),Qn=d([M(8),i("poolId"),me("startTickIndex"),f(Si,Qt,"ticks"),m("initializedTickCount"),t("recentEpoch"),f(m(),107)]),Ki=d([M(8),m("bump"),f(i(),zn,"operationOwners"),f(i(),Xn,"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"),N("unfilledRatioX64"),f(t(),4)]),Zn=d([M(8),i("poolId"),M(8*8*Tt,"positiveTickArrayBitmap"),M(8*8*Tt,"negativeTickArrayBitmap")]),Zm=d([M(8),Z("index"),Z("filterPeriod"),Z("decayPeriod"),Z("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),f(t(),8)]),Ci=d([M(8),i("wallet"),m("nonceIndex"),t("orderNonce"),f(t(),4)]),Hm=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 Jm from"bn.js";var ld=Buffer.from("amm_config","utf8"),Oi=Buffer.from("pool","utf8"),Ni=Buffer.from("pool_vault","utf8"),md=Buffer.from("pool_reward_vault","utf8"),dd=Buffer.from("position","utf8"),pd=Buffer.from("tick_array","utf8"),fd=Buffer.from("operation","utf8"),yd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),bd=Buffer.from("observation","utf8"),gd=Buffer.from("support_mint","utf8"),Pd=Buffer.from("dynamic_fee_config","utf8"),Ad=Buffer.from("permission","utf8");var wd=Buffer.from("locked_position","utf8");import{sha256 as Qi}from"js-sha256";import Mi from"bn.js";import Id 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 Sd=new Mi(1).shln(256).subn(1);function Hn(r){return r.isZero()?-1:r.bitLength()-1}import Cd from"bn.js";import Md from"bn.js";import vd from"decimal.js";import{PublicKey as wp}from"@solana/web3.js";import Tp from"bn.js";import{TOKEN_2022_PROGRAM_ID as Rp,TOKEN_PROGRAM_ID as Lp}from"@solana/spl-token";import Fp from"decimal.js";import cp from"bn.js";import Hd from"bn.js";import Xp from"bn.js";function ee(r){let e=`global:${r}`;return Buffer.from(Qi.digest(e)).slice(0,8)}Yn.span;var Df=_("Raydium_Clmm"),Wf={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 Jt}from"@solana/web3.js";var $i=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"),N("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"),N("perShareReward"),t("lastSlot"),t("perSlotReward")]),nr=d([t("state"),t("nonce"),i("lpVault"),i("rewardVaultA"),t("totalRewardA"),N("perShareRewardA"),t("perSlotRewardA"),m("option"),i("rewardVaultB"),M(7),t("totalRewardB"),N("perShareRewardB"),t("perSlotRewardB"),t("lastSlot"),i()]),or=d([t(),t("state"),t("nonce"),t("validRewardTokenNum"),N("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 D(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 D(O({},a),{version:5,rewardInfos:[{rewardVault:a.rewardVaultA,totalReward:a.totalRewardA,perSlotReward:a.perSlotRewardA,perShareReward:a.perShareRewardA},{rewardVault:a.rewardVaultB,totalReward:a.totalRewardB,perSlotReward:a.perSlotRewardB,perShareReward:a.perShareRewardB}]})}:Reflect.get(r,e,n)}}),to=new Proxy(or,{get(r,e,n){return e==="decode"?(...o)=>{let a=r.decode(...o);return D(O({},a),{version:6,rewardInfos:a.rewardInfos.map(l=>{var p;return D(O({},l),{rewardType:((p=Object.entries(rt).find(c=>String(c[1])===l.rewardType.toString()))!=null?p:["Standard SPL"])[0]})})})}:Reflect.get(r,e,n)}}),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")]),Dy=d([t("state"),i("id"),i("owner"),t("deposited"),f(t(),1,"rewardDebts")]),no=d([t("state"),i("id"),i("owner"),t("deposited"),f(N(),1,"rewardDebts"),t(""),t("voteLockedBalance"),f(t(),15)]),Wy=d([t("state"),i("id"),i("owner"),t("deposited"),f(t(),2,"rewardDebts")]),lr=d([t("state"),i("id"),i("owner"),t("deposited"),f(N(),2,"rewardDebts"),f(t(),17)]),mr=d([t(),t("state"),i("id"),i("owner"),t("deposited"),f(N(),5,"rewardDebts"),f(t(),16)]),dr=d([m("instruction"),t("amount")]),pr=d([i("mint"),i("grantAuthority"),t("baselineVoteWeightScaledFactor"),t("maxExtraLockupVoteWeightScaledFactor"),t("lockupSaturationSecs"),xn("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"),Ee("timeOffset"),m("bump"),f(m(),7,"reserved2"),f(t(),11,"reserved3")]),yr=d([Ee("startTime"),Ee("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 jy=_("Raydium_farm_config"),Pr=new Jt("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ar=new Jt("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var $y=new Jt("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var rt={"Standard SPL":0,"Option tokens":1},oo={[On.toString()]:3,[Nn.toString()]:4,[Mn.toString()]:5,[zt.toString()]:6,[Te.FARM_PROGRAM_ID_V3.toString()]:3,[Te.FARM_PROGRAM_ID_V4.toString()]:4,[Te.FARM_PROGRAM_ID_V5.toString()]:5,[Te.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as Vb,SystemProgram as _b,SYSVAR_CLOCK_PUBKEY as Eb,SYSVAR_RENT_PUBKEY as Db,TransactionInstruction as Wb}from"@solana/web3.js";import Ub from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as zb,createAssociatedTokenAccountIdempotentInstruction as Xb,TOKEN_PROGRAM_ID as Yb}from"@solana/spl-token";import pb from"bn.js";import{PublicKey as ib}from"@solana/web3.js";import ab from"bn.js";var Sb=_("Raydium.farm.util");var ig=_("Raydium_farm_instruction"),rg={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 Xg from"bn.js";import{PublicKey as ew}from"@solana/web3.js";import{AccountLayout as ow,MintLayout as iw,NATIVE_MINT as rw,TOKEN_PROGRAM_ID as sw}from"@solana/spl-token";import Zg from"bn.js";import ro from"bn.js";var Kr=new ro(25),xr=new ro(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as gP,TOKEN_PROGRAM_ID as PP}from"@solana/spl-token";import{PublicKey as wP,SystemProgram as kP,SYSVAR_RENT_PUBKEY as TP,TransactionInstruction as hP}from"@solana/web3.js";import LP from"bn.js";var Cr=d([m("instruction"),t("amountIn"),t("minAmountOut")]),Rr=d([m("instruction"),t("maxAmountIn"),t("amountOut")]),pP=d([m("instruction"),m("nonce")]),Lr=d([m("instruction"),m("nonce"),t("startTime")]),ao=d([t("status"),t("nonce"),t("maxOrder"),t("depth"),t("baseDecimal"),t("quoteDecimal"),t("state"),t("resetFlag"),t("minSize"),t("volMaxCutRatio"),t("amountWaveRatio"),t("baseLotSize"),t("quoteLotSize"),t("minPriceMultiplier"),t("maxPriceMultiplier"),t("systemDecimalValue"),t("minSeparateNumerator"),t("minSeparateDenominator"),t("tradeFeeNumerator"),t("tradeFeeDenominator"),t("pnlNumerator"),t("pnlDenominator"),t("swapFeeNumerator"),t("swapFeeDenominator"),t("baseNeedTakePnl"),t("quoteNeedTakePnl"),t("quoteTotalPnl"),t("baseTotalPnl"),t("poolOpenTime"),t("punishPcAmount"),t("punishCoinAmount"),t("orderbookToInitTime"),N("swapBaseInAmount"),N("swapQuoteOutAmount"),t("swapBase2QuoteFee"),N("swapQuoteInAmount"),N("swapBaseOutAmount"),t("swapQuote2BaseFee"),i("baseVault"),i("quoteVault"),i("baseMint"),i("quoteMint"),i("lpMint"),i("openOrders"),i("marketId"),i("marketProgramId"),i("targetOrders"),i("withdrawQueue"),i("lpVault"),i("owner"),t("lpReserve"),f(t(),3,"padding")]),fP=d([t("accountType"),t("status"),t("nonce"),t("maxOrder"),t("depth"),t("baseDecimal"),t("quoteDecimal"),t("state"),t("resetFlag"),t("minSize"),t("volMaxCutRatio"),t("amountWaveRatio"),t("baseLotSize"),t("quoteLotSize"),t("minPriceMultiplier"),t("maxPriceMultiplier"),t("systemDecimalsValue"),t("abortTradeFactor"),t("priceTickMultiplier"),t("priceTick"),t("minSeparateNumerator"),t("minSeparateDenominator"),t("tradeFeeNumerator"),t("tradeFeeDenominator"),t("pnlNumerator"),t("pnlDenominator"),t("swapFeeNumerator"),t("swapFeeDenominator"),t("baseNeedTakePnl"),t("quoteNeedTakePnl"),t("quoteTotalPnl"),t("baseTotalPnl"),t("poolOpenTime"),t("punishPcAmount"),t("punishCoinAmount"),t("orderbookToInitTime"),N("swapBaseInAmount"),N("swapQuoteOutAmount"),N("swapQuoteInAmount"),N("swapBaseOutAmount"),t("swapQuote2BaseFee"),t("swapBase2QuoteFee"),i("baseVault"),i("quoteVault"),i("baseMint"),i("quoteMint"),i("lpMint"),i("modelDataAccount"),i("openOrders"),i("marketId"),i("marketProgramId"),i("targetOrders"),i("owner"),f(t(),64,"padding")]),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 MP=_("Raydium_liquidity_instruction");var Fr=5e4,vr=d([t("x"),t("y"),t("price")]),_P=d([t("accountType"),t("status"),t("multiplier"),t("validDataCount"),f(vr,Fr,"DataElement")]);import{PublicKey as HP}from"@solana/web3.js";import $P from"decimal.js";import{TOKEN_PROGRAM_ID as eA}from"@solana/spl-token";import{PublicKey as qP}from"@solana/web3.js";var zP=_("Raydium_liquidity_serum");import Kw from"bn.js";import Cw from"decimal.js";import{TOKEN_PROGRAM_ID as KA}from"@solana/spl-token";import{PublicKey as CA}from"@solana/web3.js";import LA from"bn.js";import{SystemProgram as fA,SYSVAR_RENT_PUBKEY as yA,Transaction as bA,TransactionInstruction as gA}from"@solana/web3.js";import{createInitializeAccountInstruction as AA,TOKEN_PROGRAM_ID as wA}from"@solana/spl-token";function Vr(r="accountFlags"){let e=new At(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 _r=d([M(5),Vr("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 eT}from"@solana/web3.js";import{AccountLayout as nT,NATIVE_MINT as oT,TOKEN_2022_PROGRAM_ID as iT,TOKEN_PROGRAM_ID as rT,createAssociatedTokenAccountIdempotentInstruction as aT}from"@solana/spl-token";import Jw from"bn.js";import zr from"bn.js";var Ew=new zr(0);import zw from"bn.js";import Xr from"bn.js";var ge=new Xr(1e6);import fT from"bn.js";import bT 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 ik=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),rk=Buffer.from("amm_config","utf8"),ak=Buffer.from("pool","utf8"),sk=Buffer.from("pool_lp_mint","utf8"),uk=Buffer.from("pool_vault","utf8"),ck=Buffer.from("observation","utf8"),lk=Buffer.from("permission","utf8"),mk=Buffer.from("support_mint","utf8");var dk=Buffer.from("locked_liquidity","utf8");var Ok=_("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 Zr=d([M(8),m("bump"),ue("disableCreatePool"),Z("index"),t("tradeFeeRate"),t("protocolFeeRate"),t("fundFeeRate"),t("createPoolFee"),i("protocolOwner"),i("fundOwner"),t("creatorFeeRate"),f(t(),15)]),so=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)]);import{PublicKey as sK,SystemProgram as uK}from"@solana/web3.js";import{createTransferInstruction as lK,TOKEN_PROGRAM_ID as mK,TOKEN_2022_PROGRAM_ID as dK,createAssociatedTokenAccountIdempotentInstruction as pK,createSyncNativeInstruction as yK,createTransferCheckedInstruction as bK}from"@solana/spl-token";import da from"bn.js";import AK from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Sh,TOKEN_2022_PROGRAM_ID as Kh,TOKEN_PROGRAM_ID as xh}from"@solana/spl-token";import{SystemProgram as Oh,TransactionInstruction as Nh}from"@solana/web3.js";import na from"bn.js";var $r=d([t(),t("epoch"),m("curveType"),Z("index"),t("migrateFee"),t("tradeFeeRate"),t("maxShareFeeRate"),t("minSupplyA"),t("maxLockRate"),t("minSellRateA"),t("minMigrateRateA"),t("minFundRaisingB"),i("mintB"),i("protocolFeeOwner"),i("migrateFeeOwner"),i("migrateToAmmWallet"),i("migrateToCpmmWallet"),f(t(),16)]),Jr=d([t("totalLockedAmount"),t("cliffPeriod"),t("unlockPeriod"),t("startTime"),t("totalAllocatedShare")]),ea=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"),Jr.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)]),sh=d([t(),t("epoch"),i("poolId"),i("beneficiary"),t("claimedAmount"),t("tokenShareAmount"),f(t(),8)]),co=d([m("migrateType"),m("migrateCpmmFeeOn"),t("supply"),t("totalSellA"),t("totalFundRaisingB"),t("totalLockedAmount"),t("cliffPeriod"),t("unlockPeriod")]),ta=d([t("epoch"),m("index"),i("configId"),co.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"),f(m(),107),Rn(ta,"platformCurve")]);var dh=Buffer.from("vault_auth_seed","utf8"),ph=Buffer.from("global_config","utf8"),fh=Buffer.from("pool_vesting","utf8"),yh=Buffer.from("platform_config","utf8"),bh=Buffer.from("platform_fee_vault_auth_seed","utf8"),gh=Buffer.from("creator_fee_vault_auth_seed","utf8"),Ph=Buffer.from("platform_global_access","utf8"),Ah=Buffer.from("platform_allow_config","utf8");var Vh={initialize:Buffer.from([175,175,109,31,13,152,155,237]),initializeV2:Buffer.from([67,153,175,39,218,16,38,32]),buyExactIn:Buffer.from([250,234,13,123,213,156,19,236]),buyExactOut:Buffer.from([24,211,116,40,105,3,153,56]),sellExactIn:Buffer.from([149,39,222,155,211,124,152,26]),sellExactOut:Buffer.from([95,200,71,34,8,9,11,166]),createVestingAccount:Buffer.from([129,178,2,13,217,172,230,218]),claimVestedToken:Buffer.from([49,33,104,30,189,157,79,35]),createPlatformConfig:Buffer.from([176,90,196,175,253,113,220,20]),claimPlatformFee:Buffer.from([156,39,208,135,76,237,61,72]),updatePlaformConfig:Buffer.from([195,60,76,129,146,45,67,143]),initializeWithToken2022:Buffer.from([37,190,126,222,44,154,171,17]),claimPlatformFeeFromVault:Buffer.from([117,241,198,168,248,218,80,29]),claimCreatorFee:Buffer.from([26,97,138,203,132,171,141,252]),updatePlatformCurveParam:Buffer.from([138,144,138,250,220,128,4,57]),removePlatformCurveParam:Buffer.from([27,30,62,169,93,224,24,145]),createPlatformVestingAccount:Buffer.from([146,71,173,69,98,19,15,106]),createPlatformAllowConfig:Buffer.from([69,71,168,7,214,250,107,102]),closePlatformAllowConfig:Buffer.from([82,205,36,216,16,6,240,215])};var _h=new na("18446744073709551615");import{TOKEN_2022_PROGRAM_ID as qh,TOKEN_PROGRAM_ID as Uh}from"@solana/spl-token";import Yh from"bn.js";import Zh from"decimal.js";import KI from"bn.js";import CI from"decimal.js";import tI from"bn.js";import oI from"decimal.js";import pI from"bn.js";import yI from"decimal.js";import fo from"bn.js";import tn from"decimal.js";var St=class{static _multipler(e){return new tn(10).pow(e)}static getPrice({priceX64:e,decimalA:n,decimalB:o}){return new tn(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 tn(new fo(1).shln(64).toString());import{NATIVE_MINT as VB,TOKEN_2022_PROGRAM_ID as _B,TOKEN_PROGRAM_ID as EB,createAssociatedTokenAccountIdempotentInstruction as WB,createSyncNativeInstruction as qB,getTransferFeeConfig as UB,unpackMint as GB}from"@solana/spl-token";import H from"bn.js";import{PublicKey as ca,SystemProgram as YB}from"@solana/web3.js";import eS from"decimal.js";var tS={initPriceX64:new H("515752397214619"),supply:new H(1e15),totalSellA:new H(7931e11),totalFundRaisingB:new H(85e9),totalFundRaisingBUSD:new H(125e8),totalLockedAmount:new H("0"),cliffPeriod:new H("0"),unlockPeriod:new H("0"),decimals:6,virtualA:new H("1073471847374405"),virtualB:new H("30050573465"),realA:new H(0),realB:new H(0),protocolFee:new H(0),platformId:new ca("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new H(0),cliffPeriod:new H(0),unlockPeriod:new H(0),startTime:new H(0),totalAllocatedShare:new H(0)}},nS=new H(1e4);var la={[Fn.toBase58()]:3};var ma=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 BS}from"@solana/web3.js";var RS=_("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as ES,TOKEN_2022_PROGRAM_ID as DS,TOKEN_PROGRAM_ID as WS}from"@solana/spl-token";import{PublicKey as US,SystemProgram as GS,TransactionInstruction as zS}from"@solana/web3.js";import YS from"bn.js";var ZK=new da(0);import{PublicKey as pa,Transaction as nn,TransactionInstruction as fa}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ya}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 we(e,[...p,...c]),A=[];for(let y=0;y<b.length;y++){let T=Math.floor(y/o.length),x=y%o.length,w=p[x],R=c[y],P=b[x],k=b[o.length+y];if(!(P&&k)||P.data.length!==oe.POOL_LAYOUT.span||k.data.length!==oe.OWNER_LAYOUT.span)continue;let B=oe.POOL_LAYOUT.decode(P.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;A.push({programId:n,poolId:w,ammId:B.ammId,ownerAccountId:R,snapshotLpAmount:K.lpAmount,project:oe.VERSION_PROJECT[T],openTime:F,endTime:v,canClaim:I,canClaimErrorType:g?h?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:B.tokenInfo.map((C,L)=>({mintAddress:C.mintAddress,mintVault:C.mintVault,mintDecimals:C.mintDecimals,perLpLoss:C.perLpLoss,debtAmount:K.tokenInfo[L].debtAmount.add(K.tokenInfo[L].claimedAmount)}))})}return A}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 A of e.tokenInfo){let{account:y,instructionParams:T}=await this.scope.account.getOrCreateTokenAccount({mint:A.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:A.mintAddress.equals(ne.WSOL.mint),createInfo:{payer:l,amount:0},skipCloseAccount:!A.mintAddress.equals(ne.WSOL.mint),associatedOnly:A.mintAddress.equals(ne.WSOL.mint)?!1:n.associatedOnly});T&&a.addInstruction(T),p.push(y)}a.addInstruction({instructions:[oe.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:l,ownerPda:e.ownerAccountId,claimAddress:p}})]});let{transaction:c,signers:b}=a.build();return[{transaction:c,signer:b}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:n,feePayer:o}){let a=this.createTxBuilder(o),l=n.wallet||this.scope.ownerPubKey,p={};for(let y of e){let T=[];for(let x of y.tokenInfo){let{account:w,instructionParams:R}=await this.scope.account.getOrCreateTokenAccount({mint:x.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:x.mintAddress.equals(ne.WSOL.mint),createInfo:{payer:l,amount:0},skipCloseAccount:!x.mintAddress.equals(ne.WSOL.mint),associatedOnly:x.mintAddress.equals(ne.WSOL.mint)?!1:n.associatedOnly});R&&a.addInstruction(R),w&&(p[x.mintAddress.toString()]=w,T.push(w))}a.addInstruction({instructions:[oe.makeClaimInstruction({programId:y.programId,poolInfo:y,ownerInfo:{wallet:l,ownerPda:y.ownerAccountId,claimAddress:T}})]})}let{transaction:c,signers:b}=a.build(),A=a.allInstructions;return Et(A,[l,...b.map(y=>y.publicKey)])?[{transaction:c,signer:b}]:[{transaction:new nn().add(...A.slice(0,a.AllTxData.instructions.length-1)),signer:b},{transaction:new nn().add(...A.slice(a.AllTxData.instructions.length-1)),signer:[]},{transaction:new nn().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:ya,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 fa({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 pa(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 dx}from"@solana/web3.js";import{getTransferFeeConfig as fx,MintLayout as yx,TOKEN_2022_PROGRAM_ID as bx,TOKEN_PROGRAM_ID as gx,unpackMint as Px}from"@solana/spl-token";var XC=new Le(2),YC=new Le(3),QC=new Le(5),Lo=new Le(10),ZC=new Le(100),HC=new Le(1e3),jC=new Le(1e4);function Ct(r,e=1,n=[]){let o=[...r];if(e<=0)return n;for(;o.length;)n.push(o.splice(0,e));return n}import j from"bn.js";import Ge from"decimal.js";var Q=class{static isInitialized({data:e}){return this.hasLiquidity({data:e})||this.hasLimitOrders({data:e})}static hasLimitOrders({data:e}){return!e.ordersAmount.isZero()||!e.partFilledOrdersRemaining.isZero()}static hasLiquidity({data:e}){return!e.liquidityGross.isZero()}static isValidTick(e){return e>=We&&e<=qe}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${We}, ${qe}]`)}static getSqrtPriceAtTick(e){this.checkTick(e);let n=Math.abs(e),o=J.clone();for(let{bit:a,factor:l}of Un)(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=Q.getPriceAtTick(n,!1);return ce(e,a,J)}else{let a=Q.getPriceAtTick(n,!0);return ce(e,J,a)}}static getLimitOrderInput({amountOut:e,tick:n,zeroForOne:o}){if(o){let a=Q.getPriceAtTick(n,!0);return le(e,a,J)}else{let a=Q.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 j(l),ge),c.amountIn=n.sub(c.ammFeeAmount)):c.amountIn=n,c.amountOut=this.getLimitOrderOutput({amountIn:c.amountIn,tick:e.tick,zeroForOne:o}),c.amountOut.gt(b)&&(c.amountOut=b,c.amountIn=this.getLimitOrderInput({amountOut:b,tick:e.tick,zeroForOne:!o}),p&&(c.ammFeeAmount=le(c.amountIn,new j(l),ge.sub(new j(l)))));else{let T=j.min(n,b);p?c.amountOut=T:c.amountOut=j.min(le(T,ge,ge.sub(new j(l))),b),c.amountIn=this.getLimitOrderInput({amountOut:c.amountOut,tick:e.tick,zeroForOne:!o}),p&&(c.ammFeeAmount=le(c.amountIn,new j(l),ge.sub(new j(l))))}let A=q;e.partFilledOrdersRemaining.gt(q)&&(A=j.min(e.partFilledOrdersRemaining,c.amountOut),A.gt(q)&&(e.unfilledRatioX64=ce(e.unfilledRatioX64,e.partFilledOrdersRemaining.sub(A),e.partFilledOrdersRemaining)),e.partFilledOrdersRemaining=e.partFilledOrdersRemaining.sub(A));let y=c.amountOut.sub(A);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(Re),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 j(l),ge),c.amountOut=c.amountOut.sub(c.ammFeeAmount)),c}static getPriceAtTick(e,n){let o=this.getSqrtPriceAtTick(e);return n?o.mul(o).add(J.subn(1)).div(J):o.mul(o).div(J)}static getTickAtSqrtPrice(e){if(!(e.gte(xe)&&e.lte(Ce)))throw Error("SqrtPriceX64");let n=Hn(e),o=n-64,a;o>=0?a=new j(o).shln(32):a=new j(-o).shln(32).neg();let l;n>=64?l=e.shrn(n-63):l=e.shln(63-n);let p=new j(0),c=new j(1).shln(63);for(let k=0;k<qn&&!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(En),T=y.sub(Dn),x=y.add(Wn),w=this.signedShrn64(T),R=this.signedShrn64(x);return w===R?w:Q.getSqrtPriceAtTick(R).lte(e)?R:w}static signedShrn64(e){if(e.isNeg()){let n=new j(1).shln(64),o=e.div(n);return!e.mod(n).isZero()&&e.isNeg()?o.subn(1).toNumber():o.toNumber()}else return e.shrn(64).toNumber()}static sqrtPriceX64ToPrice(e,n,o){let a=e.mul(e),l=n-o,p=20,c=new j(10).pow(new j(p)),b=a.mul(c),A=new j(1).shln(128),T=b.div(A).toString();for(;T.length<=p;)T="0"+T;let x=T.slice(0,-p),w=T.slice(-p),R=x+"."+w;return new Ge(R).mul(new Ge(10).pow(l))}static tickToPrice(e,n,o){let a=Q.getSqrtPriceAtTick(e);return this.sqrtPriceX64ToPrice(a,n,o)}static priceToTick(e,n,o){let l=e.div(Math.pow(10,n-o)).log().div(new Ge(1.0001).log()).floor();return Math.max(We,Math.min(qe,l.toNumber()))}static priceToSqrtPriceX64(e,n,o){let p=e.div(Math.pow(10,n-o)).sqrt().mul(new Ge(2).pow(64));return new j(p.toFixed(0))}static toTickIndex(e,n){return e>=0?e-e%n:e-e%n-(e%n!==0?n:0)}static getPriceAndTick({price:e,mintADecimals:n,mintBDecimals:o,zeroForOne:a,tickSpacing:l}){let p=e.clamp(1/10**Math.max(n,o),Number.MAX_SAFE_INTEGER);a||(p=new Ge(1).div(p));let c=Q.toTickIndex(Q.priceToTick(p,n,o),l),b=Q.tickToPrice(c,n,o);return{price:a?b:new Ge(1).div(b),tick:c}}};var LR=({baseIn:r,price:e,mintADecimal:n,mintBDecimal:o,tickSpacing:a})=>{let l=Q.priceToTick(e,n,o),p=Q.toTickIndex(l,a),c=Q.tickToPrice(p,n,o);return{tick:p,price:c}};export{LR as getOrderTick};
//# sourceMappingURL=orderMath.mjs.map