UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

3 lines 172 kB
var Hr=Object.defineProperty,Qr=Object.defineProperties;var Zr=Object.getOwnPropertyDescriptors;var sn=Object.getOwnPropertySymbols;var ri=Object.prototype.hasOwnProperty,ai=Object.prototype.propertyIsEnumerable;var ii=(i,e,t)=>e in i?Hr(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,v=(i,e)=>{for(var t in e||(e={}))ri.call(e,t)&&ii(i,t,e[t]);if(sn)for(var t of sn(e))ai.call(e,t)&&ii(i,t,e[t]);return i},q=(i,e)=>Qr(i,Zr(e));var Se=(i,e)=>{var t={};for(var n in i)ri.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&&ai.call(i,n)&&(t[n]=i[n]);return t};import{PublicKey as de}from"@solana/web3.js";import{AccountLayout as mc,MintLayout as Gr,NATIVE_MINT as En,TOKEN_PROGRAM_ID as Pt}from"@solana/spl-token";import{PublicKey as lc}from"@solana/web3.js";import _t from"bn.js";import QR from"decimal.js";import aa from"big.js";import ln from"bn.js";import{get as si,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}},ui={},jr={};function Y(i){let e=si(ui,i);if(!e){let t=si(jr,i);e=new Wn({name:i,logLevel:t}),$r(ui,i,e)}return e}import Jr from"toformat";var ea=Jr,Ht=ea;import cn from"big.js";import na from"bn.js";import oa from"decimal.js-light";import Qt from"bn.js";var ci=9007199254740991;function $(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>=ci||i<=-ci)&&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(oa),ia={[0]:Zt.ROUND_DOWN,[1]:Zt.ROUND_HALF_UP,[2]:Zt.ROUND_UP},ra={[0]:cn.roundDown,[1]:cn.roundHalfUp,[2]:cn.roundUp},j=class{constructor(e,t=new na(1)){this.numerator=$(e),this.denominator=$(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new j(this.denominator,this.numerator)}add(e){let t=e instanceof j?e:new j($(e));return this.denominator.eq(t.denominator)?new j(this.numerator.add(t.numerator),this.denominator):new j(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof j?e:new j($(e));return this.denominator.eq(t.denominator)?new j(this.numerator.sub(t.numerator),this.denominator):new j(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof j?e:new j($(e));return new j(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof j?e:new j($(e));return new j(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:ia[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=ra[n]||1,new qn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var sa=Y("Raydium_amount"),li=Ht(aa);function ua(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")):sa.logWithError(`invalid number string, num: ${i}`)}else t=i;return[t,n.slice(0,e)||n]}var Ke=class extends j{constructor(t,n,o=!0,u){let r=new ln(0),a=Un.pow(new ln(t.decimals));if(o)r=$(n);else{let c=new ln(0),d=new ln(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,m]=ua(n.toString(),t.decimals);c=$(l),d=$(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 li.DP=this.token.decimals,new li(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as ca}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as mi}from"@solana/spl-token";var mn={chainId:101,address:ca.default.toBase58(),programId:mi.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:mi.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 di,SYSVAR_RENT_PUBKEY as la}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ma}from"@solana/spl-token";function I({pubkey:i,isSigner:e=!1,isWritable:t=!0}){return{pubkey:i,isWritable:t,isSigner:e}}var da=[I({pubkey:ma,isWritable:!1}),I({pubkey:di.programId,isWritable:!1}),I({pubkey:la,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"),zc=new se("SysvarC1ock11111111111111111111111111111111"),dt=new se("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),pa=new se("Sysvar1nstructions1111111111111111111111111"),fa=di.programId,Xc=new se("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Yc=new se("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Hc=new se("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Qc=new se("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Zc=new se("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),$c=new se("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),jc=new se("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Jc=new se("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),el=new se("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),tl=new se("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),nl=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)}},pe=Yn;pe.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 ya from"bn.js";var pi=new j(new ya(100)),ze=class extends j{toSignificant(e=5,t,n){return this.mul(pi).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(pi).toFixed(e,t,n)}};var ba=Y("Raydium_price"),Xe=class extends j{constructor(t){let{baseToken:n,quoteToken:o,numerator:u,denominator:r}=t;super(u,r);this.baseToken=n,this.quoteToken=o,this.scalar=new j(Qn(n.decimals),Qn(o.decimals))}get raw(){return new j(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&&ba.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 GC}from"lodash";import xl from"axios";var fi={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"},ga=q(v({},fi),{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 Ql=Y("Raydium_Api");import{PublicKey as hp,SystemProgram as Bp}from"@solana/web3.js";import{AccountLayout as Cp,createAssociatedTokenAccountIdempotentInstruction as Rp,TOKEN_PROGRAM_ID as Lp,TOKEN_2022_PROGRAM_ID as Op}from"@solana/spl-token";import{PublicKey as qt,sendAndConfirmTransaction as to,SystemProgram as ha,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 $n({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={},jn=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 yi,Keypair as gi,PublicKey as Pa,Transaction as Pi,TransactionMessage as Aa,VersionedTransaction as Ai}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as wa}from"@solana/spl-token";var bi=Y("Raydium_txUtil"),wi=1644;function pn(i){let e=[],t=[];return i.microLamports&&(e.push(yi.setComputeUnitPrice({microLamports:i.microLamports})),t.push(_.SetComputeUnitPrice)),i.units&&(e.push(yi.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&&bi.logWithError(`no instructions provided: ${i.toString()}`),e.length<1&&bi.logWithError(`no signers provided:, ${e.toString()}`);let t=new Pi;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...i);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<wi}catch{return!1}}function J(i,e){let[t,n]=Pa.findProgramAddressSync(i,e);return{publicKey:t,nonce:n}}function $t({instructions:i,payer:e,signers:t}){return eo(i,[e,...t])}function jt({instructions:i,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=gi.generate().publicKey.toString()}){let u=new Aa({payerKey:e,recentBlockhash:n,instructions:i}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Ai(u).serialize()).toString("base64").length<wi}catch{return!1}}var ka=i=>Buffer.isBuffer(i)?i:i instanceof Uint8Array?Buffer.from(i.buffer,i.byteOffset,i.byteLength):Buffer.from(i),Ta=i=>{let e=i.serialize({requireAllSignatures:!1,verifySignatures:!1});i instanceof Ai&&(e=ka(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 Pi&&(t.recentBlockhash||(t.recentBlockhash=wa.toBase58()),t.feePayer||(t.feePayer=gi.generate().publicKey)),e.push(Ta(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(ha.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 A;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((A=this.owner)!=null&&A.isKeyPair){if(m){let w=[],B=0;for(let L of r){if(++B,B<=p)continue;let k=await to(this.connection,L,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((L,k)=>(L.recentBlockhash=g,a[k].length&&L.sign(...a[k]),L));Tt(w);let B=await this.signAllTransactions(w);if(m){let L=0,k=[],x=async()=>{if(!B[L])return;let S=await this.connection.sendRawTransaction(B[L].serialize(),{skipPreflight:b});k.push({txId:S,status:"sent",signedTx:B[L]}),f==null||f([...k]),L++;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:1});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:B}}else{let L=[];for(let k=0;k<B.length;k+=1){let x=await this.connection.sendRawTransaction(B[k].serialize(),{skipPreflight:b});L.push(x)}return{txIds:L,signedTxs:B}}}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 jn(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 $n({connection:this.connection,address:d});for(let[g,A]of Object.entries(l))a[g]=A;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 L;let{skipPreflight:A=!0,sendAndConfirm:w,notSendToRpc:B}=g||{};if(Tt([p]),(L=this.owner)!=null&&L.isKeyPair){let k=await this.connection.sendTransaction(p,{skipPreflight:A});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:B?"":await this.connection.sendTransaction(k[0],{skipPreflight:A}),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 A of r){let w=await this.connection.sendTransaction(A,{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 A=0,w=[],B=async()=>{if(!g[A])return;let L=await this.connection.sendTransaction(g[A],{skipPreflight:y});w.push({txId:L,status:"sent",signedTx:g[A]}),f==null||f([...w]),A++;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===L);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||B()};this.loopMultiTxStatus&&(x=setInterval(async()=>{var M;if(k){clearInterval(x);return}try{let K=await this.connection.getTransaction(L,{commitment:"confirmed",maxSupportedTransactionVersion:1});K&&(k=!0,clearInterval(x),O({err:((M=K.meta)==null?void 0:M.err)||null}),console.log("tx status from getTransaction:",L))}catch(K){k=!0,clearInterval(x),console.error("getTransaction timeout:",K,L)}},yn)),S=this.connection.onSignature(L,M=>{if(k){this.connection.removeSignatureListener(S);return}k=!0,O(M)},"confirmed"),this.connection.getSignatureStatus(L)};return B(),{txIds:[],signedTxs:g}}else{let A=[];for(let w=0;w<g.length;w+=1){let B=await this.connection.sendTransaction(g[w],{skipPreflight:y});A.push(B)}return{txIds:A,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,A=[...new Set(y.map(w=>w.keys.filter(B=>B.isSigner).map(B=>B.pubkey.toString())).flat()).values()].map(w=>new qt(w));if(p!==t[l]&&d.length<12&&($t({instructions:b,payer:this.feePayer,signers:A})||$t({instructions:y,payer:this.feePayer,signers:A})))d.push(p);else{if(d.length===0)throw Error("item ins too big");l+=p===t[l]?1:0,$t({instructions:n?[...u.instructions,...d]:[...d],payer:this.feePayer,signers:A})?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(B=>B.isSigner).map(B=>B.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);$t({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 L;let{sequentially:y,onTxUpdate:b,skipTxCount:g=0,recentBlockHash:A,skipPreflight:w=!0}=p||{},B=A!=null?A:await Wt(this.connection,this.blockhashCommitment);if(a.forEach(async(k,x)=>{k.recentBlockhash=B,c[x].length&&k.sign(...c[x])}),Tt(a),(L=this.owner)!=null&&L.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:1});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 L;let B=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:o={},lookupTableAddress:u=[],insCountLimit:r=12}=B,a=Se(B,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),c=v(v({},this.cluster==="devnet"?await Jn(this.connection):await jn(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 $n({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=[],A=[],w=0;if(this.allInstructions.forEach(k=>{let x=[...A,k],S=t?[...f.instructions,...x]:x;if(k!==n[w]&&A.length<r&&(jt({instructions:S,payer:this.feePayer,lookupTableAddressAccount:c})||jt({instructions:x,payer:this.feePayer,lookupTableAddressAccount:c})))A.push(k);else{if(A.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&&jt({instructions:[...f.instructions,...A],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:p})){let M=new en({payerKey:this.feePayer,recentBlockhash:p,instructions:[...f.instructions,...A]}).compileToV0Message(Object.values(c));b.push(new tn(M))}else{let M=new en({payerKey:this.feePayer,recentBlockhash:p,instructions:[...A]}).compileToV0Message(Object.values(c));b.push(new tn(M))}g.push(Array.from(new Set(A.map(M=>M.keys.filter(K=>K.isSigner).map(K=>K.pubkey.toString())).flat())).map(M=>y[M]).filter(M=>M!==void 0)),A=[k]}}),A.length>0){let x=[...new Set(A.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&&jt({instructions:[...f.instructions,...A],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:p})){let S=new en({payerKey:this.feePayer,recentBlockhash:p,instructions:[...f.instructions,...A]}).compileToV0Message(Object.values(c));b.push(new tn(S))}else{let S=new en({payerKey:this.feePayer,recentBlockhash:p,instructions:[...A]}).compileToV0Message(Object.values(c));b.push(new tn(S))}g.push(x)}return(L=this.owner)!=null&&L.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($e=>$e.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:1});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 ep,SystemProgram as np}from"@solana/web3.js";import rp from"bn.js";import{createCloseAccountInstruction as cp,createInitializeAccountInstruction as lp,createTransferInstruction as mp,TOKEN_PROGRAM_ID as dp}from"@solana/spl-token";import{Keypair as Ua,PublicKey as Ga}from"@solana/web3.js";import zd from"bn.js";import{TOKEN_PROGRAM_ID as za}from"@solana/spl-token";function Ia(i){return i instanceof Uint8Array||i!=null&&typeof i=="object"&&i.constructor.name==="Uint8Array"}function oo(i,...e){if(!Ia(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 ki(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 Vm=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function xa(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=xa(i)),oo(i),i}var gn=class{clone(){return this._cloneInto()}},Em={}.toString;function Ti(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 Sa(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 hi=(i,e,t)=>i&e^~i&t,Bi=(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),ki(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;Sa(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 Ka=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+hi(a,c,d)+Ka[m]+ft[m]|0,b=(He(n,2)^He(n,13)^He(n,22))+Bi(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=Ti(()=>new ao);import{PublicKey as Da}from"@solana/web3.js";import Ri,{isBN as Li}from"bn.js";import{bits as Ca,BitStructure as Hm,blob as Ra,Blob as Qm,cstr as Zm,f32 as $m,f32be as jm,f64 as Jm,f64be as ed,greedy as td,Layout as La,ns64 as nd,ns64be as od,nu64 as id,nu64be as rd,offset as Oa,s16 as ad,s16be as sd,s24 as ud,s24be as cd,s32 as Na,s32be as ld,s40 as md,s40be as dd,s48 as pd,s48be as fd,s8 as yd,seq as Ma,struct as bd,Structure as Fa,u16 as va,u16be as gd,u24 as Pd,u24be as Ad,u32 as _a,u32be as wd,u40 as kd,u40be as Td,u48 as hd,u48be as Bd,u8 as Va,UInt as Ea,union as Id,Union as xd,unionLayoutDiscriminator as Sd,utf8 as Kd}from"@solana/buffer-layout";var wn=La,xi=Fa;var so=Ea;var Si=Va,ce=va;var kn=_a;var ye=Na;var Ki=Ma;var G=Ra;var uo=Ca,Ci=Oa;var Bt=class extends wn{constructor(t,n,o){super(t,o);this.blob=G(t),this.signed=n}decode(t,n=0){let o=new Ri(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 Ri(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 R(i){return new so(1,i)}function ae(i){return new so(4,i)}function s(i){return new Bt(8,!1,i)}function E(i){return new Bt(16,!1,i)}function Oi(i){return new Bt(1,!0,i)}function Ut(i){return new Bt(8,!0,i)}function Ni(i){return new Bt(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 P(i){return new nn(G(32),e=>new Da(e),e=>e.toBuffer(),i)}function le(i){return new nn(Si(),Wa,qa,i)}function Wa(i){if(i===0)return!1;if(i===1)return!0;throw new Error("Invalid bool: "+i)}function qa(i){return i?1:0}function lo(i,e){let t=kn("length"),n=C([t,F(i,Ci(t,-t.span),"values")]);return new nn(n,({values:o})=>o,o=>({values:o}),e)}var co=class extends xi{decode(e,t){return super.decode(e,t)}};function C(i,e,t){return new co(i,e,t)}function F(i,e,t){let n,o=typeof e=="number"?e:Li(e)?e.toNumber():new Proxy(e,{get(u,r){if(!n){let a=Reflect.get(u,"count");n=Li(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 Ki(i,o,t)}var hn=C([P("mint"),P("owner"),s("amount"),ae("delegateOption"),P("delegate"),R("state"),ae("isNativeOption"),s("isNative"),s("delegatedAmount"),ae("closeAuthorityOption"),P("closeAuthority")]);function We({fromPublicKey:i,programId:e=za,assignSeed:t}){let n=t?btoa(t).slice(0,32):Ua.generate().publicKey.toBase58().slice(0,32);return{publicKey:Xa(i,n,e),seed:n}}function Xa(i,e,t){let n=Buffer.concat([i.toBuffer(),Buffer.from(e),t.toBuffer()]),o=Ii(n);return new Ga(o)}import{PublicKey as RA,SystemProgram as LA}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as NA}from"@solana/spl-token";import{PublicKey as Ha}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Qa}from"@solana/spl-token";function H(i,e,t){return J([i.toBuffer(),(t!=null?t:Qa).toBuffer(),e.toBuffer()],new Ha("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as D}from"@solana/web3.js";var Fi=new D("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),vi=new D("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),_i=new D("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),mo=new D("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Up=new D("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Vi=new D("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Ei=new D("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),po=new D("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Gp=new D("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Za=new D("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Di=new D("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),$a=new D("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),ja=new D("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),It=new D("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),zp=new D("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Wi=new D("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),fo=new D("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ja=new D("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Xp=new D("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),es=new D("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),ts=new D("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),ns=new D("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Yp=new D("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Hp=new D("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Qp=new D("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Zp=new D("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),$p=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 kg,TOKEN_2022_PROGRAM_ID as Tg,TOKEN_PROGRAM_ID as hg}from"@solana/spl-token";import{PublicKey as Ig}from"@solana/web3.js";import Sg from"bn.js";import Cg from"decimal.js";import{TOKEN_PROGRAM_ID as df}from"@solana/spl-token";import{PublicKey as bf}from"@solana/web3.js";var os=C([ae("mintAuthorityOption"),P("mintAuthority"),s("supply"),R("decimals"),R("isInitialized"),ae("freezeAuthorityOption"),P("freezeAuthority")]);var yo=i=>new pe({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 ho,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 me}from"@solana/web3.js";import Sn from"bn.js";import Z from"bn.js";var be=new Z(1).shln(64);var is=new Z(1).shln(128),xt=new Z(1).shln(64).subn(1),rs=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,Bn=512,Ne=60,Kf=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),Cf=new Z(-1);var Rf=new Z("18446744073700000000");var as=C([G(8),R("bump"),ce("index"),P("owner"),ae("protocolFeeRate"),ae("tradeFeeRate"),ce("tickSpacing"),ae("fundFeeRate"),F(ae(),1),P("fundOwner"),F(s(),3)]),ss=C([ae("blockTimestamp"),Ut("tickCumulative"),F(s(),4)]),Zi=C([G(8),le("initialized"),s("recentEpoch"),ce("observationIndex"),P("poolId"),F(ss,Yi,"observations"),F(s(),4)]),us=C([ce("filterPeriod"),ce("decayPeriod"),ce("reductionFactor"),ae("dynamicFeeControl"),ae("maxVolatilityAccumulator"),ye("tickSpacingIndexReference"),ae("volatilityReference"),ae("volatilityAccumulator"),s("lastUpdateTimestamp"),F(R(),46)]),cs=C([R("state"),s("openTime"),s("endTime"),s("lastUpdateTime"),E("emissionsPerSecondX64"),s("totalEmissioned"),s("claimed"),P("mint"),P("vault"),P("creator"),E("growthGlobalX64")]),bo=C([G(8),R("bump"),P("configId"),P("creator"),P("mintA"),P("mintB"),P("vaultA"),P("vaultB"),P("observationId"),R("mintDecimalsA"),R("mintDecimalsB"),ce("tickSpacing"),E("liquidity"),E("sqrtPriceX64"),ye("tickCurrent"),ae(),E("feeGrowthGlobalX64A"),E("feeGrowthGlobalX64B"),s("protocolFeesTokenA"),s("protocolFeesTokenB"),F(E(),4),R("status"),R("feeOn"),G(6),F(cs,on,"rewardInfos"),G(8*16,"tickArrayBitmap"),F(s(),4),s("fundFeesTokenA"),s("fundFeesTokenB"),s("startTime"),s("recentEpoch"),us.replicate("dynamicFeeInfo"),F(s(),46)]),ls=C([E("growthInsideLastX64"),s("rewardAmountOwed")]),ms=C([G(8),R("bump"),P("nftMint"),P("poolId"),ye("tickLower"),ye("tickUpper"),E("liquidity"),E("feeGrowthInsideLastX64A"),E("feeGrowthInsideLastX64B"),s("tokenFeesOwedA"),s("tokenFeesOwedB"),F(ls,on,"rewardInfos"),s("recentEpoch"),F(s(),7)]),Mf=C([G(8),R("bump"),P("poolId"),ye("tickLower"),ye("tickUpper"),E("liquidity"),E("feeGrowthInsideLastX64A"),E("feeGrowthInsideLastX64B"),s("tokenFeesOwedA"),s("tokenFeesOwedB"),F(E(),on,"rewardGrowthInside"),s("recentEpoch"),F(s(),7)]),ds=C([ye("tick"),Ni("liquidityNet"),E("liquidityGross"),E("feeGrowthOutsideX64A"),E("feeGrowthOutsideX64B"),F(E(),on,"rewardGrowthsOutsideX64"),s("orderPhase"),s("ordersAmount"),s("partFilledOrdersRemaining"),E("unfilledRatioX64"),F(ae(),3)]),$i=C([G(8),P("poolId"),ye("startTickIndex"),F(ds,Ne,"ticks"),R("initializedTickCount"),s("recentEpoch"),F(R(),107)]),ps=C([G(8),R("bump"),F(P(),Hi,"operationOwners"),F(P(),Qi,"whitelistMints")]),fs=C([G(8),P("poolId"),P("owner"),ye("tick"),le("zeroForOne"),s("orderPhase"),s("totalAmount"),s("filledAmount"),s("settleBase"),s("settleOutput"),s("openTime"),E("unfilledRatioX64"),F(s(),4)]),ji=C([G(8),P("poolId"),G(8*8*Gt,"positiveTickArrayBitmap"),G(8*8*Gt,"negativeTickArrayBitmap")]),Ff=C([G(8),ce("index"),ce("filterPeriod"),ce("decayPeriod"),ce("reductionFactor"),ae("dynamicFeeControl"),ae("maxVolatilityAccumulator"),F(s(),8)]),ys=C([G(8),P("wallet"),R("nonceIndex"),s("orderNonce"),F(s(),4)]),vf=C([s(),R("bump"),P("owner"),P("poolId"),P("positionId"),P("nftAccount"),F(s(),8)]),bs=C([G(8),R("bump"),P("lockOwner"),P("poolId"),P("positionId"),P("nftAccount"),P("lockNftMint"),s("recentEpoch"),F(s(),8)]);import Ef from"bn.js";function go(i){let e=Buffer.alloc(2);return e.writeUInt16LE(i),e}function Po(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 Hf=Buffer.from("amm_config","utf8"),Ao=Buffer.from("pool","utf8"),er=Buffer.from("pool_vault","utf8"),gs=Buffer.from("pool_reward_vault","utf8"),tr=Buffer.from("position","utf8"),Ps=Buffer.from("tick_array","utf8"),As=Buffer.from("operation","utf8"),ws=Buffer.from("pool_tick_array_bitmap_extension","utf8"),ks=Buffer.from("observation","utf8"),Qf=Buffer.from("support_mint","utf8"),Zf=Buffer.from("dynamic_fee_config","utf8"),Ts=Buffer.from("permission","utf8");function nr(i,e,t,n){return J([Ao,e.toBuffer(),t.toBuffer(),n.toBuffer()],i)}function or(i,e){return J([Ts,e.toBuffer()],i)}function ir(i,e,t,n,o){return J([Ao,e.toBuffer(),t.toBuffer(),n.toBuffer(),go(o)],i)}function zt(i,e,t){return J([er,e.toBuffer(),t.toBuffer()],i)}function rr(i,e,t){return J([gs,e.toBuffer(),t.toBuffer()],i)}function Ae(i,e,t){return J([Ps,e.toBuffer(),Ji(t)],i)}function at(i,e,t,n){return J([tr,e.toBuffer(),Po(t),Po(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 In(i){return J([As],i)}function he(i,e){return J([ws,e.toBuffer()],i)}function wo(i,e){return J([ks,e.toBuffer()],i)}var ar=Buffer.from("locked_position","utf8");function ko(i,e){return J([ar,e.toBuffer()],i)}function To(i,e){return J([ar,e.toBuffer()],i)}import{sha256 as Ls}from"js-sha256";import hs 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 ty=new hs(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 fy 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:-Bn,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:Bn,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*Bn}},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 A=u.shrn(127).toNumber();u=u.shrn(63+A),A&&(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 Ay from"bn.js";import ky from"decimal.js";import{PublicKey as mr}from"@solana/web3.js";import Ks from"bn.js";import{TOKEN_2022_PROGRAM_ID as fb,TOKEN_PROGRAM_ID as yb}from"@solana/spl-token";import Ab from"decimal.js";import Zy from"bn.js";import _y 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 Ks(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),A=Me(b,p.emissionsPerSecondX64,o),w,B=p.totalEmissioned.add(g);if(B.lte(xt))w=B;else{let k=xt.sub(p.totalEmissioned);w=xt,A=Me(k,be,o)}let L=p.growthGlobalX64.add(A);r.push(q(v({},p),{growthGlobalX64:L,totalEmissioned:w,lastUpdateTime:y}))}return r}};import Rb from"bn.js";function Be(i){let e=`global:${i}`;return Buffer.from(Ls.digest(e)).slice(0,8)}Zi.span;var dr=Y("Raydium_Clmm"),Ie={createPool:Be("create_pool"),createCustomizablePool:Be("create_customizable_pool"),createPermissionedPool:Be("create_permissioned_pool"),openPositionV2:Be("open_position_v2"),openPositionWithToken22Nft:Be("open_position_with_token22_nft"),closePosition:Be("close_position"),increaseLiquidityV2:Be("increase_liquidity_v2"),decreaseLiquidityV2:Be("decrease_liquidity_v2"),initializeReward:Be("initialize_reward"),setRewardParams:Be("set_reward_params"),updateRewardInfos:Be("update_reward_infos"),collectRemainingRewards:Be("collect_remaining_rewards"),swapV2:Be("swap_v2"),openLimitOrder:Be("open_limit_order"),increaseLimitOrder:Be("increase_limit_order"),decreaseLimitOrder:Be("decrease_limit_order"),settleLimitOrder:Be("settle_limit_order"),closeLimitOrder:Be("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=C([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(B=>({pubkey:B,isSigner:!1,isWritable:!1}))],A=Buffer.alloc(b.span);b.encode({sqrtPriceX64:p,startTime:Q},A);let w=Buffer.from([...Ie.createPool,...A]);return new me({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 A=C([E("sqrtPriceX64"),R("collectFeeOn"),le("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}]:[]],B=Buffer.alloc(A.span);A.encode({sqrtPriceX64:p,collectFeeOn:y,enableDynamicFee:g!==void 0},B);let L=Buffer.from([...Ie.createCustomizablePool,...B]);return new me({keys:w,programId:e,data:L})}static createPermissionedPoolInstruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g,A,w,B){let L=C([E("sqrtPriceX64"),R("collectFeeOn"),le("enableDynamicFee"),ce("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})),...B?[{pubkey:B,isSigner:!1,isWritable:!1}]:[]],x=Buffer.alloc(L.span);L.encode({sqrtPriceX64:b,collectFeeOn:g,enableDynamicFee:B!==void 0,seedIndex:A},x);let S=Buffer.from([...Ie.createPermissionedPool,...x]);return new me({keys:k,programId:e,data:S})}static initializeRewardInstruction(e,t,n,o,u,r,a,c,d,l,m,f){let p=C([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([...Ie.initializeReward,...b]);return new me({keys:y,programId:e,data:g})}static updateRewardInfosInstruction(e,t){let n=[{pubkey:t,isSigner:!1,isWritable:!0}],o=Buffer.from([...Ie.updateRewardInfos]);return new me({keys:n,programId:e,data:o})}static setRewardParamsInstruction(e,t,n,o,u,r,a,c,d,l,m,f){let p=C([R("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([...Ie.setRewardParams,...b]);return new me({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([...Ie.closePosition]);return new me({keys:c,programId:e,data:d})}static openPositionV2Instruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g,A,w,B,L,k,x,S,O,M,K,U){let W=C([ye("tickLower"),ye("tickUpper"),ye("tickArrayLowerStart"),ye("tickArrayUpperStart"),E("liquidity"),s("amountMaxA"),s("amountMaxB"),le("withMetadata"),R("optionBaseFlag"),le("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:ho,isSigner:!1,isWritable:!1},{pubkey:dt,isSigner:!1,isWritable:!1},{pubkey:fe,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:A,isSigner:!1,isWritable:!1},...U?[{pubkey:U,isSigner:!1,isWritable:!0}]:[]],X=Buffer.alloc(W.span);W.encode({tickLower:w,tickUpper:B,tickArrayLowerStart:L,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([...Ie.openPositionV2,...X]);return new me({keys:V,programId:e,data:z})}static increaseLiquidityV2Instruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g,A,w,B){let L=C([E("liquidity"),s("amountMaxA"),s("amountMaxB"),R("optionBaseFlag"),le("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},...B?[{pubkey:B,isSigner:!1,isWritable:!0}]:[]],x=Buffer.alloc(L.span);L.encode({liquidity:b,amountMaxA:g,amountMaxB:A,optionBaseFlag:w!==null?1:0,baseFlag:w!=null?w:!1},x);let S=Buffer.from([...Ie.increaseLiquidityV2,...x]);return new me({keys:k,programId:e,data:S})}static decreaseLiquidityV2Instruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g,A,w,B){let L=C([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},...B?[{pubkey:B,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(L.span);L.encode({liquidity:g,amountMinA:A,amountMinB:w},x);let S=Buffer.from([...Ie.decreaseLiquidityV2,...x]);return new me({keys:k,programId:e,data:S})}static swapV2Instruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g,A){let w=C([s("amount"),s("otherAmountThreshold"),E("sqrtPriceLimitX64"),le("isBaseInput")]),B=[{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},...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...m.map(x=>({pubkey:x,isSigner:!1,isWritable:!0}))],L=Buffer.alloc(w.span);w.encode({amount:p,otherAmountThreshold:y,sqrtPriceLimitX64:b,isBaseInput:g},L);let k=Buffer.from([...Ie.swapV2,...L]);return new me({keys:B,programId:e,data:k})}static collectRemainingRewardsInstruction(e,t,n,o,u,r,a){let c=C([R("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([...Ie.collectRemainingRewards,...l]);return new me({keys:d,programId:e,data:m})}static openPositionWithToken22NftInstruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g,A,w,B,L,k,x,S,O,M,K){let U=C([ye("tickLower"),ye("tickUpper"),ye("tickArrayLowerStart"),ye("tickArrayUpperStart"),E("liquidity"),s("amountMaxA"),s("amountMaxB"),le("withMetadata"),R("optionBaseFlag"),le("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:ho,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:A,tickUpper:w,tickArrayLowerStart:B,tickArrayUpperStart:L,liquidity:k,amountMaxA:x,amountMaxB:S,withMetadata:O,optionBaseFlag:M!==null?1:0,baseFlag:M!=null?M:!1},V);let X=Buffer.from([...Ie.openPositionWithToken22Nft,...V]);return new me({keys:W,programId:e,data:X})}static openLimitOrderInstruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y,b,g,A,w){let B=C([R("nonceIndex"),le("zeroForOne"),ye("tickIndex"),s("amount")]),L=[{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(B.span);B.encode({nonceIndex:y,zeroForOne:b,tickIndex:g,amount:A},k);let x=Buffer.from([...Ie.openLimitOrder,...k]);return new me({keys:L,programId:e,data:x})}static increaseLimitOrderInstruction(e,t,n,o,u,r,a,c,d,l){let m=C([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([...Ie.increaseLimitOrder,...p]);return new me({keys:f,programId:e,data:y})}static decreaseLimitOrderInstruction(e,t,n,o,u,r,a,c,d,l,m,f,p,y){let b=C([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}]:[]],A=Buffer.alloc(b.span);b.encode({amount:f,amountMin:p},A);let w=Buffer.from([...Ie.decreaseLimitOrder,...A]);return new me({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([...Ie.settleLimitOrder]);return new me({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([...Ie.closeLimitOrder]);return new me({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}=wo(t,p),{publicKey:b}=zt(t,p,d),{publicKey:g}=zt(t,p,l),A=he(t,p).publicKey,w=[this.createPoolInstruction(t,p,n,r,y,d,b,m,l,g,f,A,a,c)];return{signers:[],instructions:w,instructionTypes:[_.CreateAccount,_.ClmmCreatePool],address:{poolId:p,observationId:y,exBitmapAccount:A,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:A}=wo(t,b),{publicKey:w}=zt(t,b,m),{publicKey:B}=zt(t,b,f),L=he(t,b).publicKey,k=[this.createPoolInstruction(t,b,n,r,A,m,w,p,f,B,y,L,a,c)];return{signers:[],instructions:k,instructionTypes:[_.CreateAccount,_.ClmmCreatePool],address:{poolId:b,observationId:A,exBitmapAccount:L,mintA:m,mintB:f,mintAProgram:p,mintBProgram:y,mintAVault:w,mintBVault:B,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 A=re.getTickArrayStartIndex(o,e.config.tickSpacing),w=re.getTickArrayStartIndex(u,e.config.tickSpacing),{publicKey:B}=Ae(y,b,A),{publicKey:L}=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,B,L,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,A,w,r,a,c,l==="create",d&&d==="MintA",Ee.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[A,w]})?he(y,b).publicKey:void 0):this.openPositionV2Instruction(y,n.feePayer,b,n.wallet,g,k,x,O,B,L,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,A,w,r,a,c,l==="create",null,Ee.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[A,w]})?he(y,b).publicKey:void 0);return{signers:p,instructions:[M],instructionTypes:[_.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:g,tickArrayLower:B,tickArrayUpper:L,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 A=re.getTickArrayStartIndex(o,e.config.tickSpacing),w=re.getTickArrayStartIndex(u,e.config.tickSpacing),{publicKey:B}=Ae(y,b,A),{publicKey:L}=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,B,L,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,A,w,d,!r||r==="MintA"?a:c,!r||r==="MintA"?c:a,l==="create",r&&r==="MintA",Ee.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[A,w]})?he(y,b).publicKey:void 0):this.openPositionV2Instruction(y,n.feePayer,b,n.wallet,g,k,x,O,B,L,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,A,w,Q,r==="MintA"?a:c,r==="MintA"?c:a,l==="create",r==="MintA",Ee.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[A,w]})?he(y,b).publicKey:void 0);return{address:{nftMint:g,tickArrayLower:B,tickArrayUpper:L,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)],A=re.getTickArrayStartIndex(o,e.config.tickSpacing),w=re.getTickArrayStartIndex(u,e.config.tickSpacing),{publicKey:B}=Ae(b,g,A),{publicKey:L}=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,B,L,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,A,w,r,a,c,l==="create",d&&d==="MintA",Ee.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[A,w]})?he(b,g).publicKey:void 0):this.openPositionV2Instruction(b,n.wallet,g,n.wallet,p,k,x,O,B,L,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,A,w,r,a,c,l==="create",null,Ee.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[A,w]})?he(b,g).publicKey:void 0);return{address:{nftMint:p,tickArrayLower:B,tickArrayUpper:L,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:A}=at(d,l,n.tickLower,n.tickUpper),w=this.increaseLiquidityV2Instruction(d,o.wallet,b,g,l,A,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:A},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:A}=at(d,l,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:b,personalPosition:g,protocolPosition:A},instructions:[this.increaseLiquidityV2Instruction(d,o.wallet,b,g,l,A,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:A}=qe(l,n.nftMint),{publicKey:w}=at(l,m,n.tickLower,n.tickUpper),B=new Map;for(let S=0;S<t.rewardInfos.length;S++)B.set(t.rewardInfos[S].mint.address,o.rewardAccounts[S]);let L=[];for(let S=0;S<t.rewardInfos.length;S++){let O=t.rewardInfos[S].mint.address,M=B.get(O);M&&L.push({poolRewardVault:new N(t.rewardInfos[S].vault),ownerRewardVault:M,rewardMint:new N(O)})}let k=[],x=this.decreaseLiquidityV2Instruction(l,o.wallet,g,A,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),L,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:A,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(),A=[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:A,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(),A=[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:A,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=In(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=In(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 A=xn.generate();d.push(A),l=A.publicKey}let m=a?H(u,r,fe).publicKey:H(u,r,ee).publicKey,{publicKey:f}=qe(n,r),p=To(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:ho,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}],A=C([le("withMetadata")]),w=Buffer.alloc(A.span);A.encode({withMetadata:b},w);let B=Buffer.from([...pr,...w]);return new me({keys:g,programId:e,data:B})}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:ko(e,a).publicKey,isSigner:!1,isWritable:!0},{pubkey:ee,isSigner:!1,isWritable:!1},{pubkey:tt.programId,isSigner:!1,isWritable:!1}];return new me({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:ko(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 me({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:A,mintA:w,mintB:B,rewardAccounts:L,exTickArrayBitmap:k}){let x=[...k?[{pubkey:k,isSigner:!1,isWritable:!0}]:[],...L.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:A,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:B,isSigner:!1,isWritable:!1},...x];return new me({keys:S,programId:e,data:Buffer.from(fr)})}};import{PublicKey as xo}from"@solana/web3.js";var Bo=C([R("instruction")]),Fs=C([R("instruction")]),vs=C([s("rewardState"),s("rewardOpenTime"),s("rewardEndTime"),s("rewardLastUpdateTime"),s("totalReward"),s("totalRewardEmissioned"),s("rewardClaimed"),s("rewardPerSecond"),E("accRewardPerShare"),P("rewardVault"),P("rewardMint"),P("rewardSender"),s("rewardType"),F(s(),15,"padding")]),_s=C([s("state"),s("nonce"),P("lpVault"),P("rewardVault"),P(),P(),s(),s(),s("totalReward"),E("perShareReward"),s("lastSlot"),s("perSlotReward")]),Vs=C([s("state"),s("nonce"),P("lpVault"),P("rewardVaultA"),s("totalRewardA"),E("perShareRewardA"),s("perSlotRewardA"),R("option"),P("rewardVaultB"),G(7),s("totalRewardB"),E("perShareRewardB"),s("perSlotRewardB"),s("lastSlot"),P()]),Es=C([s(),s("state"),s("nonce"),s("validRewardTokenNum"),E("rewardMultiplier"),s("rewardPeriodMax"),s("rewardPeriodMin"),s("rewardPeriodExtend"),P("lpMint"),P("lpVault"),F(vs,5,"rewardInfos"),P("creator"),P(),F(s(),32,"padding")]),Ds=new Proxy(_s,{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)}}),Ws=new Proxy(Vs,{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(Es,{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)}}),qs=C([s("isSet"),s("rewardPerSecond"),s("rewardOpenTime"),s("rewardEndTime"),s("rewardType")]),Us=C([R("instruction"),s("nonce"),F(qs,5,"rewardTimeInfo")]),Gs=C([R("instruction"),s("rewardReopenTime"),s("rewardEndTime"),s("rewardPerSecond")]),zs=C([R("instruction"),s("isSet"),s("rewardPerSecond"),s("rewardOpenTime"),s("rewardEndTime"),s("rewardType")]),iP=C([s("state"),P("id"),P("owner"),s("deposited"),F(s(),1,"rewardDebts")]),Io=C([s("state"),P("id"),P("owner"),s("deposited"),F(E(),1,"rewardDebts"),s(""),s("voteLockedBalance"),F(s(),15)]),rP=C([s("state"),P("id"),P("owner"),s("deposited"),F(s(),2,"rewardDebts")]),Pr=C([s("state"),P("id"),P("owner"),s("deposited"),F(E(),2,"rewardDebts"),F(s(),17)]),Ar=C([s(),s("state"),P("id"),P("owner"),s("deposited"),F(E(),5,"rewardDebts"),F(s(),16)]),Rt=C([R("instruction"),s("amount")]),Xs=C([P("mint"),P("grantAuthority"),s("baselineVoteWeightScaledFactor"),s("maxExtraLockupVoteWeightScaledFactor"),s("lockupSaturationSecs"),Oi("digitShift"),F(R(),7,"reserved1"),F(s(),7,"reserved2")]),Ys=C([G(8),P("governanceProgramId"),P("realm"),P("realmGoverningTokenMint"),P("realmAuthority"),F(R(),32,"reserved1"),F(Xs,4,"votingMints"),Ut("timeOffset"),R("bump"),F(R(),7,"reserved2"),F(s(),11,"reserved3")]),Hs=C([Ut("startTime"),Ut("endTime"),R("kind"),F(R(),15,"reserved")]),Qs=C([F(Hs,1,"lockup"),s("amountDeposited_native"),s("amountInitiallyLockedNative"),le("isUsed"),le("allowClawback"),R("votingMintConfigIdx"),F(R(),29,"reserved")]),Zs=C([G(8),P("voterAuthority"),P("registrar"),F(Qs,32,"deposits"),R("voterBump"),R("voterWweightRecordBump"),F(R(),94,"reserved")]);import{NATIVE_MINT as fP}from"@solana/spl-token";var yP=Y("Raydium_farm_config"),$s=new xo("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),js=new xo("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var bP=new xo("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var So={3:Io,5:Pr,6:Ar};var an={"Standard SPL":0,"Option tokens":1},Kn={[Fi.toString()]:3,[vi.toString()]:4,[_i.toString()]:5,[mo.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 iu,SYSVAR_CLOCK_PUBKEY as wr,SYSVAR_RENT_PUBKEY as ru,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 Co}from"@solana/spl-token";import CP from"bn.js";import{PublicKey as Js}from"@solana/web3.js";import eu from"bn.js";function tu(i){return typeof i=="object"&&i!==null&&![pe,Ke,Js,j,eu,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)):tu(i)?Object.fromEntries(Object.entries(i).map(([e,t])=>[e,ct(t)])):i}var ou=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 Ko(i){let e=So[i];return e||ou.logWithError("invalid version",i),e}var au=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 Ro(i){let{version:e,id:t,ledger:n,programId:o,owner:u}=i,r={3:9,5:10}[e];r||au.logWithError(`invalid farm pool version: ${e}`);let a=Buffer.alloc(Bo.span);Bo.encode({instruction:r},a);let c=[I({pubkey:t}),I({pubkey:n}),I({pubkey:u,isWritable:!1}),I({pubkey:iu.programId,isWritable:!1}),I({pubkey:ru,isWritable:!1})];return{instruction:new Cn({programId:o,keys:c,data:a}),instructionType:_.FarmV3CreateLedger}}function Lo(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:$(r)},l);let m=[I({pubkey:Co,isWritable:!1}),I({pubkey:c}),I({pubkey:new Ce(t.authority),isWritable:!1}),I({pubkey:new Ce(t.lpVault)}),I({pubkey:d}),I({pubkey:u,isWritable:!1,isSigner:!0}),I({pubkey:n})];for(let f=0;f<t.rewardInfos.length;f++)m.push(I({pubkey:new Ce(t.rewardInfos[f].vault)})),m.push(I({pubkey:o[f]}));return new Cn({programId:a,keys:m,data:l})}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:5}),m=Buffer.alloc(Rt.span);Rt.encode({instruction:12,amount:$(r)},m);let f=[I({pubkey:d}),I({pubkey:new Ce(t.authority),isWritable:!1}),I({pubkey:l}),I({pubkey:u,isWritable:!1,isSigner:!0}),I({pubkey:n}),I({pubkey:new Ce(t.lpVault)}),I({pubkey:o[0]}),I({pubkey:new Ce(t.rewardInfos[0].vault)}),I({pubkey:wr,isWritable:!1}),I({pubkey:Co,isWritable:!1})];for(let p=1;p<t.rewardInfos.length;p++)f.push(I({pubkey:o[p]})),f.push(I({pubkey:new Ce(t.rewardInfos[p].vault)}));if(a)for(let p of a)f.push(I({pubkey:p}));return new Cn({programId:c,keys:f,data:m})}function No(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:$(r)},m);let f=[I({pubkey:d}),I({pubkey:new Ce(t.authority),isWritable:!1}),I({pubkey:l}),I({pubkey:u,isWritable:!1,isSigner:!0}),I({pubkey:n}),I({pubkey:new Ce(t.lpVault)}),I({pubkey:o[0]}),I({pubkey:new Ce(t.rewardInfos[0].vault)}),I({pubkey:wr,isWritable:!1}),I({pubkey:Co,isWritable:!1})];if(a)for(let p of a)f.push(I({pubkey:p}));return new Cn({programId:c,keys:f,data:m})}import ew from"bn.js";import{PublicKey as Kk}from"@solana/web3.js";import{AccountLayout as Rk,NATIVE_MINT as Lk,TOKEN_2022_PROGRAM_ID as Ok,TOKEN_PROGRAM_ID as Nk,createAssociatedTokenAccountIdempotentInstruction as Mk}from"@solana/spl-token";import Aw from"bn.js";import su from"bn.js";var rw=new su(0);import mw from"bn.js";import uu from"bn.js";var et=new uu(1e6);import qk from"bn.js";import Gk from"decimal.js";import{PublicKey as Gw,TransactionInstruction as zw,Keypair as Yw,SystemProgram as Hw}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Zw,TOKEN_2022_PROGRAM_ID as $w,TOKEN_PROGRAM_ID as jw}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"),_w=Buffer.from("creator_fee_share","utf8");var Vw=Buffer.from("locked_liquidity","utf8");var rk=Y("Raydium_cpmm"),ak={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 mu=C([G(8),R("bump"),le("disableCreatePool"),ce("index"),s("tradeFeeRate"),s("protocolFeeRate"),s("fundFeeRate"),s("createPoolFee"),P("protocolOwner"),P("fundOwner"),s("creatorFeeRate"),s("creatorFeeShareRate"),F(s(),14)]),kr=C([G(8),P("configId"),P("poolCreator"),P("vaultA"),P("vaultB"),P("mintLp"),P("mintA"),P("mintB"),P("mintProgramA"),P("mintProgramB"),P("observationId"),R("bump"),R("status"),R("lpDecimals"),R("mintDecimalA"),R("mintDecimalB"),s("lpAmount"),s("protocolFeesMintA"),s("protocolFeesMintB"),s("fundFeesMintA"),s("fundFeesMintB"),s("openTime"),s("epoch"),R("feeOn"),le("enableCreatorFee"),F(R(),6),s("creatorFeesMintA"),s("creatorFeesMintB"),F(s(),28)]),ck=C([G(8),P("configId"),F(s(),30)]),lk=C([G(8),R("bump"),P("creator"),P("ammConfig"),s("shareRate"),F(s(),8)]);import{PublicKey as DS,SystemProgram as WS}from"@solana/web3.js";import{createTransferInstruction as US,TOKEN_PROGRAM_ID as GS,TOKEN_2022_PROGRAM_ID as zS,createAssociatedTokenAccountIdempotentInstruction as XS,createSyncNativeInstruction as HS,createTransferCheckedInstruction as QS}from"@solana/spl-token";import tc from"bn.js";import jS from"decimal.js";import hr from"bn.js";var Mo=new hr(25),Rn=new hr(1e4);var Br=new Set(["5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1","3uaZBfHPfmpAHW7dsimC1SnyR61X4bJqQZKWmRSCXJxv","GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"]);var Fo=C([R("instruction"),s("amountIn"),s("minAmountOut")]),vo=C([R("instruction"),s("maxAmountIn"),s("amountOut")]),LT=C([R("instruction"),R("nonce")]),fu=C([R("instruction"),R("nonce"),s("startTime")]),_o=C([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"),P("baseVault"),P("quoteVault"),P("baseMint"),P("quoteMint"),P("lpMint"),P("openOrders"),P("marketId"),P("marketProgramId"),P("targetOrders"),P("withdrawQueue"),P("lpVault"),P("owner"),s("lpReserve"),F(s(),3,"padding")]),OT=C([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"),P("baseVault"),P("quoteVault"),P("baseMint"),P("quoteMint"),P("lpMint"),P("modelDataAccount"),P("openOrders"),P("marketId"),P("marketProgramId"),P("targetOrders"),P("owner"),F(s(),64,"padding")]),Vo=C([R("instruction"),s("baseAmountIn"),s("quoteAmountIn"),s("fixedSide"),s("otherAmountMin")]),Eo=C([R("instruction"),s("lpAmount"),s("baseAmountMin"),s("quoteAmountMin")]);var Ir=C([s("fee")]);import{PublicKey as gu}from"@solana/web3.js";import Ln from"decimal.js";import{TOKEN_PROGRAM_ID as Pu}from"@solana/spl-token";import{PublicKey as yu}from"@solana/web3.js";var bu=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=yu.createProgramAddressSync(u,i)}catch(u){if(u instanceof TypeError)throw u;n++;continue}return{publicKey:o,nonce:n}}throw bu.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 Au({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 Wo({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=Au({programId:a,marketId:t}),A=Ot({name:"target_associated_seed",programId:a,marketId:t}),w=Ot({name:"withdraw_associated_seed",programId:a,marketId:t}),{publicKey:B}=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:A,withdrawQueue:w,marketVersion:e,marketProgramId:c,marketId:t,marketAuthority:B,lookupTableAccount:gu.default,configId:On({programId:a})}}var Do={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},qo=i=>{let e={},t=Pu.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:Do,week:Do,month:Do,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 wu,TOKEN_PROGRAM_ID as Nt}from"@solana/spl-token";import{PublicKey as ge,SystemProgram as ku,SYSVAR_RENT_PUBKEY as jT,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=It}=i,d=Buffer.alloc(Vo.span);Vo.encode({instruction:3,baseAmountIn:$(o),quoteAmountIn:$(u),otherAmountMin:$(a),fixedSide:r==="base"?Q:bt},d);let l=[I({pubkey:Nt,isWritable:!1}),I({pubkey:new ge(e.id)}),I({pubkey:new ge(t.authority),isWritable:!1}),I({pubkey:new ge(t.openOrders),isWritable:!1}),I({pubkey:new ge(t.targetOrders)}),I({pubkey:new ge(e.lpMint.address)}),I({pubkey:new ge(t.vault.A)}),I({pubkey:new ge(t.vault.B)})];return e.pooltype.includes("StablePool")&&l.push(I({pubkey:c})),l.push(I({pubkey:new ge(e.marketId),isWritable:!1}),I({pubkey:n.baseTokenAccount}),I({pubkey:n.quoteTokenAccount}),I({pubkey:n.lpTokenAccount}),I({pubkey:n.owner,isWritable:!1,isSigner:!0}),I({pubkey:new ge(t.marketEventQueue),isWritable:!1})),new gt({programId:new ge(e.programId),keys:l,data:d})}function Uo(i){let{poolInfo:e,poolKeys:t,userKeys:n,lpAmount:o,baseAmountMin:u,quoteAmountMin:r,modelDataPubKey:a=It}=i,c=ct(t),d=4;if(e.pooltype.includes("StablePool")&&(d=5),d===4||d===5){let l=Buffer.alloc(Eo.span);Eo.encode({instruction:4,lpAmount:$(o),baseAmountMin:$(u),quoteAmountMin:$(r)},l);let m=[I({pubkey:Nt,isWritable:!1}),I({pubkey:c.id}),I({pubkey:c.authority,isWritable:!1}),I({pubkey:c.openOrders}),I({pubkey:c.targetOrders}),I({pubkey:c.mintLp.address}),I({pubkey:c.vault.A}),I({pubkey:c.vault.B})];return d===5?m.push(I({pubkey:a})):(m.push(I({pubkey:c.id})),m.push(I({pubkey:c.id}))),m.push(I({pubkey:c.marketProgramId,isWritable:!1}),I({pubkey:c.marketId}),I({pubkey:c.marketBaseVault}),I({pubkey:c.marketQuoteVault}),I({pubkey:c.marketAuthority,isWritable:!1}),I({pubkey:n.lpTokenAccount}),I({pubkey:n.baseTokenAccount}),I({pubkey:n.quoteTokenAccount}),I({pubkey:n.owner,isWritable:!1,isSigner:!0}),I({pubkey:c.marketEventQueue}),I({pubkey:c.marketBids}),I({pubkey:c.marketAsks})),new gt({programId:c.programId,keys:m,data:l})}return new gt({programId:c.programId,keys:[]})}function Go({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:A,nonce:w,openTime:B,coinAmount:L,pcAmount:k,ammConfigId:x,feeDestinationId:S}){let O=C([R("instruction"),R("nonce"),s("openTime"),s("pcAmount"),s("coinAmount")]),M=[{pubkey:Nt,isSigner:!1,isWritable:!1},{pubkey:wu,isSigner:!1,isWritable:!1},{pubkey:ku.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:A,isSigner:!1,isWritable:!0}],K=Buffer.alloc(O.span);return O.encode({instruction:1,nonce:w,openTime:B,coinAmount:L,pcAmount:k},K),{instruction:new gt({keys:M,programId:i,data:K}),instructionType:_.AmmV4CreatePool}}function Tu({poolKeys:i,userKeys:e,amountIn:t,minAmountOut:n,modelDataPubKey:o=It},u){let r=ct(i),a=Buffer.alloc(Fo.span);Fo.encode({instruction:9,amountIn:$(t),minAmountOut:$(n)},a);let c=[I({pubkey:Nt,isWritable:!1}),I({pubkey:r.id}),I({pubkey:r.authority,isWritable:!1}),I({pubkey:r.openOrders})];return u===4&&c.push(I({pubkey:r.targetOrders})),c.push(I({pubkey:r.vault.A}),I({pubkey:r.vault.B})),u===5&&c.push(I({pubkey:o})),c.push(I({pubkey:r.marketProgramId,isWritable:!1}),I({pubkey:r.marketId}),I({pubkey:r.marketBids}),I({pubkey:r.marketAsks}),I({pubkey:r.marketEventQueue}),I({pubkey:r.marketBaseVault}),I({pubkey:r.marketQuoteVault}),I({pubkey:r.marketAuthority,isWritable:!1}),I({pubkey:e.tokenAccountIn}),I({pubkey:e.tokenAccountOut}),I({pubkey:e.owner,isWritable:!1,isSigner:!0})),new gt({programId:r.programId,keys:c,data:a})}function hu({poolKeys:i,userKeys:e,maxAmountIn:t,amountOut:n,modelDataPubKey:o=It},u){let r=ct(i),a=Buffer.alloc(vo.span);vo.encode({instruction:11,maxAmountIn:$(t),amountOut:$(n)},a);let c=[I({pubkey:Nt,isWritable:!1}),I({pubkey:r.id}),I({pubkey:r.authority,isWritable:!1}),I({pubkey:r.openOrders}),I({pubkey:r.targetOrders}),I({pubkey:r.vault.A}),I({pubkey:r.vault.B})];return u===5&&c.push(I({pubkey:o})),c.push(I({pubkey:r.marketProgramId,isWritable:!1}),I({pubkey:r.marketId}),I({pubkey:r.marketBids}),I({pubkey:r.marketAsks}),I({pubkey:r.marketEventQueue}),I({pubkey:r.marketBaseVault}),I({pubkey:r.marketQuoteVault}),I({pubkey:r.marketAuthority,isWritable:!1}),I({pubkey:e.tokenAccountIn}),I({pubkey:e.tokenAccountOut}),I({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=C([R("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 Iu(i,e,t,n,o,u,r,a,c,d){let l=C([R("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 zo(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 Iu(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 Xo(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 Tu(q(v({},a),{amountIn:o,minAmountOut:u}),t);if(r==="out")return hu(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,xu=C([s("x"),s("y"),s("price")]),Su=C([s("accountType"),s("status"),s("multiplier"),s("validDataCount"),F(xu,Ft,"DataElement")]);function Ku(i,e){return[0,Ft-2]}function Cu(i){return[0,Ft-2]}function Ru(i){return[0,Ft-2]}function Lu(i,e,t){let[n,o]=Ku(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 Yo(i,e,t){let[n,o,u]=Lu(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 Ou(i,e){let[t,n]=Cu(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 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].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]=Ou(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 Mu(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].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 Fu(i,e){let t=Rr(i,e,0,!1);return t[3]?t[0]:0}function Lr(i,e,t,n){let o=Yo(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=Yo(i,e,t),u=Mt(i,e,o),r=Mt(i,t,o),a=Mt(i,n,o),c=!1,[d,l,m,f]=Mu(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 vu(i){let e=Su.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=Fu(i,Mt(i,e,Yo(i,e,t)))/i.multiplier;return n?o:1/o}var Fn=class{constructor({connection:e,modelDataPubKey:t=It}){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=vu(e==null?void 0:e.data))}}};import{ASSOCIATED_TOKEN_PROGRAM_ID as _h,TOKEN_2022_PROGRAM_ID as Vh,TOKEN_PROGRAM_ID as Eh}from"@solana/spl-token";import{SystemProgram as Uh,TransactionInstruction as Gh}from"@solana/web3.js";import _u from"bn.js";var Th=Buffer.from("vault_auth_seed","utf8"),hh=Buffer.from("global_config","utf8"),Bh=Buffer.from("pool_vesting","utf8"),Ih=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"),Rh=Buffer.from("platform_curve_rule","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]),createPlatformVestingAccount:Buffer.from([146,71,173,69,98,19,15,106]),createPlatformAllowConfig:Buffer.from([69,71,168,7,214,250,107,102]),closePlatformAllowConfig:Buffer.from([82,205,36,216,16,6,240,215]),createPlatformCurveRule:Buffer.from([148,71,180,136,122,144,59,21]),updatePlatformCurveRule:Buffer.from([90,100,206,196,54,117,120,139]),removePlatformCurveRule:Buffer.from([236,77,154,138,32,145,127,219]),closePlatformCurveRule:Buffer.from([194,114,82,45,136,88,169,159])};var Hh=new _u("18446744073709551615");var Vu=C([s(),s("epoch"),R("curveType"),ce("index"),s("migrateFee"),s("tradeFeeRate"),s("maxShareFeeRate"),s("minSupplyA"),s("maxLockRate"),s("minSellRateA"),s("minMigrateRateA"),s("minFundRaisingB"),P("mintB"),P("protocolFeeOwner"),P("migrateFeeOwner"),P("migrateToAmmWallet"),P("migrateToCpmmWallet"),F(s(),16)]),Eu=C([s("totalLockedAmount"),s("cliffPeriod"),s("unlockPeriod"),s("startTime"),s("totalAllocatedShare")]),Du=C([s(),s("epoch"),R("bump"),R("status"),R("mintDecimalsA"),R("mintDecimalsB"),R("migrateType"),s("supply"),s("totalSellA"),s("virtualA"),s("virtualB"),s("realA"),s("realB"),s("totalFundRaisingB"),s("protocolFee"),s("platformFee"),s("migrateFee"),Eu.replicate("vestingSchedule"),P("configId"),P("platformId"),P("mintA"),P("mintB"),P("vaultA"),P("vaultB"),P("creator"),R("mintProgramFlag"),R("cpmmCreatorFeeOn"),s("platformVestingShare"),F(R(),54)]),jh=C([s(),s("epoch"),P("poolId"),P("beneficiary"),s("claimedAmount"),s("tokenShareAmount"),F(s(),8)]),Wu=C([R("migrateType"),R("migrateCpmmFeeOn"),s("supply"),s("totalSellA"),s("totalFundRaisingB"),s("totalLockedAmount"),s("cliffPeriod"),s("unlockPeriod")]),Jh=C([s("epoch"),R("index"),P("configId"),Wu.replicate("bondingCurveParam"),F(s(),50)]),Mr=C([s(),s("epoch"),P("platformClaimFeeWallet"),P("platformLockNftWallet"),s("platformScale"),s("creatorScale"),s("burnScale"),s("feeRate"),F(R(),64,"name"),F(R(),256,"web"),F(R(),256,"img"),P("cpConfigId"),s("creatorFeeRate"),P("transferFeeExtensionAuth"),P("platformVestingWallet"),s("platformVestingScale"),P("platformCpCreator"),R("restrictGlobalConfig"),R("restrictCurveParam"),P("curveRuleManager"),F(R(),78)]),qu=C([R("field"),R("op"),E("value")]),Uu=C([ce("groupId"),s("epoch"),lo(qu,"constraints")]),Gu=C([s(),R("bump"),R("version"),P("platformId"),P("configId"),s("epoch"),F(s(),8),lo(Uu,"groups")]);import{TOKEN_2022_PROGRAM_ID as nB,TOKEN_PROGRAM_ID as oB}from"@solana/spl-token";import zu from"bn.js";var yB=new zu(1e6);import AB from"bn.js";import kB from"decimal.js";import $B from"bn.js";import JB from"decimal.js";import SB from"bn.js";import CB from"decimal.js";import EB from"bn.js";import WB from"decimal.js";import _r from"bn.js";import Ho from"decimal.js";var vn=class{static _multipler(e){return new Ho(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new Ho(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 _r(o.mul(this._Q64).toFixed(0))}};vn._Q64=new Ho(new _r(1).shln(64).toString());import{NATIVE_MINT as bx,TOKEN_2022_PROGRAM_ID as gx,TOKEN_PROGRAM_ID as Px,createAssociatedTokenAccountIdempotentInstruction as wx,createSyncNativeInstruction as kx,getTransferFeeConfig as Tx,unpackMint as hx}from"@solana/spl-token";import ke from"bn.js";import{PublicKey as ju,SystemProgram as xx}from"@solana/web3.js";import Nx 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 ju("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new ke(0),cliffPeriod:new ke(0),unlockPeriod:new ke(0),startTime:new ke(0),totalAllocatedShare:new ke(0)}},Fx=new ke(1e4);var Ju={[Ei.toBase58()]:3};var ec=C([G(5),G(8),P("ownAddress"),s("vaultSignerNonce"),P("baseMint"),P("quoteMint"),P("baseVault"),s("baseDepositsTotal"),s("baseFeesAccrued"),P("quoteVault"),s("quoteDepositsTotal"),s("quoteFeesAccrued"),s("quoteDustThreshold"),P("requestQueue"),P("eventQueue"),P("bids"),P("asks"),s("baseLotSize"),s("quoteLotSize"),s("feeRateBps"),s("referrerRebatesAccrued"),G(7)]);import{PublicKey as rS}from"@solana/web3.js";var lS=Y("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as AS,TOKEN_2022_PROGRAM_ID as wS,TOKEN_PROGRAM_ID as kS}from"@solana/spl-token";import{PublicKey as hS,SystemProgram as BS,TransactionInstruction as IS}from"@solana/web3.js";import SS from"bn.js";var KK=new tc(0);import{PublicKey as nc,Transaction as Qo,TransactionInstruction as oc}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ic}from"@solana/spl-token";import Vr 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 Vr(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 A=Re.POOL_LAYOUT.decode(b.data),w=Re.OWNER_LAYOUT.decode(g.data),B=A.openTime.toNumber(),L=A.endTime.toNumber(),k=w.tokenInfo.map(O=>O.debtAmount.gt(new Vr(0))).filter(O=>!O).length!==3,x=u>B&&u<L&&A.status===1,S=k&&x;d.push({programId:t,poolId:p,ammId:A.ammId,ownerAccountId:y,snapshotLpAmount:w.lpAmount,project:Re.VERSION_PROJECT[m],openTime:B,endTime:L,canClaim:S,canClaimErrorType:k?x?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:A.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(pe.WSOL.mint),createInfo:{payer:u,amount:0},skipCloseAccount:!d.mintAddress.equals(pe.WSOL.mint),associatedOnly:d.mintAddress.equals(pe.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(pe.WSOL.mint),createInfo:{payer:u,amount:0},skipCloseAccount:!f.mintAddress.equals(pe.WSOL.mint),associatedOnly:f.mintAddress.equals(pe.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 Qo().add(...d.slice(0,o.AllTxData.instructions.length-1)),signer:c},{transaction:new Qo().add(...d.slice(o.AllTxData.instructions.length-1)),signer:[]},{transaction:new Qo().add(...o.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let o=C([]),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:ic,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 oc({keys:u,programId:e,data:a})}},Qe=Re;Qe.CLAIMED_NUM=3,Qe.POOL_LAYOUT=C([G(8),R("bump"),R("status"),s("openTime"),s("endTime"),P("ammId"),F(C([R("mintDecimals"),P("mintAddress"),P("mintVault"),s("perLpLoss"),s("totalClaimedAmount")]),Re.CLAIMED_NUM,"tokenInfo"),F(s(),10,"padding")]),Qe.OWNER_LAYOUT=C([G(8),R("bump"),R("version"),P("poolId"),P("owner"),s("lpAmount"),F(C([P("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 nc(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 nC}from"@solana/spl-token";import{PublicKey as iC}from"@solana/web3.js";import aC from"bn.js";import{SystemProgram as vt,SYSVAR_RENT_PUBKEY as ac,Transaction as Er,TransactionInstruction as sc}from"@solana/web3.js";import{createInitializeAccountInstruction as Dr,TOKEN_PROGRAM_ID as Wr}from"@solana/spl-token";function rc(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 Zo=C([G(5),rc("accountFlags"),P("ownAddress"),s("vaultSignerNonce"),P("baseMint"),P("quoteMint"),P("baseVault"),s("baseDepositsTotal"),s("baseFeesAccrued"),P("quoteVault"),s("quoteDepositsTotal"),s("quoteFeesAccrued"),s("quoteDustThreshold"),P("requestQueue"),P("eventQueue"),P("bids"),P("asks"),s("baseLotSize"),s("quoteLotSize"),s("feeRateBps"),s("referrerRebatesAccrued"),G(7)]);function uc({programId:i,marketInfo:e}){let t=C([R("version"),ae("instruction"),s("baseLotSize"),s("quoteLotSize"),ce("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:ac,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 sc({keys:n,programId:i,data:o})}async function $o({connection:i,wallet:e,marketInfo:t}){var r,a,c,d,l,m,f,p;let n=new Er,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:Wr}),vt.createAccountWithSeed({fromPubkey:e,basePubkey:e,seed:t.quoteVault.seed,newAccountPubkey:t.quoteVault.publicKey,lamports:o,space:165,programId:Wr}),Dr(t.baseVault.publicKey,t.baseMint,t.vaultOwner),Dr(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(Zo.span),space:Zo.span,programId:t.programId}));let u=new Er;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}),uc({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 AC}from"@solana/web3.js";import{getTransferFeeConfig as kC,MintLayout as TC,TOKEN_2022_PROGRAM_ID as hC,TOKEN_PROGRAM_ID as BC,unpackMint as IC}from"@solana/spl-token";var rL=new _t(2),aL=new _t(3),sL=new _t(5),Un=new _t(10),uL=new _t(100),cL=new _t(1e3),lL=new _t(1e4);function Qn(i){return Un.pow($(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 qr from"bn.js";function Ur(i,e){let{div:t,mod:n}=i.divmod(e);return n.gt(new qr(0))?t.add(new qr(1)):t}import{MINT_SIZE as WL,TOKEN_PROGRAM_ID as qL,getTransferFeeConfig as UL,unpackMint as GL}from"@solana/spl-token";var Jo=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&&Jo.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:A}=f;return p.length!==2&&p[1]!=="base64"&&Jo.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:y,lamports:b,owner:new lc(g),rentEpoch:A}}return null})))}else try{a=await Promise.all(r.map(c=>i.getMultipleAccountsInfo(c,o)))}catch(c){c instanceof Error&&Jo.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=yo(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,A=b.mul(f).quotient,w=new Ke(a,f),B=new Ke(a,g),L=new Ke(a,A);return this.logDebug("anotherAmount:",w.toFixed(),"maxAnotherAmount:",B.toFixed()),{anotherAmount:w,maxAnotherAmount:B,minAnotherAmount:L,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),[A,w]=[u.token,r.token],B=await y.getCreatedTokenAccount({mint:A.mint,associatedOnly:!1}),L=await y.getCreatedTokenAccount({mint:w.mint,associatedOnly:!1});!B&&!L&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",y.tokenAccounts);let k=await y.getCreatedTokenAccount({mint:new de(n.lpMint.address)}),x=[A,w],S=[B,L],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 de(n.lpMint.address),tokenAccount:k,bypassAssociatedCheck:b,checkCreateATAOwner:g}),{tokenAccount:Te}=Oe,$e=Se(Oe,["tokenAccount"]);return Pe.addInstruction($e),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 de(n.mintA.address),new de(n.mintB.address),new de(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:A}=this.scope,w=await A.getCreatedTokenAccount({mint:g,associatedOnly:!1});w||this.logAndCreateError("cannot found lpTokenAccount","tokenAccounts",A.tokenAccounts);let B=await A.getCreatedTokenAccount({mint:y}),L=await A.getCreatedTokenAccount({mint:b}),k=this.createTxBuilder(f),{bypassAssociatedCheck:x,checkCreateATAOwner:S}=v({bypassAssociatedCheck:!1,checkCreateATAOwner:!1},c),W=await A.handleTokenAccount({side:"out",amount:0,mint:y,tokenAccount:B,bypassAssociatedCheck:x,checkCreateATAOwner:S}),{tokenAccount:O}=W,M=Se(W,["tokenAccount"]);k.addInstruction(M);let V=await A.handleTokenAccount({side:"out",amount:0,mint:b,tokenAccount:L,bypassAssociatedCheck:x,checkCreateATAOwner:S}),{tokenAccount:K}=V,U=Se(V,["tokenAccount"]);return k.addInstruction(U),k.addInstruction({instructions:[Uo({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 A=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 B=w[t.lpMint.address];if(B===void 0)throw Error("find lp account error in trade accounts");let L=o.add(a!=null?a:new ie(0)),k=t.mintA.address===pe.WSOL.mint.toString(),x=t.mintB.address===pe.WSOL.mint.toString(),{account:S,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Pt,mint:new de(t.mintA.address),owner:this.scope.ownerPubKey,createInfo:k?{payer:this.scope.ownerPubKey}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:!0,checkCreateATAOwner:p});if(A.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 de(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(A.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 de(r.programId),poolId:new de(r.id),owner:this.scope.ownerPubKey,version:te}),Fe,Ue=await this.scope.connection.getAccountInfo(Pe);if(Ue&&(Fe=Ko(te).decode(Ue.data)),te!==6&&!Fe){let{instruction:Oe,instructionType:lt}=Ro({id:new de(r.id),programId:new de(r.programId),version:te,ledger:Pe,owner:this.scope.ownerPubKey});A.addInstruction({instructions:[Oe],instructionTypes:[lt]})}let Ze=[];for(let Oe of r.rewardInfos){let lt=Oe.mint.address===pe.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 de(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&&A.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:B,rewardAccounts:Ze},$e=Kn[r.programId],nt=$e===6?Lo(Te):$e===5?Oo(Te):No(Te),De={3:_.FarmV3Withdraw,5:_.FarmV5Withdraw,6:_.FarmV6Withdraw};A.addInstruction({instructions:[nt],instructionTypes:[De[$e]]})}let U=await this.getAmmPoolKeys(t.id),W=Uo({poolInfo:t,poolKeys:U,userKeys:{lpTokenAccount:B,baseTokenAccount:S,quoteTokenAccount:M,owner:this.scope.ownerPubKey},lpAmount:L,baseAmountMin:0,quoteAmountMin:0});A.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 A.addInstruction({instructions:[...oe.instructions],signers:oe.signers,instructionTypes:[...oe.instructionTypes],lookupTableAddress:z.lookupTableAccount?[z.lookupTableAccount]:[]}),b===0?A.sizeCheckBuildV0({computeBudgetConfig:d}):A.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:A}){var X;let w=d.feePayer||((X=this.scope.owner)==null?void 0:X.publicKey),B=d.useSOLBalance&&o.mint.equals(En),L=d.useSOLBalance&&u.mint.equals(En),k=this.createTxBuilder(A),{account:x,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({mint:o.mint,owner:this.scope.ownerPubKey,createInfo:B?{payer:w,amount:r}:void 0,notUseTokenAccount:B,skipCloseAccount:!B,associatedOnly:B?!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:L?{payer:w,amount:a}:void 0,notUseTokenAccount:L,skipCloseAccount:!L,associatedOnly:L?!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=Wo({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}=Go(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=po,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:A=.01,txVersion:w,computeBudgetConfig:B,txTipConfig:L,feePayer:k}){var ti,ni,oi;let x=this.scope.ownerPubKey,S=m.feePayer||((ti=this.scope.owner)==null?void 0:ti.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 je=new ie(0);for(;;)try{return{vaultOwner:de.createProgramAddressSync([U.publicKey.toBuffer(),je.toArrayLike(Buffer,"le",8)],n),vaultSignerNonce:je}}catch{if(je.iaddn(1),je.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)),$e=new ie(Math.round(g*10**a.decimals*A));if(Te.eq(Q))throw Error("lot size is too small");if($e.eq(Q))throw Error("tick size or lot size is too small");let nt=await $o({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:$e,lowestFeeMarket:f}}),De=this.createTxBuilder(k);De.addInstruction({instructions:nt[0].transaction.instructions,signers:nt[0].signer});for await(let je of nt.slice(1,nt.length))De.addInstruction({instructions:je.transaction.instructions,signers:je.signer,instructionTypes:je.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=Wo({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:zr,instructionType:Xr}=Go(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:[zr],instructionTypes:[Xr]});let ei=O||M?[((ni=lt==null?void 0:lt.instructions)==null?void 0:ni[0])||((oi=At==null?void 0:At.instructions)==null?void 0:oi[0])].filter(je=>!!je):void 0;return w===0?De.sizeCheckBuildV0({computeBudgetConfig:B,splitIns:ei,address:v({requestQueue:W.publicKey,eventQueue:V.publicKey,bids:X.publicKey,asks:z.publicKey,baseVault:oe.publicKey,quoteVault:te.publicKey,baseMint:new de(r.mint),quoteMint:new de(a.mint)},Dn)}):De.sizeCheckBuild({computeBudgetConfig:B,splitIns:ei,address:v({requestQueue:W.publicKey,eventQueue:V.publicKey,bids:X.publicKey,asks:z.publicKey,baseVault:oe.publicKey,quoteVault:te.publicKey,baseMint:new de(r.mint),quoteMint:new de(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 Ir.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,A]=f,w=t.version===4,B;if(w)B=new ne(b.toString()).div(10**A).div(new ne(y.toString()).div(10**g));else{let V=Nr(this.stableLayout.stableModelData,d.toNumber(),l.toNumber(),!1);p==="quote"?B=new ne(1e6).div(V*1e6):B=new ne(V*1e6).div(1e6)}let L=n,k=new ie(0),x=new ie(0);if(!L.isZero())if(w){x=Ur(L.mul(Mo),Rn);let V=L.sub(x),X=y.add(V);k=b.mul(V).div(X)}else{x=L.mul(new ie(2)).div(new ie(1e4));let V=L.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(L.sub(x).toString()).toFixed(0));!L.isZero()&&!k.isZero()&&(K=new ne(k.toString()).div(10**A).div(new ne(L.sub(x).toString()).div(10**g)));let U=B.sub(K).div(B).mul(100);return{amountOut:O,minAmountOut:M,currentPrice:B,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 A=new ie(0),w=n,B=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);A=U.mul(Rn).div(Rn.sub(Mo)),B=A.sub(U)}let L=new ie(new ne(A.toString()).mul(1+r).toFixed(0)),k=A,x=L;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;!A.isZero()&&!w.isZero()&&(S=new ne(w.toString()).div(10**m.decimals).div(new ne(A.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:B}}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||{},[A,w]=r===t.mintA.address?[t.mintA,t.mintB]:[t.mintB,t.mintA],B=b&&A.address===Ge.toBase58(),L=g&&w.address===Ge.toBase58(),{account:k,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Pt,mint:new de(A.address),owner:this.scope.ownerPubKey,createInfo:B?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!B,notUseTokenAccount:B,associatedOnly:y});p.addInstruction(x||{}),k||this.logAndCreateError("input token account not found",{token:A.symbol||A.address,tokenAccountIn:k,inputTokenUseSolBalance:B,associatedOnly:y});let{account:S,instructionParams:O}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Pt,mint:new de(w.address),owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!L,notUseTokenAccount:L,associatedOnly:L?!1:y});p.addInstruction(O||{}),S===void 0&&this.logAndCreateError("output token account not found",{token:w.symbol||w.address,tokenAccountOut:S,outputTokenUseSolBalance:L,associatedOnly:y});let M=n||await this.getAmmPoolKeys(t.id),K=4;return t.pooltype.includes("StablePool")&&(K=5),p.addInstruction({instructions:[K===4?zo({version:K,poolKeys:M,userKeys:{tokenAccountIn:k,tokenAccountOut:S,owner:this.scope.ownerPubKey},amountIn:o,amountOut:u,fixedSide:a}):Xo({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 de(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=_o.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 de(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(mc.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=qo({[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(de.default)&&!a.amount.isZero()).map(a=>a.mint),u=(await Ye(this.scope.connection,t)).map((a,c)=>a&&a.data.length===Gr.span?q(v({},Gr.decode(a.data)),{address:t[c]}):void 0).filter(Boolean).filter(a=>this.scope.cluster==="devnet"?a:Br.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