@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 143 kB
JavaScript
var Ri=Object.defineProperty,Li=Object.defineProperties;var Oi=Object.getOwnPropertyDescriptors;var Vt=Object.getOwnPropertySymbols;var so=Object.prototype.hasOwnProperty,uo=Object.prototype.propertyIsEnumerable;var ao=(l,e,t)=>e in l?Ri(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)=>Li(l,Oi(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{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";import{PublicKey as Fi}from"@solana/web3.js";import{get as co,set as Ni}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={},Mi={};function G(l){let e=co(lo,l);if(!e){let t=co(Mi,l);e=new fn({name:l,logLevel:t}),Ni(lo,l,e)}return e}import{MINT_SIZE as Qs,TOKEN_PROGRAM_ID as Zs,getTransferFeeConfig as $s,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 Fi(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 wR from"decimal.js";import Ui from"big.js";import Wt from"bn.js";import vi from"toformat";var _i=vi,Tt=_i;import Dt from"big.js";import Ei from"bn.js";import Di 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(Di),Wi={[0]:It.ROUND_DOWN,[1]:It.ROUND_HALF_UP,[2]:It.ROUND_UP},qi={[0]:Dt.roundDown,[1]:Dt.roundHalfUp,[2]:Dt.roundUp},H=class{constructor(e,t=new Ei(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:Wi[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=qi[n]||1,new gn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Gi=G("Raydium_amount"),po=Tt(Ui);function zi(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")):Gi.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]=zi(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 Xi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as fo}from"@solana/spl-token";var qt={chainId:101,address:Xi.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 Yi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Hi}from"@solana/spl-token";function f({pubkey:l,isSigner:e=!1,isWritable:t=!0}){return{pubkey:l,isWritable:t,isSigner:e}}var Qi=[f({pubkey:Hi,isWritable:!1}),f({pubkey:yo.programId,isWritable:!1}),f({pubkey:Yi,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"),Ru=new ne("SysvarC1ock11111111111111111111111111111111"),je=new ne("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Zi=new ne("Sysvar1nstructions1111111111111111111111111"),$i=yo.programId,Lu=new ne("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ou=new ne("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Nu=new ne("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Mu=new ne("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Fu=new ne("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),vu=new ne("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),_u=new ne("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Vu=new ne("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Eu=new ne("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Du=new ne("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Wu=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 Ji=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&&Ji.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 TC}from"lodash";import mc 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"},er=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 Mc=G("Raydium_Api");import{PublicKey as Jm,SystemProgram as ed}from"@solana/web3.js";import{AccountLayout as rd,createAssociatedTokenAccountIdempotentInstruction as ad,TOKEN_PROGRAM_ID as sd,TOKEN_2022_PROGRAM_ID as ud}from"@solana/spl-token";import{PublicKey as ft,sendAndConfirmTransaction as Cn,SystemProgram as ar,Transaction as Kt,TransactionMessage as xt,VersionedTransaction as Ct}from"@solana/web3.js";import sr 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 tr,Transaction as To,TransactionMessage as nr,VersionedTransaction as ho}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as or}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]=tr.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 nr({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 ir=l=>Buffer.isBuffer(l)?l:l instanceof Uint8Array?Buffer.from(l.buffer,l.byteOffset,l.byteLength):Buffer.from(l),rr=l=>{let e=l.serialize({requireAllSignatures:!1,verifySignatures:!1});l instanceof ho&&(e=ir(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=or.toBase58()),t.feePayer||(t.feePayer=ko.generate().publicKey)),e.push(rr(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 sr.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(ar.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(Ci=>Ci.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 Rm,SystemProgram as Om}from"@solana/web3.js";import Fm from"bn.js";import{createCloseAccountInstruction as Em,createInitializeAccountInstruction as Dm,createTransferInstruction as Wm,TOKEN_PROGRAM_ID as qm}from"@solana/spl-token";import{Keypair as gm,PublicKey as Pm}from"@solana/web3.js";import km from"bn.js";import{TOKEN_PROGRAM_ID as Im}from"@solana/spl-token";import{PublicKey as Ar}from"@solana/web3.js";import Co,{isBN as Ro}from"bn.js";import{bits as ur,BitStructure as Tl,blob as cr,Blob as hl,cstr as Il,f32 as Bl,f32be as Sl,f64 as Kl,f64be as xl,greedy as Cl,Layout as lr,ns64 as Rl,ns64be as Ll,nu64 as Ol,nu64be as Nl,offset as mr,s16 as Ml,s16be as Fl,s24 as vl,s24be as _l,s32 as dr,s32be as Vl,s40 as El,s40be as Dl,s48 as Wl,s48be as ql,s8 as Ul,seq as pr,struct as Gl,Structure as fr,u16 as yr,u16be as zl,u24 as Xl,u24be as Yl,u32 as br,u32be as Hl,u40 as Ql,u40be as Zl,u48 as $l,u48be as jl,u8 as gr,UInt as Pr,union as Jl,Union as em,unionLayoutDiscriminator as tm,utf8 as nm}from"@solana/buffer-layout";var Ht=lr,Bo=fr;var Ln=Pr;var So=gr,ue=yr;var Qt=br;var le=dr;var Ko=pr;var W=cr;var On=ur,xo=mr;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 Ar(e),e=>e.toBuffer(),l)}function ae(l){return new Rt(So(),wr,kr,l)}function wr(l){if(l===0)return!1;if(l===1)return!0;throw new Error("Invalid bool: "+l)}function kr(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 sP,SystemProgram as uP}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as lP}from"@solana/spl-token";import{PublicKey as hr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ir}from"@solana/spl-token";function z(l,e,t){return J([l.toBuffer(),(t!=null?t:Ir).toBuffer(),e.toBuffer()],new hr("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"),Br=new V("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Mo=new V("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Vn=new V("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),En=new V("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Sr=new V("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),en=new V("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Dn=new V("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Fo=new V("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),vo=new V("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Lt=new V("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Kr=new V("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),_o=new V("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),tn=new V("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Vo=new V("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),xr=new V("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Eo=new V("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Do=new V("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Wo=new V("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Cr=new V("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Ad=new V("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),wd=new V("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Rr=new V("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Lr=new V("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX"),ke={AMM_V4:En,AMM_STABLE:Sr,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:Br,Router:Kr,CREATE_CPMM_POOL_PROGRAM:tn,CREATE_CPMM_POOL_AUTH:Vo,CREATE_CPMM_POOL_FEE_ACC:xr,LOCK_CPMM_PROGRAM:Eo,LOCK_CPMM_AUTH:Do,LAUNCHPAD_PROGRAM:Wo,LAUNCHPAD_AUTH:Cr,LAUNCHPAD_PLATFORM:Rr,LAUNCHPAD_CONFIG:Lr,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 wP from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as Gy,TOKEN_2022_PROGRAM_ID as zy,TOKEN_PROGRAM_ID as Xy}from"@solana/spl-token";import{PublicKey as Hy}from"@solana/web3.js";import Zy from"bn.js";import jy from"decimal.js";import{TOKEN_PROGRAM_ID as Md}from"@solana/spl-token";import{PublicKey as Vd}from"@solana/web3.js";var Or=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 Nr=new X(1).shln(128),at=new X(1).shln(64).subn(1),Mr=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,Zd=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),$d=new X(-1);var jd=new X("18446744073700000000");var Fr=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)]),vr=B([oe("blockTimestamp"),yt("tickCumulative"),M(o(),4)]),Zo=B([W(8),ae("initialized"),o("recentEpoch"),ue("observationIndex"),A("poolId"),M(vr,Yo,"observations"),M(o(),4)]),_r=B([ue("filterPeriod"),ue("decayPeriod"),ue("reductionFactor"),oe("dynamicFeeControl"),oe("maxVolatilityAccumulator"),le("tickSpacingIndexReference"),oe("volatilityReference"),oe("volatilityAccumulator"),o("lastUpdateTimestamp"),M(S(),46)]),Vr=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(Vr,Ot,"rewardInfos"),W(8*16,"tickArrayBitmap"),M(o(),4),o("fundFeesTokenA"),o("fundFeesTokenB"),o("startTime"),o("recentEpoch"),_r.replicate("dynamicFeeInfo"),M(o(),46)]),Er=B([_("growthInsideLastX64"),o("rewardAmountOwed")]),Dr=B([W(8),S("bump"),A("nftMint"),A("poolId"),le("tickLower"),le("tickUpper"),_("liquidity"),_("feeGrowthInsideLastX64A"),_("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),M(Er,Ot,"rewardInfos"),o("recentEpoch"),M(o(),7)]),np=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)]),Wr=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(Wr,Be,"ticks"),S("initializedTickCount"),o("recentEpoch"),M(S(),107)]),qr=B([W(8),S("bump"),M(A(),Ho,"operationOwners"),M(A(),Qo,"whitelistMints")]),Ur=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")]),op=B([W(8),ue("index"),ue("filterPeriod"),ue("decayPeriod"),ue("reductionFactor"),oe("dynamicFeeControl"),oe("maxVolatilityAccumulator"),M(o(),8)]),Gr=B([W(8),A("wallet"),S("nonceIndex"),o("orderNonce"),M(o(),4)]),ip=B([o(),S("bump"),A("owner"),A("poolId"),A("positionId"),A("nftAccount"),M(o(),8)]),zr=B([W(8),S("bump"),A("lockOwner"),A("poolId"),A("positionId"),A("nftAccount"),A("lockNftMint"),o("recentEpoch"),M(o(),8)]);import sp 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 bp=Buffer.from("amm_config","utf8"),Gn=Buffer.from("pool","utf8"),ei=Buffer.from("pool_vault","utf8"),Xr=Buffer.from("pool_reward_vault","utf8"),ti=Buffer.from("position","utf8"),Yr=Buffer.from("tick_array","utf8"),Hr=Buffer.from("operation","utf8"),Qr=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Zr=Buffer.from("observation","utf8"),gp=Buffer.from("support_mint","utf8"),Pp=Buffer.from("dynamic_fee_config","utf8"),$r=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([$r,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([Xr,e.toBuffer(),t.toBuffer()],l)}function de(l,e,t){return J([Yr,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([Hr],l)}function pe(l,e){return J([Qr,e.toBuffer()],l)}function zn(l,e){return J([Zr,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 aa}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 hp=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 vp 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 Wp from"bn.js";import Up from"decimal.js";import{PublicKey as mi}from"@solana/web3.js";import oa from"bn.js";import{TOKEN_2022_PROGRAM_ID as _f,TOKEN_PROGRAM_ID as Vf}from"@solana/spl-token";import qf from"decimal.js";import Af from"bn.js";import af 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 oa(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 Jf from"bn.js";function be(l){let e=`global:${l}`;return Buffer.from(aa.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 la=B([S("instruction")]),ma=B([S("instruction")]),da=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")]),pa=B([o("state"),o("nonce"),A("lpVault"),A("rewardVault"),A(),A(),o(),o(),o("totalReward"),_("perShareReward"),o("lastSlot"),o("perSlotReward")]),fa=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()]),ya=B([o(),o("state"),o("nonce"),o("validRewardTokenNum"),_("rewardMultiplier"),o("rewardPeriodMax"),o("rewardPeriodMin"),o("rewardPeriodExtend"),A("lpMint"),A("lpVault"),M(da,5,"rewardInfos"),A("creator"),A(),M(o(),32,"padding")]),ba=new Proxy(pa,{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)}}),ga=new Proxy(fa,{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(ya,{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)}}),Pa=B([o("isSet"),o("rewardPerSecond"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardType")]),Aa=B([S("instruction"),o("nonce"),M(Pa,5,"rewardTimeInfo")]),wa=B([S("instruction"),o("rewardReopenTime"),o("rewardEndTime"),o("rewardPerSecond")]),ka=B([S("instruction"),o("isSet"),o("rewardPerSecond"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardType")]),Kb=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)]),xb=B([o("state"),A("id"),A("owner"),o("deposited"),M(o(),2,"rewardDebts")]),Ta=B([o("state"),A("id"),A("owner"),o("deposited"),M(_(),2,"rewardDebts"),M(o(),17)]),ha=B([o(),o("state"),A("id"),A("owner"),o("deposited"),M(_(),5,"rewardDebts"),M(o(),16)]),Ia=B([S("instruction"),o("amount")]),Ba=B([A("mint"),A("grantAuthority"),o("baselineVoteWeightScaledFactor"),o("maxExtraLockupVoteWeightScaledFactor"),o("lockupSaturationSecs"),Lo("digitShift"),M(S(),7,"reserved1"),M(o(),7,"reserved2")]),Sa=B([W(8),A("governanceProgramId"),A("realm"),A("realmGoverningTokenMint"),A("realmAuthority"),M(S(),32,"reserved1"),M(Ba,4,"votingMints"),yt("timeOffset"),S("bump"),M(S(),7,"reserved2"),M(o(),11,"reserved3")]),Ka=B([yt("startTime"),yt("endTime"),S("kind"),M(S(),15,"reserved")]),xa=B([M(Ka,1,"lockup"),o("amountDeposited_native"),o("amountInitiallyLockedNative"),ae("isUsed"),ae("allowClawback"),S("votingMintConfigIdx"),M(S(),29,"reserved")]),Ca=B([W(8),A("voterAuthority"),A("registrar"),M(xa,32,"deposits"),S("voterBump"),S("voterWweightRecordBump"),M(S(),94,"reserved")]);import{NATIVE_MINT as _b}from"@solana/spl-token";var Vb=G("Raydium_farm_config"),Ra=new Qn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),La=new Qn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Eb=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 Tg,SystemProgram as hg,SYSVAR_CLOCK_PUBKEY as Ig,SYSVAR_RENT_PUBKEY as Bg,TransactionInstruction as Sg}from"@solana/web3.js";import xg from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Rg,createAssociatedTokenAccountIdempotentInstruction as Lg,TOKEN_PROGRAM_ID as Og}from"@solana/spl-token";import jb from"bn.js";import{PublicKey as Oa}from"@solana/web3.js";import Na from"bn.js";function Ma(l){return typeof l=="object"&&l!==null&&![Pe,Ke,Oa,H,Na,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)):Ma(l)?Object.fromEntries(Object.entries(l).map(([e,t])=>[e,he(t)])):l}var mg=G("Raydium.farm.util");var Ug=G("Raydium_farm_instruction"),Gg={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 LP from"bn.js";import{PublicKey as Mw}from"@solana/web3.js";import{AccountLayout as _w,MintLayout as Vw,NATIVE_MINT as Ew,TOKEN_PROGRAM_ID as Ww}from"@solana/spl-token";import MP from"bn.js";import ki from"bn.js";var qa=new ki(25),Ua=new ki(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as nA,TOKEN_PROGRAM_ID as ln}from"@solana/spl-token";import{PublicKey as qe,SystemProgram as iA,SYSVAR_RENT_PUBKEY as rA,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")]),Ga=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")]),JP=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")]),za=B([S("instruction"),o("baseAmountIn"),o("quoteAmountIn"),o("fixedSide"),o("otherAmountMin")]),Xa=B([S("instruction"),o("lpAmount"),o("baseAmountMin"),o("quoteAmountMin")]);var Ya=B([o("fee")]);var cn=G("Raydium_liquidity_instruction");function Ha({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 Qa({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 Za(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 $a(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 Za(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 $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()));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 Ha(q(E({},r),{amountIn:i,minAmountOut:c}),t);if(u==="out")return Qa(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,Ja=B([o("x"),o("y"),o("price")]),PA=B([o("accountType"),o("status"),o("multiplier"),o("validDataCount"),M(Ja,ja,"DataElement")]);import{PublicKey as RA}from"@solana/web3.js";import OA from"decimal.js";import{TOKEN_PROGRAM_ID as MA}from"@solana/spl-token";import{PublicKey as TA}from"@solana/web3.js";var BA=G("Raydium_liquidity_serum");import sk from"bn.js";import ck from"decimal.js";import{TOKEN_PROGRAM_ID as sw}from"@solana/spl-token";import{PublicKey as cw}from"@solana/web3.js";import mw from"bn.js";import{SystemProgram as HA,SYSVAR_RENT_PUBKEY as QA,Transaction as ZA,TransactionInstruction as $A}from"@solana/web3.js";import{createInitializeAccountInstruction as JA,TOKEN_PROGRAM_ID as ew}from"@solana/spl-token";function es(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 ts=B([W(5),es("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 FT}from"@solana/web3.js";import{AccountLayout as _T,NATIVE_MINT as VT,TOKEN_2022_PROGRAM_ID as ET,TOKEN_PROGRAM_ID as DT,createAssociatedTokenAccountIdempotentInstruction as WT}from"@solana/spl-token";import Nk from"bn.js";import as from"bn.js";var Ak=new as(0);import Bk from"bn.js";import ss from"bn.js";var De=new ss(1e6);import QT from"bn.js";import $T from"decimal.js";import{PublicKey as Jk,TransactionInstruction as ls,Keypair as tT,SystemProgram as nT}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as iT,TOKEN_2022_PROGRAM_ID as rT,TOKEN_PROGRAM_ID as aT}from"@solana/spl-token";var Vk=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Ek=Buffer.from("amm_config","utf8"),Dk=Buffer.from("pool","utf8"),Wk=Buffer.from("pool_lp_mint","utf8"),qk=Buffer.from("pool_vault","utf8"),Uk=Buffer.from("observation","utf8"),Gk=Buffer.from("permission","utf8"),zk=Buffer.from("support_mint","utf8"),Xk=Buffer.from("creator_fee_share","utf8");var Yk=Buffer.from("locked_liquidity","utf8");var pT=G("Raydium_cpmm"),ms={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 ls({keys:b,programId:l,data:Buffer.from([...ms.swapBaseInput,...I])})}var ds=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)]),bT=B([W(8),A("configId"),M(o(),30)]),gT=B([W(8),S("bump"),A("creator"),A("ammConfig"),o("shareRate"),M(o(),8)]);import{PublicKey as zK,SystemProgram as XK}from"@solana/web3.js";import{createTransferInstruction as HK,TOKEN_PROGRAM_ID as QK,TOKEN_2022_PROGRAM_ID as ZK,createAssociatedTokenAccountIdempotentInstruction as $K,createSyncNativeInstruction as JK,createTransferCheckedInstruction as ex}from"@solana/spl-token";import Ns from"bn.js";import ox from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as rI,TOKEN_2022_PROGRAM_ID as aI,TOKEN_PROGRAM_ID as sI}from"@solana/spl-token";import{SystemProgram as mI,TransactionInstruction as dI}from"@solana/web3.js";import ys from"bn.js";var Gh=Buffer.from("vault_auth_seed","utf8"),zh=Buffer.from("global_config","utf8"),Xh=Buffer.from("pool_vesting","utf8"),Yh=Buffer.from("platform_config","utf8"),Hh=Buffer.from("platform_fee_vault_auth_seed","utf8"),Qh=Buffer.from("creator_fee_vault_auth_seed","utf8"),Zh=Buffer.from("platform_global_access","utf8"),$h=Buffer.from("platform_allow_config","utf8"),jh=Buffer.from("platform_curve_rule","utf8");var yI={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 bI=new ys("18446744073709551615");var bs=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)]),gs=B([o("totalLockedAmount"),o("cliffPeriod"),o("unlockPeriod"),o("startTime"),o("totalAllocatedShare")]),Ps=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"),gs.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)]),wI=B([o(),o("epoch"),A("poolId"),A("beneficiary"),o("claimedAmount"),o("tokenShareAmount"),M(o(),8)]),As=B([S("migrateType"),S("migrateCpmmFeeOn"),o("supply"),o("totalSellA"),o("totalFundRaisingB"),o("totalLockedAmount"),o("cliffPeriod"),o("unlockPeriod")]),kI=B([o("epoch"),S("index"),A("configId"),As.replicate("bondingCurveParam"),M(o(),50)]),Ii=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)]),ws=B([S("field"),S("op"),_("value")]),ks=B([ue("groupId"),o("epoch"),Mn(ws,"constraints")]),Ts=B([o(),S("bump"),S("version"),A("platformId"),A("configId"),o("epoch"),M(o(),8),Mn(ks,"groups")]);import{TOKEN_2022_PROGRAM_ID as II,TOKEN_PROGRAM_ID as BI}from"@solana/spl-token";import hs from"bn.js";var _I=new hs(1e6);import WI from"bn.js";import UI from"decimal.js";import kB from"bn.js";import hB from"decimal.js";import QI from"bn.js";import $I from"decimal.js";import sB from"bn.js";import cB from"decimal.js";import Ki from"bn.js";import eo from"decimal.js";var pn=class{static _multipler(e){return new eo(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new eo(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 Ki(i.mul(this._Q64).toFixed(0))}};pn._Q64=new eo(new Ki(1).shln(64).toString());import{NATIVE_MINT as VS,TOKEN_2022_PROGRAM_ID as ES,TOKEN_PROGRAM_ID as DS,createAssociatedTokenAccountIdempotentInstruction as qS,createSyncNativeInstruction as US,getTransferFeeConfig as GS,unpackMint as zS}from"@solana/spl-token";import ye from"bn.js";import{PublicKey as Rs,SystemProgram as HS}from"@solana/web3.js";import tK from"decimal.js";var nK={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 Rs("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new ye(0),cliffPeriod:new ye(0),unlockPeriod:new ye(0),startTime:new ye(0),totalAllocatedShare:new ye(0)}},oK=new ye(1e4);var Ls={[Vn.toBase58()]:3};var Os=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 KK}from"@solana/web3.js";var OK=G("Serum");var Nx=new Ns(0);import{PublicKey as Fs,Transaction as to,TransactionInstruction as vs}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as _s}from"@solana/spl-token";import xi 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 xi(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 xi(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 to().add(...g.slice(0,i.AllTxData.instructions.length-1)),signer:s},{transaction:new to().add(...g.slice(i.AllTxData.instructions.length-1)),signer:[]},{transaction:new to().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:_s,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 vs({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 Fs(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"];import{PublicKey as Zx}from"@solana/web3.js";import{getTransferFeeConfig as jx,MintLayout as Jx,TOKEN_2022_PROGRAM_ID as eC,TOKEN_PROGRAM_ID as tC,unpackMint as nC}from"@solana/spl-token";var RR=new ut(2),LR=new ut(3),OR=new ut(5),Pn=new ut(10),NR=new ut(100),MR=new ut(1e3),FR=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}function mL(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 dL(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 Vs(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 Ms({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:[Vs(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 pL({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 fL({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})}export{Ms as makeSwapInstruction,mL as route1Instruction,dL as route2Instruction,Vs as routeInstruction,pL as swapBaseInAutoAccount,fL as swapBaseOutAutoAccount};
//# sourceMappingURL=instrument.mjs.map