UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

2 lines 143 kB
var Li=Object.defineProperty,Oi=Object.defineProperties;var Ni=Object.getOwnPropertyDescriptors;var _t=Object.getOwnPropertySymbols;var ao=Object.prototype.hasOwnProperty,so=Object.prototype.propertyIsEnumerable;var ro=(l,e,t)=>e in l?Li(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t,E=(l,e)=>{for(var t in e||(e={}))ao.call(e,t)&&ro(l,t,e[t]);if(_t)for(var t of _t(e))so.call(e,t)&&ro(l,t,e[t]);return l},q=(l,e)=>Oi(l,Ni(e));var _e=(l,e)=>{var t={};for(var n in l)ao.call(l,n)&&e.indexOf(n)<0&&(t[n]=l[n]);if(l!=null&&_t)for(var n of _t(l))e.indexOf(n)<0&&so.call(l,n)&&(t[n]=l[n]);return t};import{ASSOCIATED_TOKEN_PROGRAM_ID as to,TOKEN_2022_PROGRAM_ID as no,TOKEN_PROGRAM_ID as et}from"@solana/spl-token";import{PublicKey as k,SystemProgram as Ft,TransactionInstruction as vt}from"@solana/web3.js";import Ve from"bn.js";import{PublicKey as vi}from"@solana/web3.js";import{get as uo,set as Mi}from"lodash";var fn=class{constructor(e){this.logLevel=e.logLevel!==void 0?e.logLevel:0,this.name=e.name}set level(e){this.logLevel=e}get time(){return Date.now().toString()}get moduleName(){return this.name}isLogLevel(e){return e<=this.logLevel}error(...e){return this.isLogLevel(0)?(console.error(this.time,this.name,"sdk logger error",...e),this):this}logWithError(...e){let t=e.map(n=>typeof n=="object"?JSON.stringify(n):n).join(", ");throw new Error(t)}warning(...e){return this.isLogLevel(1)?(console.warn(this.time,this.name,"sdk logger warning",...e),this):this}info(...e){return this.isLogLevel(2)?(console.info(this.time,this.name,"sdk logger info",...e),this):this}debug(...e){return this.isLogLevel(3)?(console.debug(this.time,this.name,"sdk logger debug",...e),this):this}},co={},Fi={};function G(l){let e=uo(co,l);if(!e){let t=uo(Fi,l);e=new fn({name:l,logLevel:t}),Mi(co,l,e)}return e}import{MINT_SIZE as Xs,TOKEN_PROGRAM_ID as Ys,getTransferFeeConfig as Qs,unpackMint as Zs}from"@solana/spl-token";var yn=G("Raydium_accountInfo_util");async function ze(l,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:c=100}=E({batchRequest:!1},t),u=bn(e,c),r=new Array(u.length).fill([]);if(n){let s=u.map(P=>{let w=l._buildArgs([P.map(m=>m.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:w}}),g=bn(s,10);r=(await(await Promise.all(g.map(async P=>await l._rpcBatchRequest(P)))).flat()).map(P=>(P.error&&yn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${P.error.message}`),P.result.value.map(w=>{if(w){let{data:m,executable:y,lamports:d,owner:a,rentEpoch:b}=w;return m.length!==2&&m[1]!=="base64"&&yn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(m[0],"base64"),executable:y,lamports:d,owner:new vi(a),rentEpoch:b}}return null})))}else try{r=await Promise.all(u.map(s=>l.getMultipleAccountsInfo(s,i)))}catch(s){s instanceof Error&&yn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${s.message}`)}return r.flat()}import ut from"bn.js";import HC from"decimal.js";import Gi from"big.js";import Wt from"bn.js";import Vi from"toformat";var _i=Vi,Tt=_i;import Dt from"big.js";import Di from"bn.js";import Wi from"decimal.js-light";import ht from"bn.js";var lo=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>=lo||l<=-lo)&&e.logWithError(`BigNumberish number overflow: ${l}`),new ht(String(l))):typeof l=="bigint"?new ht(l.toString()):(e.error(`invalid BigNumberish value: ${l}`),new ht(0))}var Et=G("module/fraction"),gn=Tt(Dt),It=Tt(Wi),qi={[0]:It.ROUND_DOWN,[1]:It.ROUND_HALF_UP,[2]:It.ROUND_UP},Ui={[0]:Dt.roundDown,[1]:Dt.roundHalfUp,[2]:Dt.roundUp},Q=class{constructor(e,t=new Di(1)){this.numerator=te(e),this.denominator=te(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new Q(this.denominator,this.numerator)}add(e){let t=e instanceof Q?e:new Q(te(e));return this.denominator.eq(t.denominator)?new Q(this.numerator.add(t.numerator),this.denominator):new Q(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof Q?e:new Q(te(e));return this.denominator.eq(t.denominator)?new Q(this.numerator.sub(t.numerator),this.denominator):new Q(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof Q?e:new Q(te(e));return new Q(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof Q?e:new Q(te(e));return new Q(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Et.logWithError(`${e} is not an integer.`),e<=0&&Et.logWithError(`${e} is not positive.`),It.set({precision:e+1,rounding:qi[n]});let i=new It(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Et.logWithError(`${e} is not an integer.`),e<0&&Et.logWithError(`${e} is negative.`),gn.DP=e,gn.RM=Ui[n]||1,new gn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var zi=G("Raydium_amount"),mo=Tt(Gi);function Xi(l,e){let t="0",n="0";if(l.includes(".")){let i=l.split(".");i.length===2?([t,n]=i,n=n.padEnd(e,"0")):zi.logWithError(`invalid number string, num: ${l}`)}else t=l;return[t,n.slice(0,e)||n]}var Ke=class extends Q{constructor(t,n,i=!0,c){let u=new Wt(0),r=Pn.pow(new Wt(t.decimals));if(i)u=te(n);else{let s=new Wt(0),g=new Wt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[p,P]=Xi(n.toString(),t.decimals);s=te(p),g=te(P)}s=s.mul(r),u=s.add(g)}super(u,r);this.logger=G(c||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new Ke(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Ke(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,i=0){return super.toSignificant(t,n,i)}toFixed(t=this.token.decimals,n,i=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,i)}toExact(t={groupSeparator:""}){return mo.DP=this.token.decimals,new mo(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Yi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as po}from"@solana/spl-token";var qt={chainId:101,address:Yi.default.toBase58(),programId:po.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:po.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 fo,SYSVAR_RENT_PUBKEY as Qi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Zi}from"@solana/spl-token";function f({pubkey:l,isSigner:e=!1,isWritable:t=!0}){return{pubkey:l,isWritable:t,isSigner:e}}var Hi=[f({pubkey:Zi,isWritable:!1}),f({pubkey:fo.programId,isWritable:!1}),f({pubkey:Qi,isWritable:!1})];function yo({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"),Ku=new ne("SysvarC1ock11111111111111111111111111111111"),$e=new ne("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),ji=new ne("Sysvar1nstructions1111111111111111111111111"),$i=fo.programId,xu=new ne("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Cu=new ne("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ru=new ne("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Lu=new ne("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Ou=new ne("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Nu=new ne("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Mu=new ne("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Fu=new ne("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),vu=new ne("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Vu=new ne("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),_u=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:yo({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 bo=new Q(new Ji(100)),Ye=class extends Q{toSignificant(e=5,t,n){return this.mul(bo).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(bo).toFixed(e,t,n)}};var er=G("Raydium_price"),Ne=class extends Q{constructor(t){let{baseToken:n,quoteToken:i,numerator:c,denominator:u}=t;super(c,u);this.baseToken=n,this.quoteToken=i,this.scalar=new Q(hn(n.decimals),hn(i.decimals))}get raw(){return new Q(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ne({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&er.logWithError("mul token not equals");let n=super.mul(t);return new Ne({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,i){return this.adjusted.toSignificant(t,n,i)}toFixed(t=this.quoteToken.decimals,n,i){return this.adjusted.toFixed(t,n,i)}};import{merge as $x}from"lodash";import uc from"axios";var go={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",MONITOR_BASE_HOST:"https://monitor.raydium.io",SERVICE_1_BASE_HOST:"https://service-v1.raydium.io",TEMP_HOST:"https://temp-api-v1.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",CPMM_CONFIG:"/main/cpmm-config",CLMM_DYNAMIC_CONFIG:"/main/clmm-dynamic-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://lite-api.jup.ag/tokens/v2/tag?query=verified",POOL_LIST:"/pools/info/list-v2",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/list-v2",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",OWNER_LOCK_POSITION:"/position/clmm-lock/{owner}",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee",CPMM_LOCK:"https://dynamic-ipfs.raydium.io/lock/cpmm/position",LAUNCH_AUTH_HOST:"https://launch-auth-v1.raydium.io",LAUNCH_COMMENT_HOST:"hhttps://launch-forum-v1.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1.raydium.io"},tr=q(E({},go),{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 Lc=G("Raydium_Api");import{PublicKey as Hm,SystemProgram as jm}from"@solana/web3.js";import{AccountLayout as nd,createAssociatedTokenAccountIdempotentInstruction as od,TOKEN_PROGRAM_ID as id,TOKEN_2022_PROGRAM_ID as rd}from"@solana/spl-token";import{PublicKey as ft,sendAndConfirmTransaction as Cn,SystemProgram as sr,Transaction as Kt,TransactionMessage as xt,VersionedTransaction as Ct}from"@solana/web3.js";import ur from"axios";import{PublicKey as In,AddressLookupTableAccount as dt}from"@solana/web3.js";async function Bn({connection:l,address:e,cluster:t="mainnet"}){let n=await ze(l,[...new Set(e.map(c=>c.toString()))].map(c=>new In(c))),i={};for(let c=0;c<e.length;c++){let u=n[c],r=e[c];if(!u)continue;let s=new dt({key:r,state:dt.deserialize(u.data)});i[r.toString()]=s,t==="devnet"?mt[r.toString()]=s:lt[r.toString()]=s}return i}var lt={},Sn=async l=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(lt[e])return lt;let t=new In(e),n=await l.getAccountInfo(t);return n&&(lt[e]=new dt({key:t,state:dt.deserialize(n.data)})),lt},mt={},Kn=async l=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(mt[e])return mt;let t=new In(e),n=await l.getAccountInfo(t);return n&&(mt[e]=new dt({key:t,state:dt.deserialize(n.data)})),mt};var D={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{ComputeBudgetProgram as Po,Keypair as wo,PublicKey as nr,Transaction as ko,TransactionMessage as or,VersionedTransaction as To}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ir}from"@solana/spl-token";var Ao=G("Raydium_txUtil"),ho=1644;function Gt(l){let e=[],t=[];return l.microLamports&&(e.push(Po.setComputeUnitPrice({microLamports:l.microLamports})),t.push(D.SetComputeUnitPrice)),l.units&&(e.push(Po.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&&Ao.logWithError(`no instructions provided: ${l.toString()}`),e.length<1&&Ao.logWithError(`no signers provided:, ${e.toString()}`);let t=new ko;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...l);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<ho}catch{return!1}}function J(l,e){let[t,n]=nr.findProgramAddressSync(l,e);return{publicKey:t,nonce:n}}function Bt({instructions:l,payer:e,signers:t}){return xn(l,[e,...t])}function St({instructions:l,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=wo.generate().publicKey.toString()}){let c=new or({payerKey:e,recentBlockhash:n,instructions:l}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new To(c).serialize()).toString("base64").length<ho}catch{return!1}}var rr=l=>Buffer.isBuffer(l)?l:l instanceof Uint8Array?Buffer.from(l.buffer,l.byteOffset,l.byteLength):Buffer.from(l),ar=l=>{let e=l.serialize({requireAllSignatures:!1,verifySignatures:!1});l instanceof To&&(e=rr(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function ot(l){let e=[];return l.forEach(t=>{t instanceof ko&&(t.recentBlockhash||(t.recentBlockhash=ir.toBase58()),t.feePayer||(t.feePayer=wo.generate().publicKey)),e.push(ar(t))}),console.log("simulate tx string:",e),e}var Xt=2e3,Yt=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment,this.loopMultiTxStatus=!!e.loopMultiTxStatus}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await ur.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=Gt(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(sr.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new ft(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(D.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:i=[],endInstructionTypes:c=[],lookupTableAddress:u=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...c),this.lookupTableAddress.push(...u.filter(r=>r!==ft.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:n}){return e===0?await this.buildV0(q(E({},t||{}),{lookupTableAddress:n})):this.build(t)}build(e){var n;let t=new Kt;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(i=>i.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async i=>{var p;let{recentBlockHash:c,skipPreflight:u=!0,sendAndConfirm:r,notSendToRpc:s}=i||{},g=c!=null?c:await pt(this.connection,this.blockhashCommitment);if(t.recentBlockhash=g,this.signers.length&&t.sign(...this.signers),ot([t]),(p=this.owner)!=null&&p.isKeyPair)return{txId:r?await Cn(this.connection,t,this.signers.find(w=>w.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:u}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:u}),signedTx:t};if(this.signAllTransactions){let P=await this.signAllTransactions([t]);if(this.signers.length)for(let w of P)try{w.sign(...this.signers)}catch{}return{txId:s?"":await this.connection.sendRawTransaction(P[0].serialize(),{skipPreflight:u}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var g;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),c=t.filter(p=>p.transaction.instructions.length>0),u=[i,...c.map(p=>p.transaction)],r=[this.signers,...c.map(p=>p.signers)],s=[...this.instructionTypes,...c.map(p=>p.instructionTypes).flat()];return(g=this.owner)!=null&&g.signer&&r.forEach(p=>{p.some(P=>P.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:u,signers:r,instructionTypes:s,execute:async p=>{var b;let{sequentially:P,onTxUpdate:w,skipTxCount:m=0,recentBlockHash:y,skipPreflight:d=!0}=p||{},a=y!=null?y:await pt(this.connection,this.blockhashCommitment);if((b=this.owner)!=null&&b.isKeyPair){if(P){let T=[],O=0;for(let F of u){if(++O,O<=m)continue;let K=await Cn(this.connection,F,this.signers.find(N=>N.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:d});T.push(K)}return{txIds:T,signedTxs:u}}return{txIds:await await Promise.all(u.map(async T=>(T.recentBlockhash=a,await this.connection.sendRawTransaction(T.serialize(),{skipPreflight:d})))),signedTxs:u}}if(this.signAllTransactions){let T=u.map((F,K)=>(F.recentBlockhash=a,r[K].length&&F.sign(...r[K]),F));ot(T);let O=await this.signAllTransactions(T);if(P){let F=0,K=[],N=async()=>{if(!O[F])return;let C=await this.connection.sendRawTransaction(O[F].serialize(),{skipPreflight:d});K.push({txId:C,status:"sent",signedTx:O[F]}),w==null||w([...K]),F++;let L=!1,v=null,S=null,Y=Z=>{v!==null&&clearInterval(v),S!==null&&this.connection.removeSignatureListener(S);let U=K.findIndex(re=>re.txId===C);if(U>-1){if(K[U].status==="error"||K[U].status==="success")return;K[U].status=Z.err?"error":"success"}w==null||w([...K]),Z.err||N()};this.loopMultiTxStatus&&(v=setInterval(async()=>{var Z;if(L){clearInterval(v);return}try{let U=await this.connection.getTransaction(C,{commitment:"confirmed",maxSupportedTransactionVersion:0});U&&(L=!0,clearInterval(v),Y({err:((Z=U.meta)==null?void 0:Z.err)||null}),console.log("tx status from getTransaction:",C))}catch(U){L=!0,clearInterval(v),console.error("getTransaction timeout:",U,C)}},Xt)),S=this.connection.onSignature(C,Z=>{if(L){this.connection.removeSignatureListener(S);return}L=!0,Y(Z)},"confirmed"),this.connection.getSignatureStatus(C)};return await N(),{txIds:K.map(C=>C.txId),signedTxs:O}}else{let F=[];for(let K=0;K<O.length;K+=1){let N=await this.connection.sendRawTransaction(O[K].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=_e(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:T,notSendToRpc:O}=a||{};if(ot([m]),(F=this.owner)!=null&&F.isKeyPair){let K=await this.connection.sendTransaction(m,{skipPreflight:b});return T&&await zt(this.connection,K),{txId:K,signedTx:m}}if(this.signAllTransactions){let K=await this.signAllTransactions([m]);if(this.signers.length)for(let N of K)try{N.sign(this.signers)}catch{}return{txId:O?"":await this.connection.sendTransaction(K[0],{skipPreflight:b}),signedTx:K[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 T=await this.connection.sendTransaction(b,{skipPreflight:y});await zt(this.connection,T),a.push(T)}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,T=[],O=async()=>{if(!a[b])return;let F=await this.connection.sendTransaction(a[b],{skipPreflight:y});T.push({txId:F,status:"sent",signedTx:a[b]}),w==null||w([...T]),b++;let K=!1,N=null,C=null,L=v=>{N!==null&&clearInterval(N),C!==null&&this.connection.removeSignatureListener(C);let S=T.findIndex(Y=>Y.txId===F);if(S>-1){if(T[S].status==="error"||T[S].status==="success")return;T[S].status=v.err?"error":"success"}w==null||w([...T]),v.err||O()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var v;if(K){clearInterval(N);return}try{let S=await this.connection.getTransaction(F,{commitment:"confirmed",maxSupportedTransactionVersion:0});S&&(K=!0,clearInterval(N),L({err:((v=S.meta)==null?void 0:v.err)||null}),console.log("tx status from getTransaction:",F))}catch(S){K=!0,clearInterval(N),console.error("getTransaction timeout:",S,F)}},Xt)),C=this.connection.onSignature(F,v=>{if(K){this.connection.removeSignatureListener(C);return}K=!0,L(v)},"confirmed"),this.connection.getSignatureStatus(F)};return O(),{txIds:[],signedTxs:a}}else{let b=[];for(let T=0;T<a.length;T+=1){let O=await this.connection.sendTransaction(a[T],{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=_e(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(T=>T.keys.filter(O=>O.isSigner).map(O=>O.pubkey.toString())).flat()).values()].map(T=>new ft(T));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(T=>T.keys.filter(O=>O.isSigner).map(O=>O.pubkey.toString())).flat())).map(T=>u[T]).filter(T=>T!==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:T=!0}=m||{},O=b!=null?b:await pt(this.connection,this.blockhashCommitment);if(r.forEach(async(K,N)=>{K.recentBlockhash=O,s[N].length&&K.sign(...s[N])}),ot(r),(F=this.owner)!=null&&F.isKeyPair){if(y){let K=0,N=[];for(let C of r){if(++K,K<=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:T});N.push(L)}return{txIds:N,signedTxs:r}}return{txIds:await Promise.all(r.map(async K=>await this.connection.sendRawTransaction(K.serialize(),{skipPreflight:T}))),signedTxs:r}}if(this.signAllTransactions){let K=await this.signAllTransactions(r.slice(a,r.length)),N=[...r.slice(0,a),...K];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 S=await this.connection.sendRawTransaction(N[C].serialize(),{skipPreflight:T});L.push({txId:S,status:"sent",signedTx:N[C]}),d==null||d([...L]),C++;let Y=!1,Z=null,U=null,re=$=>{Z!==null&&clearInterval(Z),U!==null&&this.connection.removeSignatureListener(U);let we=L.findIndex(Ue=>Ue.txId===S);if(we>-1){if(L[we].status==="error"||L[we].status==="success")return;L[we].status=$.err?"error":"success"}d==null||d([...L]),$.err||v()};this.loopMultiTxStatus&&(Z=setInterval(async()=>{var $;if(Y){clearInterval(Z);return}try{let we=await this.connection.getTransaction(S,{commitment:"confirmed",maxSupportedTransactionVersion:0});we&&(Y=!0,clearInterval(Z),re({err:(($=we.meta)==null?void 0:$.err)||null}),console.log("tx status from getTransaction:",S))}catch(we){Y=!0,clearInterval(Z),console.error("getTransaction timeout:",we,S)}},Xt)),U=this.connection.onSignature(S,$=>{if(Y){this.connection.removeSignatureListener(U);return}Y=!0,re($)},"confirmed"),this.connection.getSignatureStatus(S)};return await v(),{txIds:L.map(S=>S.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:T});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=_e(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 K of g)s[K]===void 0&&p.push(new ft(K));let P=await Bn({connection:this.connection,address:p});for(let[K,N]of Object.entries(P))s[K]=N;let w=t?Gt(t):{instructions:[],instructionTypes:[]},m=await pt(this.connection,this.blockhashCommitment),y=this.signers.reduce((K,N)=>q(E({},K),{[N.publicKey.toBase58()]:N}),{}),d=[],a=[],b=[],T=0;if(this.allInstructions.forEach(K=>{let N=[...b,K],C=t?[...w.instructions,...N]:N;if(K!==n[T]&&b.length<u&&(St({instructions:C,payer:this.feePayer,lookupTableAddressAccount:s})||St({instructions:N,payer:this.feePayer,lookupTableAddressAccount:s})))b.push(K);else{if(b.length===0)throw Error("item ins too big");T+=K===n[T]?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(S=>S.isSigner).map(S=>S.pubkey.toString())).flat())).map(v=>y[v]).filter(v=>v!==void 0)),b=[K]}}),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(K=>{K.some(N=>N.publicKey.equals(this.owner.publicKey))||K.push(this.owner.signer)}),d.forEach((K,N)=>{K.sign(a[N])}),{builder:this,transactions:d,buildProps:e,signers:a,instructionTypes:this.instructionTypes,execute:async K=>{var Y;let{sequentially:N,onTxUpdate:C,skipTxCount:L=0,recentBlockHash:v,skipPreflight:S=!0}=K||{};if(d.map(async(Z,U)=>{a[U].length&&Z.sign(a[U]),v&&(Z.message.recentBlockhash=v)}),ot(d),(Y=this.owner)!=null&&Y.isKeyPair){if(N){let Z=0,U=[];for(let re of d){if(++Z,Z<=L){console.log("skip tx: ",Z),U.push("tx skipped");continue}let $=await this.connection.sendTransaction(re,{skipPreflight:S});await zt(this.connection,$),U.push($)}return{txIds:U,signedTxs:d}}return{txIds:await Promise.all(d.map(async Z=>await this.connection.sendTransaction(Z,{skipPreflight:S}))),signedTxs:d}}if(this.signAllTransactions){let Z=await this.signAllTransactions(d.slice(L,d.length)),U=[...d.slice(0,L),...Z];if(N){let re=0,$=[],we=async()=>{if(!U[re])return;if(re<L){$.push({txId:"",status:"success",signedTx:U[re]}),C==null||C([...$]),re++,we();return}let Ue=await this.connection.sendTransaction(U[re],{skipPreflight:S});$.push({txId:Ue,status:"sent",signedTx:U[re]}),C==null||C([...$]),re++;let wt=!1,ct=null,Vt=null,io=tt=>{ct!==null&&clearInterval(ct),Vt!==null&&this.connection.removeSignatureListener(Vt);let Ge=$.findIndex(Ri=>Ri.txId===Ue);if(Ge>-1){if($[Ge].status==="error"||$[Ge].status==="success")return;$[Ge].status=tt.err?"error":"success"}C==null||C([...$]),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:0});Ge&&(wt=!0,clearInterval(ct),io({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)),Vt=this.connection.onSignature(Ue,tt=>{if(wt){this.connection.removeSignatureListener(Vt);return}wt=!0,io(tt)},"confirmed"),this.connection.getSignatureStatus(Ue)};return we(),{txIds:[],signedTxs:U}}else{let re=[];for(let $=0;$<U.length;$+=1){let we=await this.connection.sendTransaction(U[$],{skipPreflight:S});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 Km,SystemProgram as Cm}from"@solana/web3.js";import Om from"bn.js";import{createCloseAccountInstruction as vm,createInitializeAccountInstruction as Vm,createTransferInstruction as _m,TOKEN_PROGRAM_ID as Em}from"@solana/spl-token";import{Keypair as fm,PublicKey as ym}from"@solana/web3.js";import Pm from"bn.js";import{TOKEN_PROGRAM_ID as km}from"@solana/spl-token";import{PublicKey as wr}from"@solana/web3.js";import xo,{isBN as Co}from"bn.js";import{bits as cr,BitStructure as Al,blob as lr,Blob as wl,cstr as kl,f32 as Tl,f32be as hl,f64 as Il,f64be as Bl,greedy as Sl,Layout as mr,ns64 as Kl,ns64be as xl,nu64 as Cl,nu64be as Rl,offset as dr,s16 as Ll,s16be as Ol,s24 as Nl,s24be as Ml,s32 as pr,s32be as Fl,s40 as vl,s40be as Vl,s48 as _l,s48be as El,s8 as Dl,seq as fr,struct as Wl,Structure as yr,u16 as br,u16be as ql,u24 as Ul,u24be as Gl,u32 as gr,u32be as zl,u40 as Xl,u40be as Yl,u48 as Ql,u48be as Zl,u8 as Pr,UInt as Ar,union as Hl,Union as jl,unionLayoutDiscriminator as $l,utf8 as Jl}from"@solana/buffer-layout";var Qt=mr,Io=yr;var Ln=Ar;var Bo=Pr,ce=br;var Zt=gr;var le=pr;var So=fr;var W=lr;var On=cr,Ko=dr;var rt=class extends Qt{constructor(t,n,i){super(t,i);this.blob=W(t),this.signed=n}decode(t,n=0){let i=new xo(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 xo(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},Ht=class extends Qt{constructor(t){super(8,t);this._lower=On(Zt(),!1),this._upper=On(Zt(),!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 x(l){return new Ln(1,l)}function oe(l){return new Ln(4,l)}function o(l){return new rt(8,!1,l)}function V(l){return new rt(16,!1,l)}function Ro(l){return new rt(1,!0,l)}function yt(l){return new rt(8,!0,l)}function Lo(l){return new rt(16,!0,l)}var Rt=class extends Qt{constructor(t,n,i,c){super(t.span,c);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function A(l){return new Rt(W(32),e=>new wr(e),e=>e.toBuffer(),l)}function ae(l){return new Rt(Bo(),kr,Tr,l)}function kr(l){if(l===0)return!1;if(l===1)return!0;throw new Error("Invalid bool: "+l)}function Tr(l){return l?1:0}function Oo(l,e){let t=Zt("length"),n=B([t,M(l,Ko(t,-t.span),"values")]);return new Rt(n,({values:i})=>i,i=>({values:i}),e)}var Nn=class extends Io{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:Co(e)?e.toNumber():new Proxy(e,{get(c,u){if(!n){let r=Reflect.get(c,"count");n=Co(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 So(l,i,t)}var jt=B([A("mint"),A("owner"),o("amount"),oe("delegateOption"),A("delegate"),x("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 Ir}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Br}from"@solana/spl-token";function z(l,e,t){return J([l.toBuffer(),(t!=null?t:Br).toBuffer(),e.toBuffer()],new Ir("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as _}from"@solana/web3.js";var Mn=new _("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Fn=new _("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),vn=new _("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Jt=new _("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Sr=new _("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Mo=new _("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Vn=new _("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),_n=new _("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Kr=new _("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),en=new _("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),En=new _("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Fo=new _("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),vo=new _("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Lt=new _("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),xr=new _("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Vo=new _("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),tn=new _("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),_o=new _("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Cr=new _("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Eo=new _("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Do=new _("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Wo=new _("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Rr=new _("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),bd=new _("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),gd=new _("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Lr=new _("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Or=new _("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX"),ke={AMM_V4:_n,AMM_STABLE:Kr,CLMM_PROGRAM_ID:En,CLMM_LOCK_PROGRAM_ID:Fo,CLMM_LOCK_AUTH_ID:vo,FARM_PROGRAM_ID_V3:Mn,FARM_PROGRAM_ID_V4:Fn,FARM_PROGRAM_ID_V5:vn,FARM_PROGRAM_ID_V6:Jt,OPEN_BOOK_PROGRAM:Mo,SERUM_PROGRAM_ID_V3:Vn,UTIL1216:Sr,Router:xr,CREATE_CPMM_POOL_PROGRAM:tn,CREATE_CPMM_POOL_AUTH:_o,CREATE_CPMM_POOL_FEE_ACC:Cr,LOCK_CPMM_PROGRAM:Eo,LOCK_CPMM_AUTH:Do,LAUNCHPAD_PROGRAM:Wo,LAUNCHPAD_AUTH:Rr,LAUNCHPAD_PLATFORM:Lr,LAUNCHPAD_CONFIG:Or,FEE_DESTINATION_ID:Vo,MODEL_DATA_PUBKEY:Lt},Je={OPEN_BOOK_PROGRAM:new _("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new _("Ray1111111111111111111111111111111111111111"),AMM_V4:new _("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new _("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new _("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new _("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new _("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new _("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new _("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new _("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new _("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new _("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:_.default,Router:new _("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new _("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new _("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new _("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new _("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new _("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new _("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new _("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new _("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new _("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new _("Ray1111111111111111111111111111111111111111")};import wP from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as Dy,TOKEN_2022_PROGRAM_ID as Wy,TOKEN_PROGRAM_ID as qy}from"@solana/spl-token";import{PublicKey as Gy}from"@solana/web3.js";import Xy from"bn.js";import Qy from"decimal.js";import{TOKEN_PROGRAM_ID as Ld}from"@solana/spl-token";import{PublicKey as Fd}from"@solana/web3.js";var Nr=B([oe("mintAuthorityOption"),A("mintAuthority"),o("supply"),x("decimals"),x("isInitialized"),oe("freezeAuthorityOption"),A("freezeAuthority")]);import{ASSOCIATED_TOKEN_PROGRAM_ID as Yn,TOKEN_2022_PROGRAM_ID as ue,TOKEN_PROGRAM_ID as j}from"@solana/spl-token";import{Keypair as an,PublicKey as R,SystemProgram as We,TransactionInstruction as se}from"@solana/web3.js";import sn from"bn.js";import X from"bn.js";var me=new X(1).shln(64);var Mr=new X(1).shln(128),at=new X(1).shln(64).subn(1),Fr=new X(1).shln(128).subn(1),Qe=-443636,Ze=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,Yd=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 Qo=10,Zo=100,bt=14;var H=new X(0),Te=new X(1),Qd=new X(-1);var Zd=new X("18446744073700000000");var vr=B([W(8),x("bump"),ce("index"),A("owner"),oe("protocolFeeRate"),oe("tradeFeeRate"),ce("tickSpacing"),oe("fundFeeRate"),M(oe(),1),A("fundOwner"),M(o(),3)]),Vr=B([oe("blockTimestamp"),yt("tickCumulative"),M(o(),4)]),Ho=B([W(8),ae("initialized"),o("recentEpoch"),ce("observationIndex"),A("poolId"),M(Vr,Yo,"observations"),M(o(),4)]),_r=B([ce("filterPeriod"),ce("decayPeriod"),ce("reductionFactor"),oe("dynamicFeeControl"),oe("maxVolatilityAccumulator"),le("tickSpacingIndexReference"),oe("volatilityReference"),oe("volatilityAccumulator"),o("lastUpdateTimestamp"),M(x(),46)]),Er=B([x("state"),o("openTime"),o("endTime"),o("lastUpdateTime"),V("emissionsPerSecondX64"),o("totalEmissioned"),o("claimed"),A("mint"),A("vault"),A("creator"),V("growthGlobalX64")]),Dn=B([W(8),x("bump"),A("configId"),A("creator"),A("mintA"),A("mintB"),A("vaultA"),A("vaultB"),A("observationId"),x("mintDecimalsA"),x("mintDecimalsB"),ce("tickSpacing"),V("liquidity"),V("sqrtPriceX64"),le("tickCurrent"),oe(),V("feeGrowthGlobalX64A"),V("feeGrowthGlobalX64B"),o("protocolFeesTokenA"),o("protocolFeesTokenB"),M(V(),4),x("status"),x("feeOn"),W(6),M(Er,Ot,"rewardInfos"),W(8*16,"tickArrayBitmap"),M(o(),4),o("fundFeesTokenA"),o("fundFeesTokenB"),o("startTime"),o("recentEpoch"),_r.replicate("dynamicFeeInfo"),M(o(),46)]),Dr=B([V("growthInsideLastX64"),o("rewardAmountOwed")]),Wr=B([W(8),x("bump"),A("nftMint"),A("poolId"),le("tickLower"),le("tickUpper"),V("liquidity"),V("feeGrowthInsideLastX64A"),V("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),M(Dr,Ot,"rewardInfos"),o("recentEpoch"),M(o(),7)]),Jd=B([W(8),x("bump"),A("poolId"),le("tickLower"),le("tickUpper"),V("liquidity"),V("feeGrowthInsideLastX64A"),V("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),M(V(),Ot,"rewardGrowthInside"),o("recentEpoch"),M(o(),7)]),qr=B([le("tick"),Lo("liquidityNet"),V("liquidityGross"),V("feeGrowthOutsideX64A"),V("feeGrowthOutsideX64B"),M(V(),Ot,"rewardGrowthsOutsideX64"),o("orderPhase"),o("ordersAmount"),o("partFilledOrdersRemaining"),V("unfilledRatioX64"),M(oe(),3)]),jo=B([W(8),A("poolId"),le("startTickIndex"),M(qr,Be,"ticks"),x("initializedTickCount"),o("recentEpoch"),M(x(),107)]),Ur=B([W(8),x("bump"),M(A(),Qo,"operationOwners"),M(A(),Zo,"whitelistMints")]),Gr=B([W(8),A("poolId"),A("owner"),le("tick"),ae("zeroForOne"),o("orderPhase"),o("totalAmount"),o("filledAmount"),o("settleBase"),o("settleOutput"),o("openTime"),V("unfilledRatioX64"),M(o(),4)]),$o=B([W(8),A("poolId"),W(8*8*bt,"positiveTickArrayBitmap"),W(8*8*bt,"negativeTickArrayBitmap")]),ep=B([W(8),ce("index"),ce("filterPeriod"),ce("decayPeriod"),ce("reductionFactor"),oe("dynamicFeeControl"),oe("maxVolatilityAccumulator"),M(o(),8)]),zr=B([W(8),A("wallet"),x("nonceIndex"),o("orderNonce"),M(o(),4)]),tp=B([o(),x("bump"),A("owner"),A("poolId"),A("positionId"),A("nftAccount"),M(o(),8)]),Xr=B([W(8),x("bump"),A("lockOwner"),A("poolId"),A("positionId"),A("nftAccount"),A("lockNftMint"),o("recentEpoch"),M(o(),8)]);import ip from"bn.js";function Wn(l){let e=Buffer.alloc(2);return e.writeUInt16LE(l),e}function qn(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 pp=Buffer.from("amm_config","utf8"),Un=Buffer.from("pool","utf8"),ei=Buffer.from("pool_vault","utf8"),Yr=Buffer.from("pool_reward_vault","utf8"),ti=Buffer.from("position","utf8"),Qr=Buffer.from("tick_array","utf8"),Zr=Buffer.from("operation","utf8"),Hr=Buffer.from("pool_tick_array_bitmap_extension","utf8"),jr=Buffer.from("observation","utf8"),fp=Buffer.from("support_mint","utf8"),yp=Buffer.from("dynamic_fee_config","utf8"),$r=Buffer.from("permission","utf8");function ni(l,e,t,n){return J([Un,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([Un,e.toBuffer(),t.toBuffer(),n.toBuffer(),Wn(i)],l)}function gt(l,e,t){return J([ei,e.toBuffer(),t.toBuffer()],l)}function ri(l,e,t){return J([Yr,e.toBuffer(),t.toBuffer()],l)}function de(l,e,t){return J([Qr,e.toBuffer(),Jo(t)],l)}function He(l,e,t,n){return J([ti,e.toBuffer(),qn(t),qn(n)],l)}function Le(l,e){return J([ti,e.toBuffer()],l)}function st(l){return J([Buffer.from("metadata","utf8"),$e.toBuffer(),l.toBuffer()],$e)}function on(l){return J([Zr],l)}function pe(l,e){return J([Hr,e.toBuffer()],l)}function Gn(l,e){return J([jr,e.toBuffer()],l)}var ai=Buffer.from("locked_position","utf8");function zn(l,e){return J([ai,e.toBuffer()],l)}function Xn(l,e){return J([ai,e.toBuffer()],l)}import{sha256 as sa}from"js-sha256";import Jr from"bn.js";import si from"decimal.js";function Se(l,e,t){if(t.isZero())throw new Error("Division by zero");return l.mul(e).div(t)}function xe(l,e,t){if(t.isZero())throw new Error("Division by zero");let n=l.mul(e),i=n.div(t);return n.mod(t).isZero()?i:i.addn(1)}var wp=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 Np 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(Qe/e)*e}static getMaxTick(e){return Math.floor(Ze/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>=Qe&&e<=Ze}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${Qe}, ${Ze}]`)}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:H,amountOut:H,ammFeeAmount:H},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=H;e.partFilledOrdersRemaining.gt(H)&&(g=fe.min(e.partFilledOrdersRemaining,r.amountOut),g.gt(H)&&(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(H)){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=H}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(Qe,Math.min(Ze,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 _p from"bn.js";import Dp from"decimal.js";import{PublicKey as mi}from"@solana/web3.js";import ia from"bn.js";import{TOKEN_2022_PROGRAM_ID as Mf,TOKEN_PROGRAM_ID as Ff}from"@solana/spl-token";import Ef from"decimal.js";import bf from"bn.js";import nf 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>Ze&&(t=ee.getTickArrayStartIndex(Ze,e)+ee.tickCount(e)),n<Qe&&(n=ee.getTickArrayStartIndex(Qe,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(H)){u.push(m);continue}let y=new ia(Math.min(m.endTime.toNumber(),n)),d=y.sub(m.lastUpdateTime);if(d.isZero()){u.push(m);continue}let a=xe(d,m.emissionsPerSecondX64,me),b=Se(d,m.emissionsPerSecondX64,i),T,O=m.totalEmissioned.add(a);if(O.lte(at))T=O;else{let K=at.sub(m.totalEmissioned);T=at,b=Se(K,me,i)}let F=m.growthGlobalX64.add(b);u.push(q(E({},m),{growthGlobalX64:F,totalEmissioned:T,lastUpdateTime:y}))}return u}};import Hf from"bn.js";function be(l){let e=`global:${l}`;return Buffer.from(sa.digest(e)).slice(0,8)}Ho.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],je=class{static createPoolInstruction(e,t,n,i,c,u,r,s,g,p,P,w,m,y){let d=B([V("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:H},b);let T=Buffer.from([...ge.createPool,...b]);return new se({keys:a,programId:e,data:T})}static createCustomizablePoolInstruction(e,t,n,i,c,u,r,s,g,p,P,w,m,y,d,a){let b=B([V("sqrtPriceX64"),x("collectFeeOn"),ae("enableDynamicFee")]),T=[{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(K=>({pubkey:K,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:T,programId:e,data:F})}static createPermissionedPoolInstruction(e,t,n,i,c,u,r,s,g,p,P,w,m,y,d,a,b,T,O){let F=B([V("sqrtPriceX64"),x("collectFeeOn"),ae("enableDynamicFee"),ce("seedIndex")]),K=[{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},...T.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:K,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"),V("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([x("rewardIndex"),V("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:j,isSigner:!1,isWritable:!1},{pubkey:ue,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?ue:j,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,T,O,F,K,N,C,L,v,S,Y){let Z=B([le("tickLower"),le("tickUpper"),le("tickArrayLowerStart"),le("tickArrayUpperStart"),V("liquidity"),o("amountMaxA"),o("amountMaxB"),ae("withMetadata"),x("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:j,isSigner:!1,isWritable:!1},{pubkey:Yn,isSigner:!1,isWritable:!1},{pubkey:$e,isSigner:!1,isWritable:!1},{pubkey:ue,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(Z.span);Z.encode({tickLower:T,tickUpper:O,tickArrayLowerStart:F,tickArrayUpperStart:K,liquidity:N,amountMaxA:C,amountMaxB:L,withMetadata:v,optionBaseFlag:S!==null?1:0,baseFlag:S!=null?S:!1},re);let $=Buffer.from([...ge.openPositionV2,...re]);return new se({keys:U,programId:e,data:$})}static increaseLiquidityV2Instruction(e,t,n,i,c,u,r,s,g,p,P,w,m,y,d,a,b,T,O){let F=B([V("liquidity"),o("amountMaxA"),o("amountMaxB"),x("optionBaseFlag"),ae("baseFlag")]),K=[{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:j,isSigner:!1,isWritable:!1},{pubkey:ue,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:T!==null?1:0,baseFlag:T!=null?T:!1},N);let C=Buffer.from([...ge.increaseLiquidityV2,...N]);return new se({keys:K,programId:e,data:C})}static decreaseLiquidityV2Instruction(e,t,n,i,c,u,r,s,g,p,P,w,m,y,d,a,b,T,O){let F=B([V("liquidity"),o("amountMinA"),o("amountMinB")]),K=[{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:j,isSigner:!1,isWritable:!1},{pubkey:ue,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:T},N);let C=Buffer.from([...ge.decreaseLiquidityV2,...N]);return new se({keys:K,programId:e,data:C})}static swapV2Instruction(e,t,n,i,c,u,r,s,g,p,P,w,m,y,d,a,b){let T=B([o("amount"),o("otherAmountThreshold"),V("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:j,isSigner:!1,isWritable:!1},{pubkey:ue,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(T.span);T.encode({amount:m,otherAmountThreshold:y,sqrtPriceLimitX64:d,isBaseInput:a},F);let K=Buffer.from([...ge.swapV2,...F]);return new se({keys:O,programId:e,data:K})}static collectRemainingRewardsInstruction(e,t,n,i,c,u,r){let s=B([x("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:j,isSigner:!1,isWritable:!1},{pubkey:ue,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,T,O,F,K,N,C,L,v,S){let Y=B([le("tickLower"),le("tickUpper"),le("tickArrayLowerStart"),le("tickArrayUpperStart"),V("liquidity"),o("amountMaxA"),o("amountMaxB"),ae("withMetadata"),x("optionBaseFlag"),ae("baseFlag")]),Z=[{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:j,isSigner:!1,isWritable:!1},{pubkey:Yn,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},...S?[{pubkey:S,isSigner:!1,isWritable:!0}]:[]],U=Buffer.alloc(Y.span);Y.encode({tickLower:b,tickUpper:T,tickArrayLowerStart:O,tickArrayUpperStart:F,liquidity:K,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:Z,programId:e,data:re})}static openLimitOrderInstruction(e,t,n,i,c,u,r,s,g,p,P,w,m,y,d,a,b,T){let O=B([x("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},...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[]],K=Buffer.alloc(O.span);O.encode({nonceIndex:y,zeroForOne:d,tickIndex:a,amount:b},K);let N=Buffer.from([...ge.openLimitOrder,...K]);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:j,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},...y?[{pubkey:y,isSigner:!1,isWritable:!0}]:[]],b=Buffer.alloc(d.span);d.encode({amount:w,amountMin:m},b);let T=Buffer.from([...ge.decreaseLimitOrder,...b]);return new se({keys:a,programId:e,data:T})}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||j),new R(c.programId||j)],{publicKey:m}=ni(t,u,g,p),{publicKey:y}=Gn(t,m),{publicKey:d}=gt(t,m,g),{publicKey:a}=gt(t,m,p),b=pe(t,m).publicKey,T=[this.createPoolInstruction(t,m,n,u,y,g,d,P,p,a,w,b,r,s)];return{signers:[],instructions:T,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||j),new R(c.programId||j)],{publicKey:d}=ii(t,u,P,w,p),{publicKey:a}=oi(t,g),{publicKey:b}=Gn(t,d),{publicKey:T}=gt(t,d,P),{publicKey:O}=gt(t,d,w),F=pe(t,d).publicKey,K=[this.createPoolInstruction(t,d,n,u,b,P,T,m,w,O,y,F,r,s)];return{signers:[],instructions:K,instructionTypes:[D.CreateAccount,D.ClmmCreatePool],address:{poolId:d,observationId:b,exBitmapAccount:F,mintA:P,mintB:w,mintAProgram:m,mintBProgram:y,mintAVault:T,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 S=an.generate();m.push(S),a=S.publicKey}let b=ee.getTickArrayStartIndex(i,e.config.tickSpacing),T=ee.getTickArrayStartIndex(c,e.config.tickSpacing),{publicKey:O}=de(y,d,b),{publicKey:F}=de(y,d,T),{publicKey:K}=w?z(n.wallet,a,ue):z(n.wallet,a,j),{publicKey:N}=st(a),{publicKey:C}=Le(y,a),{publicKey:L}=He(y,d,i,c),v=w?this.openPositionWithToken22NftInstruction(y,n.feePayer,d,n.wallet,a,K,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,T,u,r,s,p==="create",g&&g==="MintA",Ce.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[b,T]})?pe(y,d).publicKey:void 0):this.openPositionV2Instruction(y,n.feePayer,d,n.wallet,a,K,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,T,u,r,s,p==="create",null,Ce.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[b,T]})?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:K,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 S=an.generate();m.push(S),a=S.publicKey}let b=ee.getTickArrayStartIndex(i,e.config.tickSpacing),T=ee.getTickArrayStartIndex(c,e.config.tickSpacing),{publicKey:O}=de(y,d,b),{publicKey:F}=de(y,d,T),{publicKey:K}=w?z(n.wallet,a,ue):z(n.wallet,a,j),{publicKey:N}=st(a),{publicKey:C}=Le(y,a),{publicKey:L}=He(y,d,i,c),v=w?this.openPositionWithToken22NftInstruction(y,n.feePayer,d,n.wallet,a,K,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,T,g,!u||u==="MintA"?r:s,!u||u==="MintA"?s:r,p==="create",u&&u==="MintA",Ce.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[b,T]})?pe(y,d).publicKey:void 0):this.openPositionV2Instruction(y,n.feePayer,d,n.wallet,a,K,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,T,H,u==="MintA"?r:s,u==="MintA"?s:r,p==="create",u==="MintA",Ce.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[b,T]})?pe(y,d).publicKey:void 0);return{address:{nftMint:a,tickArrayLower:O,tickArrayUpper:F,positionNftAccount:K,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 S=an.generate();y.push(S),m=S.publicKey}let[d,a]=[new R(e.programId),new R(e.id)],b=ee.getTickArrayStartIndex(i,e.config.tickSpacing),T=ee.getTickArrayStartIndex(c,e.config.tickSpacing),{publicKey:O}=de(d,a,b),{publicKey:F}=de(d,a,T),{publicKey:K}=w?z(n.wallet,m,ue):z(n.wallet,m,j),{publicKey:N}=st(m),{publicKey:C}=Le(d,m),{publicKey:L}=He(d,a,i,c),v=w?this.openPositionWithToken22NftInstruction(d,n.wallet,a,n.wallet,m,K,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,T,u,r,s,p==="create",g&&g==="MintA",Ce.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[b,T]})?pe(d,a).publicKey:void 0):this.openPositionV2Instruction(d,n.wallet,a,n.wallet,m,K,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,T,u,r,s,p==="create",null,Ce.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[b,T]})?pe(d,a).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:O,tickArrayUpper:F,positionNftAccount:K,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,ue).publicKey:z(n.wallet,i.nftMint,j).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,ue):z(i.wallet,n.nftMint,j),{publicKey:a}=Le(g,n.nftMint),{publicKey:b}=He(g,p,n.tickLower,n.tickUpper),T=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:[T],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,ue):z(i.wallet,n.nftMint,j),{publicKey:a}=Le(g,n.nftMint),{publicKey:b}=He(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),H,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,ue):z(i.wallet,n.nftMint,s),{publicKey:b}=Le(p,n.nftMint),{publicKey:T}=He(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 K=[],N=this.decreaseLiquidityV2Instruction(p,i.wallet,a,b,P,T,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 K.push(N),{address:{tickArrayLower:y,tickArrayUpper:d,positionNftAccount:a,personalPosition:b,protocolPosition:T},signers:[],instructions:K,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,ue).publicKey:z(c,u,j).publicKey,{publicKey:w}=Le(n,u),m=Xn(e,p).publicKey,y=z(c,p,j).publicKey,d=st(p).publicKey,a=je.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?ue:j).publicKey,positionNftProgram:r?ue:j});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:$e,isSigner:!1,isWritable:!1},{pubkey:Yn,isSigner:!1,isWritable:!1},{pubkey:Re,isSigner:!1,isWritable:!1},{pubkey:j,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:We.programId,isSigner:!1,isWritable:!1}],b=B([ae("withMetadata")]),T=Buffer.alloc(b.span);b.encode({withMetadata:d},T);let O=Buffer.from([...pi,...T]);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,j),{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:zn(e,r).publicKey,isSigner:!1,isWritable:!0},{pubkey:j,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,j),{publicKey:g}=Le(t,e.ownerPosition.nftMint),{publicKey:p}=He(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:zn(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:j,isSigner:!1,isWritable:!1},{pubkey:ue,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:T,mintB:O,rewardAccounts:F,exTickArrayBitmap:K}){let N=[...K?[{pubkey:K,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:j,isSigner:!1,isWritable:!1},{pubkey:ue,isSigner:!1,isWritable:!1},{pubkey:Oe,isSigner:!1,isWritable:!1},{pubkey:T,isSigner:!1,isWritable:!1},{pubkey:O,isSigner:!1,isWritable:!1},...N];return new se({keys:C,programId:e,data:Buffer.from(fi)})}};import{PublicKey as Qn}from"@solana/web3.js";var ma=B([x("instruction")]),da=B([x("instruction")]),pa=B([o("rewardState"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardLastUpdateTime"),o("totalReward"),o("totalRewardEmissioned"),o("rewardClaimed"),o("rewardPerSecond"),V("accRewardPerShare"),A("rewardVault"),A("rewardMint"),A("rewardSender"),o("rewardType"),M(o(),15,"padding")]),fa=B([o("state"),o("nonce"),A("lpVault"),A("rewardVault"),A(),A(),o(),o(),o("totalReward"),V("perShareReward"),o("lastSlot"),o("perSlotReward")]),ya=B([o("state"),o("nonce"),A("lpVault"),A("rewardVaultA"),o("totalRewardA"),V("perShareRewardA"),o("perSlotRewardA"),x("option"),A("rewardVaultB"),W(7),o("totalRewardB"),V("perShareRewardB"),o("perSlotRewardB"),o("lastSlot"),A()]),ba=B([o(),o("state"),o("nonce"),o("validRewardTokenNum"),V("rewardMultiplier"),o("rewardPeriodMax"),o("rewardPeriodMin"),o("rewardPeriodExtend"),A("lpMint"),A("lpVault"),M(pa,5,"rewardInfos"),A("creator"),A(),M(o(),32,"padding")]),ga=new Proxy(fa,{get(l,e,t){return e==="decode"?(...n)=>{let i=l.decode(...n);return q(E({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(l,e,t)}}),Pa=new Proxy(ya,{get(l,e,t){return e==="decode"?(...n)=>{let i=l.decode(...n);return q(E({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(l,e,t)}}),gi=new Proxy(ba,{get(l,e,t){return e==="decode"?(...n)=>{let i=l.decode(...n);return q(E({},i),{version:6,rewardInfos:i.rewardInfos.map(c=>{var u;return q(E({},c),{rewardType:((u=Object.entries(Mt).find(r=>String(r[1])===c.rewardType.toString()))!=null?u:["Standard SPL"])[0]})})})}:Reflect.get(l,e,t)}}),Aa=B([o("isSet"),o("rewardPerSecond"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardType")]),wa=B([x("instruction"),o("nonce"),M(Aa,5,"rewardTimeInfo")]),ka=B([x("instruction"),o("rewardReopenTime"),o("rewardEndTime"),o("rewardPerSecond")]),Ta=B([x("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(V(),1,"rewardDebts"),o(""),o("voteLockedBalance"),M(o(),15)]),xb=B([o("state"),A("id"),A("owner"),o("deposited"),M(o(),2,"rewardDebts")]),ha=B([o("state"),A("id"),A("owner"),o("deposited"),M(V(),2,"rewardDebts"),M(o(),17)]),Ia=B([o(),o("state"),A("id"),A("owner"),o("deposited"),M(V(),5,"rewardDebts"),M(o(),16)]),Ba=B([x("instruction"),o("amount")]),Sa=B([A("mint"),A("grantAuthority"),o("baselineVoteWeightScaledFactor"),o("maxExtraLockupVoteWeightScaledFactor"),o("lockupSaturationSecs"),Ro("digitShift"),M(x(),7,"reserved1"),M(o(),7,"reserved2")]),Ka=B([W(8),A("governanceProgramId"),A("realm"),A("realmGoverningTokenMint"),A("realmAuthority"),M(x(),32,"reserved1"),M(Sa,4,"votingMints"),yt("timeOffset"),x("bump"),M(x(),7,"reserved2"),M(o(),11,"reserved3")]),xa=B([yt("startTime"),yt("endTime"),x("kind"),M(x(),15,"reserved")]),Ca=B([M(xa,1,"lockup"),o("amountDeposited_native"),o("amountInitiallyLockedNative"),ae("isUsed"),ae("allowClawback"),x("votingMintConfigIdx"),M(x(),29,"reserved")]),Ra=B([W(8),A("voterAuthority"),A("registrar"),M(Ca,32,"deposits"),x("voterBump"),x("voterWweightRecordBump"),M(x(),94,"reserved")]);import{NATIVE_MINT as Vb}from"@solana/spl-token";var _b=G("Raydium_farm_config"),La=new Qn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Oa=new Qn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Eb=new Qn("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var Mt={"Standard SPL":0,"Option tokens":1},Ai={[Mn.toString()]:3,[Fn.toString()]:4,[vn.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 $b from"bn.js";import{PublicKey as Na}from"@solana/web3.js";import Ma from"bn.js";function Fa(l){return typeof l=="object"&&l!==null&&![Pe,Ke,Na,Q,Ma,Ne,Ye].some(e=>typeof e=="object"&&l instanceof e)}function he(l){return typeof l=="string"?An(l):Array.isArray(l)?l.map(e=>he(e)):Fa(l)?Object.fromEntries(Object.entries(l).map(([e,t])=>[e,he(t)])):l}var 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 Vw,MintLayout as _w,NATIVE_MINT as Ew,TOKEN_PROGRAM_ID as Ww}from"@solana/spl-token";import MP from"bn.js";import ki from"bn.js";var Ua=new ki(25),Ga=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([x("instruction"),o("amountIn"),o("minAmountOut")]),Hn=B([x("instruction"),o("maxAmountIn"),o("amountOut")]),$P=B([x("instruction"),x("nonce")]),za=B([x("instruction"),x("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"),V("swapBaseInAmount"),V("swapQuoteOutAmount"),o("swapBase2QuoteFee"),V("swapQuoteInAmount"),V("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"),V("swapBaseInAmount"),V("swapQuoteOutAmount"),V("swapQuoteInAmount"),V("swapBaseOutAmount"),o("swapQuote2BaseFee"),o("swapBase2QuoteFee"),A("baseVault"),A("quoteVault"),A("baseMint"),A("quoteMint"),A("lpMint"),A("modelDataAccount"),A("openOrders"),A("marketId"),A("marketProgramId"),A("targetOrders"),A("owner"),M(o(),64,"padding")]),Xa=B([x("instruction"),o("baseAmountIn"),o("quoteAmountIn"),o("fixedSide"),o("otherAmountMin")]),Ya=B([x("instruction"),o("lpAmount"),o("baseAmountMin"),o("quoteAmountMin")]);var Qa=B([o("fee")]);var cn=G("Raydium_liquidity_instruction");function Za({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 Ha({poolKeys:l,userKeys:e,maxAmountIn:t,amountOut:n,modelDataPubKey:i=Lt},c){let u=he(l),r=Buffer.alloc(Hn.span);Hn.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 ja(l,e,t,n,i,c,u,r,s,g){let p=B([x("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([x("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 ja(new qe(e.programId),new qe(e.id),new qe(e.authority),new qe(e.vault.A),new qe(e.vault.B),n.tokenAccountIn,n.tokenAccountOut,n.owner,new un(i.toString()),new un(c.toString()));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 $n(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 Za(q(E({},r),{amountIn:i,minAmountOut:c}),t);if(u==="out")return Ha(q(E({},r),{maxAmountIn:i,amountOut:c}),t);cn.logWithError("invalid params","params",l)}throw cn.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}var Ja=5e4,es=B([o("x"),o("y"),o("price")]),PA=B([o("accountType"),o("status"),o("multiplier"),o("validDataCount"),M(es,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 QA,SYSVAR_RENT_PUBKEY as ZA,Transaction as HA,TransactionInstruction as jA}from"@solana/web3.js";import{createInitializeAccountInstruction as JA,TOKEN_PROGRAM_ID as ew}from"@solana/spl-token";function ts(l="accountFlags"){let e=new Ht(l);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var ns=B([W(5),ts("accountFlags"),A("ownAddress"),o("vaultSignerNonce"),A("baseMint"),A("quoteMint"),A("baseVault"),o("baseDepositsTotal"),o("baseFeesAccrued"),A("quoteVault"),o("quoteDepositsTotal"),o("quoteFeesAccrued"),o("quoteDustThreshold"),A("requestQueue"),A("eventQueue"),A("bids"),A("asks"),o("baseLotSize"),o("quoteLotSize"),o("feeRateBps"),o("referrerRebatesAccrued"),W(7)]);import{PublicKey as OT}from"@solana/web3.js";import{AccountLayout as MT,NATIVE_MINT as FT,TOKEN_2022_PROGRAM_ID as vT,TOKEN_PROGRAM_ID as VT,createAssociatedTokenAccountIdempotentInstruction as _T}from"@solana/spl-token";import Nk from"bn.js";import ss from"bn.js";var Ak=new ss(0);import Bk from"bn.js";import us from"bn.js";var De=new us(1e6);import XT from"bn.js";import QT from"decimal.js";import{PublicKey as jk,TransactionInstruction as ms,Keypair as Jk,SystemProgram as eT}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as nT,TOKEN_2022_PROGRAM_ID as oT,TOKEN_PROGRAM_ID as iT}from"@solana/spl-token";var _k=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");var Xk=Buffer.from("locked_liquidity","utf8");var mT=G("Raydium_cpmm"),ds={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173],lockCpLiquidity:[216,157,29,78,38,51,31,26],collectCpFee:[8,30,51,199,209,184,247,133],createPermissionPda:Buffer.from([135,136,2,216,137,169,181,202]),closePermissionPda:Buffer.from([156,84,32,118,69,135,70,123]),initializeWithPermission:Buffer.from([63,55,254,65,49,178,89,121]),collectCreatorFee:Buffer.from([20,22,86,123,198,28,219,132]),collectCreatorFeePermissionless:Buffer.from([202,202,34,83,226,122,145,229])};function dn(l,e,t,n,i,c,u,r,s,g,p,P,w,m,y,d){let a=B([o("amountIn"),o("amounOutMin")]),b=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:P,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0}],T=Buffer.alloc(a.span);return a.encode({amountIn:y,amounOutMin:d},T),new ms({keys:b,programId:l,data:Buffer.from([...ds.swapBaseInput,...T])})}var ps=B([W(8),x("bump"),ae("disableCreatePool"),ce("index"),o("tradeFeeRate"),o("protocolFeeRate"),o("fundFeeRate"),o("createPoolFee"),A("protocolOwner"),A("fundOwner"),o("creatorFeeRate"),M(o(),15)]),hi=B([W(8),A("configId"),A("poolCreator"),A("vaultA"),A("vaultB"),A("mintLp"),A("mintA"),A("mintB"),A("mintProgramA"),A("mintProgramB"),A("observationId"),x("bump"),x("status"),x("lpDecimals"),x("mintDecimalA"),x("mintDecimalB"),o("lpAmount"),o("protocolFeesMintA"),o("protocolFeesMintB"),o("fundFeesMintA"),o("fundFeesMintB"),o("openTime"),o("epoch"),x("feeOn"),ae("enableCreatorFee"),M(x(),6),o("creatorFeesMintA"),o("creatorFeesMintB"),M(o(),28)]),fT=B([W(8),A("configId"),M(o(),30)]);import{PublicKey as kK,SystemProgram as TK}from"@solana/web3.js";import{createTransferInstruction as IK,TOKEN_PROGRAM_ID as BK,TOKEN_2022_PROGRAM_ID as SK,createAssociatedTokenAccountIdempotentInstruction as KK,createSyncNativeInstruction as CK,createTransferCheckedInstruction as RK}from"@solana/spl-token";import Rs from"bn.js";import NK from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as iI,TOKEN_2022_PROGRAM_ID as rI,TOKEN_PROGRAM_ID as aI}from"@solana/spl-token";import{SystemProgram as lI,TransactionInstruction as mI}from"@solana/web3.js";import ws from"bn.js";var bs=B([o(),o("epoch"),x("curveType"),ce("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"),x("bump"),x("status"),x("mintDecimalsA"),x("mintDecimalsB"),x("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"),x("mintProgramFlag"),x("cpmmCreatorFeeOn"),o("platformVestingShare"),M(x(),54)]),Eh=B([o(),o("epoch"),A("poolId"),A("beneficiary"),o("claimedAmount"),o("tokenShareAmount"),M(o(),8)]),Ii=B([x("migrateType"),x("migrateCpmmFeeOn"),o("supply"),o("totalSellA"),o("totalFundRaisingB"),o("totalLockedAmount"),o("cliffPeriod"),o("unlockPeriod")]),As=B([o("epoch"),x("index"),A("configId"),Ii.replicate("bondingCurveParam"),M(o(),50)]),Bi=B([o(),o("epoch"),A("platformClaimFeeWallet"),A("platformLockNftWallet"),o("platformScale"),o("creatorScale"),o("burnScale"),o("feeRate"),M(x(),64,"name"),M(x(),256,"web"),M(x(),256,"img"),A("cpConfigId"),o("creatorFeeRate"),A("transferFeeExtensionAuth"),A("platformVestingWallet"),o("platformVestingScale"),A("platformCpCreator"),x("restrictGlobalConfig"),M(x(),107),Oo(As,"platformCurve")]);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"),Qh=Buffer.from("platform_fee_vault_auth_seed","utf8"),Zh=Buffer.from("creator_fee_vault_auth_seed","utf8"),Hh=Buffer.from("platform_global_access","utf8"),jh=Buffer.from("platform_allow_config","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]),updatePlatformCurveParam:Buffer.from([138,144,138,250,220,128,4,57]),removePlatformCurveParam:Buffer.from([27,30,62,169,93,224,24,145]),createPlatformVestingAccount:Buffer.from([146,71,173,69,98,19,15,106]),createPlatformAllowConfig:Buffer.from([69,71,168,7,214,250,107,102]),closePlatformAllowConfig:Buffer.from([82,205,36,216,16,6,240,215])};var bI=new ws("18446744073709551615");import{TOKEN_2022_PROGRAM_ID as wI,TOKEN_PROGRAM_ID as kI}from"@solana/spl-token";import BI from"bn.js";import KI from"decimal.js";import rB from"bn.js";import sB from"decimal.js";import NI from"bn.js";import FI from"decimal.js";import zI from"bn.js";import YI from"decimal.js";import xi from"bn.js";import Jn from"decimal.js";var pn=class{static _multipler(e){return new Jn(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new Jn(e.toString()).div(this._Q64).mul(this._multipler(t)).div(this._multipler(n))}static getPriceX64({price:e,decimalA:t,decimalB:n}){let i=e.mul(this._multipler(n)).div(this._multipler(t));return new xi(i.mul(this._Q64).toFixed(0))}};pn._Q64=new Jn(new xi(1).shln(64).toString());import{NATIVE_MINT as yS,TOKEN_2022_PROGRAM_ID as bS,TOKEN_PROGRAM_ID as gS,createAssociatedTokenAccountIdempotentInstruction as AS,createSyncNativeInstruction as wS,getTransferFeeConfig as kS,unpackMint as TS}from"@solana/spl-token";import ye from"bn.js";import{PublicKey as Ks,SystemProgram as BS}from"@solana/web3.js";import OS from"decimal.js";var NS={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 Ks("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new ye(0),cliffPeriod:new ye(0),unlockPeriod:new ye(0),startTime:new ye(0),totalAllocatedShare:new ye(0)}},MS=new ye(1e4);var xs={[Vn.toBase58()]:3};var Cs=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 oK}from"@solana/web3.js";var uK=G("Serum");var cx=new Rs(0);import{PublicKey as Os,Transaction as eo,TransactionInstruction as Ns}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ms}from"@solana/spl-token";import Ci 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 Ci(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),T=Ae.OWNER_LAYOUT.decode(a.data),O=b.openTime.toNumber(),F=b.endTime.toNumber(),K=T.tokenInfo.map(L=>L.debtAmount.gt(new Ci(0))).filter(L=>!L).length!==3,N=c>O&&c<F&&b.status===1,C=K&&N;g.push({programId:t,poolId:m,ammId:b.ammId,ownerAccountId:y,snapshotLpAmount:T.lpAmount,project:Ae.VERSION_PROJECT[P],openTime:O,endTime:F,canClaim:C,canClaimErrorType:K?N?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:b.tokenInfo.map((L,v)=>({mintAddress:L.mintAddress,mintVault:L.mintVault,mintDecimals:L.mintDecimals,perLpLoss:L.perLpLoss,debtAmount:T.tokenInfo[v].debtAmount.add(T.tokenInfo[v].claimedAmount)}))})}return g}async makeClaimTransaction({poolInfo:e,ownerInfo:t,feePayer:n}){t.wallet||this.scope.checkOwner();let i=this.createTxBuilder(n),c=t.wallet||this.scope.ownerPubKey,u=[];for(let g of e.tokenInfo){let{account:p,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({mint:g.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:g.mintAddress.equals(Pe.WSOL.mint),createInfo:{payer:c,amount:0},skipCloseAccount:!g.mintAddress.equals(Pe.WSOL.mint),associatedOnly:g.mintAddress.equals(Pe.WSOL.mint)?!1:t.associatedOnly});P&&i.addInstruction(P),u.push(p)}i.addInstruction({instructions:[Ae.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:c,ownerPda:e.ownerAccountId,claimAddress:u}})]});let{transaction:r,signers:s}=i.build();return[{transaction:r,signer:s}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:n}){let i=this.createTxBuilder(n),c=t.wallet||this.scope.ownerPubKey,u={};for(let p of e){let P=[];for(let w of p.tokenInfo){let{account:m,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({mint:w.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:w.mintAddress.equals(Pe.WSOL.mint),createInfo:{payer:c,amount:0},skipCloseAccount:!w.mintAddress.equals(Pe.WSOL.mint),associatedOnly:w.mintAddress.equals(Pe.WSOL.mint)?!1:t.associatedOnly});y&&i.addInstruction(y),m&&(u[w.mintAddress.toString()]=m,P.push(m))}i.addInstruction({instructions:[Ae.makeClaimInstruction({programId:p.programId,poolInfo:p,ownerInfo:{wallet:c,ownerPda:p.ownerAccountId,claimAddress:P}})]})}let{transaction:r,signers:s}=i.build(),g=i.allInstructions;return xn(g,[c,...s.map(p=>p.publicKey)])?[{transaction:r,signer:s}]:[{transaction:new eo().add(...g.slice(0,i.AllTxData.instructions.length-1)),signer:s},{transaction:new eo().add(...g.slice(i.AllTxData.instructions.length-1)),signer:[]},{transaction:new eo().add(...i.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=B([]),c=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(s=>({pubkey:s,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:s})=>({pubkey:s,isSigner:!1,isWritable:!0})),{pubkey:Ms,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 Ns({keys:c,programId:e,data:r})}},ve=Ae;ve.CLAIMED_NUM=3,ve.POOL_LAYOUT=B([W(8),x("bump"),x("status"),o("openTime"),o("endTime"),A("ammId"),M(B([x("mintDecimals"),A("mintAddress"),A("mintVault"),o("perLpLoss"),o("totalClaimedAmount")]),Ae.CLAIMED_NUM,"tokenInfo"),M(o(),10,"padding")]),ve.OWNER_LAYOUT=B([W(8),x("bump"),x("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 Os(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 Sx}from"@solana/web3.js";import{getTransferFeeConfig as xx,MintLayout as Cx,TOKEN_2022_PROGRAM_ID as Rx,TOKEN_PROGRAM_ID as Lx,unpackMint as Ox}from"@solana/spl-token";var aR=new ut(2),sR=new ut(3),uR=new ut(5),Pn=new ut(10),cR=new ut(100),lR=new ut(1e3),mR=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 WR(l,e,t,n,i,c,u,r,s,g,p,P){let w=B([x("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 qR(l,e,t,n,i,c,u,r,s,g){let p=B([x("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 Fs(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:no,isWritable:!1}),f({pubkey:to,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],T=[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 S=T[C];a.push(f({pubkey:new k(S.config.id)})),a.push(f({pubkey:new k(S.id)})),a.push(f({pubkey:new k(v?S.vault.A:S.vault.B)})),a.push(f({pubkey:new k(v?S.vault.B:S.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(oo(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 S=T[C];a.push(f({pubkey:new k(S.id)})),a.push(f({pubkey:new k(S.authority),isWritable:!1})),a.push(f({pubkey:new k(S.marketProgramId)})),a.push(f({pubkey:new k(S.marketAuthority)})),a.push(f({pubkey:en,isWritable:!1})),a.push(f({pubkey:new k(S.openOrders)})),a.push(f({pubkey:new k(S.vault.A)})),a.push(f({pubkey:new k(S.vault.B)})),a.push(f({pubkey:new k(S.id)})),a.push(f({pubkey:new k(S.id)})),a.push(f({pubkey:new k(S.id)})),a.push(f({pubkey:new k(S.id)})),a.push(f({pubkey:new k(S.id)})),a.push(f({pubkey:new k(S.id)})),a.push(f({pubkey:new k(S.marketId)})),a.push(f({pubkey:new k(S.marketBids)})),a.push(f({pubkey:new k(S.marketAsks)})),a.push(f({pubkey:new k(S.marketEventQueue)})),a.push(f({pubkey:new k(S.marketBaseVault)})),a.push(f({pubkey:new k(S.marketQuoteVault)}))}else if(L.version===4){let S=T[C],Y=L.status!==1;a.push(f({pubkey:new k(S.id)})),a.push(f({pubkey:new k(S.authority),isWritable:!1})),a.push(f({pubkey:new k(Y?S.id:S.marketProgramId)})),a.push(f({pubkey:new k(Y?S.id:S.marketAuthority)})),a.push(f({pubkey:new k(Y?S.id:S.openOrders)})),a.push(f({pubkey:new k(S.vault.A)})),a.push(f({pubkey:new k(S.vault.B)})),a.push(f({pubkey:new k(Y?S.id:S.marketId)})),a.push(f({pubkey:new k(Y?S.id:S.marketBids)})),a.push(f({pubkey:new k(Y?S.id:S.marketAsks)})),a.push(f({pubkey:new k(Y?S.id:S.marketEventQueue)})),a.push(f({pubkey:new k(Y?S.id:S.marketBaseVault)})),a.push(f({pubkey:new k(Y?S.id:S.marketQuoteVault)}))}else if(L.version===7){let S=T[C];a.push(f({pubkey:new k(S.authority)})),a.push(f({pubkey:new k(S.config.id)})),a.push(f({pubkey:new k(S.id)})),a.push(f({pubkey:new k(v?S.vault.A:S.vault.B)})),a.push(f({pubkey:new k(v?S.vault.B:S.vault.A)})),a.push(f({pubkey:new k(L.observationId)}))}else throw Error("pool type error")}let F=B([x("insId"),o("amountIn"),o("amountOut"),M(V(),d.length,"clmmPriceLimit")]),K=Buffer.alloc(F.span);return F.encode({insId:0,amountIn:w,amountOut:m,clmmPriceLimit:d},K),new vt({keys:a,programId:l,data:K})}function oo(l,e){if(l)if(e){let t=new Ve(l).div(new Ve(25));return t.gt(Me.add(Te))?t:Me.add(Te)}else{let t=new Ve(l).mul(new Ve(25));return t.lt(Fe.sub(Te))?t:Fe.sub(Te)}else return e?Me.add(Te):Fe.sub(Te)}function Ls({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 je.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 Ve(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")?$n({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 Ve(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 Ve(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:[Fs(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 Ve(0)),n.remainingAccounts)],instructionTypes:[D.RouteSwap],lookupTableAddress:[d.lookupTableAccount,a.lookupTableAccount].filter(b=>b!==void 0),address:{}}}else throw Error("route type error")}function UR({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:no,isWritable:!1}),f({pubkey:to,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 T=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]=T}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(oo(y.lastPoolPriceX64,a));for(let T of(w=y.remainingAccounts)!=null?w:[])s.push(f({pubkey:new k(T)}))}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([x("insId"),o("amountIn"),o("amountOut"),M(V(),r.length,"clmmPriceLimit")]),P=Buffer.alloc(p.span);return p.encode({insId:0,amountIn:t,amountOut:new Ve(c.data.otherAmountThreshold),clmmPriceLimit:r},P),new vt({keys:s,programId:l,data:P})}function GR({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:no,isWritable:!1}),f({pubkey:to,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(oo(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([x("insId"),o("amountIn"),o("amountOut"),M(V(),u.length,"clmmPriceLimit")]),p=Buffer.alloc(g.span);return g.encode({insId:1,amountIn:new Ve(i.data.otherAmountThreshold),amountOut:new Ve(i.data.outputAmount),clmmPriceLimit:u},p),new vt({keys:r,programId:l,data:p})}export{Ls as makeSwapInstruction,WR as route1Instruction,qR as route2Instruction,Fs as routeInstruction,UR as swapBaseInAutoAccount,GR as swapBaseOutAutoAccount};
//# sourceMappingURL=instrument.mjs.map