@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 88.3 kB
JavaScript
var Oo=Object.defineProperty,No=Object.defineProperties;var Mo=Object.getOwnPropertyDescriptors;var bt=Object.getOwnPropertySymbols;var wn=Object.prototype.hasOwnProperty,kn=Object.prototype.propertyIsEnumerable;var An=(s,e,t)=>e in s?Oo(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,O=(s,e)=>{for(var t in e||(e={}))wn.call(e,t)&&An(s,t,e[t]);if(bt)for(var t of bt(e))kn.call(e,t)&&An(s,t,e[t]);return s},E=(s,e)=>No(s,Mo(e));var be=(s,e)=>{var t={};for(var o in s)wn.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&&kn.call(s,o)&&(t[o]=s[o]);return t};import{PublicKey as _o}from"@solana/web3.js";import{get as Tn,set as Fo}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}},hn={},vo={};function D(s){let e=Tn(hn,s);if(!e){let t=Tn(vo,s);e=new Et({name:s,logLevel:t}),Fo(hn,s,e)}return e}import{MINT_SIZE as qa,TOKEN_PROGRAM_ID as Ua,getTransferFeeConfig as Ga,unpackMint as za}from"@solana/spl-token";var Dt=D("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 g=u.map(A=>{let w=s._buildArgs([A.map(T=>T.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:w}}),d=Wt(g,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:N,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:N,lamports:k,owner:new _o(h),rentEpoch:S}}return null})))}else try{c=await Promise.all(u.map(g=>s.getMultipleAccountsInfo(g,i)))}catch(g){g instanceof Error&&Dt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${g.message}`)}return c.flat()}import ve from"bn.js";import lR from"decimal.js";import zo from"big.js";import us from"bn.js";import Vo from"toformat";var Eo=Vo,je=Eo;import Pt from"big.js";import Wo from"bn.js";import qo from"decimal.js-light";import Je from"bn.js";var In=9007199254740991;function ue(s){let e=D("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>=In||s<=-In)&&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=D("module/fraction"),qt=je(Pt),et=je(qo),Uo={[0]:et.ROUND_DOWN,[1]:et.ROUND_HALF_UP,[2]:et.ROUND_UP},Go={[0]:Pt.roundDown,[1]:Pt.roundHalfUp,[2]:Pt.roundUp},G=class{constructor(e,t=new Wo(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:Uo[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=Go[o]||1,new qt(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var gs=D("Raydium_amount"),Ps=je(zo);import{PublicKey as Yo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Bn}from"@solana/spl-token";var At={chainId:101,address:Yo.default.toBase58(),programId:Bn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ge={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Bn.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};import{PublicKey as Gt}from"@solana/web3.js";import{PublicKey as X,SystemProgram as Sn,SYSVAR_RENT_PUBKEY as Ho}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Qo}from"@solana/spl-token";function Ve({pubkey:s,isSigner:e=!1,isWritable:t=!0}){return{pubkey:s,isWritable:t,isSigner:e}}var Zo=[Ve({pubkey:Qo,isWritable:!1}),Ve({pubkey:Sn.programId,isWritable:!1}),Ve({pubkey:Ho,isWritable:!1})];function Kn({publicKey:s,transformSol:e}){let t=xn(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 xn(s){try{return new X(s)}catch{return s}}var Ut=new X("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),tt=new X("SysvarRent111111111111111111111111111111111"),Ss=new X("SysvarC1ock11111111111111111111111111111111"),wt=new X("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),$o=new X("Sysvar1nstructions1111111111111111111111111"),jo=Sn.programId,Ks=new X("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),xs=new X("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Cs=new X("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Rs=new X("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Ls=new X("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Os=new X("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Ns=new X("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Ms=new X("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Fs=new X("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),vs=new X("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),_s=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:Kn({publicKey:e}),this.isToken2022=u}equals(e){return this===e?!0:this.mint.equals(e.mint)}},re=zt;re.WSOL=new zt(E(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 Jo from"bn.js";var Qs=new G(new Jo(100));var tu=D("Raydium_price");import{merge as dC}from"lodash";import lu from"axios";var Cn={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"},ei=E(O({},Cn),{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 Nu=D("Raydium_Api");import{PublicKey as jl,SystemProgram as Jl}from"@solana/web3.js";import{AccountLayout as im,createAssociatedTokenAccountIdempotentInstruction as rm,TOKEN_PROGRAM_ID as am,TOKEN_2022_PROGRAM_ID as sm}from"@solana/spl-token";import{PublicKey as Ue,sendAndConfirmTransaction as jt,SystemProgram as ai,Transaction as it,TransactionMessage as rt,VersionedTransaction as at}from"@solana/web3.js";import si from"axios";import{PublicKey as Yt,AddressLookupTableAccount as We}from"@solana/web3.js";async function Ht({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 g=new We({key:c,state:We.deserialize(u.data)});i[c.toString()]=g,t==="devnet"?De[c.toString()]=g:Ee[c.toString()]=g}return i}var Ee={},Qt=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={},Zt=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 Rn,Keypair as On,PublicKey as ti,Transaction as Nn,TransactionMessage as ni,VersionedTransaction as Mn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as oi}from"@solana/spl-token";var Ln=D("Raydium_txUtil"),Fn=1644;function Tt(s){let e=[],t=[];return s.microLamports&&(e.push(Rn.setComputeUnitPrice({microLamports:s.microLamports})),t.push(ne.SetComputeUnitPrice)),s.units&&(e.push(Rn.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 $t(s,e){s.length<1&&Ln.logWithError(`no instructions provided: ${s.toString()}`),e.length<1&&Ln.logWithError(`no signers provided:, ${e.toString()}`);let t=new Nn;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...s);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Fn}catch{return!1}}function Pe(s,e){let[t,o]=ti.findProgramAddressSync(s,e);return{publicKey:t,nonce:o}}function nt({instructions:s,payer:e,signers:t}){return $t(s,[e,...t])}function ot({instructions:s,payer:e,lookupTableAddressAccount:t,recentBlockhash:o=On.generate().publicKey.toString()}){let r=new ni({payerKey:e,recentBlockhash:o,instructions:s}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Mn(r).serialize()).toString("base64").length<Fn}catch{return!1}}var ii=s=>Buffer.isBuffer(s)?s:s instanceof Uint8Array?Buffer.from(s.buffer,s.byteOffset,s.byteLength):Buffer.from(s),ri=s=>{let e=s.serialize({requireAllSignatures:!1,verifySignatures:!1});s instanceof Mn&&(e=ii(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 Nn&&(t.recentBlockhash||(t.recentBlockhash=oi.toBase58()),t.feePayer||(t.feePayer=On.generate().publicKey)),e.push(ri(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 si.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(ai.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(E(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:g}=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 jt(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:g?"":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)],g=[...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:g,execute:async y=>{var S;let{sequentially:A,onTxUpdate:w,skipTxCount:T=0,recentBlockHash:N,skipPreflight:k=!0}=y||{},h=N!=null?N:await qe(this.connection,this.blockhashCommitment);if((S=this.owner)!=null&&S.isKeyPair){if(A){let C=[],v=0;for(let _ of u){if(++v,v<=T)continue;let P=await jt(this.connection,_,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((_,P)=>(_.recentBlockhash=h,c[P].length&&_.sign(...c[P]),_));Le(C);let v=await this.signAllTransactions(C);if(A){let _=0,P=[],I=async()=>{if(!v[_])return;let B=await this.connection.sendRawTransaction(v[_].serialize(),{skipPreflight:k});P.push({txId:B,status:"sent",signedTx:v[_]}),w==null||w([...P]),_++;let R=!1,M=null,V=null,le=U=>{M!==null&&clearInterval(M),V!==null&&this.connection.removeSignatureListener(V);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&&(M=setInterval(async()=>{var U;if(R){clearInterval(M);return}try{let q=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:1});q&&(R=!0,clearInterval(M),le({err:((U=q.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",B))}catch(q){R=!0,clearInterval(M),console.error("getTransaction timeout:",q,B)}},It)),V=this.connection.onSignature(B,U=>{if(R){this.connection.removeSignatureListener(V);return}R=!0,le(U)},"confirmed"),this.connection.getSignatureStatus(B)};return await I(),{txIds:P.map(B=>B.txId),signedTxs:v}}else{let _=[];for(let P=0;P<v.length;P+=1){let I=await this.connection.sendRawTransaction(v[P].serialize(),{skipPreflight:k});_.push(I)}return{txIds:_,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 N=e||{},{lookupTableCache:t={},lookupTableAddress:o=[],forerunCreate:i,recentBlockhash:r}=N,u=be(N,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),c=O(O({},this.cluster==="devnet"?await Zt(this.connection):await Qt(this.connection)),t),g=Array.from(new Set([...o,...this.lookupTableAddress])),d=[];for(let h of g)c[h]===void 0&&d.push(new Ue(h));let y=await Ht({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 _;let{skipPreflight:S=!0,sendAndConfirm:C,notSendToRpc:v}=h||{};if(Le([T]),(_=this.owner)!=null&&_.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)],g=[...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:g,buildProps:o,execute:async y=>{var k;let{sequentially:A,onTxUpdate:w,recentBlockHash:T,skipPreflight:N=!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:N});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:N}))),signedTxs:u}}if(this.signAllTransactions){let h=await this.signAllTransactions(u);if(A){let S=0,C=[],v=async()=>{if(!h[S])return;let _=await this.connection.sendTransaction(h[S],{skipPreflight:N});C.push({txId:_,status:"sent",signedTx:h[S]}),w==null||w([...C]),S++;let P=!1,I=null,B=null,R=M=>{I!==null&&clearInterval(I),B!==null&&this.connection.removeSignatureListener(B);let V=C.findIndex(le=>le.txId===_);if(V>-1){if(C[V].status==="error"||C[V].status==="success")return;C[V].status=M.err?"error":"success"}w==null||w([...C]),M.err||v()};this.loopMultiTxStatus&&(I=setInterval(async()=>{var M;if(P){clearInterval(I);return}try{let V=await this.connection.getTransaction(_,{commitment:"confirmed",maxSupportedTransactionVersion:1});V&&(P=!0,clearInterval(I),R({err:((M=V.meta)==null?void 0:M.err)||null}),console.log("tx status from getTransaction:",_))}catch(V){P=!0,clearInterval(I),console.error("getTransaction timeout:",V,_)}},It)),B=this.connection.onSignature(_,M=>{if(P){this.connection.removeSignatureListener(B);return}P=!0,R(M)},"confirmed"),this.connection.getSignatureStatus(_)};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:N});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,N)=>E(O({},T),{[N.publicKey.toBase58()]:N}),{}),c=[],g=[],d=[],y=0;if(this.allInstructions.forEach(T=>{let N=[...d,T],k=o?[...r.instructions,...N]:N,S=[...new Set(N.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:N,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)),g.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 N=[...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:N.map(k=>k.publicKey)})?c.push(new it().add(...r.instructions,...d)):c.push(new it().add(...d)),g.push(N)}return c.forEach(T=>T.feePayer=this.feePayer),(w=this.owner)!=null&&w.signer&&g.forEach(T=>{T.some(N=>N.publicKey.equals(this.owner.publicKey))||T.push(this.owner.signer)}),{builder:this,transactions:c,signers:g,instructionTypes:this.instructionTypes,execute:async T=>{var _;let{sequentially:N,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,g[I].length&&P.sign(...g[I])}),Le(c),(_=this.owner)!=null&&_.isKeyPair){if(N){let P=0,I=[];for(let B of c){if(++P,P<=h){I.push("tx skipped");continue}let R=await jt(this.connection,B,this.signers.find(M=>M.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(N){let B=0,R=[],M=async()=>{if(!I[B])return;B<h&&(R.push({txId:"",status:"success",signedTx:I[B]}),k==null||k([...R]),B++,M());let V=await this.connection.sendRawTransaction(I[B].serialize(),{skipPreflight:C});R.push({txId:V,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===V);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||M()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var z;if(le){clearInterval(U);return}try{let se=await this.connection.getTransaction(V,{commitment:"confirmed",maxSupportedTransactionVersion:1});se&&(le=!0,clearInterval(U),ie({err:((z=se.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",V))}catch(se){le=!0,clearInterval(U),console.error("getTransaction timeout:",se,V)}},It)),q=this.connection.onSignature(V,z=>{if(le){this.connection.removeSignatureListener(q);return}le=!0,ie(z)},"confirmed"),this.connection.getSignatureStatus(V)};return await M(),{txIds:R.map(V=>V.txId),signedTxs:I}}else{let B=[];for(let R=0;R<I.length;R+=1){let M=await this.connection.sendRawTransaction(I[R].serialize(),{skipPreflight:C});B.push(M)}return{txIds:B,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var _;let v=e||{},{computeBudgetConfig:t,splitIns:o=[],lookupTableCache:i={},lookupTableAddress:r=[],insCountLimit:u=12}=v,c=be(v,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),g=O(O({},this.cluster==="devnet"?await Zt(this.connection):await Qt(this.connection)),i),d=Array.from(new Set([...this.lookupTableAddress,...r])),y=[];for(let P of d)g[P]===void 0&&y.push(new Ue(P));let A=await Ht({connection:this.connection,address:y});for(let[P,I]of Object.entries(A))g[P]=I;let w=t?Tt(t):{instructions:[],instructionTypes:[]},T=await qe(this.connection,this.blockhashCommitment),N=this.signers.reduce((P,I)=>E(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:g})||ot({instructions:I,payer:this.feePayer,lookupTableAddressAccount:g})))S.push(P);else{if(S.length===0)throw Error("item ins too big");C+=P===o[C]?1:0;let R={};for(let M of[...new Set(d)])g[M]!==void 0&&(R[M]=g[M]);if(t&&ot({instructions:[...w.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:g,recentBlockhash:T})){let M=new rt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...w.instructions,...S]}).compileToV0Message(Object.values(g));k.push(new at(M))}else{let M=new rt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...S]}).compileToV0Message(Object.values(g));k.push(new at(M))}h.push(Array.from(new Set(S.map(M=>M.keys.filter(V=>V.isSigner).map(V=>V.pubkey.toString())).flat())).map(M=>N[M]).filter(M=>M!==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=>N[B]).filter(B=>B!==void 0);if(t&&ot({instructions:[...w.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:g,recentBlockhash:T})){let B=new rt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...w.instructions,...S]}).compileToV0Message(Object.values(g));k.push(new at(B))}else{let B=new rt({payerKey:this.feePayer,recentBlockhash:T,instructions:[...S]}).compileToV0Message(Object.values(g));k.push(new at(B))}h.push(I)}return(_=this.owner)!=null&&_.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:M,skipPreflight:V=!0}=P||{};if(k.map(async(U,q)=>{h[q].length&&U.sign(h[q]),M&&(U.message.recentBlockhash=M)}),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:V});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:V}))),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:V});z.push({txId:ke,status:"sent",signedTx:q[ie]}),B==null||B([...z]),ie++;let Ze=!1,_e=null,yt=null,Pn=Ce=>{_e!==null&&clearInterval(_e),yt!==null&&this.connection.removeSignatureListener(yt);let Te=z.findIndex(Lo=>Lo.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&&(_e=setInterval(async()=>{var Ce;if(Ze){clearInterval(_e);return}try{let Te=await this.connection.getTransaction(ke,{commitment:"confirmed",maxSupportedTransactionVersion:1});Te&&(Ze=!0,clearInterval(_e),Pn({err:((Ce=Te.meta)==null?void 0:Ce.err)||null}),console.log("tx status from getTransaction:",ke))}catch(Te){Ze=!0,clearInterval(_e),console.error("getTransaction timeout:",Te,ke)}},It)),yt=this.connection.onSignature(ke,Ce=>{if(Ze){this.connection.removeSignatureListener(yt);return}Ze=!0,Pn(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:V});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=D(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 Cl,SystemProgram as Ll}from"@solana/web3.js";import Ml from"bn.js";import{createCloseAccountInstruction as Vl,createInitializeAccountInstruction as El,createTransferInstruction as Dl,TOKEN_PROGRAM_ID as Wl}from"@solana/spl-token";import{Keypair as bl,PublicKey as gl}from"@solana/web3.js";import wl from"bn.js";import{TOKEN_PROGRAM_ID as hl}from"@solana/spl-token";import{PublicKey as Ai}from"@solana/web3.js";import Dn,{isBN as Wn}from"bn.js";import{bits as ui,BitStructure as kc,blob as ci,Blob as Tc,cstr as hc,f32 as Ic,f32be as Bc,f64 as Sc,f64be as Kc,greedy as xc,Layout as li,ns64 as Cc,ns64be as Rc,nu64 as Lc,nu64be as Oc,offset as mi,s16 as Nc,s16be as Mc,s24 as Fc,s24be as vc,s32 as di,s32be as _c,s40 as Vc,s40be as Ec,s48 as Dc,s48be as Wc,s8 as qc,seq as pi,struct as Uc,Structure as fi,u16 as yi,u16be as Gc,u24 as zc,u24be as Xc,u32 as bi,u32be as Yc,u40 as Hc,u40be as Qc,u48 as Zc,u48be as $c,u8 as gi,UInt as Pi,union as jc,Union as Jc,unionLayoutDiscriminator as el,utf8 as tl}from"@solana/buffer-layout";var St=li,vn=fi;var en=Pi;var _n=gi,$=yi;var Kt=bi;var fe=di;var Vn=pi;var F=ci;var tn=ui,En=mi;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 Dn(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 Dn(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 L(s){return new Ne(16,!1,s)}function qn(s){return new Ne(1,!0,s)}function Ge(s){return new Ne(8,!0,s)}function Un(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 Ai(e),e=>e.toBuffer(),s)}function de(s){return new st(_n(),wi,ki,s)}function wi(s){if(s===0)return!1;if(s===1)return!0;throw new Error("Invalid bool: "+s)}function ki(s){return s?1:0}function on(s,e){let t=Kt("length"),o=f([t,b(s,En(t,-t.span),"values")]);return new st(o,({values:i})=>i,i=>({values:i}),e)}var nn=class extends vn{decode(e,t){return super.decode(e,t)}};function f(s,e,t){return new nn(s,e,t)}function b(s,e,t){let o,i=typeof e=="number"?e:Wn(e)?e.toNumber():new Proxy(e,{get(r,u){if(!o){let c=Reflect.get(r,"count");o=Wn(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 fm}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as bm}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"),rn=new K("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),wm=new K("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),hi=new K("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Hn=new K("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Qn=new K("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),km=new K("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Ii=new K("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Zn=new K("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Bi=new K("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Si=new K("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),$n=new K("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Tm=new K("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Ki=new K("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),an=new K("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),xi=new K("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),hm=new K("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Ci=new K("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ri=new K("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Li=new K("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Im=new K("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Bm=new K("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Sm=new K("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Km=new K("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),xm=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 sy,TOKEN_2022_PROGRAM_ID as uy,TOKEN_PROGRAM_ID as cy}from"@solana/spl-token";import{PublicKey as my}from"@solana/web3.js";import py from"bn.js";import yy from"decimal.js";import{TOKEN_PROGRAM_ID as qm}from"@solana/spl-token";import{PublicKey as Xm}from"@solana/web3.js";var Oi=f([Y("mintAuthorityOption"),a("mintAuthority"),n("supply"),p("decimals"),p("isInitialized"),Y("freezeAuthorityOption"),a("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as xf,TOKEN_2022_PROGRAM_ID as Cf,TOKEN_PROGRAM_ID as Rf}from"@solana/spl-token";import{Keypair as Nf,PublicKey as Mf,SystemProgram as vf,TransactionInstruction as _f}from"@solana/web3.js";import Ef from"bn.js";import W from"bn.js";var H=new W(1).shln(64),Xe=64,Ni=new W(1).shln(128),ut=new W(1).shln(64).subn(1),Mi=new W(1).shln(128).subn(1),Be=-443636,Se=443636,Me=new W("4295048016"),Fe=new W("79226673521066979257578248091"),jn=new W("59543866431248"),Jn=new W("184467440737095516"),eo=new W("15793534762490258745"),to=16;var sn=60,id=new W("18446743708227953217"),no=[{bit:0,factor:new W("fffcb933bd6fb800",16)},{bit:1,factor:new W("fff97272373d4000",16)},{bit:2,factor:new W("fff2e50f5f657000",16)},{bit:3,factor:new W("ffe5caca7e10f000",16)},{bit:4,factor:new W("ffcb9843d60f7000",16)},{bit:5,factor:new W("ff973b41fa98e800",16)},{bit:6,factor:new W("ff2ea16466c9b000",16)},{bit:7,factor:new W("fe5dee046a9a3800",16)},{bit:8,factor:new W("fcbe86c7900bb000",16)},{bit:9,factor:new W("f987a7253ac65800",16)},{bit:10,factor:new W("f3392b0822bb6000",16)},{bit:11,factor:new W("e7159475a2caf000",16)},{bit:12,factor:new W("d097f3bdfd2f2000",16)},{bit:13,factor:new W("a9f746462d9f8000",16)},{bit:14,factor:new W("70d869a156f31c00",16)},{bit:15,factor:new W("31be135f97ed3200",16)},{bit:16,factor:new W("9aa508b5b85a500",16)},{bit:17,factor:new W("5d6af8dedc582c",16)},{bit:18,factor:new W("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 W(0),we=new W(1),rd=new W(-1);var ad=new W("18446744073700000000");var Fi=f([F(8),p("bump"),$("index"),a("owner"),Y("protocolFeeRate"),Y("tradeFeeRate"),$("tickSpacing"),Y("fundFeeRate"),b(Y(),1),a("fundOwner"),b(n(),3)]),vi=f([Y("blockTimestamp"),Ge("tickCumulative"),b(n(),4)]),uo=f([F(8),de("initialized"),n("recentEpoch"),$("observationIndex"),a("poolId"),b(vi,ro,"observations"),b(n(),4)]),_i=f([$("filterPeriod"),$("decayPeriod"),$("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),fe("tickSpacingIndexReference"),Y("volatilityReference"),Y("volatilityAccumulator"),n("lastUpdateTimestamp"),b(p(),46)]),Vi=f([p("state"),n("openTime"),n("endTime"),n("lastUpdateTime"),L("emissionsPerSecondX64"),n("totalEmissioned"),n("claimed"),a("mint"),a("vault"),a("creator"),L("growthGlobalX64")]),un=f([F(8),p("bump"),a("configId"),a("creator"),a("mintA"),a("mintB"),a("vaultA"),a("vaultB"),a("observationId"),p("mintDecimalsA"),p("mintDecimalsB"),$("tickSpacing"),L("liquidity"),L("sqrtPriceX64"),fe("tickCurrent"),Y(),L("feeGrowthGlobalX64A"),L("feeGrowthGlobalX64B"),n("protocolFeesTokenA"),n("protocolFeesTokenB"),b(L(),4),p("status"),p("feeOn"),F(6),b(Vi,lt,"rewardInfos"),F(8*16,"tickArrayBitmap"),b(n(),4),n("fundFeesTokenA"),n("fundFeesTokenB"),n("startTime"),n("recentEpoch"),_i.replicate("dynamicFeeInfo"),b(n(),46)]),Ei=f([L("growthInsideLastX64"),n("rewardAmountOwed")]),Di=f([F(8),p("bump"),a("nftMint"),a("poolId"),fe("tickLower"),fe("tickUpper"),L("liquidity"),L("feeGrowthInsideLastX64A"),L("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),b(Ei,lt,"rewardInfos"),n("recentEpoch"),b(n(),7)]),ld=f([F(8),p("bump"),a("poolId"),fe("tickLower"),fe("tickUpper"),L("liquidity"),L("feeGrowthInsideLastX64A"),L("feeGrowthInsideLastX64B"),n("tokenFeesOwedA"),n("tokenFeesOwedB"),b(L(),lt,"rewardGrowthInside"),n("recentEpoch"),b(n(),7)]),Wi=f([fe("tick"),Un("liquidityNet"),L("liquidityGross"),L("feeGrowthOutsideX64A"),L("feeGrowthOutsideX64B"),b(L(),lt,"rewardGrowthsOutsideX64"),n("orderPhase"),n("ordersAmount"),n("partFilledOrdersRemaining"),L("unfilledRatioX64"),b(Y(),3)]),co=f([F(8),a("poolId"),fe("startTickIndex"),b(Wi,sn,"ticks"),p("initializedTickCount"),n("recentEpoch"),b(p(),107)]),qi=f([F(8),p("bump"),b(a(),ao,"operationOwners"),b(a(),so,"whitelistMints")]),Ui=f([F(8),a("poolId"),a("owner"),fe("tick"),de("zeroForOne"),n("orderPhase"),n("totalAmount"),n("filledAmount"),n("settleBase"),n("settleOutput"),n("openTime"),L("unfilledRatioX64"),b(n(),4)]),lo=f([F(8),a("poolId"),F(8*8*Ot,"positiveTickArrayBitmap"),F(8*8*Ot,"negativeTickArrayBitmap")]),md=f([F(8),$("index"),$("filterPeriod"),$("decayPeriod"),$("reductionFactor"),Y("dynamicFeeControl"),Y("maxVolatilityAccumulator"),b(n(),8)]),Gi=f([F(8),a("wallet"),p("nonceIndex"),n("orderNonce"),b(n(),4)]),dd=f([n(),p("bump"),a("owner"),a("poolId"),a("positionId"),a("nftAccount"),b(n(),8)]),zi=f([F(8),p("bump"),a("lockOwner"),a("poolId"),a("positionId"),a("nftAccount"),a("lockNftMint"),n("recentEpoch"),b(n(),8)]);import yd from"bn.js";var Sd=Buffer.from("amm_config","utf8"),Yi=Buffer.from("pool","utf8"),Hi=Buffer.from("pool_vault","utf8"),Kd=Buffer.from("pool_reward_vault","utf8"),xd=Buffer.from("position","utf8"),Cd=Buffer.from("tick_array","utf8"),Rd=Buffer.from("operation","utf8"),Ld=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Od=Buffer.from("observation","utf8"),Nd=Buffer.from("support_mint","utf8"),Md=Buffer.from("dynamic_fee_config","utf8"),Fd=Buffer.from("permission","utf8");var vd=Buffer.from("locked_position","utf8");import{sha256 as ar}from"js-sha256";import Qi from"bn.js";import Dd from"decimal.js";function j(s,e,t){if(t.isZero())throw new Error("Division by zero");return s.mul(e).div(t)}function Q(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 qd=new Qi(1).shln(256).subn(1);function mo(s){return s.isZero()?-1:s.bitLength()-1}import np from"bn.js";import ee from"bn.js";import Ye from"decimal.js";var Z=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=H.clone();for(let{bit:i,factor:r}of no)(t&1<<i)!==0&&(o=j(o,r,H));return e>0&&(o=j(H,H,o)),o}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:o}){if(o){let i=Z.getPriceAtTick(t,!1);return j(e,i,H)}else{let i=Z.getPriceAtTick(t,!0);return j(e,H,i)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:o}){if(o){let i=Z.getPriceAtTick(t,!0);return Q(e,i,H)}else{let i=Z.getPriceAtTick(t,!1);return Q(e,H,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},g=this.limitOrderUnfilledAmount({tick:e});if(t.isZero()||g.isZero())return c;if(i)u?(c.ammFeeAmount=Q(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(g)&&(c.amountOut=g,c.amountIn=this.getLimitOrderInput({amountOut:g,tick:e.tick,zeroForOne:!o}),u&&(c.ammFeeAmount=Q(c.amountIn,new ee(r),pe.sub(new ee(r)))));else{let A=ee.min(t,g);u?c.amountOut=A:c.amountOut=ee.min(Q(A,pe,pe.sub(new ee(r))),g),c.amountIn=this.getLimitOrderInput({amountOut:c.amountOut,tick:e.tick,zeroForOne:!o}),u&&(c.ammFeeAmount=Q(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(H,e.ordersAmount.sub(y),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(y),e.ordersAmount=x}return u||(c.ammFeeAmount=Q(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(H.subn(1)).div(H):o.mul(o).div(H)}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 g=u.shrn(32),y=i.add(g).mul(jn),A=y.sub(Jn),w=y.add(eo),T=this.signedShrn64(A),N=this.signedShrn64(w);return T===N?T:Z.getSqrtPriceAtTick(N).lte(e)?N: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)),g=i.mul(c),d=new ee(1).shln(128),A=g.div(d).toString();for(;A.length<=u;)A="0"+A;let w=A.slice(0,-u),T=A.slice(-u),N=w+"."+T;return new Ye(N).mul(new Ye(10).pow(r))}static tickToPrice(e,t,o){let i=Z.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=Z.toTickIndex(Z.priceToTick(u,t,o),r),g=Z.tickToPrice(c,t,o);return{price:i?g:new Ye(1).div(g),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(Q(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?Q(o,t.sub(e),H):j(o,t.sub(e),H);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,H),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,H,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:g,amountB:d}=this.getAmountsForLiquidity(e,t,o,i,u),y=r?1+c:1-c,A=new Ft(new po(g.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 Ip}from"@solana/web3.js";import fo 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 fp from"bn.js";var mt=class{static tickSpacingIndexFromTick(e,t){return Math.floor(e/t)}},He=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 Qp 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 Q(r,e,c);let g=j(r,we,e);return Q(r,we,g.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 Q(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(ar.digest(e)).slice(0,8)}uo.span;var Hf=D("Raydium_Clmm"),Qf={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 fn}from"@solana/web3.js";var lr=f([p("instruction")]),mr=f([p("instruction")]),dr=f([n("rewardState"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardLastUpdateTime"),n("totalReward"),n("totalRewardEmissioned"),n("rewardClaimed"),n("rewardPerSecond"),L("accRewardPerShare"),a("rewardVault"),a("rewardMint"),a("rewardSender"),n("rewardType"),b(n(),15,"padding")]),pr=f([n("state"),n("nonce"),a("lpVault"),a("rewardVault"),a(),a(),n(),n(),n("totalReward"),L("perShareReward"),n("lastSlot"),n("perSlotReward")]),fr=f([n("state"),n("nonce"),a("lpVault"),a("rewardVaultA"),n("totalRewardA"),L("perShareRewardA"),n("perSlotRewardA"),p("option"),a("rewardVaultB"),F(7),n("totalRewardB"),L("perShareRewardB"),n("perSlotRewardB"),n("lastSlot"),a()]),yr=f([n(),n("state"),n("nonce"),n("validRewardTokenNum"),L("rewardMultiplier"),n("rewardPeriodMax"),n("rewardPeriodMin"),n("rewardPeriodExtend"),a("lpMint"),a("lpVault"),b(dr,5,"rewardInfos"),a("creator"),a(),b(n(),32,"padding")]),br=new Proxy(pr,{get(s,e,t){return e==="decode"?(...o)=>{let i=s.decode(...o);return E(O({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(s,e,t)}}),gr=new Proxy(fr,{get(s,e,t){return e==="decode"?(...o)=>{let i=s.decode(...o);return E(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(yr,{get(s,e,t){return e==="decode"?(...o)=>{let i=s.decode(...o);return E(O({},i),{version:6,rewardInfos:i.rewardInfos.map(r=>{var u;return E(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)}}),Pr=f([n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),Ar=f([p("instruction"),n("nonce"),b(Pr,5,"rewardTimeInfo")]),wr=f([p("instruction"),n("rewardReopenTime"),n("rewardEndTime"),n("rewardPerSecond")]),kr=f([p("instruction"),n("isSet"),n("rewardPerSecond"),n("rewardOpenTime"),n("rewardEndTime"),n("rewardType")]),Gy=f([n("state"),a("id"),a("owner"),n("deposited"),b(n(),1,"rewardDebts")]),Ao=f([n("state"),a("id"),a("owner"),n("deposited"),b(L(),1,"rewardDebts"),n(""),n("voteLockedBalance"),b(n(),15)]),zy=f([n("state"),a("id"),a("owner"),n("deposited"),b(n(),2,"rewardDebts")]),Tr=f([n("state"),a("id"),a("owner"),n("deposited"),b(L(),2,"rewardDebts"),b(n(),17)]),hr=f([n(),n("state"),a("id"),a("owner"),n("deposited"),b(L(),5,"rewardDebts"),b(n(),16)]),Ir=f([p("instruction"),n("amount")]),Br=f([a("mint"),a("grantAuthority"),n("baselineVoteWeightScaledFactor"),n("maxExtraLockupVoteWeightScaledFactor"),n("lockupSaturationSecs"),qn("digitShift"),b(p(),7,"reserved1"),b(n(),7,"reserved2")]),Sr=f([F(8),a("governanceProgramId"),a("realm"),a("realmGoverningTokenMint"),a("realmAuthority"),b(p(),32,"reserved1"),b(Br,4,"votingMints"),Ge("timeOffset"),p("bump"),b(p(),7,"reserved2"),b(n(),11,"reserved3")]),Kr=f([Ge("startTime"),Ge("endTime"),p("kind"),b(p(),15,"reserved")]),xr=f([b(Kr,1,"lockup"),n("amountDeposited_native"),n("amountInitiallyLockedNative"),de("isUsed"),de("allowClawback"),p("votingMintConfigIdx"),b(p(),29,"reserved")]),Cr=f([F(8),a("voterAuthority"),a("registrar"),b(xr,32,"deposits"),p("voterBump"),p("voterWweightRecordBump"),b(p(),94,"reserved")]);import{NATIVE_MINT as eb}from"@solana/spl-token";var tb=D("Raydium_farm_config"),Rr=new fn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Lr=new fn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var nb=new fn("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var ft={"Standard SPL":0,"Option tokens":1},wo={[zn.toString()]:3,[Xn.toString()]:4,[Yn.toString()]:5,[rn.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 Qb,createAssociatedTokenAccountIdempotentInstruction as Zb,TOKEN_PROGRAM_ID as $b}from"@solana/spl-token";import gb from"bn.js";import{PublicKey as ub}from"@solana/web3.js";import lb from"bn.js";var Rb=D("Raydium.farm.util");var ug=D("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 Zg 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 Er=new To(25),Dr=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 Wr=f([p("instruction"),n("amountIn"),n("minAmountOut")]),qr=f([p("instruction"),n("maxAmountIn"),n("amountOut")]),gP=f([p("instruction"),p("nonce")]),Ur=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"),L("swapBaseInAmount"),L("swapQuoteOutAmount"),n("swapBase2QuoteFee"),L("swapQuoteInAmount"),L("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"),b(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"),L("swapBaseInAmount"),L("swapQuoteOutAmount"),L("swapQuoteInAmount"),L("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"),b(n(),64,"padding")]),Gr=f([p("instruction"),n("baseAmountIn"),n("quoteAmountIn"),n("fixedSide"),n("otherAmountMin")]),zr=f([p("instruction"),n("lpAmount"),n("baseAmountMin"),n("quoteAmountMin")]);var Xr=f([n("fee")]);var VP=D("Raydium_liquidity_instruction");var Yr=5e4,Hr=f([n("x"),n("y"),n("price")]),qP=f([n("accountType"),n("status"),n("multiplier"),n("validDataCount"),b(Hr,Yr,"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 QP=D("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 Qr(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 Zr=f([F(5),Qr("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 sT}from"@solana/web3.js";import{AccountLayout as cT,NATIVE_MINT as lT,TOKEN_2022_PROGRAM_ID as mT,TOKEN_PROGRAM_ID as dT,createAssociatedTokenAccountIdempotentInstruction as pT}from"@solana/spl-token";import ok from"bn.js";import oa from"bn.js";var Uw=new oa(0);import Qw from"bn.js";import ia from"bn.js";var pe=new ia(1e6);import kT from"bn.js";import hT from"decimal.js";import{PublicKey as hk,TransactionInstruction as Ik,Keypair as Sk,SystemProgram as Kk}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Ck,TOKEN_2022_PROGRAM_ID as Rk,TOKEN_PROGRAM_ID as Lk}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"),bk=Buffer.from("creator_fee_share","utf8");var gk=Buffer.from("locked_liquidity","utf8");var Vk=D("Raydium_cpmm"),Ek={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 sa=f([F(8),p("bump"),de("disableCreatePool"),$("index"),n("tradeFeeRate"),n("protocolFeeRate"),n("fundFeeRate"),n("createPoolFee"),a("protocolOwner"),a("fundOwner"),n("creatorFeeRate"),n("creatorFeeShareRate"),b(n(),14)]),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"),b(p(),6),n("creatorFeesMintA"),n("creatorFeesMintB"),b(n(),28)]),qk=f([F(8),a("configId"),b(n(),30)]),Uk=f([F(8),p("bump"),a("creator"),a("ammConfig"),n("shareRate"),b(n(),8)]);import{PublicKey as FK,SystemProgram as vK}from"@solana/web3.js";import{createTransferInstruction as VK,TOKEN_PROGRAM_ID as EK,TOKEN_2022_PROGRAM_ID as DK,createAssociatedTokenAccountIdempotentInstruction as WK,createSyncNativeInstruction as UK,createTransferCheckedInstruction as GK}from"@solana/spl-token";import xa from"bn.js";import YK from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Lh,TOKEN_2022_PROGRAM_ID as Oh,TOKEN_PROGRAM_ID as Nh}from"@solana/spl-token";import{SystemProgram as _h,TransactionInstruction as Vh}from"@solana/web3.js";import la from"bn.js";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"),Ih=Buffer.from("platform_curve_rule","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]),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 qh=new la("18446744073709551615");var ma=f([n(),n("epoch"),p("curveType"),$("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"),b(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"),b(p(),54)]),Xh=f([n(),n("epoch"),a("poolId"),a("beneficiary"),n("claimedAmount"),n("tokenShareAmount"),b(n(),8)]),fa=f([p("migrateType"),p("migrateCpmmFeeOn"),n("supply"),n("totalSellA"),n("totalFundRaisingB"),n("totalLockedAmount"),n("cliffPeriod"),n("unlockPeriod")]),Yh=f([n("epoch"),p("index"),a("configId"),fa.replicate("bondingCurveParam"),b(n(),50)]),So=f([n(),n("epoch"),a("platformClaimFeeWallet"),a("platformLockNftWallet"),n("platformScale"),n("creatorScale"),n("burnScale"),n("feeRate"),b(p(),64,"name"),b(p(),256,"web"),b(p(),256,"img"),a("cpConfigId"),n("creatorFeeRate"),a("transferFeeExtensionAuth"),a("platformVestingWallet"),n("platformVestingScale"),a("platformCpCreator"),p("restrictGlobalConfig"),p("restrictCurveParam"),a("curveRuleManager"),b(p(),78)]),ya=f([p("field"),p("op"),L("value")]),ba=f([$("groupId"),n("epoch"),on(ya,"constraints")]),ga=f([n(),p("bump"),p("version"),a("platformId"),a("configId"),n("epoch"),b(n(),8),on(ba,"groups")]);import{TOKEN_2022_PROGRAM_ID as Zh,TOKEN_PROGRAM_ID as $h}from"@solana/spl-token";import Pa from"bn.js";var cI=new Pa(1e6);import pI from"bn.js";import yI from"decimal.js";import YI from"bn.js";import QI from"decimal.js";import kI from"bn.js";import hI from"decimal.js";import NI from"bn.js";import FI from"decimal.js";import Co from"bn.js";import bn from"decimal.js";var Vt=class{static _multipler(e){return new bn(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:o}){return new bn(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 Co(i.mul(this._Q64).toFixed(0))}};Vt._Q64=new bn(new Co(1).shln(64).toString());import{NATIVE_MINT as lS,TOKEN_2022_PROGRAM_ID as mS,TOKEN_PROGRAM_ID as dS,createAssociatedTokenAccountIdempotentInstruction as fS,createSyncNativeInstruction as yS,getTransferFeeConfig as bS,unpackMint as gS}from"@solana/spl-token";import te from"bn.js";import{PublicKey as Ba,SystemProgram as wS}from"@solana/web3.js";import KS from"decimal.js";var xS={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 Ba("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new te(0),cliffPeriod:new te(0),unlockPeriod:new te(0),startTime:new te(0),totalAllocatedShare:new te(0)}},CS=new te(1e4);var Sa={[Hn.toBase58()]:3};var Ka=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 JS}from"@solana/web3.js";var iK=D("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as pK,TOKEN_2022_PROGRAM_ID as fK,TOKEN_PROGRAM_ID as yK}from"@solana/spl-token";import{PublicKey as gK,SystemProgram as PK,TransactionInstruction as AK}from"@solana/web3.js";import kK from"bn.js";var hx=new xa(0);import{PublicKey as Ca,Transaction as gn,TransactionInstruction as Ra}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as La}from"@solana/spl-token";import Ro 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 Ro(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 g=await he(e,[...u,...c]),d=[];for(let y=0;y<g.length;y++){let A=Math.floor(y/o.length),w=y%o.length,T=u[w],N=c[y],k=g[w],h=g[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(),_=S.endTime.toNumber(),P=C.tokenInfo.map(R=>R.debtAmount.gt(new Ro(0))).filter(R=>!R).length!==3,I=r>v&&r<_&&S.status===1,B=P&&I;d.push({programId:t,poolId:T,ammId:S.ammId,ownerAccountId:N,snapshotLpAmount:C.lpAmount,project:ae.VERSION_PROJECT[A],openTime:v,endTime:_,canClaim:B,canClaimErrorType:P?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:S.tokenInfo.map((R,M)=>({mintAddress:R.mintAddress,mintVault:R.mintVault,mintDecimals:R.mintDecimals,perLpLoss:R.perLpLoss,debtAmount:C.tokenInfo[M].debtAmount.add(C.tokenInfo[M].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:g}=i.build();return[{transaction:c,signer:g}]}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:N}=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});N&&i.addInstruction(N),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:g}=i.build(),d=i.allInstructions;return $t(d,[r,...g.map(y=>y.publicKey)])?[{transaction:c,signer:g}]:[{transaction:new gn().add(...d.slice(0,i.AllTxData.instructions.length-1)),signer:g},{transaction:new gn().add(...d.slice(i.AllTxData.instructions.length-1)),signer:[]},{transaction:new gn().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(g=>({pubkey:g,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:g})=>({pubkey:g,isSigner:!1,isWritable:!0})),{pubkey:La,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 Ra({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"),b(f([p("mintDecimals"),a("mintAddress"),a("mintVault"),n("perLpLoss"),n("totalClaimedAmount")]),ae.CLAIMED_NUM,"tokenInfo"),b(n(),10,"padding")]),ye.OWNER_LAYOUT=f([F(8),p("bump"),p("version"),a("poolId"),a("owner"),n("lpAmount"),b(f([a("mintAddress"),n("debtAmount"),n("claimedAmount")]),ae.CLAIMED_NUM,"tokenInfo"),b(n(),4,"padding")]),ye.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Ca(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 Dx}from"@solana/web3.js";import{getTransferFeeConfig as qx,MintLayout as Ux,TOKEN_2022_PROGRAM_ID as Gx,TOKEN_PROGRAM_ID as zx,unpackMint as Xx}from"@solana/spl-token";var wR=new ve(2),kR=new ve(3),TR=new ve(5),Xo=new ve(10),hR=new ve(100),IR=new ve(1e3),BR=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 J from"bn.js";var mn=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:He.getDynamicFeeInfo({poolInfo:e})};return u.dynamicFeeInfo&&(u.tickSpacingIndex=mt.tickSpacingIndexFromTick(u.tick,u.tickSpacing),He.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=Z.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||He.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=Q(new J(e.dynamicFeeControl),new J(i),new J(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=Z.getSqrtPriceAtTick(u);return o?{isSkipped:!1,boundedPrice:J.max(t,c)}:{isSkipped:!1,boundedPrice:J.min(t,c)}}static applySwapAmounts({state:e,amountIn:t,amountOut:o,feeAmount:i,isBaseInput:r,isFeeOnInput:u,protocolFeeRate:c,fundFeeRate:g}){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:g})}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 J(pe));e.protocolFee=e.protocolFee.add(u),r=r.sub(u)}if(i.gt(x)){let u=t.mul(i).div(new J(pe));e.fundFee=e.fundFee.add(u),r=r.sub(u)}if(e.liquidity.gt(x)){let u=j(r,H,e.liquidity);e.feeGrowthGlobalX64=e.feeGrowthGlobalX64.add(u),e.lpFee=e.lpFee.add(r)}}},dn=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,g){let d=this.newSwapComputationResult({});if(u){let A=g?j(i,new J(Ke-r),new J(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=g?i:Q(i,new J(Ke),new J(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)g?d.sqrtPriceNextX64.eq(t)?d.feeAmount=Q(d.amountIn,new J(r),new J(Ke-r)):d.feeAmount=i.sub(d.amountIn):(d.feeAmount=Q(d.amountOut,new J(r),new J(Ke)),d.amountOut=d.amountOut.sub(d.feeAmount),y||(d.amountIn=i));else if(g)d.amountOut=J.min(d.amountOut,i),d.feeAmount=Q(d.amountIn,new J(r),new J(Ke-r));else{d.feeAmount=Q(d.amountOut,new J(r),new J(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{dn as SwapMathUtil,mn as SwapState};
//# sourceMappingURL=swapMath.mjs.map