UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

2 lines 78.2 kB
var bo=Object.defineProperty,go=Object.defineProperties;var Po=Object.getOwnPropertyDescriptors;var st=Object.getOwnPropertySymbols;var sn=Object.prototype.hasOwnProperty,un=Object.prototype.propertyIsEnumerable;var an=(r,e,n)=>e in r?bo(r,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):r[e]=n,O=(r,e)=>{for(var n in e||(e={}))sn.call(e,n)&&an(r,n,e[n]);if(st)for(var n of st(e))un.call(e,n)&&an(r,n,e[n]);return r},V=(r,e)=>go(r,Po(e));var pe=(r,e)=>{var n={};for(var o in r)sn.call(r,o)&&e.indexOf(o)<0&&(n[o]=r[o]);if(r!=null&&st)for(var o of st(r))e.indexOf(o)<0&&un.call(r,o)&&(n[o]=r[o]);return n};import{PublicKey as ko}from"@solana/web3.js";import{get as cn,set as Ao}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}},ln={},wo={};function E(r){let e=cn(ln,r);if(!e){let n=cn(wo,r);e=new Kt({name:r,logLevel:n}),Ao(ln,r,e)}return e}import{MINT_SIZE as Ca,TOKEN_PROGRAM_ID as Ra,getTransferFeeConfig as La,unpackMint as Oa}from"@solana/spl-token";var xt=E("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:L,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:L,lamports:P,owner:new ko(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 aR from"decimal.js";import Co from"big.js";import Qa from"bn.js";import To from"toformat";var ho=To,Ye=ho;import ct from"big.js";import Bo from"bn.js";import So from"decimal.js-light";import He from"bn.js";var mn=9007199254740991;function re(r){let e=E("Raydium_parseBigNumberish");if(r instanceof He)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new He(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=mn||r<=-mn)&&e.logWithError(`BigNumberish number overflow: ${r}`),new He(String(r))):typeof r=="bigint"?new He(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new He(0))}var ut=E("module/fraction"),Rt=Ye(ct),Qe=Ye(So),Ko={[0]:Qe.ROUND_DOWN,[1]:Qe.ROUND_HALF_UP,[2]:Qe.ROUND_UP},xo={[0]:ct.roundDown,[1]:ct.roundHalfUp,[2]:ct.roundUp},G=class{constructor(e,n=new Bo(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.`),Qe.set({precision:e+1,rounding:Ko[o]});let a=new Qe(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=xo[o]||1,new Rt(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,n)}isZero(){return this.numerator.isZero()}};var is=E("Raydium_amount"),rs=Ye(Co);import{PublicKey as Lo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as dn}from"@solana/spl-token";var lt={chainId:101,address:Lo.default.toBase58(),programId:dn.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:dn.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 pn,SYSVAR_RENT_PUBKEY as Oo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as No}from"@solana/spl-token";function Ne({pubkey:r,isSigner:e=!1,isWritable:n=!0}){return{pubkey:r,isWritable:n,isSigner:e}}var Mo=[Ne({pubkey:No,isWritable:!1}),Ne({pubkey:pn.programId,isWritable:!1}),Ne({pubkey:Oo,isWritable:!1})];function fn({publicKey:r,transformSol:e}){let n=yn(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 yn(r){try{return new X(r)}catch{return r}}var Lt=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ze=new X("SysvarRent111111111111111111111111111111111"),ps=new X("SysvarC1ock11111111111111111111111111111111"),mt=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Fo=new X("Sysvar1nstructions1111111111111111111111111"),vo=pn.programId,fs=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ys=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),bs=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),gs=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Ps=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),As=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),ws=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),ks=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Ts=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),hs=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Is=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:fn({publicKey:e}),this.isToken2022=p}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ne=Nt;ne.WSOL=new Nt(V(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 vs=new G(new _o(100));var qs=E("Raydium_price");import{merge as uC}from"lodash";import $s from"axios";var bn={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",MONITOR_BASE_HOST:"https://monitor.raydium.io",SERVICE_1_BASE_HOST:"https://service-v1.raydium.io",TEMP_HOST:"https://temp-api-v1.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",CPMM_CONFIG:"/main/cpmm-config",CLMM_DYNAMIC_CONFIG:"/main/clmm-dynamic-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://lite-api.jup.ag/tokens/v2/tag?query=verified",POOL_LIST:"/pools/info/list-v2",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/list-v2",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",OWNER_LOCK_POSITION:"/position/clmm-lock/{owner}",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee",CPMM_LOCK:"https://dynamic-ipfs.raydium.io/lock/cpmm/position",LAUNCH_AUTH_HOST:"https://launch-auth-v1.raydium.io",LAUNCH_COMMENT_HOST:"hhttps://launch-forum-v1.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1.raydium.io"},Vo=V(O({},bn),{BASE_HOST:"https://api-v3-devnet.raydium.io",OWNER_BASE_HOST:"https://owner-v1-devnet.raydium.io",SWAP_HOST:"https://transaction-v1-devnet.raydium.io",CPMM_LOCK:"https://dynamic-ipfs-devnet.raydium.io/lock/cpmm/position",TEMP_HOST:"https://temp-api-v1-devnet.raydium.io",LAUNCH_AUTH_HOST:"https://launch-auth-v1-devnet.raydium.io",LAUNCH_COMMENT_HOST:"https://launch-forum-v1-devnet.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1-devnet.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1-devnet.raydium.io"});var wu=E("Raydium_Api");import{PublicKey as El,SystemProgram as Dl}from"@solana/web3.js";import{AccountLayout as zl,createAssociatedTokenAccountIdempotentInstruction as Xl,TOKEN_PROGRAM_ID as Yl,TOKEN_2022_PROGRAM_ID as Hl}from"@solana/spl-token";import{PublicKey as Ve,sendAndConfirmTransaction as Dt,SystemProgram as Go,Transaction as Je,TransactionMessage as et,VersionedTransaction as tt}from"@solana/web3.js";import zo 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={},_t=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={},Vt=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 j={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{ComputeBudgetProgram as gn,Keypair as An,PublicKey as Eo,Transaction as wn,TransactionMessage as Do,VersionedTransaction as kn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Wo}from"@solana/spl-token";var Pn=E("Raydium_txUtil"),Tn=1644;function pt(r){let e=[],n=[];return r.microLamports&&(e.push(gn.setComputeUnitPrice({microLamports:r.microLamports})),n.push(j.SetComputeUnitPrice)),r.units&&(e.push(gn.setComputeUnitLimit({units:r.units})),n.push(j.SetComputeUnitLimit)),{instructions:e,instructionTypes:n}}async function _e(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&&Pn.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&Pn.logWithError(`no signers provided:, ${e.toString()}`);let n=new wn;n.recentBlockhash="11111111111111111111111111111111",n.feePayer=e[0],n.add(...r);try{return Buffer.from(n.serialize({verifySignatures:!1})).toString("base64").length<Tn}catch{return!1}}function ye(r,e){let[n,o]=Eo.findProgramAddressSync(r,e);return{publicKey:n,nonce:o}}function $e({instructions:r,payer:e,signers:n}){return Et(r,[e,...n])}function je({instructions:r,payer:e,lookupTableAddressAccount:n,recentBlockhash:o=An.generate().publicKey.toString()}){let l=new Do({payerKey:e,recentBlockhash:o,instructions:r}).compileToV0Message(Object.values(n!=null?n:{}));try{return Buffer.from(new kn(l).serialize()).toString("base64").length<Tn}catch{return!1}}var qo=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r),Uo=r=>{let e=r.serialize({requireAllSignatures:!1,verifySignatures:!1});r instanceof kn&&(e=qo(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 wn&&(n.recentBlockhash||(n.recentBlockhash=Wo.toBase58()),n.feePayer||(n.feePayer=An.generate().publicKey)),e.push(Uo(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 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}=pt(e);return this.instructions.unshift(...n),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(e){var n;return e?(this.endInstructions.push(Go.transfer({fromPubkey:(n=e.feePayer)!=null?n:this.feePayer,toPubkey:new Ve(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(j.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:n}){try{let o=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(o))return;n&&this.instructions.unshift(...n)}catch{n&&this.instructions.unshift(...n)}}addInstruction({instructions:e=[],endInstructions:n=[],signers:o=[],instructionTypes:a=[],endInstructionTypes:l=[],lookupTableAddress:p=[]}){return this.instructions.push(...e),this.endInstructions.push(...n),this.signers.push(...o),this.instructionTypes.push(...a),this.endInstructionTypes.push(...l),this.lookupTableAddress.push(...p.filter(c=>c!==Ve.default.toString())),this}async versionBuild({txVersion:e,extInfo:n,lookupTableAddress:o}){return e===0?await this.buildV0(V(O({},n||{}),{lookupTableAddress:o})):this.build(n)}build(e){var o;let n=new 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 _e(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:L,skipPreflight:P=!0}=y||{},k=L!=null?L:await _e(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,N=null,_=null,se=U=>{N!==null&&clearInterval(N),_!==null&&this.connection.removeSignatureListener(_);let W=g.findIndex(te=>te.txId===I);if(W>-1){if(g[W].status==="error"||g[W].status==="success")return;g[W].status=U.err?"error":"success"}x==null||x([...g]),U.err||h()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var U;if(C){clearInterval(N);return}try{let W=await this.connection.getTransaction(I,{commitment:"confirmed",maxSupportedTransactionVersion:1});W&&(C=!0,clearInterval(N),se({err:((U=W.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",I))}catch(W){C=!0,clearInterval(N),console.error("getTransaction timeout:",W,I)}},yt)),_=this.connection.onSignature(I,U=>{if(C){this.connection.removeSignatureListener(_);return}C=!0,se(U)},"confirmed"),this.connection.getSignatureStatus(I)};return await h(),{txIds:g.map(I=>I.txId),signedTxs:F}}else{let v=[];for(let g=0;g<F.length;g+=1){let h=await this.connection.sendRawTransaction(F[g].serialize(),{skipPreflight: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 L=e||{},{lookupTableCache:n={},lookupTableAddress:o=[],forerunCreate:a,recentBlockhash:l}=L,p=pe(L,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),c=O(O({},this.cluster==="devnet"?await Vt(this.connection):await _t(this.connection)),n),b=Array.from(new Set([...o,...this.lookupTableAddress])),A=[];for(let k of b)c[k]===void 0&&A.push(new Ve(k));let y=await vt({connection:this.connection,address:A});for(let[k,B]of Object.entries(y))c[k]=B;let T=a?Ve.default.toBase58():l!=null?l:await _e(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:L=!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:L});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:L}))),signedTxs:p}}if(this.signAllTransactions){let k=await this.signAllTransactions(p);if(T){let B=0,K=[],F=async()=>{if(!k[B])return;let v=await this.connection.sendTransaction(k[B],{skipPreflight:L});K.push({txId:v,status:"sent",signedTx:k[B]}),x==null||x([...K]),B++;let g=!1,h=null,I=null,C=N=>{h!==null&&clearInterval(h),I!==null&&this.connection.removeSignatureListener(I);let _=K.findIndex(se=>se.txId===v);if(_>-1){if(K[_].status==="error"||K[_].status==="success")return;K[_].status=N.err?"error":"success"}x==null||x([...K]),N.err||F()};this.loopMultiTxStatus&&(h=setInterval(async()=>{var N;if(g){clearInterval(h);return}try{let _=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:1});_&&(g=!0,clearInterval(h),C({err:((N=_.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",v))}catch(_){g=!0,clearInterval(h),console.error("getTransaction timeout:",_,v)}},yt)),I=this.connection.onSignature(v,N=>{if(g){this.connection.removeSignatureListener(I);return}g=!0,C(N)},"confirmed"),this.connection.getSignatureStatus(v)};return F(),{txIds:[],signedTxs:k}}else{let B=[];for(let K=0;K<k.length;K+=1){let F=await this.connection.sendTransaction(k[K],{skipPreflight:L});B.push(F)}return{txIds:B,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var x;let T=e||{},{splitIns:n=[],computeBudgetConfig:o}=T,a=pe(T,["splitIns","computeBudgetConfig"]),l=o?pt(o):{instructions:[],instructionTypes:[]},p=this.signers.reduce((w,L)=>V(O({},w),{[L.publicKey.toBase58()]:L}),{}),c=[],b=[],A=[],y=0;if(this.allInstructions.forEach(w=>{let L=[...A,w],P=o?[...l.instructions,...L]:L,B=[...new Set(L.map(K=>K.keys.filter(F=>F.isSigner).map(F=>F.pubkey.toString())).flat()).values()].map(K=>new Ve(K));if(w!==n[y]&&A.length<12&&($e({instructions:P,payer:this.feePayer,signers:B})||$e({instructions:L,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,$e({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 L=[...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);$e({instructions:o?[...l.instructions,...A]:[...A],payer:this.feePayer,signers:L.map(P=>P.publicKey)})?c.push(new Je().add(...l.instructions,...A)):c.push(new Je().add(...A)),b.push(L)}return c.forEach(w=>w.feePayer=this.feePayer),(x=this.owner)!=null&&x.signer&&b.forEach(w=>{w.some(L=>L.publicKey.equals(this.owner.publicKey))||w.push(this.owner.signer)}),{builder:this,transactions:c,signers:b,instructionTypes:this.instructionTypes,execute:async w=>{var v;let{sequentially:L,onTxUpdate:P,skipTxCount:k=0,recentBlockHash:B,skipPreflight:K=!0}=w||{},F=B!=null?B:await _e(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(L){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(N=>N.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:K});h.push(C)}return{txIds:h,signedTxs:c}}return{txIds:await Promise.all(c.map(async g=>await this.connection.sendRawTransaction(g.serialize(),{skipPreflight:K}))),signedTxs:c}}if(this.signAllTransactions){let g=await this.signAllTransactions(c.slice(k,c.length)),h=[...c.slice(0,k),...g];if(L){let I=0,C=[],N=async()=>{if(!h[I])return;I<k&&(C.push({txId:"",status:"success",signedTx:h[I]}),P==null||P([...C]),I++,N());let _=await this.connection.sendRawTransaction(h[I].serialize(),{skipPreflight:K});C.push({txId:_,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===_);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||N()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var z;if(se){clearInterval(U);return}try{let ie=await this.connection.getTransaction(_,{commitment:"confirmed",maxSupportedTransactionVersion:1});ie&&(se=!0,clearInterval(U),te({err:((z=ie.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",_))}catch(ie){se=!0,clearInterval(U),console.error("getTransaction timeout:",ie,_)}},yt)),W=this.connection.onSignature(_,z=>{if(se){this.connection.removeSignatureListener(W);return}se=!0,te(z)},"confirmed"),this.connection.getSignatureStatus(_)};return await N(),{txIds:C.map(_=>_.txId),signedTxs:h}}else{let I=[];for(let C=0;C<h.length;C+=1){let N=await this.connection.sendRawTransaction(h[C].serialize(),{skipPreflight:K});I.push(N)}return{txIds:I,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}async sizeCheckBuildV0(e){var v;let F=e||{},{computeBudgetConfig:n,splitIns:o=[],lookupTableCache:a={},lookupTableAddress:l=[],insCountLimit:p=12}=F,c=pe(F,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),b=O(O({},this.cluster==="devnet"?await Vt(this.connection):await _t(this.connection)),a),A=Array.from(new Set([...this.lookupTableAddress,...l])),y=[];for(let g of A)b[g]===void 0&&y.push(new Ve(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 _e(this.connection,this.blockhashCommitment),L=this.signers.reduce((g,h)=>V(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&&(je({instructions:I,payer:this.feePayer,lookupTableAddressAccount:b})||je({instructions:h,payer:this.feePayer,lookupTableAddressAccount:b})))B.push(g);else{if(B.length===0)throw Error("item ins too big");K+=g===o[K]?1:0;let C={};for(let N of[...new Set(A)])b[N]!==void 0&&(C[N]=b[N]);if(n&&je({instructions:[...x.instructions,...B],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:w})){let N=new et({payerKey:this.feePayer,recentBlockhash:w,instructions:[...x.instructions,...B]}).compileToV0Message(Object.values(b));P.push(new tt(N))}else{let N=new et({payerKey:this.feePayer,recentBlockhash:w,instructions:[...B]}).compileToV0Message(Object.values(b));P.push(new tt(N))}k.push(Array.from(new Set(B.map(N=>N.keys.filter(_=>_.isSigner).map(_=>_.pubkey.toString())).flat())).map(N=>L[N]).filter(N=>N!==void 0)),B=[g]}}),B.length>0){let h=[...new Set(B.map(I=>I.keys.filter(C=>C.isSigner).map(C=>C.pubkey.toString())).flat()).values()].map(I=>L[I]).filter(I=>I!==void 0);if(n&&je({instructions:[...x.instructions,...B],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:w})){let I=new 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:N,skipPreflight:_=!0}=g||{};if(P.map(async(U,W)=>{k[W].length&&U.sign(k[W]),N&&(U.message.recentBlockhash=N)}),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:_});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:_}))),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:_});z.push({txId:Pe,status:"sent",signedTx:W[te]}),I==null||I([...z]),te++;let ze=!1,Oe=null,at=null,rn=he=>{Oe!==null&&clearInterval(Oe),at!==null&&this.connection.removeSignatureListener(at);let Ae=z.findIndex(yo=>yo.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:1});Ae&&(ze=!0,clearInterval(Oe),rn({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,rn(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:_});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=E(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 bl,SystemProgram as Pl}from"@solana/web3.js";import kl from"bn.js";import{createCloseAccountInstruction as Bl,createInitializeAccountInstruction as Sl,createTransferInstruction as Kl,TOKEN_PROGRAM_ID as xl}from"@solana/spl-token";import{Keypair as ol,PublicKey as il}from"@solana/web3.js";import sl from"bn.js";import{TOKEN_PROGRAM_ID as ll}from"@solana/spl-token";import{PublicKey as oi}from"@solana/web3.js";import Kn,{isBN as xn}from"bn.js";import{bits as Xo,BitStructure as uc,blob as Yo,Blob as cc,cstr as lc,f32 as mc,f32be as dc,f64 as pc,f64be as fc,greedy as yc,Layout as Ho,ns64 as bc,ns64be as gc,nu64 as Pc,nu64be as Ac,offset as Qo,s16 as wc,s16be as kc,s24 as Tc,s24be as hc,s32 as Zo,s32be as Ic,s40 as Bc,s40be as Sc,s48 as Kc,s48be as xc,s8 as Cc,seq as $o,struct as Rc,Structure as jo,u16 as Jo,u16be as Lc,u24 as Oc,u24be as Nc,u32 as ei,u32be as Mc,u40 as Fc,u40be as vc,u48 as _c,u48be as Vc,u8 as ti,UInt as ni,union as Ec,Union as Dc,unionLayoutDiscriminator as Wc,utf8 as qc}from"@solana/buffer-layout";var gt=Ho,hn=jo;var qt=ni;var In=ti,Q=Jo;var Pt=ei;var me=Zo;var Bn=$o;var M=Yo;var Ut=Xo,Sn=Qo;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 Kn(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 Kn(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 R(r){return new Ke(16,!1,r)}function Cn(r){return new Ke(1,!0,r)}function Ee(r){return new Ke(8,!0,r)}function Rn(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 oi(e),e=>e.toBuffer(),r)}function ue(r){return new nt(In(),ii,ri,r)}function ii(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function ri(r){return r?1:0}function zt(r,e){let n=Pt("length"),o=d([n,f(r,Sn(n,-n.span),"values")]);return new nt(o,({values:a})=>a,a=>({values:a}),e)}var Gt=class extends hn{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:xn(e)?e.toNumber():new Proxy(e,{get(l,p){if(!o){let c=Reflect.get(l,"count");o=xn(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 Bn(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 tm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as om}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"),Xt=new S("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),sm=new S("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),si=new S("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Fn=new S("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),vn=new S("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),um=new S("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),ui=new S("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),_n=new S("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),ci=new S("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),li=new S("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Vn=new S("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),cm=new S("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),mi=new S("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),Yt=new S("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),di=new S("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),lm=new S("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),pi=new S("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),fi=new S("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),yi=new S("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),mm=new S("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),dm=new S("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),pm=new S("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),fm=new S("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),ym=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 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 Cm}from"@solana/spl-token";import{PublicKey as Nm}from"@solana/web3.js";var bi=d([Y("mintAuthorityOption"),i("mintAuthority"),t("supply"),m("decimals"),m("isInitialized"),Y("freezeAuthorityOption"),i("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as If,TOKEN_2022_PROGRAM_ID as Bf,TOKEN_PROGRAM_ID as Sf}from"@solana/spl-token";import{Keypair as Cf,PublicKey as Rf,SystemProgram as Of,TransactionInstruction as Nf}from"@solana/web3.js";import Ff from"bn.js";import D from"bn.js";var J=new D(1).shln(64);var gi=new D(1).shln(128),Ht=new D(1).shln(64).subn(1),Pi=new D(1).shln(128).subn(1),We=-443636,qe=443636,xe=new D("4295048016"),Ce=new D("79226673521066979257578248091"),En=new D("59543866431248"),Dn=new D("184467440737095516"),Wn=new D("15793534762490258745"),qn=16;var Qt=60,zm=new D("18446743708227953217"),Un=[{bit:0,factor:new D("fffcb933bd6fb800",16)},{bit:1,factor:new D("fff97272373d4000",16)},{bit:2,factor:new D("fff2e50f5f657000",16)},{bit:3,factor:new D("ffe5caca7e10f000",16)},{bit:4,factor:new D("ffcb9843d60f7000",16)},{bit:5,factor:new D("ff973b41fa98e800",16)},{bit:6,factor:new D("ff2ea16466c9b000",16)},{bit:7,factor:new D("fe5dee046a9a3800",16)},{bit:8,factor:new D("fcbe86c7900bb000",16)},{bit:9,factor:new D("f987a7253ac65800",16)},{bit:10,factor:new D("f3392b0822bb6000",16)},{bit:11,factor:new D("e7159475a2caf000",16)},{bit:12,factor:new D("d097f3bdfd2f2000",16)},{bit:13,factor:new D("a9f746462d9f8000",16)},{bit:14,factor:new D("70d869a156f31c00",16)},{bit:15,factor:new D("31be135f97ed3200",16)},{bit:16,factor:new D("9aa508b5b85a500",16)},{bit:17,factor:new D("5d6af8dedc582c",16)},{bit:18,factor:new D("2216e584f5fa",16)}];var ot=3,Gn=100;var zn=10,Xn=100,Tt=14;var q=new D(0),Re=new D(1),Xm=new D(-1);var Ym=new D("18446744073700000000");var Ai=d([M(8),m("bump"),Q("index"),i("owner"),Y("protocolFeeRate"),Y("tradeFeeRate"),Q("tickSpacing"),Y("fundFeeRate"),f(Y(),1),i("fundOwner"),f(t(),3)]),wi=d([Y("blockTimestamp"),Ee("tickCumulative"),f(t(),4)]),Yn=d([M(8),ue("initialized"),t("recentEpoch"),Q("observationIndex"),i("poolId"),f(wi,Gn,"observations"),f(t(),4)]),ki=d([Q("filterPeriod"),Q("decayPeriod"),Q("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),me("tickSpacingIndexReference"),Y("volatilityReference"),Y("volatilityAccumulator"),t("lastUpdateTimestamp"),f(m(),46)]),Ti=d([m("state"),t("openTime"),t("endTime"),t("lastUpdateTime"),R("emissionsPerSecondX64"),t("totalEmissioned"),t("claimed"),i("mint"),i("vault"),i("creator"),R("growthGlobalX64")]),Zt=d([M(8),m("bump"),i("configId"),i("creator"),i("mintA"),i("mintB"),i("vaultA"),i("vaultB"),i("observationId"),m("mintDecimalsA"),m("mintDecimalsB"),Q("tickSpacing"),R("liquidity"),R("sqrtPriceX64"),me("tickCurrent"),Y(),R("feeGrowthGlobalX64A"),R("feeGrowthGlobalX64B"),t("protocolFeesTokenA"),t("protocolFeesTokenB"),f(R(),4),m("status"),m("feeOn"),M(6),f(Ti,ot,"rewardInfos"),M(8*16,"tickArrayBitmap"),f(t(),4),t("fundFeesTokenA"),t("fundFeesTokenB"),t("startTime"),t("recentEpoch"),ki.replicate("dynamicFeeInfo"),f(t(),46)]),hi=d([R("growthInsideLastX64"),t("rewardAmountOwed")]),Ii=d([M(8),m("bump"),i("nftMint"),i("poolId"),me("tickLower"),me("tickUpper"),R("liquidity"),R("feeGrowthInsideLastX64A"),R("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),f(hi,ot,"rewardInfos"),t("recentEpoch"),f(t(),7)]),$m=d([M(8),m("bump"),i("poolId"),me("tickLower"),me("tickUpper"),R("liquidity"),R("feeGrowthInsideLastX64A"),R("feeGrowthInsideLastX64B"),t("tokenFeesOwedA"),t("tokenFeesOwedB"),f(R(),ot,"rewardGrowthInside"),t("recentEpoch"),f(t(),7)]),Bi=d([me("tick"),Rn("liquidityNet"),R("liquidityGross"),R("feeGrowthOutsideX64A"),R("feeGrowthOutsideX64B"),f(R(),ot,"rewardGrowthsOutsideX64"),t("orderPhase"),t("ordersAmount"),t("partFilledOrdersRemaining"),R("unfilledRatioX64"),f(Y(),3)]),Hn=d([M(8),i("poolId"),me("startTickIndex"),f(Bi,Qt,"ticks"),m("initializedTickCount"),t("recentEpoch"),f(m(),107)]),Si=d([M(8),m("bump"),f(i(),zn,"operationOwners"),f(i(),Xn,"whitelistMints")]),Ki=d([M(8),i("poolId"),i("owner"),me("tick"),ue("zeroForOne"),t("orderPhase"),t("totalAmount"),t("filledAmount"),t("settleBase"),t("settleOutput"),t("openTime"),R("unfilledRatioX64"),f(t(),4)]),Qn=d([M(8),i("poolId"),M(8*8*Tt,"positiveTickArrayBitmap"),M(8*8*Tt,"negativeTickArrayBitmap")]),jm=d([M(8),Q("index"),Q("filterPeriod"),Q("decayPeriod"),Q("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),f(t(),8)]),xi=d([M(8),i("wallet"),m("nonceIndex"),t("orderNonce"),f(t(),4)]),Jm=d([t(),m("bump"),i("owner"),i("poolId"),i("positionId"),i("nftAccount"),f(t(),8)]),Ci=d([M(8),m("bump"),i("lockOwner"),i("poolId"),i("positionId"),i("nftAccount"),i("lockNftMint"),t("recentEpoch"),f(t(),8)]);import nd from"bn.js";var pd=Buffer.from("amm_config","utf8"),Li=Buffer.from("pool","utf8"),Oi=Buffer.from("pool_vault","utf8"),fd=Buffer.from("pool_reward_vault","utf8"),yd=Buffer.from("position","utf8"),bd=Buffer.from("tick_array","utf8"),gd=Buffer.from("operation","utf8"),Pd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Ad=Buffer.from("observation","utf8"),wd=Buffer.from("support_mint","utf8"),kd=Buffer.from("dynamic_fee_config","utf8"),Td=Buffer.from("permission","utf8");var hd=Buffer.from("locked_position","utf8");import{sha256 as Yi}from"js-sha256";import Ni from"bn.js";import Kd 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 Cd=new Ni(1).shln(256).subn(1);function Zn(r){return r.isZero()?-1:r.bitLength()-1}import Od from"bn.js";import _d from"bn.js";import Ed from"decimal.js";import{PublicKey as hp}from"@solana/web3.js";import Bp from"bn.js";import{TOKEN_2022_PROGRAM_ID as Np,TOKEN_PROGRAM_ID as Mp}from"@solana/spl-token";import Vp from"decimal.js";import dp from"bn.js";import Jd from"bn.js";import Qp from"bn.js";function ee(r){let e=`global:${r}`;return Buffer.from(Yi.digest(e)).slice(0,8)}Yn.span;var Gf=E("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 en}from"@solana/web3.js";var $i=d([m("instruction")]),ji=d([m("instruction")]),Ji=d([t("rewardState"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardLastUpdateTime"),t("totalReward"),t("totalRewardEmissioned"),t("rewardClaimed"),t("rewardPerSecond"),R("accRewardPerShare"),i("rewardVault"),i("rewardMint"),i("rewardSender"),t("rewardType"),f(t(),15,"padding")]),er=d([t("state"),t("nonce"),i("lpVault"),i("rewardVault"),i(),i(),t(),t(),t("totalReward"),R("perShareReward"),t("lastSlot"),t("perSlotReward")]),tr=d([t("state"),t("nonce"),i("lpVault"),i("rewardVaultA"),t("totalRewardA"),R("perShareRewardA"),t("perSlotRewardA"),m("option"),i("rewardVaultB"),M(7),t("totalRewardB"),R("perShareRewardB"),t("perSlotRewardB"),t("lastSlot"),i()]),nr=d([t(),t("state"),t("nonce"),t("validRewardTokenNum"),R("rewardMultiplier"),t("rewardPeriodMax"),t("rewardPeriodMin"),t("rewardPeriodExtend"),i("lpMint"),i("lpVault"),f(Ji,5,"rewardInfos"),i("creator"),i(),f(t(),32,"padding")]),or=new Proxy(er,{get(r,e,n){return e==="decode"?(...o)=>{let a=r.decode(...o);return V(O({},a),{version:3,rewardInfos:[{rewardVault:a.rewardVault,totalReward:a.totalReward,perSlotReward:a.perSlotReward,perShareReward:a.perShareReward}]})}:Reflect.get(r,e,n)}}),ir=new Proxy(tr,{get(r,e,n){return e==="decode"?(...o)=>{let a=r.decode(...o);return V(O({},a),{version:5,rewardInfos:[{rewardVault:a.rewardVaultA,totalReward:a.totalRewardA,perSlotReward:a.perSlotRewardA,perShareReward:a.perShareRewardA},{rewardVault:a.rewardVaultB,totalReward:a.totalRewardB,perSlotReward:a.perSlotRewardB,perShareReward:a.perShareRewardB}]})}:Reflect.get(r,e,n)}}),to=new Proxy(nr,{get(r,e,n){return e==="decode"?(...o)=>{let a=r.decode(...o);return V(O({},a),{version:6,rewardInfos:a.rewardInfos.map(l=>{var p;return V(O({},l),{rewardType:((p=Object.entries(rt).find(c=>String(c[1])===l.rewardType.toString()))!=null?p:["Standard SPL"])[0]})})})}:Reflect.get(r,e,n)}}),rr=d([t("isSet"),t("rewardPerSecond"),t("rewardOpenTime"),t("rewardEndTime"),t("rewardType")]),ar=d([m("instruction"),t("nonce"),f(rr,5,"rewardTimeInfo")]),sr=d([m("instruction"),t("rewardReopenTime"),t("rewardEndTime"),t("rewardPerSecond")]),ur=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(R(),1,"rewardDebts"),t(""),t("voteLockedBalance"),f(t(),15)]),Wy=d([t("state"),i("id"),i("owner"),t("deposited"),f(t(),2,"rewardDebts")]),cr=d([t("state"),i("id"),i("owner"),t("deposited"),f(R(),2,"rewardDebts"),f(t(),17)]),lr=d([t(),t("state"),i("id"),i("owner"),t("deposited"),f(R(),5,"rewardDebts"),f(t(),16)]),mr=d([m("instruction"),t("amount")]),dr=d([i("mint"),i("grantAuthority"),t("baselineVoteWeightScaledFactor"),t("maxExtraLockupVoteWeightScaledFactor"),t("lockupSaturationSecs"),Cn("digitShift"),f(m(),7,"reserved1"),f(t(),7,"reserved2")]),pr=d([M(8),i("governanceProgramId"),i("realm"),i("realmGoverningTokenMint"),i("realmAuthority"),f(m(),32,"reserved1"),f(dr,4,"votingMints"),Ee("timeOffset"),m("bump"),f(m(),7,"reserved2"),f(t(),11,"reserved3")]),fr=d([Ee("startTime"),Ee("endTime"),m("kind"),f(m(),15,"reserved")]),yr=d([f(fr,1,"lockup"),t("amountDeposited_native"),t("amountInitiallyLockedNative"),ue("isUsed"),ue("allowClawback"),m("votingMintConfigIdx"),f(m(),29,"reserved")]),br=d([M(8),i("voterAuthority"),i("registrar"),f(yr,32,"deposits"),m("voterBump"),m("voterWweightRecordBump"),f(m(),94,"reserved")]);import{NATIVE_MINT as Zy}from"@solana/spl-token";var $y=E("Raydium_farm_config"),gr=new en("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Pr=new en("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var jy=new en("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var rt={"Standard SPL":0,"Option tokens":1},oo={[On.toString()]:3,[Nn.toString()]:4,[Mn.toString()]:5,[Xt.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 _b,SystemProgram as Vb,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=E("Raydium.farm.util");var ig=E("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 Qg from"bn.js";import ro from"bn.js";var Sr=new ro(25),Kr=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 xr=d([m("instruction"),t("amountIn"),t("minAmountOut")]),Cr=d([m("instruction"),t("maxAmountIn"),t("amountOut")]),pP=d([m("instruction"),m("nonce")]),Rr=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"),R("swapBaseInAmount"),R("swapQuoteOutAmount"),t("swapBase2QuoteFee"),R("swapQuoteInAmount"),R("swapBaseOutAmount"),t("swapQuote2BaseFee"),i("baseVault"),i("quoteVault"),i("baseMint"),i("quoteMint"),i("lpMint"),i("openOrders"),i("marketId"),i("marketProgramId"),i("targetOrders"),i("withdrawQueue"),i("lpVault"),i("owner"),t("lpReserve"),f(t(),3,"padding")]),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"),R("swapBaseInAmount"),R("swapQuoteOutAmount"),R("swapQuoteInAmount"),R("swapBaseOutAmount"),t("swapQuote2BaseFee"),t("swapBase2QuoteFee"),i("baseVault"),i("quoteVault"),i("baseMint"),i("quoteMint"),i("lpMint"),i("modelDataAccount"),i("openOrders"),i("marketId"),i("marketProgramId"),i("targetOrders"),i("owner"),f(t(),64,"padding")]),Lr=d([m("instruction"),t("baseAmountIn"),t("quoteAmountIn"),t("fixedSide"),t("otherAmountMin")]),Or=d([m("instruction"),t("lpAmount"),t("baseAmountMin"),t("quoteAmountMin")]);var Nr=d([t("fee")]);var MP=E("Raydium_liquidity_instruction");var Mr=5e4,Fr=d([t("x"),t("y"),t("price")]),VP=d([t("accountType"),t("status"),t("multiplier"),t("validDataCount"),f(Fr,Mr,"DataElement")]);import{PublicKey as ZP}from"@solana/web3.js";import jP from"decimal.js";import{TOKEN_PROGRAM_ID as eA}from"@solana/spl-token";import{PublicKey as qP}from"@solana/web3.js";var zP=E("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 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 Jw from"bn.js";import Gr from"bn.js";var Ew=new Gr(0);import zw from"bn.js";import zr from"bn.js";var ge=new zr(1e6);import gT from"bn.js";import AT from"decimal.js";import{PublicKey as Ak,TransactionInstruction as wk,Keypair as Tk,SystemProgram as hk}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Bk,TOKEN_2022_PROGRAM_ID as Sk,TOKEN_PROGRAM_ID as Kk}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"),dk=Buffer.from("creator_fee_share","utf8");var pk=Buffer.from("locked_liquidity","utf8");var Mk=E("Raydium_cpmm"),Fk={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173],lockCpLiquidity:[216,157,29,78,38,51,31,26],collectCpFee:[8,30,51,199,209,184,247,133],createPermissionPda:Buffer.from([135,136,2,216,137,169,181,202]),closePermissionPda:Buffer.from([156,84,32,118,69,135,70,123]),initializeWithPermission:Buffer.from([63,55,254,65,49,178,89,121]),collectCreatorFee:Buffer.from([20,22,86,123,198,28,219,132]),collectCreatorFeePermissionless:Buffer.from([202,202,34,83,226,122,145,229])};var Hr=d([M(8),m("bump"),ue("disableCreatePool"),Q("index"),t("tradeFeeRate"),t("protocolFeeRate"),t("fundFeeRate"),t("createPoolFee"),i("protocolOwner"),i("fundOwner"),t("creatorFeeRate"),t("creatorFeeShareRate"),f(t(),14)]),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)]),Ek=d([M(8),m("bump"),i("creator"),i("ammConfig"),t("shareRate"),f(t(),8)]);import{PublicKey as LK,SystemProgram as OK}from"@solana/web3.js";import{createTransferInstruction as MK,TOKEN_PROGRAM_ID as FK,TOKEN_2022_PROGRAM_ID as vK,createAssociatedTokenAccountIdempotentInstruction as _K,createSyncNativeInstruction as EK,createTransferCheckedInstruction as DK}from"@solana/spl-token";import ya from"bn.js";import UK from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Kh,TOKEN_2022_PROGRAM_ID as xh,TOKEN_PROGRAM_ID as Ch}from"@solana/spl-token";import{SystemProgram as Nh,TransactionInstruction as Mh}from"@solana/web3.js";import $r from"bn.js";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"),wh=Buffer.from("platform_curve_rule","utf8");var _h={initialize:Buffer.from([175,175,109,31,13,152,155,237]),initializeV2:Buffer.from([67,153,175,39,218,16,38,32]),buyExactIn:Buffer.from([250,234,13,123,213,156,19,236]),buyExactOut:Buffer.from([24,211,116,40,105,3,153,56]),sellExactIn:Buffer.from([149,39,222,155,211,124,152,26]),sellExactOut:Buffer.from([95,200,71,34,8,9,11,166]),createVestingAccount:Buffer.from([129,178,2,13,217,172,230,218]),claimVestedToken:Buffer.from([49,33,104,30,189,157,79,35]),createPlatformConfig:Buffer.from([176,90,196,175,253,113,220,20]),claimPlatformFee:Buffer.from([156,39,208,135,76,237,61,72]),updatePlaformConfig:Buffer.from([195,60,76,129,146,45,67,143]),initializeWithToken2022:Buffer.from([37,190,126,222,44,154,171,17]),claimPlatformFeeFromVault:Buffer.from([117,241,198,168,248,218,80,29]),claimCreatorFee:Buffer.from([26,97,138,203,132,171,141,252]),createPlatformVestingAccount:Buffer.from([146,71,173,69,98,19,15,106]),createPlatformAllowConfig:Buffer.from([69,71,168,7,214,250,107,102]),closePlatformAllowConfig:Buffer.from([82,205,36,216,16,6,240,215]),createPlatformCurveRule:Buffer.from([148,71,180,136,122,144,59,21]),updatePlatformCurveRule:Buffer.from([90,100,206,196,54,117,120,139]),removePlatformCurveRule:Buffer.from([236,77,154,138,32,145,127,219]),closePlatformCurveRule:Buffer.from([194,114,82,45,136,88,169,159])};var Vh=new $r("18446744073709551615");var jr=d([t(),t("epoch"),m("curveType"),Q("index"),t("migrateFee"),t("tradeFeeRate"),t("maxShareFeeRate"),t("minSupplyA"),t("maxLockRate"),t("minSellRateA"),t("minMigrateRateA"),t("minFundRaisingB"),i("mintB"),i("protocolFeeOwner"),i("migrateFeeOwner"),i("migrateToAmmWallet"),i("migrateToCpmmWallet"),f(t(),16)]),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)]),qh=d([t(),t("epoch"),i("poolId"),i("beneficiary"),t("claimedAmount"),t("tokenShareAmount"),f(t(),8)]),ta=d([m("migrateType"),m("migrateCpmmFeeOn"),t("supply"),t("totalSellA"),t("totalFundRaisingB"),t("totalLockedAmount"),t("cliffPeriod"),t("unlockPeriod")]),Uh=d([t("epoch"),m("index"),i("configId"),ta.replicate("bondingCurveParam"),f(t(),50)]),co=d([t(),t("epoch"),i("platformClaimFeeWallet"),i("platformLockNftWallet"),t("platformScale"),t("creatorScale"),t("burnScale"),t("feeRate"),f(m(),64,"name"),f(m(),256,"web"),f(m(),256,"img"),i("cpConfigId"),t("creatorFeeRate"),i("transferFeeExtensionAuth"),i("platformVestingWallet"),t("platformVestingScale"),i("platformCpCreator"),m("restrictGlobalConfig"),m("restrictCurveParam"),i("curveRuleManager"),f(m(),78)]),na=d([m("field"),m("op"),R("value")]),oa=d([Q("groupId"),t("epoch"),zt(na,"constraints")]),ia=d([t(),m("bump"),m("version"),i("platformId"),i("configId"),t("epoch"),f(t(),8),zt(oa,"groups")]);import{TOKEN_2022_PROGRAM_ID as Xh,TOKEN_PROGRAM_ID as Yh}from"@solana/spl-token";import ra from"bn.js";var rI=new ra(1e6);import cI from"bn.js";import mI from"decimal.js";import UI from"bn.js";import zI from"decimal.js";import gI from"bn.js";import AI from"decimal.js";import CI from"bn.js";import LI from"decimal.js";import po from"bn.js";import nn from"decimal.js";var St=class{static _multipler(e){return new nn(10).pow(e)}static getPrice({priceX64:e,decimalA:n,decimalB:o}){return new nn(e.toString()).div(this._Q64).mul(this._multipler(n)).div(this._multipler(o))}static getPriceX64({price:e,decimalA:n,decimalB:o}){let a=e.mul(this._multipler(o)).div(this._multipler(n));return new po(a.mul(this._Q64).toFixed(0))}};St._Q64=new nn(new po(1).shln(64).toString());import{NATIVE_MINT as aS,TOKEN_2022_PROGRAM_ID as sS,TOKEN_PROGRAM_ID as uS,createAssociatedTokenAccountIdempotentInstruction as lS,createSyncNativeInstruction as mS,getTransferFeeConfig as dS,unpackMint as pS}from"@solana/spl-token";import Z from"bn.js";import{PublicKey as da,SystemProgram as bS}from"@solana/web3.js";import hS from"decimal.js";var IS={initPriceX64:new Z("515752397214619"),supply:new Z(1e15),totalSellA:new Z(7931e11),totalFundRaisingB:new Z(85e9),totalFundRaisingBUSD:new Z(125e8),totalLockedAmount:new Z("0"),cliffPeriod:new Z("0"),unlockPeriod:new Z("0"),decimals:6,virtualA:new Z("1073471847374405"),virtualB:new Z("30050573465"),realA:new Z(0),realB:new Z(0),protocolFee:new Z(0),platformId:new da("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new Z(0),cliffPeriod:new Z(0),unlockPeriod:new Z(0),startTime:new Z(0),totalAllocatedShare:new Z(0)}},BS=new Z(1e4);var pa={[Fn.toBase58()]:3};var fa=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 QS}from"@solana/web3.js";var eK=E("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as cK,TOKEN_2022_PROGRAM_ID as lK,TOKEN_PROGRAM_ID as mK}from"@solana/spl-token";import{PublicKey as pK,SystemProgram as fK,TransactionInstruction as yK}from"@solana/web3.js";import gK from"bn.js";var Ax=new ya(0);import{PublicKey as ba,Transaction as on,TransactionInstruction as ga}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Pa}from"@solana/spl-token";import fo 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 fo(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],L=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 fo(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:L,snapshotLpAmount:K.lpAmount,project:oe.VERSION_PROJECT[T],openTime:F,endTime:v,canClaim:I,canClaimErrorType:g?h?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:B.tokenInfo.map((C,N)=>({mintAddress:C.mintAddress,mintVault:C.mintVault,mintDecimals:C.mintDecimals,perLpLoss:C.perLpLoss,debtAmount:K.tokenInfo[N].debtAmount.add(K.tokenInfo[N].claimedAmount)}))})}return 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:L}=await this.scope.account.getOrCreateTokenAccount({mint:x.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:x.mintAddress.equals(ne.WSOL.mint),createInfo:{payer:l,amount:0},skipCloseAccount:!x.mintAddress.equals(ne.WSOL.mint),associatedOnly:x.mintAddress.equals(ne.WSOL.mint)?!1:n.associatedOnly});L&&a.addInstruction(L),w&&(p[x.mintAddress.toString()]=w,T.push(w))}a.addInstruction({instructions:[oe.makeClaimInstruction({programId:y.programId,poolInfo:y,ownerInfo:{wallet:l,ownerPda:y.ownerAccountId,claimAddress:T}})]})}let{transaction:c,signers:b}=a.build(),A=a.allInstructions;return Et(A,[l,...b.map(y=>y.publicKey)])?[{transaction:c,signer:b}]:[{transaction:new on().add(...A.slice(0,a.AllTxData.instructions.length-1)),signer:b},{transaction:new on().add(...A.slice(a.AllTxData.instructions.length-1)),signer:[]},{transaction:new on().add(...a.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:n,ownerInfo:o}){let a=d([]),l=[{pubkey:o.wallet,isSigner:!0,isWritable:!0},{pubkey:n.poolId,isSigner:!1,isWritable:!0},{pubkey:o.ownerPda,isSigner:!1,isWritable:!0},...o.claimAddress.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})),...n.tokenInfo.map(({mintVault:b})=>({pubkey:b,isSigner:!1,isWritable:!0})),{pubkey:Pa,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 ga({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 ba(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 vx}from"@solana/web3.js";import{getTransferFeeConfig as Vx,MintLayout as Ex,TOKEN_2022_PROGRAM_ID as Dx,TOKEN_PROGRAM_ID as Wx,unpackMint as qx}from"@solana/spl-token";var bR=new Le(2),gR=new Le(3),PR=new Le(5),Ro=new Le(10),AR=new Le(100),wR=new Le(1e3),kR=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 $ from"bn.js";import Ge from"decimal.js";var H=class{static isInitialized({data:e}){return this.hasLiquidity({data:e})||this.hasLimitOrders({data:e})}static hasLimitOrders({data:e}){return!e.ordersAmount.isZero()||!e.partFilledOrdersRemaining.isZero()}static hasLiquidity({data:e}){return!e.liquidityGross.isZero()}static isValidTick(e){return e>=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=H.getPriceAtTick(n,!1);return ce(e,a,J)}else{let a=H.getPriceAtTick(n,!0);return ce(e,J,a)}}static getLimitOrderInput({amountOut:e,tick:n,zeroForOne:o}){if(o){let a=H.getPriceAtTick(n,!0);return le(e,a,J)}else{let a=H.getPriceAtTick(n,!1);return le(e,J,a)}}static limitOrderUnfilledAmount({tick:e}){return e.ordersAmount.add(e.partFilledOrdersRemaining)}static matchLimitOrder({tick:e,swapAmount:n,swapDirectionZeroForOne:o,isBaseInput:a,feeRate:l,isFeeOnInput:p}){let c={amountIn:q,amountOut:q,ammFeeAmount:q},b=this.limitOrderUnfilledAmount({tick:e});if(n.isZero()||b.isZero())return c;if(a)p?(c.ammFeeAmount=le(n,new $(l),ge),c.amountIn=n.sub(c.ammFeeAmount)):c.amountIn=n,c.amountOut=this.getLimitOrderOutput({amountIn:c.amountIn,tick:e.tick,zeroForOne:o}),c.amountOut.gt(b)&&(c.amountOut=b,c.amountIn=this.getLimitOrderInput({amountOut:b,tick:e.tick,zeroForOne:!o}),p&&(c.ammFeeAmount=le(c.amountIn,new $(l),ge.sub(new $(l)))));else{let T=$.min(n,b);p?c.amountOut=T:c.amountOut=$.min(le(T,ge,ge.sub(new $(l))),b),c.amountIn=this.getLimitOrderInput({amountOut:c.amountOut,tick:e.tick,zeroForOne:!o}),p&&(c.ammFeeAmount=le(c.amountIn,new $(l),ge.sub(new $(l))))}let A=q;e.partFilledOrdersRemaining.gt(q)&&(A=$.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 $(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=Zn(e),o=n-64,a;o>=0?a=new $(o).shln(32):a=new $(-o).shln(32).neg();let l;n>=64?l=e.shrn(n-63):l=e.shln(63-n);let p=new $(0),c=new $(1).shln(63);for(let k=0;k<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),L=this.signedShrn64(x);return w===L?w:H.getSqrtPriceAtTick(L).lte(e)?L:w}static signedShrn64(e){if(e.isNeg()){let n=new $(1).shln(64),o=e.div(n);return!e.mod(n).isZero()&&e.isNeg()?o.subn(1).toNumber():o.toNumber()}else return e.shrn(64).toNumber()}static sqrtPriceX64ToPrice(e,n,o){let a=e.mul(e),l=n-o,p=20,c=new $(10).pow(new $(p)),b=a.mul(c),A=new $(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),L=x+"."+w;return new Ge(L).mul(new Ge(10).pow(l))}static tickToPrice(e,n,o){let a=H.getSqrtPriceAtTick(e);return this.sqrtPriceX64ToPrice(a,n,o)}static priceToTick(e,n,o){let l=e.div(Math.pow(10,n-o)).log().div(new Ge(1.0001).log()).floor();return Math.max(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 $(p.toFixed(0))}static toTickIndex(e,n){return e>=0?e-e%n:e-e%n-(e%n!==0?n:0)}static getPriceAndTick({price:e,mintADecimals:n,mintBDecimals:o,zeroForOne:a,tickSpacing:l}){let p=e.clamp(1/10**Math.max(n,o),Number.MAX_SAFE_INTEGER);a||(p=new Ge(1).div(p));let c=H.toTickIndex(H.priceToTick(p,n,o),l),b=H.tickToPrice(c,n,o);return{price:a?b:new Ge(1).div(b),tick:c}}};var tL=({baseIn:r,price:e,mintADecimal:n,mintBDecimal:o,tickSpacing:a})=>{let l=H.priceToTick(e,n,o),p=H.toTickIndex(l,a),c=H.tickToPrice(p,n,o);return{tick:p,price:c}};export{tL as getOrderTick};
//# sourceMappingURL=orderMath.mjs.map