@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 143 kB
JavaScript
var Oi=Object.defineProperty,Ni=Object.defineProperties;var Mi=Object.getOwnPropertyDescriptors;var _t=Object.getOwnPropertySymbols;var ao=Object.prototype.hasOwnProperty,so=Object.prototype.propertyIsEnumerable;var ro=(l,e,t)=>e in l?Oi(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)=>Ni(l,Mi(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{PublicKey as Ri,SystemProgram as JC}from"@solana/web3.js";import{createTransferInstruction as tR,TOKEN_PROGRAM_ID as nR,TOKEN_2022_PROGRAM_ID as oR,createAssociatedTokenAccountIdempotentInstruction as iR,createSyncNativeInstruction as aR,createTransferCheckedInstruction as sR}from"@solana/spl-token";import vs from"bn.js";import lR from"decimal.js";import{PublicKey as Vi}from"@solana/web3.js";import{get as uo,set as Fi}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={},vi={};function G(l){let e=uo(co,l);if(!e){let t=uo(vi,l);e=new fn({name:l,logLevel:t}),Fi(co,l,e)}return e}import{MINT_SIZE as Ys,TOKEN_PROGRAM_ID as Qs,getTransferFeeConfig as Zs,unpackMint as Hs}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 jx from"decimal.js";import zi from"big.js";import Wt from"bn.js";import _i from"toformat";var Ei=_i,Tt=Ei;import Dt from"big.js";import Wi from"bn.js";import qi 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(qi),Ui={[0]:It.ROUND_DOWN,[1]:It.ROUND_HALF_UP,[2]:It.ROUND_UP},Gi={[0]:Dt.roundDown,[1]:Dt.roundHalfUp,[2]:Dt.roundUp},Q=class{constructor(e,t=new Wi(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:Ui[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=Gi[n]||1,new gn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Xi=G("Raydium_amount"),mo=Tt(zi);function Yi(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")):Xi.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]=Yi(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 Qi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as po}from"@solana/spl-token";var qt={chainId:101,address:Qi.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 Zi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Hi}from"@solana/spl-token";function f({pubkey:l,isSigner:e=!1,isWritable:t=!0}){return{pubkey:l,isWritable:t,isSigner:e}}var ji=[f({pubkey:Hi,isWritable:!1}),f({pubkey:fo.programId,isWritable:!1}),f({pubkey:Zi,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"),xu=new ne("SysvarC1ock11111111111111111111111111111111"),$e=new ne("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),$i=new ne("Sysvar1nstructions1111111111111111111111111"),Ji=fo.programId,Cu=new ne("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ru=new ne("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Lu=new ne("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Ou=new ne("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Nu=new ne("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Mu=new ne("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),Fu=new ne("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),vu=new ne("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Vu=new ne("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),_u=new ne("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Eu=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 er from"bn.js";var bo=new Q(new er(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 tr=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&&tr.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 sK}from"lodash";import cc 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"},nr=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 Oc=G("Raydium_Api");import{PublicKey as jm,SystemProgram as $m}from"@solana/web3.js";import{AccountLayout as od,createAssociatedTokenAccountIdempotentInstruction as id,TOKEN_PROGRAM_ID as rd,TOKEN_2022_PROGRAM_ID as ad}from"@solana/spl-token";import{PublicKey as ft,sendAndConfirmTransaction as Cn,SystemProgram as ur,Transaction as Kt,TransactionMessage as xt,VersionedTransaction as Ct}from"@solana/web3.js";import cr 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 or,Transaction as ko,TransactionMessage as ir,VersionedTransaction as To}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as rr}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]=or.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 ir({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 ar=l=>Buffer.isBuffer(l)?l:l instanceof Uint8Array?Buffer.from(l.buffer,l.byteOffset,l.byteLength):Buffer.from(l),sr=l=>{let e=l.serialize({requireAllSignatures:!1,verifySignatures:!1});l instanceof To&&(e=ar(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=rr.toBase58()),t.feePayer||(t.feePayer=wo.generate().publicKey)),e.push(sr(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 cr.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(ur.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(Li=>Li.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 xm,SystemProgram as Rm}from"@solana/web3.js";import Nm from"bn.js";import{createCloseAccountInstruction as Vm,createInitializeAccountInstruction as _m,createTransferInstruction as Em,TOKEN_PROGRAM_ID as Dm}from"@solana/spl-token";import{Keypair as ym,PublicKey as bm}from"@solana/web3.js";import Am from"bn.js";import{TOKEN_PROGRAM_ID as Tm}from"@solana/spl-token";import{PublicKey as kr}from"@solana/web3.js";import xo,{isBN as Co}from"bn.js";import{bits as lr,BitStructure as wl,blob as mr,Blob as kl,cstr as Tl,f32 as hl,f32be as Il,f64 as Bl,f64be as Sl,greedy as Kl,Layout as dr,ns64 as xl,ns64be as Cl,nu64 as Rl,nu64be as Ll,offset as pr,s16 as Ol,s16be as Nl,s24 as Ml,s24be as Fl,s32 as fr,s32be as vl,s40 as Vl,s40be as _l,s48 as El,s48be as Dl,s8 as Wl,seq as yr,struct as ql,Structure as br,u16 as gr,u16be as Ul,u24 as Gl,u24be as zl,u32 as Pr,u32be as Xl,u40 as Yl,u40be as Ql,u48 as Zl,u48be as Hl,u8 as Ar,UInt as wr,union as jl,Union as $l,unionLayoutDiscriminator as Jl,utf8 as em}from"@solana/buffer-layout";var Qt=dr,Io=br;var Ln=wr;var Bo=Ar,ce=gr;var Zt=Pr;var le=fr;var So=yr;var W=mr;var On=lr,Ko=pr;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 kr(e),e=>e.toBuffer(),l)}function ae(l){return new Rt(Bo(),Tr,hr,l)}function Tr(l){if(l===0)return!1;if(l===1)return!0;throw new Error("Invalid bool: "+l)}function hr(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 uP,SystemProgram as cP}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as mP}from"@solana/spl-token";import{PublicKey as Br}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Sr}from"@solana/spl-token";function z(l,e,t){return J([l.toBuffer(),(t!=null?t:Sr).toBuffer(),e.toBuffer()],new Br("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as _}from"@solana/web3.js";var Mn=new _("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Fn=new _("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),vn=new _("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Jt=new _("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Kr=new _("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Mo=new _("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Vn=new _("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),_n=new _("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),xr=new _("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),en=new _("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),En=new _("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Fo=new _("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),vo=new _("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Lt=new _("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Cr=new _("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Vo=new _("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),tn=new _("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),_o=new _("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Rr=new _("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Eo=new _("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Do=new _("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Wo=new _("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Lr=new _("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),gd=new _("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Pd=new _("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Or=new _("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Nr=new _("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX"),ke={AMM_V4:_n,AMM_STABLE:xr,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:Kr,Router:Cr,CREATE_CPMM_POOL_PROGRAM:tn,CREATE_CPMM_POOL_AUTH:_o,CREATE_CPMM_POOL_FEE_ACC:Rr,LOCK_CPMM_PROGRAM:Eo,LOCK_CPMM_AUTH:Do,LAUNCHPAD_PROGRAM:Wo,LAUNCHPAD_AUTH:Lr,LAUNCHPAD_PLATFORM:Or,LAUNCHPAD_CONFIG:Nr,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 kP from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as Wy,TOKEN_2022_PROGRAM_ID as qy,TOKEN_PROGRAM_ID as Uy}from"@solana/spl-token";import{PublicKey as zy}from"@solana/web3.js";import Yy from"bn.js";import Zy from"decimal.js";import{TOKEN_PROGRAM_ID as Od}from"@solana/spl-token";import{PublicKey as vd}from"@solana/web3.js";var Mr=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 Fr=new X(1).shln(128),at=new X(1).shln(64).subn(1),vr=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,Qd=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),Zd=new X(-1);var Hd=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)]),_r=B([oe("blockTimestamp"),yt("tickCumulative"),M(o(),4)]),Ho=B([W(8),ae("initialized"),o("recentEpoch"),ce("observationIndex"),A("poolId"),M(_r,Yo,"observations"),M(o(),4)]),Er=B([ce("filterPeriod"),ce("decayPeriod"),ce("reductionFactor"),oe("dynamicFeeControl"),oe("maxVolatilityAccumulator"),le("tickSpacingIndexReference"),oe("volatilityReference"),oe("volatilityAccumulator"),o("lastUpdateTimestamp"),M(x(),46)]),Dr=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(Dr,Ot,"rewardInfos"),W(8*16,"tickArrayBitmap"),M(o(),4),o("fundFeesTokenA"),o("fundFeesTokenB"),o("startTime"),o("recentEpoch"),Er.replicate("dynamicFeeInfo"),M(o(),46)]),Wr=B([V("growthInsideLastX64"),o("rewardAmountOwed")]),qr=B([W(8),x("bump"),A("nftMint"),A("poolId"),le("tickLower"),le("tickUpper"),V("liquidity"),V("feeGrowthInsideLastX64A"),V("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),M(Wr,Ot,"rewardInfos"),o("recentEpoch"),M(o(),7)]),ep=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)]),Ur=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(Ur,Be,"ticks"),x("initializedTickCount"),o("recentEpoch"),M(x(),107)]),Gr=B([W(8),x("bump"),M(A(),Qo,"operationOwners"),M(A(),Zo,"whitelistMints")]),zr=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")]),tp=B([W(8),ce("index"),ce("filterPeriod"),ce("decayPeriod"),ce("reductionFactor"),oe("dynamicFeeControl"),oe("maxVolatilityAccumulator"),M(o(),8)]),Xr=B([W(8),A("wallet"),x("nonceIndex"),o("orderNonce"),M(o(),4)]),np=B([o(),x("bump"),A("owner"),A("poolId"),A("positionId"),A("nftAccount"),M(o(),8)]),Yr=B([W(8),x("bump"),A("lockOwner"),A("poolId"),A("positionId"),A("nftAccount"),A("lockNftMint"),o("recentEpoch"),M(o(),8)]);import rp 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 fp=Buffer.from("amm_config","utf8"),Un=Buffer.from("pool","utf8"),ei=Buffer.from("pool_vault","utf8"),Qr=Buffer.from("pool_reward_vault","utf8"),ti=Buffer.from("position","utf8"),Zr=Buffer.from("tick_array","utf8"),Hr=Buffer.from("operation","utf8"),jr=Buffer.from("pool_tick_array_bitmap_extension","utf8"),$r=Buffer.from("observation","utf8"),yp=Buffer.from("support_mint","utf8"),bp=Buffer.from("dynamic_fee_config","utf8"),Jr=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([Jr,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([Qr,e.toBuffer(),t.toBuffer()],l)}function de(l,e,t){return J([Zr,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([Hr],l)}function pe(l,e){return J([jr,e.toBuffer()],l)}function Gn(l,e){return J([$r,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 ua}from"js-sha256";import ea 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 kp=new ea(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 Mp 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 Ep from"bn.js";import Wp from"decimal.js";import{PublicKey as mi}from"@solana/web3.js";import ra from"bn.js";import{TOKEN_2022_PROGRAM_ID as Ff,TOKEN_PROGRAM_ID as vf}from"@solana/spl-token";import Df from"decimal.js";import gf from"bn.js";import of 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 ra(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 jf from"bn.js";function be(l){let e=`global:${l}`;return Buffer.from(ua.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 da=B([x("instruction")]),pa=B([x("instruction")]),fa=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")]),ya=B([o("state"),o("nonce"),A("lpVault"),A("rewardVault"),A(),A(),o(),o(),o("totalReward"),V("perShareReward"),o("lastSlot"),o("perSlotReward")]),ba=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()]),ga=B([o(),o("state"),o("nonce"),o("validRewardTokenNum"),V("rewardMultiplier"),o("rewardPeriodMax"),o("rewardPeriodMin"),o("rewardPeriodExtend"),A("lpMint"),A("lpVault"),M(fa,5,"rewardInfos"),A("creator"),A(),M(o(),32,"padding")]),Pa=new Proxy(ya,{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)}}),Aa=new Proxy(ba,{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(ga,{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)}}),wa=B([o("isSet"),o("rewardPerSecond"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardType")]),ka=B([x("instruction"),o("nonce"),M(wa,5,"rewardTimeInfo")]),Ta=B([x("instruction"),o("rewardReopenTime"),o("rewardEndTime"),o("rewardPerSecond")]),ha=B([x("instruction"),o("isSet"),o("rewardPerSecond"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardType")]),xb=B([o("state"),A("id"),A("owner"),o("deposited"),M(o(),1,"rewardDebts")]),Pi=B([o("state"),A("id"),A("owner"),o("deposited"),M(V(),1,"rewardDebts"),o(""),o("voteLockedBalance"),M(o(),15)]),Cb=B([o("state"),A("id"),A("owner"),o("deposited"),M(o(),2,"rewardDebts")]),Ia=B([o("state"),A("id"),A("owner"),o("deposited"),M(V(),2,"rewardDebts"),M(o(),17)]),Ba=B([o(),o("state"),A("id"),A("owner"),o("deposited"),M(V(),5,"rewardDebts"),M(o(),16)]),Sa=B([x("instruction"),o("amount")]),Ka=B([A("mint"),A("grantAuthority"),o("baselineVoteWeightScaledFactor"),o("maxExtraLockupVoteWeightScaledFactor"),o("lockupSaturationSecs"),Ro("digitShift"),M(x(),7,"reserved1"),M(o(),7,"reserved2")]),xa=B([W(8),A("governanceProgramId"),A("realm"),A("realmGoverningTokenMint"),A("realmAuthority"),M(x(),32,"reserved1"),M(Ka,4,"votingMints"),yt("timeOffset"),x("bump"),M(x(),7,"reserved2"),M(o(),11,"reserved3")]),Ca=B([yt("startTime"),yt("endTime"),x("kind"),M(x(),15,"reserved")]),Ra=B([M(Ca,1,"lockup"),o("amountDeposited_native"),o("amountInitiallyLockedNative"),ae("isUsed"),ae("allowClawback"),x("votingMintConfigIdx"),M(x(),29,"reserved")]),La=B([W(8),A("voterAuthority"),A("registrar"),M(Ra,32,"deposits"),x("voterBump"),x("voterWweightRecordBump"),M(x(),94,"reserved")]);import{NATIVE_MINT as _b}from"@solana/spl-token";var Eb=G("Raydium_farm_config"),Oa=new Qn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Na=new Qn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Db=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 hg,SystemProgram as Ig,SYSVAR_CLOCK_PUBKEY as Bg,SYSVAR_RENT_PUBKEY as Sg,TransactionInstruction as Kg}from"@solana/web3.js";import Cg from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Lg,createAssociatedTokenAccountIdempotentInstruction as Og,TOKEN_PROGRAM_ID as Ng}from"@solana/spl-token";import Jb from"bn.js";import{PublicKey as Ma}from"@solana/web3.js";import Fa from"bn.js";function va(l){return typeof l=="object"&&l!==null&&![Pe,Ke,Ma,Q,Fa,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)):va(l)?Object.fromEntries(Object.entries(l).map(([e,t])=>[e,he(t)])):l}var dg=G("Raydium.farm.util");var Gg=G("Raydium_farm_instruction"),zg={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};import OP from"bn.js";import{PublicKey as Fw}from"@solana/web3.js";import{AccountLayout as _w,MintLayout as Ew,NATIVE_MINT as Dw,TOKEN_PROGRAM_ID as qw}from"@solana/spl-token";import FP from"bn.js";import ki from"bn.js";var Ga=new ki(25),za=new ki(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as oA,TOKEN_PROGRAM_ID as ln}from"@solana/spl-token";import{PublicKey as qe,SystemProgram as rA,SYSVAR_RENT_PUBKEY as aA,TransactionInstruction as mn}from"@solana/web3.js";import un from"bn.js";var Zn=B([x("instruction"),o("amountIn"),o("minAmountOut")]),Hn=B([x("instruction"),o("maxAmountIn"),o("amountOut")]),JP=B([x("instruction"),x("nonce")]),Xa=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")]),eA=B([o("accountType"),o("status"),o("nonce"),o("maxOrder"),o("depth"),o("baseDecimal"),o("quoteDecimal"),o("state"),o("resetFlag"),o("minSize"),o("volMaxCutRatio"),o("amountWaveRatio"),o("baseLotSize"),o("quoteLotSize"),o("minPriceMultiplier"),o("maxPriceMultiplier"),o("systemDecimalsValue"),o("abortTradeFactor"),o("priceTickMultiplier"),o("priceTick"),o("minSeparateNumerator"),o("minSeparateDenominator"),o("tradeFeeNumerator"),o("tradeFeeDenominator"),o("pnlNumerator"),o("pnlDenominator"),o("swapFeeNumerator"),o("swapFeeDenominator"),o("baseNeedTakePnl"),o("quoteNeedTakePnl"),o("quoteTotalPnl"),o("baseTotalPnl"),o("poolOpenTime"),o("punishPcAmount"),o("punishCoinAmount"),o("orderbookToInitTime"),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")]),Ya=B([x("instruction"),o("baseAmountIn"),o("quoteAmountIn"),o("fixedSide"),o("otherAmountMin")]),Qa=B([x("instruction"),o("lpAmount"),o("baseAmountMin"),o("quoteAmountMin")]);var Za=B([o("fee")]);var cn=G("Raydium_liquidity_instruction");function Ha({poolKeys:l,userKeys:e,amountIn:t,minAmountOut:n,modelDataPubKey:i=Lt},c){let u=he(l),r=Buffer.alloc(Zn.span);Zn.encode({instruction:9,amountIn:te(t),minAmountOut:te(n)},r);let s=[f({pubkey:ln,isWritable:!1}),f({pubkey:u.id}),f({pubkey:u.authority,isWritable:!1}),f({pubkey:u.openOrders})];return c===4&&s.push(f({pubkey:u.targetOrders})),s.push(f({pubkey:u.vault.A}),f({pubkey:u.vault.B})),c===5&&s.push(f({pubkey:i})),s.push(f({pubkey:u.marketProgramId,isWritable:!1}),f({pubkey:u.marketId}),f({pubkey:u.marketBids}),f({pubkey:u.marketAsks}),f({pubkey:u.marketEventQueue}),f({pubkey:u.marketBaseVault}),f({pubkey:u.marketQuoteVault}),f({pubkey:u.marketAuthority,isWritable:!1}),f({pubkey:e.tokenAccountIn}),f({pubkey:e.tokenAccountOut}),f({pubkey:e.owner,isWritable:!1,isSigner:!0})),new mn({programId:u.programId,keys:s,data:r})}function ja({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 $a(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 Ja(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 $a(new qe(e.programId),new qe(e.id),new qe(e.authority),new qe(e.vault.A),new qe(e.vault.B),n.tokenAccountIn,n.tokenAccountOut,n.owner,new un(i.toString()),new un(c.toString()));if(u==="out")return Ja(new qe(e.programId),new qe(e.id),new qe(e.authority),new qe(e.vault.A),new qe(e.vault.B),n.tokenAccountIn,n.tokenAccountOut,n.owner,new un(i.toString()),new un(c.toString()));cn.logWithError("invalid params","params",l)}throw cn.logWithError("invalid version, only support pool v4","poolKeys.version",t),new Error("invalid version")}function $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 Ha(q(E({},r),{amountIn:i,minAmountOut:c}),t);if(u==="out")return ja(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 es=5e4,ts=B([o("x"),o("y"),o("price")]),AA=B([o("accountType"),o("status"),o("multiplier"),o("validDataCount"),M(ts,es,"DataElement")]);import{PublicKey as LA}from"@solana/web3.js";import NA from"decimal.js";import{TOKEN_PROGRAM_ID as FA}from"@solana/spl-token";import{PublicKey as hA}from"@solana/web3.js";var SA=G("Raydium_liquidity_serum");import uk from"bn.js";import lk from"decimal.js";import{TOKEN_PROGRAM_ID as uw}from"@solana/spl-token";import{PublicKey as lw}from"@solana/web3.js";import dw from"bn.js";import{SystemProgram as ZA,SYSVAR_RENT_PUBKEY as HA,Transaction as jA,TransactionInstruction as $A}from"@solana/web3.js";import{createInitializeAccountInstruction as ew,TOKEN_PROGRAM_ID as tw}from"@solana/spl-token";function ns(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 os=B([W(5),ns("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 NT}from"@solana/web3.js";import{AccountLayout as FT,NATIVE_MINT as vT,TOKEN_2022_PROGRAM_ID as VT,TOKEN_PROGRAM_ID as _T,createAssociatedTokenAccountIdempotentInstruction as ET}from"@solana/spl-token";import Mk from"bn.js";import us from"bn.js";var wk=new us(0);import Sk from"bn.js";import cs from"bn.js";var De=new cs(1e6);import YT from"bn.js";import ZT from"decimal.js";import{PublicKey as $k,TransactionInstruction as ds,Keypair as eT,SystemProgram as tT}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as oT,TOKEN_2022_PROGRAM_ID as iT,TOKEN_PROGRAM_ID as rT}from"@solana/spl-token";var Ek=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Dk=Buffer.from("amm_config","utf8"),Wk=Buffer.from("pool","utf8"),qk=Buffer.from("pool_lp_mint","utf8"),Uk=Buffer.from("pool_vault","utf8"),Gk=Buffer.from("observation","utf8"),zk=Buffer.from("permission","utf8"),Xk=Buffer.from("support_mint","utf8");var Yk=Buffer.from("locked_liquidity","utf8");var dT=G("Raydium_cpmm"),ps={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 ds({keys:b,programId:l,data:Buffer.from([...ps.swapBaseInput,...T])})}var fs=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)]),yT=B([W(8),A("configId"),M(o(),30)]);import{PublicKey as gs,Transaction as Jn,TransactionInstruction as Ps}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as As}from"@solana/spl-token";import Ii from"bn.js";var Ae=class extends Ie{static getPdaPoolId(e,t){return J([Ae.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return J([Ae.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Ii(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:i,chainTime:c}){if(n.length===0)return[];let u=n.map(p=>Ae.getPdaPoolId(t,p).publicKey),r=[];for(let p=0;p<Ae.VERSION_PROJECT.length;p++)r.push(...u.map(P=>Ae.getPdaOwnerId(t,P,i,p).publicKey));let s=await ze(e,[...u,...r]),g=[];for(let p=0;p<s.length;p++){let P=Math.floor(p/n.length),w=p%n.length,m=u[w],y=r[p],d=s[w],a=s[n.length+p];if(!(d&&a)||d.data.length!==Ae.POOL_LAYOUT.span||a.data.length!==Ae.OWNER_LAYOUT.span)continue;let b=Ae.POOL_LAYOUT.decode(d.data),T=Ae.OWNER_LAYOUT.decode(a.data),O=b.openTime.toNumber(),F=b.endTime.toNumber(),K=T.tokenInfo.map(L=>L.debtAmount.gt(new Ii(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 Jn().add(...g.slice(0,i.AllTxData.instructions.length-1)),signer:s},{transaction:new Jn().add(...g.slice(i.AllTxData.instructions.length-1)),signer:[]},{transaction:new Jn().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:As,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 Ps({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 gs(e)),ve.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},ve.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];var Dh=Buffer.from("vault_auth_seed","utf8"),Wh=Buffer.from("global_config","utf8"),qh=Buffer.from("pool_vesting","utf8"),Uh=Buffer.from("platform_config","utf8"),Gh=Buffer.from("platform_fee_vault_auth_seed","utf8"),zh=Buffer.from("creator_fee_vault_auth_seed","utf8"),Xh=Buffer.from("platform_global_access","utf8"),Yh=Buffer.from("platform_allow_config","utf8");import{ASSOCIATED_TOKEN_PROGRAM_ID as oI,TOKEN_2022_PROGRAM_ID as iI,TOKEN_PROGRAM_ID as rI}from"@solana/spl-token";import{SystemProgram as cI,TransactionInstruction as lI}from"@solana/web3.js";import Is from"bn.js";var ws=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)]),ks=B([o("totalLockedAmount"),o("cliffPeriod"),o("unlockPeriod"),o("startTime"),o("totalAllocatedShare")]),Ts=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"),ks.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)]),Hh=B([o(),o("epoch"),A("poolId"),A("beneficiary"),o("claimedAmount"),o("tokenShareAmount"),M(o(),8)]),Bi=B([x("migrateType"),x("migrateCpmmFeeOn"),o("supply"),o("totalSellA"),o("totalFundRaisingB"),o("totalLockedAmount"),o("cliffPeriod"),o("unlockPeriod")]),hs=B([o("epoch"),x("index"),A("configId"),Bi.replicate("bondingCurveParam"),M(o(),50)]),Si=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(hs,"platformCurve")]);var fI={initialize:Buffer.from([175,175,109,31,13,152,155,237]),initializeV2:Buffer.from([67,153,175,39,218,16,38,32]),buyExactIn:Buffer.from([250,234,13,123,213,156,19,236]),buyExactOut:Buffer.from([24,211,116,40,105,3,153,56]),sellExactIn:Buffer.from([149,39,222,155,211,124,152,26]),sellExactOut:Buffer.from([95,200,71,34,8,9,11,166]),createVestingAccount:Buffer.from([129,178,2,13,217,172,230,218]),claimVestedToken:Buffer.from([49,33,104,30,189,157,79,35]),createPlatformConfig:Buffer.from([176,90,196,175,253,113,220,20]),claimPlatformFee:Buffer.from([156,39,208,135,76,237,61,72]),updatePlaformConfig:Buffer.from([195,60,76,129,146,45,67,143]),initializeWithToken2022:Buffer.from([37,190,126,222,44,154,171,17]),claimPlatformFeeFromVault:Buffer.from([117,241,198,168,248,218,80,29]),claimCreatorFee:Buffer.from([26,97,138,203,132,171,141,252]),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 yI=new Is("18446744073709551615");import{NATIVE_MINT as pS,TOKEN_2022_PROGRAM_ID as fS,TOKEN_PROGRAM_ID as yS,createAssociatedTokenAccountIdempotentInstruction as gS,createSyncNativeInstruction as PS,getTransferFeeConfig as AS,unpackMint as wS}from"@solana/spl-token";import ye from"bn.js";import{PublicKey as Ls,SystemProgram as hS}from"@solana/web3.js";import JI from"bn.js";import tB from"decimal.js";import AI from"bn.js";import kI from"decimal.js";import KI from"bn.js";import CI from"decimal.js";import EI from"bn.js";import WI from"decimal.js";import Ci from"bn.js";import eo from"decimal.js";var pn=class{static _multipler(e){return new eo(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new eo(e.toString()).div(this._Q64).mul(this._multipler(t)).div(this._multipler(n))}static getPriceX64({price:e,decimalA:t,decimalB:n}){let i=e.mul(this._multipler(n)).div(this._multipler(t));return new Ci(i.mul(this._Q64).toFixed(0))}};pn._Q64=new eo(new Ci(1).shln(64).toString());import{TOKEN_2022_PROGRAM_ID as cB,TOKEN_PROGRAM_ID as lB}from"@solana/spl-token";import RS from"decimal.js";var LS={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 Ls("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new ye(0),cliffPeriod:new ye(0),unlockPeriod:new ye(0),startTime:new ye(0),totalAllocatedShare:new ye(0)}},OS=new ye(1e4);import{PublicKey as vS}from"@solana/web3.js";import{getTransferFeeConfig as _S,MintLayout as ES,TOKEN_2022_PROGRAM_ID as DS,TOKEN_PROGRAM_ID as WS,unpackMint as qS}from"@solana/spl-token";var Os={[Vn.toBase58()]:3};var Ns=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 QK}from"@solana/web3.js";var JK=G("Serum");var sC=new ut(2),uC=new ut(3),cC=new ut(5),Pn=new ut(10),lC=new ut(100),mC=new ut(1e3),dC=new ut(1e4);function hn(l){return Pn.pow(te(l))}function bn(l,e=1,t=[]){let n=[...l];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{ASSOCIATED_TOKEN_PROGRAM_ID as 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";function qC(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 UC(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 Ms(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 Fs({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:[Ms(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 GC({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 zC({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})}var DR=new vs(0);function WR(l,e){var n,i,c,u,r;let t=(n=l.extensions)==null?void 0:n.feeConfig;if(!!t)return{transferFeeConfigAuthority:Ri.default,withdrawWithheldAuthority:Ri.default,withheldAmount:BigInt(0),olderTransferFee:{epoch:BigInt((c=(i=t.olderTransferFee.epoch)!=null?i:e)!=null?c:0),maximumFee:BigInt(t.olderTransferFee.maximumFee),transferFeeBasisPoints:t.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt((r=(u=t.newerTransferFee.epoch)!=null?u:e)!=null?r:0),maximumFee:BigInt(t.newerTransferFee.maximumFee),transferFeeBasisPoints:t.newerTransferFee.transferFeeBasisPoints}}}export{Fs as makeSwapInstruction,qC as route1Instruction,UC as route2Instruction,Ms as routeInstruction,GC as swapBaseInAutoAccount,zC as swapBaseOutAutoAccount,WR as toTransferFeeConfig};
//# sourceMappingURL=index.mjs.map