UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

2 lines 144 kB
var Li=Object.defineProperty,Oi=Object.defineProperties;var Ni=Object.getOwnPropertyDescriptors;var Vt=Object.getOwnPropertySymbols;var so=Object.prototype.hasOwnProperty,uo=Object.prototype.propertyIsEnumerable;var ao=(l,e,t)=>e in l?Li(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t,E=(l,e)=>{for(var t in e||(e={}))so.call(e,t)&&ao(l,t,e[t]);if(Vt)for(var t of Vt(e))uo.call(e,t)&&ao(l,t,e[t]);return l},q=(l,e)=>Oi(l,Ni(e));var Ve=(l,e)=>{var t={};for(var n in l)so.call(l,n)&&e.indexOf(n)<0&&(t[n]=l[n]);if(l!=null&&Vt)for(var n of Vt(l))e.indexOf(n)<0&&uo.call(l,n)&&(t[n]=l[n]);return t};import{PublicKey as Ci,SystemProgram as hR}from"@solana/web3.js";import{createTransferInstruction as BR,TOKEN_PROGRAM_ID as SR,TOKEN_2022_PROGRAM_ID as KR,createAssociatedTokenAccountIdempotentInstruction as xR,createSyncNativeInstruction as RR,createTransferCheckedInstruction as LR}from"@solana/spl-token";import Es from"bn.js";import MR from"decimal.js";import{PublicKey as vi}from"@solana/web3.js";import{get as co,set as Mi}from"lodash";var fn=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}},lo={},Fi={};function G(l){let e=co(lo,l);if(!e){let t=co(Fi,l);e=new fn({name:l,logLevel:t}),Mi(lo,l,e)}return e}import{MINT_SIZE as Zs,TOKEN_PROGRAM_ID as $s,getTransferFeeConfig as js,unpackMint as Js}from"@solana/spl-token";var yn=G("Raydium_accountInfo_util");async function ze(l,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:c=100}=E({batchRequest:!1},t),u=bn(e,c),r=new Array(u.length).fill([]);if(n){let s=u.map(P=>{let w=l._buildArgs([P.map(m=>m.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:w}}),g=bn(s,10);r=(await(await Promise.all(g.map(async P=>await l._rpcBatchRequest(P)))).flat()).map(P=>(P.error&&yn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${P.error.message}`),P.result.value.map(w=>{if(w){let{data:m,executable:y,lamports:d,owner:a,rentEpoch:b}=w;return m.length!==2&&m[1]!=="base64"&&yn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(m[0],"base64"),executable:y,lamports:d,owner:new vi(a),rentEpoch:b}}return null})))}else try{r=await Promise.all(u.map(s=>l.getMultipleAccountsInfo(s,i)))}catch(s){s instanceof Error&&yn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${s.message}`)}return r.flat()}import ut from"bn.js";import kC from"decimal.js";import Gi from"big.js";import Wt from"bn.js";import _i from"toformat";var Vi=_i,Tt=Vi;import Dt from"big.js";import Di from"bn.js";import Wi from"decimal.js-light";import ht from"bn.js";var mo=9007199254740991;function te(l){let e=G("Raydium_parseBigNumberish");if(l instanceof ht)return l;if(typeof l=="string"){if(l.match(/^-?[0-9]+$/))return new ht(l);e.logWithError(`invalid BigNumberish string: ${l}`)}return typeof l=="number"?(l%1&&e.logWithError(`BigNumberish number underflow: ${l}`),(l>=mo||l<=-mo)&&e.logWithError(`BigNumberish number overflow: ${l}`),new ht(String(l))):typeof l=="bigint"?new ht(l.toString()):(e.error(`invalid BigNumberish value: ${l}`),new ht(0))}var Et=G("module/fraction"),gn=Tt(Dt),It=Tt(Wi),qi={[0]:It.ROUND_DOWN,[1]:It.ROUND_HALF_UP,[2]:It.ROUND_UP},Ui={[0]:Dt.roundDown,[1]:Dt.roundHalfUp,[2]:Dt.roundUp},H=class{constructor(e,t=new Di(1)){this.numerator=te(e),this.denominator=te(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new H(this.denominator,this.numerator)}add(e){let t=e instanceof H?e:new H(te(e));return this.denominator.eq(t.denominator)?new H(this.numerator.add(t.numerator),this.denominator):new H(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof H?e:new H(te(e));return this.denominator.eq(t.denominator)?new H(this.numerator.sub(t.numerator),this.denominator):new H(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof H?e:new H(te(e));return new H(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof H?e:new H(te(e));return new H(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Et.logWithError(`${e} is not an integer.`),e<=0&&Et.logWithError(`${e} is not positive.`),It.set({precision:e+1,rounding:qi[n]});let i=new It(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Et.logWithError(`${e} is not an integer.`),e<0&&Et.logWithError(`${e} is negative.`),gn.DP=e,gn.RM=Ui[n]||1,new gn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var zi=G("Raydium_amount"),po=Tt(Gi);function Xi(l,e){let t="0",n="0";if(l.includes(".")){let i=l.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):zi.logWithError(`invalid number string, num: ${l}`)}else t=l;return[t,n.slice(0,e)||n]}var Ke=class extends H{constructor(t,n,i=!0,c){let u=new Wt(0),r=Pn.pow(new Wt(t.decimals));if(i)u=te(n);else{let s=new Wt(0),g=new Wt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[p,P]=Xi(n.toString(),t.decimals);s=te(p),g=te(P)}s=s.mul(r),u=s.add(g)}super(u,r);this.logger=G(c||"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,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return po.DP=this.token.decimals,new po(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Yi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as fo}from"@solana/spl-token";var qt={chainId:101,address:Yi.default.toBase58(),programId:fo.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Ee={chainId:101,address:"So11111111111111111111111111111111111111112",programId:fo.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 wn}from"@solana/web3.js";import{PublicKey as ne,SystemProgram as yo,SYSVAR_RENT_PUBKEY as Hi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Qi}from"@solana/spl-token";function f({pubkey:l,isSigner:e=!1,isWritable:t=!0}){return{pubkey:l,isWritable:t,isSigner:e}}var Zi=[f({pubkey:Qi,isWritable:!1}),f({pubkey:yo.programId,isWritable:!1}),f({pubkey:Hi,isWritable:!1})];function bo({publicKey:l,transformSol:e}){let t=An(l.toString());if(t instanceof ne)return e&&t.equals(nt)?Xe:t;if(e&&t.toString()===nt.toBase58())return Xe;if(typeof t=="string"){if(t===ne.default.toBase58())return ne.default;try{return new ne(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function An(l){try{return new ne(l)}catch{return l}}var Oe=new ne("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Re=new ne("SysvarRent111111111111111111111111111111111"),Lu=new ne("SysvarC1ock11111111111111111111111111111111"),je=new ne("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),$i=new ne("Sysvar1nstructions1111111111111111111111111"),ji=yo.programId,Ou=new ne("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Nu=new ne("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Mu=new ne("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Fu=new ne("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),vu=new ne("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),_u=new ne("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Vu=new ne("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Eu=new ne("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Du=new ne("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Wu=new ne("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),qu=new ne("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Xe=new ne("So11111111111111111111111111111111111111112"),nt=ne.default;var kn=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:c=!1,isToken2022:u=!1}){if(e===nt.toBase58()||e instanceof wn&&nt.equals(e)){this.decimals=Ee.decimals,this.symbol=Ee.symbol,this.name=Ee.name,this.mint=new wn(Ee.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=c?wn.default:bo({publicKey:e}),this.isToken2022=u}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Pe=kn;Pe.WSOL=new kn(q(E({},Ee),{mint:Ee.address}));var Tn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Ut=Tn;Ut.SOL=new Tn(qt);import Ji from"bn.js";var go=new H(new Ji(100)),Ye=class extends H{toSignificant(e=5,t,n){return this.mul(go).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(go).toFixed(e,t,n)}};var er=G("Raydium_price"),Ne=class extends H{constructor(t){let{baseToken:n,quoteToken:i,numerator:c,denominator:u}=t;super(c,u);this.baseToken=n,this.quoteToken=i,this.scalar=new H(hn(n.decimals),hn(i.decimals))}get raw(){return new H(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ne({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&er.logWithError("mul token not equals");let n=super.mul(t);return new Ne({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};import{merge as PK}from"lodash";import dc from"axios";var Po={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"},tr=q(E({},Po),{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 Fc=G("Raydium_Api");import{PublicKey as ed,SystemProgram as td}from"@solana/web3.js";import{AccountLayout as ad,createAssociatedTokenAccountIdempotentInstruction as sd,TOKEN_PROGRAM_ID as ud,TOKEN_2022_PROGRAM_ID as cd}from"@solana/spl-token";import{PublicKey as ft,sendAndConfirmTransaction as Cn,SystemProgram as sr,Transaction as Kt,TransactionMessage as xt,VersionedTransaction as Ct}from"@solana/web3.js";import ur from"axios";import{PublicKey as In,AddressLookupTableAccount as dt}from"@solana/web3.js";async function Bn({connection:l,address:e,cluster:t="mainnet"}){let n=await ze(l,[...new Set(e.map(c=>c.toString()))].map(c=>new In(c))),i={};for(let c=0;c<e.length;c++){let u=n[c],r=e[c];if(!u)continue;let s=new dt({key:r,state:dt.deserialize(u.data)});i[r.toString()]=s,t==="devnet"?mt[r.toString()]=s:lt[r.toString()]=s}return i}var lt={},Sn=async l=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(lt[e])return lt;let t=new In(e),n=await l.getAccountInfo(t);return n&&(lt[e]=new dt({key:t,state:dt.deserialize(n.data)})),lt},mt={},Kn=async l=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(mt[e])return mt;let t=new In(e),n=await l.getAccountInfo(t);return n&&(mt[e]=new dt({key:t,state:dt.deserialize(n.data)})),mt};var D={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 Ao,Keypair as ko,PublicKey as nr,Transaction as To,TransactionMessage as or,VersionedTransaction as ho}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ir}from"@solana/spl-token";var wo=G("Raydium_txUtil"),Io=1644;function Gt(l){let e=[],t=[];return l.microLamports&&(e.push(Ao.setComputeUnitPrice({microLamports:l.microLamports})),t.push(D.SetComputeUnitPrice)),l.units&&(e.push(Ao.setComputeUnitLimit({units:l.units})),t.push(D.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function pt(l,e){var n,i;let t=e!=null?e:"confirmed";return(i=await((n=l.getLatestBlockhash)==null?void 0:n.call(l,{commitment:t})))==null?void 0:i.blockhash}async function zt(l,e){return l.getSignatureStatuses([e]),new Promise((t,n)=>{let i=setTimeout(n,6e4);l.onSignature(e,c=>{if(clearTimeout(i),!c.err){t("");return}n(Object.assign(c.err,{txId:e}))},"confirmed")})}function xn(l,e){l.length<1&&wo.logWithError(`no instructions provided: ${l.toString()}`),e.length<1&&wo.logWithError(`no signers provided:, ${e.toString()}`);let t=new To;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...l);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Io}catch{return!1}}function J(l,e){let[t,n]=nr.findProgramAddressSync(l,e);return{publicKey:t,nonce:n}}function Bt({instructions:l,payer:e,signers:t}){return xn(l,[e,...t])}function St({instructions:l,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=ko.generate().publicKey.toString()}){let c=new or({payerKey:e,recentBlockhash:n,instructions:l}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new ho(c).serialize()).toString("base64").length<Io}catch{return!1}}var rr=l=>Buffer.isBuffer(l)?l:l instanceof Uint8Array?Buffer.from(l.buffer,l.byteOffset,l.byteLength):Buffer.from(l),ar=l=>{let e=l.serialize({requireAllSignatures:!1,verifySignatures:!1});l instanceof ho&&(e=rr(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function ot(l){let e=[];return l.forEach(t=>{t instanceof To&&(t.recentBlockhash||(t.recentBlockhash=ir.toBase58()),t.feePayer||(t.feePayer=ko.generate().publicKey)),e.push(ar(t))}),console.log("simulate tx string:",e),e}var Xt=2e3,Yt=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 ur.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}=Gt(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(sr.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new ft(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(D.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:i=[],endInstructionTypes:c=[],lookupTableAddress:u=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...c),this.lookupTableAddress.push(...u.filter(r=>r!==ft.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:n}){return e===0?await this.buildV0(q(E({},t||{}),{lookupTableAddress:n})):this.build(t)}build(e){var n;let t=new Kt;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(i=>i.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async i=>{var p;let{recentBlockHash:c,skipPreflight:u=!0,sendAndConfirm:r,notSendToRpc:s}=i||{},g=c!=null?c:await pt(this.connection,this.blockhashCommitment);if(t.recentBlockhash=g,this.signers.length&&t.sign(...this.signers),ot([t]),(p=this.owner)!=null&&p.isKeyPair)return{txId:r?await Cn(this.connection,t,this.signers.find(w=>w.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:u}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:u}),signedTx:t};if(this.signAllTransactions){let P=await this.signAllTransactions([t]);if(this.signers.length)for(let w of P)try{w.sign(...this.signers)}catch{}return{txId:s?"":await this.connection.sendRawTransaction(P[0].serialize(),{skipPreflight:u}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var g;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),c=t.filter(p=>p.transaction.instructions.length>0),u=[i,...c.map(p=>p.transaction)],r=[this.signers,...c.map(p=>p.signers)],s=[...this.instructionTypes,...c.map(p=>p.instructionTypes).flat()];return(g=this.owner)!=null&&g.signer&&r.forEach(p=>{p.some(P=>P.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:u,signers:r,instructionTypes:s,execute:async p=>{var b;let{sequentially:P,onTxUpdate:w,skipTxCount:m=0,recentBlockHash:y,skipPreflight:d=!0}=p||{},a=y!=null?y:await pt(this.connection,this.blockhashCommitment);if((b=this.owner)!=null&&b.isKeyPair){if(P){let I=[],O=0;for(let F of u){if(++O,O<=m)continue;let x=await Cn(this.connection,F,this.signers.find(N=>N.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:d});I.push(x)}return{txIds:I,signedTxs:u}}return{txIds:await await Promise.all(u.map(async I=>(I.recentBlockhash=a,await this.connection.sendRawTransaction(I.serialize(),{skipPreflight:d})))),signedTxs:u}}if(this.signAllTransactions){let I=u.map((F,x)=>(F.recentBlockhash=a,r[x].length&&F.sign(...r[x]),F));ot(I);let O=await this.signAllTransactions(I);if(P){let F=0,x=[],N=async()=>{if(!O[F])return;let C=await this.connection.sendRawTransaction(O[F].serialize(),{skipPreflight:d});x.push({txId:C,status:"sent",signedTx:O[F]}),w==null||w([...x]),F++;let L=!1,v=null,K=null,Y=Q=>{v!==null&&clearInterval(v),K!==null&&this.connection.removeSignatureListener(K);let U=x.findIndex(re=>re.txId===C);if(U>-1){if(x[U].status==="error"||x[U].status==="success")return;x[U].status=Q.err?"error":"success"}w==null||w([...x]),Q.err||N()};this.loopMultiTxStatus&&(v=setInterval(async()=>{var Q;if(L){clearInterval(v);return}try{let U=await this.connection.getTransaction(C,{commitment:"confirmed",maxSupportedTransactionVersion:1});U&&(L=!0,clearInterval(v),Y({err:((Q=U.meta)==null?void 0:Q.err)||null}),console.log("tx status from getTransaction:",C))}catch(U){L=!0,clearInterval(v),console.error("getTransaction timeout:",U,C)}},Xt)),K=this.connection.onSignature(C,Q=>{if(L){this.connection.removeSignatureListener(K);return}L=!0,Y(Q)},"confirmed"),this.connection.getSignatureStatus(C)};return await N(),{txIds:x.map(C=>C.txId),signedTxs:O}}else{let F=[];for(let x=0;x<O.length;x+=1){let N=await this.connection.sendRawTransaction(O[x].serialize(),{skipPreflight:d});F.push(N)}return{txIds:F,signedTxs:O}}}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 d;let y=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i,recentBlockhash:c}=y,u=Ve(y,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),r=E(E({},this.cluster==="devnet"?await Kn(this.connection):await Sn(this.connection)),t),s=Array.from(new Set([...n,...this.lookupTableAddress])),g=[];for(let a of s)r[a]===void 0&&g.push(new ft(a));let p=await Bn({connection:this.connection,address:g});for(let[a,b]of Object.entries(p))r[a]=b;let P=i?ft.default.toBase58():c!=null?c:await pt(this.connection,this.blockhashCommitment),w=new xt({payerKey:this.feePayer,recentBlockhash:P,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(r));((d=this.owner)==null?void 0:d.signer)&&!this.signers.some(a=>a.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let m=new Ct(w);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async a=>{var F;let{skipPreflight:b=!0,sendAndConfirm:I,notSendToRpc:O}=a||{};if(ot([m]),(F=this.owner)!=null&&F.isKeyPair){let x=await this.connection.sendTransaction(m,{skipPreflight:b});return I&&await zt(this.connection,x),{txId:x,signedTx:m}}if(this.signAllTransactions){let x=await this.signAllTransactions([m]);if(this.signers.length)for(let N of x)try{N.sign(this.signers)}catch{}return{txId:O?"":await this.connection.sendTransaction(x[0],{skipPreflight:b}),signedTx:x[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:u||{}}}async buildV0MultiTx(e){var g;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),c=t.filter(p=>p.builder.instructions.length>0),u=[i,...c.map(p=>p.transaction)],r=[this.signers,...c.map(p=>p.signers)],s=[...this.instructionTypes,...c.map(p=>p.instructionTypes).flat()];return(g=this.owner)!=null&&g.signer&&r.forEach(p=>{p.some(P=>P.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),u.forEach(async(p,P)=>{p.sign(r[P])}),{builder:this,transactions:u,signers:r,instructionTypes:s,buildProps:n,execute:async p=>{var d;let{sequentially:P,onTxUpdate:w,recentBlockHash:m,skipPreflight:y=!0}=p||{};if(m&&u.forEach(a=>a.message.recentBlockhash=m),ot(u),(d=this.owner)!=null&&d.isKeyPair){if(P){let a=[];for(let b of u){let I=await this.connection.sendTransaction(b,{skipPreflight:y});await zt(this.connection,I),a.push(I)}return{txIds:a,signedTxs:u}}return{txIds:await Promise.all(u.map(async a=>await this.connection.sendTransaction(a,{skipPreflight:y}))),signedTxs:u}}if(this.signAllTransactions){let a=await this.signAllTransactions(u);if(P){let b=0,I=[],O=async()=>{if(!a[b])return;let F=await this.connection.sendTransaction(a[b],{skipPreflight:y});I.push({txId:F,status:"sent",signedTx:a[b]}),w==null||w([...I]),b++;let x=!1,N=null,C=null,L=v=>{N!==null&&clearInterval(N),C!==null&&this.connection.removeSignatureListener(C);let K=I.findIndex(Y=>Y.txId===F);if(K>-1){if(I[K].status==="error"||I[K].status==="success")return;I[K].status=v.err?"error":"success"}w==null||w([...I]),v.err||O()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var v;if(x){clearInterval(N);return}try{let K=await this.connection.getTransaction(F,{commitment:"confirmed",maxSupportedTransactionVersion:1});K&&(x=!0,clearInterval(N),L({err:((v=K.meta)==null?void 0:v.err)||null}),console.log("tx status from getTransaction:",F))}catch(K){x=!0,clearInterval(N),console.error("getTransaction timeout:",K,F)}},Xt)),C=this.connection.onSignature(F,v=>{if(x){this.connection.removeSignatureListener(C);return}x=!0,L(v)},"confirmed"),this.connection.getSignatureStatus(F)};return O(),{txIds:[],signedTxs:a}}else{let b=[];for(let I=0;I<a.length;I+=1){let O=await this.connection.sendTransaction(a[I],{skipPreflight:y});b.push(O)}return{txIds:b,signedTxs:a}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var w;let P=e||{},{splitIns:t=[],computeBudgetConfig:n}=P,i=Ve(P,["splitIns","computeBudgetConfig"]),c=n?Gt(n):{instructions:[],instructionTypes:[]},u=this.signers.reduce((m,y)=>q(E({},m),{[y.publicKey.toBase58()]:y}),{}),r=[],s=[],g=[],p=0;if(this.allInstructions.forEach(m=>{let y=[...g,m],d=n?[...c.instructions,...y]:y,b=[...new Set(y.map(I=>I.keys.filter(O=>O.isSigner).map(O=>O.pubkey.toString())).flat()).values()].map(I=>new ft(I));if(m!==t[p]&&g.length<12&&(Bt({instructions:d,payer:this.feePayer,signers:b})||Bt({instructions:y,payer:this.feePayer,signers:b})))g.push(m);else{if(g.length===0)throw Error("item ins too big");p+=m===t[p]?1:0,Bt({instructions:n?[...c.instructions,...g]:[...g],payer:this.feePayer,signers:b})?r.push(new Kt().add(...c.instructions,...g)):r.push(new Kt().add(...g)),s.push(Array.from(new Set(g.map(I=>I.keys.filter(O=>O.isSigner).map(O=>O.pubkey.toString())).flat())).map(I=>u[I]).filter(I=>I!==void 0)),g=[m]}}),g.length>0){let y=[...new Set(g.map(d=>d.keys.filter(a=>a.isSigner).map(a=>a.pubkey.toString())).flat()).values()].map(d=>u[d]).filter(d=>d!==void 0);Bt({instructions:n?[...c.instructions,...g]:[...g],payer:this.feePayer,signers:y.map(d=>d.publicKey)})?r.push(new Kt().add(...c.instructions,...g)):r.push(new Kt().add(...g)),s.push(y)}return r.forEach(m=>m.feePayer=this.feePayer),(w=this.owner)!=null&&w.signer&&s.forEach(m=>{m.some(y=>y.publicKey.equals(this.owner.publicKey))||m.push(this.owner.signer)}),{builder:this,transactions:r,signers:s,instructionTypes:this.instructionTypes,execute:async m=>{var F;let{sequentially:y,onTxUpdate:d,skipTxCount:a=0,recentBlockHash:b,skipPreflight:I=!0}=m||{},O=b!=null?b:await pt(this.connection,this.blockhashCommitment);if(r.forEach(async(x,N)=>{x.recentBlockhash=O,s[N].length&&x.sign(...s[N])}),ot(r),(F=this.owner)!=null&&F.isKeyPair){if(y){let x=0,N=[];for(let C of r){if(++x,x<=a){N.push("tx skipped");continue}let L=await Cn(this.connection,C,this.signers.find(v=>v.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:I});N.push(L)}return{txIds:N,signedTxs:r}}return{txIds:await Promise.all(r.map(async x=>await this.connection.sendRawTransaction(x.serialize(),{skipPreflight:I}))),signedTxs:r}}if(this.signAllTransactions){let x=await this.signAllTransactions(r.slice(a,r.length)),N=[...r.slice(0,a),...x];if(y){let C=0,L=[],v=async()=>{if(!N[C])return;C<a&&(L.push({txId:"",status:"success",signedTx:N[C]}),d==null||d([...L]),C++,v());let K=await this.connection.sendRawTransaction(N[C].serialize(),{skipPreflight:I});L.push({txId:K,status:"sent",signedTx:N[C]}),d==null||d([...L]),C++;let Y=!1,Q=null,U=null,re=j=>{Q!==null&&clearInterval(Q),U!==null&&this.connection.removeSignatureListener(U);let we=L.findIndex(Ue=>Ue.txId===K);if(we>-1){if(L[we].status==="error"||L[we].status==="success")return;L[we].status=j.err?"error":"success"}d==null||d([...L]),j.err||v()};this.loopMultiTxStatus&&(Q=setInterval(async()=>{var j;if(Y){clearInterval(Q);return}try{let we=await this.connection.getTransaction(K,{commitment:"confirmed",maxSupportedTransactionVersion:1});we&&(Y=!0,clearInterval(Q),re({err:((j=we.meta)==null?void 0:j.err)||null}),console.log("tx status from getTransaction:",K))}catch(we){Y=!0,clearInterval(Q),console.error("getTransaction timeout:",we,K)}},Xt)),U=this.connection.onSignature(K,j=>{if(Y){this.connection.removeSignatureListener(U);return}Y=!0,re(j)},"confirmed"),this.connection.getSignatureStatus(K)};return await v(),{txIds:L.map(K=>K.txId),signedTxs:N}}else{let C=[];for(let L=0;L<N.length;L+=1){let v=await this.connection.sendRawTransaction(N[L].serialize(),{skipPreflight:I});C.push(v)}return{txIds:C,signedTxs:N}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var F;let O=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:i={},lookupTableAddress:c=[],insCountLimit:u=12}=O,r=Ve(O,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),s=E(E({},this.cluster==="devnet"?await Kn(this.connection):await Sn(this.connection)),i),g=Array.from(new Set([...this.lookupTableAddress,...c])),p=[];for(let x of g)s[x]===void 0&&p.push(new ft(x));let P=await Bn({connection:this.connection,address:p});for(let[x,N]of Object.entries(P))s[x]=N;let w=t?Gt(t):{instructions:[],instructionTypes:[]},m=await pt(this.connection,this.blockhashCommitment),y=this.signers.reduce((x,N)=>q(E({},x),{[N.publicKey.toBase58()]:N}),{}),d=[],a=[],b=[],I=0;if(this.allInstructions.forEach(x=>{let N=[...b,x],C=t?[...w.instructions,...N]:N;if(x!==n[I]&&b.length<u&&(St({instructions:C,payer:this.feePayer,lookupTableAddressAccount:s})||St({instructions:N,payer:this.feePayer,lookupTableAddressAccount:s})))b.push(x);else{if(b.length===0)throw Error("item ins too big");I+=x===n[I]?1:0;let L={};for(let v of[...new Set(g)])s[v]!==void 0&&(L[v]=s[v]);if(t&&St({instructions:[...w.instructions,...b],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let v=new xt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...w.instructions,...b]}).compileToV0Message(Object.values(s));d.push(new Ct(v))}else{let v=new xt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...b]}).compileToV0Message(Object.values(s));d.push(new Ct(v))}a.push(Array.from(new Set(b.map(v=>v.keys.filter(K=>K.isSigner).map(K=>K.pubkey.toString())).flat())).map(v=>y[v]).filter(v=>v!==void 0)),b=[x]}}),b.length>0){let N=[...new Set(b.map(C=>C.keys.filter(L=>L.isSigner).map(L=>L.pubkey.toString())).flat()).values()].map(C=>y[C]).filter(C=>C!==void 0);if(t&&St({instructions:[...w.instructions,...b],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let C=new xt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...w.instructions,...b]}).compileToV0Message(Object.values(s));d.push(new Ct(C))}else{let C=new xt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...b]}).compileToV0Message(Object.values(s));d.push(new Ct(C))}a.push(N)}return(F=this.owner)!=null&&F.signer&&a.forEach(x=>{x.some(N=>N.publicKey.equals(this.owner.publicKey))||x.push(this.owner.signer)}),d.forEach((x,N)=>{x.sign(a[N])}),{builder:this,transactions:d,buildProps:e,signers:a,instructionTypes:this.instructionTypes,execute:async x=>{var Y;let{sequentially:N,onTxUpdate:C,skipTxCount:L=0,recentBlockHash:v,skipPreflight:K=!0}=x||{};if(d.map(async(Q,U)=>{a[U].length&&Q.sign(a[U]),v&&(Q.message.recentBlockhash=v)}),ot(d),(Y=this.owner)!=null&&Y.isKeyPair){if(N){let Q=0,U=[];for(let re of d){if(++Q,Q<=L){console.log("skip tx: ",Q),U.push("tx skipped");continue}let j=await this.connection.sendTransaction(re,{skipPreflight:K});await zt(this.connection,j),U.push(j)}return{txIds:U,signedTxs:d}}return{txIds:await Promise.all(d.map(async Q=>await this.connection.sendTransaction(Q,{skipPreflight:K}))),signedTxs:d}}if(this.signAllTransactions){let Q=await this.signAllTransactions(d.slice(L,d.length)),U=[...d.slice(0,L),...Q];if(N){let re=0,j=[],we=async()=>{if(!U[re])return;if(re<L){j.push({txId:"",status:"success",signedTx:U[re]}),C==null||C([...j]),re++,we();return}let Ue=await this.connection.sendTransaction(U[re],{skipPreflight:K});j.push({txId:Ue,status:"sent",signedTx:U[re]}),C==null||C([...j]),re++;let wt=!1,ct=null,_t=null,ro=tt=>{ct!==null&&clearInterval(ct),_t!==null&&this.connection.removeSignatureListener(_t);let Ge=j.findIndex(Ri=>Ri.txId===Ue);if(Ge>-1){if(j[Ge].status==="error"||j[Ge].status==="success")return;j[Ge].status=tt.err?"error":"success"}C==null||C([...j]),tt.err||we()};this.loopMultiTxStatus&&(ct=setInterval(async()=>{var tt;if(wt){clearInterval(ct);return}try{let Ge=await this.connection.getTransaction(Ue,{commitment:"confirmed",maxSupportedTransactionVersion:1});Ge&&(wt=!0,clearInterval(ct),ro({err:((tt=Ge.meta)==null?void 0:tt.err)||null}),console.log("tx status from getTransaction:",Ue))}catch(Ge){wt=!0,clearInterval(ct),console.error("getTransaction timeout:",Ge,Ue)}},Xt)),_t=this.connection.onSignature(Ue,tt=>{if(wt){this.connection.removeSignatureListener(_t);return}wt=!0,ro(tt)},"confirmed"),this.connection.getSignatureStatus(Ue)};return we(),{txIds:[],signedTxs:U}}else{let re=[];for(let j=0;j<U.length;j+=1){let we=await this.connection.sendTransaction(U[j],{skipPreflight:K});re.push(we)}return{txIds:re,signedTxs:U}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}};var Rn=(...l)=>l.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Ie=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=G(t)}createTxBuilder(e){return this.scope.checkOwner(),new Yt({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(Rn(e))}logInfo(...e){this.logger.info(Rn(e))}logAndCreateError(...e){let t=Rn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Lm,SystemProgram as Nm}from"@solana/web3.js";import vm from"bn.js";import{createCloseAccountInstruction as Dm,createInitializeAccountInstruction as Wm,createTransferInstruction as qm,TOKEN_PROGRAM_ID as Um}from"@solana/spl-token";import{Keypair as Pm,PublicKey as Am}from"@solana/web3.js";import Tm from"bn.js";import{TOKEN_PROGRAM_ID as Bm}from"@solana/spl-token";import{PublicKey as wr}from"@solana/web3.js";import Co,{isBN as Ro}from"bn.js";import{bits as cr,BitStructure as hl,blob as lr,Blob as Il,cstr as Bl,f32 as Sl,f32be as Kl,f64 as xl,f64be as Cl,greedy as Rl,Layout as mr,ns64 as Ll,ns64be as Ol,nu64 as Nl,nu64be as Ml,offset as dr,s16 as Fl,s16be as vl,s24 as _l,s24be as Vl,s32 as pr,s32be as El,s40 as Dl,s40be as Wl,s48 as ql,s48be as Ul,s8 as Gl,seq as fr,struct as zl,Structure as yr,u16 as br,u16be as Xl,u24 as Yl,u24be as Hl,u32 as gr,u32be as Ql,u40 as Zl,u40be as $l,u48 as jl,u48be as Jl,u8 as Pr,UInt as Ar,union as em,Union as tm,unionLayoutDiscriminator as nm,utf8 as om}from"@solana/buffer-layout";var Ht=mr,Bo=yr;var Ln=Ar;var So=Pr,ue=br;var Qt=gr;var le=pr;var Ko=fr;var W=lr;var On=cr,xo=dr;var rt=class extends Ht{constructor(t,n,i){super(t,i);this.blob=W(t),this.signed=n}decode(t,n=0){let i=new Co(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new Co(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},Zt=class extends Ht{constructor(t){super(8,t);this._lower=On(Qt(),!1),this._upper=On(Qt(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let i=this._lower.decode(t,n),c=this._upper.decode(t,n+this._lower.span);return E(E({},i),c)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function S(l){return new Ln(1,l)}function oe(l){return new Ln(4,l)}function o(l){return new rt(8,!1,l)}function _(l){return new rt(16,!1,l)}function Lo(l){return new rt(1,!0,l)}function yt(l){return new rt(8,!0,l)}function Oo(l){return new rt(16,!0,l)}var Rt=class extends Ht{constructor(t,n,i,c){super(t.span,c);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function A(l){return new Rt(W(32),e=>new wr(e),e=>e.toBuffer(),l)}function ae(l){return new Rt(So(),kr,Tr,l)}function kr(l){if(l===0)return!1;if(l===1)return!0;throw new Error("Invalid bool: "+l)}function Tr(l){return l?1:0}function Mn(l,e){let t=Qt("length"),n=B([t,M(l,xo(t,-t.span),"values")]);return new Rt(n,({values:i})=>i,i=>({values:i}),e)}var Nn=class extends Bo{decode(e,t){return super.decode(e,t)}};function B(l,e,t){return new Nn(l,e,t)}function M(l,e,t){let n,i=typeof e=="number"?e:Ro(e)?e.toNumber():new Proxy(e,{get(c,u){if(!n){let r=Reflect.get(c,"count");n=Ro(r)?r.toNumber():r,Reflect.set(c,"count",n)}return Reflect.get(c,u)},set(c,u,r){return u==="count"&&(n=r),Reflect.set(c,u,r)}});return Ko(l,i,t)}var $t=B([A("mint"),A("owner"),o("amount"),oe("delegateOption"),A("delegate"),S("state"),oe("isNativeOption"),o("isNative"),o("delegatedAmount"),oe("closeAuthorityOption"),A("closeAuthority")]);import{PublicKey as uP,SystemProgram as cP}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as mP}from"@solana/spl-token";import{PublicKey as Ir}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Br}from"@solana/spl-token";function z(l,e,t){return J([l.toBuffer(),(t!=null?t:Br).toBuffer(),e.toBuffer()],new Ir("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as V}from"@solana/web3.js";var Fn=new V("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),vn=new V("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),_n=new V("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Jt=new V("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Sr=new V("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Mo=new V("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Vn=new V("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),En=new V("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Kr=new V("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),en=new V("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Dn=new V("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Fo=new V("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),vo=new V("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Lt=new V("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),xr=new V("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),_o=new V("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),tn=new V("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Vo=new V("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Cr=new V("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Eo=new V("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Do=new V("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Wo=new V("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Rr=new V("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),wd=new V("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),kd=new V("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Lr=new V("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Or=new V("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX"),ke={AMM_V4:En,AMM_STABLE:Kr,CLMM_PROGRAM_ID:Dn,CLMM_LOCK_PROGRAM_ID:Fo,CLMM_LOCK_AUTH_ID:vo,FARM_PROGRAM_ID_V3:Fn,FARM_PROGRAM_ID_V4:vn,FARM_PROGRAM_ID_V5:_n,FARM_PROGRAM_ID_V6:Jt,OPEN_BOOK_PROGRAM:Mo,SERUM_PROGRAM_ID_V3:Vn,UTIL1216:Sr,Router:xr,CREATE_CPMM_POOL_PROGRAM:tn,CREATE_CPMM_POOL_AUTH:Vo,CREATE_CPMM_POOL_FEE_ACC:Cr,LOCK_CPMM_PROGRAM:Eo,LOCK_CPMM_AUTH:Do,LAUNCHPAD_PROGRAM:Wo,LAUNCHPAD_AUTH:Rr,LAUNCHPAD_PLATFORM:Lr,LAUNCHPAD_CONFIG:Or,FEE_DESTINATION_ID:_o,MODEL_DATA_PUBKEY:Lt},Je={OPEN_BOOK_PROGRAM:new V("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new V("Ray1111111111111111111111111111111111111111"),AMM_V4:new V("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new V("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new V("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new V("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new V("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new V("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new V("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new V("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new V("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new V("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:V.default,Router:new V("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new V("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new V("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new V("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new V("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new V("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new V("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new V("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new V("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new V("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new V("Ray1111111111111111111111111111111111111111")};import kP from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as zy,TOKEN_2022_PROGRAM_ID as Xy,TOKEN_PROGRAM_ID as Yy}from"@solana/spl-token";import{PublicKey as Qy}from"@solana/web3.js";import $y from"bn.js";import Jy from"decimal.js";import{TOKEN_PROGRAM_ID as Fd}from"@solana/spl-token";import{PublicKey as Ed}from"@solana/web3.js";var Nr=B([oe("mintAuthorityOption"),A("mintAuthority"),o("supply"),S("decimals"),S("isInitialized"),oe("freezeAuthorityOption"),A("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as Hn,TOKEN_2022_PROGRAM_ID as ce,TOKEN_PROGRAM_ID as $}from"@solana/spl-token";import{Keypair as an,PublicKey as R,SystemProgram as We,TransactionInstruction as se}from"@solana/web3.js";import sn from"bn.js";import X from"bn.js";var me=new X(1).shln(64);var Mr=new X(1).shln(128),at=new X(1).shln(64).subn(1),Fr=new X(1).shln(128).subn(1),He=-443636,Qe=443636,Me=new X("4295048016"),Fe=new X("79226673521066979257578248091"),qo=new X("59543866431248"),Uo=new X("184467440737095516"),Go=new X("15793534762490258745"),zo=16,nn=512,Be=60,$d=new X("18446743708227953217"),Xo=[{bit:0,factor:new X("fffcb933bd6fb800",16)},{bit:1,factor:new X("fff97272373d4000",16)},{bit:2,factor:new X("fff2e50f5f657000",16)},{bit:3,factor:new X("ffe5caca7e10f000",16)},{bit:4,factor:new X("ffcb9843d60f7000",16)},{bit:5,factor:new X("ff973b41fa98e800",16)},{bit:6,factor:new X("ff2ea16466c9b000",16)},{bit:7,factor:new X("fe5dee046a9a3800",16)},{bit:8,factor:new X("fcbe86c7900bb000",16)},{bit:9,factor:new X("f987a7253ac65800",16)},{bit:10,factor:new X("f3392b0822bb6000",16)},{bit:11,factor:new X("e7159475a2caf000",16)},{bit:12,factor:new X("d097f3bdfd2f2000",16)},{bit:13,factor:new X("a9f746462d9f8000",16)},{bit:14,factor:new X("70d869a156f31c00",16)},{bit:15,factor:new X("31be135f97ed3200",16)},{bit:16,factor:new X("9aa508b5b85a500",16)},{bit:17,factor:new X("5d6af8dedc582c",16)},{bit:18,factor:new X("2216e584f5fa",16)}];var Ot=3,Yo=100;var Ho=10,Qo=100,bt=14;var Z=new X(0),Te=new X(1),jd=new X(-1);var Jd=new X("18446744073700000000");var vr=B([W(8),S("bump"),ue("index"),A("owner"),oe("protocolFeeRate"),oe("tradeFeeRate"),ue("tickSpacing"),oe("fundFeeRate"),M(oe(),1),A("fundOwner"),M(o(),3)]),_r=B([oe("blockTimestamp"),yt("tickCumulative"),M(o(),4)]),Zo=B([W(8),ae("initialized"),o("recentEpoch"),ue("observationIndex"),A("poolId"),M(_r,Yo,"observations"),M(o(),4)]),Vr=B([ue("filterPeriod"),ue("decayPeriod"),ue("reductionFactor"),oe("dynamicFeeControl"),oe("maxVolatilityAccumulator"),le("tickSpacingIndexReference"),oe("volatilityReference"),oe("volatilityAccumulator"),o("lastUpdateTimestamp"),M(S(),46)]),Er=B([S("state"),o("openTime"),o("endTime"),o("lastUpdateTime"),_("emissionsPerSecondX64"),o("totalEmissioned"),o("claimed"),A("mint"),A("vault"),A("creator"),_("growthGlobalX64")]),Wn=B([W(8),S("bump"),A("configId"),A("creator"),A("mintA"),A("mintB"),A("vaultA"),A("vaultB"),A("observationId"),S("mintDecimalsA"),S("mintDecimalsB"),ue("tickSpacing"),_("liquidity"),_("sqrtPriceX64"),le("tickCurrent"),oe(),_("feeGrowthGlobalX64A"),_("feeGrowthGlobalX64B"),o("protocolFeesTokenA"),o("protocolFeesTokenB"),M(_(),4),S("status"),S("feeOn"),W(6),M(Er,Ot,"rewardInfos"),W(8*16,"tickArrayBitmap"),M(o(),4),o("fundFeesTokenA"),o("fundFeesTokenB"),o("startTime"),o("recentEpoch"),Vr.replicate("dynamicFeeInfo"),M(o(),46)]),Dr=B([_("growthInsideLastX64"),o("rewardAmountOwed")]),Wr=B([W(8),S("bump"),A("nftMint"),A("poolId"),le("tickLower"),le("tickUpper"),_("liquidity"),_("feeGrowthInsideLastX64A"),_("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),M(Dr,Ot,"rewardInfos"),o("recentEpoch"),M(o(),7)]),op=B([W(8),S("bump"),A("poolId"),le("tickLower"),le("tickUpper"),_("liquidity"),_("feeGrowthInsideLastX64A"),_("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),M(_(),Ot,"rewardGrowthInside"),o("recentEpoch"),M(o(),7)]),qr=B([le("tick"),Oo("liquidityNet"),_("liquidityGross"),_("feeGrowthOutsideX64A"),_("feeGrowthOutsideX64B"),M(_(),Ot,"rewardGrowthsOutsideX64"),o("orderPhase"),o("ordersAmount"),o("partFilledOrdersRemaining"),_("unfilledRatioX64"),M(oe(),3)]),$o=B([W(8),A("poolId"),le("startTickIndex"),M(qr,Be,"ticks"),S("initializedTickCount"),o("recentEpoch"),M(S(),107)]),Ur=B([W(8),S("bump"),M(A(),Ho,"operationOwners"),M(A(),Qo,"whitelistMints")]),Gr=B([W(8),A("poolId"),A("owner"),le("tick"),ae("zeroForOne"),o("orderPhase"),o("totalAmount"),o("filledAmount"),o("settleBase"),o("settleOutput"),o("openTime"),_("unfilledRatioX64"),M(o(),4)]),jo=B([W(8),A("poolId"),W(8*8*bt,"positiveTickArrayBitmap"),W(8*8*bt,"negativeTickArrayBitmap")]),ip=B([W(8),ue("index"),ue("filterPeriod"),ue("decayPeriod"),ue("reductionFactor"),oe("dynamicFeeControl"),oe("maxVolatilityAccumulator"),M(o(),8)]),zr=B([W(8),A("wallet"),S("nonceIndex"),o("orderNonce"),M(o(),4)]),rp=B([o(),S("bump"),A("owner"),A("poolId"),A("positionId"),A("nftAccount"),M(o(),8)]),Xr=B([W(8),S("bump"),A("lockOwner"),A("poolId"),A("positionId"),A("nftAccount"),A("lockNftMint"),o("recentEpoch"),M(o(),8)]);import up from"bn.js";function qn(l){let e=Buffer.alloc(2);return e.writeUInt16LE(l),e}function Un(l){let e=Buffer.alloc(4);return e.writeInt32LE(l),e}function Jo(l){let e=Buffer.alloc(4);return e.writeInt32BE(l),e}var gp=Buffer.from("amm_config","utf8"),Gn=Buffer.from("pool","utf8"),ei=Buffer.from("pool_vault","utf8"),Yr=Buffer.from("pool_reward_vault","utf8"),ti=Buffer.from("position","utf8"),Hr=Buffer.from("tick_array","utf8"),Qr=Buffer.from("operation","utf8"),Zr=Buffer.from("pool_tick_array_bitmap_extension","utf8"),$r=Buffer.from("observation","utf8"),Pp=Buffer.from("support_mint","utf8"),Ap=Buffer.from("dynamic_fee_config","utf8"),jr=Buffer.from("permission","utf8");function ni(l,e,t,n){return J([Gn,e.toBuffer(),t.toBuffer(),n.toBuffer()],l)}function oi(l,e){return J([jr,e.toBuffer()],l)}function ii(l,e,t,n,i){return J([Gn,e.toBuffer(),t.toBuffer(),n.toBuffer(),qn(i)],l)}function gt(l,e,t){return J([ei,e.toBuffer(),t.toBuffer()],l)}function ri(l,e,t){return J([Yr,e.toBuffer(),t.toBuffer()],l)}function de(l,e,t){return J([Hr,e.toBuffer(),Jo(t)],l)}function Ze(l,e,t,n){return J([ti,e.toBuffer(),Un(t),Un(n)],l)}function Le(l,e){return J([ti,e.toBuffer()],l)}function st(l){return J([Buffer.from("metadata","utf8"),je.toBuffer(),l.toBuffer()],je)}function on(l){return J([Qr],l)}function pe(l,e){return J([Zr,e.toBuffer()],l)}function zn(l,e){return J([$r,e.toBuffer()],l)}var ai=Buffer.from("locked_position","utf8");function Xn(l,e){return J([ai,e.toBuffer()],l)}function Yn(l,e){return J([ai,e.toBuffer()],l)}import{sha256 as sa}from"js-sha256";import Jr from"bn.js";import si from"decimal.js";function Se(l,e,t){if(t.isZero())throw new Error("Division by zero");return l.mul(e).div(t)}function xe(l,e,t){if(t.isZero())throw new Error("Division by zero");let n=l.mul(e),i=n.div(t);return n.mod(t).isZero()?i:i.addn(1)}var Ip=new Jr(1).shln(256).subn(1);function ui(l){return l.isZero()?-1:l.bitLength()-1}function ci(l,e){return new si(l.toString()).div(si.pow(2,64)).toDecimalPlaces(e)}import _p from"bn.js";import fe from"bn.js";import Pt from"decimal.js";var Nt=class{static scanLinearBitmap({bitmap:e,tickSpacing:t,offset:n,checkInfo:i}){let c=[],u=e.length*8,r=0,s=u-1;if(i){let P=i.tick/(t*Be)-n;i.valueType==="gte"?r=Math.max(0,Math.ceil(P)):s=Math.min(u-1,Math.floor(P))}if(r>s)return c;let g=Math.floor(r/8),p=Math.floor(s/8);for(let P=g;P<=p;P++){if(!e[P])continue;let w=P===g?r%8:0,m=P===p?s%8:7;for(let y=w;y<=m;y++)e[P]&1<<y&&c.push((P*8+y+n)*t*Be)}return c}static findPoolBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let i=Math.floor(n.tick/Be/t);if(n.valueType==="lte"&&i<-512)return[];if(n.valueType==="gte"&&i>512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:-nn,checkInfo:n})}static findPositiveTickArrayBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let i=Math.floor(n.tick/Be/t);if(n.valueType==="lte"&&i<512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:nn,checkInfo:n})}static findNegativeTickArrayBitmap({bitmap:e,tickSpacing:t,count:n,checkInfo:i}){let c=[];if(i){let s=Math.floor(i.tick/Be/t);if(i.valueType==="gte"&&s>=-512)return c}let u=(i==null?void 0:i.valueType)==="lte"?Math.floor(i.tick/(Be*t))+7680:1/0,r=(i==null?void 0:i.valueType)==="gte"?Math.ceil(i.tick/(Be*t))+7680:0;e:for(let s=0;s<bt;s++){let g=bt-1-s;for(let p=0;p<512;p++){let P=s*512+p;if(P>u)break e;if(P<r)continue;let w=g*64+Math.floor(p/8);if(!e[w]){p=Math.floor(p/8)*8+7;continue}if(e[w]&1<<p%8){let m=(s*512+p-7680)*Be*t;if(c.push(m),n!==void 0&&c.length>=n)break e}}}return c}static findTickArrayStartIndex({tickSpacing:e,poolBitmap:t,tickArrayBitmap:n,findInfo:i}){if(i.type==="all")return[...this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap}),...this.findPoolBitmap({tickSpacing:e,bitmap:t}),...this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap})];let c=ee.getTickArrayStartIndex(i.tickArrayCurrent,e),{count:u}=i;if(i.type==="oneForZero"){let r={tick:c,valueType:"gte"},s=[()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap,checkInfo:r}),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:r}),()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap,checkInfo:r})];return this.collectUntil(s,u)}if(i.type==="zeroForOne"){let r={tick:c,valueType:"lte"},s=[()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap,checkInfo:r}).sort((g,p)=>p-g),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:r}).sort((g,p)=>p-g),()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap,checkInfo:r}).sort((g,p)=>p-g)];return this.collectUntil(s,u)}throw new Error("find info type check error")}static collectUntil(e,t){let n=[];for(let i of e){if(t!==void 0&&n.length>=t)break;n.push(...i())}return n.slice(0,t)}static findTickArrayAddress(e){return this.findTickArrayStartIndex(e).map(t=>de(e.programId,e.poolId,t).publicKey)}static maxTickInTickarrayBitmap(e){return e*Be*nn}},ee=class{static firstinitializedTick({data:e,zeroForOne:t}){if(t){for(let n=e.ticks.length-1;n>=0;n--)if(ie.isInitialized({data:e.ticks[n]}))return e.ticks[n]}else for(let n=0;n<e.ticks.length;n++)if(ie.isInitialized({data:e.ticks[n]}))return e.ticks[n]}static nextInitalizedTick({data:e,currentTickIndex:t,tickSpacing:n,zeroForOne:i}){if(this.getTickArrayStartIndex(t,n)!==e.startTickIndex)return;let u=Math.floor((t-e.startTickIndex)/n);if(i){for(let r=u;r>=0;r--)if(ie.isInitialized({data:e.ticks[r]}))return e.ticks[r]}else for(let r=u+1;r<Be;r++)if(ie.isInitialized({data:e.ticks[r]}))return e.ticks[r]}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 Be*e}static getMinTick(e){return Math.ceil(He/e)*e}static getMaxTick(e){return Math.floor(Qe/e)*e}},ie=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>=He&&e<=Qe}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${He}, ${Qe}]`)}static getSqrtPriceAtTick(e){this.checkTick(e);let t=Math.abs(e),n=me.clone();for(let{bit:i,factor:c}of Xo)(t&1<<i)!==0&&(n=Se(n,c,me));return e>0&&(n=Se(me,me,n)),n}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:n}){if(n){let i=ie.getPriceAtTick(t,!1);return Se(e,i,me)}else{let i=ie.getPriceAtTick(t,!0);return Se(e,me,i)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:n}){if(n){let i=ie.getPriceAtTick(t,!0);return xe(e,i,me)}else{let i=ie.getPriceAtTick(t,!1);return xe(e,me,i)}}static limitOrderUnfilledAmount({tick:e}){return e.ordersAmount.add(e.partFilledOrdersRemaining)}static matchLimitOrder({tick:e,swapAmount:t,swapDirectionZeroForOne:n,isBaseInput:i,feeRate:c,isFeeOnInput:u}){let r={amountIn:Z,amountOut:Z,ammFeeAmount:Z},s=this.limitOrderUnfilledAmount({tick:e});if(t.isZero()||s.isZero())return r;if(i)u?(r.ammFeeAmount=xe(t,new fe(c),De),r.amountIn=t.sub(r.ammFeeAmount)):r.amountIn=t,r.amountOut=this.getLimitOrderOutput({amountIn:r.amountIn,tick:e.tick,zeroForOne:n}),r.amountOut.gt(s)&&(r.amountOut=s,r.amountIn=this.getLimitOrderInput({amountOut:s,tick:e.tick,zeroForOne:!n}),u&&(r.ammFeeAmount=xe(r.amountIn,new fe(c),De.sub(new fe(c)))));else{let P=fe.min(t,s);u?r.amountOut=P:r.amountOut=fe.min(xe(P,De,De.sub(new fe(c))),s),r.amountIn=this.getLimitOrderInput({amountOut:r.amountOut,tick:e.tick,zeroForOne:!n}),u&&(r.ammFeeAmount=xe(r.amountIn,new fe(c),De.sub(new fe(c))))}let g=Z;e.partFilledOrdersRemaining.gt(Z)&&(g=fe.min(e.partFilledOrdersRemaining,r.amountOut),g.gt(Z)&&(e.unfilledRatioX64=Se(e.unfilledRatioX64,e.partFilledOrdersRemaining.sub(g),e.partFilledOrdersRemaining)),e.partFilledOrdersRemaining=e.partFilledOrdersRemaining.sub(g));let p=r.amountOut.sub(g);if(p.gt(Z)){if(!e.partFilledOrdersRemaining.isZero())throw Error("!tick.partFilledOrdersRemaining.isZero()");if(e.ordersAmount.lt(p))throw Error("InvalidLimitOrderAmount");e.orderPhase=e.orderPhase.add(Te),e.unfilledRatioX64=Se(me,e.ordersAmount.sub(p),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(p),e.ordersAmount=Z}return u||(r.ammFeeAmount=xe(r.amountOut,new fe(c),De),r.amountOut=r.amountOut.sub(r.ammFeeAmount)),r}static getPriceAtTick(e,t){let n=this.getSqrtPriceAtTick(e);return t?n.mul(n).add(me.subn(1)).div(me):n.mul(n).div(me)}static getTickAtSqrtPrice(e){if(!(e.gte(Me)&&e.lte(Fe)))throw Error("SqrtPriceX64");let t=ui(e),n=t-64,i;n>=0?i=new fe(n).shln(32):i=new fe(-n).shln(32).neg();let c;t>=64?c=e.shrn(t-63):c=e.shln(63-t);let u=new fe(0),r=new fe(1).shln(63);for(let a=0;a<zo&&!r.isZero();a++){c=c.mul(c);let b=c.shrn(127).toNumber();c=c.shrn(63+b),b&&(u=u.add(r)),r=r.shrn(1)}let s=u.shrn(32),p=i.add(s).mul(qo),P=p.sub(Uo),w=p.add(Go),m=this.signedShrn64(P),y=this.signedShrn64(w);return m===y?m:ie.getSqrtPriceAtTick(y).lte(e)?y:m}static signedShrn64(e){if(e.isNeg()){let t=new fe(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 i=e.mul(e),c=t-n,u=20,r=new fe(10).pow(new fe(u)),s=i.mul(r),g=new fe(1).shln(128),P=s.div(g).toString();for(;P.length<=u;)P="0"+P;let w=P.slice(0,-u),m=P.slice(-u),y=w+"."+m;return new Pt(y).mul(new Pt(10).pow(c))}static tickToPrice(e,t,n){let i=ie.getSqrtPriceAtTick(e);return this.sqrtPriceX64ToPrice(i,t,n)}static priceToTick(e,t,n){let c=e.div(Math.pow(10,t-n)).log().div(new Pt(1.0001).log()).floor();return Math.max(He,Math.min(Qe,c.toNumber()))}static priceToSqrtPriceX64(e,t,n){let u=e.div(Math.pow(10,t-n)).sqrt().mul(new Pt(2).pow(64));return new fe(u.toFixed(0))}static toTickIndex(e,t){return e>=0?e-e%t:e-e%t-(e%t!==0?t:0)}static getPriceAndTick({price:e,mintADecimals:t,mintBDecimals:n,zeroForOne:i,tickSpacing:c}){let u=e.clamp(1/10**Math.max(t,n),Number.MAX_SAFE_INTEGER);i||(u=new Pt(1).div(u));let r=ie.toTickIndex(ie.priceToTick(u,t,n),c),s=ie.tickToPrice(r,t,n);return{price:i?s:new Pt(1).div(s),tick:r}}};import qp from"bn.js";import Gp from"decimal.js";import{PublicKey as mi}from"@solana/web3.js";import ia from"bn.js";import{TOKEN_2022_PROGRAM_ID as Vf,TOKEN_PROGRAM_ID as Ef}from"@solana/spl-token";import Uf from"decimal.js";import wf from"bn.js";import sf from"bn.js";var Ce=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:i}=this.tickArrayStartIndexRange({tickSpacing:e});for(let c of t){let u=ee.getTickArrayStartIndex(c,e);if(u>=n||u<i)return!0}return!1}static tickArrayStartIndexRange({tickSpacing:e}){let t=Nt.maxTickInTickarrayBitmap(e),n=-t;return t>Qe&&(t=ee.getTickArrayStartIndex(Qe,e)+ee.tickCount(e)),n<He&&(n=ee.getTickArrayStartIndex(He,e)),{maxTickBoundary:t,minTickBoundary:n}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:c}){var r,s,g;let u=[];for(let p=0;p<c.length;p++){let P=c[p],w=(g=(r=t.rewardDefaultInfos[p])==null?void 0:r.mint.programId)!=null?g:(s=await e.getAccountInfo(P.mint))==null?void 0:s.owner;if(w===void 0)throw Error("get new reward mint info error");let m=q(E({},P),{perSecond:ci(P.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new mi(w)});if(m.mint.equals(mi.default)||m.totalEmissioned.eq(at))continue;if(n<=m.openTime.toNumber()||i.eq(Z)){u.push(m);continue}let y=new ia(Math.min(m.endTime.toNumber(),n)),d=y.sub(m.lastUpdateTime);if(d.isZero()){u.push(m);continue}let a=xe(d,m.emissionsPerSecondX64,me),b=Se(d,m.emissionsPerSecondX64,i),I,O=m.totalEmissioned.add(a);if(O.lte(at))I=O;else{let x=at.sub(m.totalEmissioned);I=at,b=Se(x,me,i)}let F=m.growthGlobalX64.add(b);u.push(q(E({},m),{growthGlobalX64:F,totalEmissioned:I,lastUpdateTime:y}))}return u}};import ey from"bn.js";function be(l){let e=`global:${l}`;return Buffer.from(sa.digest(e)).slice(0,8)}Zo.span;var di=G("Raydium_Clmm"),ge={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")},pi=[188,37,179,131,82,150,84,73],fi=[16,72,250,198,14,162,212,19],$e=class{static createPoolInstruction(e,t,n,i,c,u,r,s,g,p,P,w,m,y){let d=B([_("sqrtPriceX64"),o("startTime")]),a=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:P,isSigner:!1,isWritable:!1},{pubkey:We.programId,isSigner:!1,isWritable:!1},{pubkey:Re,isSigner:!1,isWritable:!1},...(y!=null?y:[]).map(O=>({pubkey:O,isSigner:!1,isWritable:!1}))],b=Buffer.alloc(d.span);d.encode({sqrtPriceX64:m,startTime:Z},b);let I=Buffer.from([...ge.createPool,...b]);return new se({keys:a,programId:e,data:I})}static createCustomizablePoolInstruction(e,t,n,i,c,u,r,s,g,p,P,w,m,y,d,a){let b=B([_("sqrtPriceX64"),S("collectFeeOn"),ae("enableDynamicFee")]),I=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:We.programId,isSigner:!1,isWritable:!1},{pubkey:Re,isSigner:!1,isWritable:!1},...d.map(x=>({pubkey:x,isSigner:!1,isWritable:!1})),...a?[{pubkey:a,isSigner:!1,isWritable:!1}]:[]],O=Buffer.alloc(b.span);b.encode({sqrtPriceX64:m,collectFeeOn:y,enableDynamicFee:a!==void 0},O);let F=Buffer.from([...ge.createCustomizablePool,...O]);return new se({keys:I,programId:e,data:F})}static createPermissionedPoolInstruction(e,t,n,i,c,u,r,s,g,p,P,w,m,y,d,a,b,I,O){let F=B([_("sqrtPriceX64"),S("collectFeeOn"),ae("enableDynamicFee"),ue("seedIndex")]),x=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:We.programId,isSigner:!1,isWritable:!1},{pubkey:Re,isSigner:!1,isWritable:!1},...I.map(L=>({pubkey:L,isSigner:!1,isWritable:!1})),...O?[{pubkey:O,isSigner:!1,isWritable:!1}]:[]],N=Buffer.alloc(F.span);F.encode({sqrtPriceX64:d,collectFeeOn:a,enableDynamicFee:O!==void 0,seedIndex:b},N);let C=Buffer.from([...ge.createPermissionedPool,...N]);return new se({keys:x,programId:e,data:C})}static initializeRewardInstruction(e,t,n,i,c,u,r,s,g,p,P,w){let m=B([o("openTime"),o("endTime"),_("emissionsPerSecondX64")]),y=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:We.programId,isSigner:!1,isWritable:!1},{pubkey:Re,isSigner:!1,isWritable:!1}],d=Buffer.alloc(m.span);m.encode({openTime:p,endTime:P,emissionsPerSecondX64:w},d);let a=Buffer.from([...ge.initializeReward,...d]);return new se({keys:y,programId:e,data:a})}static updateRewardInfosInstruction(e,t){let n=[{pubkey:t,isSigner:!1,isWritable:!0}],i=Buffer.from([...ge.updateRewardInfos]);return new se({keys:n,programId:e,data:i})}static setRewardParamsInstruction(e,t,n,i,c,u,r,s,g,p,P,w){let m=B([S("rewardIndex"),_("emissionsPerSecondX64"),o("openTime"),o("endTime")]),y=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:$,isSigner:!1,isWritable:!1},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0}],d=Buffer.alloc(m.span);m.encode({rewardIndex:g,emissionsPerSecondX64:w,openTime:p,endTime:P},d);let a=Buffer.from([...ge.setRewardParams,...d]);return new se({keys:y,programId:e,data:a})}static closePositionInstruction(e,t,n,i,c,u,r){let s=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:We.programId,isSigner:!1,isWritable:!1},{pubkey:u?ce:$,isSigner:!1,isWritable:!1}];r&&s.push({pubkey:r,isSigner:!1,isWritable:!0});let g=Buffer.from([...ge.closePosition]);return new se({keys:s,programId:e,data:g})}static openPositionV2Instruction(e,t,n,i,c,u,r,s,g,p,P,w,m,y,d,a,b,I,O,F,x,N,C,L,v,K,Y){let Q=B([le("tickLower"),le("tickUpper"),le("tickArrayLowerStart"),le("tickArrayUpperStart"),_("liquidity"),o("amountMaxA"),o("amountMaxB"),ae("withMetadata"),S("optionBaseFlag"),ae("baseFlag")]),U=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!0,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:Re,isSigner:!1,isWritable:!1},{pubkey:We.programId,isSigner:!1,isWritable:!1},{pubkey:$,isSigner:!1,isWritable:!1},{pubkey:Hn,isSigner:!1,isWritable:!1},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...Y?[{pubkey:Y,isSigner:!1,isWritable:!0}]:[]],re=Buffer.alloc(Q.span);Q.encode({tickLower:I,tickUpper:O,tickArrayLowerStart:F,tickArrayUpperStart:x,liquidity:N,amountMaxA:C,amountMaxB:L,withMetadata:v,optionBaseFlag:K!==null?1:0,baseFlag:K!=null?K:!1},re);let j=Buffer.from([...ge.openPositionV2,...re]);return new se({keys:U,programId:e,data:j})}static increaseLiquidityV2Instruction(e,t,n,i,c,u,r,s,g,p,P,w,m,y,d,a,b,I,O){let F=B([_("liquidity"),o("amountMaxA"),o("amountMaxB"),S("optionBaseFlag"),ae("baseFlag")]),x=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:$,isSigner:!1,isWritable:!1},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...O?[{pubkey:O,isSigner:!1,isWritable:!0}]:[]],N=Buffer.alloc(F.span);F.encode({liquidity:d,amountMaxA:a,amountMaxB:b,optionBaseFlag:I!==null?1:0,baseFlag:I!=null?I:!1},N);let C=Buffer.from([...ge.increaseLiquidityV2,...N]);return new se({keys:x,programId:e,data:C})}static decreaseLiquidityV2Instruction(e,t,n,i,c,u,r,s,g,p,P,w,m,y,d,a,b,I,O){let F=B([_("liquidity"),o("amountMinA"),o("amountMinB")]),x=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:$,isSigner:!1,isWritable:!1},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},...O?[{pubkey:O,isSigner:!1,isWritable:!0}]:[],...d.map(L=>[{pubkey:L.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:L.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:L.rewardMint,isSigner:!1,isWritable:!1}]).flat()],N=Buffer.alloc(F.span);F.encode({liquidity:a,amountMinA:b,amountMinB:I},N);let C=Buffer.from([...ge.decreaseLiquidityV2,...N]);return new se({keys:x,programId:e,data:C})}static swapV2Instruction(e,t,n,i,c,u,r,s,g,p,P,w,m,y,d,a,b){let I=B([o("amount"),o("otherAmountThreshold"),_("sqrtPriceLimitX64"),ae("isBaseInput")]),O=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:$,isSigner:!1,isWritable:!1},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},...b?[{pubkey:b,isSigner:!1,isWritable:!0}]:[],...P.map(N=>({pubkey:N,isSigner:!1,isWritable:!0}))],F=Buffer.alloc(I.span);I.encode({amount:m,otherAmountThreshold:y,sqrtPriceLimitX64:d,isBaseInput:a},F);let x=Buffer.from([...ge.swapV2,...F]);return new se({keys:O,programId:e,data:x})}static collectRemainingRewardsInstruction(e,t,n,i,c,u,r){let s=B([S("rewardIndex")]),g=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:$,isSigner:!1,isWritable:!1},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:Oe,isSigner:!1,isWritable:!1}],p=Buffer.alloc(s.span);s.encode({rewardIndex:r},p);let P=Buffer.from([...ge.collectRemainingRewards,...p]);return new se({keys:g,programId:e,data:P})}static openPositionWithToken22NftInstruction(e,t,n,i,c,u,r,s,g,p,P,w,m,y,d,a,b,I,O,F,x,N,C,L,v,K){let Y=B([le("tickLower"),le("tickUpper"),le("tickArrayLowerStart"),le("tickArrayUpperStart"),_("liquidity"),o("amountMaxA"),o("amountMaxB"),ae("withMetadata"),S("optionBaseFlag"),ae("baseFlag")]),Q=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!0,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:Re,isSigner:!1,isWritable:!1},{pubkey:We.programId,isSigner:!1,isWritable:!1},{pubkey:$,isSigner:!1,isWritable:!1},{pubkey:Hn,isSigner:!1,isWritable:!1},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},...K?[{pubkey:K,isSigner:!1,isWritable:!0}]:[]],U=Buffer.alloc(Y.span);Y.encode({tickLower:b,tickUpper:I,tickArrayLowerStart:O,tickArrayUpperStart:F,liquidity:x,amountMaxA:N,amountMaxB:C,withMetadata:L,optionBaseFlag:v!==null?1:0,baseFlag:v!=null?v:!1},U);let re=Buffer.from([...ge.openPositionWithToken22Nft,...U]);return new se({keys:Q,programId:e,data:re})}static openLimitOrderInstruction(e,t,n,i,c,u,r,s,g,p,P,w,m,y,d,a,b,I){let O=B([S("nonceIndex"),ae("zeroForOne"),le("tickIndex"),o("amount")]),F=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:We.programId,isSigner:!1,isWritable:!1},...I?[{pubkey:I,isSigner:!1,isWritable:!0}]:[]],x=Buffer.alloc(O.span);O.encode({nonceIndex:y,zeroForOne:d,tickIndex:a,amount:b},x);let N=Buffer.from([...ge.openLimitOrder,...x]);return new se({keys:F,programId:e,data:N})}static increaseLimitOrderInstruction(e,t,n,i,c,u,r,s,g,p){let P=B([o("amount")]),w=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1}],m=Buffer.alloc(P.span);P.encode({amount:p},m);let y=Buffer.from([...ge.increaseLimitOrder,...m]);return new se({keys:w,programId:e,data:y})}static decreaseLimitOrderInstruction(e,t,n,i,c,u,r,s,g,p,P,w,m,y){let d=B([o("amount"),o("amountMin")]),a=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:P,isSigner:!1,isWritable:!1},{pubkey:$,isSigner:!1,isWritable:!1},{pubkey:ce,isSigner:!1,isWritable:!1},...y?[{pubkey:y,isSigner:!1,isWritable:!0}]:[]],b=Buffer.alloc(d.span);d.encode({amount:w,amountMin:m},b);let I=Buffer.from([...ge.decreaseLimitOrder,...b]);return new se({keys:a,programId:e,data:I})}static settleLimitOrderInstruction(e,t,n,i,c,u,r,s,g){let p=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1}],P=Buffer.from([...ge.settleLimitOrder]);return new se({keys:p,programId:e,data:P})}static closeLimitOrderInstruction(e,t,n,i){let c=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0}],u=Buffer.from([...ge.closeLimitOrder]);return new se({keys:c,programId:e,data:u})}static createPoolInstructions(e){let{programId:t,owner:n,mintA:i,mintB:c,ammConfigId:u,initialPriceX64:r,extendMintAccount:s}=e,[g,p]=[new R(i.address),new R(c.address)],[P,w]=[new R(i.programId||$),new R(c.programId||$)],{publicKey:m}=ni(t,u,g,p),{publicKey:y}=zn(t,m),{publicKey:d}=gt(t,m,g),{publicKey:a}=gt(t,m,p),b=pe(t,m).publicKey,I=[this.createPoolInstruction(t,m,n,u,y,g,d,P,p,a,w,b,r,s)];return{signers:[],instructions:I,instructionTypes:[D.CreateAccount,D.ClmmCreatePool],address:{poolId:m,observationId:y,exBitmapAccount:b,mintA:g,mintB:p,mintAProgram:P,mintBProgram:w,mintAVault:d,mintBVault:a},lookupTableAddress:[]}}static createPermissionedPoolInstructions(e){let{programId:t,owner:n,mintA:i,mintB:c,ammConfigId:u,initialPriceX64:r,extendMintAccount:s,payer:g,seedIndex:p}=e,[P,w]=[new R(i.address),new R(c.address)],[m,y]=[new R(i.programId||$),new R(c.programId||$)],{publicKey:d}=ii(t,u,P,w,p),{publicKey:a}=oi(t,g),{publicKey:b}=zn(t,d),{publicKey:I}=gt(t,d,P),{publicKey:O}=gt(t,d,w),F=pe(t,d).publicKey,x=[this.createPoolInstruction(t,d,n,u,b,P,I,m,w,O,y,F,r,s)];return{signers:[],instructions:x,instructionTypes:[D.CreateAccount,D.ClmmCreatePool],address:{poolId:d,observationId:b,exBitmapAccount:F,mintA:P,mintB:w,mintAProgram:m,mintBProgram:y,mintAVault:I,mintBVault:O,permission:a},lookupTableAddress:[]}}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:c,liquidity:u,amountMaxA:r,amountMaxB:s,base:g,withMetadata:p,getEphemeralSigners:P,nft2022:w}){let m=[],[y,d]=[new R(e.programId),new R(e.id)],a;if(P)a=new R((await P(1))[0]);else{let K=an.generate();m.push(K),a=K.publicKey}let b=ee.getTickArrayStartIndex(i,e.config.tickSpacing),I=ee.getTickArrayStartIndex(c,e.config.tickSpacing),{publicKey:O}=de(y,d,b),{publicKey:F}=de(y,d,I),{publicKey:x}=w?z(n.wallet,a,ce):z(n.wallet,a,$),{publicKey:N}=st(a),{publicKey:C}=Le(y,a),{publicKey:L}=Ze(y,d,i,c),v=w?this.openPositionWithToken22NftInstruction(y,n.feePayer,d,n.wallet,a,x,L,O,F,C,n.tokenAccountA,n.tokenAccountB,new R(t.vault.A),new R(t.vault.B),new R(e.mintA.address),new R(e.mintB.address),i,c,b,I,u,r,s,p==="create",g&&g==="MintA",Ce.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[b,I]})?pe(y,d).publicKey:void 0):this.openPositionV2Instruction(y,n.feePayer,d,n.wallet,a,x,N,L,O,F,C,n.tokenAccountA,n.tokenAccountB,new R(t.vault.A),new R(t.vault.B),new R(e.mintA.address),new R(e.mintB.address),i,c,b,I,u,r,s,p==="create",null,Ce.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[b,I]})?pe(y,d).publicKey:void 0);return{signers:m,instructions:[v],instructionTypes:[D.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:a,tickArrayLower:O,tickArrayUpper:F,positionNftAccount:x,metadataAccount:N,personalPosition:C,protocolPosition:L}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:c,base:u,baseAmount:r,otherAmountMax:s,liquidity:g,withMetadata:p,getEphemeralSigners:P,nft2022:w}){let m=[],[y,d]=[new R(e.programId),new R(e.id)],a;if(P)a=new R((await P(1))[0]);else{let K=an.generate();m.push(K),a=K.publicKey}let b=ee.getTickArrayStartIndex(i,e.config.tickSpacing),I=ee.getTickArrayStartIndex(c,e.config.tickSpacing),{publicKey:O}=de(y,d,b),{publicKey:F}=de(y,d,I),{publicKey:x}=w?z(n.wallet,a,ce):z(n.wallet,a,$),{publicKey:N}=st(a),{publicKey:C}=Le(y,a),{publicKey:L}=Ze(y,d,i,c),v=w?this.openPositionWithToken22NftInstruction(y,n.feePayer,d,n.wallet,a,x,L,O,F,C,n.tokenAccountA,n.tokenAccountB,new R(t.vault.A),new R(t.vault.B),new R(e.mintA.address),new R(e.mintB.address),i,c,b,I,g,!u||u==="MintA"?r:s,!u||u==="MintA"?s:r,p==="create",u&&u==="MintA",Ce.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[b,I]})?pe(y,d).publicKey:void 0):this.openPositionV2Instruction(y,n.feePayer,d,n.wallet,a,x,N,L,O,F,C,n.tokenAccountA,n.tokenAccountB,new R(t.vault.A),new R(t.vault.B),new R(e.mintA.address),new R(e.mintB.address),i,c,b,I,Z,u==="MintA"?r:s,u==="MintA"?s:r,p==="create",u==="MintA",Ce.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[b,I]})?pe(y,d).publicKey:void 0);return{address:{nftMint:a,tickArrayLower:O,tickArrayUpper:F,positionNftAccount:x,metadataAccount:N,personalPosition:C,protocolPosition:L},instructions:[v],signers:m,instructionTypes:[D.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:c,liquidity:u,amountMaxA:r,amountMaxB:s,base:g,withMetadata:p,getEphemeralSigners:P,nft2022:w}){let m,y=[];if(P)m=new R((await P(1))[0]);else{let K=an.generate();y.push(K),m=K.publicKey}let[d,a]=[new R(e.programId),new R(e.id)],b=ee.getTickArrayStartIndex(i,e.config.tickSpacing),I=ee.getTickArrayStartIndex(c,e.config.tickSpacing),{publicKey:O}=de(d,a,b),{publicKey:F}=de(d,a,I),{publicKey:x}=w?z(n.wallet,m,ce):z(n.wallet,m,$),{publicKey:N}=st(m),{publicKey:C}=Le(d,m),{publicKey:L}=Ze(d,a,i,c),v=w?this.openPositionWithToken22NftInstruction(d,n.wallet,a,n.wallet,m,x,L,O,F,C,n.tokenAccountA,n.tokenAccountB,new R(t.vault.A),new R(t.vault.B),new R(t.mintA.address),new R(t.mintB.address),i,c,b,I,u,r,s,p==="create",g&&g==="MintA",Ce.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[b,I]})?pe(d,a).publicKey:void 0):this.openPositionV2Instruction(d,n.wallet,a,n.wallet,m,x,N,L,O,F,C,n.tokenAccountA,n.tokenAccountB,new R(t.vault.A),new R(t.vault.B),new R(t.mintA.address),new R(t.mintB.address),i,c,b,I,u,r,s,p==="create",null,Ce.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[b,I]})?pe(d,a).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:O,tickArrayUpper:F,positionNftAccount:x,metadataAccount:N,personalPosition:C,protocolPosition:L},instructions:[v],signers:y,instructionTypes:[D.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i,nft2022:c}){let u=new R(e.programId),r=c?z(n.wallet,i.nftMint,ce).publicKey:z(n.wallet,i.nftMint,$).publicKey,{publicKey:s}=Le(u,i.nftMint),g=[];return g.push(this.closePositionInstruction(u,n.wallet,i.nftMint,r,s,!!c,new R(e.id))),{address:{positionNftAccount:r,personalPosition:s},signers:[],instructions:g,instructionTypes:[D.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:c,amountMaxA:u,amountMaxB:r,nft2022:s}){let[g,p]=[new R(e.programId),new R(e.id)],P=ee.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),w=ee.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:m}=de(g,p,P),{publicKey:y}=de(g,p,w),{publicKey:d}=s?z(i.wallet,n.nftMint,ce):z(i.wallet,n.nftMint,$),{publicKey:a}=Le(g,n.nftMint),{publicKey:b}=Ze(g,p,n.tickLower,n.tickUpper),I=this.increaseLiquidityV2Instruction(g,i.wallet,d,a,p,b,m,y,i.tokenAccountA,i.tokenAccountB,new R(t.vault.A),new R(t.vault.B),new R(e.mintA.address),new R(e.mintB.address),c,u,r,null,Ce.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[P,w]})?pe(g,p).publicKey:void 0);return{address:{tickArrayLower:m,tickArrayUpper:y,positionNftAccount:d,personalPosition:a,protocolPosition:b},signers:[],instructions:[I],instructionTypes:[D.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:c,baseAmount:u,otherAmountMax:r,nft2022:s}){let[g,p]=[new R(e.programId),new R(e.id)],P=ee.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),w=ee.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:m}=de(g,p,P),{publicKey:y}=de(g,p,w),{publicKey:d}=s?z(i.wallet,n.nftMint,ce):z(i.wallet,n.nftMint,$),{publicKey:a}=Le(g,n.nftMint),{publicKey:b}=Ze(g,p,n.tickLower,n.tickUpper);return{address:{tickArrayLower:m,tickArrayUpper:y,positionNftAccount:d,personalPosition:a,protocolPosition:b},instructions:[this.increaseLiquidityV2Instruction(g,i.wallet,d,a,p,b,m,y,i.tokenAccountA,i.tokenAccountB,new R(t.vault.A),new R(t.vault.B),new R(e.mintA.address),new R(e.mintB.address),Z,c==="MintA"?u:r,c==="MintA"?r:u,c==="MintA",Ce.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[P,w]})?pe(g,p).publicKey:void 0)],signers:[],instructionTypes:[D.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:c,amountMinA:u,amountMinB:r,programId:s,nft2022:g}){let[p,P]=[new R(e.programId),new R(e.id)],w=ee.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),m=ee.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:y}=de(p,P,w),{publicKey:d}=de(p,P,m),{publicKey:a}=g?z(i.wallet,n.nftMint,ce):z(i.wallet,n.nftMint,s),{publicKey:b}=Le(p,n.nftMint),{publicKey:I}=Ze(p,P,n.tickLower,n.tickUpper),O=new Map;for(let C=0;C<t.rewardInfos.length;C++)O.set(t.rewardInfos[C].mint.address,i.rewardAccounts[C]);let F=[];for(let C=0;C<t.rewardInfos.length;C++){let L=t.rewardInfos[C].mint.address,v=O.get(L);v&&F.push({poolRewardVault:new R(t.rewardInfos[C].vault),ownerRewardVault:v,rewardMint:new R(L)})}let x=[],N=this.decreaseLiquidityV2Instruction(p,i.wallet,a,b,P,I,y,d,i.tokenAccountA,i.tokenAccountB,new R(t.vault.A),new R(t.vault.B),new R(e.mintA.address),new R(e.mintB.address),F,c,u,r,Ce.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[w,m]})?pe(p,P).publicKey:void 0);return x.push(N),{address:{tickArrayLower:y,tickArrayUpper:d,positionNftAccount:a,personalPosition:b,protocolPosition:I},signers:[],instructions:x,instructionTypes:[D.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,inputMint:c,amountIn:u,amountOutMin:r,sqrtPriceLimitX64:s,remainingAccounts:g}){let[p,P]=[new R(e.programId),new R(e.id)],[w,m]=[new R(t.vault.A),new R(t.vault.B)],[y,d]=[new R(e.mintA.address),new R(e.mintB.address)],a=e.mintA.address.toString()===c.toString(),b=[this.swapV2Instruction(p,i.wallet,P,new R(e.config.id),a?i.tokenAccountA:i.tokenAccountB,a?i.tokenAccountB:i.tokenAccountA,a?w:m,a?m:w,a?y:d,a?d:y,g,n,u,r,s,!0,pe(p,P).publicKey)];return{signers:[],instructions:b,instructionTypes:[D.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,outputMint:c,amountOut:u,amountInMax:r,sqrtPriceLimitX64:s,remainingAccounts:g}){let[p,P]=[new R(e.programId),new R(e.id)],[w,m]=[new R(t.vault.A),new R(t.vault.B)],[y,d]=[new R(e.mintA.address),new R(e.mintB.address)],a=e.mintB.address.toString()===c.toBase58(),b=[this.swapV2Instruction(p,i.wallet,P,new R(e.config.id),a?i.tokenAccountA:i.tokenAccountB,a?i.tokenAccountB:i.tokenAccountA,a?w:m,a?m:w,a?y:d,a?d:y,g,n,u,r,s,!1,pe(p,P).publicKey)];return{signers:[],instructions:b,instructionTypes:[D.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[c,u]=[new R(e.programId),new R(e.id)],r=ri(c,u,i.mint).publicKey,s=on(c).publicKey,g=[this.initializeRewardInstruction(c,n.wallet,u,s,new R(e.config.id),n.tokenAccount,i.programId,i.mint,r,new sn(i.openTime),new sn(i.endTime),i.emissionsPerSecondX64)];return{address:{poolRewardVault:r,operationId:s},signers:[],instructions:g,instructionTypes:[D.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[c,u]=[new R(e.programId),new R(e.id)],r,s,g;for(let w=0;w<e.rewardDefaultInfos.length;w++)e.rewardDefaultInfos[w].mint.address===i.mint.toString()&&(r=w,s=new R(t.rewardInfos[w].vault),g=new R(t.rewardInfos[w].mint.address));(r===void 0||s===void 0)&&di.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let p=on(c).publicKey,P=[this.setRewardParamsInstruction(c,n.wallet,u,p,new R(e.config.id),n.tokenAccount,s,g,r,new sn(i.openTime),new sn(i.endTime),i.emissionsPerSecondX64)];return{address:{rewardVault:s,operationId:p},signers:[],instructions:P,instructionTypes:[D.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[c,u]=[new R(e.programId),new R(e.id)],r,s;for(let p=0;p<e.rewardDefaultInfos.length;p++)e.rewardDefaultInfos[p].mint.address===i.toString()&&(r=p,s=new R(t.rewardInfos[p].vault));(r===void 0||s===void 0)&&di.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let g=[this.collectRemainingRewardsInstruction(c,n.wallet,u,n.tokenAccount,s,i,r)];return{address:{rewardVault:s},signers:[],instructions:g,instructionTypes:[D.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async makeLockPositions({programId:e,authProgramId:t,poolProgramId:n,payer:i,wallet:c,nftMint:u,nft2022:r,getEphemeralSigners:s}){let g=[],p;if(s)p=new R((await s(1))[0]);else{let b=an.generate();g.push(b),p=b.publicKey}let P=r?z(c,u,ce).publicKey:z(c,u,$).publicKey,{publicKey:w}=Le(n,u),m=Yn(e,p).publicKey,y=z(c,p,$).publicKey,d=st(p).publicKey,a=$e.lockPositionInstructionV2({programId:e,auth:t,payer:i,positionOwner:c,lockOwner:c,positionNftAccount:P,positionId:w,lockPositionId:m,lockNftMint:p,lockNftAccount:y,metadataAccount:d,withMetadata:!0,nft2022:r,positionNftMint:u,authPositionNftAccount:z(t,u,r?ce:$).publicKey,positionNftProgram:r?ce:$});return{address:{positionId:w,lockPositionId:m,lockNftAccount:y,lockNftMint:p,positionNftAccount:P,metadataAccount:d},instructions:[a],signers:g,instructionTypes:[D.ClmmLockPosition],lookupTableAddress:[]}}static lockPositionInstructionV2({programId:e,auth:t,payer:n,positionOwner:i,lockOwner:c,positionNftAccount:u,positionId:r,positionNftMint:s,authPositionNftAccount:g,positionNftProgram:p,lockPositionId:P,lockNftMint:w,lockNftAccount:m,metadataAccount:y,withMetadata:d}){let a=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!0,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:je,isSigner:!1,isWritable:!1},{pubkey:Hn,isSigner:!1,isWritable:!1},{pubkey:Re,isSigner:!1,isWritable:!1},{pubkey:$,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:We.programId,isSigner:!1,isWritable:!1}],b=B([ae("withMetadata")]),I=Buffer.alloc(b.span);b.encode({withMetadata:d},I);let O=Buffer.from([...pi,...I]);return new se({keys:a,programId:e,data:O})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:i,positionNft:c}){let{publicKey:u}=z(i,c,$),{publicKey:r}=Le(n,c),s=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:Xn(e,r).publicKey,isSigner:!1,isWritable:!0},{pubkey:$,isSigner:!1,isWritable:!1},{pubkey:We.programId,isSigner:!1,isWritable:!1}];return new se({keys:s,programId:e,data:Buffer.from(pi)})}static harvestLockPositionInstruction(e){let[t,n]=[new R(e.poolKeys.programId),new R(e.poolKeys.id)],i=ee.getTickArrayStartIndex(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),c=ee.getTickArrayStartIndex(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:u}=de(t,n,i),{publicKey:r}=de(t,n,c),{publicKey:s}=z(e.owner,e.ownerPosition.nftMint,$),{publicKey:g}=Le(t,e.ownerPosition.nftMint),{publicKey:p}=Ze(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),P=[];for(let y=0;y<e.poolKeys.rewardInfos.length;y++)P.push({poolRewardVault:new R(e.poolKeys.rewardInfos[y].vault),ownerRewardVault:e.ownerRewardAccounts[y],rewardMint:new R(e.poolKeys.rewardInfos[y].mint.address)});let w=[...P.map(y=>[{pubkey:y.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:y.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:y.rewardMint,isSigner:!1,isWritable:!1}]).flat()],m=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:Xn(e.programId,g).publicKey,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e.owner,isSigner:!0,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:new R(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new R(e.poolKeys.vault.B),isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:e.userVaultA,isSigner:!1,isWritable:!0},{pubkey:e.userVaultB,isSigner:!1,isWritable:!0},{pubkey:$,isSigner:!1,isWritable:!1},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:new R(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new R(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...w];return new se({keys:m,programId:e.programId,data:Buffer.from(fi)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:i,lockOwner:c,lockNftMint:u,lockNftAccount:r,positionNftAccount:s,positionId:g,poolId:p,protocolPosition:P,vaultA:w,vaultB:m,tickArrayLower:y,tickArrayUpper:d,userVaultA:a,userVaultB:b,mintA:I,mintB:O,rewardAccounts:F,exTickArrayBitmap:x}){let N=[...x?[{pubkey:x,isSigner:!1,isWritable:!0}]:[],...F.map(L=>[{pubkey:L.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:L.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:L.rewardMint,isSigner:!1,isWritable:!1}]).flat()],C=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:$,isSigner:!1,isWritable:!1},{pubkey:ce,isSigner:!1,isWritable:!1},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:I,isSigner:!1,isWritable:!1},{pubkey:O,isSigner:!1,isWritable:!1},...N];return new se({keys:C,programId:e,data:Buffer.from(fi)})}};import{PublicKey as Qn}from"@solana/web3.js";var ma=B([S("instruction")]),da=B([S("instruction")]),pa=B([o("rewardState"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardLastUpdateTime"),o("totalReward"),o("totalRewardEmissioned"),o("rewardClaimed"),o("rewardPerSecond"),_("accRewardPerShare"),A("rewardVault"),A("rewardMint"),A("rewardSender"),o("rewardType"),M(o(),15,"padding")]),fa=B([o("state"),o("nonce"),A("lpVault"),A("rewardVault"),A(),A(),o(),o(),o("totalReward"),_("perShareReward"),o("lastSlot"),o("perSlotReward")]),ya=B([o("state"),o("nonce"),A("lpVault"),A("rewardVaultA"),o("totalRewardA"),_("perShareRewardA"),o("perSlotRewardA"),S("option"),A("rewardVaultB"),W(7),o("totalRewardB"),_("perShareRewardB"),o("perSlotRewardB"),o("lastSlot"),A()]),ba=B([o(),o("state"),o("nonce"),o("validRewardTokenNum"),_("rewardMultiplier"),o("rewardPeriodMax"),o("rewardPeriodMin"),o("rewardPeriodExtend"),A("lpMint"),A("lpVault"),M(pa,5,"rewardInfos"),A("creator"),A(),M(o(),32,"padding")]),ga=new Proxy(fa,{get(l,e,t){return e==="decode"?(...n)=>{let i=l.decode(...n);return q(E({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(l,e,t)}}),Pa=new Proxy(ya,{get(l,e,t){return e==="decode"?(...n)=>{let i=l.decode(...n);return q(E({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(l,e,t)}}),gi=new Proxy(ba,{get(l,e,t){return e==="decode"?(...n)=>{let i=l.decode(...n);return q(E({},i),{version:6,rewardInfos:i.rewardInfos.map(c=>{var u;return q(E({},c),{rewardType:((u=Object.entries(Mt).find(r=>String(r[1])===c.rewardType.toString()))!=null?u:["Standard SPL"])[0]})})})}:Reflect.get(l,e,t)}}),Aa=B([o("isSet"),o("rewardPerSecond"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardType")]),wa=B([S("instruction"),o("nonce"),M(Aa,5,"rewardTimeInfo")]),ka=B([S("instruction"),o("rewardReopenTime"),o("rewardEndTime"),o("rewardPerSecond")]),Ta=B([S("instruction"),o("isSet"),o("rewardPerSecond"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardType")]),xb=B([o("state"),A("id"),A("owner"),o("deposited"),M(o(),1,"rewardDebts")]),Pi=B([o("state"),A("id"),A("owner"),o("deposited"),M(_(),1,"rewardDebts"),o(""),o("voteLockedBalance"),M(o(),15)]),Cb=B([o("state"),A("id"),A("owner"),o("deposited"),M(o(),2,"rewardDebts")]),ha=B([o("state"),A("id"),A("owner"),o("deposited"),M(_(),2,"rewardDebts"),M(o(),17)]),Ia=B([o(),o("state"),A("id"),A("owner"),o("deposited"),M(_(),5,"rewardDebts"),M(o(),16)]),Ba=B([S("instruction"),o("amount")]),Sa=B([A("mint"),A("grantAuthority"),o("baselineVoteWeightScaledFactor"),o("maxExtraLockupVoteWeightScaledFactor"),o("lockupSaturationSecs"),Lo("digitShift"),M(S(),7,"reserved1"),M(o(),7,"reserved2")]),Ka=B([W(8),A("governanceProgramId"),A("realm"),A("realmGoverningTokenMint"),A("realmAuthority"),M(S(),32,"reserved1"),M(Sa,4,"votingMints"),yt("timeOffset"),S("bump"),M(S(),7,"reserved2"),M(o(),11,"reserved3")]),xa=B([yt("startTime"),yt("endTime"),S("kind"),M(S(),15,"reserved")]),Ca=B([M(xa,1,"lockup"),o("amountDeposited_native"),o("amountInitiallyLockedNative"),ae("isUsed"),ae("allowClawback"),S("votingMintConfigIdx"),M(S(),29,"reserved")]),Ra=B([W(8),A("voterAuthority"),A("registrar"),M(Ca,32,"deposits"),S("voterBump"),S("voterWweightRecordBump"),M(S(),94,"reserved")]);import{NATIVE_MINT as Vb}from"@solana/spl-token";var Eb=G("Raydium_farm_config"),La=new Qn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Oa=new Qn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Db=new Qn("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var Mt={"Standard SPL":0,"Option tokens":1},Ai={[Fn.toString()]:3,[vn.toString()]:4,[_n.toString()]:5,[Jt.toString()]:6,[Je.FARM_PROGRAM_ID_V3.toString()]:3,[Je.FARM_PROGRAM_ID_V4.toString()]:4,[Je.FARM_PROGRAM_ID_V5.toString()]:5,[Je.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as hg,SystemProgram as Ig,SYSVAR_CLOCK_PUBKEY as Bg,SYSVAR_RENT_PUBKEY as Sg,TransactionInstruction as Kg}from"@solana/web3.js";import Cg from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Lg,createAssociatedTokenAccountIdempotentInstruction as Og,TOKEN_PROGRAM_ID as Ng}from"@solana/spl-token";import Jb from"bn.js";import{PublicKey as Na}from"@solana/web3.js";import Ma from"bn.js";function Fa(l){return typeof l=="object"&&l!==null&&![Pe,Ke,Na,H,Ma,Ne,Ye].some(e=>typeof e=="object"&&l instanceof e)}function he(l){return typeof l=="string"?An(l):Array.isArray(l)?l.map(e=>he(e)):Fa(l)?Object.fromEntries(Object.entries(l).map(([e,t])=>[e,he(t)])):l}var dg=G("Raydium.farm.util");var Gg=G("Raydium_farm_instruction"),zg={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};import OP from"bn.js";import{PublicKey as Fw}from"@solana/web3.js";import{AccountLayout as Vw,MintLayout as Ew,NATIVE_MINT as Dw,TOKEN_PROGRAM_ID as qw}from"@solana/spl-token";import FP from"bn.js";import ki from"bn.js";var Ua=new ki(25),Ga=new ki(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as oA,TOKEN_PROGRAM_ID as ln}from"@solana/spl-token";import{PublicKey as qe,SystemProgram as rA,SYSVAR_RENT_PUBKEY as aA,TransactionInstruction as mn}from"@solana/web3.js";import un from"bn.js";var Zn=B([S("instruction"),o("amountIn"),o("minAmountOut")]),$n=B([S("instruction"),o("maxAmountIn"),o("amountOut")]),JP=B([S("instruction"),S("nonce")]),za=B([S("instruction"),S("nonce"),o("startTime")]),Ti=B([o("status"),o("nonce"),o("maxOrder"),o("depth"),o("baseDecimal"),o("quoteDecimal"),o("state"),o("resetFlag"),o("minSize"),o("volMaxCutRatio"),o("amountWaveRatio"),o("baseLotSize"),o("quoteLotSize"),o("minPriceMultiplier"),o("maxPriceMultiplier"),o("systemDecimalValue"),o("minSeparateNumerator"),o("minSeparateDenominator"),o("tradeFeeNumerator"),o("tradeFeeDenominator"),o("pnlNumerator"),o("pnlDenominator"),o("swapFeeNumerator"),o("swapFeeDenominator"),o("baseNeedTakePnl"),o("quoteNeedTakePnl"),o("quoteTotalPnl"),o("baseTotalPnl"),o("poolOpenTime"),o("punishPcAmount"),o("punishCoinAmount"),o("orderbookToInitTime"),_("swapBaseInAmount"),_("swapQuoteOutAmount"),o("swapBase2QuoteFee"),_("swapQuoteInAmount"),_("swapBaseOutAmount"),o("swapQuote2BaseFee"),A("baseVault"),A("quoteVault"),A("baseMint"),A("quoteMint"),A("lpMint"),A("openOrders"),A("marketId"),A("marketProgramId"),A("targetOrders"),A("withdrawQueue"),A("lpVault"),A("owner"),o("lpReserve"),M(o(),3,"padding")]),eA=B([o("accountType"),o("status"),o("nonce"),o("maxOrder"),o("depth"),o("baseDecimal"),o("quoteDecimal"),o("state"),o("resetFlag"),o("minSize"),o("volMaxCutRatio"),o("amountWaveRatio"),o("baseLotSize"),o("quoteLotSize"),o("minPriceMultiplier"),o("maxPriceMultiplier"),o("systemDecimalsValue"),o("abortTradeFactor"),o("priceTickMultiplier"),o("priceTick"),o("minSeparateNumerator"),o("minSeparateDenominator"),o("tradeFeeNumerator"),o("tradeFeeDenominator"),o("pnlNumerator"),o("pnlDenominator"),o("swapFeeNumerator"),o("swapFeeDenominator"),o("baseNeedTakePnl"),o("quoteNeedTakePnl"),o("quoteTotalPnl"),o("baseTotalPnl"),o("poolOpenTime"),o("punishPcAmount"),o("punishCoinAmount"),o("orderbookToInitTime"),_("swapBaseInAmount"),_("swapQuoteOutAmount"),_("swapQuoteInAmount"),_("swapBaseOutAmount"),o("swapQuote2BaseFee"),o("swapBase2QuoteFee"),A("baseVault"),A("quoteVault"),A("baseMint"),A("quoteMint"),A("lpMint"),A("modelDataAccount"),A("openOrders"),A("marketId"),A("marketProgramId"),A("targetOrders"),A("owner"),M(o(),64,"padding")]),Xa=B([S("instruction"),o("baseAmountIn"),o("quoteAmountIn"),o("fixedSide"),o("otherAmountMin")]),Ya=B([S("instruction"),o("lpAmount"),o("baseAmountMin"),o("quoteAmountMin")]);var Ha=B([o("fee")]);var cn=G("Raydium_liquidity_instruction");function Qa({poolKeys:l,userKeys:e,amountIn:t,minAmountOut:n,modelDataPubKey:i=Lt},c){let u=he(l),r=Buffer.alloc(Zn.span);Zn.encode({instruction:9,amountIn:te(t),minAmountOut:te(n)},r);let s=[f({pubkey:ln,isWritable:!1}),f({pubkey:u.id}),f({pubkey:u.authority,isWritable:!1}),f({pubkey:u.openOrders})];return c===4&&s.push(f({pubkey:u.targetOrders})),s.push(f({pubkey:u.vault.A}),f({pubkey:u.vault.B})),c===5&&s.push(f({pubkey:i})),s.push(f({pubkey:u.marketProgramId,isWritable:!1}),f({pubkey:u.marketId}),f({pubkey:u.marketBids}),f({pubkey:u.marketAsks}),f({pubkey:u.marketEventQueue}),f({pubkey:u.marketBaseVault}),f({pubkey:u.marketQuoteVault}),f({pubkey:u.marketAuthority,isWritable:!1}),f({pubkey:e.tokenAccountIn}),f({pubkey:e.tokenAccountOut}),f({pubkey:e.owner,isWritable:!1,isSigner:!0})),new mn({programId:u.programId,keys:s,data:r})}function Za({poolKeys:l,userKeys:e,maxAmountIn:t,amountOut:n,modelDataPubKey:i=Lt},c){let u=he(l),r=Buffer.alloc($n.span);$n.encode({instruction:11,maxAmountIn:te(t),amountOut:te(n)},r);let s=[f({pubkey:ln,isWritable:!1}),f({pubkey:u.id}),f({pubkey:u.authority,isWritable:!1}),f({pubkey:u.openOrders}),f({pubkey:u.targetOrders}),f({pubkey:u.vault.A}),f({pubkey:u.vault.B})];return c===5&&s.push(f({pubkey:i})),s.push(f({pubkey:u.marketProgramId,isWritable:!1}),f({pubkey:u.marketId}),f({pubkey:u.marketBids}),f({pubkey:u.marketAsks}),f({pubkey:u.marketEventQueue}),f({pubkey:u.marketBaseVault}),f({pubkey:u.marketQuoteVault}),f({pubkey:u.marketAuthority,isWritable:!1}),f({pubkey:e.tokenAccountIn}),f({pubkey:e.tokenAccountOut}),f({pubkey:e.owner,isWritable:!1,isSigner:!0})),new mn({programId:u.programId,keys:s,data:r})}function $a(l,e,t,n,i,c,u,r,s,g){let p=B([S("instructionId"),o("amountIn"),o("minAmountOut")]),P=Buffer.alloc(p.span);p.encode({instructionId:16,amountIn:s,minAmountOut:g},P);let w=[{pubkey:ln,isWritable:!1,isSigner:!1},{pubkey:e,isWritable:!0,isSigner:!1},{pubkey:t,isWritable:!1,isSigner:!1},{pubkey:n,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:c,isWritable:!0,isSigner:!1},{pubkey:u,isWritable:!0,isSigner:!1},{pubkey:r,isWritable:!1,isSigner:!0}];return new mn({programId:l,keys:w,data:P})}function ja(l,e,t,n,i,c,u,r,s,g){let p=B([S("instructionId"),o("maxAmountIn"),o("amountOut")]),P=Buffer.alloc(p.span);p.encode({instructionId:17,maxAmountIn:s,amountOut:g},P);let w=[{pubkey:ln,isWritable:!1,isSigner:!1},{pubkey:e,isWritable:!0,isSigner:!1},{pubkey:t,isWritable:!1,isSigner:!1},{pubkey:n,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:c,isWritable:!0,isSigner:!1},{pubkey:u,isWritable:!0,isSigner:!1},{pubkey:r,isWritable:!1,isSigner:!0}];return new mn({programId:l,keys:w,data:P})}function jn(l){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:c,fixedSide:u}=l;if(t===4){if(u==="in")return $a(new qe(e.programId),new qe(e.id),new qe(e.authority),new qe(e.vault.A),new qe(e.vault.B),n.tokenAccountIn,n.tokenAccountOut,n.owner,new un(i.toString()),new un(c.toString()));if(u==="out")return ja(new qe(e.programId),new qe(e.id),new qe(e.authority),new qe(e.vault.A),new qe(e.vault.B),n.tokenAccountIn,n.tokenAccountOut,n.owner,new un(i.toString()),new un(c.toString()));cn.logWithError("invalid params","params",l)}throw cn.logWithError("invalid version, only support pool v4","poolKeys.version",t),new Error("invalid version")}function Jn(l){let{poolKeys:e,version:t,userKeys:n,amountIn:i,amountOut:c,fixedSide:u}=l;if(t===4||t===5){let r={poolKeys:e,userKeys:n};if(u==="in")return Qa(q(E({},r),{amountIn:i,minAmountOut:c}),t);if(u==="out")return Za(q(E({},r),{maxAmountIn:i,amountOut:c}),t);cn.logWithError("invalid params","params",l)}throw cn.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}var Ja=5e4,es=B([o("x"),o("y"),o("price")]),AA=B([o("accountType"),o("status"),o("multiplier"),o("validDataCount"),M(es,Ja,"DataElement")]);import{PublicKey as LA}from"@solana/web3.js";import NA from"decimal.js";import{TOKEN_PROGRAM_ID as FA}from"@solana/spl-token";import{PublicKey as hA}from"@solana/web3.js";var SA=G("Raydium_liquidity_serum");import uk from"bn.js";import lk from"decimal.js";import{TOKEN_PROGRAM_ID as uw}from"@solana/spl-token";import{PublicKey as lw}from"@solana/web3.js";import dw from"bn.js";import{SystemProgram as QA,SYSVAR_RENT_PUBKEY as ZA,Transaction as $A,TransactionInstruction as jA}from"@solana/web3.js";import{createInitializeAccountInstruction as ew,TOKEN_PROGRAM_ID as tw}from"@solana/spl-token";function ts(l="accountFlags"){let e=new Zt(l);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var ns=B([W(5),ts("accountFlags"),A("ownAddress"),o("vaultSignerNonce"),A("baseMint"),A("quoteMint"),A("baseVault"),o("baseDepositsTotal"),o("baseFeesAccrued"),A("quoteVault"),o("quoteDepositsTotal"),o("quoteFeesAccrued"),o("quoteDustThreshold"),A("requestQueue"),A("eventQueue"),A("bids"),A("asks"),o("baseLotSize"),o("quoteLotSize"),o("feeRateBps"),o("referrerRebatesAccrued"),W(7)]);import{PublicKey as vT}from"@solana/web3.js";import{AccountLayout as VT,NATIVE_MINT as ET,TOKEN_2022_PROGRAM_ID as DT,TOKEN_PROGRAM_ID as WT,createAssociatedTokenAccountIdempotentInstruction as qT}from"@solana/spl-token";import Mk from"bn.js";import ss from"bn.js";var wk=new ss(0);import Sk from"bn.js";import us from"bn.js";var De=new us(1e6);import ZT from"bn.js";import jT from"decimal.js";import{PublicKey as eT,TransactionInstruction as ms,Keypair as nT,SystemProgram as oT}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as rT,TOKEN_2022_PROGRAM_ID as aT,TOKEN_PROGRAM_ID as sT}from"@solana/spl-token";var Ek=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Dk=Buffer.from("amm_config","utf8"),Wk=Buffer.from("pool","utf8"),qk=Buffer.from("pool_lp_mint","utf8"),Uk=Buffer.from("pool_vault","utf8"),Gk=Buffer.from("observation","utf8"),zk=Buffer.from("permission","utf8"),Xk=Buffer.from("support_mint","utf8"),Yk=Buffer.from("creator_fee_share","utf8");var Hk=Buffer.from("locked_liquidity","utf8");var fT=G("Raydium_cpmm"),ds={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])};function dn(l,e,t,n,i,c,u,r,s,g,p,P,w,m,y,d){let a=B([o("amountIn"),o("amounOutMin")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:P,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],I=Buffer.alloc(a.span);return a.encode({amountIn:y,amounOutMin:d},I),new ms({keys:b,programId:l,data:Buffer.from([...ds.swapBaseInput,...I])})}var ps=B([W(8),S("bump"),ae("disableCreatePool"),ue("index"),o("tradeFeeRate"),o("protocolFeeRate"),o("fundFeeRate"),o("createPoolFee"),A("protocolOwner"),A("fundOwner"),o("creatorFeeRate"),o("creatorFeeShareRate"),M(o(),14)]),hi=B([W(8),A("configId"),A("poolCreator"),A("vaultA"),A("vaultB"),A("mintLp"),A("mintA"),A("mintB"),A("mintProgramA"),A("mintProgramB"),A("observationId"),S("bump"),S("status"),S("lpDecimals"),S("mintDecimalA"),S("mintDecimalB"),o("lpAmount"),o("protocolFeesMintA"),o("protocolFeesMintB"),o("fundFeesMintA"),o("fundFeesMintB"),o("openTime"),o("epoch"),S("feeOn"),ae("enableCreatorFee"),M(S(),6),o("creatorFeesMintA"),o("creatorFeesMintB"),M(o(),28)]),gT=B([W(8),A("configId"),M(o(),30)]),PT=B([W(8),S("bump"),A("creator"),A("ammConfig"),o("shareRate"),M(o(),8)]);import{PublicKey as bs,Transaction as eo,TransactionInstruction as gs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ps}from"@solana/spl-token";import Ii from"bn.js";var Ae=class extends Ie{static getPdaPoolId(e,t){return J([Ae.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return J([Ae.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Ii(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:i,chainTime:c}){if(n.length===0)return[];let u=n.map(p=>Ae.getPdaPoolId(t,p).publicKey),r=[];for(let p=0;p<Ae.VERSION_PROJECT.length;p++)r.push(...u.map(P=>Ae.getPdaOwnerId(t,P,i,p).publicKey));let s=await ze(e,[...u,...r]),g=[];for(let p=0;p<s.length;p++){let P=Math.floor(p/n.length),w=p%n.length,m=u[w],y=r[p],d=s[w],a=s[n.length+p];if(!(d&&a)||d.data.length!==Ae.POOL_LAYOUT.span||a.data.length!==Ae.OWNER_LAYOUT.span)continue;let b=Ae.POOL_LAYOUT.decode(d.data),I=Ae.OWNER_LAYOUT.decode(a.data),O=b.openTime.toNumber(),F=b.endTime.toNumber(),x=I.tokenInfo.map(L=>L.debtAmount.gt(new Ii(0))).filter(L=>!L).length!==3,N=c>O&&c<F&&b.status===1,C=x&&N;g.push({programId:t,poolId:m,ammId:b.ammId,ownerAccountId:y,snapshotLpAmount:I.lpAmount,project:Ae.VERSION_PROJECT[P],openTime:O,endTime:F,canClaim:C,canClaimErrorType:x?N?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:b.tokenInfo.map((L,v)=>({mintAddress:L.mintAddress,mintVault:L.mintVault,mintDecimals:L.mintDecimals,perLpLoss:L.perLpLoss,debtAmount:I.tokenInfo[v].debtAmount.add(I.tokenInfo[v].claimedAmount)}))})}return g}async makeClaimTransaction({poolInfo:e,ownerInfo:t,feePayer:n}){t.wallet||this.scope.checkOwner();let i=this.createTxBuilder(n),c=t.wallet||this.scope.ownerPubKey,u=[];for(let g of e.tokenInfo){let{account:p,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({mint:g.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:g.mintAddress.equals(Pe.WSOL.mint),createInfo:{payer:c,amount:0},skipCloseAccount:!g.mintAddress.equals(Pe.WSOL.mint),associatedOnly:g.mintAddress.equals(Pe.WSOL.mint)?!1:t.associatedOnly});P&&i.addInstruction(P),u.push(p)}i.addInstruction({instructions:[Ae.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:c,ownerPda:e.ownerAccountId,claimAddress:u}})]});let{transaction:r,signers:s}=i.build();return[{transaction:r,signer:s}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:n}){let i=this.createTxBuilder(n),c=t.wallet||this.scope.ownerPubKey,u={};for(let p of e){let P=[];for(let w of p.tokenInfo){let{account:m,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({mint:w.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:w.mintAddress.equals(Pe.WSOL.mint),createInfo:{payer:c,amount:0},skipCloseAccount:!w.mintAddress.equals(Pe.WSOL.mint),associatedOnly:w.mintAddress.equals(Pe.WSOL.mint)?!1:t.associatedOnly});y&&i.addInstruction(y),m&&(u[w.mintAddress.toString()]=m,P.push(m))}i.addInstruction({instructions:[Ae.makeClaimInstruction({programId:p.programId,poolInfo:p,ownerInfo:{wallet:c,ownerPda:p.ownerAccountId,claimAddress:P}})]})}let{transaction:r,signers:s}=i.build(),g=i.allInstructions;return xn(g,[c,...s.map(p=>p.publicKey)])?[{transaction:r,signer:s}]:[{transaction:new eo().add(...g.slice(0,i.AllTxData.instructions.length-1)),signer:s},{transaction:new eo().add(...g.slice(i.AllTxData.instructions.length-1)),signer:[]},{transaction:new eo().add(...i.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=B([]),c=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(s=>({pubkey:s,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:s})=>({pubkey:s,isSigner:!1,isWritable:!0})),{pubkey:Ps,isSigner:!1,isWritable:!1}],u=Buffer.alloc(i.span);i.encode({},u);let r=Buffer.from([10,66,208,184,161,6,191,98,...u]);return new gs({keys:c,programId:e,data:r})}},ve=Ae;ve.CLAIMED_NUM=3,ve.POOL_LAYOUT=B([W(8),S("bump"),S("status"),o("openTime"),o("endTime"),A("ammId"),M(B([S("mintDecimals"),A("mintAddress"),A("mintVault"),o("perLpLoss"),o("totalClaimedAmount")]),Ae.CLAIMED_NUM,"tokenInfo"),M(o(),10,"padding")]),ve.OWNER_LAYOUT=B([W(8),S("bump"),S("version"),A("poolId"),A("owner"),o("lpAmount"),M(B([A("mintAddress"),o("debtAmount"),o("claimedAmount")]),Ae.CLAIMED_NUM,"tokenInfo"),M(o(),4,"padding")]),ve.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new bs(e)),ve.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},ve.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];var Uh=Buffer.from("vault_auth_seed","utf8"),Gh=Buffer.from("global_config","utf8"),zh=Buffer.from("pool_vesting","utf8"),Xh=Buffer.from("platform_config","utf8"),Yh=Buffer.from("platform_fee_vault_auth_seed","utf8"),Hh=Buffer.from("creator_fee_vault_auth_seed","utf8"),Qh=Buffer.from("platform_global_access","utf8"),Zh=Buffer.from("platform_allow_config","utf8"),$h=Buffer.from("platform_curve_rule","utf8");import{ASSOCIATED_TOKEN_PROGRAM_ID as iI,TOKEN_2022_PROGRAM_ID as rI,TOKEN_PROGRAM_ID as aI}from"@solana/spl-token";import{SystemProgram as lI,TransactionInstruction as mI}from"@solana/web3.js";import As from"bn.js";var fI={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 yI=new As("18446744073709551615");import{NATIVE_MINT as IS,TOKEN_2022_PROGRAM_ID as BS,TOKEN_PROGRAM_ID as SS,createAssociatedTokenAccountIdempotentInstruction as xS,createSyncNativeInstruction as CS,getTransferFeeConfig as RS,unpackMint as LS}from"@solana/spl-token";import ye from"bn.js";import{PublicKey as Ns,SystemProgram as MS}from"@solana/web3.js";var ws=B([o(),o("epoch"),S("curveType"),ue("index"),o("migrateFee"),o("tradeFeeRate"),o("maxShareFeeRate"),o("minSupplyA"),o("maxLockRate"),o("minSellRateA"),o("minMigrateRateA"),o("minFundRaisingB"),A("mintB"),A("protocolFeeOwner"),A("migrateFeeOwner"),A("migrateToAmmWallet"),A("migrateToCpmmWallet"),M(o(),16)]),ks=B([o("totalLockedAmount"),o("cliffPeriod"),o("unlockPeriod"),o("startTime"),o("totalAllocatedShare")]),Ts=B([o(),o("epoch"),S("bump"),S("status"),S("mintDecimalsA"),S("mintDecimalsB"),S("migrateType"),o("supply"),o("totalSellA"),o("virtualA"),o("virtualB"),o("realA"),o("realB"),o("totalFundRaisingB"),o("protocolFee"),o("platformFee"),o("migrateFee"),ks.replicate("vestingSchedule"),A("configId"),A("platformId"),A("mintA"),A("mintB"),A("vaultA"),A("vaultB"),A("creator"),S("mintProgramFlag"),S("cpmmCreatorFeeOn"),o("platformVestingShare"),M(S(),54)]),PI=B([o(),o("epoch"),A("poolId"),A("beneficiary"),o("claimedAmount"),o("tokenShareAmount"),M(o(),8)]),hs=B([S("migrateType"),S("migrateCpmmFeeOn"),o("supply"),o("totalSellA"),o("totalFundRaisingB"),o("totalLockedAmount"),o("cliffPeriod"),o("unlockPeriod")]),AI=B([o("epoch"),S("index"),A("configId"),hs.replicate("bondingCurveParam"),M(o(),50)]),Bi=B([o(),o("epoch"),A("platformClaimFeeWallet"),A("platformLockNftWallet"),o("platformScale"),o("creatorScale"),o("burnScale"),o("feeRate"),M(S(),64,"name"),M(S(),256,"web"),M(S(),256,"img"),A("cpConfigId"),o("creatorFeeRate"),A("transferFeeExtensionAuth"),A("platformVestingWallet"),o("platformVestingScale"),A("platformCpCreator"),S("restrictGlobalConfig"),S("restrictCurveParam"),A("curveRuleManager"),M(S(),78)]),Is=B([S("field"),S("op"),_("value")]),Bs=B([ue("groupId"),o("epoch"),Mn(Is,"constraints")]),Ss=B([o(),S("bump"),S("version"),A("platformId"),A("configId"),o("epoch"),M(o(),8),Mn(Bs,"groups")]);import oB from"bn.js";import rB from"decimal.js";import hI from"bn.js";import BI from"decimal.js";import LI from"bn.js";import NI from"decimal.js";import UI from"bn.js";import zI from"decimal.js";import xi from"bn.js";import to from"decimal.js";var pn=class{static _multipler(e){return new to(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new to(e.toString()).div(this._Q64).mul(this._multipler(t)).div(this._multipler(n))}static getPriceX64({price:e,decimalA:t,decimalB:n}){let i=e.mul(this._multipler(n)).div(this._multipler(t));return new xi(i.mul(this._Q64).toFixed(0))}};pn._Q64=new to(new xi(1).shln(64).toString());import{TOKEN_2022_PROGRAM_ID as pB,TOKEN_PROGRAM_ID as fB}from"@solana/spl-token";import WS from"decimal.js";var qS={initPriceX64:new ye("515752397214619"),supply:new ye(1e15),totalSellA:new ye(7931e11),totalFundRaisingB:new ye(85e9),totalFundRaisingBUSD:new ye(125e8),totalLockedAmount:new ye("0"),cliffPeriod:new ye("0"),unlockPeriod:new ye("0"),decimals:6,virtualA:new ye("1073471847374405"),virtualB:new ye("30050573465"),realA:new ye(0),realB:new ye(0),protocolFee:new ye(0),platformId:new Ns("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new ye(0),cliffPeriod:new ye(0),unlockPeriod:new ye(0),startTime:new ye(0),totalAllocatedShare:new ye(0)}},US=new ye(1e4);import{PublicKey as YS}from"@solana/web3.js";import{getTransferFeeConfig as QS,MintLayout as ZS,TOKEN_2022_PROGRAM_ID as $S,TOKEN_PROGRAM_ID as jS,unpackMint as JS}from"@solana/spl-token";var Ms={[Vn.toBase58()]:3};var Fs=B([W(5),W(8),A("ownAddress"),o("vaultSignerNonce"),A("baseMint"),A("quoteMint"),A("baseVault"),o("baseDepositsTotal"),o("baseFeesAccrued"),A("quoteVault"),o("quoteDepositsTotal"),o("quoteFeesAccrued"),o("quoteDustThreshold"),A("requestQueue"),A("eventQueue"),A("bids"),A("asks"),o("baseLotSize"),o("quoteLotSize"),o("feeRateBps"),o("referrerRebatesAccrued"),W(7)]);import{PublicKey as rx}from"@solana/web3.js";var lx=G("Serum");import vs from"bn.js";var Fx=new vs(1e6);var LC=new ut(2),OC=new ut(3),NC=new ut(5),Pn=new ut(10),MC=new ut(100),FC=new ut(1e3),vC=new ut(1e4);function hn(l){return Pn.pow(te(l))}function bn(l,e=1,t=[]){let n=[...l];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{ASSOCIATED_TOKEN_PROGRAM_ID as no,TOKEN_2022_PROGRAM_ID as oo,TOKEN_PROGRAM_ID as et}from"@solana/spl-token";import{PublicKey as k,SystemProgram as Ft,TransactionInstruction as vt}from"@solana/web3.js";import _e from"bn.js";function dR(l,e,t,n,i,c,u,r,s,g,p,P){let w=B([S("instruction"),o("amountIn"),o("amountOut")]),m=[{pubkey:Ft.programId,isSigner:!1,isWritable:!1},{pubkey:et,isSigner:!1,isWritable:!1},{pubkey:new k(t.programId),isSigner:!1,isWritable:!1},{pubkey:new k(t.id),isSigner:!1,isWritable:!0},{pubkey:new k(n.id),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let d=he(t);m.push({pubkey:d.config.id,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(s)?d.vault.A:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.mintA.address.equals(s)?d.vault.B:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},...P.map(a=>({pubkey:a,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let d=he(t);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:new k("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0})}else{let d=he(t);m.push({pubkey:d.authority,isSigner:!1,isWritable:!1},{pubkey:d.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:d.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:d.openOrders,isSigner:!1,isWritable:!0},{pubkey:d.vault.A,isSigner:!1,isWritable:!0},{pubkey:d.vault.B,isSigner:!1,isWritable:!0},{pubkey:d.marketId,isSigner:!1,isWritable:!0},{pubkey:d.marketBids,isSigner:!1,isWritable:!0},{pubkey:d.marketAsks,isSigner:!1,isWritable:!0},{pubkey:d.marketEventQueue,isSigner:!1,isWritable:!0},...d.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:d.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:d.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:d.id,isSigner:!1,isWritable:!0},{pubkey:d.id,isSigner:!1,isWritable:!0}])}let y=Buffer.alloc(w.span);return w.encode({instruction:4,amountIn:g,amountOut:p},y),new vt({keys:m,programId:l,data:y})}function pR(l,e,t,n,i,c,u,r,s,g){let p=B([S("instruction")]),P=[{pubkey:Ft.programId,isSigner:!1,isWritable:!1},{pubkey:et,isSigner:!1,isWritable:!1},{pubkey:new k(String(n.programId)),isSigner:!1,isWritable:!1},{pubkey:new k(String(n.id)),isSigner:!1,isWritable:!0},{pubkey:new k(String(t.id)),isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!0,isWritable:!1}];if(e.type==="Concentrated"){let m=he(n);P.push({pubkey:m.config.id,isSigner:!1,isWritable:!1},{pubkey:m.id,isSigner:!1,isWritable:!0},{pubkey:m.mintA.address.equals(s)?m.vault.A:m.vault.B,isSigner:!1,isWritable:!0},{pubkey:m.mintA.address.equals(s)?m.vault.B:m.vault.A,isSigner:!1,isWritable:!0},{pubkey:m.id,isSigner:!1,isWritable:!0},...g.map(y=>({pubkey:y,isSigner:!1,isWritable:!0})))}else if(e.pooltype.includes("StablePool")){let m=he(n);P.push({pubkey:m.authority,isSigner:!1,isWritable:!1},{pubkey:m.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:m.id,isSigner:!1,isWritable:!0},{pubkey:new k("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),isSigner:!1,isWritable:!1},{pubkey:m.openOrders,isSigner:!1,isWritable:!0},{pubkey:m.vault.A,isSigner:!1,isWritable:!0},{pubkey:m.vault.B,isSigner:!1,isWritable:!0},{pubkey:m.marketId,isSigner:!1,isWritable:!0},{pubkey:m.marketBids,isSigner:!1,isWritable:!0},{pubkey:m.marketAsks,isSigner:!1,isWritable:!0},{pubkey:m.marketEventQueue,isSigner:!1,isWritable:!0},{pubkey:m.id,isSigner:!1,isWritable:!0},{pubkey:m.id,isSigner:!1,isWritable:!0})}else{let m=he(n);P.push({pubkey:m.authority,isSigner:!1,isWritable:!1},{pubkey:m.marketProgramId,isSigner:!1,isWritable:!1},{pubkey:m.marketAuthority,isSigner:!1,isWritable:!1},{pubkey:m.openOrders,isSigner:!1,isWritable:!0},{pubkey:m.vault.A,isSigner:!1,isWritable:!0},{pubkey:m.vault.B,isSigner:!1,isWritable:!0},{pubkey:m.marketId,isSigner:!1,isWritable:!0},{pubkey:m.marketBids,isSigner:!1,isWritable:!0},{pubkey:m.marketAsks,isSigner:!1,isWritable:!0},{pubkey:m.marketEventQueue,isSigner:!1,isWritable:!0},...m.marketProgramId.toString()==="srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"?[{pubkey:m.marketBaseVault,isSigner:!1,isWritable:!0},{pubkey:m.marketQuoteVault,isSigner:!1,isWritable:!0}]:[{pubkey:m.id,isSigner:!1,isWritable:!0},{pubkey:m.id,isSigner:!1,isWritable:!0}])}let w=Buffer.alloc(p.span);return p.encode({instruction:5},w),new vt({keys:P,programId:l,data:w})}function _s(l,e,t,n,i,c,u,r,s,g,p,P,w,m,y){var N;let d=[],a=[f({pubkey:et,isWritable:!1}),f({pubkey:oo,isWritable:!1}),f({pubkey:no,isWritable:!1}),f({pubkey:Ft.programId,isWritable:!1}),f({pubkey:e,isSigner:!0})];a.push(f({pubkey:t})),a.push(f({pubkey:i}));let b=[s,g],I=[p,P],O=[c,u,r];for(let C=0;C<b.length;C++){let L=b[C],v=O[C]===L.mintA.address;if(a.push(f({pubkey:new k(L.programId),isWritable:!1})),C===b.length-1?a.push(f({pubkey:i})):a.push(f({pubkey:n})),a.push(f({pubkey:new k(O[C])})),a.push(f({pubkey:new k(O[C+1])})),L.version===6){let K=I[C];a.push(f({pubkey:new k(K.config.id)})),a.push(f({pubkey:new k(K.id)})),a.push(f({pubkey:new k(v?K.vault.A:K.vault.B)})),a.push(f({pubkey:new k(v?K.vault.B:K.vault.A)})),a.push(f({pubkey:new k(L.observationId)})),a.push(f({pubkey:Oe})),a.push(f({pubkey:pe(new k(L.programId),new k(L.id)).publicKey})),d.push(io(L.sqrtPriceX64.toString(),v));for(let Y of(N=y[C])!=null?N:[])a.push(f({pubkey:new k(Y)}))}else if(L.version===5){let K=I[C];a.push(f({pubkey:new k(K.id)})),a.push(f({pubkey:new k(K.authority),isWritable:!1})),a.push(f({pubkey:new k(K.marketProgramId)})),a.push(f({pubkey:new k(K.marketAuthority)})),a.push(f({pubkey:en,isWritable:!1})),a.push(f({pubkey:new k(K.openOrders)})),a.push(f({pubkey:new k(K.vault.A)})),a.push(f({pubkey:new k(K.vault.B)})),a.push(f({pubkey:new k(K.id)})),a.push(f({pubkey:new k(K.id)})),a.push(f({pubkey:new k(K.id)})),a.push(f({pubkey:new k(K.id)})),a.push(f({pubkey:new k(K.id)})),a.push(f({pubkey:new k(K.id)})),a.push(f({pubkey:new k(K.marketId)})),a.push(f({pubkey:new k(K.marketBids)})),a.push(f({pubkey:new k(K.marketAsks)})),a.push(f({pubkey:new k(K.marketEventQueue)})),a.push(f({pubkey:new k(K.marketBaseVault)})),a.push(f({pubkey:new k(K.marketQuoteVault)}))}else if(L.version===4){let K=I[C],Y=L.status!==1;a.push(f({pubkey:new k(K.id)})),a.push(f({pubkey:new k(K.authority),isWritable:!1})),a.push(f({pubkey:new k(Y?K.id:K.marketProgramId)})),a.push(f({pubkey:new k(Y?K.id:K.marketAuthority)})),a.push(f({pubkey:new k(Y?K.id:K.openOrders)})),a.push(f({pubkey:new k(K.vault.A)})),a.push(f({pubkey:new k(K.vault.B)})),a.push(f({pubkey:new k(Y?K.id:K.marketId)})),a.push(f({pubkey:new k(Y?K.id:K.marketBids)})),a.push(f({pubkey:new k(Y?K.id:K.marketAsks)})),a.push(f({pubkey:new k(Y?K.id:K.marketEventQueue)})),a.push(f({pubkey:new k(Y?K.id:K.marketBaseVault)})),a.push(f({pubkey:new k(Y?K.id:K.marketQuoteVault)}))}else if(L.version===7){let K=I[C];a.push(f({pubkey:new k(K.authority)})),a.push(f({pubkey:new k(K.config.id)})),a.push(f({pubkey:new k(K.id)})),a.push(f({pubkey:new k(v?K.vault.A:K.vault.B)})),a.push(f({pubkey:new k(v?K.vault.B:K.vault.A)})),a.push(f({pubkey:new k(L.observationId)}))}else throw Error("pool type error")}let F=B([S("insId"),o("amountIn"),o("amountOut"),M(_(),d.length,"clmmPriceLimit")]),x=Buffer.alloc(F.span);return F.encode({insId:0,amountIn:w,amountOut:m,clmmPriceLimit:d},x),new vt({keys:a,programId:l,data:x})}function io(l,e){if(l)if(e){let t=new _e(l).div(new _e(25));return t.gt(Me.add(Te))?t:Me.add(Te)}else{let t=new _e(l).mul(new _e(25));return t.lt(Fe.sub(Te))?t:Fe.sub(Te)}else return e?Me.add(Te):Fe.sub(Te)}function Vs({routeProgram:l,ownerInfo:e,inputMint:t,swapInfo:n}){var i,c,u,r,s,g,p,P,w;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let m=n.poolKey[0],y=he(m),d=t.equals(y.mintA.address)?Me.add(Te):Fe.sub(Te);return $e.makeSwapBaseInInstructions({poolInfo:m,poolKeys:m,observationId:n.poolInfo[0].observationId,ownerInfo:{wallet:e.wallet,tokenAccountA:y.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:y.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((c=(i=n.minAmountOut.fee)==null?void 0:i.raw)!=null?c:new _e(0)),sqrtPriceLimitX64:d,remainingAccounts:(u=n.remainingAccounts[0])!=null?u:[]})}else if(n.poolInfo[0].version===7){let m=n.poolInfo[0],y=t.toString()===n.poolInfo[0].mintA.address;return{signers:[],instructions:[dn(m.programId,e.wallet,m.authority,m.configId,m.id,e.sourceToken,e.destinationToken,y?m.vaultA:m.vaultB,y?m.vaultB:m.vaultA,y?m.mintProgramA:m.mintProgramB,y?m.mintProgramB:m.mintProgramA,new k(m[y?"mintA":"mintB"].address),new k(m[y?"mintB":"mintA"].address),m.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw)],lookupTableAddress:[],instructionTypes:[y?D.CpmmSwapBaseIn:D.CpmmSwapBaseOut],address:{}}}else{let m=n.poolKey[0];return{signers:[],instructions:[n.poolInfo[0].pooltype.includes("StablePool")?Jn({poolKeys:m,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((s=(r=n.minAmountOut.fee)==null?void 0:r.raw)!=null?s:new _e(0)),fixedSide:"in"}):jn({poolKeys:m,version:n.poolInfo[0].pooltype.includes("StablePool")?5:4,userKeys:{tokenAccountIn:e.sourceToken,tokenAccountOut:e.destinationToken,owner:e.wallet},amountIn:n.amountIn.amount.raw,amountOut:n.minAmountOut.amount.raw.sub((p=(g=n.minAmountOut.fee)==null?void 0:g.raw)!=null?p:new _e(0)),fixedSide:"in"})],lookupTableAddress:m.lookupTableAccount?[m.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?D.AmmV5SwapBaseIn:D.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let m=n.poolInfo[0],y=n.poolInfo[1],d=n.poolKey[0],a=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[_s(l,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),n.outputMint.toString(),m,y,d,a,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((w=(P=n.minAmountOut.fee)==null?void 0:P.raw)!=null?w:new _e(0)),n.remainingAccounts)],instructionTypes:[D.RouteSwap],lookupTableAddress:[d.lookupTableAccount,a.lookupTableAccount].filter(b=>b!==void 0),address:{}}}else throw Error("route type error")}function fR({programId:l,wallet:e,amount:t,inputAccount:n,outputAccount:i,routeInfo:c,poolKeys:u}){var w;if(c.success===!1)throw Error("route info error");let r=[],s=[f({pubkey:et,isWritable:!1}),f({pubkey:oo,isWritable:!1}),f({pubkey:no,isWritable:!1}),f({pubkey:Ft.programId,isWritable:!1}),f({pubkey:e,isSigner:!0})],g={[c.data.inputMint]:n,[c.data.outputMint]:i};s.push(f({pubkey:g[c.data.inputMint]})),s.push(f({pubkey:g[c.data.outputMint]}));for(let m=0;m<u.length;m++){let y=c.data.routePlan[m],d=u[m],a=y.inputMint===d.mintA.address;if(s.push(f({pubkey:new k(d.programId),isWritable:!1})),m===u.length-1)s.push(f({pubkey:g[y.outputMint]}));else{let b=y.outputMint;if(g[b]===void 0){let I=z(e,new k(b),d.programId===ke.CLMM_PROGRAM_ID.toBase58()||d.programId===ke.CREATE_CPMM_POOL_PROGRAM.toBase58()?new k(a?d.mintB.programId:d.mintA.programId):et).publicKey;g[b]=I}s.push(f({pubkey:g[b]}))}if(s.push(f({pubkey:new k(y.inputMint)})),s.push(f({pubkey:new k(y.outputMint)})),d.programId===ke.CLMM_PROGRAM_ID.toBase58()){let b=d;s.push(f({pubkey:new k(b.config.id)})),s.push(f({pubkey:new k(b.id)})),s.push(f({pubkey:new k(a?b.vault.A:b.vault.B)})),s.push(f({pubkey:new k(a?b.vault.B:b.vault.A)})),s.push(f({pubkey:new k(b.observationId)})),s.push(f({pubkey:Oe,isWritable:!1})),s.push(f({pubkey:new k(b.exBitmapAccount)})),r.push(io(y.lastPoolPriceX64,a));for(let I of(w=y.remainingAccounts)!=null?w:[])s.push(f({pubkey:new k(I)}))}else if(d.programId===ke.AMM_STABLE.toBase58()){let b=d;s.push(f({pubkey:new k(b.id)})),s.push(f({pubkey:new k(b.authority),isWritable:!1})),s.push(f({pubkey:new k(b.marketProgramId),isWritable:!1})),s.push(f({pubkey:new k(b.marketAuthority),isWritable:!1})),s.push(f({pubkey:en,isWritable:!1})),s.push(f({pubkey:new k(b.openOrders)})),s.push(f({pubkey:new k(b.vault.A)})),s.push(f({pubkey:new k(b.vault.B)})),s.push(f({pubkey:new k(b.marketId)})),s.push(f({pubkey:new k(b.marketBids)})),s.push(f({pubkey:new k(b.marketAsks)})),s.push(f({pubkey:new k(b.marketEventQueue)})),s.push(f({pubkey:new k(b.marketBaseVault)})),s.push(f({pubkey:new k(b.marketQuoteVault)}))}else if(d.programId===ke.AMM_V4.toBase58()){let b=d;s.push(f({pubkey:new k(b.id)})),s.push(f({pubkey:new k(b.authority),isWritable:!1})),s.push(f({pubkey:new k(b.id)})),s.push(f({pubkey:new k(b.id)})),s.push(f({pubkey:new k(b.id)})),s.push(f({pubkey:new k(b.vault.A)})),s.push(f({pubkey:new k(b.vault.B)})),s.push(f({pubkey:new k(b.id)})),s.push(f({pubkey:new k(b.id)})),s.push(f({pubkey:new k(b.id)})),s.push(f({pubkey:new k(b.id)})),s.push(f({pubkey:new k(b.id)})),s.push(f({pubkey:new k(b.id)}))}else if(d.programId===ke.CREATE_CPMM_POOL_PROGRAM.toBase58()){let b=d;s.push(f({pubkey:new k(b.authority)})),s.push(f({pubkey:new k(b.config.id)})),s.push(f({pubkey:new k(b.id)})),s.push(f({pubkey:new k(a?b.vault.A:b.vault.B)})),s.push(f({pubkey:new k(a?b.vault.B:b.vault.A)})),s.push(f({pubkey:new k(b.observationId)}))}else throw Error("pool type error")}let p=B([S("insId"),o("amountIn"),o("amountOut"),M(_(),r.length,"clmmPriceLimit")]),P=Buffer.alloc(p.span);return p.encode({insId:0,amountIn:t,amountOut:new _e(c.data.otherAmountThreshold),clmmPriceLimit:r},P),new vt({keys:s,programId:l,data:P})}function yR({programId:l,wallet:e,inputAccount:t,outputAccount:n,routeInfo:i,poolKeys:c}){var P;if(i.success===!1)throw Error("route info error");let u=[],r=[f({pubkey:et,isWritable:!1}),f({pubkey:oo,isWritable:!1}),f({pubkey:no,isWritable:!1}),f({pubkey:Ft.programId,isWritable:!1}),f({pubkey:e,isSigner:!0})],s={[i.data.inputMint]:t,[i.data.outputMint]:n};for(let w=c.length-1;w>=0;w--){let m=i.data.routePlan[w],y=c[w],d=m.inputMint===y.mintA.address;if(r.push(f({pubkey:new k(y.programId)})),w===0)r.push(f({pubkey:s[m.inputMint]}));else{let a=m.inputMint;if(s[a]===void 0){let b=z(e,new k(a),y.programId===ke.CLMM_PROGRAM_ID.toBase58()||y.programId===ke.CREATE_CPMM_POOL_PROGRAM.toBase58()?new k(d?y.mintA.programId:y.mintB.programId):et).publicKey;s[a]=b}r.push(f({pubkey:s[a]}))}if(w===c.length-1)r.push(f({pubkey:s[m.outputMint]}));else{let a=m.outputMint;if(s[a]===void 0){let b=z(e,new k(a),y.programId===ke.CLMM_PROGRAM_ID.toBase58()||y.programId===ke.CREATE_CPMM_POOL_PROGRAM.toBase58()?new k(d?y.mintB.programId:y.mintA.programId):et).publicKey;s[a]=b}r.push(f({pubkey:s[a]}))}if(r.push(f({pubkey:new k(m.inputMint)})),r.push(f({pubkey:new k(m.outputMint)})),y.programId===ke.CLMM_PROGRAM_ID.toBase58()){let a=y;r.push(f({pubkey:new k(a.config.id)})),r.push(f({pubkey:new k(a.id)})),r.push(f({pubkey:new k(d?a.vault.A:a.vault.B)})),r.push(f({pubkey:new k(d?a.vault.B:a.vault.A)})),r.push(f({pubkey:new k(a.observationId)})),r.push(f({pubkey:Oe,isWritable:!1})),r.push(f({pubkey:new k(a.exBitmapAccount)})),u.push(io(m.lastPoolPriceX64,d));for(let b of(P=m.remainingAccounts)!=null?P:[])r.push(f({pubkey:new k(b)}))}else if(y.programId===ke.AMM_STABLE.toBase58()){let a=y;r.push(f({pubkey:new k(a.id)})),r.push(f({pubkey:new k(a.authority),isWritable:!1})),r.push(f({pubkey:new k(a.marketProgramId),isWritable:!1})),r.push(f({pubkey:new k(a.marketAuthority),isWritable:!1})),r.push(f({pubkey:en,isWritable:!1})),r.push(f({pubkey:new k(a.openOrders)})),r.push(f({pubkey:new k(a.vault.A)})),r.push(f({pubkey:new k(a.vault.B)})),r.push(f({pubkey:new k(a.marketId)})),r.push(f({pubkey:new k(a.marketBids)})),r.push(f({pubkey:new k(a.marketAsks)})),r.push(f({pubkey:new k(a.marketEventQueue)})),r.push(f({pubkey:new k(a.marketBaseVault)})),r.push(f({pubkey:new k(a.marketQuoteVault)}))}else if(y.programId===ke.AMM_V4.toBase58()){let a=y;r.push(f({pubkey:new k(a.id)})),r.push(f({pubkey:new k(a.authority),isWritable:!1})),r.push(f({pubkey:new k(a.id)})),r.push(f({pubkey:new k(a.id)})),r.push(f({pubkey:new k(a.id)})),r.push(f({pubkey:new k(a.vault.A)})),r.push(f({pubkey:new k(a.vault.B)})),r.push(f({pubkey:new k(a.id)})),r.push(f({pubkey:new k(a.id)})),r.push(f({pubkey:new k(a.id)})),r.push(f({pubkey:new k(a.id)})),r.push(f({pubkey:new k(a.id)})),r.push(f({pubkey:new k(a.id)}))}else if(y.programId===ke.CREATE_CPMM_POOL_PROGRAM.toBase58()){let a=y;r.push(f({pubkey:new k(a.authority)})),r.push(f({pubkey:new k(a.config.id)})),r.push(f({pubkey:new k(a.id)})),r.push(f({pubkey:new k(d?a.vault.A:a.vault.B)})),r.push(f({pubkey:new k(d?a.vault.B:a.vault.A)})),r.push(f({pubkey:new k(a.observationId)}))}else throw Error("pool type error")}let g=B([S("insId"),o("amountIn"),o("amountOut"),M(_(),u.length,"clmmPriceLimit")]),p=Buffer.alloc(g.span);return g.encode({insId:1,amountIn:new _e(i.data.otherAmountThreshold),amountOut:new _e(i.data.outputAmount),clmmPriceLimit:u},p),new vt({keys:r,programId:l,data:p})}var lL=new Es(0);function mL(l,e){var n,i,c,u,r;let t=(n=l.extensions)==null?void 0:n.feeConfig;if(!!t)return{transferFeeConfigAuthority:Ci.default,withdrawWithheldAuthority:Ci.default,withheldAmount:BigInt(0),olderTransferFee:{epoch:BigInt((c=(i=t.olderTransferFee.epoch)!=null?i:e)!=null?c:0),maximumFee:BigInt(t.olderTransferFee.maximumFee),transferFeeBasisPoints:t.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt((r=(u=t.newerTransferFee.epoch)!=null?u:e)!=null?r:0),maximumFee:BigInt(t.newerTransferFee.maximumFee),transferFeeBasisPoints:t.newerTransferFee.transferFeeBasisPoints}}}export{Vs as makeSwapInstruction,dR as route1Instruction,pR as route2Instruction,_s as routeInstruction,fR as swapBaseInAutoAccount,yR as swapBaseOutAutoAccount,mL as toTransferFeeConfig};
//# sourceMappingURL=index.mjs.map