UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

2 lines 82 kB
var wo=Object.defineProperty,ko=Object.defineProperties;var To=Object.getOwnPropertyDescriptors;var pt=Object.getOwnPropertySymbols;var ln=Object.prototype.hasOwnProperty,mn=Object.prototype.propertyIsEnumerable;var cn=(i,e,n)=>e in i?wo(i,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):i[e]=n,O=(i,e)=>{for(var n in e||(e={}))ln.call(e,n)&&cn(i,n,e[n]);if(pt)for(var n of pt(e))mn.call(e,n)&&cn(i,n,e[n]);return i},D=(i,e)=>ko(i,To(e));var ye=(i,e)=>{var n={};for(var o in i)ln.call(i,o)&&e.indexOf(o)<0&&(n[o]=i[o]);if(i!=null&&pt)for(var o of pt(i))e.indexOf(o)<0&&mn.call(i,o)&&(n[o]=i[o]);return n};import{PublicKey as Bo}from"@solana/web3.js";import{get as dn,set as ho}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}},pn={},Io={};function _(i){let e=dn(pn,i);if(!e){let n=dn(Io,i);e=new Ot({name:i,logLevel:n}),ho(pn,i,e)}return e}import{MINT_SIZE as La,TOKEN_PROGRAM_ID as Oa,getTransferFeeConfig as Na,unpackMint as Ma}from"@solana/spl-token";var Nt=_("Raydium_accountInfo_util");async function be(i,e,n){let{batchRequest:o,commitment:a="confirmed",chunkCount:l=100}=O({batchRequest:!1},n),m=Mt(e,l),s=new Array(m.length).fill([]);if(o){let y=m.map(g=>{let k=i._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 i._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 Bo(h),rentEpoch:S}}return null})))}else try{s=await Promise.all(m.map(y=>i.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 EC from"decimal.js";import No from"big.js";import ja from"bn.js";import So from"toformat";var Ko=So,je=Ko;import yt from"big.js";import Co from"bn.js";import Ro from"decimal.js-light";import $e from"bn.js";var fn=9007199254740991;function re(i){let e=_("Raydium_parseBigNumberish");if(i instanceof $e)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new $e(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=fn||i<=-fn)&&e.logWithError(`BigNumberish number overflow: ${i}`),new $e(String(i))):typeof i=="bigint"?new $e(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new $e(0))}var ft=_("module/fraction"),Ft=je(yt),Je=je(Ro),Lo={[0]:Je.ROUND_DOWN,[1]:Je.ROUND_HALF_UP,[2]:Je.ROUND_UP},Oo={[0]:yt.roundDown,[1]:yt.roundHalfUp,[2]:yt.roundUp},G=class{constructor(e,n=new Co(1)){this.numerator=re(e),this.denominator=re(n)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new G(this.denominator,this.numerator)}add(e){let n=e instanceof G?e:new G(re(e));return this.denominator.eq(n.denominator)?new G(this.numerator.add(n.numerator),this.denominator):new G(this.numerator.mul(n.denominator).add(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}sub(e){let n=e instanceof G?e:new G(re(e));return this.denominator.eq(n.denominator)?new G(this.numerator.sub(n.numerator),this.denominator):new G(this.numerator.mul(n.denominator).sub(n.numerator.mul(this.denominator)),this.denominator.mul(n.denominator))}mul(e){let n=e instanceof G?e:new G(re(e));return new G(this.numerator.mul(n.numerator),this.denominator.mul(n.denominator))}div(e){let n=e instanceof G?e:new G(re(e));return new G(this.numerator.mul(n.denominator),this.denominator.mul(n.numerator))}toSignificant(e,n={groupSeparator:""},o=1){Number.isInteger(e)||ft.logWithError(`${e} is not an integer.`),e<=0&&ft.logWithError(`${e} is not positive.`),Je.set({precision:e+1,rounding:Lo[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=Oo[o]||1,new Ft(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,n)}isZero(){return this.numerator.isZero()}};var as=_("Raydium_amount"),ss=je(No);import{PublicKey as Fo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as yn}from"@solana/spl-token";var bt={chainId:101,address:Fo.default.toBase58(),programId:yn.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:yn.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 Vt}from"@solana/web3.js";import{PublicKey as X,SystemProgram as bn,SYSVAR_RENT_PUBKEY as vo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Vo}from"@solana/spl-token";function Ve({pubkey:i,isSigner:e=!1,isWritable:n=!0}){return{pubkey:i,isWritable:n,isSigner:e}}var _o=[Ve({pubkey:Vo,isWritable:!1}),Ve({pubkey:bn.programId,isWritable:!1}),Ve({pubkey:vo,isWritable:!1})];function gn({publicKey:i,transformSol:e}){let n=Pn(i.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 Pn(i){try{return new X(i)}catch{return i}}var vt=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),et=new X("SysvarRent111111111111111111111111111111111"),ys=new X("SysvarC1ock11111111111111111111111111111111"),gt=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Eo=new X("Sysvar1nstructions1111111111111111111111111"),Do=bn.programId,bs=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),gs=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ps=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),As=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),ws=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),ks=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ts=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),hs=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Is=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Bs=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Ss=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Te=new X("So11111111111111111111111111111111111111112"),Be=X.default;var _t=class{constructor({mint:e,decimals:n,symbol:o,name:a,skipMint:l=!1,isToken2022:m=!1}){if(e===Be.toBase58()||e instanceof Vt&&Be.equals(e)){this.decimals=ge.decimals,this.symbol=ge.symbol,this.name=ge.name,this.mint=new Vt(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?Vt.default:gn({publicKey:e}),this.isToken2022=m}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ne=_t;ne.WSOL=new _t(D(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 Wo from"bn.js";var _s=new G(new Wo(100));var Gs=_("Raydium_price");import{merge as Wx}from"lodash";import Js from"axios";var An={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",MONITOR_BASE_HOST:"https://monitor.raydium.io",SERVICE_1_BASE_HOST:"https://service-v1.raydium.io",TEMP_HOST:"https://temp-api-v1.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",CPMM_CONFIG:"/main/cpmm-config",CLMM_DYNAMIC_CONFIG:"/main/clmm-dynamic-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://lite-api.jup.ag/tokens/v2/tag?query=verified",POOL_LIST:"/pools/info/list-v2",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/list-v2",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",OWNER_LOCK_POSITION:"/position/clmm-lock/{owner}",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee",CPMM_LOCK:"https://dynamic-ipfs.raydium.io/lock/cpmm/position",LAUNCH_AUTH_HOST:"https://launch-auth-v1.raydium.io",LAUNCH_COMMENT_HOST:"hhttps://launch-forum-v1.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1.raydium.io"},qo=D(O({},An),{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 Tu=_("Raydium_Api");import{PublicKey as Wl,SystemProgram as ql}from"@solana/web3.js";import{AccountLayout as Yl,createAssociatedTokenAccountIdempotentInstruction as Ql,TOKEN_PROGRAM_ID as Zl,TOKEN_2022_PROGRAM_ID as Hl}from"@solana/spl-token";import{PublicKey as qe,sendAndConfirmTransaction as zt,SystemProgram as Qo,Transaction as ot,TransactionMessage as it,VersionedTransaction as rt}from"@solana/web3.js";import Zo from"axios";import{PublicKey as Dt,AddressLookupTableAccount as De}from"@solana/web3.js";async function Wt({connection:i,address:e,cluster:n="mainnet"}){let o=await be(i,[...new Set(e.map(l=>l.toString()))].map(l=>new Dt(l))),a={};for(let l=0;l<e.length;l++){let m=o[l],s=e[l];if(!m)continue;let y=new De({key:s,state:De.deserialize(m.data)});a[s.toString()]=y,n==="devnet"?Ee[s.toString()]=y:_e[s.toString()]=y}return a}var _e={},qt=async i=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(_e[e])return _e;let n=new Dt(e),o=await i.getAccountInfo(n);return o&&(_e[e]=new De({key:n,state:De.deserialize(o.data)})),_e},Ee={},Ut=async i=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Ee[e])return Ee;let n=new Dt(e),o=await i.getAccountInfo(n);return o&&(Ee[e]=new De({key:n,state:De.deserialize(o.data)})),Ee};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 wn,Keypair as Tn,PublicKey as Uo,Transaction as hn,TransactionMessage as Go,VersionedTransaction as In}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as zo}from"@solana/spl-token";var kn=_("Raydium_txUtil"),Bn=1644;function At(i){let e=[],n=[];return i.microLamports&&(e.push(wn.setComputeUnitPrice({microLamports:i.microLamports})),n.push($.SetComputeUnitPrice)),i.units&&(e.push(wn.setComputeUnitLimit({units:i.units})),n.push($.SetComputeUnitLimit)),{instructions:e,instructionTypes:n}}async function We(i,e){var o,a;let n=e!=null?e:"confirmed";return(a=await((o=i.getLatestBlockhash)==null?void 0:o.call(i,{commitment:n})))==null?void 0:a.blockhash}async function wt(i,e){return i.getSignatureStatuses([e]),new Promise((n,o)=>{let a=setTimeout(o,6e4);i.onSignature(e,l=>{if(clearTimeout(a),!l.err){n("");return}o(Object.assign(l.err,{txId:e}))},"confirmed")})}function Gt(i,e){i.length<1&&kn.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&kn.logWithError(`no signers provided:, ${e.toString()}`);let n=new hn;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=e[0],n.add(...i);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<Bn}catch{return!1}}function ce(i,e){let[n,o]=Uo.findProgramAddressSync(i,e);return{publicKey:n,nonce:o}}function tt({instructions:i,payer:e,signers:n}){return Gt(i,[e,...n])}function nt({instructions:i,payer:e,lookupTableAddressAccount:n,recentBlockhash:o=Tn.generate().publicKey.toString()}){let l=new Go({payerKey:e,recentBlockhash:o,instructions:i}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new In(l).serialize()).toString("base64").length<Bn}catch{return!1}}var Xo=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i),Yo=i=>{let e=i.serialize({requireAllSignatures:!1,verifySignatures:!1});i instanceof In&&(e=Xo(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Se(i){let e=[];return i.forEach(n=>{n instanceof hn&&(n.recentBlockhash||(n.recentBlockhash=zo.toBase58()),n.feePayer||(n.feePayer=Tn.generate().publicKey)),e.push(Yo(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 Zo.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:n}=(o=e==null?void 0:e[15])!=null?o:{};if(!!n)return{units:6e5,microLamports:Math.min(Math.ceil(n*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:n,instructionTypes:o}=At(e);return this.instructions.unshift(...n),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(e){var n;return e?(this.endInstructions.push(Qo.transfer({fromPubkey:(n=e.feePayer)!=null?n:this.feePayer,toPubkey:new qe(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:m=[]}){return this.instructions.push(...e),this.endInstructions.push(...n),this.signers.push(...o),this.instructionTypes.push(...a),this.endInstructionTypes.push(...l),this.lookupTableAddress.push(...m.filter(s=>s!==qe.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 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 d;let{recentBlockHash:l,skipPreflight:m=!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]),(d=this.owner)!=null&&d.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:m}):await this.connection.sendRawTransaction(n.serialize(),{skipPreflight:m}),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:m}),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(d=>d.transaction.instructions.length>0),m=[a,...l.map(d=>d.transaction)],s=[this.signers,...l.map(d=>d.signers)],y=[...this.instructionTypes,...l.map(d=>d.instructionTypes).flat()];return(P=this.owner)!=null&&P.signer&&s.forEach(d=>{d.some(g=>g.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:m,signers:s,instructionTypes:y,execute:async d=>{var S;let{sequentially:g,onTxUpdate:k,skipTxCount:w=0,recentBlockHash:C,skipPreflight:T=!0}=d||{},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 m){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:m}}return{txIds:await await Promise.all(m.map(async x=>(x.recentBlockhash=h,await this.connection.sendRawTransaction(x.serialize(),{skipPreflight:T})))),signedTxs:m}}if(this.signAllTransactions){let x=m.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,L=null,V=null,ue=U=>{L!==null&&clearInterval(L),V!==null&&this.connection.removeSignatureListener(V);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&&(L=setInterval(async()=>{var U;if(R){clearInterval(L);return}try{let W=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:0});W&&(R=!0,clearInterval(L),ue({err:((U=W.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",B))}catch(W){R=!0,clearInterval(L),console.error("getTransaction timeout:",W,B)}},kt)),V=this.connection.onSignature(B,U=>{if(R){this.connection.removeSignatureListener(V);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,m=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 d=await Wt({connection:this.connection,address:P});for(let[h,S]of Object.entries(d))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:m||{}}}async buildV0MultiTx(e){var P;let{extraPreBuildData:n=[],buildProps:o}=e,{transaction:a}=await this.buildV0(o),l=n.filter(d=>d.builder.instructions.length>0),m=[a,...l.map(d=>d.transaction)],s=[this.signers,...l.map(d=>d.signers)],y=[...this.instructionTypes,...l.map(d=>d.instructionTypes).flat()];return(P=this.owner)!=null&&P.signer&&s.forEach(d=>{d.some(g=>g.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),m.forEach(async(d,g)=>{d.sign(s[g])}),{builder:this,transactions:m,signers:s,instructionTypes:y,buildProps:o,execute:async d=>{var T;let{sequentially:g,onTxUpdate:k,recentBlockHash:w,skipPreflight:C=!0}=d||{};if(w&&m.forEach(h=>h.message.recentBlockhash=w),Se(m),(T=this.owner)!=null&&T.isKeyPair){if(g){let h=[];for(let S of m){let x=await this.connection.sendTransaction(S,{skipPreflight:C});await wt(this.connection,x),h.push(x)}return{txIds:h,signedTxs:m}}return{txIds:await Promise.all(m.map(async h=>await this.connection.sendTransaction(h,{skipPreflight:C}))),signedTxs:m}}if(this.signAllTransactions){let h=await this.signAllTransactions(m);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=L=>{I!==null&&clearInterval(I),B!==null&&this.connection.removeSignatureListener(B);let V=x.findIndex(ue=>ue.txId===v);if(V>-1){if(x[V].status==="error"||x[V].status==="success")return;x[V].status=L.err?"error":"success"}k==null||k([...x]),L.err||F()};this.loopMultiTxStatus&&(I=setInterval(async()=>{var L;if(A){clearInterval(I);return}try{let V=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(A=!0,clearInterval(I),R({err:((L=V.meta)==null?void 0:L.err)||null}),console.log("tx status from getTransaction:",v))}catch(V){A=!0,clearInterval(I),console.error("getTransaction timeout:",V,v)}},kt)),B=this.connection.onSignature(v,L=>{if(A){this.connection.removeSignatureListener(B);return}A=!0,R(L)},"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:[]},m=this.signers.reduce((w,C)=>D(O({},w),{[C.publicKey.toBase58()]:C}),{}),s=[],y=[],P=[],d=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[d]&&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");d+=w===n[d]?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=>m[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=>m[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(L=>L.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=[],L=async()=>{if(!I[B])return;B<h&&(R.push({txId:"",status:"success",signedTx:I[B]}),T==null||T([...R]),B++,L());let V=await this.connection.sendRawTransaction(I[B].serialize(),{skipPreflight:x});R.push({txId:V,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===V);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||L()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var z;if(ue){clearInterval(U);return}try{let ie=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});ie&&(ue=!0,clearInterval(U),te({err:((z=ie.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",V))}catch(ie){ue=!0,clearInterval(U),console.error("getTransaction timeout:",ie,V)}},kt)),W=this.connection.onSignature(V,z=>{if(ue){this.connection.removeSignatureListener(W);return}ue=!0,te(z)},"confirmed"),this.connection.getSignatureStatus(V)};return await L(),{txIds:R.map(V=>V.txId),signedTxs:I}}else{let B=[];for(let R=0;R<I.length;R+=1){let L=await this.connection.sendRawTransaction(I[R].serialize(),{skipPreflight:x});B.push(L)}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:m=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])),d=[];for(let A of P)y[A]===void 0&&d.push(new qe(A));let g=await Wt({connection:this.connection,address:d});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)=>D(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<m&&(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 L of[...new Set(P)])y[L]!==void 0&&(R[L]=y[L]);if(n&&nt({instructions:[...k.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:y,recentBlockhash:w})){let L=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...k.instructions,...S]}).compileToV0Message(Object.values(y));T.push(new rt(L))}else{let L=new it({payerKey:this.feePayer,recentBlockhash:w,instructions:[...S]}).compileToV0Message(Object.values(y));T.push(new rt(L))}h.push(Array.from(new Set(S.map(L=>L.keys.filter(V=>V.isSigner).map(V=>V.pubkey.toString())).flat())).map(L=>C[L]).filter(L=>L!==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:L,skipPreflight:V=!0}=A||{};if(T.map(async(U,W)=>{h[W].length&&U.sign(h[W]),L&&(U.message.recentBlockhash=L)}),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:V});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:V}))),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:V});z.push({txId:we,status:"sent",signedTx:W[te]}),B==null||B([...z]),te++;let Ze=!1,ve=null,dt=null,un=Ie=>{ve!==null&&clearInterval(ve),dt!==null&&this.connection.removeSignatureListener(dt);let ke=z.findIndex(Ao=>Ao.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(Ze){clearInterval(ve);return}try{let ke=await this.connection.getTransaction(we,{commitment:"confirmed",maxSupportedTransactionVersion:0});ke&&(Ze=!0,clearInterval(ve),un({err:((Ie=ke.meta)==null?void 0:Ie.err)||null}),console.log("tx status from getTransaction:",we))}catch(ke){Ze=!0,clearInterval(ve),console.error("getTransaction timeout:",ke,we)}},kt)),dt=this.connection.onSignature(we,Ie=>{if(Ze){this.connection.removeSignatureListener(dt);return}Ze=!0,un(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:V});te.push(ie)}return{txIds:te,signedTxs:W}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}};var Xt=(...i)=>i.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 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 Pl,SystemProgram as wl}from"@solana/web3.js";import hl from"bn.js";import{createCloseAccountInstruction as Kl,createInitializeAccountInstruction as xl,createTransferInstruction as Cl,TOKEN_PROGRAM_ID as Rl}from"@solana/spl-token";import{Keypair as rl,PublicKey as al}from"@solana/web3.js";import cl from"bn.js";import{TOKEN_PROGRAM_ID as dl}from"@solana/spl-token";import{PublicKey as si}from"@solana/web3.js";import Rn,{isBN as Ln}from"bn.js";import{bits as Ho,BitStructure as lc,blob as jo,Blob as mc,cstr as dc,f32 as pc,f32be as fc,f64 as yc,f64be as bc,greedy as gc,Layout as $o,ns64 as Pc,ns64be as Ac,nu64 as wc,nu64be as kc,offset as Jo,s16 as Tc,s16be as hc,s24 as Ic,s24be as Bc,s32 as ei,s32be as Sc,s40 as Kc,s40be as xc,s48 as Cc,s48be as Rc,s8 as Lc,seq as ti,struct as Oc,Structure as ni,u16 as oi,u16be as Nc,u24 as Mc,u24be as Fc,u32 as ii,u32be as vc,u40 as Vc,u40be as _c,u48 as Ec,u48be as Dc,u8 as ri,UInt as ai,union as Wc,Union as qc,unionLayoutDiscriminator as Uc,utf8 as Gc}from"@solana/buffer-layout";var ht=$o,Sn=ni;var Yt=ai;var Kn=ri,Z=oi;var It=ii;var pe=ei;var xn=ti;var M=jo;var Qt=Ho,Cn=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 Rn(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 Rn(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=Qt(It(),!1),this._upper=Qt(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 p(i){return new Yt(1,i)}function Y(i){return new Yt(4,i)}function t(i){return new xe(8,!1,i)}function N(i){return new xe(16,!1,i)}function On(i){return new xe(1,!0,i)}function Ue(i){return new xe(8,!0,i)}function Nn(i){return new xe(16,!0,i)}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 r(i){return new at(M(32),e=>new si(e),e=>e.toBuffer(),i)}function le(i){return new at(Kn(),ui,ci,i)}function ui(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function ci(i){return i?1:0}function Mn(i,e){let n=It("length"),o=f([n,b(i,Cn(n,-n.span),"values")]);return new at(o,({values:a})=>a,a=>({values:a}),e)}var Zt=class extends Sn{decode(e,n){return super.decode(e,n)}};function f(i,e,n){return new Zt(i,e,n)}function b(i,e,n){let o,a=typeof e=="number"?e:Ln(e)?e.toNumber():new Proxy(e,{get(l,m){if(!o){let s=Reflect.get(l,"count");o=Ln(s)?s.toNumber():s,Reflect.set(l,"count",o)}return Reflect.get(l,m)},set(l,m,s){return m==="count"&&(o=s),Reflect.set(l,m,s)}});return xn(i,a,n)}var St=f([r("mint"),r("owner"),t("amount"),Y("delegateOption"),r("delegate"),p("state"),Y("isNativeOption"),t("isNative"),t("delegatedAmount"),Y("closeAuthorityOption"),r("closeAuthority")]);import{PublicKey as Bg,SystemProgram as Sg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as xg}from"@solana/spl-token";import{PublicKey as om}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as rm}from"@solana/spl-token";import{PublicKey as K}from"@solana/web3.js";var vn=new K("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Vn=new K("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),_n=new K("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Ht=new K("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),cm=new K("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),mi=new K("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),En=new K("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Dn=new K("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),lm=new K("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),di=new K("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Wn=new K("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),pi=new K("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),fi=new K("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),qn=new K("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),mm=new K("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),yi=new K("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),jt=new K("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),bi=new K("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),dm=new K("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),gi=new K("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Pi=new K("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Ai=new K("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),pm=new K("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),fm=new K("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),ym=new K("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),bm=new K("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),gm=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 _g from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as ny,TOKEN_2022_PROGRAM_ID as oy,TOKEN_PROGRAM_ID as iy}from"@solana/spl-token";import{PublicKey as ay}from"@solana/web3.js";import uy from"bn.js";import ly from"decimal.js";import{TOKEN_PROGRAM_ID as Lm}from"@solana/spl-token";import{PublicKey as Fm}from"@solana/web3.js";var wi=f([Y("mintAuthorityOption"),r("mintAuthority"),t("supply"),p("decimals"),p("isInitialized"),Y("freezeAuthorityOption"),r("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as Bf,TOKEN_2022_PROGRAM_ID as Sf,TOKEN_PROGRAM_ID as Kf}from"@solana/spl-token";import{Keypair as Rf,PublicKey as Lf,SystemProgram as Nf,TransactionInstruction as Mf}from"@solana/web3.js";import vf from"bn.js";import E from"bn.js";var J=new E(1).shln(64);var ki=new E(1).shln(128),$t=new E(1).shln(64).subn(1),Ti=new E(1).shln(128).subn(1),Ce=-443636,Re=443636,Le=new E("4295048016"),Oe=new E("79226673521066979257578248091"),Un=new E("59543866431248"),Gn=new E("184467440737095516"),zn=new E("15793534762490258745"),Xn=16,xt=512,se=60,Ym=new E("18446743708227953217"),Yn=[{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 st=3,Qn=100;var Zn=10,Hn=100,ze=14;var q=new E(0),Ne=new E(1),Qm=new E(-1);var Zm=new E("18446744073700000000");var hi=f([M(8),p("bump"),Z("index"),r("owner"),Y("protocolFeeRate"),Y("tradeFeeRate"),Z("tickSpacing"),Y("fundFeeRate"),b(Y(),1),r("fundOwner"),b(t(),3)]),Ii=f([Y("blockTimestamp"),Ue("tickCumulative"),b(t(),4)]),jn=f([M(8),le("initialized"),t("recentEpoch"),Z("observationIndex"),r("poolId"),b(Ii,Qn,"observations"),b(t(),4)]),Bi=f([Z("filterPeriod"),Z("decayPeriod"),Z("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),pe("tickSpacingIndexReference"),Y("volatilityReference"),Y("volatilityAccumulator"),t("lastUpdateTimestamp"),b(p(),46)]),Si=f([p("state"),t("openTime"),t("endTime"),t("lastUpdateTime"),N("emissionsPerSecondX64"),t("totalEmissioned"),t("claimed"),r("mint"),r("vault"),r("creator"),N("growthGlobalX64")]),Jt=f([M(8),p("bump"),r("configId"),r("creator"),r("mintA"),r("mintB"),r("vaultA"),r("vaultB"),r("observationId"),p("mintDecimalsA"),p("mintDecimalsB"),Z("tickSpacing"),N("liquidity"),N("sqrtPriceX64"),pe("tickCurrent"),Y(),N("feeGrowthGlobalX64A"),N("feeGrowthGlobalX64B"),t("protocolFeesTokenA"),t("protocolFeesTokenB"),b(N(),4),p("status"),p("feeOn"),M(6),b(Si,st,"rewardInfos"),M(8*16,"tickArrayBitmap"),b(t(),4),t("fundFeesTokenA"),t("fundFeesTokenB"),t("startTime"),t("recentEpoch"),Bi.replicate("dynamicFeeInfo"),b(t(),46)]),Ki=f([N("growthInsideLastX64"),t("rewardAmountOwed")]),xi=f([M(8),p("bump"),r("nftMint"),r("poolId"),pe("tickLower"),pe("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),b(Ki,st,"rewardInfos"),t("recentEpoch"),b(t(),7)]),Jm=f([M(8),p("bump"),r("poolId"),pe("tickLower"),pe("tickUpper"),N("liquidity"),N("feeGrowthInsideLastX64A"),N("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),b(N(),st,"rewardGrowthInside"),t("recentEpoch"),b(t(),7)]),Ci=f([pe("tick"),Nn("liquidityNet"),N("liquidityGross"),N("feeGrowthOutsideX64A"),N("feeGrowthOutsideX64B"),b(N(),st,"rewardGrowthsOutsideX64"),t("orderPhase"),t("ordersAmount"),t("partFilledOrdersRemaining"),N("unfilledRatioX64"),b(Y(),3)]),en=f([M(8),r("poolId"),pe("startTickIndex"),b(Ci,se,"ticks"),p("initializedTickCount"),t("recentEpoch"),b(p(),107)]),Ri=f([M(8),p("bump"),b(r(),Zn,"operationOwners"),b(r(),Hn,"whitelistMints")]),Li=f([M(8),r("poolId"),r("owner"),pe("tick"),le("zeroForOne"),t("orderPhase"),t("totalAmount"),t("filledAmount"),t("settleBase"),t("settleOutput"),t("openTime"),N("unfilledRatioX64"),b(t(),4)]),tn=f([M(8),r("poolId"),M(8*8*ze,"positiveTickArrayBitmap"),M(8*8*ze,"negativeTickArrayBitmap")]),ed=f([M(8),Z("index"),Z("filterPeriod"),Z("decayPeriod"),Z("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),b(t(),8)]),Oi=f([M(8),r("wallet"),p("nonceIndex"),t("orderNonce"),b(t(),4)]),td=f([t(),p("bump"),r("owner"),r("poolId"),r("positionId"),r("nftAccount"),b(t(),8)]),Ni=f([M(8),p("bump"),r("lockOwner"),r("poolId"),r("positionId"),r("nftAccount"),r("lockNftMint"),t("recentEpoch"),b(t(),8)]);import id from"bn.js";function $n(i){let e=Buffer.alloc(4);return e.writeInt32BE(i),e}var fd=Buffer.from("amm_config","utf8"),Fi=Buffer.from("pool","utf8"),vi=Buffer.from("pool_vault","utf8"),yd=Buffer.from("pool_reward_vault","utf8"),bd=Buffer.from("position","utf8"),Vi=Buffer.from("tick_array","utf8"),gd=Buffer.from("operation","utf8"),_i=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Pd=Buffer.from("observation","utf8"),Ad=Buffer.from("support_mint","utf8"),wd=Buffer.from("dynamic_fee_config","utf8"),kd=Buffer.from("permission","utf8");function ut(i,e,n){return ce([Vi,e.toBuffer(),$n(n)],i)}function Xe(i,e){return ce([_i,e.toBuffer()],i)}var Td=Buffer.from("locked_position","utf8");import{sha256 as $i}from"js-sha256";import Ei from"bn.js";import Sd from"decimal.js";function me(i,e,n){if(n.isZero())throw new Error("Division by zero");return i.mul(e).div(n)}function de(i,e,n){if(n.isZero())throw new Error("Division by zero");let o=i.mul(e),a=o.div(n);return o.mod(n).isZero()?a:a.addn(1)}var xd=new Ei(1).shln(256).subn(1);function Jn(i){return i.isZero()?-1:i.bitLength()-1}import Ld from"bn.js";import vd from"bn.js";import _d from"decimal.js";import{PublicKey as Ip}from"@solana/web3.js";import Sp from"bn.js";import{TOKEN_2022_PROGRAM_ID as Mp,TOKEN_PROGRAM_ID as Fp}from"@solana/spl-token";import Ep from"decimal.js";import pp from"bn.js";import ep from"bn.js";import Hp from"bn.js";function ee(i){let e=`global:${i}`;return Buffer.from($i.digest(e)).slice(0,8)}jn.span;var Gf=_("Raydium_Clmm"),zf={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 on}from"@solana/web3.js";var or=f([p("instruction")]),ir=f([p("instruction")]),rr=f([t("rewardState"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardLastUpdateTime"),t("totalReward"),t("totalRewardEmissioned"),t("rewardClaimed"),t("rewardPerSecond"),N("accRewardPerShare"),r("rewardVault"),r("rewardMint"),r("rewardSender"),t("rewardType"),b(t(),15,"padding")]),ar=f([t("state"),t("nonce"),r("lpVault"),r("rewardVault"),r(),r(),t(),t(),t("totalReward"),N("perShareReward"),t("lastSlot"),t("perSlotReward")]),sr=f([t("state"),t("nonce"),r("lpVault"),r("rewardVaultA"),t("totalRewardA"),N("perShareRewardA"),t("perSlotRewardA"),p("option"),r("rewardVaultB"),M(7),t("totalRewardB"),N("perShareRewardB"),t("perSlotRewardB"),t("lastSlot"),r()]),ur=f([t(),t("state"),t("nonce"),t("validRewardTokenNum"),N("rewardMultiplier"),t("rewardPeriodMax"),t("rewardPeriodMin"),t("rewardPeriodExtend"),r("lpMint"),r("lpVault"),b(rr,5,"rewardInfos"),r("creator"),r(),b(t(),32,"padding")]),cr=new Proxy(ar,{get(i,e,n){return e==="decode"?(...o)=>{let a=i.decode(...o);return D(O({},a),{version:3,rewardInfos:[{rewardVault:a.rewardVault,totalReward:a.totalReward,perSlotReward:a.perSlotReward,perShareReward:a.perShareReward}]})}:Reflect.get(i,e,n)}}),lr=new Proxy(sr,{get(i,e,n){return e==="decode"?(...o)=>{let a=i.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(i,e,n)}}),io=new Proxy(ur,{get(i,e,n){return e==="decode"?(...o)=>{let a=i.decode(...o);return D(O({},a),{version:6,rewardInfos:a.rewardInfos.map(l=>{var m;return D(O({},l),{rewardType:((m=Object.entries(mt).find(s=>String(s[1])===l.rewardType.toString()))!=null?m:["Standard SPL"])[0]})})})}:Reflect.get(i,e,n)}}),mr=f([t("isSet"),t("rewardPerSecond"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardType")]),dr=f([p("instruction"),t("nonce"),b(mr,5,"rewardTimeInfo")]),pr=f([p("instruction"),t("rewardReopenTime"),t("rewardEndTime"),t("rewardPerSecond")]),fr=f([p("instruction"),t("isSet"),t("rewardPerSecond"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardType")]),Uy=f([t("state"),r("id"),r("owner"),t("deposited"),b(t(),1,"rewardDebts")]),ro=f([t("state"),r("id"),r("owner"),t("deposited"),b(N(),1,"rewardDebts"),t(""),t("voteLockedBalance"),b(t(),15)]),Gy=f([t("state"),r("id"),r("owner"),t("deposited"),b(t(),2,"rewardDebts")]),yr=f([t("state"),r("id"),r("owner"),t("deposited"),b(N(),2,"rewardDebts"),b(t(),17)]),br=f([t(),t("state"),r("id"),r("owner"),t("deposited"),b(N(),5,"rewardDebts"),b(t(),16)]),gr=f([p("instruction"),t("amount")]),Pr=f([r("mint"),r("grantAuthority"),t("baselineVoteWeightScaledFactor"),t("maxExtraLockupVoteWeightScaledFactor"),t("lockupSaturationSecs"),On("digitShift"),b(p(),7,"reserved1"),b(t(),7,"reserved2")]),Ar=f([M(8),r("governanceProgramId"),r("realm"),r("realmGoverningTokenMint"),r("realmAuthority"),b(p(),32,"reserved1"),b(Pr,4,"votingMints"),Ue("timeOffset"),p("bump"),b(p(),7,"reserved2"),b(t(),11,"reserved3")]),wr=f([Ue("startTime"),Ue("endTime"),p("kind"),b(p(),15,"reserved")]),kr=f([b(wr,1,"lockup"),t("amountDeposited_native"),t("amountInitiallyLockedNative"),le("isUsed"),le("allowClawback"),p("votingMintConfigIdx"),b(p(),29,"reserved")]),Tr=f([M(8),r("voterAuthority"),r("registrar"),b(kr,32,"deposits"),p("voterBump"),p("voterWweightRecordBump"),b(p(),94,"reserved")]);import{NATIVE_MINT as Jy}from"@solana/spl-token";var eb=_("Raydium_farm_config"),hr=new on("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ir=new on("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var tb=new on("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var mt={"Standard SPL":0,"Option tokens":1},ao={[vn.toString()]:3,[Vn.toString()]:4,[_n.toString()]:5,[Ht.toString()]:6,[he.FARM_PROGRAM_ID_V3.toString()]:3,[he.FARM_PROGRAM_ID_V4.toString()]:4,[he.FARM_PROGRAM_ID_V5.toString()]:5,[he.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as 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 Qb,createAssociatedTokenAccountIdempotentInstruction as Zb,TOKEN_PROGRAM_ID as Hb}from"@solana/spl-token";import bb from"bn.js";import{PublicKey as sb}from"@solana/web3.js";import cb from"bn.js";var Cb=_("Raydium.farm.util");var sg=_("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 Zg 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 $g from"bn.js";import uo from"bn.js";var Or=new uo(25),Nr=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 Mr=f([p("instruction"),t("amountIn"),t("minAmountOut")]),Fr=f([p("instruction"),t("maxAmountIn"),t("amountOut")]),bP=f([p("instruction"),p("nonce")]),vr=f([p("instruction"),p("nonce"),t("startTime")]),co=f([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"),r("baseVault"),r("quoteVault"),r("baseMint"),r("quoteMint"),r("lpMint"),r("openOrders"),r("marketId"),r("marketProgramId"),r("targetOrders"),r("withdrawQueue"),r("lpVault"),r("owner"),t("lpReserve"),b(t(),3,"padding")]),gP=f([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"),r("baseVault"),r("quoteVault"),r("baseMint"),r("quoteMint"),r("lpMint"),r("modelDataAccount"),r("openOrders"),r("marketId"),r("marketProgramId"),r("targetOrders"),r("owner"),b(t(),64,"padding")]),Vr=f([p("instruction"),t("baseAmountIn"),t("quoteAmountIn"),t("fixedSide"),t("otherAmountMin")]),_r=f([p("instruction"),t("lpAmount"),t("baseAmountMin"),t("quoteAmountMin")]);var Er=f([t("fee")]);var VP=_("Raydium_liquidity_instruction");var Dr=5e4,Wr=f([t("x"),t("y"),t("price")]),WP=f([t("accountType"),t("status"),t("multiplier"),t("validDataCount"),b(Wr,Dr,"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 QP=_("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 qr(i="accountFlags"){let e=new Bt(i);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var Ur=f([M(5),qr("accountFlags"),r("ownAddress"),t("vaultSignerNonce"),r("baseMint"),r("quoteMint"),r("baseVault"),t("baseDepositsTotal"),t("baseFeesAccrued"),r("quoteVault"),t("quoteDepositsTotal"),t("quoteFeesAccrued"),t("quoteDustThreshold"),r("requestQueue"),r("eventQueue"),r("bids"),r("asks"),t("baseLotSize"),t("quoteLotSize"),t("feeRateBps"),t("referrerRebatesAccrued"),M(7)]);import{PublicKey as oT}from"@solana/web3.js";import{AccountLayout as rT,NATIVE_MINT as aT,TOKEN_2022_PROGRAM_ID as sT,TOKEN_PROGRAM_ID as uT,createAssociatedTokenAccountIdempotentInstruction as cT}from"@solana/spl-token";import nk from"bn.js";import Hr from"bn.js";var qw=new Hr(0);import Qw from"bn.js";import jr from"bn.js";var Ae=new jr(1e6);import gT from"bn.js";import AT from"decimal.js";import{PublicKey as wk,TransactionInstruction as kk,Keypair as hk,SystemProgram as Ik}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Sk,TOKEN_2022_PROGRAM_ID as Kk,TOKEN_PROGRAM_ID as xk}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");var yk=Buffer.from("locked_liquidity","utf8");var Fk=_("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 ea=f([M(8),p("bump"),le("disableCreatePool"),Z("index"),t("tradeFeeRate"),t("protocolFeeRate"),t("fundFeeRate"),t("createPoolFee"),r("protocolOwner"),r("fundOwner"),t("creatorFeeRate"),b(t(),15)]),lo=f([M(8),r("configId"),r("poolCreator"),r("vaultA"),r("vaultB"),r("mintLp"),r("mintA"),r("mintB"),r("mintProgramA"),r("mintProgramB"),r("observationId"),p("bump"),p("status"),p("lpDecimals"),p("mintDecimalA"),p("mintDecimalB"),t("lpAmount"),t("protocolFeesMintA"),t("protocolFeesMintB"),t("fundFeesMintA"),t("fundFeesMintB"),t("openTime"),t("epoch"),p("feeOn"),le("enableCreatorFee"),b(p(),6),t("creatorFeesMintA"),t("creatorFeesMintB"),b(t(),28)]),Ek=f([M(8),r("configId"),b(t(),30)]);import{PublicKey as lK,SystemProgram as mK}from"@solana/web3.js";import{createTransferInstruction as pK,TOKEN_PROGRAM_ID as fK,TOKEN_2022_PROGRAM_ID as yK,createAssociatedTokenAccountIdempotentInstruction as bK,createSyncNativeInstruction as PK,createTransferCheckedInstruction as AK}from"@solana/spl-token";import ga from"bn.js";import TK from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Ch,TOKEN_2022_PROGRAM_ID as Rh,TOKEN_PROGRAM_ID as Lh}from"@solana/spl-token";import{SystemProgram as Fh,TransactionInstruction as vh}from"@solana/web3.js";import sa from"bn.js";var oa=f([t(),t("epoch"),p("curveType"),Z("index"),t("migrateFee"),t("tradeFeeRate"),t("maxShareFeeRate"),t("minSupplyA"),t("maxLockRate"),t("minSellRateA"),t("minMigrateRateA"),t("minFundRaisingB"),r("mintB"),r("protocolFeeOwner"),r("migrateFeeOwner"),r("migrateToAmmWallet"),r("migrateToCpmmWallet"),b(t(),16)]),ia=f([t("totalLockedAmount"),t("cliffPeriod"),t("unlockPeriod"),t("startTime"),t("totalAllocatedShare")]),ra=f([t(),t("epoch"),p("bump"),p("status"),p("mintDecimalsA"),p("mintDecimalsB"),p("migrateType"),t("supply"),t("totalSellA"),t("virtualA"),t("virtualB"),t("realA"),t("realB"),t("totalFundRaisingB"),t("protocolFee"),t("platformFee"),t("migrateFee"),ia.replicate("vestingSchedule"),r("configId"),r("platformId"),r("mintA"),r("mintB"),r("vaultA"),r("vaultB"),r("creator"),p("mintProgramFlag"),p("cpmmCreatorFeeOn"),t("platformVestingShare"),b(p(),54)]),lh=f([t(),t("epoch"),r("poolId"),r("beneficiary"),t("claimedAmount"),t("tokenShareAmount"),b(t(),8)]),po=f([p("migrateType"),p("migrateCpmmFeeOn"),t("supply"),t("totalSellA"),t("totalFundRaisingB"),t("totalLockedAmount"),t("cliffPeriod"),t("unlockPeriod")]),aa=f([t("epoch"),p("index"),r("configId"),po.replicate("bondingCurveParam"),b(t(),50)]),fo=f([t(),t("epoch"),r("platformClaimFeeWallet"),r("platformLockNftWallet"),t("platformScale"),t("creatorScale"),t("burnScale"),t("feeRate"),b(p(),64,"name"),b(p(),256,"web"),b(p(),256,"img"),r("cpConfigId"),t("creatorFeeRate"),r("transferFeeExtensionAuth"),r("platformVestingWallet"),t("platformVestingScale"),r("platformCpCreator"),p("restrictGlobalConfig"),b(p(),107),Mn(aa,"platformCurve")]);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");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]),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 Wh=new sa("18446744073709551615");import{TOKEN_2022_PROGRAM_ID as zh,TOKEN_PROGRAM_ID as Xh}from"@solana/spl-token";import Hh from"bn.js";import $h from"decimal.js";import RI from"bn.js";import OI from"decimal.js";import iI from"bn.js";import aI from"decimal.js";import bI from"bn.js";import PI from"decimal.js";import go from"bn.js";import an from"decimal.js";var Lt=class{static _multipler(e){return new an(10).pow(e)}static getPrice({priceX64:e,decimalA:n,decimalB:o}){return new an(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 go(a.mul(this._Q64).toFixed(0))}};Lt._Q64=new an(new go(1).shln(64).toString());import{NATIVE_MINT as DB,TOKEN_2022_PROGRAM_ID as WB,TOKEN_PROGRAM_ID as qB,createAssociatedTokenAccountIdempotentInstruction as GB,createSyncNativeInstruction as zB,getTransferFeeConfig as XB,unpackMint as YB}from"@solana/spl-token";import H from"bn.js";import{PublicKey as fa,SystemProgram as HB}from"@solana/web3.js";import oS from"decimal.js";var iS={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 fa("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new H(0),cliffPeriod:new H(0),unlockPeriod:new H(0),startTime:new H(0),totalAllocatedShare:new H(0)}},rS=new H(1e4);var ya={[En.toBase58()]:3};var ba=f([M(5),M(8),r("ownAddress"),t("vaultSignerNonce"),r("baseMint"),r("quoteMint"),r("baseVault"),t("baseDepositsTotal"),t("baseFeesAccrued"),r("quoteVault"),t("quoteDepositsTotal"),t("quoteFeesAccrued"),t("quoteDustThreshold"),r("requestQueue"),r("eventQueue"),r("bids"),r("asks"),t("baseLotSize"),t("quoteLotSize"),t("feeRateBps"),t("referrerRebatesAccrued"),M(7)]);import{PublicKey as xS}from"@solana/web3.js";var NS=_("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as qS,TOKEN_2022_PROGRAM_ID as US,TOKEN_PROGRAM_ID as GS}from"@solana/spl-token";import{PublicKey as XS,SystemProgram as YS,TransactionInstruction as QS}from"@solana/web3.js";import HS from"bn.js";var $K=new ga(0);import{PublicKey as Pa,Transaction as sn,TransactionInstruction as Aa}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as wa}from"@solana/spl-token";import Po 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 Po(a).toArray())],e)}static async getAllInfo({connection:e,programId:n,poolIds:o,wallet:a,chainTime:l}){if(o.length===0)return[];let m=o.map(d=>oe.getPdaPoolId(n,d).publicKey),s=[];for(let d=0;d<oe.VERSION_PROJECT.length;d++)s.push(...m.map(g=>oe.getPdaOwnerId(n,g,a,d).publicKey));let y=await be(e,[...m,...s]),P=[];for(let d=0;d<y.length;d++){let g=Math.floor(d/o.length),k=d%o.length,w=m[k],C=s[d],T=y[k],h=y[o.length+d];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 Po(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,L)=>({mintAddress:R.mintAddress,mintVault:R.mintVault,mintDecimals:R.mintDecimals,perLpLoss:R.perLpLoss,debtAmount:x.tokenInfo[L].debtAmount.add(x.tokenInfo[L].claimedAmount)}))})}return P}async makeClaimTransaction({poolInfo:e,ownerInfo:n,feePayer:o}){n.wallet||this.scope.checkOwner();let a=this.createTxBuilder(o),l=n.wallet||this.scope.ownerPubKey,m=[];for(let P of e.tokenInfo){let{account:d,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),m.push(d)}a.addInstruction({instructions:[oe.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:l,ownerPda:e.ownerAccountId,claimAddress:m}})]});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,m={};for(let d of e){let g=[];for(let k of d.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&&(m[k.mintAddress.toString()]=w,g.push(w))}a.addInstruction({instructions:[oe.makeClaimInstruction({programId:d.programId,poolInfo:d,ownerInfo:{wallet:l,ownerPda:d.ownerAccountId,claimAddress:g}})]})}let{transaction:s,signers:y}=a.build(),P=a.allInstructions;return Gt(P,[l,...y.map(d=>d.publicKey)])?[{transaction:s,signer:y}]:[{transaction:new sn().add(...P.slice(0,a.AllTxData.instructions.length-1)),signer:y},{transaction:new sn().add(...P.slice(a.AllTxData.instructions.length-1)),signer:[]},{transaction:new sn().add(...a.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:n,ownerInfo:o}){let a=f([]),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:wa,isSigner:!1,isWritable:!1}],m=Buffer.alloc(a.span);a.encode({},m);let s=Buffer.from([10,66,208,184,161,6,191,98,...m]);return new Aa({keys:l,programId:e,data:s})}},fe=oe;fe.CLAIMED_NUM=3,fe.POOL_LAYOUT=f([M(8),p("bump"),p("status"),t("openTime"),t("endTime"),r("ammId"),b(f([p("mintDecimals"),r("mintAddress"),r("mintVault"),t("perLpLoss"),t("totalClaimedAmount")]),oe.CLAIMED_NUM,"tokenInfo"),b(t(),10,"padding")]),fe.OWNER_LAYOUT=f([M(8),p("bump"),p("version"),r("poolId"),r("owner"),t("lpAmount"),b(f([r("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 Pa(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 yx}from"@solana/web3.js";import{getTransferFeeConfig as gx,MintLayout as Px,TOKEN_2022_PROGRAM_ID as Ax,TOKEN_PROGRAM_ID as wx,unpackMint as kx}from"@solana/spl-token";var ZC=new Fe(2),HC=new Fe(3),jC=new Fe(5),Mo=new Fe(10),$C=new Fe(100),JC=new Fe(1e3),eR=new Fe(1e4);function Mt(i,e=1,n=[]){let o=[...i];if(e<=0)return n;for(;o.length;)n.push(o.splice(0,e));return n}import j from"bn.js";import Qe from"decimal.js";var ct=class{static scanLinearBitmap({bitmap:e,tickSpacing:n,offset:o,checkInfo:a}){let l=[],m=e.length*8,s=0,y=m-1;if(a){let g=a.tick/(n*se)-o;a.valueType==="gte"?s=Math.max(0,Math.ceil(g)):y=Math.min(m-1,Math.floor(g))}if(s>y)return l;let P=Math.floor(s/8),d=Math.floor(y/8);for(let g=P;g<=d;g++){if(!e[g])continue;let k=g===P?s%8:0,w=g===d?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 m=(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 d=0;d<512;d++){let g=y*512+d;if(g>m)break e;if(g<s)continue;let k=P*64+Math.floor(d/8);if(!e[k]){d=Math.floor(d/8)*8+7;continue}if(e[k]&1<<d%8){let w=(y*512+d-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:m}=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,m)}if(a.type==="zeroForOne"){let s={tick:l,valueType:"lte"},y=[()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:o.positiveTickArrayBitmap,checkInfo:s}).sort((P,d)=>d-P),()=>this.findPoolBitmap({tickSpacing:e,bitmap:n,checkInfo:s}).sort((P,d)=>d-P),()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:o.negativeTickArrayBitmap,checkInfo:s}).sort((P,d)=>d-P)];return this.collectUntil(y,m)}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(Q.isInitialized({data:e.ticks[o]}))return e.ticks[o]}else for(let o=0;o<e.ticks.length;o++)if(Q.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 m=Math.floor((n-e.startTickIndex)/o);if(a){for(let s=m;s>=0;s--)if(Q.isInitialized({data:e.ticks[s]}))return e.ticks[s]}else for(let s=m+1;s<se;s++)if(Q.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}},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>=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=Q.getPriceAtTick(n,!1);return me(e,a,J)}else{let a=Q.getPriceAtTick(n,!0);return me(e,J,a)}}static getLimitOrderInput({amountOut:e,tick:n,zeroForOne:o}){if(o){let a=Q.getPriceAtTick(n,!0);return de(e,a,J)}else{let a=Q.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:m}){let s={amountIn:q,amountOut:q,ammFeeAmount:q},y=this.limitOrderUnfilledAmount({tick:e});if(n.isZero()||y.isZero())return s;if(a)m?(s.ammFeeAmount=de(n,new j(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}),m&&(s.ammFeeAmount=de(s.amountIn,new j(l),Ae.sub(new j(l)))));else{let g=j.min(n,y);m?s.amountOut=g:s.amountOut=j.min(de(g,Ae,Ae.sub(new j(l))),y),s.amountIn=this.getLimitOrderInput({amountOut:s.amountOut,tick:e.tick,zeroForOne:!o}),m&&(s.ammFeeAmount=de(s.amountIn,new j(l),Ae.sub(new j(l))))}let P=q;e.partFilledOrdersRemaining.gt(q)&&(P=j.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 d=s.amountOut.sub(P);if(d.gt(q)){if(!e.partFilledOrdersRemaining.isZero())throw Error("!tick.partFilledOrdersRemaining.isZero()");if(e.ordersAmount.lt(d))throw Error("InvalidLimitOrderAmount");e.orderPhase=e.orderPhase.add(Ne),e.unfilledRatioX64=me(J,e.ordersAmount.sub(d),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(d),e.ordersAmount=q}return m||(s.ammFeeAmount=de(s.amountOut,new j(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 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 m=new j(0),s=new j(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&&(m=m.add(s)),s=s.shrn(1)}let y=m.shrn(32),d=a.add(y).mul(Un),g=d.sub(Gn),k=d.add(zn),w=this.signedShrn64(g),C=this.signedShrn64(k);return w===C?w:Q.getSqrtPriceAtTick(C).lte(e)?C: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,m=20,s=new j(10).pow(new j(m)),y=a.mul(s),P=new j(1).shln(128),g=y.div(P).toString();for(;g.length<=m;)g="0"+g;let k=g.slice(0,-m),w=g.slice(-m),C=k+"."+w;return new Qe(C).mul(new Qe(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 Qe(1.0001).log()).floor();return Math.max(Ce,Math.min(Re,l.toNumber()))}static priceToSqrtPriceX64(e,n,o){let m=e.div(Math.pow(10,n-o)).sqrt().mul(new Qe(2).pow(64));return new j(m.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 m=e.clamp(1/10**Math.max(n,o),Number.MAX_SAFE_INTEGER);a||(m=new Qe(1).div(m));let s=Q.toTickIndex(Q.priceToTick(m,n,o),l),y=Q.tickToPrice(s,n,o);return{price:a?y:new Qe(1).div(y),tick:s}}};async function tr(i,e,n,o,a,l,m=!0){let s=[],y=Xe(i,n).publicKey,P=await e.getAccountInfo(y),d=ct.findTickArrayAddress({programId:i,poolId:n,poolBitmap:l,tickArrayBitmap:tn.decode(P.data),tickSpacing:a,findInfo:{type:m?"zeroForOne":"oneForZero",tickArrayCurrent:o}});return(await be(e,d)).forEach((k,w)=>{k&&s.push({address:d[w],value:en.decode(k.data)})}),s}export{ct as TickArrayBitmapUtil,Me as TickArrayUtil,Q as TickUtil,tr as fetchTickArrays};
//# sourceMappingURL=tickArrayUtil.mjs.map