UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

3 lines 171 kB
var Qr=Object.defineProperty,Zr=Object.defineProperties;var jr=Object.getOwnPropertyDescriptors;var sn=Object.getOwnPropertySymbols;var ii=Object.prototype.hasOwnProperty,ri=Object.prototype.propertyIsEnumerable;var oi=(i,e,t)=>e in i?Qr(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,v=(i,e)=>{for(var t in e||(e={}))ii.call(e,t)&&oi(i,t,e[t]);if(sn)for(var t of sn(e))ri.call(e,t)&&oi(i,t,e[t]);return i},q=(i,e)=>Zr(i,jr(e));var Se=(i,e)=>{var t={};for(var n in i)ii.call(i,n)&&e.indexOf(n)<0&&(t[n]=i[n]);if(i!=null&&sn)for(var n of sn(i))e.indexOf(n)<0&&ri.call(i,n)&&(t[n]=i[n]);return t};import{PublicKey as me}from"@solana/web3.js";import{AccountLayout as uc,MintLayout as zr,NATIVE_MINT as En,TOKEN_PROGRAM_ID as Pt}from"@solana/spl-token";import{PublicKey as sc}from"@solana/web3.js";import _t from"bn.js";import BR from"decimal.js";import sa from"big.js";import ln from"bn.js";import{get as ai,set as $r}from"lodash";var Wn=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(n=>typeof n=="object"?JSON.stringify(n):n).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}},si={},Jr={};function Y(i){let e=ai(si,i);if(!e){let t=ai(Jr,i);e=new Wn({name:i,logLevel:t}),$r(si,i,e)}return e}import ea from"toformat";var ta=ea,Ht=ta;import cn from"big.js";import oa from"bn.js";import ia from"decimal.js-light";import Qt from"bn.js";var ui=9007199254740991;function j(i){let e=Y("Raydium_parseBigNumberish");if(i instanceof Qt)return i;if(typeof i=="string"){if(i.match(/^-?[0-9]+$/))return new Qt(i);e.logWithError(`invalid BigNumberish string: ${i}`)}return typeof i=="number"?(i%1&&e.logWithError(`BigNumberish number underflow: ${i}`),(i>=ui||i<=-ui)&&e.logWithError(`BigNumberish number overflow: ${i}`),new Qt(String(i))):typeof i=="bigint"?new Qt(i.toString()):(e.error(`invalid BigNumberish value: ${i}`),new Qt(0))}var un=Y("module/fraction"),qn=Ht(cn),Zt=Ht(ia),ra={[0]:Zt.ROUND_DOWN,[1]:Zt.ROUND_HALF_UP,[2]:Zt.ROUND_UP},aa={[0]:cn.roundDown,[1]:cn.roundHalfUp,[2]:cn.roundUp},$=class{constructor(e,t=new oa(1)){this.numerator=j(e),this.denominator=j(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new $(this.denominator,this.numerator)}add(e){let t=e instanceof $?e:new $(j(e));return this.denominator.eq(t.denominator)?new $(this.numerator.add(t.numerator),this.denominator):new $(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof $?e:new $(j(e));return this.denominator.eq(t.denominator)?new $(this.numerator.sub(t.numerator),this.denominator):new $(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof $?e:new $(j(e));return new $(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof $?e:new $(j(e));return new $(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||un.logWithError(`${e} is not an integer.`),e<=0&&un.logWithError(`${e} is not positive.`),Zt.set({precision:e+1,rounding:ra[n]});let o=new Zt(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return o.toFormat(o.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||un.logWithError(`${e} is not an integer.`),e<0&&un.logWithError(`${e} is negative.`),qn.DP=e,qn.RM=aa[n]||1,new qn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var ua=Y("Raydium_amount"),ci=Ht(sa);function ca(i,e){let t="0",n="0";if(i.includes(".")){let o=i.split(".");o.length===2?([t,n]=o,n=n.padEnd(e,"0")):ua.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var Ke=class extends ${constructor(t,n,o=!0,u){let r=new ln(0),a=Un.pow(new ln(t.decimals));if(o)r=j(n);else{let c=new ln(0),d=new ln(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=ca(n.toString(),t.decimals);c=j(l),d=j(m)}c=c.mul(a),r=c.add(d)}super(r,a);this.logger=Y(u||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new Ke(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Ke(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,o=0){return super.toSignificant(t,n,o)}toFixed(t=this.token.decimals,n,o=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,o)}toExact(t={groupSeparator:""}){return ci.DP=this.token.decimals,new ci(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as la}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as li}from"@solana/spl-token";var mn={chainId:101,address:la.default.toBase58(),programId:li.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Je={chainId:101,address:"So11111111111111111111111111111111111111112",programId:li.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 Xn}from"@solana/web3.js";import{PublicKey as se,SystemProgram as mi,SYSVAR_RENT_PUBKEY as ma}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as da}from"@solana/spl-token";function B({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var pa=[B({pubkey:da,isWritable:!1}),B({pubkey:mi.programId,isWritable:!1}),B({pubkey:ma,isWritable:!1})];function Gn({publicKey:i,transformSol:e}){let t=zn(i.toString());if(t instanceof se)return e&&t.equals(wt)?Ge:t;if(e&&t.toString()===wt.toBase58())return Ge;if(typeof t=="string"){if(t===se.default.toBase58())return se.default;try{return new se(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function zn(i){try{return new se(i)}catch{return i}}var mt=new se("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),_e=new se("SysvarRent111111111111111111111111111111111"),qc=new se("SysvarC1ock11111111111111111111111111111111"),dt=new se("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),fa=new se("Sysvar1nstructions1111111111111111111111111"),ya=mi.programId,Uc=new se("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Gc=new se("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),zc=new se("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Xc=new se("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Yc=new se("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Hc=new se("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Qc=new se("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Zc=new se("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),jc=new se("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),$c=new se("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Jc=new se("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ge=new se("So11111111111111111111111111111111111111112"),wt=se.default;function kt(i){return Gn({publicKey:i,transformSol:!0})}var Yn=class{constructor({mint:e,decimals:t,symbol:n,name:o,skipMint:u=!1,isToken2022:r=!1}){if(e===wt.toBase58()||e instanceof Xn&&wt.equals(e)){this.decimals=Je.decimals,this.symbol=Je.symbol,this.name=Je.name,this.mint=new Xn(Je.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=o||e.toString().substring(0,6),this.mint=u?Xn.default:Gn({publicKey:e}),this.isToken2022=r}equals(e){return this===e?!0:this.mint.equals(e.mint)}},de=Yn;de.WSOL=new Yn(q(v({},Je),{mint:Je.address}));var Hn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},dn=Hn;dn.SOL=new Hn(mn);import ba from"bn.js";var di=new $(new ba(100)),ze=class extends ${toSignificant(e=5,t,n){return this.mul(di).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(di).toFixed(e,t,n)}};var ga=Y("Raydium_price"),Xe=class extends ${constructor(t){let{baseToken:n,quoteToken:o,numerator:u,denominator:r}=t;super(u,r);this.baseToken=n,this.quoteToken=o,this.scalar=new $(Qn(n.decimals),Qn(o.decimals))}get raw(){return new $(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Xe({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&ga.logWithError("mul token not equals");let n=super.mul(t);return new Xe({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,o){return this.adjusted.toSignificant(t,n,o)}toFixed(t=this.quoteToken.decimals,n,o){return this.adjusted.toFixed(t,n,o)}};import{merge as wC}from"lodash";import hl from"axios";var pi={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"},Pa=q(v({},pi),{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 Xl=Y("Raydium_Api");import{PublicKey as wp,SystemProgram as kp}from"@solana/web3.js";import{AccountLayout as xp,createAssociatedTokenAccountIdempotentInstruction as Sp,TOKEN_PROGRAM_ID as Kp,TOKEN_2022_PROGRAM_ID as Cp}from"@solana/spl-token";import{PublicKey as qt,sendAndConfirmTransaction as to,SystemProgram as Ia,Transaction as Jt,TransactionMessage as en,VersionedTransaction as tn}from"@solana/web3.js";import Ba from"axios";import{PublicKey as Zn,AddressLookupTableAccount as Dt}from"@solana/web3.js";async function jn({connection:i,address:e,cluster:t="mainnet"}){let n=await Ye(i,[...new Set(e.map(u=>u.toString()))].map(u=>new Zn(u))),o={};for(let u=0;u<e.length;u++){let r=n[u],a=e[u];if(!r)continue;let c=new Dt({key:a,state:Dt.deserialize(r.data)});o[a.toString()]=c,t==="devnet"?Et[a.toString()]=c:Vt[a.toString()]=c}return o}var Vt={},$n=async i=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Vt[e])return Vt;let t=new Zn(e),n=await i.getAccountInfo(t);return n&&(Vt[e]=new Dt({key:t,state:Dt.deserialize(n.data)})),Vt},Et={},Jn=async i=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Et[e])return Et;let t=new Zn(e),n=await i.getAccountInfo(t);return n&&(Et[e]=new Dt({key:t,state:Dt.deserialize(n.data)})),Et};var _={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{ComputeBudgetProgram as fi,Keypair as bi,PublicKey as Aa,Transaction as gi,TransactionMessage as wa,VersionedTransaction as Pi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ka}from"@solana/spl-token";var yi=Y("Raydium_txUtil"),Ai=1644;function pn(i){let e=[],t=[];return i.microLamports&&(e.push(fi.setComputeUnitPrice({microLamports:i.microLamports})),t.push(_.SetComputeUnitPrice)),i.units&&(e.push(fi.setComputeUnitLimit({units:i.units})),t.push(_.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Wt(i,e){var n,o;let t=e!=null?e:"confirmed";return(o=await((n=i.getLatestBlockhash)==null?void 0:n.call(i,{commitment:t})))==null?void 0:o.blockhash}async function fn(i,e){return i.getSignatureStatuses([e]),new Promise((t,n)=>{let o=setTimeout(n,6e4);i.onSignature(e,u=>{if(clearTimeout(o),!u.err){t("");return}n(Object.assign(u.err,{txId:e}))},"confirmed")})}function eo(i,e){i.length<1&&yi.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&yi.logWithError(`no signers provided:, ${e.toString()}`);let t=new gi;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Ai}catch{return!1}}function J(i,e){let[t,n]=Aa.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function jt({instructions:i,payer:e,signers:t}){return eo(i,[e,...t])}function $t({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=bi.generate().publicKey.toString()}){let u=new wa({payerKey:e,recentBlockhash:n,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Pi(u).serialize()).toString("base64").length<Ai}catch{return!1}}var Ta=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i),ha=i=>{let e=i.serialize({requireAllSignatures:!1,verifySignatures:!1});i instanceof Pi&&(e=Ta(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Tt(i){let e=[];return i.forEach(t=>{t instanceof gi&&(t.recentBlockhash||(t.recentBlockhash=ka.toBase58()),t.feePayer||(t.feePayer=bi.generate().publicKey)),e.push(ha(t))}),console.log("simulate tx string:",e),e}var yn=2e3,bn=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 n;let e=(await Ba.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=pn(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(Ia.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new qt(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(_.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:o=[],endInstructionTypes:u=[],lookupTableAddress:r=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...o),this.endInstructionTypes.push(...u),this.lookupTableAddress.push(...r.filter(a=>a!==qt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:n}){return e===0?await this.buildV0(q(v({},t||{}),{lookupTableAddress:n})):this.build(t)}build(e){var n;let t=new Jt;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(o=>o.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 o=>{var l;let{recentBlockHash:u,skipPreflight:r=!0,sendAndConfirm:a,notSendToRpc:c}=o||{},d=u!=null?u:await Wt(this.connection,this.blockhashCommitment);if(t.recentBlockhash=d,this.signers.length&&t.sign(...this.signers),Tt([t]),(l=this.owner)!=null&&l.isKeyPair)return{txId:a?await to(this.connection,t,this.signers.find(f=>f.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:r}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:r}),signedTx:t};if(this.signAllTransactions){let m=await this.signAllTransactions([t]);if(this.signers.length)for(let f of m)try{f.sign(...this.signers)}catch{}return{txId:c?"":await this.connection.sendRawTransaction(m[0].serialize(),{skipPreflight:r}),signedTx:m[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var d;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:o}=this.build(n),u=t.filter(l=>l.transaction.instructions.length>0),r=[o,...u.map(l=>l.transaction)],a=[this.signers,...u.map(l=>l.signers)],c=[...this.instructionTypes,...u.map(l=>l.instructionTypes).flat()];return(d=this.owner)!=null&&d.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:r,signers:a,instructionTypes:c,execute:async l=>{var P;let{sequentially:m,onTxUpdate:f,skipTxCount:p=0,recentBlockHash:y,skipPreflight:b=!0}=l||{},g=y!=null?y:await Wt(this.connection,this.blockhashCommitment);if((P=this.owner)!=null&&P.isKeyPair){if(m){let w=[],I=0;for(let C of r){if(++I,I<=p)continue;let k=await to(this.connection,C,this.signers.find(x=>x.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:b});w.push(k)}return{txIds:w,signedTxs:r}}return{txIds:await await Promise.all(r.map(async w=>(w.recentBlockhash=g,await this.connection.sendRawTransaction(w.serialize(),{skipPreflight:b})))),signedTxs:r}}if(this.signAllTransactions){let w=r.map((C,k)=>(C.recentBlockhash=g,a[k].length&&C.sign(...a[k]),C));Tt(w);let I=await this.signAllTransactions(w);if(m){let C=0,k=[],x=async()=>{if(!I[C])return;let S=await this.connection.sendRawTransaction(I[C].serialize(),{skipPreflight:b});k.push({txId:S,status:"sent",signedTx:I[C]}),f==null||f([...k]),C++;let O=!1,M=null,K=null,U=W=>{M!==null&&clearInterval(M),K!==null&&this.connection.removeSignatureListener(K);let V=k.findIndex(X=>X.txId===S);if(V>-1){if(k[V].status==="error"||k[V].status==="success")return;k[V].status=W.err?"error":"success"}f==null||f([...k]),W.err||x()};this.loopMultiTxStatus&&(M=setInterval(async()=>{var W;if(O){clearInterval(M);return}try{let V=await this.connection.getTransaction(S,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(O=!0,clearInterval(M),U({err:((W=V.meta)==null?void 0:W.err)||null}),console.log("tx status from getTransaction:",S))}catch(V){O=!0,clearInterval(M),console.error("getTransaction timeout:",V,S)}},yn)),K=this.connection.onSignature(S,W=>{if(O){this.connection.removeSignatureListener(K);return}O=!0,U(W)},"confirmed"),this.connection.getSignatureStatus(S)};return await x(),{txIds:k.map(S=>S.txId),signedTxs:I}}else{let C=[];for(let k=0;k<I.length;k+=1){let x=await this.connection.sendRawTransaction(I[k].serialize(),{skipPreflight:b});C.push(x)}return{txIds:C,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){var b;let y=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:o,recentBlockhash:u}=y,r=Se(y,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),a=v(v({},this.cluster==="devnet"?await Jn(this.connection):await $n(this.connection)),t),c=Array.from(new Set([...n,...this.lookupTableAddress])),d=[];for(let g of c)a[g]===void 0&&d.push(new qt(g));let l=await jn({connection:this.connection,address:d});for(let[g,P]of Object.entries(l))a[g]=P;let m=o?qt.default.toBase58():u!=null?u:await Wt(this.connection,this.blockhashCommitment),f=new en({payerKey:this.feePayer,recentBlockhash:m,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(a));((b=this.owner)==null?void 0:b.signer)&&!this.signers.some(g=>g.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let p=new tn(f);return p.sign(this.signers),{builder:this,transaction:p,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async g=>{var C;let{skipPreflight:P=!0,sendAndConfirm:w,notSendToRpc:I}=g||{};if(Tt([p]),(C=this.owner)!=null&&C.isKeyPair){let k=await this.connection.sendTransaction(p,{skipPreflight:P});return w&&await fn(this.connection,k),{txId:k,signedTx:p}}if(this.signAllTransactions){let k=await this.signAllTransactions([p]);if(this.signers.length)for(let x of k)try{x.sign(this.signers)}catch{}return{txId:I?"":await this.connection.sendTransaction(k[0],{skipPreflight:P}),signedTx:k[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async buildV0MultiTx(e){var d;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:o}=await this.buildV0(n),u=t.filter(l=>l.builder.instructions.length>0),r=[o,...u.map(l=>l.transaction)],a=[this.signers,...u.map(l=>l.signers)],c=[...this.instructionTypes,...u.map(l=>l.instructionTypes).flat()];return(d=this.owner)!=null&&d.signer&&a.forEach(l=>{l.some(m=>m.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),r.forEach(async(l,m)=>{l.sign(a[m])}),{builder:this,transactions:r,signers:a,instructionTypes:c,buildProps:n,execute:async l=>{var b;let{sequentially:m,onTxUpdate:f,recentBlockHash:p,skipPreflight:y=!0}=l||{};if(p&&r.forEach(g=>g.message.recentBlockhash=p),Tt(r),(b=this.owner)!=null&&b.isKeyPair){if(m){let g=[];for(let P of r){let w=await this.connection.sendTransaction(P,{skipPreflight:y});await fn(this.connection,w),g.push(w)}return{txIds:g,signedTxs:r}}return{txIds:await Promise.all(r.map(async g=>await this.connection.sendTransaction(g,{skipPreflight:y}))),signedTxs:r}}if(this.signAllTransactions){let g=await this.signAllTransactions(r);if(m){let P=0,w=[],I=async()=>{if(!g[P])return;let C=await this.connection.sendTransaction(g[P],{skipPreflight:y});w.push({txId:C,status:"sent",signedTx:g[P]}),f==null||f([...w]),P++;let k=!1,x=null,S=null,O=M=>{x!==null&&clearInterval(x),S!==null&&this.connection.removeSignatureListener(S);let K=w.findIndex(U=>U.txId===C);if(K>-1){if(w[K].status==="error"||w[K].status==="success")return;w[K].status=M.err?"error":"success"}f==null||f([...w]),M.err||I()};this.loopMultiTxStatus&&(x=setInterval(async()=>{var M;if(k){clearInterval(x);return}try{let K=await this.connection.getTransaction(C,{commitment:"confirmed",maxSupportedTransactionVersion:0});K&&(k=!0,clearInterval(x),O({err:((M=K.meta)==null?void 0:M.err)||null}),console.log("tx status from getTransaction:",C))}catch(K){k=!0,clearInterval(x),console.error("getTransaction timeout:",K,C)}},yn)),S=this.connection.onSignature(C,M=>{if(k){this.connection.removeSignatureListener(S);return}k=!0,O(M)},"confirmed"),this.connection.getSignatureStatus(C)};return I(),{txIds:[],signedTxs:g}}else{let P=[];for(let w=0;w<g.length;w+=1){let I=await this.connection.sendTransaction(g[w],{skipPreflight:y});P.push(I)}return{txIds:P,signedTxs:g}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var f;let m=e||{},{splitIns:t=[],computeBudgetConfig:n}=m,o=Se(m,["splitIns","computeBudgetConfig"]),u=n?pn(n):{instructions:[],instructionTypes:[]},r=this.signers.reduce((p,y)=>q(v({},p),{[y.publicKey.toBase58()]:y}),{}),a=[],c=[],d=[],l=0;if(this.allInstructions.forEach(p=>{let y=[...d,p],b=n?[...u.instructions,...y]:y,P=[...new Set(y.map(w=>w.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat()).values()].map(w=>new qt(w));if(p!==t[l]&&d.length<12&&(jt({instructions:b,payer:this.feePayer,signers:P})||jt({instructions:y,payer:this.feePayer,signers:P})))d.push(p);else{if(d.length===0)throw Error("item ins too big");l+=p===t[l]?1:0,jt({instructions:n?[...u.instructions,...d]:[...d],payer:this.feePayer,signers:P})?a.push(new Jt().add(...u.instructions,...d)):a.push(new Jt().add(...d)),c.push(Array.from(new Set(d.map(w=>w.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(w=>r[w]).filter(w=>w!==void 0)),d=[p]}}),d.length>0){let y=[...new Set(d.map(b=>b.keys.filter(g=>g.isSigner).map(g=>g.pubkey.toString())).flat()).values()].map(b=>r[b]).filter(b=>b!==void 0);jt({instructions:n?[...u.instructions,...d]:[...d],payer:this.feePayer,signers:y.map(b=>b.publicKey)})?a.push(new Jt().add(...u.instructions,...d)):a.push(new Jt().add(...d)),c.push(y)}return a.forEach(p=>p.feePayer=this.feePayer),(f=this.owner)!=null&&f.signer&&c.forEach(p=>{p.some(y=>y.publicKey.equals(this.owner.publicKey))||p.push(this.owner.signer)}),{builder:this,transactions:a,signers:c,instructionTypes:this.instructionTypes,execute:async p=>{var C;let{sequentially:y,onTxUpdate:b,skipTxCount:g=0,recentBlockHash:P,skipPreflight:w=!0}=p||{},I=P!=null?P:await Wt(this.connection,this.blockhashCommitment);if(a.forEach(async(k,x)=>{k.recentBlockhash=I,c[x].length&&k.sign(...c[x])}),Tt(a),(C=this.owner)!=null&&C.isKeyPair){if(y){let k=0,x=[];for(let S of a){if(++k,k<=g){x.push("tx skipped");continue}let O=await to(this.connection,S,this.signers.find(M=>M.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:w});x.push(O)}return{txIds:x,signedTxs:a}}return{txIds:await Promise.all(a.map(async k=>await this.connection.sendRawTransaction(k.serialize(),{skipPreflight:w}))),signedTxs:a}}if(this.signAllTransactions){let k=await this.signAllTransactions(a.slice(g,a.length)),x=[...a.slice(0,g),...k];if(y){let S=0,O=[],M=async()=>{if(!x[S])return;S<g&&(O.push({txId:"",status:"success",signedTx:x[S]}),b==null||b([...O]),S++,M());let K=await this.connection.sendRawTransaction(x[S].serialize(),{skipPreflight:w});O.push({txId:K,status:"sent",signedTx:x[S]}),b==null||b([...O]),S++;let U=!1,W=null,V=null,X=z=>{W!==null&&clearInterval(W),V!==null&&this.connection.removeSignatureListener(V);let oe=O.findIndex(te=>te.txId===K);if(oe>-1){if(O[oe].status==="error"||O[oe].status==="success")return;O[oe].status=z.err?"error":"success"}b==null||b([...O]),z.err||M()};this.loopMultiTxStatus&&(W=setInterval(async()=>{var z;if(U){clearInterval(W);return}try{let oe=await this.connection.getTransaction(K,{commitment:"confirmed",maxSupportedTransactionVersion:0});oe&&(U=!0,clearInterval(W),X({err:((z=oe.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",K))}catch(oe){U=!0,clearInterval(W),console.error("getTransaction timeout:",oe,K)}},yn)),V=this.connection.onSignature(K,z=>{if(U){this.connection.removeSignatureListener(V);return}U=!0,X(z)},"confirmed"),this.connection.getSignatureStatus(K)};return await M(),{txIds:O.map(K=>K.txId),signedTxs:x}}else{let S=[];for(let O=0;O<x.length;O+=1){let M=await this.connection.sendRawTransaction(x[O].serialize(),{skipPreflight:w});S.push(M)}return{txIds:S,signedTxs:x}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuildV0(e){var C;let I=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:o={},lookupTableAddress:u=[],insCountLimit:r=12}=I,a=Se(I,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),c=v(v({},this.cluster==="devnet"?await Jn(this.connection):await $n(this.connection)),o),d=Array.from(new Set([...this.lookupTableAddress,...u])),l=[];for(let k of d)c[k]===void 0&&l.push(new qt(k));let m=await jn({connection:this.connection,address:l});for(let[k,x]of Object.entries(m))c[k]=x;let f=t?pn(t):{instructions:[],instructionTypes:[]},p=await Wt(this.connection,this.blockhashCommitment),y=this.signers.reduce((k,x)=>q(v({},k),{[x.publicKey.toBase58()]:x}),{}),b=[],g=[],P=[],w=0;if(this.allInstructions.forEach(k=>{let x=[...P,k],S=t?[...f.instructions,...x]:x;if(k!==n[w]&&P.length<r&&($t({instructions:S,payer:this.feePayer,lookupTableAddressAccount:c})||$t({instructions:x,payer:this.feePayer,lookupTableAddressAccount:c})))P.push(k);else{if(P.length===0)throw Error("item ins too big");w+=k===n[w]?1:0;let O={};for(let M of[...new Set(d)])c[M]!==void 0&&(O[M]=c[M]);if(t&&$t({instructions:[...f.instructions,...P],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:p})){let M=new en({payerKey:this.feePayer,recentBlockhash:p,instructions:[...f.instructions,...P]}).compileToV0Message(Object.values(c));b.push(new tn(M))}else{let M=new en({payerKey:this.feePayer,recentBlockhash:p,instructions:[...P]}).compileToV0Message(Object.values(c));b.push(new tn(M))}g.push(Array.from(new Set(P.map(M=>M.keys.filter(K=>K.isSigner).map(K=>K.pubkey.toString())).flat())).map(M=>y[M]).filter(M=>M!==void 0)),P=[k]}}),P.length>0){let x=[...new Set(P.map(S=>S.keys.filter(O=>O.isSigner).map(O=>O.pubkey.toString())).flat()).values()].map(S=>y[S]).filter(S=>S!==void 0);if(t&&$t({instructions:[...f.instructions,...P],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:p})){let S=new en({payerKey:this.feePayer,recentBlockhash:p,instructions:[...f.instructions,...P]}).compileToV0Message(Object.values(c));b.push(new tn(S))}else{let S=new en({payerKey:this.feePayer,recentBlockhash:p,instructions:[...P]}).compileToV0Message(Object.values(c));b.push(new tn(S))}g.push(x)}return(C=this.owner)!=null&&C.signer&&g.forEach(k=>{k.some(x=>x.publicKey.equals(this.owner.publicKey))||k.push(this.owner.signer)}),b.forEach((k,x)=>{k.sign(g[x])}),{builder:this,transactions:b,buildProps:e,signers:g,instructionTypes:this.instructionTypes,execute:async k=>{var U;let{sequentially:x,onTxUpdate:S,skipTxCount:O=0,recentBlockHash:M,skipPreflight:K=!0}=k||{};if(b.map(async(W,V)=>{g[V].length&&W.sign(g[V]),M&&(W.message.recentBlockhash=M)}),Tt(b),(U=this.owner)!=null&&U.isKeyPair){if(x){let W=0,V=[];for(let X of b){if(++W,W<=O){console.log("skip tx: ",W),V.push("tx skipped");continue}let z=await this.connection.sendTransaction(X,{skipPreflight:K});await fn(this.connection,z),V.push(z)}return{txIds:V,signedTxs:b}}return{txIds:await Promise.all(b.map(async W=>await this.connection.sendTransaction(W,{skipPreflight:K}))),signedTxs:b}}if(this.signAllTransactions){let W=await this.signAllTransactions(b.slice(O,b.length)),V=[...b.slice(0,O),...W];if(x){let X=0,z=[],oe=async()=>{if(!V[X])return;if(X<O){z.push({txId:"",status:"success",signedTx:V[X]}),S==null||S([...z]),X++,oe();return}let te=await this.connection.sendTransaction(V[X],{skipPreflight:K});z.push({txId:te,status:"sent",signedTx:V[X]}),S==null||S([...z]),X++;let Pe=!1,Fe=null,Ue=null,Ze=ve=>{Fe!==null&&clearInterval(Fe),Ue!==null&&this.connection.removeSignatureListener(Ue);let Te=z.findIndex(je=>je.txId===te);if(Te>-1){if(z[Te].status==="error"||z[Te].status==="success")return;z[Te].status=ve.err?"error":"success"}S==null||S([...z]),ve.err||oe()};this.loopMultiTxStatus&&(Fe=setInterval(async()=>{var ve;if(Pe){clearInterval(Fe);return}try{let Te=await this.connection.getTransaction(te,{commitment:"confirmed",maxSupportedTransactionVersion:0});Te&&(Pe=!0,clearInterval(Fe),Ze({err:((ve=Te.meta)==null?void 0:ve.err)||null}),console.log("tx status from getTransaction:",te))}catch(Te){Pe=!0,clearInterval(Fe),console.error("getTransaction timeout:",Te,te)}},yn)),Ue=this.connection.onSignature(te,ve=>{if(Pe){this.connection.removeSignatureListener(Ue);return}Pe=!0,Ze(ve)},"confirmed"),this.connection.getSignatureStatus(te)};return oe(),{txIds:[],signedTxs:V}}else{let X=[];for(let z=0;z<V.length;z+=1){let oe=await this.connection.sendTransaction(V[z],{skipPreflight:K});X.push(oe)}return{txIds:X,signedTxs:V}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}};var no=(...i)=>i.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Le=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=Y(t)}createTxBuilder(e){return this.scope.checkOwner(),new bn({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(no(e))}logInfo(...e){this.logger.info(no(e))}logAndCreateError(...e){let t=no(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as jd,SystemProgram as Jd}from"@solana/web3.js";import np from"bn.js";import{createCloseAccountInstruction as ap,createInitializeAccountInstruction as sp,createTransferInstruction as up,TOKEN_PROGRAM_ID as cp}from"@solana/spl-token";import{Keypair as Ga,PublicKey as za}from"@solana/web3.js";import qd from"bn.js";import{TOKEN_PROGRAM_ID as Xa}from"@solana/spl-token";function xa(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function oo(i,...e){if(!xa(i))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(i.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${i.length}`)}function io(i,e=!0){if(i.destroyed)throw new Error("Hash instance has been destroyed");if(e&&i.finished)throw new Error("Hash#digest() has already been called")}function wi(i,e){oo(i);let t=e.outputLen;if(i.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Pn=i=>new DataView(i.buffer,i.byteOffset,i.byteLength),He=(i,e)=>i<<32-e|i>>>e;var Fm=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Sa(i){if(typeof i!="string")throw new Error(`utf8ToBytes expected string, got ${typeof i}`);return new Uint8Array(new TextEncoder().encode(i))}function ro(i){return typeof i=="string"&&(i=Sa(i)),oo(i),i}var gn=class{clone(){return this._cloneInto()}},vm={}.toString;function ki(i){let e=n=>i().update(ro(n)).digest(),t=i();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>i(),e}function Ka(i,e,t,n){if(typeof i.setBigUint64=="function")return i.setBigUint64(e,t,n);let o=BigInt(32),u=BigInt(4294967295),r=Number(t>>o&u),a=Number(t&u),c=n?4:0,d=n?0:4;i.setUint32(e+c,r,n),i.setUint32(e+d,a,n)}var Ti=(i,e,t)=>i&e^~i&t,hi=(i,e,t)=>i&e^i&t^e&t,An=class extends gn{constructor(e,t,n,o){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Pn(this.buffer)}update(e){io(this);let{view:t,buffer:n,blockLen:o}=this;e=ro(e);let u=e.length;for(let r=0;r<u;){let a=Math.min(o-this.pos,u-r);if(a===o){let c=Pn(e);for(;o<=u-r;r+=o)this.process(c,r);continue}n.set(e.subarray(r,r+a),this.pos),this.pos+=a,r+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){io(this),wi(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:u}=this,{pos:r}=this;t[r++]=128,this.buffer.subarray(r).fill(0),this.padOffset>o-r&&(this.process(n,0),r=0);for(let m=r;m<o;m++)t[m]=0;Ka(n,o-8,BigInt(this.length*8),u),this.process(n,0);let a=Pn(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let d=c/4,l=this.get();if(d>l.length)throw new Error("_sha2: outputLen bigger than state");for(let m=0;m<d;m++)a.setUint32(4*m,l[m],u)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:o,finished:u,destroyed:r,pos:a}=this;return e.length=o,e.pos=a,e.finished=u,e.destroyed=r,o%t&&e.buffer.set(n),e}};var Ca=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),pt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),ft=new Uint32Array(64),ao=class extends An{constructor(){super(64,32,8,!1),this.A=pt[0]|0,this.B=pt[1]|0,this.C=pt[2]|0,this.D=pt[3]|0,this.E=pt[4]|0,this.F=pt[5]|0,this.G=pt[6]|0,this.H=pt[7]|0}get(){let{A:e,B:t,C:n,D:o,E:u,F:r,G:a,H:c}=this;return[e,t,n,o,u,r,a,c]}set(e,t,n,o,u,r,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=u|0,this.F=r|0,this.G=a|0,this.H=c|0}process(e,t){for(let m=0;m<16;m++,t+=4)ft[m]=e.getUint32(t,!1);for(let m=16;m<64;m++){let f=ft[m-15],p=ft[m-2],y=He(f,7)^He(f,18)^f>>>3,b=He(p,17)^He(p,19)^p>>>10;ft[m]=b+ft[m-7]+y+ft[m-16]|0}let{A:n,B:o,C:u,D:r,E:a,F:c,G:d,H:l}=this;for(let m=0;m<64;m++){let f=He(a,6)^He(a,11)^He(a,25),p=l+f+Ti(a,c,d)+Ca[m]+ft[m]|0,b=(He(n,2)^He(n,13)^He(n,22))+hi(n,o,u)|0;l=d,d=c,c=a,a=r+p|0,r=u,u=o,o=n,n=p+b|0}n=n+this.A|0,o=o+this.B|0,u=u+this.C|0,r=r+this.D|0,a=a+this.E|0,c=c+this.F|0,d=d+this.G|0,l=l+this.H|0,this.set(n,o,u,r,a,c,d,l)}roundClean(){ft.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Ii=ki(()=>new ao);import{PublicKey as Wa}from"@solana/web3.js";import Ci,{isBN as Ri}from"bn.js";import{bits as Ra,BitStructure as zm,blob as La,Blob as Xm,cstr as Ym,f32 as Hm,f32be as Qm,f64 as Zm,f64be as jm,greedy as $m,Layout as Oa,ns64 as Jm,ns64be as ed,nu64 as td,nu64be as nd,offset as Na,s16 as od,s16be as id,s24 as rd,s24be as ad,s32 as Ma,s32be as sd,s40 as ud,s40be as cd,s48 as ld,s48be as md,s8 as dd,seq as Fa,struct as pd,Structure as va,u16 as _a,u16be as fd,u24 as yd,u24be as bd,u32 as Va,u32be as gd,u40 as Pd,u40be as Ad,u48 as wd,u48be as kd,u8 as Ea,UInt as Da,union as Td,Union as hd,unionLayoutDiscriminator as Id,utf8 as Bd}from"@solana/buffer-layout";var wn=Oa,Bi=va;var so=Da;var xi=Ea,pe=_a;var kn=Va;var ye=Ma;var Si=Fa;var G=La;var uo=Ra,Ki=Na;var It=class extends wn{constructor(t,n,o){super(t,o);this.blob=G(t),this.signed=n}decode(t,n=0){let o=new Ci(this.blob.decode(t,n),10,"le");return this.signed?o.fromTwos(this.span*8).clone():o}encode(t,n,o=0){return typeof t=="number"&&(t=new Ci(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,o)}},Tn=class extends wn{constructor(t){super(8,t);this._lower=uo(kn(),!1),this._upper=uo(kn(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let o=this._lower.decode(t,n),u=this._upper.decode(t,n+this._lower.span);return v(v({},o),u)}encode(t,n,o=0){return this._lower.encode(t,n,o)+this._upper.encode(t,n,o+this._lower.span)}};function L(i){return new so(1,i)}function ae(i){return new so(4,i)}function s(i){return new It(8,!1,i)}function E(i){return new It(16,!1,i)}function Li(i){return new It(1,!0,i)}function Ut(i){return new It(8,!0,i)}function Oi(i){return new It(16,!0,i)}var nn=class extends wn{constructor(t,n,o,u){super(t.span,u);this.layout=t,this.decoder=n,this.encoder=o}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,o){return this.layout.encode(this.encoder(t),n,o)}getSpan(t,n){return this.layout.getSpan(t,n)}};function A(i){return new nn(G(32),e=>new Wa(e),e=>e.toBuffer(),i)}function ce(i){return new nn(xi(),qa,Ua,i)}function qa(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function Ua(i){return i?1:0}function Ni(i,e){let t=kn("length"),n=R([t,F(i,Ki(t,-t.span),"values")]);return new nn(n,({values:o})=>o,o=>({values:o}),e)}var co=class extends Bi{decode(e,t){return super.decode(e,t)}};function R(i,e,t){return new co(i,e,t)}function F(i,e,t){let n,o=typeof e=="number"?e:Ri(e)?e.toNumber():new Proxy(e,{get(u,r){if(!n){let a=Reflect.get(u,"count");n=Ri(a)?a.toNumber():a,Reflect.set(u,"count",n)}return Reflect.get(u,r)},set(u,r,a){return r==="count"&&(n=a),Reflect.set(u,r,a)}});return Si(i,o,t)}var hn=R([A("mint"),A("owner"),s("amount"),ae("delegateOption"),A("delegate"),L("state"),ae("isNativeOption"),s("isNative"),s("delegatedAmount"),ae("closeAuthorityOption"),A("closeAuthority")]);function We({fromPublicKey:i,programId:e=Xa,assignSeed:t}){let n=t?btoa(t).slice(0,32):Ga.generate().publicKey.toBase58().slice(0,32);return{publicKey:Ya(i,n,e),seed:n}}function Ya(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),o=Ii(n);return new za(o)}import{PublicKey as RA,SystemProgram as LA}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as NA}from"@solana/spl-token";import{PublicKey as Qa}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Za}from"@solana/spl-token";function H(i,e,t){return J([i.toBuffer(),(t!=null?t:Za).toBuffer(),e.toBuffer()],new Qa("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as D}from"@solana/web3.js";var Fi=new D("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),vi=new D("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),_i=new D("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),lo=new D("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Dp=new D("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Vi=new D("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Ei=new D("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),mo=new D("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Wp=new D("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),ja=new D("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Di=new D("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),$a=new D("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ja=new D("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Bt=new D("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),qp=new D("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Wi=new D("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),po=new D("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),es=new D("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Up=new D("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ts=new D("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),ns=new D("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),os=new D("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Gp=new D("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),zp=new D("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Xp=new D("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Yp=new D("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Hp=new D("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var ot={OPEN_BOOK_PROGRAM:new D("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new D("Ray1111111111111111111111111111111111111111"),AMM_V4:new D("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new D("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new D("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new D("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new D("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new D("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new D("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new D("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new D("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new D("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:D.default,Router:new D("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new D("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new D("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new D("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new D("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new D("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new D("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new D("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new D("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new D("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new D("Ray1111111111111111111111111111111111111111")};import UA from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as gg,TOKEN_2022_PROGRAM_ID as Pg,TOKEN_PROGRAM_ID as Ag}from"@solana/spl-token";import{PublicKey as kg}from"@solana/web3.js";import hg from"bn.js";import Bg from"decimal.js";import{TOKEN_PROGRAM_ID as cf}from"@solana/spl-token";import{PublicKey as pf}from"@solana/web3.js";var is=R([ae("mintAuthorityOption"),A("mintAuthority"),s("supply"),L("decimals"),L("isInitialized"),ae("freezeAuthorityOption"),A("freezeAuthority")]);var fo=i=>new de({mint:i.address,decimals:i.decimals,symbol:i.symbol,name:i.name});var yt=o=>{var u=o,{address:i,programId:e,decimals:t}=u,n=Se(u,["address","programId","decimals"]);return v({chainId:101,address:kt(i).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};import{ASSOCIATED_TOKEN_PROGRAM_ID as To,TOKEN_2022_PROGRAM_ID as fe,TOKEN_PROGRAM_ID as ee}from"@solana/spl-token";import{Keypair as xn,PublicKey as N,SystemProgram as tt,TransactionInstruction as le}from"@solana/web3.js";import Sn from"bn.js";import Z from"bn.js";var be=new Z(1).shln(64);var rs=new Z(1).shln(128),xt=new Z(1).shln(64).subn(1),as=new Z(1).shln(128).subn(1),it=-443636,rt=443636,St=new Z("4295048016"),Kt=new Z("79226673521066979257578248091"),qi=new Z("59543866431248"),Ui=new Z("184467440737095516"),Gi=new Z("15793534762490258745"),zi=16,In=512,Ne=60,Bf=new Z("18446743708227953217"),Xi=[{bit:0,factor:new Z("fffcb933bd6fb800",16)},{bit:1,factor:new Z("fff97272373d4000",16)},{bit:2,factor:new Z("fff2e50f5f657000",16)},{bit:3,factor:new Z("ffe5caca7e10f000",16)},{bit:4,factor:new Z("ffcb9843d60f7000",16)},{bit:5,factor:new Z("ff973b41fa98e800",16)},{bit:6,factor:new Z("ff2ea16466c9b000",16)},{bit:7,factor:new Z("fe5dee046a9a3800",16)},{bit:8,factor:new Z("fcbe86c7900bb000",16)},{bit:9,factor:new Z("f987a7253ac65800",16)},{bit:10,factor:new Z("f3392b0822bb6000",16)},{bit:11,factor:new Z("e7159475a2caf000",16)},{bit:12,factor:new Z("d097f3bdfd2f2000",16)},{bit:13,factor:new Z("a9f746462d9f8000",16)},{bit:14,factor:new Z("70d869a156f31c00",16)},{bit:15,factor:new Z("31be135f97ed3200",16)},{bit:16,factor:new Z("9aa508b5b85a500",16)},{bit:17,factor:new Z("5d6af8dedc582c",16)},{bit:18,factor:new Z("2216e584f5fa",16)}];var on=3,Yi=100;var Hi=10,Qi=100,Gt=14;var Q=new Z(0),bt=new Z(1),xf=new Z(-1);var Sf=new Z("18446744073700000000");var ss=R([G(8),L("bump"),pe("index"),A("owner"),ae("protocolFeeRate"),ae("tradeFeeRate"),pe("tickSpacing"),ae("fundFeeRate"),F(ae(),1),A("fundOwner"),F(s(),3)]),us=R([ae("blockTimestamp"),Ut("tickCumulative"),F(s(),4)]),Zi=R([G(8),ce("initialized"),s("recentEpoch"),pe("observationIndex"),A("poolId"),F(us,Yi,"observations"),F(s(),4)]),cs=R([pe("filterPeriod"),pe("decayPeriod"),pe("reductionFactor"),ae("dynamicFeeControl"),ae("maxVolatilityAccumulator"),ye("tickSpacingIndexReference"),ae("volatilityReference"),ae("volatilityAccumulator"),s("lastUpdateTimestamp"),F(L(),46)]),ls=R([L("state"),s("openTime"),s("endTime"),s("lastUpdateTime"),E("emissionsPerSecondX64"),s("totalEmissioned"),s("claimed"),A("mint"),A("vault"),A("creator"),E("growthGlobalX64")]),yo=R([G(8),L("bump"),A("configId"),A("creator"),A("mintA"),A("mintB"),A("vaultA"),A("vaultB"),A("observationId"),L("mintDecimalsA"),L("mintDecimalsB"),pe("tickSpacing"),E("liquidity"),E("sqrtPriceX64"),ye("tickCurrent"),ae(),E("feeGrowthGlobalX64A"),E("feeGrowthGlobalX64B"),s("protocolFeesTokenA"),s("protocolFeesTokenB"),F(E(),4),L("status"),L("feeOn"),G(6),F(ls,on,"rewardInfos"),G(8*16,"tickArrayBitmap"),F(s(),4),s("fundFeesTokenA"),s("fundFeesTokenB"),s("startTime"),s("recentEpoch"),cs.replicate("dynamicFeeInfo"),F(s(),46)]),ms=R([E("growthInsideLastX64"),s("rewardAmountOwed")]),ds=R([G(8),L("bump"),A("nftMint"),A("poolId"),ye("tickLower"),ye("tickUpper"),E("liquidity"),E("feeGrowthInsideLastX64A"),E("feeGrowthInsideLastX64B"),s("tokenFeesOwedA"),s("tokenFeesOwedB"),F(ms,on,"rewardInfos"),s("recentEpoch"),F(s(),7)]),Lf=R([G(8),L("bump"),A("poolId"),ye("tickLower"),ye("tickUpper"),E("liquidity"),E("feeGrowthInsideLastX64A"),E("feeGrowthInsideLastX64B"),s("tokenFeesOwedA"),s("tokenFeesOwedB"),F(E(),on,"rewardGrowthInside"),s("recentEpoch"),F(s(),7)]),ps=R([ye("tick"),Oi("liquidityNet"),E("liquidityGross"),E("feeGrowthOutsideX64A"),E("feeGrowthOutsideX64B"),F(E(),on,"rewardGrowthsOutsideX64"),s("orderPhase"),s("ordersAmount"),s("partFilledOrdersRemaining"),E("unfilledRatioX64"),F(ae(),3)]),ji=R([G(8),A("poolId"),ye("startTickIndex"),F(ps,Ne,"ticks"),L("initializedTickCount"),s("recentEpoch"),F(L(),107)]),fs=R([G(8),L("bump"),F(A(),Hi,"operationOwners"),F(A(),Qi,"whitelistMints")]),ys=R([G(8),A("poolId"),A("owner"),ye("tick"),ce("zeroForOne"),s("orderPhase"),s("totalAmount"),s("filledAmount"),s("settleBase"),s("settleOutput"),s("openTime"),E("unfilledRatioX64"),F(s(),4)]),$i=R([G(8),A("poolId"),G(8*8*Gt,"positiveTickArrayBitmap"),G(8*8*Gt,"negativeTickArrayBitmap")]),Of=R([G(8),pe("index"),pe("filterPeriod"),pe("decayPeriod"),pe("reductionFactor"),ae("dynamicFeeControl"),ae("maxVolatilityAccumulator"),F(s(),8)]),bs=R([G(8),A("wallet"),L("nonceIndex"),s("orderNonce"),F(s(),4)]),Nf=R([s(),L("bump"),A("owner"),A("poolId"),A("positionId"),A("nftAccount"),F(s(),8)]),gs=R([G(8),L("bump"),A("lockOwner"),A("poolId"),A("positionId"),A("nftAccount"),A("lockNftMint"),s("recentEpoch"),F(s(),8)]);import vf from"bn.js";function bo(i){let e=Buffer.alloc(2);return e.writeUInt16LE(i),e}function go(i){let e=Buffer.alloc(4);return e.writeInt32LE(i),e}function Ji(i){let e=Buffer.alloc(4);return e.writeInt32BE(i),e}var zf=Buffer.from("amm_config","utf8"),Po=Buffer.from("pool","utf8"),er=Buffer.from("pool_vault","utf8"),Ps=Buffer.from("pool_reward_vault","utf8"),tr=Buffer.from("position","utf8"),As=Buffer.from("tick_array","utf8"),ws=Buffer.from("operation","utf8"),ks=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Ts=Buffer.from("observation","utf8"),Xf=Buffer.from("support_mint","utf8"),Yf=Buffer.from("dynamic_fee_config","utf8"),hs=Buffer.from("permission","utf8");function nr(i,e,t,n){return J([Po,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function or(i,e){return J([hs,e.toBuffer()],i)}function ir(i,e,t,n,o){return J([Po,e.toBuffer(),t.toBuffer(),n.toBuffer(),bo(o)],i)}function zt(i,e,t){return J([er,e.toBuffer(),t.toBuffer()],i)}function rr(i,e,t){return J([Ps,e.toBuffer(),t.toBuffer()],i)}function Ae(i,e,t){return J([As,e.toBuffer(),Ji(t)],i)}function at(i,e,t,n){return J([tr,e.toBuffer(),go(t),go(n)],i)}function qe(i,e){return J([tr,e.toBuffer()],i)}function Ct(i){return J([Buffer.from("metadata","utf8"),dt.toBuffer(),i.toBuffer()],dt)}function Bn(i){return J([ws],i)}function he(i,e){return J([ks,e.toBuffer()],i)}function Ao(i,e){return J([Ts,e.toBuffer()],i)}var ar=Buffer.from("locked_position","utf8");function wo(i,e){return J([ar,e.toBuffer()],i)}function ko(i,e){return J([ar,e.toBuffer()],i)}import{sha256 as Os}from"js-sha256";import Is from"bn.js";import sr from"decimal.js";function Me(i,e,t){if(t.isZero())throw new Error("Division by zero");return i.mul(e).div(t)}function Ve(i,e,t){if(t.isZero())throw new Error("Division by zero");let n=i.mul(e),o=n.div(t);return n.mod(t).isZero()?o:o.addn(1)}var $f=new Is(1).shln(256).subn(1);function ur(i){return i.isZero()?-1:i.bitLength()-1}function cr(i,e){return new sr(i.toString()).div(sr.pow(2,64)).toDecimalPlaces(e)}import my from"bn.js";import we from"bn.js";import Xt from"decimal.js";var rn=class{static scanLinearBitmap({bitmap:e,tickSpacing:t,offset:n,checkInfo:o}){let u=[],r=e.length*8,a=0,c=r-1;if(o){let m=o.tick/(t*Ne)-n;o.valueType==="gte"?a=Math.max(0,Math.ceil(m)):c=Math.min(r-1,Math.floor(m))}if(a>c)return u;let d=Math.floor(a/8),l=Math.floor(c/8);for(let m=d;m<=l;m++){if(!e[m])continue;let f=m===d?a%8:0,p=m===l?c%8:7;for(let y=f;y<=p;y++)e[m]&1<<y&&u.push((m*8+y+n)*t*Ne)}return u}static findPoolBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let o=Math.floor(n.tick/Ne/t);if(n.valueType==="lte"&&o<-512)return[];if(n.valueType==="gte"&&o>512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:-In,checkInfo:n})}static findPositiveTickArrayBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let o=Math.floor(n.tick/Ne/t);if(n.valueType==="lte"&&o<512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:In,checkInfo:n})}static findNegativeTickArrayBitmap({bitmap:e,tickSpacing:t,count:n,checkInfo:o}){let u=[];if(o){let c=Math.floor(o.tick/Ne/t);if(o.valueType==="gte"&&c>=-512)return u}let r=(o==null?void 0:o.valueType)==="lte"?Math.floor(o.tick/(Ne*t))+7680:1/0,a=(o==null?void 0:o.valueType)==="gte"?Math.ceil(o.tick/(Ne*t))+7680:0;e:for(let c=0;c<Gt;c++){let d=Gt-1-c;for(let l=0;l<512;l++){let m=c*512+l;if(m>r)break e;if(m<a)continue;let f=d*64+Math.floor(l/8);if(!e[f]){l=Math.floor(l/8)*8+7;continue}if(e[f]&1<<l%8){let p=(c*512+l-7680)*Ne*t;if(u.push(p),n!==void 0&&u.length>=n)break e}}}return u}static findTickArrayStartIndex({tickSpacing:e,poolBitmap:t,tickArrayBitmap:n,findInfo:o}){if(o.type==="all")return[...this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap}),...this.findPoolBitmap({tickSpacing:e,bitmap:t}),...this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap})];let u=re.getTickArrayStartIndex(o.tickArrayCurrent,e),{count:r}=o;if(o.type==="oneForZero"){let a={tick:u,valueType:"gte"},c=[()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap,checkInfo:a}),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:a}),()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap,checkInfo:a})];return this.collectUntil(c,r)}if(o.type==="zeroForOne"){let a={tick:u,valueType:"lte"},c=[()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap,checkInfo:a}).sort((d,l)=>l-d),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:a}).sort((d,l)=>l-d),()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap,checkInfo:a}).sort((d,l)=>l-d)];return this.collectUntil(c,r)}throw new Error("find info type check error")}static collectUntil(e,t){let n=[];for(let o of e){if(t!==void 0&&n.length>=t)break;n.push(...o())}return n.slice(0,t)}static findTickArrayAddress(e){return this.findTickArrayStartIndex(e).map(t=>Ae(e.programId,e.poolId,t).publicKey)}static maxTickInTickarrayBitmap(e){return e*Ne*In}},re=class{static firstinitializedTick({data:e,zeroForOne:t}){if(t){for(let n=e.ticks.length-1;n>=0;n--)if(ue.isInitialized({data:e.ticks[n]}))return e.ticks[n]}else for(let n=0;n<e.ticks.length;n++)if(ue.isInitialized({data:e.ticks[n]}))return e.ticks[n]}static nextInitalizedTick({data:e,currentTickIndex:t,tickSpacing:n,zeroForOne:o}){if(this.getTickArrayStartIndex(t,n)!==e.startTickIndex)return;let r=Math.floor((t-e.startTickIndex)/n);if(o){for(let a=r;a>=0;a--)if(ue.isInitialized({data:e.ticks[a]}))return e.ticks[a]}else for(let a=r+1;a<Ne;a++)if(ue.isInitialized({data:e.ticks[a]}))return e.ticks[a]}static getTickArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=this.getTickArrayStartIndex(e,t);return Math.floor((e-n)/t)}static tickCount(e){return Ne*e}static getMinTick(e){return Math.ceil(it/e)*e}static getMaxTick(e){return Math.floor(rt/e)*e}},ue=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>=it&&e<=rt}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${it}, ${rt}]`)}static getSqrtPriceAtTick(e){this.checkTick(e);let t=Math.abs(e),n=be.clone();for(let{bit:o,factor:u}of Xi)(t&1<<o)!==0&&(n=Me(n,u,be));return e>0&&(n=Me(be,be,n)),n}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:n}){if(n){let o=ue.getPriceAtTick(t,!1);return Me(e,o,be)}else{let o=ue.getPriceAtTick(t,!0);return Me(e,be,o)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:n}){if(n){let o=ue.getPriceAtTick(t,!0);return Ve(e,o,be)}else{let o=ue.getPriceAtTick(t,!1);return Ve(e,be,o)}}static limitOrderUnfilledAmount({tick:e}){return e.ordersAmount.add(e.partFilledOrdersRemaining)}static matchLimitOrder({tick:e,swapAmount:t,swapDirectionZeroForOne:n,isBaseInput:o,feeRate:u,isFeeOnInput:r}){let a={amountIn:Q,amountOut:Q,ammFeeAmount:Q},c=this.limitOrderUnfilledAmount({tick:e});if(t.isZero()||c.isZero())return a;if(o)r?(a.ammFeeAmount=Ve(t,new we(u),et),a.amountIn=t.sub(a.ammFeeAmount)):a.amountIn=t,a.amountOut=this.getLimitOrderOutput({amountIn:a.amountIn,tick:e.tick,zeroForOne:n}),a.amountOut.gt(c)&&(a.amountOut=c,a.amountIn=this.getLimitOrderInput({amountOut:c,tick:e.tick,zeroForOne:!n}),r&&(a.ammFeeAmount=Ve(a.amountIn,new we(u),et.sub(new we(u)))));else{let m=we.min(t,c);r?a.amountOut=m:a.amountOut=we.min(Ve(m,et,et.sub(new we(u))),c),a.amountIn=this.getLimitOrderInput({amountOut:a.amountOut,tick:e.tick,zeroForOne:!n}),r&&(a.ammFeeAmount=Ve(a.amountIn,new we(u),et.sub(new we(u))))}let d=Q;e.partFilledOrdersRemaining.gt(Q)&&(d=we.min(e.partFilledOrdersRemaining,a.amountOut),d.gt(Q)&&(e.unfilledRatioX64=Me(e.unfilledRatioX64,e.partFilledOrdersRemaining.sub(d),e.partFilledOrdersRemaining)),e.partFilledOrdersRemaining=e.partFilledOrdersRemaining.sub(d));let l=a.amountOut.sub(d);if(l.gt(Q)){if(!e.partFilledOrdersRemaining.isZero())throw Error("!tick.partFilledOrdersRemaining.isZero()");if(e.ordersAmount.lt(l))throw Error("InvalidLimitOrderAmount");e.orderPhase=e.orderPhase.add(bt),e.unfilledRatioX64=Me(be,e.ordersAmount.sub(l),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(l),e.ordersAmount=Q}return r||(a.ammFeeAmount=Ve(a.amountOut,new we(u),et),a.amountOut=a.amountOut.sub(a.ammFeeAmount)),a}static getPriceAtTick(e,t){let n=this.getSqrtPriceAtTick(e);return t?n.mul(n).add(be.subn(1)).div(be):n.mul(n).div(be)}static getTickAtSqrtPrice(e){if(!(e.gte(St)&&e.lte(Kt)))throw Error("SqrtPriceX64");let t=ur(e),n=t-64,o;n>=0?o=new we(n).shln(32):o=new we(-n).shln(32).neg();let u;t>=64?u=e.shrn(t-63):u=e.shln(63-t);let r=new we(0),a=new we(1).shln(63);for(let g=0;g<zi&&!a.isZero();g++){u=u.mul(u);let P=u.shrn(127).toNumber();u=u.shrn(63+P),P&&(r=r.add(a)),a=a.shrn(1)}let c=r.shrn(32),l=o.add(c).mul(qi),m=l.sub(Ui),f=l.add(Gi),p=this.signedShrn64(m),y=this.signedShrn64(f);return p===y?p:ue.getSqrtPriceAtTick(y).lte(e)?y:p}static signedShrn64(e){if(e.isNeg()){let t=new we(1).shln(64),n=e.div(t);return!e.mod(t).isZero()&&e.isNeg()?n.subn(1).toNumber():n.toNumber()}else return e.shrn(64).toNumber()}static sqrtPriceX64ToPrice(e,t,n){let o=e.mul(e),u=t-n,r=20,a=new we(10).pow(new we(r)),c=o.mul(a),d=new we(1).shln(128),m=c.div(d).toString();for(;m.length<=r;)m="0"+m;let f=m.slice(0,-r),p=m.slice(-r),y=f+"."+p;return new Xt(y).mul(new Xt(10).pow(u))}static tickToPrice(e,t,n){let o=ue.getSqrtPriceAtTick(e);return this.sqrtPriceX64ToPrice(o,t,n)}static priceToTick(e,t,n){let u=e.div(Math.pow(10,t-n)).log().div(new Xt(1.0001).log()).floor();return Math.max(it,Math.min(rt,u.toNumber()))}static priceToSqrtPriceX64(e,t,n){let r=e.div(Math.pow(10,t-n)).sqrt().mul(new Xt(2).pow(64));return new we(r.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:n,zeroForOne:o,tickSpacing:u}){let r=e.clamp(1/10**Math.max(t,n),Number.MAX_SAFE_INTEGER);o||(r=new Xt(1).div(r));let a=ue.toTickIndex(ue.priceToTick(r,t,n),u),c=ue.tickToPrice(a,t,n);return{price:o?c:new Xt(1).div(c),tick:a}}};import by from"bn.js";import Py from"decimal.js";import{PublicKey as mr}from"@solana/web3.js";import Cs from"bn.js";import{TOKEN_2022_PROGRAM_ID as mb,TOKEN_PROGRAM_ID as db}from"@solana/spl-token";import bb from"decimal.js";import Yy from"bn.js";import My from"bn.js";var Ee=class{static isFeeOnInput(e,t){switch(e){case 0:return!0;case 1:return t;case 2:return!t;default:return!0}}static isFeeOnTokenA(e,t){return e.feeOn===0?t:e.feeOn===1}static isOverflowDefaultTickarrayBitmap({tickSpacing:e,tickIndexs:t}){let{maxTickBoundary:n,minTickBoundary:o}=this.tickArrayStartIndexRange({tickSpacing:e});for(let u of t){let r=re.getTickArrayStartIndex(u,e);if(r>=n||r<o)return!0}return!1}static tickArrayStartIndexRange({tickSpacing:e}){let t=rn.maxTickInTickarrayBitmap(e),n=-t;return t>rt&&(t=re.getTickArrayStartIndex(rt,e)+re.tickCount(e)),n<it&&(n=re.getTickArrayStartIndex(it,e)),{maxTickBoundary:t,minTickBoundary:n}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:o,rewardInfos:u}){var a,c,d;let r=[];for(let l=0;l<u.length;l++){let m=u[l],f=(d=(a=t.rewardDefaultInfos[l])==null?void 0:a.mint.programId)!=null?d:(c=await e.getAccountInfo(m.mint))==null?void 0:c.owner;if(f===void 0)throw Error("get new reward mint info error");let p=q(v({},m),{perSecond:cr(m.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new mr(f)});if(p.mint.equals(mr.default)||p.totalEmissioned.eq(xt))continue;if(n<=p.openTime.toNumber()||o.eq(Q)){r.push(p);continue}let y=new Cs(Math.min(p.endTime.toNumber(),n)),b=y.sub(p.lastUpdateTime);if(b.isZero()){r.push(p);continue}let g=Ve(b,p.emissionsPerSecondX64,be),P=Me(b,p.emissionsPerSecondX64,o),w,I=p.totalEmissioned.add(g);if(I.lte(xt))w=I;else{let k=xt.sub(p.totalEmissioned);w=xt,P=Me(k,be,o)}let C=p.growthGlobalX64.add(P);r.push(q(v({},p),{growthGlobalX64:C,totalEmissioned:w,lastUpdateTime:y}))}return r}};import Sb from"bn.js";function Ie(i){let e=`global:${i}`;return Buffer.from(Os.digest(e)).slice(0,8)}Zi.span;var dr=Y("Raydium_Clmm"),Be={createPool:Ie("create_pool"),createCustomizablePool:Ie("create_customizable_pool"),createPermissionedPool:Ie("create_permissioned_pool"),openPositionV2:Ie("open_position_v2"),openPositionWithToken22Nft:Ie("open_position_with_token22_nft"),closePosition:Ie("close_position"),increaseLiquidityV2:Ie("increase_liquidity_v2"),decreaseLiquidityV2:Ie("decrease_liquidity_v2"),initializeReward:Ie("initialize_reward"),setRewardParams:Ie("set_reward_params"),updateRewardInfos:Ie("update_reward_infos"),collectRemainingRewards:Ie("collect_remaining_rewards"),swapV2:Ie("swap_v2"),openLimitOrder:Ie("open_limit_order"),increaseLimitOrder:Ie("increase_limit_order"),decreaseLimitOrder:Ie("decrease_limit_order"),settleLimitOrder:Ie("settle_limit_order"),closeLimitOrder:Ie("close_limit_order")},pr=[188,37,179,131,82,150,84,73],fr=[16,72,250,198,14,162,212,19],ut=class{static createPoolInstruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y){let b=R([E("sqrtPriceX64"),s("startTime")]),g=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:tt.programId,isSigner:!1,isWritable:!1},{pubkey:_e,isSigner:!1,isWritable:!1},...(y!=null?y:[]).map(I=>({pubkey:I,isSigner:!1,isWritable:!1}))],P=Buffer.alloc(b.span);b.encode({sqrtPriceX64:p,startTime:Q},P);let w=Buffer.from([...Be.createPool,...P]);return new le({keys:g,programId:e,data:w})}static createCustomizablePoolInstruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g){let P=R([E("sqrtPriceX64"),L("collectFeeOn"),ce("enableDynamicFee")]),w=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:tt.programId,isSigner:!1,isWritable:!1},{pubkey:_e,isSigner:!1,isWritable:!1},...b.map(k=>({pubkey:k,isSigner:!1,isWritable:!1})),...g?[{pubkey:g,isSigner:!1,isWritable:!1}]:[]],I=Buffer.alloc(P.span);P.encode({sqrtPriceX64:p,collectFeeOn:y,enableDynamicFee:g!==void 0},I);let C=Buffer.from([...Be.createCustomizablePool,...I]);return new le({keys:w,programId:e,data:C})}static createPermissionedPoolInstruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g,P,w,I){let C=R([E("sqrtPriceX64"),L("collectFeeOn"),ce("enableDynamicFee"),pe("seedIndex")]),k=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:tt.programId,isSigner:!1,isWritable:!1},{pubkey:_e,isSigner:!1,isWritable:!1},...w.map(O=>({pubkey:O,isSigner:!1,isWritable:!1})),...I?[{pubkey:I,isSigner:!1,isWritable:!1}]:[]],x=Buffer.alloc(C.span);C.encode({sqrtPriceX64:b,collectFeeOn:g,enableDynamicFee:I!==void 0,seedIndex:P},x);let S=Buffer.from([...Be.createPermissionedPool,...x]);return new le({keys:k,programId:e,data:S})}static initializeRewardInstruction(e,t,n,o,u,r,a,c,d,l,m,f){let p=R([s("openTime"),s("endTime"),E("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:tt.programId,isSigner:!1,isWritable:!1},{pubkey:_e,isSigner:!1,isWritable:!1}],b=Buffer.alloc(p.span);p.encode({openTime:l,endTime:m,emissionsPerSecondX64:f},b);let g=Buffer.from([...Be.initializeReward,...b]);return new le({keys:y,programId:e,data:g})}static updateRewardInfosInstruction(e,t){let n=[{pubkey:t,isSigner:!1,isWritable:!0}],o=Buffer.from([...Be.updateRewardInfos]);return new le({keys:n,programId:e,data:o})}static setRewardParamsInstruction(e,t,n,o,u,r,a,c,d,l,m,f){let p=R([L("rewardIndex"),E("emissionsPerSecondX64"),s("openTime"),s("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:fe,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],b=Buffer.alloc(p.span);p.encode({rewardIndex:d,emissionsPerSecondX64:f,openTime:l,endTime:m},b);let g=Buffer.from([...Be.setRewardParams,...b]);return new le({keys:y,programId:e,data:g})}static closePositionInstruction(e,t,n,o,u,r,a){let c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:tt.programId,isSigner:!1,isWritable:!1},{pubkey:r?fe:ee,isSigner:!1,isWritable:!1}];a&&c.push({pubkey:a,isSigner:!1,isWritable:!0});let d=Buffer.from([...Be.closePosition]);return new le({keys:c,programId:e,data:d})}static openPositionV2Instruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g,P,w,I,C,k,x,S,O,M,K,U){let W=R([ye("tickLower"),ye("tickUpper"),ye("tickArrayLowerStart"),ye("tickArrayUpperStart"),E("liquidity"),s("amountMaxA"),s("amountMaxB"),ce("withMetadata"),L("optionBaseFlag"),ce("baseFlag")]),V=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:_e,isSigner:!1,isWritable:!1},{pubkey:tt.programId,isSigner:!1,isWritable:!1},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:To,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:fe,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:P,isSigner:!1,isWritable:!1},...U?[{pubkey:U,isSigner:!1,isWritable:!0}]:[]],X=Buffer.alloc(W.span);W.encode({tickLower:w,tickUpper:I,tickArrayLowerStart:C,tickArrayUpperStart:k,liquidity:x,amountMaxA:S,amountMaxB:O,withMetadata:M,optionBaseFlag:K!==null?1:0,baseFlag:K!=null?K:!1},X);let z=Buffer.from([...Be.openPositionV2,...X]);return new le({keys:V,programId:e,data:z})}static increaseLiquidityV2Instruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g,P,w,I){let C=R([E("liquidity"),s("amountMaxA"),s("amountMaxB"),L("optionBaseFlag"),ce("baseFlag")]),k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:fe,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...I?[{pubkey:I,isSigner:!1,isWritable:!0}]:[]],x=Buffer.alloc(C.span);C.encode({liquidity:b,amountMaxA:g,amountMaxB:P,optionBaseFlag:w!==null?1:0,baseFlag:w!=null?w:!1},x);let S=Buffer.from([...Be.increaseLiquidityV2,...x]);return new le({keys:k,programId:e,data:S})}static decreaseLiquidityV2Instruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g,P,w,I){let C=R([E("liquidity"),s("amountMinA"),s("amountMinB")]),k=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:fe,isSigner:!1,isWritable:!1},{pubkey:mt,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...I?[{pubkey:I,isSigner:!1,isWritable:!0}]:[],...b.map(O=>[{pubkey:O.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.rewardMint,isSigner:!1,isWritable:!1}]).flat()],x=Buffer.alloc(C.span);C.encode({liquidity:g,amountMinA:P,amountMinB:w},x);let S=Buffer.from([...Be.decreaseLiquidityV2,...x]);return new le({keys:k,programId:e,data:S})}static swapV2Instruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g,P){let w=R([s("amount"),s("otherAmountThreshold"),E("sqrtPriceLimitX64"),ce("isBaseInput")]),I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:fe,isSigner:!1,isWritable:!1},{pubkey:mt,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[],...m.map(x=>({pubkey:x,isSigner:!1,isWritable:!0}))],C=Buffer.alloc(w.span);w.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:b,isBaseInput:g},C);let k=Buffer.from([...Be.swapV2,...C]);return new le({keys:I,programId:e,data:k})}static collectRemainingRewardsInstruction(e,t,n,o,u,r,a){let c=R([L("rewardIndex")]),d=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:fe,isSigner:!1,isWritable:!1},{pubkey:mt,isSigner:!1,isWritable:!1}],l=Buffer.alloc(c.span);c.encode({rewardIndex:a},l);let m=Buffer.from([...Be.collectRemainingRewards,...l]);return new le({keys:d,programId:e,data:m})}static openPositionWithToken22NftInstruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g,P,w,I,C,k,x,S,O,M,K){let U=R([ye("tickLower"),ye("tickUpper"),ye("tickArrayLowerStart"),ye("tickArrayUpperStart"),E("liquidity"),s("amountMaxA"),s("amountMaxB"),ce("withMetadata"),L("optionBaseFlag"),ce("baseFlag")]),W=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:_e,isSigner:!1,isWritable:!1},{pubkey:tt.programId,isSigner:!1,isWritable:!1},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:To,isSigner:!1,isWritable:!1},{pubkey:fe,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...K?[{pubkey:K,isSigner:!1,isWritable:!0}]:[]],V=Buffer.alloc(U.span);U.encode({tickLower:P,tickUpper:w,tickArrayLowerStart:I,tickArrayUpperStart:C,liquidity:k,amountMaxA:x,amountMaxB:S,withMetadata:O,optionBaseFlag:M!==null?1:0,baseFlag:M!=null?M:!1},V);let X=Buffer.from([...Be.openPositionWithToken22Nft,...V]);return new le({keys:W,programId:e,data:X})}static openLimitOrderInstruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g,P,w){let I=R([L("nonceIndex"),ce("zeroForOne"),ye("tickIndex"),s("amount")]),C=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:tt.programId,isSigner:!1,isWritable:!1},...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[]],k=Buffer.alloc(I.span);I.encode({nonceIndex:y,zeroForOne:b,tickIndex:g,amount:P},k);let x=Buffer.from([...Be.openLimitOrder,...k]);return new le({keys:C,programId:e,data:x})}static increaseLimitOrderInstruction(e,t,n,o,u,r,a,c,d,l){let m=R([s("amount")]),f=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1}],p=Buffer.alloc(m.span);m.encode({amount:l},p);let y=Buffer.from([...Be.increaseLimitOrder,...p]);return new le({keys:f,programId:e,data:y})}static decreaseLimitOrderInstruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y){let b=R([s("amount"),s("amountMin")]),g=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:fe,isSigner:!1,isWritable:!1},...y?[{pubkey:y,isSigner:!1,isWritable:!0}]:[]],P=Buffer.alloc(b.span);b.encode({amount:f,amountMin:p},P);let w=Buffer.from([...Be.decreaseLimitOrder,...P]);return new le({keys:g,programId:e,data:w})}static settleLimitOrderInstruction(e,t,n,o,u,r,a,c,d){let l=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1}],m=Buffer.from([...Be.settleLimitOrder]);return new le({keys:l,programId:e,data:m})}static closeLimitOrderInstruction(e,t,n,o){let u=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0}],r=Buffer.from([...Be.closeLimitOrder]);return new le({keys:u,programId:e,data:r})}static createPoolInstructions(e){let{programId:t,owner:n,mintA:o,mintB:u,ammConfigId:r,initialPriceX64:a,extendMintAccount:c}=e,[d,l]=[new N(o.address),new N(u.address)],[m,f]=[new N(o.programId||ee),new N(u.programId||ee)],{publicKey:p}=nr(t,r,d,l),{publicKey:y}=Ao(t,p),{publicKey:b}=zt(t,p,d),{publicKey:g}=zt(t,p,l),P=he(t,p).publicKey,w=[this.createPoolInstruction(t,p,n,r,y,d,b,m,l,g,f,P,a,c)];return{signers:[],instructions:w,instructionTypes:[_.CreateAccount,_.ClmmCreatePool],address:{poolId:p,observationId:y,exBitmapAccount:P,mintA:d,mintB:l,mintAProgram:m,mintBProgram:f,mintAVault:b,mintBVault:g},lookupTableAddress:[]}}static createPermissionedPoolInstructions(e){let{programId:t,owner:n,mintA:o,mintB:u,ammConfigId:r,initialPriceX64:a,extendMintAccount:c,payer:d,seedIndex:l}=e,[m,f]=[new N(o.address),new N(u.address)],[p,y]=[new N(o.programId||ee),new N(u.programId||ee)],{publicKey:b}=ir(t,r,m,f,l),{publicKey:g}=or(t,d),{publicKey:P}=Ao(t,b),{publicKey:w}=zt(t,b,m),{publicKey:I}=zt(t,b,f),C=he(t,b).publicKey,k=[this.createPoolInstruction(t,b,n,r,P,m,w,p,f,I,y,C,a,c)];return{signers:[],instructions:k,instructionTypes:[_.CreateAccount,_.ClmmCreatePool],address:{poolId:b,observationId:P,exBitmapAccount:C,mintA:m,mintB:f,mintAProgram:p,mintBProgram:y,mintAVault:w,mintBVault:I,permission:g},lookupTableAddress:[]}}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:u,liquidity:r,amountMaxA:a,amountMaxB:c,base:d,withMetadata:l,getEphemeralSigners:m,nft2022:f}){let p=[],[y,b]=[new N(e.programId),new N(e.id)],g;if(m)g=new N((await m(1))[0]);else{let K=xn.generate();p.push(K),g=K.publicKey}let P=re.getTickArrayStartIndex(o,e.config.tickSpacing),w=re.getTickArrayStartIndex(u,e.config.tickSpacing),{publicKey:I}=Ae(y,b,P),{publicKey:C}=Ae(y,b,w),{publicKey:k}=f?H(n.wallet,g,fe):H(n.wallet,g,ee),{publicKey:x}=Ct(g),{publicKey:S}=qe(y,g),{publicKey:O}=at(y,b,o,u),M=f?this.openPositionWithToken22NftInstruction(y,n.feePayer,b,n.wallet,g,k,O,I,C,S,n.tokenAccountA,n.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),o,u,P,w,r,a,c,l==="create",d&&d==="MintA",Ee.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[P,w]})?he(y,b).publicKey:void 0):this.openPositionV2Instruction(y,n.feePayer,b,n.wallet,g,k,x,O,I,C,S,n.tokenAccountA,n.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),o,u,P,w,r,a,c,l==="create",null,Ee.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[P,w]})?he(y,b).publicKey:void 0);return{signers:p,instructions:[M],instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:g,tickArrayLower:I,tickArrayUpper:C,positionNftAccount:k,metadataAccount:x,personalPosition:S,protocolPosition:O}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:u,base:r,baseAmount:a,otherAmountMax:c,liquidity:d,withMetadata:l,getEphemeralSigners:m,nft2022:f}){let p=[],[y,b]=[new N(e.programId),new N(e.id)],g;if(m)g=new N((await m(1))[0]);else{let K=xn.generate();p.push(K),g=K.publicKey}let P=re.getTickArrayStartIndex(o,e.config.tickSpacing),w=re.getTickArrayStartIndex(u,e.config.tickSpacing),{publicKey:I}=Ae(y,b,P),{publicKey:C}=Ae(y,b,w),{publicKey:k}=f?H(n.wallet,g,fe):H(n.wallet,g,ee),{publicKey:x}=Ct(g),{publicKey:S}=qe(y,g),{publicKey:O}=at(y,b,o,u),M=f?this.openPositionWithToken22NftInstruction(y,n.feePayer,b,n.wallet,g,k,O,I,C,S,n.tokenAccountA,n.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),o,u,P,w,d,!r||r==="MintA"?a:c,!r||r==="MintA"?c:a,l==="create",r&&r==="MintA",Ee.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[P,w]})?he(y,b).publicKey:void 0):this.openPositionV2Instruction(y,n.feePayer,b,n.wallet,g,k,x,O,I,C,S,n.tokenAccountA,n.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),o,u,P,w,Q,r==="MintA"?a:c,r==="MintA"?c:a,l==="create",r==="MintA",Ee.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[P,w]})?he(y,b).publicKey:void 0);return{address:{nftMint:g,tickArrayLower:I,tickArrayUpper:C,positionNftAccount:k,metadataAccount:x,personalPosition:S,protocolPosition:O},instructions:[M],signers:p,instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:u,liquidity:r,amountMaxA:a,amountMaxB:c,base:d,withMetadata:l,getEphemeralSigners:m,nft2022:f}){let p,y=[];if(m)p=new N((await m(1))[0]);else{let K=xn.generate();y.push(K),p=K.publicKey}let[b,g]=[new N(e.programId),new N(e.id)],P=re.getTickArrayStartIndex(o,e.config.tickSpacing),w=re.getTickArrayStartIndex(u,e.config.tickSpacing),{publicKey:I}=Ae(b,g,P),{publicKey:C}=Ae(b,g,w),{publicKey:k}=f?H(n.wallet,p,fe):H(n.wallet,p,ee),{publicKey:x}=Ct(p),{publicKey:S}=qe(b,p),{publicKey:O}=at(b,g,o,u),M=f?this.openPositionWithToken22NftInstruction(b,n.wallet,g,n.wallet,p,k,O,I,C,S,n.tokenAccountA,n.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(t.mintA.address),new N(t.mintB.address),o,u,P,w,r,a,c,l==="create",d&&d==="MintA",Ee.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[P,w]})?he(b,g).publicKey:void 0):this.openPositionV2Instruction(b,n.wallet,g,n.wallet,p,k,x,O,I,C,S,n.tokenAccountA,n.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(t.mintA.address),new N(t.mintB.address),o,u,P,w,r,a,c,l==="create",null,Ee.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[P,w]})?he(b,g).publicKey:void 0);return{address:{nftMint:p,tickArrayLower:I,tickArrayUpper:C,positionNftAccount:k,metadataAccount:x,personalPosition:S,protocolPosition:O},instructions:[M],signers:y,instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:o,nft2022:u}){let r=new N(e.programId),a=u?H(n.wallet,o.nftMint,fe).publicKey:H(n.wallet,o.nftMint,ee).publicKey,{publicKey:c}=qe(r,o.nftMint),d=[];return d.push(this.closePositionInstruction(r,n.wallet,o.nftMint,a,c,!!u,new N(e.id))),{address:{positionNftAccount:a,personalPosition:c},signers:[],instructions:d,instructionTypes:[_.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:u,amountMaxA:r,amountMaxB:a,nft2022:c}){let[d,l]=[new N(e.programId),new N(e.id)],m=re.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),f=re.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Ae(d,l,m),{publicKey:y}=Ae(d,l,f),{publicKey:b}=c?H(o.wallet,n.nftMint,fe):H(o.wallet,n.nftMint,ee),{publicKey:g}=qe(d,n.nftMint),{publicKey:P}=at(d,l,n.tickLower,n.tickUpper),w=this.increaseLiquidityV2Instruction(d,o.wallet,b,g,l,P,p,y,o.tokenAccountA,o.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),u,r,a,null,Ee.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[m,f]})?he(d,l).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:b,personalPosition:g,protocolPosition:P},signers:[],instructions:[w],instructionTypes:[_.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,base:u,baseAmount:r,otherAmountMax:a,nft2022:c}){let[d,l]=[new N(e.programId),new N(e.id)],m=re.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),f=re.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Ae(d,l,m),{publicKey:y}=Ae(d,l,f),{publicKey:b}=c?H(o.wallet,n.nftMint,fe):H(o.wallet,n.nftMint,ee),{publicKey:g}=qe(d,n.nftMint),{publicKey:P}=at(d,l,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:b,personalPosition:g,protocolPosition:P},instructions:[this.increaseLiquidityV2Instruction(d,o.wallet,b,g,l,P,p,y,o.tokenAccountA,o.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),Q,u==="MintA"?r:a,u==="MintA"?a:r,u==="MintA",Ee.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[m,f]})?he(d,l).publicKey:void 0)],signers:[],instructionTypes:[_.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:u,amountMinA:r,amountMinB:a,programId:c,nft2022:d}){let[l,m]=[new N(e.programId),new N(e.id)],f=re.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),p=re.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:y}=Ae(l,m,f),{publicKey:b}=Ae(l,m,p),{publicKey:g}=d?H(o.wallet,n.nftMint,fe):H(o.wallet,n.nftMint,c),{publicKey:P}=qe(l,n.nftMint),{publicKey:w}=at(l,m,n.tickLower,n.tickUpper),I=new Map;for(let S=0;S<t.rewardInfos.length;S++)I.set(t.rewardInfos[S].mint.address,o.rewardAccounts[S]);let C=[];for(let S=0;S<t.rewardInfos.length;S++){let O=t.rewardInfos[S].mint.address,M=I.get(O);M&&C.push({poolRewardVault:new N(t.rewardInfos[S].vault),ownerRewardVault:M,rewardMint:new N(O)})}let k=[],x=this.decreaseLiquidityV2Instruction(l,o.wallet,g,P,m,w,y,b,o.tokenAccountA,o.tokenAccountB,new N(t.vault.A),new N(t.vault.B),new N(e.mintA.address),new N(e.mintB.address),C,u,r,a,Ee.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[f,p]})?he(l,m).publicKey:void 0);return k.push(x),{address:{tickArrayLower:y,tickArrayUpper:b,positionNftAccount:g,personalPosition:P,protocolPosition:w},signers:[],instructions:k,instructionTypes:[_.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:o,inputMint:u,amountIn:r,amountOutMin:a,sqrtPriceLimitX64:c,remainingAccounts:d}){let[l,m]=[new N(e.programId),new N(e.id)],[f,p]=[new N(t.vault.A),new N(t.vault.B)],[y,b]=[new N(e.mintA.address),new N(e.mintB.address)],g=e.mintA.address.toString()===u.toString(),P=[this.swapV2Instruction(l,o.wallet,m,new N(e.config.id),g?o.tokenAccountA:o.tokenAccountB,g?o.tokenAccountB:o.tokenAccountA,g?f:p,g?p:f,g?y:b,g?b:y,d,n,r,a,c,!0,he(l,m).publicKey)];return{signers:[],instructions:P,instructionTypes:[_.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:o,outputMint:u,amountOut:r,amountInMax:a,sqrtPriceLimitX64:c,remainingAccounts:d}){let[l,m]=[new N(e.programId),new N(e.id)],[f,p]=[new N(t.vault.A),new N(t.vault.B)],[y,b]=[new N(e.mintA.address),new N(e.mintB.address)],g=e.mintB.address.toString()===u.toBase58(),P=[this.swapV2Instruction(l,o.wallet,m,new N(e.config.id),g?o.tokenAccountA:o.tokenAccountB,g?o.tokenAccountB:o.tokenAccountA,g?f:p,g?p:f,g?y:b,g?b:y,d,n,r,a,c,!1,he(l,m).publicKey)];return{signers:[],instructions:P,instructionTypes:[_.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:o}){let[u,r]=[new N(e.programId),new N(e.id)],a=rr(u,r,o.mint).publicKey,c=Bn(u).publicKey,d=[this.initializeRewardInstruction(u,n.wallet,r,c,new N(e.config.id),n.tokenAccount,o.programId,o.mint,a,new Sn(o.openTime),new Sn(o.endTime),o.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:d,instructionTypes:[_.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:o}){let[u,r]=[new N(e.programId),new N(e.id)],a,c,d;for(let f=0;f<e.rewardDefaultInfos.length;f++)e.rewardDefaultInfos[f].mint.address===o.mint.toString()&&(a=f,c=new N(t.rewardInfos[f].vault),d=new N(t.rewardInfos[f].mint.address));(a===void 0||c===void 0)&&dr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let l=Bn(u).publicKey,m=[this.setRewardParamsInstruction(u,n.wallet,r,l,new N(e.config.id),n.tokenAccount,c,d,a,new Sn(o.openTime),new Sn(o.endTime),o.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:l},signers:[],instructions:m,instructionTypes:[_.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:o}){let[u,r]=[new N(e.programId),new N(e.id)],a,c;for(let l=0;l<e.rewardDefaultInfos.length;l++)e.rewardDefaultInfos[l].mint.address===o.toString()&&(a=l,c=new N(t.rewardInfos[l].vault));(a===void 0||c===void 0)&&dr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let d=[this.collectRemainingRewardsInstruction(u,n.wallet,r,n.tokenAccount,c,o,a)];return{address:{rewardVault:c},signers:[],instructions:d,instructionTypes:[_.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async makeLockPositions({programId:e,authProgramId:t,poolProgramId:n,payer:o,wallet:u,nftMint:r,nft2022:a,getEphemeralSigners:c}){let d=[],l;if(c)l=new N((await c(1))[0]);else{let P=xn.generate();d.push(P),l=P.publicKey}let m=a?H(u,r,fe).publicKey:H(u,r,ee).publicKey,{publicKey:f}=qe(n,r),p=ko(e,l).publicKey,y=H(u,l,ee).publicKey,b=Ct(l).publicKey,g=ut.lockPositionInstructionV2({programId:e,auth:t,payer:o,positionOwner:u,lockOwner:u,positionNftAccount:m,positionId:f,lockPositionId:p,lockNftMint:l,lockNftAccount:y,metadataAccount:b,withMetadata:!0,nft2022:a,positionNftMint:r,authPositionNftAccount:H(t,r,a?fe:ee).publicKey,positionNftProgram:a?fe:ee});return{address:{positionId:f,lockPositionId:p,lockNftAccount:y,lockNftMint:l,positionNftAccount:m,metadataAccount:b},instructions:[g],signers:d,instructionTypes:[_.ClmmLockPosition],lookupTableAddress:[]}}static lockPositionInstructionV2({programId:e,auth:t,payer:n,positionOwner:o,lockOwner:u,positionNftAccount:r,positionId:a,positionNftMint:c,authPositionNftAccount:d,positionNftProgram:l,lockPositionId:m,lockNftMint:f,lockNftAccount:p,metadataAccount:y,withMetadata:b}){let g=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!0,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:To,isSigner:!1,isWritable:!1},{pubkey:_e,isSigner:!1,isWritable:!1},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:tt.programId,isSigner:!1,isWritable:!1}],P=R([ce("withMetadata")]),w=Buffer.alloc(P.span);P.encode({withMetadata:b},w);let I=Buffer.from([...pr,...w]);return new le({keys:g,programId:e,data:I})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:o,positionNft:u}){let{publicKey:r}=H(o,u,ee),{publicKey:a}=qe(n,u),c=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:wo(e,a).publicKey,isSigner:!1,isWritable:!0},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:tt.programId,isSigner:!1,isWritable:!1}];return new le({keys:c,programId:e,data:Buffer.from(pr)})}static harvestLockPositionInstruction(e){let[t,n]=[new N(e.poolKeys.programId),new N(e.poolKeys.id)],o=re.getTickArrayStartIndex(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),u=re.getTickArrayStartIndex(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:r}=Ae(t,n,o),{publicKey:a}=Ae(t,n,u),{publicKey:c}=H(e.owner,e.ownerPosition.nftMint,ee),{publicKey:d}=qe(t,e.ownerPosition.nftMint),{publicKey:l}=at(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),m=[];for(let y=0;y<e.poolKeys.rewardInfos.length;y++)m.push({poolRewardVault:new N(e.poolKeys.rewardInfos[y].vault),ownerRewardVault:e.ownerRewardAccounts[y],rewardMint:new N(e.poolKeys.rewardInfos[y].mint.address)});let f=[...m.map(y=>[{pubkey:y.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:y.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:y.rewardMint,isSigner:!1,isWritable:!1}]).flat()],p=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:wo(e.programId,d).publicKey,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e.owner,isSigner:!0,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:new N(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new N(e.poolKeys.vault.B),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:e.userVaultA,isSigner:!1,isWritable:!0},{pubkey:e.userVaultB,isSigner:!1,isWritable:!0},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:fe,isSigner:!1,isWritable:!1},{pubkey:mt,isSigner:!1,isWritable:!1},{pubkey:new N(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new N(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...f];return new le({keys:p,programId:e.programId,data:Buffer.from(fr)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:o,lockOwner:u,lockNftMint:r,lockNftAccount:a,positionNftAccount:c,positionId:d,poolId:l,protocolPosition:m,vaultA:f,vaultB:p,tickArrayLower:y,tickArrayUpper:b,userVaultA:g,userVaultB:P,mintA:w,mintB:I,rewardAccounts:C,exTickArrayBitmap:k}){let x=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[],...C.map(O=>[{pubkey:O.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.rewardMint,isSigner:!1,isWritable:!1}]).flat()],S=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!0,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:fe,isSigner:!1,isWritable:!1},{pubkey:mt,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:I,isSigner:!1,isWritable:!1},...x];return new le({keys:S,programId:e,data:Buffer.from(fr)})}};import{PublicKey as Bo}from"@solana/web3.js";var ho=R([L("instruction")]),vs=R([L("instruction")]),_s=R([s("rewardState"),s("rewardOpenTime"),s("rewardEndTime"),s("rewardLastUpdateTime"),s("totalReward"),s("totalRewardEmissioned"),s("rewardClaimed"),s("rewardPerSecond"),E("accRewardPerShare"),A("rewardVault"),A("rewardMint"),A("rewardSender"),s("rewardType"),F(s(),15,"padding")]),Vs=R([s("state"),s("nonce"),A("lpVault"),A("rewardVault"),A(),A(),s(),s(),s("totalReward"),E("perShareReward"),s("lastSlot"),s("perSlotReward")]),Es=R([s("state"),s("nonce"),A("lpVault"),A("rewardVaultA"),s("totalRewardA"),E("perShareRewardA"),s("perSlotRewardA"),L("option"),A("rewardVaultB"),G(7),s("totalRewardB"),E("perShareRewardB"),s("perSlotRewardB"),s("lastSlot"),A()]),Ds=R([s(),s("state"),s("nonce"),s("validRewardTokenNum"),E("rewardMultiplier"),s("rewardPeriodMax"),s("rewardPeriodMin"),s("rewardPeriodExtend"),A("lpMint"),A("lpVault"),F(_s,5,"rewardInfos"),A("creator"),A(),F(s(),32,"padding")]),Ws=new Proxy(Vs,{get(i,e,t){return e==="decode"?(...n)=>{let o=i.decode(...n);return q(v({},o),{version:3,rewardInfos:[{rewardVault:o.rewardVault,totalReward:o.totalReward,perSlotReward:o.perSlotReward,perShareReward:o.perShareReward}]})}:Reflect.get(i,e,t)}}),qs=new Proxy(Es,{get(i,e,t){return e==="decode"?(...n)=>{let o=i.decode(...n);return q(v({},o),{version:5,rewardInfos:[{rewardVault:o.rewardVaultA,totalReward:o.totalRewardA,perSlotReward:o.perSlotRewardA,perShareReward:o.perShareRewardA},{rewardVault:o.rewardVaultB,totalReward:o.totalRewardB,perSlotReward:o.perSlotRewardB,perShareReward:o.perShareRewardB}]})}:Reflect.get(i,e,t)}}),gr=new Proxy(Ds,{get(i,e,t){return e==="decode"?(...n)=>{let o=i.decode(...n);return q(v({},o),{version:6,rewardInfos:o.rewardInfos.map(u=>{var r;return q(v({},u),{rewardType:((r=Object.entries(an).find(a=>String(a[1])===u.rewardType.toString()))!=null?r:["Standard SPL"])[0]})})})}:Reflect.get(i,e,t)}}),Us=R([s("isSet"),s("rewardPerSecond"),s("rewardOpenTime"),s("rewardEndTime"),s("rewardType")]),Gs=R([L("instruction"),s("nonce"),F(Us,5,"rewardTimeInfo")]),zs=R([L("instruction"),s("rewardReopenTime"),s("rewardEndTime"),s("rewardPerSecond")]),Xs=R([L("instruction"),s("isSet"),s("rewardPerSecond"),s("rewardOpenTime"),s("rewardEndTime"),s("rewardType")]),iP=R([s("state"),A("id"),A("owner"),s("deposited"),F(s(),1,"rewardDebts")]),Io=R([s("state"),A("id"),A("owner"),s("deposited"),F(E(),1,"rewardDebts"),s(""),s("voteLockedBalance"),F(s(),15)]),rP=R([s("state"),A("id"),A("owner"),s("deposited"),F(s(),2,"rewardDebts")]),Pr=R([s("state"),A("id"),A("owner"),s("deposited"),F(E(),2,"rewardDebts"),F(s(),17)]),Ar=R([s(),s("state"),A("id"),A("owner"),s("deposited"),F(E(),5,"rewardDebts"),F(s(),16)]),Rt=R([L("instruction"),s("amount")]),Ys=R([A("mint"),A("grantAuthority"),s("baselineVoteWeightScaledFactor"),s("maxExtraLockupVoteWeightScaledFactor"),s("lockupSaturationSecs"),Li("digitShift"),F(L(),7,"reserved1"),F(s(),7,"reserved2")]),Hs=R([G(8),A("governanceProgramId"),A("realm"),A("realmGoverningTokenMint"),A("realmAuthority"),F(L(),32,"reserved1"),F(Ys,4,"votingMints"),Ut("timeOffset"),L("bump"),F(L(),7,"reserved2"),F(s(),11,"reserved3")]),Qs=R([Ut("startTime"),Ut("endTime"),L("kind"),F(L(),15,"reserved")]),Zs=R([F(Qs,1,"lockup"),s("amountDeposited_native"),s("amountInitiallyLockedNative"),ce("isUsed"),ce("allowClawback"),L("votingMintConfigIdx"),F(L(),29,"reserved")]),js=R([G(8),A("voterAuthority"),A("registrar"),F(Zs,32,"deposits"),L("voterBump"),L("voterWweightRecordBump"),F(L(),94,"reserved")]);import{NATIVE_MINT as fP}from"@solana/spl-token";var yP=Y("Raydium_farm_config"),$s=new Bo("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Js=new Bo("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var bP=new Bo("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var xo={3:Io,5:Pr,6:Ar};var an={"Standard SPL":0,"Option tokens":1},Kn={[Fi.toString()]:3,[vi.toString()]:4,[_i.toString()]:5,[lo.toString()]:6,[ot.FARM_PROGRAM_ID_V3.toString()]:3,[ot.FARM_PROGRAM_ID_V4.toString()]:4,[ot.FARM_PROGRAM_ID_V5.toString()]:5,[ot.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as Ce,SystemProgram as ru,SYSVAR_CLOCK_PUBKEY as wr,SYSVAR_RENT_PUBKEY as au,TransactionInstruction as Cn}from"@solana/web3.js";import JP from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as tA,createAssociatedTokenAccountIdempotentInstruction as nA,TOKEN_PROGRAM_ID as Ko}from"@solana/spl-token";import CP from"bn.js";import{PublicKey as eu}from"@solana/web3.js";import tu from"bn.js";function nu(i){return typeof i=="object"&&i!==null&&![de,Ke,eu,$,tu,Xe,ze].some(e=>typeof e=="object"&&i instanceof e)}function ct(i){return typeof i=="string"?zn(i):Array.isArray(i)?i.map(e=>ct(e)):nu(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,ct(t)])):i}var iu=Y("Raydium.farm.util");function Lt({programId:i,poolId:e,owner:t,version:n}){let{publicKey:o}=J([e.toBuffer(),t.toBuffer(),Buffer.from(n===6?"farmer_info_associated_seed":"staker_info_v2_associated_seed","utf-8")],i);return o}function So(i){let e=xo[i];return e||iu.logWithError("invalid version",i),e}var su=Y("Raydium_farm_instruction"),pA={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])};function Co(i){let{version:e,id:t,ledger:n,programId:o,owner:u}=i,r={3:9,5:10}[e];r||su.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(ho.span);ho.encode({instruction:r},a);let c=[B({pubkey:t}),B({pubkey:n}),B({pubkey:u,isWritable:!1}),B({pubkey:ru.programId,isWritable:!1}),B({pubkey:au,isWritable:!1})];return{instruction:new Cn({programId:o,keys:c,data:a}),instructionType:_.FarmV3CreateLedger}}function Ro(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:u,amount:r}=i,[a,c]=[new Ce(e.programId),new Ce(e.id)],d=Lt({programId:a,poolId:c,owner:u,version:6}),l=Buffer.alloc(Rt.span);Rt.encode({instruction:2,amount:j(r)},l);let m=[B({pubkey:Ko,isWritable:!1}),B({pubkey:c}),B({pubkey:new Ce(t.authority),isWritable:!1}),B({pubkey:new Ce(t.lpVault)}),B({pubkey:d}),B({pubkey:u,isWritable:!1,isSigner:!0}),B({pubkey:n})];for(let f=0;f<t.rewardInfos.length;f++)m.push(B({pubkey:new Ce(t.rewardInfos[f].vault)})),m.push(B({pubkey:o[f]}));return new Cn({programId:a,keys:m,data:l})}function Lo(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:u,amount:r,userAuxiliaryLedgers:a}=i,[c,d]=[new Ce(e.programId),new Ce(e.id)],l=Lt({programId:c,poolId:d,owner:u,version:5}),m=Buffer.alloc(Rt.span);Rt.encode({instruction:12,amount:j(r)},m);let f=[B({pubkey:d}),B({pubkey:new Ce(t.authority),isWritable:!1}),B({pubkey:l}),B({pubkey:u,isWritable:!1,isSigner:!0}),B({pubkey:n}),B({pubkey:new Ce(t.lpVault)}),B({pubkey:o[0]}),B({pubkey:new Ce(t.rewardInfos[0].vault)}),B({pubkey:wr,isWritable:!1}),B({pubkey:Ko,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)f.push(B({pubkey:o[p]})),f.push(B({pubkey:new Ce(t.rewardInfos[p].vault)}));if(a)for(let p of a)f.push(B({pubkey:p}));return new Cn({programId:c,keys:f,data:m})}function Oo(i){let{farmInfo:e,farmKeys:t,lpAccount:n,rewardAccounts:o,owner:u,amount:r,userAuxiliaryLedgers:a}=i,[c,d]=[new Ce(e.programId),new Ce(e.id)],l=Lt({programId:c,poolId:d,owner:u,version:3}),m=Buffer.alloc(Rt.span);Rt.encode({instruction:11,amount:j(r)},m);let f=[B({pubkey:d}),B({pubkey:new Ce(t.authority),isWritable:!1}),B({pubkey:l}),B({pubkey:u,isWritable:!1,isSigner:!0}),B({pubkey:n}),B({pubkey:new Ce(t.lpVault)}),B({pubkey:o[0]}),B({pubkey:new Ce(t.rewardInfos[0].vault)}),B({pubkey:wr,isWritable:!1}),B({pubkey:Ko,isWritable:!1})];if(a)for(let p of a)f.push(B({pubkey:p}));return new Cn({programId:c,keys:f,data:m})}import ew from"bn.js";import{PublicKey as Bk}from"@solana/web3.js";import{AccountLayout as Sk,NATIVE_MINT as Kk,TOKEN_2022_PROGRAM_ID as Ck,TOKEN_PROGRAM_ID as Rk,createAssociatedTokenAccountIdempotentInstruction as Lk}from"@solana/spl-token";import Aw from"bn.js";import uu from"bn.js";var rw=new uu(0);import mw from"bn.js";import cu from"bn.js";var et=new cu(1e6);import Ek from"bn.js";import Wk from"decimal.js";import{PublicKey as qw,TransactionInstruction as Uw,Keypair as zw,SystemProgram as Xw}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Hw,TOKEN_2022_PROGRAM_ID as Qw,TOKEN_PROGRAM_ID as Zw}from"@solana/spl-token";var Cw=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Rw=Buffer.from("amm_config","utf8"),Lw=Buffer.from("pool","utf8"),Ow=Buffer.from("pool_lp_mint","utf8"),Nw=Buffer.from("pool_vault","utf8"),Mw=Buffer.from("observation","utf8"),Fw=Buffer.from("permission","utf8"),vw=Buffer.from("support_mint","utf8");var _w=Buffer.from("locked_liquidity","utf8");var ok=Y("Raydium_cpmm"),ik={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 du=R([G(8),L("bump"),ce("disableCreatePool"),pe("index"),s("tradeFeeRate"),s("protocolFeeRate"),s("fundFeeRate"),s("createPoolFee"),A("protocolOwner"),A("fundOwner"),s("creatorFeeRate"),F(s(),15)]),kr=R([G(8),A("configId"),A("poolCreator"),A("vaultA"),A("vaultB"),A("mintLp"),A("mintA"),A("mintB"),A("mintProgramA"),A("mintProgramB"),A("observationId"),L("bump"),L("status"),L("lpDecimals"),L("mintDecimalA"),L("mintDecimalB"),s("lpAmount"),s("protocolFeesMintA"),s("protocolFeesMintB"),s("fundFeesMintA"),s("fundFeesMintB"),s("openTime"),s("epoch"),L("feeOn"),ce("enableCreatorFee"),F(L(),6),s("creatorFeesMintA"),s("creatorFeesMintB"),F(s(),28)]),sk=R([G(8),A("configId"),F(s(),30)]);import{PublicKey as bS,SystemProgram as gS}from"@solana/web3.js";import{createTransferInstruction as AS,TOKEN_PROGRAM_ID as wS,TOKEN_2022_PROGRAM_ID as kS,createAssociatedTokenAccountIdempotentInstruction as TS,createSyncNativeInstruction as IS,createTransferCheckedInstruction as BS}from"@solana/spl-token";import $u from"bn.js";import KS from"decimal.js";import hr from"bn.js";var No=new hr(25),Rn=new hr(1e4);var Ir=new Set(["5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","3uaZBfHPfmpAHW7dsimC1SnyR61X4bJqQZKWmRSCXJxv","GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"]);var Mo=R([L("instruction"),s("amountIn"),s("minAmountOut")]),Fo=R([L("instruction"),s("maxAmountIn"),s("amountOut")]),KT=R([L("instruction"),L("nonce")]),yu=R([L("instruction"),L("nonce"),s("startTime")]),vo=R([s("status"),s("nonce"),s("maxOrder"),s("depth"),s("baseDecimal"),s("quoteDecimal"),s("state"),s("resetFlag"),s("minSize"),s("volMaxCutRatio"),s("amountWaveRatio"),s("baseLotSize"),s("quoteLotSize"),s("minPriceMultiplier"),s("maxPriceMultiplier"),s("systemDecimalValue"),s("minSeparateNumerator"),s("minSeparateDenominator"),s("tradeFeeNumerator"),s("tradeFeeDenominator"),s("pnlNumerator"),s("pnlDenominator"),s("swapFeeNumerator"),s("swapFeeDenominator"),s("baseNeedTakePnl"),s("quoteNeedTakePnl"),s("quoteTotalPnl"),s("baseTotalPnl"),s("poolOpenTime"),s("punishPcAmount"),s("punishCoinAmount"),s("orderbookToInitTime"),E("swapBaseInAmount"),E("swapQuoteOutAmount"),s("swapBase2QuoteFee"),E("swapQuoteInAmount"),E("swapBaseOutAmount"),s("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"),s("lpReserve"),F(s(),3,"padding")]),CT=R([s("accountType"),s("status"),s("nonce"),s("maxOrder"),s("depth"),s("baseDecimal"),s("quoteDecimal"),s("state"),s("resetFlag"),s("minSize"),s("volMaxCutRatio"),s("amountWaveRatio"),s("baseLotSize"),s("quoteLotSize"),s("minPriceMultiplier"),s("maxPriceMultiplier"),s("systemDecimalsValue"),s("abortTradeFactor"),s("priceTickMultiplier"),s("priceTick"),s("minSeparateNumerator"),s("minSeparateDenominator"),s("tradeFeeNumerator"),s("tradeFeeDenominator"),s("pnlNumerator"),s("pnlDenominator"),s("swapFeeNumerator"),s("swapFeeDenominator"),s("baseNeedTakePnl"),s("quoteNeedTakePnl"),s("quoteTotalPnl"),s("baseTotalPnl"),s("poolOpenTime"),s("punishPcAmount"),s("punishCoinAmount"),s("orderbookToInitTime"),E("swapBaseInAmount"),E("swapQuoteOutAmount"),E("swapQuoteInAmount"),E("swapBaseOutAmount"),s("swapQuote2BaseFee"),s("swapBase2QuoteFee"),A("baseVault"),A("quoteVault"),A("baseMint"),A("quoteMint"),A("lpMint"),A("modelDataAccount"),A("openOrders"),A("marketId"),A("marketProgramId"),A("targetOrders"),A("owner"),F(s(),64,"padding")]),_o=R([L("instruction"),s("baseAmountIn"),s("quoteAmountIn"),s("fixedSide"),s("otherAmountMin")]),Vo=R([L("instruction"),s("lpAmount"),s("baseAmountMin"),s("quoteAmountMin")]);var Br=R([s("fee")]);import{PublicKey as Pu}from"@solana/web3.js";import Ln from"decimal.js";import{TOKEN_PROGRAM_ID as Au}from"@solana/spl-token";import{PublicKey as bu}from"@solana/web3.js";var gu=Y("Raydium_liquidity_serum");function xr({programId:i,marketId:e}){let t=[e.toBuffer()],n=0,o;for(;n<100;){try{let u=t.concat(Buffer.from([n]),Buffer.alloc(7));o=bu.createProgramAddressSync(u,i)}catch(u){if(u instanceof TypeError)throw u;n++;continue}return{publicKey:o,nonce:n}}throw gu.logWithError("unable to find a viable program address nonce","params",{programId:i,marketId:e}),new Error("unable to find a viable program address nonce")}function On({programId:i}){let{publicKey:e}=J([Buffer.from("amm_config_account_seed","utf-8")],i);return e}function Ot({name:i,programId:e,marketId:t}){let{publicKey:n}=J([e.toBuffer(),t.toBuffer(),Buffer.from(i,"utf-8")],e);return n}function wu({programId:i,marketId:e}){let{publicKey:t}=J([i.toBuffer(),e.toBuffer(),Buffer.from("open_order_associated_seed","utf-8")],i);return t}function Sr({programId:i}){return J([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],i)}function Do({version:i,marketVersion:e,marketId:t,baseMint:n,quoteMint:o,baseDecimals:u,quoteDecimals:r,programId:a,marketProgramId:c}){let d=Ot({name:"amm_associated_seed",programId:a,marketId:t}),l=Ot({name:"lp_mint_associated_seed",programId:a,marketId:t}),{publicKey:m,nonce:f}=Sr({programId:a}),p=Ot({name:"coin_vault_associated_seed",programId:a,marketId:t}),y=Ot({name:"pc_vault_associated_seed",programId:a,marketId:t}),b=Ot({name:"temp_lp_token_associated_seed",programId:a,marketId:t}),g=wu({programId:a,marketId:t}),P=Ot({name:"target_associated_seed",programId:a,marketId:t}),w=Ot({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:I}=xr({programId:c,marketId:t});return{id:d,baseMint:n,quoteMint:o,lpMint:l,baseDecimals:u,quoteDecimals:r,lpDecimals:u,version:i,programId:a,authority:m,nonce:f,baseVault:p,quoteVault:y,lpVault:b,openOrders:g,targetOrders:P,withdrawQueue:w,marketVersion:e,marketProgramId:c,marketId:t,marketAuthority:I,lookupTableAccount:Pu.default,configId:On({programId:a})}}var Eo={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},Wo=i=>{let e={},t=Au.toBase58();return Object.keys(i).map(n=>{let o=i[n],[u,r]=[o.baseMint.toBase58(),o.quoteMint.toBase58()];e[n]={id:n,version:4,status:o.status.toNumber(),programId:o.programId.toBase58(),mintA:yt({address:u,programId:t,decimals:o.baseDecimal.toNumber()}),mintB:yt({address:r,programId:t,decimals:o.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:o.poolPrice.toNumber(),mintAmountA:new Ln(o.mintAAmount.toString()).div(10**o.baseDecimal.toNumber()).toNumber(),mintAmountB:new Ln(o.mintBAmount.toString()).div(10**o.quoteDecimal.toNumber()).toNumber(),baseReserve:o.baseReserve,quoteReserve:o.quoteReserve,feeRate:new Ln(o.tradeFeeNumerator.toString()).div(o.tradeFeeDenominator.toString()).toNumber(),openTime:o.poolOpenTime.toString(),tvl:0,day:Eo,week:Eo,month:Eo,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:o.marketId.toBase58(),configId:On({programId:o.programId}).toBase58(),lpPrice:0,lpAmount:new Ln(o.lpReserve.toString()).div(10**Math.min(o.baseDecimal.toNumber(),o.quoteDecimal.toNumber())).toNumber(),lpMint:yt({address:o.lpMint.toBase58(),programId:t,decimals:Math.min(o.baseDecimal.toNumber(),o.quoteDecimal.toNumber())}),burnPercent:0,feeOn:"Both",hasDynamicFee:!1,tips:[],launchMigratePool:!1}}),e};import{ASSOCIATED_TOKEN_PROGRAM_ID as ku,TOKEN_PROGRAM_ID as Nt}from"@solana/spl-token";import{PublicKey as ge,SystemProgram as Tu,SYSVAR_RENT_PUBKEY as QT,TransactionInstruction as gt}from"@solana/web3.js";import Nn from"bn.js";var Mn=Y("Raydium_liquidity_instruction");function Kr(i){let{poolInfo:e,poolKeys:t,userKeys:n,baseAmountIn:o,quoteAmountIn:u,fixedSide:r,otherAmountMin:a,modelDataPubKey:c=Bt}=i,d=Buffer.alloc(_o.span);_o.encode({instruction:3,baseAmountIn:j(o),quoteAmountIn:j(u),otherAmountMin:j(a),fixedSide:r==="base"?Q:bt},d);let l=[B({pubkey:Nt,isWritable:!1}),B({pubkey:new ge(e.id)}),B({pubkey:new ge(t.authority),isWritable:!1}),B({pubkey:new ge(t.openOrders),isWritable:!1}),B({pubkey:new ge(t.targetOrders)}),B({pubkey:new ge(e.lpMint.address)}),B({pubkey:new ge(t.vault.A)}),B({pubkey:new ge(t.vault.B)})];return e.pooltype.includes("StablePool")&&l.push(B({pubkey:c})),l.push(B({pubkey:new ge(e.marketId),isWritable:!1}),B({pubkey:n.baseTokenAccount}),B({pubkey:n.quoteTokenAccount}),B({pubkey:n.lpTokenAccount}),B({pubkey:n.owner,isWritable:!1,isSigner:!0}),B({pubkey:new ge(t.marketEventQueue),isWritable:!1})),new gt({programId:new ge(e.programId),keys:l,data:d})}function qo(i){let{poolInfo:e,poolKeys:t,userKeys:n,lpAmount:o,baseAmountMin:u,quoteAmountMin:r,modelDataPubKey:a=Bt}=i,c=ct(t),d=4;if(e.pooltype.includes("StablePool")&&(d=5),d===4||d===5){let l=Buffer.alloc(Vo.span);Vo.encode({instruction:4,lpAmount:j(o),baseAmountMin:j(u),quoteAmountMin:j(r)},l);let m=[B({pubkey:Nt,isWritable:!1}),B({pubkey:c.id}),B({pubkey:c.authority,isWritable:!1}),B({pubkey:c.openOrders}),B({pubkey:c.targetOrders}),B({pubkey:c.mintLp.address}),B({pubkey:c.vault.A}),B({pubkey:c.vault.B})];return d===5?m.push(B({pubkey:a})):(m.push(B({pubkey:c.id})),m.push(B({pubkey:c.id}))),m.push(B({pubkey:c.marketProgramId,isWritable:!1}),B({pubkey:c.marketId}),B({pubkey:c.marketBaseVault}),B({pubkey:c.marketQuoteVault}),B({pubkey:c.marketAuthority,isWritable:!1}),B({pubkey:n.lpTokenAccount}),B({pubkey:n.baseTokenAccount}),B({pubkey:n.quoteTokenAccount}),B({pubkey:n.owner,isWritable:!1,isSigner:!0}),B({pubkey:c.marketEventQueue}),B({pubkey:c.marketBids}),B({pubkey:c.marketAsks})),new gt({programId:c.programId,keys:m,data:l})}return new gt({programId:c.programId,keys:[]})}function Uo({programId:i,ammId:e,ammAuthority:t,ammOpenOrders:n,lpMint:o,coinMint:u,pcMint:r,coinVault:a,pcVault:c,withdrawQueue:d,ammTargetOrders:l,poolTempLp:m,marketProgramId:f,marketId:p,userWallet:y,userCoinVault:b,userPcVault:g,userLpVault:P,nonce:w,openTime:I,coinAmount:C,pcAmount:k,ammConfigId:x,feeDestinationId:S}){let O=R([L("instruction"),L("nonce"),s("openTime"),s("pcAmount"),s("coinAmount")]),M=[{pubkey:Nt,isSigner:!1,isWritable:!1},{pubkey:ku,isSigner:!1,isWritable:!1},{pubkey:Tu.programId,isSigner:!1,isWritable:!1},{pubkey:_e,isSigner:!1,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:x,isSigner:!1,isWritable:!1},{pubkey:S,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!0,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0}],K=Buffer.alloc(O.span);return O.encode({instruction:1,nonce:w,openTime:I,coinAmount:C,pcAmount:k},K),{instruction:new gt({keys:M,programId:i,data:K}),instructionType:_.AmmV4CreatePool}}function hu({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n,modelDataPubKey:o=Bt},u){let r=ct(i),a=Buffer.alloc(Mo.span);Mo.encode({instruction:9,amountIn:j(t),minAmountOut:j(n)},a);let c=[B({pubkey:Nt,isWritable:!1}),B({pubkey:r.id}),B({pubkey:r.authority,isWritable:!1}),B({pubkey:r.openOrders})];return u===4&&c.push(B({pubkey:r.targetOrders})),c.push(B({pubkey:r.vault.A}),B({pubkey:r.vault.B})),u===5&&c.push(B({pubkey:o})),c.push(B({pubkey:r.marketProgramId,isWritable:!1}),B({pubkey:r.marketId}),B({pubkey:r.marketBids}),B({pubkey:r.marketAsks}),B({pubkey:r.marketEventQueue}),B({pubkey:r.marketBaseVault}),B({pubkey:r.marketQuoteVault}),B({pubkey:r.marketAuthority,isWritable:!1}),B({pubkey:e.tokenAccountIn}),B({pubkey:e.tokenAccountOut}),B({pubkey:e.owner,isWritable:!1,isSigner:!0})),new gt({programId:r.programId,keys:c,data:a})}function Iu({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n,modelDataPubKey:o=Bt},u){let r=ct(i),a=Buffer.alloc(Fo.span);Fo.encode({instruction:11,maxAmountIn:j(t),amountOut:j(n)},a);let c=[B({pubkey:Nt,isWritable:!1}),B({pubkey:r.id}),B({pubkey:r.authority,isWritable:!1}),B({pubkey:r.openOrders}),B({pubkey:r.targetOrders}),B({pubkey:r.vault.A}),B({pubkey:r.vault.B})];return u===5&&c.push(B({pubkey:o})),c.push(B({pubkey:r.marketProgramId,isWritable:!1}),B({pubkey:r.marketId}),B({pubkey:r.marketBids}),B({pubkey:r.marketAsks}),B({pubkey:r.marketEventQueue}),B({pubkey:r.marketBaseVault}),B({pubkey:r.marketQuoteVault}),B({pubkey:r.marketAuthority,isWritable:!1}),B({pubkey:e.tokenAccountIn}),B({pubkey:e.tokenAccountOut}),B({pubkey:e.owner,isWritable:!1,isSigner:!0})),new gt({programId:r.programId,keys:c,data:a})}function Bu(i,e,t,n,o,u,r,a,c,d){let l=R([L("instructionId"),s("amountIn"),s("minAmountOut")]),m=Buffer.alloc(l.span);l.encode({instructionId:16,amountIn:c,minAmountOut:d},m);let f=[{pubkey:Nt,isWritable:!1,isSigner:!1},{pubkey:e,isWritable:!0,isSigner:!1},{pubkey:t,isWritable:!1,isSigner:!1},{pubkey:n,isWritable:!0,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:u,isWritable:!0,isSigner:!1},{pubkey:r,isWritable:!0,isSigner:!1},{pubkey:a,isWritable:!1,isSigner:!0}];return new gt({programId:i,keys:f,data:m})}function xu(i,e,t,n,o,u,r,a,c,d){let l=R([L("instructionId"),s("maxAmountIn"),s("amountOut")]),m=Buffer.alloc(l.span);l.encode({instructionId:17,maxAmountIn:c,amountOut:d},m);let f=[{pubkey:Nt,isWritable:!1,isSigner:!1},{pubkey:e,isWritable:!0,isSigner:!1},{pubkey:t,isWritable:!1,isSigner:!1},{pubkey:n,isWritable:!0,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:u,isWritable:!0,isSigner:!1},{pubkey:r,isWritable:!0,isSigner:!1},{pubkey:a,isWritable:!1,isSigner:!0}];return new gt({programId:i,keys:f,data:m})}function Go(i){let{poolKeys:e,version:t,userKeys:n,amountIn:o,amountOut:u,fixedSide:r}=i;if(t===4){if(r==="in")return Bu(new ge(e.programId),new ge(e.id),new ge(e.authority),new ge(e.vault.A),new ge(e.vault.B),n.tokenAccountIn,n.tokenAccountOut,n.owner,new Nn(o.toString()),new Nn(u.toString()));if(r==="out")return xu(new ge(e.programId),new ge(e.id),new ge(e.authority),new ge(e.vault.A),new ge(e.vault.B),n.tokenAccountIn,n.tokenAccountOut,n.owner,new Nn(o.toString()),new Nn(u.toString()));Mn.logWithError("invalid params","params",i)}throw Mn.logWithError("invalid version, only support pool v4","poolKeys.version",t),new Error("invalid version")}function zo(i){let{poolKeys:e,version:t,userKeys:n,amountIn:o,amountOut:u,fixedSide:r}=i;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(r==="in")return hu(q(v({},a),{amountIn:o,minAmountOut:u}),t);if(r==="out")return Iu(q(v({},a),{maxAmountIn:o,amountOut:u}),t);Mn.logWithError("invalid params","params",i)}throw Mn.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}var Ft=5e4,Su=R([s("x"),s("y"),s("price")]),Ku=R([s("accountType"),s("status"),s("multiplier"),s("validDataCount"),F(Su,Ft,"DataElement")]);function Cu(i,e){return[0,Ft-2]}function Ru(i){return[0,Ft-2]}function Lu(i){return[0,Ft-2]}function Ou(i,e,t){let[n,o]=Cu(e,t),u=n,r=o,a=0,c=e*i.multiplier/t;for(;u<=r;){if(a=Math.floor((r+u)/2),a===0||a>=Ft-2)return[a,a,!1];let d=i.DataElement[a].x*i.multiplier/i.DataElement[a].y,l=i.DataElement[a-1].x*i.multiplier/i.DataElement[a-1].y,m=i.DataElement[a+1].x*i.multiplier/i.DataElement[a+1].y;if(c===d)return[a,a,!0];if(c===l)return[a-1,a-1,!0];if(c===m)return[a+1,a+1,!0];if(c<l)r=a-1;else{if(c>l&&c<d)return[a-1,a,!0];if(c>d&&c<m)return[a,a+1,!0];u=a+1}}return[a,a,!1]}function Xo(i,e,t){let[n,o,u]=Ou(i,e,t);if(!u)return 0;if(n===o){let r=i.DataElement[n].x;return e*i.multiplier/r}else{let r=i.DataElement[n].x,a=i.DataElement[n].y,c=i.DataElement[o].x,d=i.DataElement[o].y,l=t*(c*a-r*d),m=r*l,f=(c-r)*(e*a-r*t)*d,p=m+f;return e*i.multiplier*l/p}}function Mt(i,e,t){return e*i.multiplier/t}function Cr(i,e,t){return e*t/i.multiplier}function Nu(i,e){let[t,n]=Ru(e),o=t,u=n,r=0,a=e;for(;o<u;){if(r=Math.floor((u+o)/2),r<=0||r>Ft-2)return[r,r,!1];let c=i.DataElement[r].x,d=i.DataElement[r-1].x,l=i.DataElement[r+1].x;if(a===c)return[r,r,!0];if(a===d)return[r-1,r-1,!0];if(a===l)return[r+1,r+1,!0];if(a<d)u=r-1;else{if(a>d&&a<c)return[r-1,r,!0];if(a>c&&a<l)return[r,r+1,!0];o=r+1}}return[r,r,!1]}function Mu(i,e){let[t,n]=Lu(e),o=t,u=n,r=0,a=e;for(;o<=u;){if(r=Math.floor((u+o)/2),r<=0||r>=Ft-2)return[r,r,!1];let c=i.DataElement[r].y,d=i.DataElement[r-1].y,l=i.DataElement[r+1].y;if(a===c)return[r,r,!0];if(a===d)return[r-1,r-1,!0];if(a===l)return[r+1,r+1,!0];if(a<l)o=r+1;else{if(a<d&&a>c)return[r-1,r,!0];if(a<c&&a>l)return[r,r+1,!0];u=r-1}}return[r,r,!1]}function Rr(i,e,t,n){let o=n?e+t:e-t,[u,r,a]=Nu(i,o);if(!a)return[0,0,!1,a];if(u===r)return[i.DataElement[r].price,i.DataElement[r].y,!1,a];{let c=i.DataElement[u].x,d=i.DataElement[r].x,l=i.DataElement[u].price,m=i.DataElement[r].price,f=i.DataElement[u].y,p=i.DataElement[r].y;if(e>=c&&e<=d)return n?[m,p,!0,a]:[l,f,!0,a];{let y,b;return n?(y=l+(m-l)*(e-c)/(d-c),b=f-(o-c)*i.multiplier/m):(y=l+(m-l)*(e-c)/(d-c),b=p+(d-o)*i.multiplier/l),[y,b,!1,a]}}}function Fu(i,e,t,n){let o=n?e-t:e+t,[u,r,a]=Mu(i,o);if(!a)return[0,0,!1,a];if(u===r)return[i.DataElement[r].price,i.DataElement[r].x,!1,a];{let c=i.DataElement[u].x,d=i.DataElement[r].x,l=i.DataElement[u].price,m=i.DataElement[r].price,f=i.DataElement[u].y,p=i.DataElement[r].y;if(e>=p&&e<=f)return n?[m,d,!0,a]:[l,c,!0,a];{let y,b;return n?(y=l+(m-l)*(f-e)/(f-p),b=c+m*(f-o)/i.multiplier):(y=l+(m-l)*(f-e)/(f-p),b=d-l*(o-p)/i.multiplier),[y,b,!1,a]}}}function vu(i,e){let t=Rr(i,e,0,!1);return t[3]?t[0]:0}function Lr(i,e,t,n){let o=Xo(i,e,t),u=Mt(i,e,o),r=Mt(i,t,o),a=Mt(i,n,o),c=!0,[d,l,m,f]=Rr(i,u,a,c);if(!f)return 0;if(m)return n*i.multiplier/d;{let p=r-l;return Cr(i,p,o)}}function Or(i,e,t,n){let o=Xo(i,e,t),u=Mt(i,e,o),r=Mt(i,t,o),a=Mt(i,n,o),c=!1,[d,l,m,f]=Fu(i,r,a,c);if(!f)return 0;if(m)return n*d/i.multiplier;{let p=u-l;return Cr(i,p,o)}}function _u(i){let e=Ku.decode(i);return{accountType:e.accountType.toNumber(),status:e.status.toNumber(),multiplier:e.multiplier.toNumber(),validDataCount:e.validDataCount.toNumber(),DataElement:e.DataElement.map(t=>({x:t.x.toNumber(),y:t.y.toNumber(),price:t.price.toNumber()}))}}function Nr(i,e,t,n){let o=vu(i,Mt(i,e,Xo(i,e,t)))/i.multiplier;return n?o:1/o}var Fn=class{constructor({connection:e,modelDataPubKey:t=Bt}){this._layoutData={accountType:0,status:0,multiplier:0,validDataCount:0,DataElement:[]};this.connection=e,this.modelDataPubKey=t}get stableModelData(){return this._layoutData}async initStableModelLayout(){if(this._layoutData.validDataCount===0&&this.connection){let e=await this.connection.getAccountInfo(this.modelDataPubKey);e&&(this._layoutData=_u(e==null?void 0:e.data))}}};import{ASSOCIATED_TOKEN_PROGRAM_ID as vh,TOKEN_2022_PROGRAM_ID as _h,TOKEN_PROGRAM_ID as Vh}from"@solana/spl-token";import{SystemProgram as qh,TransactionInstruction as Uh}from"@solana/web3.js";import qu from"bn.js";var Vu=R([s(),s("epoch"),L("curveType"),pe("index"),s("migrateFee"),s("tradeFeeRate"),s("maxShareFeeRate"),s("minSupplyA"),s("maxLockRate"),s("minSellRateA"),s("minMigrateRateA"),s("minFundRaisingB"),A("mintB"),A("protocolFeeOwner"),A("migrateFeeOwner"),A("migrateToAmmWallet"),A("migrateToCpmmWallet"),F(s(),16)]),Eu=R([s("totalLockedAmount"),s("cliffPeriod"),s("unlockPeriod"),s("startTime"),s("totalAllocatedShare")]),Du=R([s(),s("epoch"),L("bump"),L("status"),L("mintDecimalsA"),L("mintDecimalsB"),L("migrateType"),s("supply"),s("totalSellA"),s("virtualA"),s("virtualB"),s("realA"),s("realB"),s("totalFundRaisingB"),s("protocolFee"),s("platformFee"),s("migrateFee"),Eu.replicate("vestingSchedule"),A("configId"),A("platformId"),A("mintA"),A("mintB"),A("vaultA"),A("vaultB"),A("creator"),L("mintProgramFlag"),L("cpmmCreatorFeeOn"),s("platformVestingShare"),F(L(),54)]),gh=R([s(),s("epoch"),A("poolId"),A("beneficiary"),s("claimedAmount"),s("tokenShareAmount"),F(s(),8)]),Mr=R([L("migrateType"),L("migrateCpmmFeeOn"),s("supply"),s("totalSellA"),s("totalFundRaisingB"),s("totalLockedAmount"),s("cliffPeriod"),s("unlockPeriod")]),Wu=R([s("epoch"),L("index"),A("configId"),Mr.replicate("bondingCurveParam"),F(s(),50)]),Fr=R([s(),s("epoch"),A("platformClaimFeeWallet"),A("platformLockNftWallet"),s("platformScale"),s("creatorScale"),s("burnScale"),s("feeRate"),F(L(),64,"name"),F(L(),256,"web"),F(L(),256,"img"),A("cpConfigId"),s("creatorFeeRate"),A("transferFeeExtensionAuth"),A("platformVestingWallet"),s("platformVestingScale"),A("platformCpCreator"),L("restrictGlobalConfig"),F(L(),107),Ni(Wu,"platformCurve")]);var Th=Buffer.from("vault_auth_seed","utf8"),hh=Buffer.from("global_config","utf8"),Ih=Buffer.from("pool_vesting","utf8"),Bh=Buffer.from("platform_config","utf8"),xh=Buffer.from("platform_fee_vault_auth_seed","utf8"),Sh=Buffer.from("creator_fee_vault_auth_seed","utf8"),Kh=Buffer.from("platform_global_access","utf8"),Ch=Buffer.from("platform_allow_config","utf8");var Yh={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 Hh=new qu("18446744073709551615");import{TOKEN_2022_PROGRAM_ID as $h,TOKEN_PROGRAM_ID as Jh}from"@solana/spl-token";import oI from"bn.js";import rI from"decimal.js";import FI from"bn.js";import _I from"decimal.js";import mI from"bn.js";import pI from"decimal.js";import hI from"bn.js";import BI from"decimal.js";import Vr from"bn.js";import Yo from"decimal.js";var vn=class{static _multipler(e){return new Yo(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new Yo(e.toString()).div(this._Q64).mul(this._multipler(t)).div(this._multipler(n))}static getPriceX64({price:e,decimalA:t,decimalB:n}){let o=e.mul(this._multipler(n)).div(this._multipler(t));return new Vr(o.mul(this._Q64).toFixed(0))}};vn._Q64=new Yo(new Vr(1).shln(64).toString());import{NATIVE_MINT as YB,TOKEN_2022_PROGRAM_ID as HB,TOKEN_PROGRAM_ID as QB,createAssociatedTokenAccountIdempotentInstruction as jB,createSyncNativeInstruction as $B,getTransferFeeConfig as JB,unpackMint as ex}from"@solana/spl-token";import ke from"bn.js";import{PublicKey as Qu,SystemProgram as ox}from"@solana/web3.js";import lx from"decimal.js";var mx={initPriceX64:new ke("515752397214619"),supply:new ke(1e15),totalSellA:new ke(7931e11),totalFundRaisingB:new ke(85e9),totalFundRaisingBUSD:new ke(125e8),totalLockedAmount:new ke("0"),cliffPeriod:new ke("0"),unlockPeriod:new ke("0"),decimals:6,virtualA:new ke("1073471847374405"),virtualB:new ke("30050573465"),realA:new ke(0),realB:new ke(0),protocolFee:new ke(0),platformId:new Qu("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new ke(0),cliffPeriod:new ke(0),unlockPeriod:new ke(0),startTime:new ke(0),totalAllocatedShare:new ke(0)}},dx=new ke(1e4);var Zu={[Ei.toBase58()]:3};var ju=R([G(5),G(8),A("ownAddress"),s("vaultSignerNonce"),A("baseMint"),A("quoteMint"),A("baseVault"),s("baseDepositsTotal"),s("baseFeesAccrued"),A("quoteVault"),s("quoteDepositsTotal"),s("quoteFeesAccrued"),s("quoteDustThreshold"),A("requestQueue"),A("eventQueue"),A("bids"),A("asks"),s("baseLotSize"),s("quoteLotSize"),s("feeRateBps"),s("referrerRebatesAccrued"),G(7)]);import{PublicKey as Fx}from"@solana/web3.js";var Dx=Y("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as Qx,TOKEN_2022_PROGRAM_ID as Zx,TOKEN_PROGRAM_ID as jx}from"@solana/spl-token";import{PublicKey as Jx,SystemProgram as eS,TransactionInstruction as tS}from"@solana/web3.js";import oS from"bn.js";var iK=new $u(0);import{PublicKey as Ju,Transaction as Ho,TransactionInstruction as ec}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as tc}from"@solana/spl-token";import Er from"bn.js";var Re=class extends Le{static getPdaPoolId(e,t){return J([Re.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,o){return J([Re.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Er(o).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:o,chainTime:u}){if(n.length===0)return[];let r=n.map(l=>Re.getPdaPoolId(t,l).publicKey),a=[];for(let l=0;l<Re.VERSION_PROJECT.length;l++)a.push(...r.map(m=>Re.getPdaOwnerId(t,m,o,l).publicKey));let c=await Ye(e,[...r,...a]),d=[];for(let l=0;l<c.length;l++){let m=Math.floor(l/n.length),f=l%n.length,p=r[f],y=a[l],b=c[f],g=c[n.length+l];if(!(b&&g)||b.data.length!==Re.POOL_LAYOUT.span||g.data.length!==Re.OWNER_LAYOUT.span)continue;let P=Re.POOL_LAYOUT.decode(b.data),w=Re.OWNER_LAYOUT.decode(g.data),I=P.openTime.toNumber(),C=P.endTime.toNumber(),k=w.tokenInfo.map(O=>O.debtAmount.gt(new Er(0))).filter(O=>!O).length!==3,x=u>I&&u<C&&P.status===1,S=k&&x;d.push({programId:t,poolId:p,ammId:P.ammId,ownerAccountId:y,snapshotLpAmount:w.lpAmount,project:Re.VERSION_PROJECT[m],openTime:I,endTime:C,canClaim:S,canClaimErrorType:k?x?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:P.tokenInfo.map((O,M)=>({mintAddress:O.mintAddress,mintVault:O.mintVault,mintDecimals:O.mintDecimals,perLpLoss:O.perLpLoss,debtAmount:w.tokenInfo[M].debtAmount.add(w.tokenInfo[M].claimedAmount)}))})}return d}async makeClaimTransaction({poolInfo:e,ownerInfo:t,feePayer:n}){t.wallet||this.scope.checkOwner();let o=this.createTxBuilder(n),u=t.wallet||this.scope.ownerPubKey,r=[];for(let d of e.tokenInfo){let{account:l,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({mint:d.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:d.mintAddress.equals(de.WSOL.mint),createInfo:{payer:u,amount:0},skipCloseAccount:!d.mintAddress.equals(de.WSOL.mint),associatedOnly:d.mintAddress.equals(de.WSOL.mint)?!1:t.associatedOnly});m&&o.addInstruction(m),r.push(l)}o.addInstruction({instructions:[Re.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:u,ownerPda:e.ownerAccountId,claimAddress:r}})]});let{transaction:a,signers:c}=o.build();return[{transaction:a,signer:c}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:n}){let o=this.createTxBuilder(n),u=t.wallet||this.scope.ownerPubKey,r={};for(let l of e){let m=[];for(let f of l.tokenInfo){let{account:p,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({mint:f.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:f.mintAddress.equals(de.WSOL.mint),createInfo:{payer:u,amount:0},skipCloseAccount:!f.mintAddress.equals(de.WSOL.mint),associatedOnly:f.mintAddress.equals(de.WSOL.mint)?!1:t.associatedOnly});y&&o.addInstruction(y),p&&(r[f.mintAddress.toString()]=p,m.push(p))}o.addInstruction({instructions:[Re.makeClaimInstruction({programId:l.programId,poolInfo:l,ownerInfo:{wallet:u,ownerPda:l.ownerAccountId,claimAddress:m}})]})}let{transaction:a,signers:c}=o.build(),d=o.allInstructions;return eo(d,[u,...c.map(l=>l.publicKey)])?[{transaction:a,signer:c}]:[{transaction:new Ho().add(...d.slice(0,o.AllTxData.instructions.length-1)),signer:c},{transaction:new Ho().add(...d.slice(o.AllTxData.instructions.length-1)),signer:[]},{transaction:new Ho().add(...o.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let o=R([]),u=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:c})=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:tc,isSigner:!1,isWritable:!1}],r=Buffer.alloc(o.span);o.encode({},r);let a=Buffer.from([10,66,208,184,161,6,191,98,...r]);return new ec({keys:u,programId:e,data:a})}},Qe=Re;Qe.CLAIMED_NUM=3,Qe.POOL_LAYOUT=R([G(8),L("bump"),L("status"),s("openTime"),s("endTime"),A("ammId"),F(R([L("mintDecimals"),A("mintAddress"),A("mintVault"),s("perLpLoss"),s("totalClaimedAmount")]),Re.CLAIMED_NUM,"tokenInfo"),F(s(),10,"padding")]),Qe.OWNER_LAYOUT=R([G(8),L("bump"),L("version"),A("poolId"),A("owner"),s("lpAmount"),F(R([A("mintAddress"),s("debtAmount"),s("claimedAmount")]),Re.CLAIMED_NUM,"tokenInfo"),F(s(),4,"padding")]),Qe.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Ju(e)),Qe.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},Qe.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{TOKEN_PROGRAM_ID as OK}from"@solana/spl-token";import{PublicKey as MK}from"@solana/web3.js";import vK from"bn.js";import{SystemProgram as vt,SYSVAR_RENT_PUBKEY as oc,Transaction as Dr,TransactionInstruction as ic}from"@solana/web3.js";import{createInitializeAccountInstruction as Wr,TOKEN_PROGRAM_ID as qr}from"@solana/spl-token";function nc(i="accountFlags"){let e=new Tn(i);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var Qo=R([G(5),nc("accountFlags"),A("ownAddress"),s("vaultSignerNonce"),A("baseMint"),A("quoteMint"),A("baseVault"),s("baseDepositsTotal"),s("baseFeesAccrued"),A("quoteVault"),s("quoteDepositsTotal"),s("quoteFeesAccrued"),s("quoteDustThreshold"),A("requestQueue"),A("eventQueue"),A("bids"),A("asks"),s("baseLotSize"),s("quoteLotSize"),s("feeRateBps"),s("referrerRebatesAccrued"),G(7)]);function rc({programId:i,marketInfo:e}){let t=R([L("version"),ae("instruction"),s("baseLotSize"),s("quoteLotSize"),pe("feeRateBps"),s("vaultSignerNonce"),s("quoteDustThreshold")]),n=[{pubkey:e.id,isSigner:!1,isWritable:!0},{pubkey:e.requestQueue,isSigner:!1,isWritable:!0},{pubkey:e.eventQueue,isSigner:!1,isWritable:!0},{pubkey:e.bids,isSigner:!1,isWritable:!0},{pubkey:e.asks,isSigner:!1,isWritable:!0},{pubkey:e.baseVault,isSigner:!1,isWritable:!0},{pubkey:e.quoteVault,isSigner:!1,isWritable:!0},{pubkey:e.baseMint,isSigner:!1,isWritable:!1},{pubkey:e.quoteMint,isSigner:!1,isWritable:!1},{pubkey:e.authority?e.quoteMint:oc,isSigner:!1,isWritable:!1}].concat(e.authority?{pubkey:e.authority,isSigner:!1,isWritable:!1}:[]).concat(e.authority&&e.pruneAuthority?{pubkey:e.pruneAuthority,isSigner:!1,isWritable:!1}:[]),o=Buffer.alloc(t.span);return t.encode({version:0,instruction:0,baseLotSize:e.baseLotSize,quoteLotSize:e.quoteLotSize,feeRateBps:e.feeRateBps,vaultSignerNonce:e.vaultSignerNonce,quoteDustThreshold:e.quoteDustThreshold},o),new ic({keys:n,programId:i,data:o})}async function Zo({connection:i,wallet:e,marketInfo:t}){var r,a,c,d,l,m,f,p;let n=new Dr,o=await i.getMinimumBalanceForRentExemption(165);n.add(vt.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.baseVault.seed,newAccountPubkey:t.baseVault.publicKey,lamports:o,space:165,programId:qr}),vt.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:o,space:165,programId:qr}),Wr(t.baseVault.publicKey,t.baseMint,t.vaultOwner),Wr(t.quoteVault.publicKey,t.quoteMint,t.vaultOwner),vt.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.id.seed,newAccountPubkey:t.id.publicKey,lamports:await i.getMinimumBalanceForRentExemption(Qo.span),space:Qo.span,programId:t.programId}));let u=new Dr;return u.add(vt.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.requestQueue.seed,newAccountPubkey:t.requestQueue.publicKey,lamports:t.lowestFeeMarket?6208320:await i.getMinimumBalanceForRentExemption((r=t.requestQueueSpace)!=null?r:5120+12),space:t.lowestFeeMarket?764:(a=t.requestQueueSpace)!=null?a:5120+12,programId:t.programId}),vt.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.eventQueue.seed,newAccountPubkey:t.eventQueue.publicKey,lamports:t.lowestFeeMarket?79594560:await i.getMinimumBalanceForRentExemption((c=t.eventQueueSpace)!=null?c:262144+12),space:t.lowestFeeMarket?11308:(d=t.eventQueueSpace)!=null?d:262144+12,programId:t.programId}),vt.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.bids.seed,newAccountPubkey:t.bids.publicKey,lamports:t.lowestFeeMarket?101977920:await i.getMinimumBalanceForRentExemption((l=t.orderbookQueueSpace)!=null?l:65536+12),space:t.lowestFeeMarket?14524:(m=t.orderbookQueueSpace)!=null?m:65536+12,programId:t.programId}),vt.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.asks.seed,newAccountPubkey:t.asks.publicKey,lamports:t.lowestFeeMarket?101977920:await i.getMinimumBalanceForRentExemption((f=t.orderbookQueueSpace)!=null?f:65536+12),space:t.lowestFeeMarket?14524:(p=t.orderbookQueueSpace)!=null?p:65536+12,programId:t.programId}),rc({programId:t.programId,marketInfo:{id:t.id.publicKey,requestQueue:t.requestQueue.publicKey,eventQueue:t.eventQueue.publicKey,bids:t.bids.publicKey,asks:t.asks.publicKey,baseVault:t.baseVault.publicKey,quoteVault:t.quoteVault.publicKey,baseMint:t.baseMint,quoteMint:t.quoteMint,baseLotSize:t.baseLotSize,quoteLotSize:t.quoteLotSize,feeRateBps:t.feeRateBps,vaultSignerNonce:t.vaultSignerNonce,quoteDustThreshold:t.quoteDustThreshold}})),[{transaction:n,signer:[],instructionTypes:[_.CreateAccount,_.CreateAccount,_.InitAccount,_.InitAccount]},{transaction:u,signer:[],instructionTypes:[_.CreateAccount,_.CreateAccount,_.CreateAccount,_.CreateAccount,_.CreateAccount,_.InitMarket]}]}import{PublicKey as QK}from"@solana/web3.js";import{getTransferFeeConfig as jK,MintLayout as $K,TOKEN_2022_PROGRAM_ID as JK,TOKEN_PROGRAM_ID as eC,unpackMint as tC}from"@solana/spl-token";var FR=new _t(2),vR=new _t(3),_R=new _t(5),Un=new _t(10),VR=new _t(100),ER=new _t(1e3),DR=new _t(1e4);function Qn(i){return Un.pow(j(i))}function Vn(i,e){let t=i.divmod(e);return t.mod.isZero()?t.div:i.isNeg()===e.isNeg()?t.div.iaddn(1):t.div}function jo(i,e=1,t=[]){let n=[...i];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import Ur from"bn.js";function Gr(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new Ur(0))?t.add(new Ur(1)):t}import{MINT_SIZE as gL,TOKEN_PROGRAM_ID as PL,getTransferFeeConfig as AL,unpackMint as wL}from"@solana/spl-token";var $o=Y("Raydium_accountInfo_util");async function Ye(i,e,t){let{batchRequest:n,commitment:o="confirmed",chunkCount:u=100}=v({batchRequest:!1},t),r=jo(e,u),a=new Array(r.length).fill([]);if(n){let c=r.map(m=>{let f=i._buildArgs([m.map(p=>p.toBase58())],o,"base64");return{methodName:"getMultipleAccounts",args:f}}),d=jo(c,10);a=(await(await Promise.all(d.map(async m=>await i._rpcBatchRequest(m)))).flat()).map(m=>(m.error&&$o.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${m.error.message}`),m.result.value.map(f=>{if(f){let{data:p,executable:y,lamports:b,owner:g,rentEpoch:P}=f;return p.length!==2&&p[1]!=="base64"&&$o.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:y,lamports:b,owner:new sc(g),rentEpoch:P}}return null})))}else try{a=await Promise.all(r.map(c=>i.getMultipleAccountsInfo(c,o)))}catch(c){c instanceof Error&&$o.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function st(i,e,t){let n=await Ye(i,e.map(o=>o.pubkey),t);return e.map((o,u)=>q(v({},o),{accountInfo:n[u]}))}import ie from"bn.js";import ne from"decimal.js";var _n=class extends Le{constructor(t){super(t);this.stableLayout=new Fn({connection:this.scope.connection,modelDataPubKey:this.scope.cluster==="mainnet"?void 0:ot.MODEL_DATA_PUBKEY})}async initLayout(){await this.stableLayout.initStableModelLayout()}async load(){this.checkDisabled()}computePairAmount({poolInfo:t,amount:n,slippage:o,baseIn:u}){let r=new ie(new ne(n).mul(10**t[u?"mintA":"mintB"].decimals).toFixed(0)),a=fo(t[u?"mintB":"mintA"]),[c,d]=[new ie(new ne(t.mintAmountA).mul(10**t.mintA.decimals).toString()),new ie(new ne(t.mintAmountB).mul(10**t.mintB.decimals).toString())],l=new ie(new ne(t.lpAmount).mul(10**t.lpMint.decimals).toFixed(0,ne.ROUND_DOWN));this.logDebug("baseReserve:",c.toString(),"quoteReserve:",d.toString()),this.logDebug("tokenIn:",u?t.mintA.symbol:t.mintB.symbol,"amountIn:",r.toString(),"anotherToken:",u?t.mintB.symbol:t.mintA.symbol,"slippage:",`${o.toSignificant()}%`,"baseReserve",c.toString(),"quoteReserve",d.toString());let m=u?"base":"quote";this.logDebug("input side:",m);let f=Q;r.isZero()||(f=m==="base"?Vn(r.mul(d),c):Vn(r.mul(c),d)),this.logDebug("amountRaw:",f.toString(),"lpAmount:",l.toString());let p=Vn(r.mul(l),m==="base"?c:d);this.logDebug("liquidity:",p.toString());let y=new ze(new ie(1)).add(o),b=new ze(new ie(1)).sub(o),g=y.mul(f).quotient,P=b.mul(f).quotient,w=new Ke(a,f),I=new Ke(a,g),C=new Ke(a,P);return this.logDebug("anotherAmount:",w.toFixed(),"maxAnotherAmount:",I.toFixed()),{anotherAmount:w,maxAnotherAmount:I,minAnotherAmount:C,liquidity:p}}async getAmmPoolKeys(t){return(await this.scope.api.fetchPoolKeysById({idList:[t]}))[0]}async addLiquidity(t){let{poolInfo:n,poolKeys:o,amountInA:u,amountInB:r,otherAmountMin:a,fixedSide:c,config:d,txVersion:l,computeBudgetConfig:m,txTipConfig:f,feePayer:p}=t;this.scope.availability.addStandardPosition===!1&&this.logAndCreateError("add liquidity feature disabled in your region"),this.logDebug("amountInA:",u,"amountInB:",r),(u.isZero()||r.isZero())&&this.logAndCreateError("amounts must greater than zero","amountInA & amountInB",{amountInA:u.toFixed(),amountInB:r.toFixed()});let{account:y}=this.scope,{bypassAssociatedCheck:b,checkCreateATAOwner:g}=v({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},d),[P,w]=[u.token,r.token],I=await y.getCreatedTokenAccount({mint:P.mint,associatedOnly:!1}),C=await y.getCreatedTokenAccount({mint:w.mint,associatedOnly:!1});!I&&!C&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let k=await y.getCreatedTokenAccount({mint:new me(n.lpMint.address)}),x=[P,w],S=[I,C],O=[u.raw,r.raw],M=u.token.mint.toBase58()===n.mintA.address?"base":"quote",K="base";["quote","base"].includes(M)||this.logAndCreateError("invalid fixedSide","fixedSide",c),M==="quote"?(x.reverse(),S.reverse(),O.reverse(),K=c==="a"?"quote":"base"):M==="base"&&(K=c==="a"?"base":"quote");let[U,W]=x,[V,X]=S,[z,oe]=O,te=o!=null?o:await this.getAmmPoolKeys(n.id),Pe=this.createTxBuilder(p),nt=await y.handleTokenAccount({side:"in",amount:z,mint:U.mint,tokenAccount:V,bypassAssociatedCheck:b,checkCreateATAOwner:g}),{tokenAccount:Fe}=nt,Ue=Se(nt,["tokenAccount"]);Pe.addInstruction(Ue);let De=await y.handleTokenAccount({side:"in",amount:oe,mint:W.mint,tokenAccount:X,bypassAssociatedCheck:b,checkCreateATAOwner:g}),{tokenAccount:Ze}=De,ve=Se(De,["tokenAccount"]);Pe.addInstruction(ve);let Oe=await y.handleTokenAccount({side:"out",amount:0,mint:new me(n.lpMint.address),tokenAccount:k,bypassAssociatedCheck:b,checkCreateATAOwner:g}),{tokenAccount:Te}=Oe,je=Se(Oe,["tokenAccount"]);return Pe.addInstruction(je),Pe.addInstruction({instructions:[Kr({poolInfo:n,poolKeys:te,userKeys:{baseTokenAccount:Fe,quoteTokenAccount:Ze,lpTokenAccount:Te,owner:this.scope.ownerPubKey},baseAmountIn:z,quoteAmountIn:oe,otherAmountMin:a.raw,fixedSide:K})],instructionTypes:[n.pooltype.includes("StablePool")?_.AmmV5AddLiquidity:_.AmmV4AddLiquidity],lookupTableAddress:te.lookupTableAccount?[te.lookupTableAccount]:[]}),Pe.addCustomComputeBudget(m),Pe.addTipInstruction(f),l===0?await Pe.buildV0():Pe.build()}async removeLiquidity(t){this.scope.availability.removeStandardPosition===!1&&this.logAndCreateError("remove liquidity feature disabled in your region");let{poolInfo:n,poolKeys:o,lpAmount:u,baseAmountMin:r,quoteAmountMin:a,config:c,txVersion:d,computeBudgetConfig:l,txTipConfig:m,feePayer:f}=t,p=o!=null?o:await this.getAmmPoolKeys(n.id),[y,b,g]=[new me(n.mintA.address),new me(n.mintB.address),new me(n.lpMint.address)];this.logDebug("lpAmount:",u),this.logDebug("baseAmountMin:",r),this.logDebug("quoteAmountMin:",a),u.isZero()&&this.logAndCreateError("amount must greater than zero","lpAmount",u.toString());let{account:P}=this.scope,w=await P.getCreatedTokenAccount({mint:g,associatedOnly:!1});w||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",P.tokenAccounts);let I=await P.getCreatedTokenAccount({mint:y}),C=await P.getCreatedTokenAccount({mint:b}),k=this.createTxBuilder(f),{bypassAssociatedCheck:x,checkCreateATAOwner:S}=v({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},c),W=await P.handleTokenAccount({side:"out",amount:0,mint:y,tokenAccount:I,bypassAssociatedCheck:x,checkCreateATAOwner:S}),{tokenAccount:O}=W,M=Se(W,["tokenAccount"]);k.addInstruction(M);let V=await P.handleTokenAccount({side:"out",amount:0,mint:b,tokenAccount:C,bypassAssociatedCheck:x,checkCreateATAOwner:S}),{tokenAccount:K}=V,U=Se(V,["tokenAccount"]);return k.addInstruction(U),k.addInstruction({instructions:[qo({poolInfo:n,poolKeys:p,userKeys:{lpTokenAccount:w,baseTokenAccount:O,quoteTokenAccount:K,owner:this.scope.ownerPubKey},lpAmount:u,baseAmountMin:r,quoteAmountMin:a})],lookupTableAddress:p.lookupTableAccount?[p.lookupTableAccount]:[],instructionTypes:[n.pooltype.includes("StablePool")?_.AmmV5RemoveLiquidity:_.AmmV4RemoveLiquidity]}),k.addCustomComputeBudget(l),k.addTipInstruction(m),d===0?await k.buildV0():k.build()}async removeAllLpAndCreateClmmPosition({poolInfo:t,clmmPoolInfo:n,removeLpAmount:o,createPositionInfo:u,farmInfo:r,userFarmLpAmount:a,base:c,computeBudgetConfig:d,payer:l,userAuxiliaryLedgers:m,tokenProgram:f=Pt,checkCreateATAOwner:p=!0,getEphemeralSigners:y,txVersion:b,feePayer:g}){if((this.scope.availability.removeStandardPosition===!1||this.scope.availability.createConcentratedPosition===!1)&&this.logAndCreateError("remove liquidity or create position feature disabled in your region"),!(t.mintA.address===n.mintA.address||t.mintA.address===n.mintB.address)||!(t.mintB.address===n.mintA.address||t.mintB.address===n.mintB.address))throw Error("mint check error");let P=this.createTxBuilder(g),w={};for(let te of this.scope.account.tokenAccountRawInfos)(w[te.accountInfo.mint.toString()]===void 0||H(this.scope.ownerPubKey,te.accountInfo.mint,Pt).publicKey.equals(te.pubkey))&&(w[te.accountInfo.mint.toString()]=te.pubkey);let I=w[t.lpMint.address];if(I===void 0)throw Error("find lp account error in trade accounts");let C=o.add(a!=null?a:new ie(0)),k=t.mintA.address===de.WSOL.mint.toString(),x=t.mintB.address===de.WSOL.mint.toString(),{account:S,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Pt,mint:new me(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!0,checkCreateATAOwner:p});if(P.addInstruction(O||{}),S===void 0)throw new Error("base token account not found");let{account:M,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Pt,mint:new me(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:x?{payer:this.scope.ownerPubKey,amount:0}:void 0,skipCloseAccount:!x,notUseTokenAccount:x,associatedOnly:!0,checkCreateATAOwner:p});if(P.addInstruction(K||{}),M===void 0)throw new Error("quote token account not found");if(w[t.mintA.address]=S,w[t.mintB.address]=M,r!==void 0&&!(a!=null&&a.isZero())){let te=Kn[r.programId],Pe=Lt({programId:new me(r.programId),poolId:new me(r.id),owner:this.scope.ownerPubKey,version:te}),Fe,Ue=await this.scope.connection.getAccountInfo(Pe);if(Ue&&(Fe=So(te).decode(Ue.data)),te!==6&&!Fe){let{instruction:Oe,instructionType:lt}=Co({id:new me(r.id),programId:new me(r.programId),version:te,ledger:Pe,owner:this.scope.ownerPubKey});P.addInstruction({instructions:[Oe],instructionTypes:[lt]})}let Ze=[];for(let Oe of r.rewardInfos){let lt=Oe.mint.address===de.WSOL.mint.toString();if(w[Oe.mint.address])Ze.push(w[Oe.mint.address]);else{let{account:Yt,instructionParams:At}=await this.scope.account.getOrCreateTokenAccount({mint:new me(Oe.mint.address),tokenProgram:f,owner:this.scope.ownerPubKey,skipCloseAccount:!lt,createInfo:{payer:l||this.scope.ownerPubKey},associatedOnly:!0,checkCreateATAOwner:p});Yt||this.logAndCreateError("farm reward account not found:",Oe.mint.address),At&&P.addInstruction(At),Ze.push(Yt)}}let ve=(await this.scope.api.fetchFarmKeysById({ids:r.id}))[0],Te={userAuxiliaryLedgers:m,amount:a,owner:this.scope.ownerPubKey,farmInfo:r,farmKeys:ve,lpAccount:I,rewardAccounts:Ze},je=Kn[r.programId],nt=je===6?Ro(Te):je===5?Lo(Te):Oo(Te),De={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};P.addInstruction({instructions:[nt],instructionTypes:[De[je]]})}let U=await this.getAmmPoolKeys(t.id),W=qo({poolInfo:t,poolKeys:U,userKeys:{lpTokenAccount:I,baseTokenAccount:S,quoteTokenAccount:M,owner:this.scope.ownerPubKey},lpAmount:C,baseAmountMin:0,quoteAmountMin:0});P.addInstruction({instructions:[W],instructionTypes:[t.pooltype.includes("StablePool")?_.AmmV5RemoveLiquidity:_.AmmV4RemoveLiquidity],lookupTableAddress:U.lookupTableAccount?[U.lookupTableAccount]:[]});let[V,X]=t.mintA.address===n.mintA.address?[S,M]:[M,S],z=await this.scope.clmm.getClmmPoolKeys(n.id),oe=await ut.openPositionFromBaseInstructions(q(v({poolInfo:n,poolKeys:z,ownerInfo:{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:V,tokenAccountB:X},withMetadata:"create"},u),{liquidity:new ie(0),base:c,getEphemeralSigners:y}));return P.addInstruction({instructions:[...oe.instructions],signers:oe.signers,instructionTypes:[...oe.instructionTypes],lookupTableAddress:z.lookupTableAccount?[z.lookupTableAccount]:[]}),b===0?P.sizeCheckBuildV0({computeBudgetConfig:d}):P.sizeCheckBuild({computeBudgetConfig:d})}async createPoolV4({programId:t,marketInfo:n,baseMintInfo:o,quoteMintInfo:u,baseAmount:r,quoteAmount:a,startTime:c,ownerInfo:d,associatedOnly:l=!1,checkCreateATAOwner:m=!1,tokenProgram:f,txVersion:p,feeDestinationId:y,computeBudgetConfig:b,txTipConfig:g,feePayer:P}){var X;let w=d.feePayer||((X=this.scope.owner)==null?void 0:X.publicKey),I=d.useSOLBalance&&o.mint.equals(En),C=d.useSOLBalance&&u.mint.equals(En),k=this.createTxBuilder(P),{account:x,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:I?{payer:w,amount:r}:void 0,notUseTokenAccount:I,skipCloseAccount:!I,associatedOnly:I?!1:l,checkCreateATAOwner:m});k.addInstruction(S||{});let{account:O,instructionParams:M}=await this.scope.account.getOrCreateTokenAccount({mint:u.mint,owner:this.scope.ownerPubKey,createInfo:C?{payer:w,amount:a}:void 0,notUseTokenAccount:C,skipCloseAccount:!C,associatedOnly:C?!1:l,checkCreateATAOwner:m});if(k.addInstruction(M||{}),x===void 0||O===void 0)throw Error("you don't has some token account");let K=Do({version:4,marketVersion:3,marketId:n.marketId,baseMint:o.mint,quoteMint:u.mint,baseDecimals:o.decimals,quoteDecimals:u.decimals,programId:t,marketProgramId:n.programId}),U={programId:t,ammId:K.id,ammAuthority:K.authority,ammOpenOrders:K.openOrders,lpMint:K.lpMint,coinMint:K.baseMint,pcMint:K.quoteMint,coinVault:K.baseVault,pcVault:K.quoteVault,withdrawQueue:K.withdrawQueue,ammTargetOrders:K.targetOrders,poolTempLp:K.lpVault,marketProgramId:K.marketProgramId,marketId:K.marketId,ammConfigId:K.configId,feeDestinationId:y},{instruction:W,instructionType:V}=Uo(q(v({},U),{userWallet:this.scope.ownerPubKey,userCoinVault:x,userPcVault:O,userLpVault:H(this.scope.ownerPubKey,K.lpMint,f).publicKey,nonce:K.nonce,openTime:c,coinAmount:r,pcAmount:a}));return k.addInstruction({instructions:[W],instructionTypes:[V]}),k.addCustomComputeBudget(b),k.addTipInstruction(g),k.versionBuild({txVersion:p,extInfo:{address:U}})}async createMarketAndPoolV4({programId:t=mo,marketProgram:n=Vi,feeDestinationId:o=Wi,tokenProgram:u,baseMintInfo:r,quoteMintInfo:a,baseAmount:c,quoteAmount:d,startTime:l,ownerInfo:m,lowestFeeMarket:f,assignSeed:p,associatedOnly:y=!1,checkCreateATAOwner:b=!1,lotSize:g=1,tickSize:P=.01,txVersion:w,computeBudgetConfig:I,txTipConfig:C,feePayer:k}){var ei,ti,ni;let x=this.scope.ownerPubKey,S=m.feePayer||((ei=this.scope.owner)==null?void 0:ei.publicKey),O=m.useSOLBalance&&r.mint.equals(En),M=m.useSOLBalance&&a.mint.equals(En),K=p?`${r.mint.toBase58().slice(0,7)}-${a.mint.toBase58().slice(0,7)}-${p}`:void 0,U=We({fromPublicKey:x,programId:n,assignSeed:K&&`${K}-market`}),W=We({fromPublicKey:x,programId:n,assignSeed:K&&`${K}-request`}),V=We({fromPublicKey:x,programId:n,assignSeed:K&&`${K}-event`}),X=We({fromPublicKey:x,programId:n,assignSeed:K&&`${K}-bids`}),z=We({fromPublicKey:x,programId:n,assignSeed:K&&`${K}-asks`}),oe=We({fromPublicKey:x,programId:Pt,assignSeed:K&&`${K}-baseVault`}),te=We({fromPublicKey:x,programId:Pt,assignSeed:K&&`${K}-quoteVault`}),Pe=0,Fe=new ie(100);function Ue(){let $e=new ie(0);for(;;)try{return{vaultOwner:me.createProgramAddressSync([U.publicKey.toBuffer(),$e.toArrayLike(Buffer,"le",8)],n),vaultSignerNonce:$e}}catch{if($e.iaddn(1),$e.gt(new ie(25555)))throw Error("find vault owner error")}}let{vaultOwner:Ze,vaultSignerNonce:ve}=Ue(),Te=new ie(Math.round(10**r.decimals*g)),je=new ie(Math.round(g*10**a.decimals*P));if(Te.eq(Q))throw Error("lot size is too small");if(je.eq(Q))throw Error("tick size or lot size is too small");let nt=await Zo({connection:this.scope.connection,wallet:this.scope.ownerPubKey,marketInfo:{programId:n,vaultOwner:Ze,baseMint:r.mint,quoteMint:a.mint,id:U,baseVault:oe,quoteVault:te,requestQueue:W,eventQueue:V,bids:X,asks:z,feeRateBps:Pe,quoteDustThreshold:Fe,vaultSignerNonce:ve,baseLotSize:Te,quoteLotSize:je,lowestFeeMarket:f}}),De=this.createTxBuilder(k);De.addInstruction({instructions:nt[0].transaction.instructions,signers:nt[0].signer});for await(let $e of nt.slice(1,nt.length))De.addInstruction({instructions:$e.transaction.instructions,signers:$e.signer,instructionTypes:$e.instructionTypes});let{account:Oe,instructionParams:lt}=await this.scope.account.getOrCreateTokenAccount({mint:r.mint,owner:this.scope.ownerPubKey,createInfo:O?{payer:S,amount:c}:void 0,notUseTokenAccount:O,skipCloseAccount:!O,associatedOnly:O?!1:y,checkCreateATAOwner:b,assignSeed:O&&K?`${K}-wsol`:void 0});De.addInstruction(lt||{});let{account:Yt,instructionParams:At}=await this.scope.account.getOrCreateTokenAccount({mint:a.mint,owner:this.scope.ownerPubKey,createInfo:M?{payer:S,amount:d}:void 0,notUseTokenAccount:M,skipCloseAccount:!M,associatedOnly:M?!1:y,checkCreateATAOwner:b,assignSeed:M&&K?`${K}-wsol`:void 0});if(De.addInstruction(At||{}),Oe===void 0)throw Error("you don't has base token account");if(Yt===void 0)throw Error("you don't has quote token account");let xe=Do({version:4,marketVersion:3,marketId:U.publicKey,baseMint:r.mint,quoteMint:a.mint,baseDecimals:r.decimals,quoteDecimals:a.decimals,programId:t,marketProgramId:n}),Dn={programId:t,ammId:xe.id,ammAuthority:xe.authority,ammOpenOrders:xe.openOrders,lpMint:xe.lpMint,coinMint:xe.baseMint,pcMint:xe.quoteMint,coinVault:xe.baseVault,pcVault:xe.quoteVault,withdrawQueue:xe.withdrawQueue,ammTargetOrders:xe.targetOrders,poolTempLp:xe.lpVault,marketProgramId:xe.marketProgramId,marketId:xe.marketId,ammConfigId:xe.configId,feeDestinationId:o},{instruction:Xr,instructionType:Yr}=Uo(q(v({},Dn),{userWallet:this.scope.ownerPubKey,userCoinVault:Oe,userPcVault:Yt,userLpVault:H(this.scope.ownerPubKey,xe.lpMint,u).publicKey,nonce:xe.nonce,openTime:l,coinAmount:c,pcAmount:d}));De.addInstruction({instructions:[Xr],instructionTypes:[Yr]});let Jo=O||M?[((ti=lt==null?void 0:lt.instructions)==null?void 0:ti[0])||((ni=At==null?void 0:At.instructions)==null?void 0:ni[0])].filter($e=>!!$e):void 0;return w===0?De.sizeCheckBuildV0({computeBudgetConfig:I,splitIns:Jo,address:v({requestQueue:W.publicKey,eventQueue:V.publicKey,bids:X.publicKey,asks:z.publicKey,baseVault:oe.publicKey,quoteVault:te.publicKey,baseMint:new me(r.mint),quoteMint:new me(a.mint)},Dn)}):De.sizeCheckBuild({computeBudgetConfig:I,splitIns:Jo,address:v({requestQueue:W.publicKey,eventQueue:V.publicKey,bids:X.publicKey,asks:z.publicKey,baseVault:oe.publicKey,quoteVault:te.publicKey,baseMint:new me(r.mint),quoteMint:new me(a.mint)},Dn)})}async getCreatePoolFee({programId:t}){let n=On({programId:t}),o=await this.scope.connection.getAccountInfo(n,{dataSlice:{offset:536,length:8}});if(o===null)throw Error("get config account error");return Br.decode(o.data).fee}computeAmountOut({poolInfo:t,amountIn:n,mintIn:o,mintOut:u,slippage:r}){let[a,c]=[o.toString(),u.toString()];if(a!==t.mintA.address&&a!==t.mintB.address)throw new Error("toke not match");if(c!==t.mintA.address&&c!==t.mintB.address)throw new Error("toke not match");let{baseReserve:d,quoteReserve:l}=t,m=[d,l],f=[t.mintA.decimals,t.mintB.decimals],p=a==t.mintA.address?"base":"quote";p==="quote"&&(m.reverse(),f.reverse());let[y,b]=m,[g,P]=f,w=t.version===4,I;if(w)I=new ne(b.toString()).div(10**P).div(new ne(y.toString()).div(10**g));else{let V=Nr(this.stableLayout.stableModelData,d.toNumber(),l.toNumber(),!1);p==="quote"?I=new ne(1e6).div(V*1e6):I=new ne(V*1e6).div(1e6)}let C=n,k=new ie(0),x=new ie(0);if(!C.isZero())if(w){x=Gr(C.mul(No),Rn);let V=C.sub(x),X=y.add(V);k=b.mul(V).div(X)}else{x=C.mul(new ie(2)).div(new ie(1e4));let V=C.sub(x);p==="quote"?k=new ie(Lr(this.stableLayout.stableModelData,l.toNumber(),d.toNumber(),V.toNumber())):k=new ie(Or(this.stableLayout.stableModelData,l.toNumber(),d.toNumber(),V.toNumber()))}let S=new ie(new ne(k.toString()).mul(1-r).toFixed(0)),O=k,M=S,K=new ne(k.toString()).div(new ne(C.sub(x).toString()).toFixed(0));!C.isZero()&&!k.isZero()&&(K=new ne(k.toString()).div(10**P).div(new ne(C.sub(x).toString()).div(10**g)));let U=I.sub(K).div(I).mul(100);return{amountOut:O,minAmountOut:M,currentPrice:I,executionPrice:K,priceImpact:U,fee:x}}computeAmountIn({poolInfo:t,amountOut:n,mintIn:o,mintOut:u,slippage:r}){let{baseReserve:a,quoteReserve:c}=t;o.toString()!==t.mintA.address&&o.toString()!==t.mintB.address&&this.logAndCreateError("mintIn does not match pool"),u.toString()!==t.mintA.address&&u.toString()!==t.mintB.address&&this.logAndCreateError("mintOut does not match pool"),this.logDebug("baseReserve:",a.toString()),this.logDebug("quoteReserve:",c.toString());let d=o.toString()===t.mintA.address,[l,m]=d?[t.mintA,t.mintB]:[t.mintB,t.mintA];this.logDebug("currencyOut:",m.symbol||m.address),this.logDebug("amountOut:",new ne(n.toString()).div(10**m.decimals).toDecimalPlaces(m.decimals).toString(),l.symbol||l.address),this.logDebug("slippage:",`${r*100}%`);let f=[a,c],p=d?"quote":"base";p==="base"&&f.reverse(),this.logDebug("output side:",p);let[y,b]=f,g=new ne(b.toString()).div(10**t[d?"mintB":"mintA"].decimals).div(new ne(y.toString()).div(10**t[d?"mintA":"mintB"].decimals));this.logDebug("currentPrice:",`1 ${l.symbol||l.address} \u2248 ${g.toString()} ${m.symbol||m.address}`),this.logDebug("currentPrice invert:",`1 ${m.symbol||m.address} \u2248 ${new ne(1).div(g).toString()} ${l.symbol||l.address}`);let P=new ie(0),w=n,I=new ie(0);if(!w.isZero()){w.gt(b)&&(w=b.sub(new ie(1)));let K=b.sub(w),U=y.mul(w).div(K);P=U.mul(Rn).div(Rn.sub(No)),I=P.sub(U)}let C=new ie(new ne(P.toString()).mul(1+r).toFixed(0)),k=P,x=C;this.logDebug("amountIn:",new ne(k.toString()).div(10**l.decimals).toDecimalPlaces(l.decimals).toString()),this.logDebug("maxAmountIn:",new ne(x.toString()).div(10**l.decimals).toDecimalPlaces(l.decimals).toString());let S=null;!P.isZero()&&!w.isZero()&&(S=new ne(w.toString()).div(10**m.decimals).div(new ne(P.toString()).div(10**l.decimals)),this.logDebug("executionPrice:",`1 ${m.symbol||m.address} \u2248 ${S.toDecimalPlaces(Math.max(t.mintA.decimals,t.mintB.decimals)).toString()} ${l.symbol||l.address}`),this.logDebug("executionPrice invert:",`1 ${m.symbol||m.address} \u2248 ${new ne(1).div(S).toDecimalPlaces(Math.max(t.mintA.decimals,t.mintB.decimals)).toString()} ${l.symbol||l.address}`));let O=g.mul(k.toString()),M=O.sub(n.toString()).abs().div(O);return this.logDebug("priceImpact:",`${M.toString()}%`),{amountIn:k,maxAmountIn:x,currentPrice:g,executionPrice:S,priceImpact:M,fee:I}}async swap({poolInfo:t,poolKeys:n,amountIn:o,amountOut:u,inputMint:r,fixedSide:a,txVersion:c,config:d,computeBudgetConfig:l,txTipConfig:m,feePayer:f}){let p=this.createTxBuilder(f),{associatedOnly:y=!0,inputUseSolBalance:b=!0,outputUseSolBalance:g=!0}=d||{},[P,w]=r===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],I=b&&P.address===Ge.toBase58(),C=g&&w.address===Ge.toBase58(),{account:k,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Pt,mint:new me(P.address),owner:this.scope.ownerPubKey,createInfo:I?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!I,notUseTokenAccount:I,associatedOnly:y});p.addInstruction(x||{}),k||this.logAndCreateError("input token account not found",{token:P.symbol||P.address,tokenAccountIn:k,inputTokenUseSolBalance:I,associatedOnly:y});let{account:S,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Pt,mint:new me(w.address),owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!C,notUseTokenAccount:C,associatedOnly:C?!1:y});p.addInstruction(O||{}),S===void 0&&this.logAndCreateError("output token account not found",{token:w.symbol||w.address,tokenAccountOut:S,outputTokenUseSolBalance:C,associatedOnly:y});let M=n||await this.getAmmPoolKeys(t.id),K=4;return t.pooltype.includes("StablePool")&&(K=5),p.addInstruction({instructions:[K===4?Go({version:K,poolKeys:M,userKeys:{tokenAccountIn:k,tokenAccountOut:S,owner:this.scope.ownerPubKey},amountIn:o,amountOut:u,fixedSide:a}):zo({version:K,poolKeys:M,userKeys:{tokenAccountIn:k,tokenAccountOut:S,owner:this.scope.ownerPubKey},amountIn:o,amountOut:u,fixedSide:a})],instructionTypes:[K===4?_.AmmV4SwapBaseIn:_.AmmV5SwapBaseIn]}),p.addCustomComputeBudget(l),p.addTipInstruction(m),p.versionBuild({txVersion:c})}async getRpcPoolInfo(t){return(await this.getRpcPoolInfos([t]))[t]}async getRpcPoolInfos(t,n){let o=await st(this.scope.connection,t.map(l=>({pubkey:new me(l)})),n),u={},r=[];for(let l=0;l<t.length;l++){let m=o[l];if(m===null||!m.accountInfo)throw Error("fetch pool info error: "+String(t[l]));let f=vo.decode(m.accountInfo.data);u[String(t[l])]=q(v({},f),{programId:m.accountInfo.owner}),r.push(f.baseVault,f.quoteVault)}let a={},c=await st(this.scope.connection,r.map(l=>({pubkey:new me(l)})),n);for(let l=0;l<r.length;l++){let m=c[l].accountInfo;if(m===null)throw Error("fetch vault info error: "+r[l]);a[String(r[l])]=new ie(uc.decode(m.data).amount.toString())}let d={};for(let[l,m]of Object.entries(u)){let f=a[m.baseVault.toString()].sub(m.baseNeedTakePnl),p=a[m.quoteVault.toString()].sub(m.quoteNeedTakePnl);d[l]=q(v({},m),{baseReserve:f,mintAAmount:a[m.baseVault.toString()],mintBAmount:a[m.quoteVault.toString()],quoteReserve:p,poolPrice:new ne(p.toString()).div(new ne(10).pow(m.quoteDecimal.toString())).div(new ne(f.toString()).div(new ne(10).pow(m.baseDecimal.toString())))})}return d}async getPoolInfoFromRpc({poolId:t}){let n=await this.getRpcPoolInfo(t),o=Wo({[t]:n}),u=o[t],r=await this.scope.tradeV2.computePoolToPoolKeys({pools:[o[t]],ammRpcData:{[t]:n}});return{poolRpcData:n,poolInfo:u,poolKeys:r[0]}}async fetchPoolBalances(){await this.scope.account.fetchWalletTokenAccounts({forceUpdate:!0});let t=this.scope.account.tokenAccounts.filter(a=>!a.mint.equals(me.default)&&!a.amount.isZero()).map(a=>a.mint),u=(await Ye(this.scope.connection,t)).map((a,c)=>a&&a.data.length===zr.span?q(v({},zr.decode(a.data)),{address:t[c]}):void 0).filter(Boolean).filter(a=>this.scope.cluster==="devnet"?a:Ir.has(a.mintAuthority.toString())),r=await this.scope.api.fetchPoolByLpMints({ids:u.map(a=>a.address.toBase58()).join(",")});return u.map((a,c)=>{var d,l;return{mintData:a,address:a.address,poolInfo:r[c],balance:(l=(d=this.scope.account.tokenAccounts.find(m=>m.mint.equals(a.address)))==null?void 0:d.amount)!=null?l:new ie(0)}})}};export{_n as default};
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
//# sourceMappingURL=liquidity.mjs.map