@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 87.7 kB
JavaScript
var No=Object.defineProperty,Mo=Object.defineProperties;var Fo=Object.getOwnPropertyDescriptors;var bt=Object.getOwnPropertySymbols;var An=Object.prototype.hasOwnProperty,wn=Object.prototype.propertyIsEnumerable;var Pn=(s,e,t)=>e in s?No(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,O=(s,e)=>{for(var t in e||(e={}))An.call(e,t)&&Pn(s,t,e[t]);if(bt)for(var t of bt(e))wn.call(e,t)&&Pn(s,t,e[t]);return s},W=(s,e)=>Mo(s,Fo(e));var be=(s,e)=>{var t={};for(var o in s)An.call(s,o)&&e.indexOf(o)<0&&(t[o]=s[o]);if(s!=null&&bt)for(var o of bt(s))e.indexOf(o)<0&&wn.call(s,o)&&(t[o]=s[o]);return t};import{PublicKey as _o}from"@solana/web3.js";import{get as kn,set as vo}from"lodash";var Et=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 t=e.map(o=>typeof o=="object"?JSON.stringify(o):o).join(", ");throw new Error(t)}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}},Tn={},Vo={};function E(s){let e=kn(Tn,s);if(!e){let t=kn(Vo,s);e=new Et({name:s,logLevel:t}),vo(Tn,s,e)}return e}import{MINT_SIZE as Ea,TOKEN_PROGRAM_ID as Da,getTransferFeeConfig as Wa,unpackMint as qa}from"@solana/spl-token";var Dt=E("Raydium_accountInfo_util");async function he(s,e,t){let{batchRequest:o,commitment:i="confirmed",chunkCount:r=100}=O({batchRequest:!1},t),u=Wt(e,r),c=new Array(u.length).fill([]);if(o){let b=u.map(A=>{let w=s._buildArgs([A.map(T=>T.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:w}}),d=Wt(b,10);c=(await(await Promise.all(d.map(async A=>await s._rpcBatchRequest(A)))).flat()).map(A=>(A.error&&Dt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${A.error.message}`),A.result.value.map(w=>{if(w){let{data:T,executable:L,lamports:k,owner:h,rentEpoch:S}=w;return T.length!==2&&T[1]!=="base64"&&Dt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(T[0],"base64"),executable:L,lamports:k,owner:new _o(h),rentEpoch:S}}return null})))}else try{c=await Promise.all(u.map(b=>s.getMultipleAccountsInfo(b,i)))}catch(b){b instanceof Error&&Dt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${b.message}`)}return c.flat()}import ve from"bn.js";import DC from"decimal.js";import Xo from"big.js";import rs from"bn.js";import Eo from"toformat";var Do=Eo,$e=Do;import Pt from"big.js";import qo from"bn.js";import Uo from"decimal.js-light";import Je from"bn.js";var hn=9007199254740991;function ue(s){let e=E("Raydium_parseBigNumberish");if(s instanceof Je)return s;if(typeof s=="string"){if(s.match(/^-?[0-9]+$/))return new Je(s);e.logWithError(`invalid BigNumberish string: ${s}`)}return typeof s=="number"?(s%1&&e.logWithError(`BigNumberish number underflow: ${s}`),(s>=hn||s<=-hn)&&e.logWithError(`BigNumberish number overflow: ${s}`),new Je(String(s))):typeof s=="bigint"?new Je(s.toString()):(e.error(`invalid BigNumberish value: ${s}`),new Je(0))}var gt=E("module/fraction"),qt=$e(Pt),et=$e(Uo),Go={[0]:et.ROUND_DOWN,[1]:et.ROUND_HALF_UP,[2]:et.ROUND_UP},zo={[0]:Pt.roundDown,[1]:Pt.roundHalfUp,[2]:Pt.roundUp},G=class{constructor(e,t=new qo(1)){this.numerator=ue(e),this.denominator=ue(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new G(this.denominator,this.numerator)}add(e){let t=e instanceof G?e:new G(ue(e));return this.denominator.eq(t.denominator)?new G(this.numerator.add(t.numerator),this.denominator):new G(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof G?e:new G(ue(e));return this.denominator.eq(t.denominator)?new G(this.numerator.sub(t.numerator),this.denominator):new G(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof G?e:new G(ue(e));return new G(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof G?e:new G(ue(e));return new G(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},o=1){Number.isInteger(e)||gt.logWithError(`${e} is not an integer.`),e<=0&>.logWithError(`${e} is not positive.`),et.set({precision:e+1,rounding:Go[o]});let i=new et(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},o=1){return Number.isInteger(e)||gt.logWithError(`${e} is not an integer.`),e<0&>.logWithError(`${e} is negative.`),qt.DP=e,qt.RM=zo[o]||1,new qt(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var fs=E("Raydium_amount"),ys=$e(Xo);import{PublicKey as Qo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as In}from"@solana/spl-token";var At={chainId:101,address:Qo.default.toBase58(),programId:In.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:In.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 Gt}from"@solana/web3.js";import{PublicKey as X,SystemProgram as Bn,SYSVAR_RENT_PUBKEY as Zo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ho}from"@solana/spl-token";function _e({pubkey:s,isSigner:e=!1,isWritable:t=!0}){return{pubkey:s,isWritable:t,isSigner:e}}var jo=[_e({pubkey:Ho,isWritable:!1}),_e({pubkey:Bn.programId,isWritable:!1}),_e({pubkey:Zo,isWritable:!1})];function Sn({publicKey:s,transformSol:e}){let t=Kn(s.toString());if(t instanceof X)return e&&t.equals(Re)?Ie:t;if(e&&t.toString()===Re.toBase58())return Ie;if(typeof t=="string"){if(t===X.default.toBase58())return X.default;try{return new X(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Kn(s){try{return new X(s)}catch{return s}}var Ut=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),tt=new X("SysvarRent111111111111111111111111111111111"),hs=new X("SysvarC1ock11111111111111111111111111111111"),wt=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),$o=new X("Sysvar1nstructions1111111111111111111111111"),Jo=Bn.programId,Is=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Bs=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ss=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ks=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),xs=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Cs=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Rs=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ls=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Os=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Ns=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Ms=new X("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ie=new X("So11111111111111111111111111111111111111112"),Re=X.default;var zt=class{constructor({mint:e,decimals:t,symbol:o,name:i,skipMint:r=!1,isToken2022:u=!1}){if(e===Re.toBase58()||e instanceof Gt&&Re.equals(e)){this.decimals=ge.decimals,this.symbol=ge.symbol,this.name=ge.name,this.mint=new Gt(ge.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=o||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=r?Gt.default:Sn({publicKey:e}),this.isToken2022=u}equals(e){return this===e?!0:this.mint.equals(e.mint)}},re=zt;re.WSOL=new zt(W(O({},ge),{mint:ge.address}));var Xt=class{constructor({decimals:e,symbol:t="UNKNOWN",name:o="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=o}equals(e){return this===e}},kt=Xt;kt.SOL=new Xt(At);import ei from"bn.js";var Xs=new G(new ei(100));var $s=E("Raydium_price");import{merge as qx}from"lodash";import su from"axios";var xn={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"},ti=W(O({},xn),{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 Ru=E("Raydium_Api");import{PublicKey as Zl,SystemProgram as Hl}from"@solana/web3.js";import{AccountLayout as tm,createAssociatedTokenAccountIdempotentInstruction as nm,TOKEN_PROGRAM_ID as om,TOKEN_2022_PROGRAM_ID as im}from"@solana/spl-token";import{PublicKey as Ue,sendAndConfirmTransaction as $t,SystemProgram as si,Transaction as it,TransactionMessage as rt,VersionedTransaction as at}from"@solana/web3.js";import ui from"axios";import{PublicKey as Yt,AddressLookupTableAccount as We}from"@solana/web3.js";async function Qt({connection:s,address:e,cluster:t="mainnet"}){let o=await he(s,[...new Set(e.map(r=>r.toString()))].map(r=>new Yt(r))),i={};for(let r=0;r<e.length;r++){let u=o[r],c=e[r];if(!u)continue;let b=new We({key:c,state:We.deserialize(u.data)});i[c.toString()]=b,t==="devnet"?De[c.toString()]=b:Ee[c.toString()]=b}return i}var Ee={},Zt=async s=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Ee[e])return Ee;let t=new Yt(e),o=await s.getAccountInfo(t);return o&&(Ee[e]=new We({key:t,state:We.deserialize(o.data)})),Ee},De={},Ht=async s=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(De[e])return De;let t=new Yt(e),o=await s.getAccountInfo(t);return o&&(De[e]=new We({key:t,state:We.deserialize(o.data)})),De};var ne={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 Cn,Keypair as Ln,PublicKey as ni,Transaction as On,TransactionMessage as oi,VersionedTransaction as Nn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ii}from"@solana/spl-token";var Rn=E("Raydium_txUtil"),Mn=1644;function Tt(s){let e=[],t=[];return s.microLamports&&(e.push(Cn.setComputeUnitPrice({microLamports:s.microLamports})),t.push(ne.SetComputeUnitPrice)),s.units&&(e.push(Cn.setComputeUnitLimit({units:s.units})),t.push(ne.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function qe(s,e){var o,i;let t=e!=null?e:"confirmed";return(i=await((o=s.getLatestBlockhash)==null?void 0:o.call(s,{commitment:t})))==null?void 0:i.blockhash}async function ht(s,e){return s.getSignatureStatuses([e]),new Promise((t,o)=>{let i=setTimeout(o,6e4);s.onSignature(e,r=>{if(clearTimeout(i),!r.err){t("");return}o(Object.assign(r.err,{txId:e}))},"confirmed")})}function jt(s,e){s.length<1&&Rn.logWithError(`no instructions provided: ${s.toString()}`),e.length<1&&Rn.logWithError(`no signers provided:, ${e.toString()}`);let t=new On;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...s);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Mn}catch{return!1}}function Pe(s,e){let[t,o]=ni.findProgramAddressSync(s,e);return{publicKey:t,nonce:o}}function nt({instructions:s,payer:e,signers:t}){return jt(s,[e,...t])}function ot({instructions:s,payer:e,lookupTableAddressAccount:t,recentBlockhash:o=Ln.generate().publicKey.toString()}){let r=new oi({payerKey:e,recentBlockhash:o,instructions:s}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Nn(r).serialize()).toString("base64").length<Mn}catch{return!1}}var ri=s=>Buffer.isBuffer(s)?s:s instanceof Uint8Array?Buffer.from(s.buffer,s.byteOffset,s.byteLength):Buffer.from(s),ai=s=>{let e=s.serialize({requireAllSignatures:!1,verifySignatures:!1});s instanceof Nn&&(e=ri(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Le(s){let e=[];return s.forEach(t=>{t instanceof On&&(t.recentBlockhash||(t.recentBlockhash=ii.toBase58()),t.feePayer||(t.feePayer=Ln.generate().publicKey)),e.push(ai(t))}),console.log("simulate tx string:",e),e}var It=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 ui.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(o=e==null?void 0:e[15])!=null?o:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:o}=Tt(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...o),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(si.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new Ue(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(ne.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let o=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(o))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:o=[],instructionTypes:i=[],endInstructionTypes:r=[],lookupTableAddress:u=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...o),this.instructionTypes.push(...i),this.endInstructionTypes.push(...r),this.lookupTableAddress.push(...u.filter(c=>c!==Ue.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:o}){return e===0?await this.buildV0(W(O({},t||{}),{lookupTableAddress:o})):this.build(t)}build(e){var o;let t=new it;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((o=this.owner)==null?void 0:o.signer)&&!this.signers.some(i=>i.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async i=>{var y;let{recentBlockHash:r,skipPreflight:u=!0,sendAndConfirm:c,notSendToRpc:b}=i||{},d=r!=null?r:await qe(this.connection,this.blockhashCommitment);if(t.recentBlockhash=d,this.signers.length&&t.sign(...this.signers),Le([t]),(y=this.owner)!=null&&y.isKeyPair)return{txId:c?await $t(this.connection,t,this.signers.find(w=>w.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:u}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:u}),signedTx:t};if(this.signAllTransactions){let A=await this.signAllTransactions([t]);if(this.signers.length)for(let w of A)try{w.sign(...this.signers)}catch{}return{txId:b?"":await this.connection.sendRawTransaction(A[0].serialize(),{skipPreflight:u}),signedTx:A[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var d;let{extraPreBuildData:t=[],extInfo:o}=e,{transaction:i}=this.build(o),r=t.filter(y=>y.transaction.instructions.length>0),u=[i,...r.map(y=>y.transaction)],c=[this.signers,...r.map(y=>y.signers)],b=[...this.instructionTypes,...r.map(y=>y.instructionTypes).flat()];return(d=this.owner)!=null&&d.signer&&c.forEach(y=>{y.some(A=>A.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:u,signers:c,instructionTypes:b,execute:async y=>{var S;let{sequentially:A,onTxUpdate:w,skipTxCount:T=0,recentBlockHash:L,skipPreflight:k=!0}=y||{},h=L!=null?L:await qe(this.connection,this.blockhashCommitment);if((S=this.owner)!=null&&S.isKeyPair){if(A){let C=[],v=0;for(let V of u){if(++v,v<=T)continue;let P=await $t(this.connection,V,this.signers.find(I=>I.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:k});C.push(P)}return{txIds:C,signedTxs:u}}return{txIds:await await Promise.all(u.map(async C=>(C.recentBlockhash=h,await this.connection.sendRawTransaction(C.serialize(),{skipPreflight:k})))),signedTxs:u}}if(this.signAllTransactions){let C=u.map((V,P)=>(V.recentBlockhash=h,c[P].length&&V.sign(...c[P]),V));Le(C);let v=await this.signAllTransactions(C);if(A){let V=0,P=[],I=async()=>{if(!v[V])return;let B=await this.connection.sendRawTransaction(v[V].serialize(),{skipPreflight:k});P.push({txId:B,status:"sent",signedTx:v[V]}),w==null||w([...P]),V++;let R=!1,N=null,_=null,le=U=>{N!==null&&clearInterval(N),_!==null&&this.connection.removeSignatureListener(_);let q=P.findIndex(ie=>ie.txId===B);if(q>-1){if(P[q].status==="error"||P[q].status==="success")return;P[q].status=U.err?"error":"success"}w==null||w([...P]),U.err||I()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var U;if(R){clearInterval(N);return}try{let q=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:0});q&&(R=!0,clearInterval(N),le({err:((U=q.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",B))}catch(q){R=!0,clearInterval(N),console.error("getTransaction timeout:",q,B)}},It)),_=this.connection.onSignature(B,U=>{if(R){this.connection.removeSignatureListener(_);return}R=!0,le(U)},"confirmed"),this.connection.getSignatureStatus(B)};return await I(),{txIds:P.map(B=>B.txId),signedTxs:v}}else{let V=[];for(let P=0;P<v.length;P+=1){let I=await this.connection.sendRawTransaction(v[P].serialize(),{skipPreflight:k});V.push(I)}return{txIds:V,signedTxs:v}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:o}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:o||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:o})}async buildV0(e){var k;let L=e||{},{lookupTableCache:t={},lookupTableAddress:o=[],forerunCreate:i,recentBlockhash:r}=L,u=be(L,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),c=O(O({},this.cluster==="devnet"?await Ht(this.connection):await Zt(this.connection)),t),b=Array.from(new Set([...o,...this.lookupTableAddress])),d=[];for(let h of b)c[h]===void 0&&d.push(new Ue(h));let y=await Qt({connection:this.connection,address:d});for(let[h,S]of Object.entries(y))c[h]=S;let A=i?Ue.default.toBase58():r!=null?r:await qe(this.connection,this.blockhashCommitment),w=new rt({payerKey:this.feePayer,recentBlockhash:A,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(c));((k=this.owner)==null?void 0:k.signer)&&!this.signers.some(h=>h.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let T=new at(w);return T.sign(this.signers),{builder:this,transaction:T,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async h=>{var V;let{skipPreflight:S=!0,sendAndConfirm:C,notSendToRpc:v}=h||{};if(Le([T]),(V=this.owner)!=null&&V.isKeyPair){let P=await this.connection.sendTransaction(T,{skipPreflight:S});return C&&await ht(this.connection,P),{txId:P,signedTx:T}}if(this.signAllTransactions){let P=await this.signAllTransactions([T]);if(this.signers.length)for(let I of P)try{I.sign(this.signers)}catch{}return{txId:v?"":await this.connection.sendTransaction(P[0],{skipPreflight:S}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:u||{}}}async buildV0MultiTx(e){var d;let{extraPreBuildData:t=[],buildProps:o}=e,{transaction:i}=await this.buildV0(o),r=t.filter(y=>y.builder.instructions.length>0),u=[i,...r.map(y=>y.transaction)],c=[this.signers,...r.map(y=>y.signers)],b=[...this.instructionTypes,...r.map(y=>y.instructionTypes).flat()];return(d=this.owner)!=null&&d.signer&&c.forEach(y=>{y.some(A=>A.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),u.forEach(async(y,A)=>{y.sign(c[A])}),{builder:this,transactions:u,signers:c,instructionTypes:b,buildProps:o,execute:async y=>{var k;let{sequentially:A,onTxUpdate:w,recentBlockHash:T,skipPreflight:L=!0}=y||{};if(T&&u.forEach(h=>h.message.recentBlockhash=T),Le(u),(k=this.owner)!=null&&k.isKeyPair){if(A){let h=[];for(let S of u){let C=await this.connection.sendTransaction(S,{skipPreflight:L});await ht(this.connection,C),h.push(C)}return{txIds:h,signedTxs:u}}return{txIds:await Promise.all(u.map(async h=>await this.connection.sendTransaction(h,{skipPreflight:L}))),signedTxs:u}}if(this.signAllTransactions){let h=await this.signAllTransactions(u);if(A){let S=0,C=[],v=async()=>{if(!h[S])return;let V=await this.connection.sendTransaction(h[S],{skipPreflight:L});C.push({txId:V,status:"sent",signedTx:h[S]}),w==null||w([...C]),S++;let P=!1,I=null,B=null,R=N=>{I!==null&&clearInterval(I),B!==null&&this.connection.removeSignatureListener(B);let _=C.findIndex(le=>le.txId===V);if(_>-1){if(C[_].status==="error"||C[_].status==="success")return;C[_].status=N.err?"error":"success"}w==null||w([...C]),N.err||v()};this.loopMultiTxStatus&&(I=setInterval(async()=>{var N;if(P){clearInterval(I);return}try{let _=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:0});_&&(P=!0,clearInterval(I),R({err:((N=_.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",V))}catch(_){P=!0,clearInterval(I),console.error("getTransaction timeout:",_,V)}},It)),B=this.connection.onSignature(V,N=>{if(P){this.connection.removeSignatureListener(B);return}P=!0,R(N)},"confirmed"),this.connection.getSignatureStatus(V)};return v(),{txIds:[],signedTxs:h}}else{let S=[];for(let C=0;C<h.length;C+=1){let v=await this.connection.sendTransaction(h[C],{skipPreflight:L});S.push(v)}return{txIds:S,signedTxs:h}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuild(e){var w;let A=e||{},{splitIns:t=[],computeBudgetConfig:o}=A,i=be(A,["splitIns","computeBudgetConfig"]),r=o?Tt(o):{instructions:[],instructionTypes:[]},u=this.signers.reduce((T,L)=>W(O({},T),{[L.publicKey.toBase58()]:L}),{}),c=[],b=[],d=[],y=0;if(this.allInstructions.forEach(T=>{let L=[...d,T],k=o?[...r.instructions,...L]:L,S=[...new Set(L.map(C=>C.keys.filter(v=>v.isSigner).map(v=>v.pubkey.toString())).flat()).values()].map(C=>new Ue(C));if(T!==t[y]&&d.length<12&&(nt({instructions:k,payer:this.feePayer,signers:S})||nt({instructions:L,payer:this.feePayer,signers:S})))d.push(T);else{if(d.length===0)throw Error("item ins too big");y+=T===t[y]?1:0,nt({instructions:o?[...r.instructions,...d]:[...d],payer:this.feePayer,signers:S})?c.push(new it().add(...r.instructions,...d)):c.push(new it().add(...d)),b.push(Array.from(new Set(d.map(C=>C.keys.filter(v=>v.isSigner).map(v=>v.pubkey.toString())).flat())).map(C=>u[C]).filter(C=>C!==void 0)),d=[T]}}),d.length>0){let L=[...new Set(d.map(k=>k.keys.filter(h=>h.isSigner).map(h=>h.pubkey.toString())).flat()).values()].map(k=>u[k]).filter(k=>k!==void 0);nt({instructions:o?[...r.instructions,...d]:[...d],payer:this.feePayer,signers:L.map(k=>k.publicKey)})?c.push(new it().add(...r.instructions,...d)):c.push(new it().add(...d)),b.push(L)}return c.forEach(T=>T.feePayer=this.feePayer),(w=this.owner)!=null&&w.signer&&b.forEach(T=>{T.some(L=>L.publicKey.equals(this.owner.publicKey))||T.push(this.owner.signer)}),{builder:this,transactions:c,signers:b,instructionTypes:this.instructionTypes,execute:async T=>{var V;let{sequentially:L,onTxUpdate:k,skipTxCount:h=0,recentBlockHash:S,skipPreflight:C=!0}=T||{},v=S!=null?S:await qe(this.connection,this.blockhashCommitment);if(c.forEach(async(P,I)=>{P.recentBlockhash=v,b[I].length&&P.sign(...b[I])}),Le(c),(V=this.owner)!=null&&V.isKeyPair){if(L){let P=0,I=[];for(let B of c){if(++P,P<=h){I.push("tx skipped");continue}let R=await $t(this.connection,B,this.signers.find(N=>N.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:C});I.push(R)}return{txIds:I,signedTxs:c}}return{txIds:await Promise.all(c.map(async P=>await this.connection.sendRawTransaction(P.serialize(),{skipPreflight:C}))),signedTxs:c}}if(this.signAllTransactions){let P=await this.signAllTransactions(c.slice(h,c.length)),I=[...c.slice(0,h),...P];if(L){let B=0,R=[],N=async()=>{if(!I[B])return;B<h&&(R.push({txId:"",status:"success",signedTx:I[B]}),k==null||k([...R]),B++,N());let _=await this.connection.sendRawTransaction(I[B].serialize(),{skipPreflight:C});R.push({txId:_,status:"sent",signedTx:I[B]}),k==null||k([...R]),B++;let le=!1,U=null,q=null,ie=z=>{U!==null&&clearInterval(U),q!==null&&this.connection.removeSignatureListener(q);let se=R.findIndex(ke=>ke.txId===_);if(se>-1){if(R[se].status==="error"||R[se].status==="success")return;R[se].status=z.err?"error":"success"}k==null||k([...R]),z.err||N()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var z;if(le){clearInterval(U);return}try{let se=await this.connection.getTransaction(_,{commitment:"confirmed",maxSupportedTransactionVersion:0});se&&(le=!0,clearInterval(U),ie({err:((z=se.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",_))}catch(se){le=!0,clearInterval(U),console.error("getTransaction timeout:",se,_)}},It)),q=this.connection.onSignature(_,z=>{if(le){this.connection.removeSignatureListener(q);return}le=!0,ie(z)},"confirmed"),this.connection.getSignatureStatus(_)};return await N(),{txIds:R.map(_=>_.txId),signedTxs:I}}else{let B=[];for(let R=0;R<I.length;R+=1){let N=await this.connection.sendRawTransaction(I[R].serialize(),{skipPreflight:C});B.push(N)}return{txIds:B,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var V;let v=e||{},{computeBudgetConfig:t,splitIns:o=[],lookupTableCache:i={},lookupTableAddress:r=[],insCountLimit:u=12}=v,c=be(v,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),b=O(O({},this.cluster==="devnet"?await Ht(this.connection):await Zt(this.connection)),i),d=Array.from(new Set([...this.lookupTableAddress,...r])),y=[];for(let P of d)b[P]===void 0&&y.push(new Ue(P));let A=await Qt({connection:this.connection,address:y});for(let[P,I]of Object.entries(A))b[P]=I;let w=t?Tt(t):{instructions:[],instructionTypes:[]},T=await qe(this.connection,this.blockhashCommitment),L=this.signers.reduce((P,I)=>W(O({},P),{[I.publicKey.toBase58()]:I}),{}),k=[],h=[],S=[],C=0;if(this.allInstructions.forEach(P=>{let I=[...S,P],B=t?[...w.instructions,...I]:I;if(P!==o[C]&&S.length<u&&(ot({instructions:B,payer:this.feePayer,lookupTableAddressAccount:b})||ot({instructions:I,payer:this.feePayer,lookupTableAddressAccount:b})))S.push(P);else{if(S.length===0)throw Error("item ins too big");C+=P===o[C]?1:0;let R={};for(let N of[...new Set(d)])b[N]!==void 0&&(R[N]=b[N]);if(t&&ot({instructions:[...w.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:T})){let N=new rt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...w.instructions,...S]}).compileToV0Message(Object.values(b));k.push(new at(N))}else{let N=new rt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...S]}).compileToV0Message(Object.values(b));k.push(new at(N))}h.push(Array.from(new Set(S.map(N=>N.keys.filter(_=>_.isSigner).map(_=>_.pubkey.toString())).flat())).map(N=>L[N]).filter(N=>N!==void 0)),S=[P]}}),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=>L[B]).filter(B=>B!==void 0);if(t&&ot({instructions:[...w.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:b,recentBlockhash:T})){let B=new rt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...w.instructions,...S]}).compileToV0Message(Object.values(b));k.push(new at(B))}else{let B=new rt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...S]}).compileToV0Message(Object.values(b));k.push(new at(B))}h.push(I)}return(V=this.owner)!=null&&V.signer&&h.forEach(P=>{P.some(I=>I.publicKey.equals(this.owner.publicKey))||P.push(this.owner.signer)}),k.forEach((P,I)=>{P.sign(h[I])}),{builder:this,transactions:k,buildProps:e,signers:h,instructionTypes:this.instructionTypes,execute:async P=>{var le;let{sequentially:I,onTxUpdate:B,skipTxCount:R=0,recentBlockHash:N,skipPreflight:_=!0}=P||{};if(k.map(async(U,q)=>{h[q].length&&U.sign(h[q]),N&&(U.message.recentBlockhash=N)}),Le(k),(le=this.owner)!=null&&le.isKeyPair){if(I){let U=0,q=[];for(let ie of k){if(++U,U<=R){console.log("skip tx: ",U),q.push("tx skipped");continue}let z=await this.connection.sendTransaction(ie,{skipPreflight:_});await ht(this.connection,z),q.push(z)}return{txIds:q,signedTxs:k}}return{txIds:await Promise.all(k.map(async U=>await this.connection.sendTransaction(U,{skipPreflight:_}))),signedTxs:k}}if(this.signAllTransactions){let U=await this.signAllTransactions(k.slice(R,k.length)),q=[...k.slice(0,R),...U];if(I){let ie=0,z=[],se=async()=>{if(!q[ie])return;if(ie<R){z.push({txId:"",status:"success",signedTx:q[ie]}),B==null||B([...z]),ie++,se();return}let ke=await this.connection.sendTransaction(q[ie],{skipPreflight:_});z.push({txId:ke,status:"sent",signedTx:q[ie]}),B==null||B([...z]),ie++;let He=!1,Ve=null,yt=null,gn=Ce=>{Ve!==null&&clearInterval(Ve),yt!==null&&this.connection.removeSignatureListener(yt);let Te=z.findIndex(Oo=>Oo.txId===ke);if(Te>-1){if(z[Te].status==="error"||z[Te].status==="success")return;z[Te].status=Ce.err?"error":"success"}B==null||B([...z]),Ce.err||se()};this.loopMultiTxStatus&&(Ve=setInterval(async()=>{var Ce;if(He){clearInterval(Ve);return}try{let Te=await this.connection.getTransaction(ke,{commitment:"confirmed",maxSupportedTransactionVersion:0});Te&&(He=!0,clearInterval(Ve),gn({err:((Ce=Te.meta)==null?void 0:Ce.err)||null}),console.log("tx status from getTransaction:",ke))}catch(Te){He=!0,clearInterval(Ve),console.error("getTransaction timeout:",Te,ke)}},It)),yt=this.connection.onSignature(ke,Ce=>{if(He){this.connection.removeSignatureListener(yt);return}He=!0,gn(Ce)},"confirmed"),this.connection.getSignatureStatus(ke)};return se(),{txIds:[],signedTxs:q}}else{let ie=[];for(let z=0;z<q.length;z+=1){let se=await this.connection.sendTransaction(q[z],{skipPreflight:_});ie.push(se)}return{txIds:ie,signedTxs:q}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:c||{}}}};var Jt=(...s)=>s.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),ce=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=E(t)}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(Jt(e))}logInfo(...e){this.logger.info(Jt(e))}logAndCreateError(...e){let t=Jt(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Sl,SystemProgram as xl}from"@solana/web3.js";import Ll from"bn.js";import{createCloseAccountInstruction as Fl,createInitializeAccountInstruction as vl,createTransferInstruction as Vl,TOKEN_PROGRAM_ID as _l}from"@solana/spl-token";import{Keypair as pl,PublicKey as fl}from"@solana/web3.js";import gl from"bn.js";import{TOKEN_PROGRAM_ID as wl}from"@solana/spl-token";import{PublicKey as wi}from"@solana/web3.js";import En,{isBN as Dn}from"bn.js";import{bits as ci,BitStructure as Pc,blob as li,Blob as Ac,cstr as wc,f32 as kc,f32be as Tc,f64 as hc,f64be as Ic,greedy as Bc,Layout as mi,ns64 as Sc,ns64be as Kc,nu64 as xc,nu64be as Cc,offset as di,s16 as Rc,s16be as Lc,s24 as Oc,s24be as Nc,s32 as pi,s32be as Mc,s40 as Fc,s40be as vc,s48 as Vc,s48be as _c,s8 as Ec,seq as fi,struct as Dc,Structure as yi,u16 as bi,u16be as Wc,u24 as qc,u24be as Uc,u32 as gi,u32be as Gc,u40 as zc,u40be as Xc,u48 as Yc,u48be as Qc,u8 as Pi,UInt as Ai,union as Zc,Union as Hc,unionLayoutDiscriminator as jc,utf8 as $c}from"@solana/buffer-layout";var St=mi,Fn=yi;var en=Ai;var vn=Pi,J=bi;var Kt=gi;var fe=pi;var Vn=fi;var F=li;var tn=ci,_n=di;var Ne=class extends St{constructor(t,o,i){super(t,i);this.blob=F(t),this.signed=o}decode(t,o=0){let i=new En(this.blob.decode(t,o),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,o,i=0){return typeof t=="number"&&(t=new En(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),o,i)}},xt=class extends St{constructor(t){super(8,t);this._lower=tn(Kt(),!1),this._upper=tn(Kt(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,o=0){let i=this._lower.decode(t,o),r=this._upper.decode(t,o+this._lower.span);return O(O({},i),r)}encode(t,o,i=0){return this._lower.encode(t,o,i)+this._upper.encode(t,o,i+this._lower.span)}};function p(s){return new en(1,s)}function Y(s){return new en(4,s)}function n(s){return new Ne(8,!1,s)}function M(s){return new Ne(16,!1,s)}function Wn(s){return new Ne(1,!0,s)}function Ge(s){return new Ne(8,!0,s)}function qn(s){return new Ne(16,!0,s)}var st=class extends St{constructor(t,o,i,r){super(t.span,r);this.layout=t,this.decoder=o,this.encoder=i}decode(t,o){return this.decoder(this.layout.decode(t,o))}encode(t,o,i){return this.layout.encode(this.encoder(t),o,i)}getSpan(t,o){return this.layout.getSpan(t,o)}};function a(s){return new st(F(32),e=>new wi(e),e=>e.toBuffer(),s)}function de(s){return new st(vn(),ki,Ti,s)}function ki(s){if(s===0)return!1;if(s===1)return!0;throw new Error("Invalid bool: "+s)}function Ti(s){return s?1:0}function Un(s,e){let t=Kt("length"),o=f([t,g(s,_n(t,-t.span),"values")]);return new st(o,({values:i})=>i,i=>({values:i}),e)}var nn=class extends Fn{decode(e,t){return super.decode(e,t)}};function f(s,e,t){return new nn(s,e,t)}function g(s,e,t){let o,i=typeof e=="number"?e:Dn(e)?e.toNumber():new Proxy(e,{get(r,u){if(!o){let c=Reflect.get(r,"count");o=Dn(c)?c.toNumber():c,Reflect.set(r,"count",o)}return Reflect.get(r,u)},set(r,u,c){return u==="count"&&(o=c),Reflect.set(r,u,c)}});return Vn(s,i,t)}var Ct=f([a("mint"),a("owner"),n("amount"),Y("delegateOption"),a("delegate"),p("state"),Y("isNativeOption"),n("isNative"),n("delegatedAmount"),Y("closeAuthorityOption"),a("closeAuthority")]);import{PublicKey as Sg,SystemProgram as Kg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Cg}from"@solana/spl-token";import{PublicKey as mm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as pm}from"@solana/spl-token";import{PublicKey as K}from"@solana/web3.js";var zn=new K("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Xn=new K("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Yn=new K("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),on=new K("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),gm=new K("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Ii=new K("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Qn=new K("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Zn=new K("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Pm=new K("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Bi=new K("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Hn=new K("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Si=new K("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ki=new K("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),jn=new K("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Am=new K("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),xi=new K("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),rn=new K("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ci=new K("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),wm=new K("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ri=new K("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Li=new K("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Oi=new K("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),km=new K("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Tm=new K("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),hm=new K("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Im=new K("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Bm=new K("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var xe={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 Eg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as oy,TOKEN_2022_PROGRAM_ID as iy,TOKEN_PROGRAM_ID as ry}from"@solana/spl-token";import{PublicKey as sy}from"@solana/web3.js";import cy from"bn.js";import my from"decimal.js";import{TOKEN_PROGRAM_ID as Em}from"@solana/spl-token";import{PublicKey as Um}from"@solana/web3.js";var Ni=f([Y("mintAuthorityOption"),a("mintAuthority"),n("supply"),p("decimals"),p("isInitialized"),Y("freezeAuthorityOption"),a("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 D from"bn.js";var Q=new D(1).shln(64),Xe=64,Mi=new D(1).shln(128),ut=new D(1).shln(64).subn(1),Fi=new D(1).shln(128).subn(1),Be=-443636,Se=443636,Me=new D("4295048016"),Fe=new D("79226673521066979257578248091"),$n=new D("59543866431248"),Jn=new D("184467440737095516"),eo=new D("15793534762490258745"),to=16;var an=60,td=new D("18446743708227953217"),no=[{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)}],Ke=1e6;var Lt=1e5,ct=1e4,oo=1e4,io=1e5;var lt=3,ro=100;var ao=10,so=100,Ot=14;var x=new D(0),we=new D(1),nd=new D(-1);var od=new D("18446744073700000000");var vi=f([F(8),p("bump"),J("index"),a("owner"),Y("protocolFeeRate"),Y("tradeFeeRate"),J("tickSpacing"),Y("fundFeeRate"),g(Y(),1),a("fundOwner"),g(n(),3)]),Vi=f([Y("blockTimestamp"),Ge("tickCumulative"),g(n(),4)]),uo=f([F(8),de("initialized"),n("recentEpoch"),J("observationIndex"),a("poolId"),g(Vi,ro,"observations"),g(n(),4)]),_i=f([J("filterPeriod"),J("decayPeriod"),J("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),fe("tickSpacingIndexReference"),Y("volatilityReference"),Y("volatilityAccumulator"),n("lastUpdateTimestamp"),g(p(),46)]),Ei=f([p("state"),n("openTime"),n("endTime"),n("lastUpdateTime"),M("emissionsPerSecondX64"),n("totalEmissioned"),n("claimed"),a("mint"),a("vault"),a("creator"),M("growthGlobalX64")]),sn=f([F(8),p("bump"),a("configId"),a("creator"),a("mintA"),a("mintB"),a("vaultA"),a("vaultB"),a("observationId"),p("mintDecimalsA"),p("mintDecimalsB"),J("tickSpacing"),M("liquidity"),M("sqrtPriceX64"),fe("tickCurrent"),Y(),M("feeGrowthGlobalX64A"),M("feeGrowthGlobalX64B"),n("protocolFeesTokenA"),n("protocolFeesTokenB"),g(M(),4),p("status"),p("feeOn"),F(6),g(Ei,lt,"rewardInfos"),F(8*16,"tickArrayBitmap"),g(n(),4),n("fundFeesTokenA"),n("fundFeesTokenB"),n("startTime"),n("recentEpoch"),_i.replicate("dynamicFeeInfo"),g(n(),46)]),Di=f([M("growthInsideLastX64"),n("rewardAmountOwed")]),Wi=f([F(8),p("bump"),a("nftMint"),a("poolId"),fe("tickLower"),fe("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),g(Di,lt,"rewardInfos"),n("recentEpoch"),g(n(),7)]),sd=f([F(8),p("bump"),a("poolId"),fe("tickLower"),fe("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),g(M(),lt,"rewardGrowthInside"),n("recentEpoch"),g(n(),7)]),qi=f([fe("tick"),qn("liquidityNet"),M("liquidityGross"),M("feeGrowthOutsideX64A"),M("feeGrowthOutsideX64B"),g(M(),lt,"rewardGrowthsOutsideX64"),n("orderPhase"),n("ordersAmount"),n("partFilledOrdersRemaining"),M("unfilledRatioX64"),g(Y(),3)]),co=f([F(8),a("poolId"),fe("startTickIndex"),g(qi,an,"ticks"),p("initializedTickCount"),n("recentEpoch"),g(p(),107)]),Ui=f([F(8),p("bump"),g(a(),ao,"operationOwners"),g(a(),so,"whitelistMints")]),Gi=f([F(8),a("poolId"),a("owner"),fe("tick"),de("zeroForOne"),n("orderPhase"),n("totalAmount"),n("filledAmount"),n("settleBase"),n("settleOutput"),n("openTime"),M("unfilledRatioX64"),g(n(),4)]),lo=f([F(8),a("poolId"),F(8*8*Ot,"positiveTickArrayBitmap"),F(8*8*Ot,"negativeTickArrayBitmap")]),ud=f([F(8),J("index"),J("filterPeriod"),J("decayPeriod"),J("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),g(n(),8)]),zi=f([F(8),a("wallet"),p("nonceIndex"),n("orderNonce"),g(n(),4)]),cd=f([n(),p("bump"),a("owner"),a("poolId"),a("positionId"),a("nftAccount"),g(n(),8)]),Xi=f([F(8),p("bump"),a("lockOwner"),a("poolId"),a("positionId"),a("nftAccount"),a("lockNftMint"),n("recentEpoch"),g(n(),8)]);import dd from"bn.js";var hd=Buffer.from("amm_config","utf8"),Qi=Buffer.from("pool","utf8"),Zi=Buffer.from("pool_vault","utf8"),Id=Buffer.from("pool_reward_vault","utf8"),Bd=Buffer.from("position","utf8"),Sd=Buffer.from("tick_array","utf8"),Kd=Buffer.from("operation","utf8"),xd=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Cd=Buffer.from("observation","utf8"),Rd=Buffer.from("support_mint","utf8"),Ld=Buffer.from("dynamic_fee_config","utf8"),Od=Buffer.from("permission","utf8");var Nd=Buffer.from("locked_position","utf8");import{sha256 as sr}from"js-sha256";import Hi from"bn.js";import Vd from"decimal.js";function j(s,e,t){if(t.isZero())throw new Error("Division by zero");return s.mul(e).div(t)}function Z(s,e,t){if(t.isZero())throw new Error("Division by zero");let o=s.mul(e),i=o.div(t);return o.mod(t).isZero()?i:i.addn(1)}function Nt(s,e){return s.div(e).add(s.mod(e).isZero()?x:we)}var Ed=new Hi(1).shln(256).subn(1);function mo(s){return s.isZero()?-1:s.bitLength()-1}import Jd from"bn.js";import ee from"bn.js";import Ye 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>=Be&&e<=Se}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${Be}, ${Se}]`)}static getSqrtPriceAtTick(e){this.checkTick(e);let t=Math.abs(e),o=Q.clone();for(let{bit:i,factor:r}of no)(t&1<<i)!==0&&(o=j(o,r,Q));return e>0&&(o=j(Q,Q,o)),o}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:o}){if(o){let i=H.getPriceAtTick(t,!1);return j(e,i,Q)}else{let i=H.getPriceAtTick(t,!0);return j(e,Q,i)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:o}){if(o){let i=H.getPriceAtTick(t,!0);return Z(e,i,Q)}else{let i=H.getPriceAtTick(t,!1);return Z(e,Q,i)}}static limitOrderUnfilledAmount({tick:e}){return e.ordersAmount.add(e.partFilledOrdersRemaining)}static matchLimitOrder({tick:e,swapAmount:t,swapDirectionZeroForOne:o,isBaseInput:i,feeRate:r,isFeeOnInput:u}){let c={amountIn:x,amountOut:x,ammFeeAmount:x},b=this.limitOrderUnfilledAmount({tick:e});if(t.isZero()||b.isZero())return c;if(i)u?(c.ammFeeAmount=Z(t,new ee(r),pe),c.amountIn=t.sub(c.ammFeeAmount)):c.amountIn=t,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}),u&&(c.ammFeeAmount=Z(c.amountIn,new ee(r),pe.sub(new ee(r)))));else{let A=ee.min(t,b);u?c.amountOut=A:c.amountOut=ee.min(Z(A,pe,pe.sub(new ee(r))),b),c.amountIn=this.getLimitOrderInput({amountOut:c.amountOut,tick:e.tick,zeroForOne:!o}),u&&(c.ammFeeAmount=Z(c.amountIn,new ee(r),pe.sub(new ee(r))))}let d=x;e.partFilledOrdersRemaining.gt(x)&&(d=ee.min(e.partFilledOrdersRemaining,c.amountOut),d.gt(x)&&(e.unfilledRatioX64=j(e.unfilledRatioX64,e.partFilledOrdersRemaining.sub(d),e.partFilledOrdersRemaining)),e.partFilledOrdersRemaining=e.partFilledOrdersRemaining.sub(d));let y=c.amountOut.sub(d);if(y.gt(x)){if(!e.partFilledOrdersRemaining.isZero())throw Error("!tick.partFilledOrdersRemaining.isZero()");if(e.ordersAmount.lt(y))throw Error("InvalidLimitOrderAmount");e.orderPhase=e.orderPhase.add(we),e.unfilledRatioX64=j(Q,e.ordersAmount.sub(y),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(y),e.ordersAmount=x}return u||(c.ammFeeAmount=Z(c.amountOut,new ee(r),pe),c.amountOut=c.amountOut.sub(c.ammFeeAmount)),c}static getPriceAtTick(e,t){let o=this.getSqrtPriceAtTick(e);return t?o.mul(o).add(Q.subn(1)).div(Q):o.mul(o).div(Q)}static getTickAtSqrtPrice(e){if(!(e.gte(Me)&&e.lte(Fe)))throw Error("SqrtPriceX64");let t=mo(e),o=t-64,i;o>=0?i=new ee(o).shln(32):i=new ee(-o).shln(32).neg();let r;t>=64?r=e.shrn(t-63):r=e.shln(63-t);let u=new ee(0),c=new ee(1).shln(63);for(let h=0;h<to&&!c.isZero();h++){r=r.mul(r);let S=r.shrn(127).toNumber();r=r.shrn(63+S),S&&(u=u.add(c)),c=c.shrn(1)}let b=u.shrn(32),y=i.add(b).mul($n),A=y.sub(Jn),w=y.add(eo),T=this.signedShrn64(A),L=this.signedShrn64(w);return T===L?T:H.getSqrtPriceAtTick(L).lte(e)?L:T}static signedShrn64(e){if(e.isNeg()){let t=new ee(1).shln(64),o=e.div(t);return!e.mod(t).isZero()&&e.isNeg()?o.subn(1).toNumber():o.toNumber()}else return e.shrn(64).toNumber()}static sqrtPriceX64ToPrice(e,t,o){let i=e.mul(e),r=t-o,u=20,c=new ee(10).pow(new ee(u)),b=i.mul(c),d=new ee(1).shln(128),A=b.div(d).toString();for(;A.length<=u;)A="0"+A;let w=A.slice(0,-u),T=A.slice(-u),L=w+"."+T;return new Ye(L).mul(new Ye(10).pow(r))}static tickToPrice(e,t,o){let i=H.getSqrtPriceAtTick(e);return this.sqrtPriceX64ToPrice(i,t,o)}static priceToTick(e,t,o){let r=e.div(Math.pow(10,t-o)).log().div(new Ye(1.0001).log()).floor();return Math.max(Be,Math.min(Se,r.toNumber()))}static priceToSqrtPriceX64(e,t,o){let u=e.div(Math.pow(10,t-o)).sqrt().mul(new Ye(2).pow(64));return new ee(u.toFixed(0))}static toTickIndex(e,t){return e>=0?e-e%t:e-e%t-(e%t!==0?t:0)}static getPriceAndTick({price:e,mintADecimals:t,mintBDecimals:o,zeroForOne:i,tickSpacing:r}){let u=e.clamp(1/10**Math.max(t,o),Number.MAX_SAFE_INTEGER);i||(u=new Ye(1).div(u));let c=H.toTickIndex(H.priceToTick(u,t,o),r),b=H.tickToPrice(c,t,o);return{price:i?b:new Ye(1).div(b),tick:c}}};import Ft from"bn.js";import po from"decimal.js";var me=class{static getDeltaAmountAUnsigned(e,t,o,i){e.gt(t)&&([e,t]=[t,e]);let r=o.shln(Xe),u=t.sub(e);if(!e.gt(x))throw Error("!sqrtPriceX64A.gt(BN_ZERO)");let c=i?Nt(Z(r,u,t),e):j(r,u,t).div(e);if(c.gt(ut))throw Error("MaxTokenOverflow");return c}static getDeltaAmountBUnsigned(e,t,o,i){e.gt(t)&&([e,t]=[t,e]);let r=i?Z(o,t.sub(e),Q):j(o,t.sub(e),Q);if(r.gt(ut))throw Error("MaxTokenOverflow");return r}static addDelta(e,t){if(t.isNeg()){let o=t.neg();if(e.lt(o))throw new Error("Liquidity underflow");return e.sub(o)}else return e.add(t)}static getLiquidityFromAmountA(e,t,o){if(o.isZero())return x;e.gt(t)&&([e,t]=[t,e]);let i=j(e,t,Q),r=t.sub(e);return j(o,i,r)}static getLiquidityFromAmountB(e,t,o){if(o.isZero())return x;e.gt(t)&&([e,t]=[t,e]);let i=t.sub(e);return j(o,Q,i)}static getLiquidityFromAmounts(e,t,o,i,r){if(t.gt(o)&&([t,o]=[o,t]),e.lte(t))return this.getLiquidityFromAmountA(t,o,i);if(e.lt(o)){let u=this.getLiquidityFromAmountA(e,o,i),c=this.getLiquidityFromAmountB(t,e,r);return u.lt(c)?u:c}else return this.getLiquidityFromAmountB(t,o,r)}static getAmountsForLiquidity(e,t,o,i,r){t.gt(o)&&([t,o]=[o,t]);let u=x,c=x;return e.lte(t)?u=this.getDeltaAmountAUnsigned(t,o,i,r):e.lt(o)?(u=this.getDeltaAmountAUnsigned(e,o,i,r),c=this.getDeltaAmountBUnsigned(t,e,i,r)):c=this.getDeltaAmountBUnsigned(t,o,i,r),{amountA:u,amountB:c}}static getAmountsFromLiquidityWithSlippage(e,t,o,i,r,u,c){let{amountA:b,amountB:d}=this.getAmountsForLiquidity(e,t,o,i,u),y=r?1+c:1-c,A=new Ft(new po(b.toString()).mul(y).toFixed(0)),w=new Ft(new po(d.toString()).mul(y).toFixed(0));return{amountSlippageA:A,amountSlippageB:w}}static getLiquidityAndAmountsFromAmount({sqrtPriceCurrentX64:e,sqrtPriceLowerX64:t,sqrtPriceUpperX64:o,amountInfo:i}){let r;if(i.type==="liquidity")r=i.amount;else if(i.type==="amountA")r=e.gte(o)?x:this.getLiquidityFromAmountA(Ft.max(e,t),o,i.amount);else if(i.type==="amountB")r=e.lte(t)?x:this.getLiquidityFromAmountB(t,Ft.min(e,o),i.amount);else throw Error("amount info type check error");return O({liquidity:r},this.getAmountsForLiquidity(e,t,o,i.amount,!0))}};import{PublicKey as kp}from"@solana/web3.js";import fo from"bn.js";import{TOKEN_2022_PROGRAM_ID as Rp,TOKEN_PROGRAM_ID as Lp}from"@solana/spl-token";import Fp from"decimal.js";import mp from"bn.js";var mt=class{static tickSpacingIndexFromTick(e,t){return Math.floor(e/t)}},Qe=class{static getDynamicFeeInfo({poolInfo:e}){if(!(e.dynamicFeeInfo.filterPeriod===0&&e.dynamicFeeInfo.decayPeriod===0&&e.dynamicFeeInfo.reductionFactor===0&&e.dynamicFeeInfo.dynamicFeeControl===0&&e.dynamicFeeInfo.maxVolatilityAccumulator===0&&e.dynamicFeeInfo.tickSpacingIndexReference===0&&e.dynamicFeeInfo.volatilityReference===0&&e.dynamicFeeInfo.volatilityAccumulator===0&&e.dynamicFeeInfo.lastUpdateTimestamp.isZero()))return e.dynamicFeeInfo}static updateReference({dynamicFeeInfo:e,tickSpacingIndex:t,currentTimestamp:o}){let i=o-e.lastUpdateTimestamp.toNumber();i<e.filterPeriod||(i<e.decayPeriod?(e.tickSpacingIndexReference=t,e.volatilityReference=Math.floor(e.volatilityAccumulator*e.reductionFactor/oo),e.lastUpdateTimestamp=new fo(o)):(e.tickSpacingIndexReference=t,e.volatilityReference=0,e.lastUpdateTimestamp=new fo(o)))}static updateVolatilityAccumulator({state:e,tickSpacingIndex:t}){let o=Math.abs(e.tickSpacingIndexReference-t),i=e.volatilityReference+o*ct;e.volatilityAccumulator=Math.min(i,e.maxVolatilityAccumulator)}};import Xp from"bn.js";var pt=class{static getNextSqrtPriceFromAmountARoundingUp(e,t,o,i){if(o.isZero())return e;let r=t.shln(Xe);if(i){let u=o.mul(e),c=r.add(u);if(c.gte(r))return Z(r,e,c);let b=j(r,we,e);return Z(r,we,b.add(o))}else{let u=o.mul(e);if(r.lte(u))throw new Error("Insufficient liquidity for token0 removal");let c=r.sub(u);return Z(r,e,c)}}static getNextSqrtPriceFromAmountBRoundingDown(e,t,o,i){if(o.isZero())return e;if(i){let r=o.shln(Xe).div(t);return e.add(r)}else{let r=Nt(o.shln(Xe),t);return e.sub(r)}}static getNextSqrtPriceFromInput(e,t,o,i){if(!e.gt(x))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(x))throw Error("liquidity.gt(BN_ZERO)");return i?this.getNextSqrtPriceFromAmountARoundingUp(e,t,o,!0):this.getNextSqrtPriceFromAmountBRoundingDown(e,t,o,!0)}static getNextSqrtPriceFromOutput(e,t,o,i){if(!e.gt(x))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(x))throw Error("liquidity.gt(BN_ZERO)");return i?this.getNextSqrtPriceFromAmountBRoundingDown(e,t,o,!1):this.getNextSqrtPriceFromAmountARoundingUp(e,t,o,!1)}};function oe(s){let e=`global:${s}`;return Buffer.from(sr.digest(e)).slice(0,8)}uo.span;var Gf=E("Raydium_Clmm"),zf={createPool:oe("create_pool"),createCustomizablePool:oe("create_customizable_pool"),createPermissionedPool:oe("create_permissioned_pool"),openPositionV2:oe("open_position_v2"),openPositionWithToken22Nft:oe("open_position_with_token22_nft"),closePosition:oe("close_position"),increaseLiquidityV2:oe("increase_liquidity_v2"),decreaseLiquidityV2:oe("decrease_liquidity_v2"),initializeReward:oe("initialize_reward"),setRewardParams:oe("set_reward_params"),updateRewardInfos:oe("update_reward_infos"),collectRemainingRewards:oe("collect_remaining_rewards"),swapV2:oe("swap_v2"),openLimitOrder:oe("open_limit_order"),increaseLimitOrder:oe("increase_limit_order"),decreaseLimitOrder:oe("decrease_limit_order"),settleLimitOrder:oe("settle_limit_order"),closeLimitOrder:oe("close_limit_order")};import{PublicKey as pn}from"@solana/web3.js";var mr=f([p("instruction")]),dr=f([p("instruction")]),pr=f([n("rewardState"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardLastUpdateTime"),n("totalReward"),n("totalRewardEmissioned"),n("rewardClaimed"),n("rewardPerSecond"),M("accRewardPerShare"),a("rewardVault"),a("rewardMint"),a("rewardSender"),n("rewardType"),g(n(),15,"padding")]),fr=f([n("state"),n("nonce"),a("lpVault"),a("rewardVault"),a(),a(),n(),n(),n("totalReward"),M("perShareReward"),n("lastSlot"),n("perSlotReward")]),yr=f([n("state"),n("nonce"),a("lpVault"),a("rewardVaultA"),n("totalRewardA"),M("perShareRewardA"),n("perSlotRewardA"),p("option"),a("rewardVaultB"),F(7),n("totalRewardB"),M("perShareRewardB"),n("perSlotRewardB"),n("lastSlot"),a()]),br=f([n(),n("state"),n("nonce"),n("validRewardTokenNum"),M("rewardMultiplier"),n("rewardPeriodMax"),n("rewardPeriodMin"),n("rewardPeriodExtend"),a("lpMint"),a("lpVault"),g(pr,5,"rewardInfos"),a("creator"),a(),g(n(),32,"padding")]),gr=new Proxy(fr,{get(s,e,t){return e==="decode"?(...o)=>{let i=s.decode(...o);return W(O({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(s,e,t)}}),Pr=new Proxy(yr,{get(s,e,t){return e==="decode"?(...o)=>{let i=s.decode(...o);return W(O({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(s,e,t)}}),Po=new Proxy(br,{get(s,e,t){return e==="decode"?(...o)=>{let i=s.decode(...o);return W(O({},i),{version:6,rewardInfos:i.rewardInfos.map(r=>{var u;return W(O({},r),{rewardType:((u=Object.entries(ft).find(c=>String(c[1])===r.rewardType.toString()))!=null?u:["Standard SPL"])[0]})})})}:Reflect.get(s,e,t)}}),Ar=f([n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),wr=f([p("instruction"),n("nonce"),g(Ar,5,"rewardTimeInfo")]),kr=f([p("instruction"),n("rewardReopenTime"),n("rewardEndTime"),n("rewardPerSecond")]),Tr=f([p("instruction"),n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),Gy=f([n("state"),a("id"),a("owner"),n("deposited"),g(n(),1,"rewardDebts")]),Ao=f([n("state"),a("id"),a("owner"),n("deposited"),g(M(),1,"rewardDebts"),n(""),n("voteLockedBalance"),g(n(),15)]),zy=f([n("state"),a("id"),a("owner"),n("deposited"),g(n(),2,"rewardDebts")]),hr=f([n("state"),a("id"),a("owner"),n("deposited"),g(M(),2,"rewardDebts"),g(n(),17)]),Ir=f([n(),n("state"),a("id"),a("owner"),n("deposited"),g(M(),5,"rewardDebts"),g(n(),16)]),Br=f([p("instruction"),n("amount")]),Sr=f([a("mint"),a("grantAuthority"),n("baselineVoteWeightScaledFactor"),n("maxExtraLockupVoteWeightScaledFactor"),n("lockupSaturationSecs"),Wn("digitShift"),g(p(),7,"reserved1"),g(n(),7,"reserved2")]),Kr=f([F(8),a("governanceProgramId"),a("realm"),a("realmGoverningTokenMint"),a("realmAuthority"),g(p(),32,"reserved1"),g(Sr,4,"votingMints"),Ge("timeOffset"),p("bump"),g(p(),7,"reserved2"),g(n(),11,"reserved3")]),xr=f([Ge("startTime"),Ge("endTime"),p("kind"),g(p(),15,"reserved")]),Cr=f([g(xr,1,"lockup"),n("amountDeposited_native"),n("amountInitiallyLockedNative"),de("isUsed"),de("allowClawback"),p("votingMintConfigIdx"),g(p(),29,"reserved")]),Rr=f([F(8),a("voterAuthority"),a("registrar"),g(Cr,32,"deposits"),p("voterBump"),p("voterWweightRecordBump"),g(p(),94,"reserved")]);import{NATIVE_MINT as eb}from"@solana/spl-token";var tb=E("Raydium_farm_config"),Lr=new pn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Or=new pn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var nb=new pn("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var ft={"Standard SPL":0,"Option tokens":1},wo={[zn.toString()]:3,[Xn.toString()]:4,[Yn.toString()]:5,[on.toString()]:6,[xe.FARM_PROGRAM_ID_V3.toString()]:3,[xe.FARM_PROGRAM_ID_V4.toString()]:4,[xe.FARM_PROGRAM_ID_V5.toString()]:5,[xe.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as Wb,SystemProgram as qb,SYSVAR_CLOCK_PUBKEY as Ub,SYSVAR_RENT_PUBKEY as Gb,TransactionInstruction as zb}from"@solana/web3.js";import Yb from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Zb,createAssociatedTokenAccountIdempotentInstruction as Hb,TOKEN_PROGRAM_ID as jb}from"@solana/spl-token";import gb from"bn.js";import{PublicKey as ub}from"@solana/web3.js";import lb from"bn.js";var Rb=E("Raydium.farm.util");var ug=E("Raydium_farm_instruction"),cg={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 Hg from"bn.js";import{PublicKey as iw}from"@solana/web3.js";import{AccountLayout as sw,MintLayout as uw,NATIVE_MINT as cw,TOKEN_PROGRAM_ID as mw}from"@solana/spl-token";import Jg from"bn.js";import To from"bn.js";var Dr=new To(25),Wr=new To(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as kP,TOKEN_PROGRAM_ID as TP}from"@solana/spl-token";import{PublicKey as IP,SystemProgram as BP,SYSVAR_RENT_PUBKEY as SP,TransactionInstruction as KP}from"@solana/web3.js";import FP from"bn.js";var qr=f([p("instruction"),n("amountIn"),n("minAmountOut")]),Ur=f([p("instruction"),n("maxAmountIn"),n("amountOut")]),gP=f([p("instruction"),p("nonce")]),Gr=f([p("instruction"),p("nonce"),n("startTime")]),ho=f([n("status"),n("nonce"),n("maxOrder"),n("depth"),n("baseDecimal"),n("quoteDecimal"),n("state"),n("resetFlag"),n("minSize"),n("volMaxCutRatio"),n("amountWaveRatio"),n("baseLotSize"),n("quoteLotSize"),n("minPriceMultiplier"),n("maxPriceMultiplier"),n("systemDecimalValue"),n("minSeparateNumerator"),n("minSeparateDenominator"),n("tradeFeeNumerator"),n("tradeFeeDenominator"),n("pnlNumerator"),n("pnlDenominator"),n("swapFeeNumerator"),n("swapFeeDenominator"),n("baseNeedTakePnl"),n("quoteNeedTakePnl"),n("quoteTotalPnl"),n("baseTotalPnl"),n("poolOpenTime"),n("punishPcAmount"),n("punishCoinAmount"),n("orderbookToInitTime"),M("swapBaseInAmount"),M("swapQuoteOutAmount"),n("swapBase2QuoteFee"),M("swapQuoteInAmount"),M("swapBaseOutAmount"),n("swapQuote2BaseFee"),a("baseVault"),a("quoteVault"),a("baseMint"),a("quoteMint"),a("lpMint"),a("openOrders"),a("marketId"),a("marketProgramId"),a("targetOrders"),a("withdrawQueue"),a("lpVault"),a("owner"),n("lpReserve"),g(n(),3,"padding")]),PP=f([n("accountType"),n("status"),n("nonce"),n("maxOrder"),n("depth"),n("baseDecimal"),n("quoteDecimal"),n("state"),n("resetFlag"),n("minSize"),n("volMaxCutRatio"),n("amountWaveRatio"),n("baseLotSize"),n("quoteLotSize"),n("minPriceMultiplier"),n("maxPriceMultiplier"),n("systemDecimalsValue"),n("abortTradeFactor"),n("priceTickMultiplier"),n("priceTick"),n("minSeparateNumerator"),n("minSeparateDenominator"),n("tradeFeeNumerator"),n("tradeFeeDenominator"),n("pnlNumerator"),n("pnlDenominator"),n("swapFeeNumerator"),n("swapFeeDenominator"),n("baseNeedTakePnl"),n("quoteNeedTakePnl"),n("quoteTotalPnl"),n("baseTotalPnl"),n("poolOpenTime"),n("punishPcAmount"),n("punishCoinAmount"),n("orderbookToInitTime"),M("swapBaseInAmount"),M("swapQuoteOutAmount"),M("swapQuoteInAmount"),M("swapBaseOutAmount"),n("swapQuote2BaseFee"),n("swapBase2QuoteFee"),a("baseVault"),a("quoteVault"),a("baseMint"),a("quoteMint"),a("lpMint"),a("modelDataAccount"),a("openOrders"),a("marketId"),a("marketProgramId"),a("targetOrders"),a("owner"),g(n(),64,"padding")]),zr=f([p("instruction"),n("baseAmountIn"),n("quoteAmountIn"),n("fixedSide"),n("otherAmountMin")]),Xr=f([p("instruction"),n("lpAmount"),n("baseAmountMin"),n("quoteAmountMin")]);var Yr=f([n("fee")]);var _P=E("Raydium_liquidity_instruction");var Qr=5e4,Zr=f([n("x"),n("y"),n("price")]),qP=f([n("accountType"),n("status"),n("multiplier"),n("validDataCount"),g(Zr,Qr,"DataElement")]);import{PublicKey as eA}from"@solana/web3.js";import nA from"decimal.js";import{TOKEN_PROGRAM_ID as iA}from"@solana/spl-token";import{PublicKey as XP}from"@solana/web3.js";var ZP=E("Raydium_liquidity_serum");import Lw from"bn.js";import Nw from"decimal.js";import{TOKEN_PROGRAM_ID as LA}from"@solana/spl-token";import{PublicKey as NA}from"@solana/web3.js";import FA from"bn.js";import{SystemProgram as PA,SYSVAR_RENT_PUBKEY as AA,Transaction as wA,TransactionInstruction as kA}from"@solana/web3.js";import{createInitializeAccountInstruction as hA,TOKEN_PROGRAM_ID as IA}from"@solana/spl-token";function Hr(s="accountFlags"){let e=new xt(s);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var jr=f([F(5),Hr("accountFlags"),a("ownAddress"),n("vaultSignerNonce"),a("baseMint"),a("quoteMint"),a("baseVault"),n("baseDepositsTotal"),n("baseFeesAccrued"),a("quoteVault"),n("quoteDepositsTotal"),n("quoteFeesAccrued"),n("quoteDustThreshold"),a("requestQueue"),a("eventQueue"),a("bids"),a("asks"),n("baseLotSize"),n("quoteLotSize"),n("feeRateBps"),n("referrerRebatesAccrued"),F(7)]);import{PublicKey as iT}from"@solana/web3.js";import{AccountLayout as aT,NATIVE_MINT as sT,TOKEN_2022_PROGRAM_ID as uT,TOKEN_PROGRAM_ID as cT,createAssociatedTokenAccountIdempotentInstruction as lT}from"@solana/spl-token";import ok from"bn.js";import ia from"bn.js";var Uw=new ia(0);import Zw from"bn.js";import ra from"bn.js";var pe=new ra(1e6);import PT from"bn.js";import wT from"decimal.js";import{PublicKey as kk,TransactionInstruction as Tk,Keypair as Ik,SystemProgram as Bk}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Kk,TOKEN_2022_PROGRAM_ID as xk,TOKEN_PROGRAM_ID as Ck}from"@solana/spl-token";var uk=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),ck=Buffer.from("amm_config","utf8"),lk=Buffer.from("pool","utf8"),mk=Buffer.from("pool_lp_mint","utf8"),dk=Buffer.from("pool_vault","utf8"),pk=Buffer.from("observation","utf8"),fk=Buffer.from("permission","utf8"),yk=Buffer.from("support_mint","utf8");var bk=Buffer.from("locked_liquidity","utf8");var vk=E("Raydium_cpmm"),Vk={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173],lockCpLiquidity:[216,157,29,78,38,51,31,26],collectCpFee:[8,30,51,199,209,184,247,133],createPermissionPda:Buffer.from([135,136,2,216,137,169,181,202]),closePermissionPda:Buffer.from([156,84,32,118,69,135,70,123]),initializeWithPermission:Buffer.from([63,55,254,65,49,178,89,121]),collectCreatorFee:Buffer.from([20,22,86,123,198,28,219,132]),collectCreatorFeePermissionless:Buffer.from([202,202,34,83,226,122,145,229])};var ua=f([F(8),p("bump"),de("disableCreatePool"),J("index"),n("tradeFeeRate"),n("protocolFeeRate"),n("fundFeeRate"),n("createPoolFee"),a("protocolOwner"),a("fundOwner"),n("creatorFeeRate"),g(n(),15)]),Io=f([F(8),a("configId"),a("poolCreator"),a("vaultA"),a("vaultB"),a("mintLp"),a("mintA"),a("mintB"),a("mintProgramA"),a("mintProgramB"),a("observationId"),p("bump"),p("status"),p("lpDecimals"),p("mintDecimalA"),p("mintDecimalB"),n("lpAmount"),n("protocolFeesMintA"),n("protocolFeesMintB"),n("fundFeesMintA"),n("fundFeesMintB"),n("openTime"),n("epoch"),p("feeOn"),de("enableCreatorFee"),g(p(),6),n("creatorFeesMintA"),n("creatorFeesMintB"),g(n(),28)]),Dk=f([F(8),a("configId"),g(n(),30)]);import{PublicKey as mK,SystemProgram as dK}from"@solana/web3.js";import{createTransferInstruction as fK,TOKEN_PROGRAM_ID as yK,TOKEN_2022_PROGRAM_ID as bK,createAssociatedTokenAccountIdempotentInstruction as gK,createSyncNativeInstruction as AK,createTransferCheckedInstruction as wK}from"@solana/spl-token";import Ba from"bn.js";import hK from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Rh,TOKEN_2022_PROGRAM_ID as Lh,TOKEN_PROGRAM_ID as Oh}from"@solana/spl-token";import{SystemProgram as vh,TransactionInstruction as Vh}from"@solana/web3.js";import ya from"bn.js";var ma=f([n(),n("epoch"),p("curveType"),J("index"),n("migrateFee"),n("tradeFeeRate"),n("maxShareFeeRate"),n("minSupplyA"),n("maxLockRate"),n("minSellRateA"),n("minMigrateRateA"),n("minFundRaisingB"),a("mintB"),a("protocolFeeOwner"),a("migrateFeeOwner"),a("migrateToAmmWallet"),a("migrateToCpmmWallet"),g(n(),16)]),da=f([n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod"),n("startTime"),n("totalAllocatedShare")]),pa=f([n(),n("epoch"),p("bump"),p("status"),p("mintDecimalsA"),p("mintDecimalsB"),p("migrateType"),n("supply"),n("totalSellA"),n("virtualA"),n("virtualB"),n("realA"),n("realB"),n("totalFundRaisingB"),n("protocolFee"),n("platformFee"),n("migrateFee"),da.replicate("vestingSchedule"),a("configId"),a("platformId"),a("mintA"),a("mintB"),a("vaultA"),a("vaultB"),a("creator"),p("mintProgramFlag"),p("cpmmCreatorFeeOn"),n("platformVestingShare"),g(p(),54)]),mh=f([n(),n("epoch"),a("poolId"),a("beneficiary"),n("claimedAmount"),n("tokenShareAmount"),g(n(),8)]),So=f([p("migrateType"),p("migrateCpmmFeeOn"),n("supply"),n("totalSellA"),n("totalFundRaisingB"),n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod")]),fa=f([n("epoch"),p("index"),a("configId"),So.replicate("bondingCurveParam"),g(n(),50)]),Ko=f([n(),n("epoch"),a("platformClaimFeeWallet"),a("platformLockNftWallet"),n("platformScale"),n("creatorScale"),n("burnScale"),n("feeRate"),g(p(),64,"name"),g(p(),256,"web"),g(p(),256,"img"),a("cpConfigId"),n("creatorFeeRate"),a("transferFeeExtensionAuth"),a("platformVestingWallet"),n("platformVestingScale"),a("platformCpCreator"),p("restrictGlobalConfig"),g(p(),107),Un(fa,"platformCurve")]);var bh=Buffer.from("vault_auth_seed","utf8"),gh=Buffer.from("global_config","utf8"),Ph=Buffer.from("pool_vesting","utf8"),Ah=Buffer.from("platform_config","utf8"),wh=Buffer.from("platform_fee_vault_auth_seed","utf8"),kh=Buffer.from("creator_fee_vault_auth_seed","utf8"),Th=Buffer.from("platform_global_access","utf8"),hh=Buffer.from("platform_allow_config","utf8");var Wh={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 qh=new ya("18446744073709551615");import{TOKEN_2022_PROGRAM_ID as Xh,TOKEN_PROGRAM_ID as Yh}from"@solana/spl-token";import jh from"bn.js";import Jh from"decimal.js";import LI from"bn.js";import NI from"decimal.js";import rI from"bn.js";import sI from"decimal.js";import gI from"bn.js";import AI from"decimal.js";import Ro from"bn.js";import yn from"decimal.js";var _t=class{static _multipler(e){return new yn(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:o}){return new yn(e.toString()).div(this._Q64).mul(this._multipler(t)).div(this._multipler(o))}static getPriceX64({price:e,decimalA:t,decimalB:o}){let i=e.mul(this._multipler(o)).div(this._multipler(t));return new Ro(i.mul(this._Q64).toFixed(0))}};_t._Q64=new yn(new Ro(1).shln(64).toString());import{NATIVE_MINT as WB,TOKEN_2022_PROGRAM_ID as qB,TOKEN_PROGRAM_ID as UB,createAssociatedTokenAccountIdempotentInstruction as zB,createSyncNativeInstruction as XB,getTransferFeeConfig as YB,unpackMint as QB}from"@solana/spl-token";import te from"bn.js";import{PublicKey as Ta,SystemProgram as jB}from"@solana/web3.js";import iS from"decimal.js";var rS={initPriceX64:new te("515752397214619"),supply:new te(1e15),totalSellA:new te(7931e11),totalFundRaisingB:new te(85e9),totalFundRaisingBUSD:new te(125e8),totalLockedAmount:new te("0"),cliffPeriod:new te("0"),unlockPeriod:new te("0"),decimals:6,virtualA:new te("1073471847374405"),virtualB:new te("30050573465"),realA:new te(0),realB:new te(0),protocolFee:new te(0),platformId:new Ta("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new te(0),cliffPeriod:new te(0),unlockPeriod:new te(0),startTime:new te(0),totalAllocatedShare:new te(0)}},aS=new te(1e4);var ha={[Qn.toBase58()]:3};var Ia=f([F(5),F(8),a("ownAddress"),n("vaultSignerNonce"),a("baseMint"),a("quoteMint"),a("baseVault"),n("baseDepositsTotal"),n("baseFeesAccrued"),a("quoteVault"),n("quoteDepositsTotal"),n("quoteFeesAccrued"),n("quoteDustThreshold"),a("requestQueue"),a("eventQueue"),a("bids"),a("asks"),n("baseLotSize"),n("quoteLotSize"),n("feeRateBps"),n("referrerRebatesAccrued"),F(7)]);import{PublicKey as CS}from"@solana/web3.js";var MS=E("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as US,TOKEN_2022_PROGRAM_ID as GS,TOKEN_PROGRAM_ID as zS}from"@solana/spl-token";import{PublicKey as YS,SystemProgram as QS,TransactionInstruction as ZS}from"@solana/web3.js";import jS from"bn.js";var JK=new Ba(0);import{PublicKey as Sa,Transaction as bn,TransactionInstruction as Ka}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as xa}from"@solana/spl-token";import Lo from"bn.js";var ae=class extends ce{static getPdaPoolId(e,t){return Pe([ae.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,o,i){return Pe([ae.SEED_CONFIG.owner.id,t.toBuffer(),o.toBuffer(),Buffer.from(new Lo(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:o,wallet:i,chainTime:r}){if(o.length===0)return[];let u=o.map(y=>ae.getPdaPoolId(t,y).publicKey),c=[];for(let y=0;y<ae.VERSION_PROJECT.length;y++)c.push(...u.map(A=>ae.getPdaOwnerId(t,A,i,y).publicKey));let b=await he(e,[...u,...c]),d=[];for(let y=0;y<b.length;y++){let A=Math.floor(y/o.length),w=y%o.length,T=u[w],L=c[y],k=b[w],h=b[o.length+y];if(!(k&&h)||k.data.length!==ae.POOL_LAYOUT.span||h.data.length!==ae.OWNER_LAYOUT.span)continue;let S=ae.POOL_LAYOUT.decode(k.data),C=ae.OWNER_LAYOUT.decode(h.data),v=S.openTime.toNumber(),V=S.endTime.toNumber(),P=C.tokenInfo.map(R=>R.debtAmount.gt(new Lo(0))).filter(R=>!R).length!==3,I=r>v&&r<V&&S.status===1,B=P&&I;d.push({programId:t,poolId:T,ammId:S.ammId,ownerAccountId:L,snapshotLpAmount:C.lpAmount,project:ae.VERSION_PROJECT[A],openTime:v,endTime:V,canClaim:B,canClaimErrorType:P?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:S.tokenInfo.map((R,N)=>({mintAddress:R.mintAddress,mintVault:R.mintVault,mintDecimals:R.mintDecimals,perLpLoss:R.perLpLoss,debtAmount:C.tokenInfo[N].debtAmount.add(C.tokenInfo[N].claimedAmount)}))})}return d}async makeClaimTransaction({poolInfo:e,ownerInfo:t,feePayer:o}){t.wallet||this.scope.checkOwner();let i=this.createTxBuilder(o),r=t.wallet||this.scope.ownerPubKey,u=[];for(let d of e.tokenInfo){let{account:y,instructionParams:A}=await this.scope.account.getOrCreateTokenAccount({mint:d.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:d.mintAddress.equals(re.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!d.mintAddress.equals(re.WSOL.mint),associatedOnly:d.mintAddress.equals(re.WSOL.mint)?!1:t.associatedOnly});A&&i.addInstruction(A),u.push(y)}i.addInstruction({instructions:[ae.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:r,ownerPda:e.ownerAccountId,claimAddress:u}})]});let{transaction:c,signers:b}=i.build();return[{transaction:c,signer:b}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:o}){let i=this.createTxBuilder(o),r=t.wallet||this.scope.ownerPubKey,u={};for(let y of e){let A=[];for(let w of y.tokenInfo){let{account:T,instructionParams:L}=await this.scope.account.getOrCreateTokenAccount({mint:w.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:w.mintAddress.equals(re.WSOL.mint),createInfo:{payer:r,amount:0},skipCloseAccount:!w.mintAddress.equals(re.WSOL.mint),associatedOnly:w.mintAddress.equals(re.WSOL.mint)?!1:t.associatedOnly});L&&i.addInstruction(L),T&&(u[w.mintAddress.toString()]=T,A.push(T))}i.addInstruction({instructions:[ae.makeClaimInstruction({programId:y.programId,poolInfo:y,ownerInfo:{wallet:r,ownerPda:y.ownerAccountId,claimAddress:A}})]})}let{transaction:c,signers:b}=i.build(),d=i.allInstructions;return jt(d,[r,...b.map(y=>y.publicKey)])?[{transaction:c,signer:b}]:[{transaction:new bn().add(...d.slice(0,i.AllTxData.instructions.length-1)),signer:b},{transaction:new bn().add(...d.slice(i.AllTxData.instructions.length-1)),signer:[]},{transaction:new bn().add(...i.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:o}){let i=f([]),r=[{pubkey:o.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:o.ownerPda,isSigner:!1,isWritable:!0},...o.claimAddress.map(b=>({pubkey:b,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:b})=>({pubkey:b,isSigner:!1,isWritable:!0})),{pubkey:xa,isSigner:!1,isWritable:!1}],u=Buffer.alloc(i.span);i.encode({},u);let c=Buffer.from([10,66,208,184,161,6,191,98,...u]);return new Ka({keys:r,programId:e,data:c})}},ye=ae;ye.CLAIMED_NUM=3,ye.POOL_LAYOUT=f([F(8),p("bump"),p("status"),n("openTime"),n("endTime"),a("ammId"),g(f([p("mintDecimals"),a("mintAddress"),a("mintVault"),n("perLpLoss"),n("totalClaimedAmount")]),ae.CLAIMED_NUM,"tokenInfo"),g(n(),10,"padding")]),ye.OWNER_LAYOUT=f([F(8),p("bump"),p("version"),a("poolId"),a("owner"),n("lpAmount"),g(f([a("mintAddress"),n("debtAmount"),n("claimedAmount")]),ae.CLAIMED_NUM,"tokenInfo"),g(n(),4,"padding")]),ye.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Sa(e)),ye.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},ye.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as bx}from"@solana/web3.js";import{getTransferFeeConfig as Px,MintLayout as Ax,TOKEN_2022_PROGRAM_ID as wx,TOKEN_PROGRAM_ID as kx,unpackMint as Tx}from"@solana/spl-token";var HC=new ve(2),jC=new ve(3),$C=new ve(5),Yo=new ve(10),JC=new ve(100),eR=new ve(1e3),tR=new ve(1e4);function Wt(s,e=1,t=[]){let o=[...s];if(e<=0)return t;for(;o.length;)t.push(o.splice(0,e));return t}import $ from"bn.js";var ln=class{static newValue({poolInfo:e,amountSpecified:t,zeroForOne:o,feeRate:i,blockTimestamp:r}){let u={amountSpecifiedRemaining:t,amountCalculated:x,sqrtPriceX64:e.sqrtPriceX64,tick:e.tickCurrent,feeGrowthGlobalX64:o?e.feeGrowthGlobalX64A:e.feeGrowthGlobalX64B,lpFee:x,protocolFee:x,fundFee:x,liquidity:e.liquidity,sqrtPriceNextX64:x,tickNext:0,baseFeeRate:i,tickSpacing:e.tickSpacing,tickSpacingIndex:0,dynamicFeeInfo:Qe.getDynamicFeeInfo({poolInfo:e})};return u.dynamicFeeInfo&&(u.tickSpacingIndex=mt.tickSpacingIndexFromTick(u.tick,u.tickSpacing),Qe.updateReference({dynamicFeeInfo:u.dynamicFeeInfo,tickSpacingIndex:u.tickSpacingIndex,currentTimestamp:r})),u}static getTargetPriceBasedOnNextTick({data:e,tickNext:t,zeroForOne:o,sqrtPriceLimitX64:i}){e.tickNext=t,e.tickNext<Be?e.tickNext=Be:e.tickNext>Se&&(e.tickNext=Se),e.sqrtPriceNextX64=H.getSqrtPriceAtTick(e.tickNext);let r;if(o&&e.sqrtPriceNextX64.lt(i)||!o&&e.sqrtPriceNextX64.gt(i)?r=i:r=e.sqrtPriceNextX64,o){if(e.tick<e.tickNext)throw Error("data.tick < data.tickNext");if(e.sqrtPriceX64.lt(e.sqrtPriceNextX64))throw Error("data.sqrtPriceX64.lt(data.sqrtPriceNextX64)");if(e.sqrtPriceX64.lt(r))throw Error("data.sqrtPriceX64.lt(targetPrice)")}else{if(e.tickNext<=e.tick)throw Error("data.tickNext <= data.tick");if(e.sqrtPriceNextX64.lt(e.sqrtPriceX64))throw Error("data.sqrtPriceNextX64.lt(data.sqrtPriceX64)");if(r.lt(e.sqrtPriceX64))throw Error("targetPrice.lt(data.sqrtPriceX64)")}return r}static updateVolatilityAccumulator({state:e}){!e.dynamicFeeInfo||Qe.updateVolatilityAccumulator({state:e.dynamicFeeInfo,tickSpacingIndex:e.tickSpacingIndex})}static computeDynamicFeeRate({data:e,tickSpacing:t}){let o=e.volatilityAccumulator*t,i=o*o,r=io*ct*ct,u=Z(new $(e.dynamicFeeControl),new $(i),new $(r)).toNumber();return u>Lt?Lt:u}static getTotalFeeRate({data:e}){if(e.dynamicFeeInfo){let t=this.computeDynamicFeeRate({data:e.dynamicFeeInfo,tickSpacing:e.tickSpacing}),o=e.baseFeeRate+t;return Math.min(Lt,o)}return e.baseFeeRate}static getSpacingBoundedPrice({data:e,targetPrice:t,zeroForOne:o}){if(e.dynamicFeeInfo===void 0)return{isSkipped:!0,boundedPrice:t};if(e.liquidity.isZero()||e.dynamicFeeInfo.volatilityAccumulator===e.dynamicFeeInfo.maxVolatilityAccumulator)return{isSkipped:!0,boundedPrice:t};let i=e.tickSpacing,r=o?e.tickSpacingIndex*i:(e.tickSpacingIndex+1)*i,u=Math.max(Be,Math.min(Se,r)),c=H.getSqrtPriceAtTick(u);return o?{isSkipped:!1,boundedPrice:$.max(t,c)}:{isSkipped:!1,boundedPrice:$.min(t,c)}}static applySwapAmounts({state:e,amountIn:t,amountOut:o,feeAmount:i,isBaseInput:r,isFeeOnInput:u,protocolFeeRate:c,fundFeeRate:b}){let d=u?t.add(i):t;r?(e.amountSpecifiedRemaining=e.amountSpecifiedRemaining.sub(d),e.amountCalculated=e.amountCalculated.add(o)):(e.amountSpecifiedRemaining=e.amountSpecifiedRemaining.sub(o),e.amountCalculated=e.amountCalculated.add(d)),this.splitFee({state:e,feeAmount:i,protocolFeeRate:c,fundFeeRate:b})}static updateDynamicFeeIndex({state:e,zeroForOne:t,isSkippedTickSpacing:o}){if(e.dynamicFeeInfo!==void 0){if(o){let i=e.sqrtPriceX64.eq(e.sqrtPriceNextX64)?e.tickNext:e.tick,r=mt.tickSpacingIndexFromTick(i,e.tickSpacing);!t&&i%e.tickSpacing===0&&(r=r-1),e.tickSpacingIndex=r,e.dynamicFeeInfo.volatilityAccumulator!==e.dynamicFeeInfo.maxVolatilityAccumulator&&this.updateVolatilityAccumulator({state:e})}e.tickSpacingIndex+=t?-1:1}}static splitFee({state:e,feeAmount:t,protocolFeeRate:o,fundFeeRate:i}){let r=t;if(o.gt(x)){let u=t.mul(o).div(new $(pe));e.protocolFee=e.protocolFee.add(u),r=r.sub(u)}if(i.gt(x)){let u=t.mul(i).div(new $(pe));e.fundFee=e.fundFee.add(u),r=r.sub(u)}if(e.liquidity.gt(x)){let u=j(r,Q,e.liquidity);e.feeGrowthGlobalX64=e.feeGrowthGlobalX64.add(u),e.lpFee=e.lpFee.add(r)}}},mn=class{static newSwapComputationResult({sqrtPriceNextX64:e}){return{sqrtPriceNextX64:e!=null?e:x,amountIn:x,amountOut:x,feeAmount:x}}static calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:o,zeroForOne:i,isBaseInput:r}){if(r)try{return i?me.getDeltaAmountAUnsigned(t,e,o,!0):me.getDeltaAmountBUnsigned(e,t,o,!0)}catch(u){if(u.message==="MaxTokenOverflow")return null;throw u}else try{return i?me.getDeltaAmountBUnsigned(t,e,o,!1):me.getDeltaAmountAUnsigned(e,t,o,!1)}catch(u){if(u.message==="MaxTokenOverflow")return null;throw u}}static computeSwap(e,t,o,i,r,u,c,b){let d=this.newSwapComputationResult({});if(u){let A=b?j(i,new $(Ke-r),new $(Ke)):i,w=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:o,zeroForOne:c,isBaseInput:u});w!==null&&(d.amountIn=w),d.sqrtPriceNextX64=w!==null&&A.gte(d.amountIn)?t:pt.getNextSqrtPriceFromInput(e,o,A,c)}else{let A=b?i:Z(i,new $(Ke),new $(Ke-r)),w=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:o,zeroForOne:c,isBaseInput:u});w!==null&&(d.amountOut=w),d.sqrtPriceNextX64=w!==null&&A.gte(d.amountOut)?t:pt.getNextSqrtPriceFromOutput(e,o,A,c)}if(c){if(!d.sqrtPriceNextX64.gte(t))throw Error("!result.sqrtPriceNextX64.gte(sqrtPriceTargetX64)")}else if(!t.gte(d.sqrtPriceNextX64))throw Error("!sqrtPriceTargetX64.gte(result.sqrtPriceNextX64)");let y=t.eq(d.sqrtPriceNextX64);if(c?(y&&u||(d.amountIn=me.getDeltaAmountAUnsigned(d.sqrtPriceNextX64,e,o,!0)),y&&!u||(d.amountOut=me.getDeltaAmountBUnsigned(d.sqrtPriceNextX64,e,o,!1))):(y&&u||(d.amountIn=me.getDeltaAmountBUnsigned(e,d.sqrtPriceNextX64,o,!0)),y&&!u||(d.amountOut=me.getDeltaAmountAUnsigned(e,d.sqrtPriceNextX64,o,!1))),u)b?d.sqrtPriceNextX64.eq(t)?d.feeAmount=Z(d.amountIn,new $(r),new $(Ke-r)):d.feeAmount=i.sub(d.amountIn):(d.feeAmount=Z(d.amountOut,new $(r),new $(Ke)),d.amountOut=d.amountOut.sub(d.feeAmount),y||(d.amountIn=i));else if(b)d.amountOut=$.min(d.amountOut,i),d.feeAmount=Z(d.amountIn,new $(r),new $(Ke-r));else{d.feeAmount=Z(d.amountOut,new $(r),new $(Ke));let A=d.amountOut.sub(d.feeAmount);A.gt(i)?(d.feeAmount=d.amountOut.sub(i),d.amountOut=i):d.amountOut=A}return d}};export{mn as SwapMathUtil,ln as SwapState};
//# sourceMappingURL=swapMath.mjs.map