UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

3 lines 237 kB
var qa=Object.create;var Sn=Object.defineProperty,Ua=Object.defineProperties,Ga=Object.getOwnPropertyDescriptor,za=Object.getOwnPropertyDescriptors,Xa=Object.getOwnPropertyNames,ro=Object.getOwnPropertySymbols,Ya=Object.getPrototypeOf,Zo=Object.prototype.hasOwnProperty,ur=Object.prototype.propertyIsEnumerable;var sr=(l,e,t)=>e in l?Sn(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t,_=(l,e)=>{for(var t in e||(e={}))Zo.call(e,t)&&sr(l,t,e[t]);if(ro)for(var t of ro(e))ur.call(e,t)&&sr(l,t,e[t]);return l},V=(l,e)=>Ua(l,za(e));var ut=(l,e)=>{var t={};for(var n in l)Zo.call(l,n)&&e.indexOf(n)<0&&(t[n]=l[n]);if(l!=null&&ro)for(var n of ro(l))e.indexOf(n)<0&&ur.call(l,n)&&(t[n]=l[n]);return t};var Ha=(l,e)=>{for(var t in e)Sn(l,t,{get:e[t],enumerable:!0})},cr=(l,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of Xa(e))!Zo.call(l,o)&&o!==t&&Sn(l,o,{get:()=>e[o],enumerable:!(n=Ga(e,o))||n.enumerable});return l};var q=(l,e,t)=>(t=l!=null?qa(Ya(l)):{},cr(e||!l||!l.__esModule?Sn(t,"default",{value:l,enumerable:!0}):t,l)),Qa=l=>cr(Sn({},"__esModule",{value:!0}),l);var Lc={};Ha(Lc,{default:()=>io,toTransferFeeConfig:()=>Mt});module.exports=Qa(Lc);var H=require("@solana/web3.js"),J=require("@solana/spl-token"),te=q(require("bn.js")),le=q(require("decimal.js"));var ei=require("@solana/web3.js");var Kn=require("lodash");var jo=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}},lr={},Za={};function re(l){let e=(0,Kn.get)(lr,l);if(!e){let t=(0,Kn.get)(Za,l);e=new jo({name:l,logLevel:t}),(0,Kn.set)(lr,l,e)}return e}var Ft=require("@solana/spl-token"),$o=re("Raydium_accountInfo_util");async function ct(l,e,t){let{batchRequest:n,commitment:o="confirmed",chunkCount:i=100}=_({batchRequest:!1},t),r=Jo(e,i),a=new Array(r.length).fill([]);if(n){let c=r.map(f=>{let m=l._buildArgs([f.map(p=>p.toBase58())],o,"base64");return{methodName:"getMultipleAccounts",args:m}}),u=Jo(c,10);a=(await(await Promise.all(u.map(async f=>await l._rpcBatchRequest(f)))).flat()).map(f=>(f.error&&$o.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${f.error.message}`),f.result.value.map(m=>{if(m){let{data:p,executable:g,lamports:y,owner:b,rentEpoch:P}=m;return p.length!==2&&p[1]!=="base64"&&$o.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:g,lamports:y,owner:new ei.PublicKey(b),rentEpoch:P}}return null})))}else try{a=await Promise.all(r.map(c=>l.getMultipleAccountsInfo(c,o)))}catch(c){c instanceof Error&&$o.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function yt(l,e,t){let n=await ct(l,e.map(o=>o.pubkey),t);return e.map((o,i)=>V(_({},o),{accountInfo:n[i]}))}async function ao({connection:l,mints:e,config:t}){var i,r,a;if(e.length===0)return{};let n=await yt(l,e.map(c=>({pubkey:at(c)})),t),o={};for(let c of n){if(!c.accountInfo||c.accountInfo.data.length<Ft.MINT_SIZE){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=(0,Ft.unpackMint)(c.pubkey,c.accountInfo,(i=c.accountInfo)==null?void 0:i.owner);o[c.pubkey.toString()]=V(_({},u),{programId:((r=c.accountInfo)==null?void 0:r.owner)||Ft.TOKEN_PROGRAM_ID,feeConfig:(a=(0,Ft.getTransferFeeConfig)(u))!=null?a:void 0})}return o[ei.PublicKey.default.toBase58()]=o[Te.toBase58()],o}var Nt=q(require("bn.js")),Rc=q(require("decimal.js"));var br=q(require("big.js")),On=q(require("bn.js"));var mr=q(require("toformat")),ja=mr.default,Cn=ja;var Rn=q(require("big.js")),pr=q(require("bn.js")),fr=q(require("decimal.js-light"));var on=q(require("bn.js"));var dr=9007199254740991;function ke(l){let e=re("Raydium_parseBigNumberish");if(l instanceof on.default)return l;if(typeof l=="string"){if(l.match(/^-?[0-9]+$/))return new on.default(l);e.logWithError(`invalid BigNumberish string: ${l}`)}return typeof l=="number"?(l%1&&e.logWithError(`BigNumberish number underflow: ${l}`),(l>=dr||l<=-dr)&&e.logWithError(`BigNumberish number overflow: ${l}`),new on.default(String(l))):typeof l=="bigint"?new on.default(l.toString()):(e.error(`invalid BigNumberish value: ${l}`),new on.default(0))}var so=re("module/fraction"),ti=Cn(Rn.default),Ln=Cn(fr.default),Ja={[0]:Ln.ROUND_DOWN,[1]:Ln.ROUND_HALF_UP,[2]:Ln.ROUND_UP},es={[0]:Rn.default.roundDown,[1]:Rn.default.roundHalfUp,[2]:Rn.default.roundUp},me=class{constructor(e,t=new pr.default(1)){this.numerator=ke(e),this.denominator=ke(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new me(this.denominator,this.numerator)}add(e){let t=e instanceof me?e:new me(ke(e));return this.denominator.eq(t.denominator)?new me(this.numerator.add(t.numerator),this.denominator):new me(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof me?e:new me(ke(e));return this.denominator.eq(t.denominator)?new me(this.numerator.sub(t.numerator),this.denominator):new me(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof me?e:new me(ke(e));return new me(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof me?e:new me(ke(e));return new me(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||so.logWithError(`${e} is not an integer.`),e<=0&&so.logWithError(`${e} is not positive.`),Ln.set({precision:e+1,rounding:Ja[n]});let o=new Ln(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return o.toFormat(o.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||so.logWithError(`${e} is not an integer.`),e<0&&so.logWithError(`${e} is negative.`),ti.DP=e,ti.RM=es[n]||1,new ti(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var ts=re("Raydium_amount"),yr=Cn(br.default);function ns(l,e){let t="0",n="0";if(l.includes(".")){let o=l.split(".");o.length===2?([t,n]=o,n=n.padEnd(e,"0")):ts.logWithError(`invalid number string, num: ${l}`)}else t=l;return[t,n.slice(0,e)||n]}var Pe=class extends me{constructor(t,n,o=!0,i){let r=new On.default(0),a=ni.pow(new On.default(t.decimals));if(o)r=ke(n);else{let c=new On.default(0),u=new On.default(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[s,f]=ns(n.toString(),t.decimals);c=ke(s),u=ke(f)}c=c.mul(a),r=c.add(u)}super(r,a);this.logger=re(i||"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 Pe(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Pe(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,o=0){return super.toSignificant(t,n,o)}toFixed(t=this.token.decimals,n,o=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,o)}toExact(t={groupSeparator:""}){return yr.DP=this.token.decimals,new yr(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};var gr=require("@solana/web3.js"),oi=require("@solana/spl-token"),uo={chainId:101,address:gr.PublicKey.default.toBase58(),programId:oi.TOKEN_PROGRAM_ID.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},bt={chainId:101,address:"So11111111111111111111111111111111111111112",programId:oi.TOKEN_PROGRAM_ID.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"}};var co=require("@solana/web3.js");var be=require("@solana/web3.js"),Pr=require("@solana/spl-token");function N({pubkey:l,isSigner:e=!1,isWritable:t=!0}){return{pubkey:l,isWritable:t,isSigner:e}}var os=[N({pubkey:Pr.TOKEN_PROGRAM_ID,isWritable:!1}),N({pubkey:be.SystemProgram.programId,isWritable:!1}),N({pubkey:be.SYSVAR_RENT_PUBKEY,isWritable:!1})];function ii({publicKey:l,transformSol:e}){let t=ri(l.toString());if(t instanceof be.PublicKey)return e&&t.equals(zt)?Te:t;if(e&&t.toString()===zt.toBase58())return Te;if(typeof t=="string"){if(t===be.PublicKey.default.toBase58())return be.PublicKey.default;try{return new be.PublicKey(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function ri(l){try{return new be.PublicKey(l)}catch{return l}}var St=new be.PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),lt=new be.PublicKey("SysvarRent111111111111111111111111111111111"),rl=new be.PublicKey("SysvarC1ock11111111111111111111111111111111"),vt=new be.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),is=new be.PublicKey("Sysvar1nstructions1111111111111111111111111"),rs=be.SystemProgram.programId,al=new be.PublicKey("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),sl=new be.PublicKey("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),ul=new be.PublicKey("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),cl=new be.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),ll=new be.PublicKey("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),ml=new be.PublicKey("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),dl=new be.PublicKey("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),pl=new be.PublicKey("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),fl=new be.PublicKey("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),yl=new be.PublicKey("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),bl=new be.PublicKey("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Te=new be.PublicKey("So11111111111111111111111111111111111111112"),zt=be.PublicKey.default;function at(l){return ii({publicKey:l,transformSol:!0})}var ai=class{constructor({mint:e,decimals:t,symbol:n,name:o,skipMint:i=!1,isToken2022:r=!1}){if(e===zt.toBase58()||e instanceof co.PublicKey&&zt.equals(e)){this.decimals=bt.decimals,this.symbol=bt.symbol,this.name=bt.name,this.mint=new co.PublicKey(bt.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=o||e.toString().substring(0,6),this.mint=i?co.PublicKey.default:ii({publicKey:e}),this.isToken2022=r}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Re=ai;Re.WSOL=new ai(V(_({},bt),{mint:bt.address}));var si=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},lo=si;lo.SOL=new si(uo);var wr=q(require("bn.js"));var Ar=new me(new wr.default(100)),gt=class extends me{toSignificant(e=5,t,n){return this.mul(Ar).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Ar).toFixed(e,t,n)}};var as=re("Raydium_price"),Je=class extends me{constructor(t){let{baseToken:n,quoteToken:o,numerator:i,denominator:r}=t;super(i,r);this.baseToken=n,this.quoteToken=o,this.scalar=new me(ui(n.decimals),ui(o.decimals))}get raw(){return new me(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Je({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&as.logWithError("mul token not equals");let n=super.mul(t);return new Je({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,o){return this.adjusted.toSignificant(t,n,o)}toFixed(t=this.quoteToken.decimals,n,o){return this.adjusted.toFixed(t,n,o)}};var Sc=require("lodash");var us=q(require("axios"));var kr={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"},ss=V(_({},kr),{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 rm=re("Raydium_Api");var qr=require("@solana/web3.js");var Bo=require("@solana/spl-token");var de=require("@solana/web3.js"),Br=q(require("axios"));var Pt=require("@solana/web3.js");async function ci({connection:l,address:e,cluster:t="mainnet"}){let n=await ct(l,[...new Set(e.map(i=>i.toString()))].map(i=>new Pt.PublicKey(i))),o={};for(let i=0;i<e.length;i++){let r=n[i],a=e[i];if(!r)continue;let c=new Pt.AddressLookupTableAccount({key:a,state:Pt.AddressLookupTableAccount.deserialize(r.data)});o[a.toString()]=c,t==="devnet"?an[a.toString()]=c:rn[a.toString()]=c}return o}var rn={},li=async l=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(rn[e])return rn;let t=new Pt.PublicKey(e),n=await l.getAccountInfo(t);return n&&(rn[e]=new Pt.AddressLookupTableAccount({key:t,state:Pt.AddressLookupTableAccount.deserialize(n.data)})),rn},an={},mi=async l=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(an[e])return an;let t=new Pt.PublicKey(e),n=await l.getAccountInfo(t);return n&&(an[e]=new Pt.AddressLookupTableAccount({key:t,state:Pt.AddressLookupTableAccount.deserialize(n.data)})),an};var ee={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"};var He=require("@solana/web3.js");var hr=require("@solana/spl-token"),Tr=re("Raydium_txUtil"),Ir=1644;function mo(l){let e=[],t=[];return l.microLamports&&(e.push(He.ComputeBudgetProgram.setComputeUnitPrice({microLamports:l.microLamports})),t.push(ee.SetComputeUnitPrice)),l.units&&(e.push(He.ComputeBudgetProgram.setComputeUnitLimit({units:l.units})),t.push(ee.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function sn(l,e){var n,o;let t=e!=null?e:"confirmed";return(o=await((n=l.getLatestBlockhash)==null?void 0:n.call(l,{commitment:t})))==null?void 0:o.blockhash}async function po(l,e){return l.getSignatureStatuses([e]),new Promise((t,n)=>{let o=setTimeout(n,6e4);l.onSignature(e,i=>{if(clearTimeout(o),!i.err){t("");return}n(Object.assign(i.err,{txId:e}))},"confirmed")})}function di(l,e){l.length<1&&Tr.logWithError(`no instructions provided: ${l.toString()}`),e.length<1&&Tr.logWithError(`no signers provided:, ${e.toString()}`);let t=new He.Transaction;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...l);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Ir}catch{return!1}}function ue(l,e){let[t,n]=He.PublicKey.findProgramAddressSync(l,e);return{publicKey:t,nonce:n}}function Nn({instructions:l,payer:e,signers:t}){return di(l,[e,...t])}function Mn({instructions:l,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=He.Keypair.generate().publicKey.toString()}){let i=new He.TransactionMessage({payerKey:e,recentBlockhash:n,instructions:l}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new He.VersionedTransaction(i).serialize()).toString("base64").length<Ir}catch{return!1}}var cs=l=>Buffer.isBuffer(l)?l:l instanceof Uint8Array?Buffer.from(l.buffer,l.byteOffset,l.byteLength):Buffer.from(l),ls=l=>{let e=l.serialize({requireAllSignatures:!1,verifySignatures:!1});l instanceof He.VersionedTransaction&&(e=cs(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Xt(l){let e=[];return l.forEach(t=>{t instanceof He.Transaction&&(t.recentBlockhash||(t.recentBlockhash=hr.TOKEN_PROGRAM_ID.toBase58()),t.feePayer||(t.feePayer=He.Keypair.generate().publicKey)),e.push(ls(t))}),console.log("simulate tx string:",e),e}var fo=2e3,yo=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 Br.default.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}=mo(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(de.SystemProgram.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new de.PublicKey(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(ee.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:o=[],endInstructionTypes:i=[],lookupTableAddress:r=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...o),this.endInstructionTypes.push(...i),this.lookupTableAddress.push(...r.filter(a=>a!==de.PublicKey.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:n}){return e===0?await this.buildV0(V(_({},t||{}),{lookupTableAddress:n})):this.build(t)}build(e){var n;let t=new de.Transaction;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(o=>o.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async o=>{var s;let{recentBlockHash:i,skipPreflight:r=!0,sendAndConfirm:a,notSendToRpc:c}=o||{},u=i!=null?i:await sn(this.connection,this.blockhashCommitment);if(t.recentBlockhash=u,this.signers.length&&t.sign(...this.signers),Xt([t]),(s=this.owner)!=null&&s.isKeyPair)return{txId:a?await(0,de.sendAndConfirmTransaction)(this.connection,t,this.signers.find(m=>m.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:r}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:r}),signedTx:t};if(this.signAllTransactions){let f=await this.signAllTransactions([t]);if(this.signers.length)for(let m of f)try{m.sign(...this.signers)}catch{}return{txId:c?"":await this.connection.sendRawTransaction(f[0].serialize(),{skipPreflight:r}),signedTx:f[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var u;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:o}=this.build(n),i=t.filter(s=>s.transaction.instructions.length>0),r=[o,...i.map(s=>s.transaction)],a=[this.signers,...i.map(s=>s.signers)],c=[...this.instructionTypes,...i.map(s=>s.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(s=>{s.some(f=>f.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:r,signers:a,instructionTypes:c,execute:async s=>{var P;let{sequentially:f,onTxUpdate:m,skipTxCount:p=0,recentBlockHash:g,skipPreflight:y=!0}=s||{},b=g!=null?g:await sn(this.connection,this.blockhashCommitment);if((P=this.owner)!=null&&P.isKeyPair){if(f){let w=[],h=0;for(let B of r){if(++h,h<=p)continue;let A=await(0,de.sendAndConfirmTransaction)(this.connection,B,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});w.push(A)}return{txIds:w,signedTxs:r}}return{txIds:await await Promise.all(r.map(async w=>(w.recentBlockhash=b,await this.connection.sendRawTransaction(w.serialize(),{skipPreflight:y})))),signedTxs:r}}if(this.signAllTransactions){let w=r.map((B,A)=>(B.recentBlockhash=b,a[A].length&&B.sign(...a[A]),B));Xt(w);let h=await this.signAllTransactions(w);if(f){let B=0,A=[],k=async()=>{if(!h[B])return;let T=await this.connection.sendRawTransaction(h[B].serialize(),{skipPreflight:y});A.push({txId:T,status:"sent",signedTx:h[B]}),m==null||m([...A]),B++;let C=!1,S=null,x=null,v=F=>{S!==null&&clearInterval(S),x!==null&&this.connection.removeSignatureListener(x);let O=A.findIndex(W=>W.txId===T);if(O>-1){if(A[O].status==="error"||A[O].status==="success")return;A[O].status=F.err?"error":"success"}m==null||m([...A]),F.err||k()};this.loopMultiTxStatus&&(S=setInterval(async()=>{var F;if(C){clearInterval(S);return}try{let O=await this.connection.getTransaction(T,{commitment:"confirmed",maxSupportedTransactionVersion:0});O&&(C=!0,clearInterval(S),v({err:((F=O.meta)==null?void 0:F.err)||null}),console.log("tx status from getTransaction:",T))}catch(O){C=!0,clearInterval(S),console.error("getTransaction timeout:",O,T)}},fo)),x=this.connection.onSignature(T,F=>{if(C){this.connection.removeSignatureListener(x);return}C=!0,v(F)},"confirmed"),this.connection.getSignatureStatus(T)};return await k(),{txIds:A.map(T=>T.txId),signedTxs:h}}else{let B=[];for(let A=0;A<h.length;A+=1){let k=await this.connection.sendRawTransaction(h[A].serialize(),{skipPreflight:y});B.push(k)}return{txIds:B,signedTxs:h}}}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 y;let g=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:o,recentBlockhash:i}=g,r=ut(g,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),a=_(_({},this.cluster==="devnet"?await mi(this.connection):await li(this.connection)),t),c=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let b of c)a[b]===void 0&&u.push(new de.PublicKey(b));let s=await ci({connection:this.connection,address:u});for(let[b,P]of Object.entries(s))a[b]=P;let f=o?de.PublicKey.default.toBase58():i!=null?i:await sn(this.connection,this.blockhashCommitment),m=new de.TransactionMessage({payerKey:this.feePayer,recentBlockhash:f,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(a));((y=this.owner)==null?void 0:y.signer)&&!this.signers.some(b=>b.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let p=new de.VersionedTransaction(m);return p.sign(this.signers),{builder:this,transaction:p,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async b=>{var B;let{skipPreflight:P=!0,sendAndConfirm:w,notSendToRpc:h}=b||{};if(Xt([p]),(B=this.owner)!=null&&B.isKeyPair){let A=await this.connection.sendTransaction(p,{skipPreflight:P});return w&&await po(this.connection,A),{txId:A,signedTx:p}}if(this.signAllTransactions){let A=await this.signAllTransactions([p]);if(this.signers.length)for(let k of A)try{k.sign(this.signers)}catch{}return{txId:h?"":await this.connection.sendTransaction(A[0],{skipPreflight:P}),signedTx:A[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async buildV0MultiTx(e){var u;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:o}=await this.buildV0(n),i=t.filter(s=>s.builder.instructions.length>0),r=[o,...i.map(s=>s.transaction)],a=[this.signers,...i.map(s=>s.signers)],c=[...this.instructionTypes,...i.map(s=>s.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(s=>{s.some(f=>f.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),r.forEach(async(s,f)=>{s.sign(a[f])}),{builder:this,transactions:r,signers:a,instructionTypes:c,buildProps:n,execute:async s=>{var y;let{sequentially:f,onTxUpdate:m,recentBlockHash:p,skipPreflight:g=!0}=s||{};if(p&&r.forEach(b=>b.message.recentBlockhash=p),Xt(r),(y=this.owner)!=null&&y.isKeyPair){if(f){let b=[];for(let P of r){let w=await this.connection.sendTransaction(P,{skipPreflight:g});await po(this.connection,w),b.push(w)}return{txIds:b,signedTxs:r}}return{txIds:await Promise.all(r.map(async b=>await this.connection.sendTransaction(b,{skipPreflight:g}))),signedTxs:r}}if(this.signAllTransactions){let b=await this.signAllTransactions(r);if(f){let P=0,w=[],h=async()=>{if(!b[P])return;let B=await this.connection.sendTransaction(b[P],{skipPreflight:g});w.push({txId:B,status:"sent",signedTx:b[P]}),m==null||m([...w]),P++;let A=!1,k=null,T=null,C=S=>{k!==null&&clearInterval(k),T!==null&&this.connection.removeSignatureListener(T);let x=w.findIndex(v=>v.txId===B);if(x>-1){if(w[x].status==="error"||w[x].status==="success")return;w[x].status=S.err?"error":"success"}m==null||m([...w]),S.err||h()};this.loopMultiTxStatus&&(k=setInterval(async()=>{var S;if(A){clearInterval(k);return}try{let x=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:0});x&&(A=!0,clearInterval(k),C({err:((S=x.meta)==null?void 0:S.err)||null}),console.log("tx status from getTransaction:",B))}catch(x){A=!0,clearInterval(k),console.error("getTransaction timeout:",x,B)}},fo)),T=this.connection.onSignature(B,S=>{if(A){this.connection.removeSignatureListener(T);return}A=!0,C(S)},"confirmed"),this.connection.getSignatureStatus(B)};return h(),{txIds:[],signedTxs:b}}else{let P=[];for(let w=0;w<b.length;w+=1){let h=await this.connection.sendTransaction(b[w],{skipPreflight:g});P.push(h)}return{txIds:P,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var m;let f=e||{},{splitIns:t=[],computeBudgetConfig:n}=f,o=ut(f,["splitIns","computeBudgetConfig"]),i=n?mo(n):{instructions:[],instructionTypes:[]},r=this.signers.reduce((p,g)=>V(_({},p),{[g.publicKey.toBase58()]:g}),{}),a=[],c=[],u=[],s=0;if(this.allInstructions.forEach(p=>{let g=[...u,p],y=n?[...i.instructions,...g]:g,P=[...new Set(g.map(w=>w.keys.filter(h=>h.isSigner).map(h=>h.pubkey.toString())).flat()).values()].map(w=>new de.PublicKey(w));if(p!==t[s]&&u.length<12&&(Nn({instructions:y,payer:this.feePayer,signers:P})||Nn({instructions:g,payer:this.feePayer,signers:P})))u.push(p);else{if(u.length===0)throw Error("item ins too big");s+=p===t[s]?1:0,Nn({instructions:n?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:P})?a.push(new de.Transaction().add(...i.instructions,...u)):a.push(new de.Transaction().add(...u)),c.push(Array.from(new Set(u.map(w=>w.keys.filter(h=>h.isSigner).map(h=>h.pubkey.toString())).flat())).map(w=>r[w]).filter(w=>w!==void 0)),u=[p]}}),u.length>0){let g=[...new Set(u.map(y=>y.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(y=>r[y]).filter(y=>y!==void 0);Nn({instructions:n?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:g.map(y=>y.publicKey)})?a.push(new de.Transaction().add(...i.instructions,...u)):a.push(new de.Transaction().add(...u)),c.push(g)}return a.forEach(p=>p.feePayer=this.feePayer),(m=this.owner)!=null&&m.signer&&c.forEach(p=>{p.some(g=>g.publicKey.equals(this.owner.publicKey))||p.push(this.owner.signer)}),{builder:this,transactions:a,signers:c,instructionTypes:this.instructionTypes,execute:async p=>{var B;let{sequentially:g,onTxUpdate:y,skipTxCount:b=0,recentBlockHash:P,skipPreflight:w=!0}=p||{},h=P!=null?P:await sn(this.connection,this.blockhashCommitment);if(a.forEach(async(A,k)=>{A.recentBlockhash=h,c[k].length&&A.sign(...c[k])}),Xt(a),(B=this.owner)!=null&&B.isKeyPair){if(g){let A=0,k=[];for(let T of a){if(++A,A<=b){k.push("tx skipped");continue}let C=await(0,de.sendAndConfirmTransaction)(this.connection,T,this.signers.find(S=>S.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:w});k.push(C)}return{txIds:k,signedTxs:a}}return{txIds:await Promise.all(a.map(async A=>await this.connection.sendRawTransaction(A.serialize(),{skipPreflight:w}))),signedTxs:a}}if(this.signAllTransactions){let A=await this.signAllTransactions(a.slice(b,a.length)),k=[...a.slice(0,b),...A];if(g){let T=0,C=[],S=async()=>{if(!k[T])return;T<b&&(C.push({txId:"",status:"success",signedTx:k[T]}),y==null||y([...C]),T++,S());let x=await this.connection.sendRawTransaction(k[T].serialize(),{skipPreflight:w});C.push({txId:x,status:"sent",signedTx:k[T]}),y==null||y([...C]),T++;let v=!1,F=null,O=null,W=D=>{F!==null&&clearInterval(F),O!==null&&this.connection.removeSignatureListener(O);let Z=C.findIndex(G=>G.txId===x);if(Z>-1){if(C[Z].status==="error"||C[Z].status==="success")return;C[Z].status=D.err?"error":"success"}y==null||y([...C]),D.err||S()};this.loopMultiTxStatus&&(F=setInterval(async()=>{var D;if(v){clearInterval(F);return}try{let Z=await this.connection.getTransaction(x,{commitment:"confirmed",maxSupportedTransactionVersion:0});Z&&(v=!0,clearInterval(F),W({err:((D=Z.meta)==null?void 0:D.err)||null}),console.log("tx status from getTransaction:",x))}catch(Z){v=!0,clearInterval(F),console.error("getTransaction timeout:",Z,x)}},fo)),O=this.connection.onSignature(x,D=>{if(v){this.connection.removeSignatureListener(O);return}v=!0,W(D)},"confirmed"),this.connection.getSignatureStatus(x)};return await S(),{txIds:C.map(x=>x.txId),signedTxs:k}}else{let T=[];for(let C=0;C<k.length;C+=1){let S=await this.connection.sendRawTransaction(k[C].serialize(),{skipPreflight:w});T.push(S)}return{txIds:T,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuildV0(e){var B;let h=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:o={},lookupTableAddress:i=[],insCountLimit:r=12}=h,a=ut(h,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),c=_(_({},this.cluster==="devnet"?await mi(this.connection):await li(this.connection)),o),u=Array.from(new Set([...this.lookupTableAddress,...i])),s=[];for(let A of u)c[A]===void 0&&s.push(new de.PublicKey(A));let f=await ci({connection:this.connection,address:s});for(let[A,k]of Object.entries(f))c[A]=k;let m=t?mo(t):{instructions:[],instructionTypes:[]},p=await sn(this.connection,this.blockhashCommitment),g=this.signers.reduce((A,k)=>V(_({},A),{[k.publicKey.toBase58()]:k}),{}),y=[],b=[],P=[],w=0;if(this.allInstructions.forEach(A=>{let k=[...P,A],T=t?[...m.instructions,...k]:k;if(A!==n[w]&&P.length<r&&(Mn({instructions:T,payer:this.feePayer,lookupTableAddressAccount:c})||Mn({instructions:k,payer:this.feePayer,lookupTableAddressAccount:c})))P.push(A);else{if(P.length===0)throw Error("item ins too big");w+=A===n[w]?1:0;let C={};for(let S of[...new Set(u)])c[S]!==void 0&&(C[S]=c[S]);if(t&&Mn({instructions:[...m.instructions,...P],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:p})){let S=new de.TransactionMessage({payerKey:this.feePayer,recentBlockhash:p,instructions:[...m.instructions,...P]}).compileToV0Message(Object.values(c));y.push(new de.VersionedTransaction(S))}else{let S=new de.TransactionMessage({payerKey:this.feePayer,recentBlockhash:p,instructions:[...P]}).compileToV0Message(Object.values(c));y.push(new de.VersionedTransaction(S))}b.push(Array.from(new Set(P.map(S=>S.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat())).map(S=>g[S]).filter(S=>S!==void 0)),P=[A]}}),P.length>0){let k=[...new Set(P.map(T=>T.keys.filter(C=>C.isSigner).map(C=>C.pubkey.toString())).flat()).values()].map(T=>g[T]).filter(T=>T!==void 0);if(t&&Mn({instructions:[...m.instructions,...P],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:p})){let T=new de.TransactionMessage({payerKey:this.feePayer,recentBlockhash:p,instructions:[...m.instructions,...P]}).compileToV0Message(Object.values(c));y.push(new de.VersionedTransaction(T))}else{let T=new de.TransactionMessage({payerKey:this.feePayer,recentBlockhash:p,instructions:[...P]}).compileToV0Message(Object.values(c));y.push(new de.VersionedTransaction(T))}b.push(k)}return(B=this.owner)!=null&&B.signer&&b.forEach(A=>{A.some(k=>k.publicKey.equals(this.owner.publicKey))||A.push(this.owner.signer)}),y.forEach((A,k)=>{A.sign(b[k])}),{builder:this,transactions:y,buildProps:e,signers:b,instructionTypes:this.instructionTypes,execute:async A=>{var v;let{sequentially:k,onTxUpdate:T,skipTxCount:C=0,recentBlockHash:S,skipPreflight:x=!0}=A||{};if(y.map(async(F,O)=>{b[O].length&&F.sign(b[O]),S&&(F.message.recentBlockhash=S)}),Xt(y),(v=this.owner)!=null&&v.isKeyPair){if(k){let F=0,O=[];for(let W of y){if(++F,F<=C){console.log("skip tx: ",F),O.push("tx skipped");continue}let D=await this.connection.sendTransaction(W,{skipPreflight:x});await po(this.connection,D),O.push(D)}return{txIds:O,signedTxs:y}}return{txIds:await Promise.all(y.map(async F=>await this.connection.sendTransaction(F,{skipPreflight:x}))),signedTxs:y}}if(this.signAllTransactions){let F=await this.signAllTransactions(y.slice(C,y.length)),O=[...y.slice(0,C),...F];if(k){let W=0,D=[],Z=async()=>{if(!O[W])return;if(W<C){D.push({txId:"",status:"success",signedTx:O[W]}),T==null||T([...D]),W++,Z();return}let G=await this.connection.sendTransaction(O[W],{skipPreflight:x});D.push({txId:G,status:"sent",signedTx:O[W]}),T==null||T([...D]),W++;let se=!1,Ae=null,ge=null,Ie=ye=>{Ae!==null&&clearInterval(Ae),ge!==null&&this.connection.removeSignatureListener(ge);let ie=D.findIndex(Ve=>Ve.txId===G);if(ie>-1){if(D[ie].status==="error"||D[ie].status==="success")return;D[ie].status=ye.err?"error":"success"}T==null||T([...D]),ye.err||Z()};this.loopMultiTxStatus&&(Ae=setInterval(async()=>{var ye;if(se){clearInterval(Ae);return}try{let ie=await this.connection.getTransaction(G,{commitment:"confirmed",maxSupportedTransactionVersion:0});ie&&(se=!0,clearInterval(Ae),Ie({err:((ye=ie.meta)==null?void 0:ye.err)||null}),console.log("tx status from getTransaction:",G))}catch(ie){se=!0,clearInterval(Ae),console.error("getTransaction timeout:",ie,G)}},fo)),ge=this.connection.onSignature(G,ye=>{if(se){this.connection.removeSignatureListener(ge);return}se=!0,Ie(ye)},"confirmed"),this.connection.getSignatureStatus(G)};return Z(),{txIds:[],signedTxs:O}}else{let W=[];for(let D=0;D<O.length;D+=1){let Z=await this.connection.sendTransaction(O[D],{skipPreflight:x});W.push(Z)}return{txIds:W,signedTxs:O}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}};var pi=(...l)=>l.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),et=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=re(t)}createTxBuilder(e){return this.scope.checkOwner(),new yo({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(pi(e))}logInfo(...e){this.logger.info(pi(e))}logAndCreateError(...e){let t=pi(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};var ho=require("@solana/web3.js"),Dr=q(require("bn.js"));var wt=require("@solana/spl-token");var To=require("@solana/web3.js"),gs=q(require("bn.js"));var Er=require("@solana/spl-token");function ms(l){return l instanceof Uint8Array||l!=null&&typeof l=="object"&&l.constructor.name==="Uint8Array"}function fi(l,...e){if(!ms(l))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(l.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${l.length}`)}function yi(l,e=!0){if(l.destroyed)throw new Error("Hash instance has been destroyed");if(e&&l.finished)throw new Error("Hash#digest() has already been called")}function xr(l,e){fi(l);let t=e.outputLen;if(l.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var go=l=>new DataView(l.buffer,l.byteOffset,l.byteLength),At=(l,e)=>l<<32-e|l>>>e;var Um=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function ds(l){if(typeof l!="string")throw new Error(`utf8ToBytes expected string, got ${typeof l}`);return new Uint8Array(new TextEncoder().encode(l))}function bi(l){return typeof l=="string"&&(l=ds(l)),fi(l),l}var bo=class{clone(){return this._cloneInto()}},Gm={}.toString;function Sr(l){let e=n=>l().update(bi(n)).digest(),t=l();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>l(),e}function ps(l,e,t,n){if(typeof l.setBigUint64=="function")return l.setBigUint64(e,t,n);let o=BigInt(32),i=BigInt(4294967295),r=Number(t>>o&i),a=Number(t&i),c=n?4:0,u=n?0:4;l.setUint32(e+c,r,n),l.setUint32(e+u,a,n)}var Kr=(l,e,t)=>l&e^~l&t,Cr=(l,e,t)=>l&e^l&t^e&t,Po=class extends bo{constructor(e,t,n,o){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=go(this.buffer)}update(e){yi(this);let{view:t,buffer:n,blockLen:o}=this;e=bi(e);let i=e.length;for(let r=0;r<i;){let a=Math.min(o-this.pos,i-r);if(a===o){let c=go(e);for(;o<=i-r;r+=o)this.process(c,r);continue}n.set(e.subarray(r,r+a),this.pos),this.pos+=a,r+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){yi(this),xr(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:i}=this,{pos:r}=this;t[r++]=128,this.buffer.subarray(r).fill(0),this.padOffset>o-r&&(this.process(n,0),r=0);for(let f=r;f<o;f++)t[f]=0;ps(n,o-8,BigInt(this.length*8),i),this.process(n,0);let a=go(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,s=this.get();if(u>s.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<u;f++)a.setUint32(4*f,s[f],i)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:o,finished:i,destroyed:r,pos:a}=this;return e.length=o,e.pos=a,e.finished=i,e.destroyed=r,o%t&&e.buffer.set(n),e}};var fs=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),_t=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Vt=new Uint32Array(64),gi=class extends Po{constructor(){super(64,32,8,!1),this.A=_t[0]|0,this.B=_t[1]|0,this.C=_t[2]|0,this.D=_t[3]|0,this.E=_t[4]|0,this.F=_t[5]|0,this.G=_t[6]|0,this.H=_t[7]|0}get(){let{A:e,B:t,C:n,D:o,E:i,F:r,G:a,H:c}=this;return[e,t,n,o,i,r,a,c]}set(e,t,n,o,i,r,a,c){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=i|0,this.F=r|0,this.G=a|0,this.H=c|0}process(e,t){for(let f=0;f<16;f++,t+=4)Vt[f]=e.getUint32(t,!1);for(let f=16;f<64;f++){let m=Vt[f-15],p=Vt[f-2],g=At(m,7)^At(m,18)^m>>>3,y=At(p,17)^At(p,19)^p>>>10;Vt[f]=y+Vt[f-7]+g+Vt[f-16]|0}let{A:n,B:o,C:i,D:r,E:a,F:c,G:u,H:s}=this;for(let f=0;f<64;f++){let m=At(a,6)^At(a,11)^At(a,25),p=s+m+Kr(a,c,u)+fs[f]+Vt[f]|0,y=(At(n,2)^At(n,13)^At(n,22))+Cr(n,o,i)|0;s=u,u=c,c=a,a=r+p|0,r=i,i=o,o=n,n=p+y|0}n=n+this.A|0,o=o+this.B|0,i=i+this.C|0,r=r+this.D|0,a=a+this.E|0,c=c+this.F|0,u=u+this.G|0,s=s+this.H|0,this.set(n,o,i,r,a,c,u,s)}roundClean(){Vt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Rr=Sr(()=>new gi);var Fr=require("@solana/web3.js"),un=q(require("bn.js"));var z=require("@solana/buffer-layout"),Ao=z.Layout,Lr=z.Structure;var Pi=z.UInt;var Or=z.u8,Ne=z.u16;var wo=z.u32;var Me=z.s32;var Nr=z.seq;var ne=z.blob;var Ai=z.bits,Mr=z.offset;var Ht=class extends Ao{constructor(t,n,o){super(t,o);this.blob=ne(t),this.signed=n}decode(t,n=0){let o=new un.default(this.blob.decode(t,n),10,"le");return this.signed?o.fromTwos(this.span*8).clone():o}encode(t,n,o=0){return typeof t=="number"&&(t=new un.default(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,o)}},ko=class extends Ao{constructor(t){super(8,t);this._lower=Ai(wo(),!1),this._upper=Ai(wo(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let o=this._lower.decode(t,n),i=this._upper.decode(t,n+this._lower.span);return _(_({},o),i)}encode(t,n,o=0){return this._lower.encode(t,n,o)+this._upper.encode(t,n,o+this._lower.span)}};function M(l){return new Pi(1,l)}function Be(l){return new Pi(4,l)}function d(l){return new Ht(8,!1,l)}function Q(l){return new Ht(16,!1,l)}function vr(l){return new Ht(1,!0,l)}function cn(l){return new Ht(8,!0,l)}function _r(l){return new Ht(16,!0,l)}var Fn=class extends Ao{constructor(t,n,o,i){super(t.span,i);this.layout=t,this.decoder=n,this.encoder=o}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,o){return this.layout.encode(this.encoder(t),n,o)}getSpan(t,n){return this.layout.getSpan(t,n)}};function I(l){return new Fn(ne(32),e=>new Fr.PublicKey(e),e=>e.toBuffer(),l)}function xe(l){return new Fn(Or(),ys,bs,l)}function ys(l){if(l===0)return!1;if(l===1)return!0;throw new Error("Invalid bool: "+l)}function bs(l){return l?1:0}function Vr(l,e){let t=wo("length"),n=L([t,E(l,Mr(t,-t.span),"values")]);return new Fn(n,({values:o})=>o,o=>({values:o}),e)}var wi=class extends Lr{decode(e,t){return super.decode(e,t)}};function L(l,e,t){return new wi(l,e,t)}function E(l,e,t){let n,o=typeof e=="number"?e:(0,un.isBN)(e)?e.toNumber():new Proxy(e,{get(i,r){if(!n){let a=Reflect.get(i,"count");n=(0,un.isBN)(a)?a.toNumber():a,Reflect.set(i,"count",n)}return Reflect.get(i,r)},set(i,r,a){return r==="count"&&(n=a),Reflect.set(i,r,a)}});return Nr(l,o,t)}var ln=L([I("mint"),I("owner"),d("amount"),Be("delegateOption"),I("delegate"),M("state"),Be("isNativeOption"),d("isNative"),d("delegatedAmount"),Be("closeAuthorityOption"),I("closeAuthority")]);function mn({fromPublicKey:l,programId:e=Er.TOKEN_PROGRAM_ID,assignSeed:t}){let n=t?btoa(t).slice(0,32):To.Keypair.generate().publicKey.toBase58().slice(0,32);return{publicKey:Ps(l,n,e),seed:n}}function Ps(l,e,t){let n=Buffer.concat([l.toBuffer(),Buffer.from(e),t.toBuffer()]),o=Rr(n);return new To.PublicKey(o)}function Wr(l){let{mint:e,tokenAccount:t,owner:n,programId:o=wt.TOKEN_PROGRAM_ID}=l;return(0,wt.createInitializeAccountInstruction)(t,e,n,o)}function dn(l){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:o,programId:i=wt.TOKEN_PROGRAM_ID}=l;return(0,wt.createCloseAccountInstruction)(e,t,o,n,i)}async function Io(l){let{connection:e,amount:t,commitment:n,payer:o,owner:i,skipCloseAccount:r}=l,a=await e.getMinimumBalanceForRentExemption(ln.span,n),c=ke(t).add(new Dr.default(a)),u=mn({fromPublicKey:o,programId:wt.TOKEN_PROGRAM_ID});return{addresses:{newAccount:u.publicKey},signers:[],instructions:[ho.SystemProgram.createAccountWithSeed({fromPubkey:o,basePubkey:o,seed:u.seed,newAccountPubkey:u.publicKey,lamports:c.toNumber(),space:ln.span,programId:wt.TOKEN_PROGRAM_ID}),Wr({mint:new ho.PublicKey(bt.address),tokenAccount:u.publicKey,owner:i,programId:wt.TOKEN_PROGRAM_ID})],instructionTypes:[ee.CreateAccount,ee.InitAccount],endInstructionTypes:r?[]:[ee.CloseAccount],endInstructions:r?[]:[dn({tokenAccount:u.publicKey,payer:o,owner:i})]}}var Sa=require("@solana/web3.js"),vu=require("@solana/spl-token");var Ur=require("@solana/web3.js"),Gr=require("@solana/spl-token");function pe(l,e,t){return ue([l.toBuffer(),(t!=null?t:Gr.TOKEN_PROGRAM_ID).toBuffer(),e.toBuffer()],new Ur.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}var j=require("@solana/web3.js"),zr=new j.PublicKey("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Xr=new j.PublicKey("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Yr=new j.PublicKey("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),ki=new j.PublicKey("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Vd=new j.PublicKey("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),As=new j.PublicKey("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Ti=new j.PublicKey("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),hi=new j.PublicKey("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Ed=new j.PublicKey("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Hr=new j.PublicKey("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Ii=new j.PublicKey("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),ws=new j.PublicKey("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),ks=new j.PublicKey("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),xo=new j.PublicKey("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Dd=new j.PublicKey("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Ts=new j.PublicKey("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),So=new j.PublicKey("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),hs=new j.PublicKey("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Wd=new j.PublicKey("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Is=new j.PublicKey("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Bs=new j.PublicKey("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),xs=new j.PublicKey("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),qd=new j.PublicKey("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Ud=new j.PublicKey("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Gd=new j.PublicKey("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),zd=new j.PublicKey("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Xd=new j.PublicKey("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Et={OPEN_BOOK_PROGRAM:new j.PublicKey("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new j.PublicKey("Ray1111111111111111111111111111111111111111"),AMM_V4:new j.PublicKey("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new j.PublicKey("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new j.PublicKey("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new j.PublicKey("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new j.PublicKey("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new j.PublicKey("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new j.PublicKey("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new j.PublicKey("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new j.PublicKey("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new j.PublicKey("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:j.PublicKey.default,Router:new j.PublicKey("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new j.PublicKey("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new j.PublicKey("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new j.PublicKey("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new j.PublicKey("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new j.PublicKey("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new j.PublicKey("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new j.PublicKey("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new j.PublicKey("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new j.PublicKey("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new j.PublicKey("Ray1111111111111111111111111111111111111111")};var _u=q(require("decimal.js"));var vi=require("@solana/spl-token"),Js=require("@solana/web3.js"),eu=q(require("bn.js")),tu=q(require("decimal.js"));var Ks=require("@solana/spl-token"),Cs=require("@solana/web3.js");var Ss=L([Be("mintAuthorityOption"),I("mintAuthority"),d("supply"),M("decimals"),M("isInitialized"),Be("freezeAuthorityOption"),I("freezeAuthority")]);var Ko=l=>new Re({mint:l.address,decimals:l.decimals,symbol:l.symbol,name:l.name}),Fe=o=>{var i=o,{amount:l,isRaw:e,name:t}=i,n=ut(i,["amount","isRaw","name"]);return new Pe(new Re({mint:at(n.address).toBase58(),decimals:n.decimals,symbol:n.symbol,name:t}),l,e,t)};var ht=o=>{var i=o,{address:l,programId:e,decimals:t}=i,n=ut(i,["address","programId","decimals"]);return _({chainId:101,address:at(l).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};var X=require("@solana/spl-token"),K=require("@solana/web3.js"),Un=q(require("bn.js"));var ae=q(require("bn.js")),fe=new ae.default(1).shln(64),pn=64,Rs=new ae.default(1).shln(128),It=new ae.default(1).shln(64).subn(1),Ls=new ae.default(1).shln(128).subn(1),mt=-443636,dt=443636,Qe=new ae.default("4295048016"),Ze=new ae.default("79226673521066979257578248091"),Qr=new ae.default("59543866431248"),Zr=new ae.default("184467440737095516"),jr=new ae.default("15793534762490258745"),$r=16,Co=512,it=60,gp=new ae.default("18446743708227953217"),Jr=[{bit:0,factor:new ae.default("fffcb933bd6fb800",16)},{bit:1,factor:new ae.default("fff97272373d4000",16)},{bit:2,factor:new ae.default("fff2e50f5f657000",16)},{bit:3,factor:new ae.default("ffe5caca7e10f000",16)},{bit:4,factor:new ae.default("ffcb9843d60f7000",16)},{bit:5,factor:new ae.default("ff973b41fa98e800",16)},{bit:6,factor:new ae.default("ff2ea16466c9b000",16)},{bit:7,factor:new ae.default("fe5dee046a9a3800",16)},{bit:8,factor:new ae.default("fcbe86c7900bb000",16)},{bit:9,factor:new ae.default("f987a7253ac65800",16)},{bit:10,factor:new ae.default("f3392b0822bb6000",16)},{bit:11,factor:new ae.default("e7159475a2caf000",16)},{bit:12,factor:new ae.default("d097f3bdfd2f2000",16)},{bit:13,factor:new ae.default("a9f746462d9f8000",16)},{bit:14,factor:new ae.default("70d869a156f31c00",16)},{bit:15,factor:new ae.default("31be135f97ed3200",16)},{bit:16,factor:new ae.default("9aa508b5b85a500",16)},{bit:17,factor:new ae.default("5d6af8dedc582c",16)},{bit:18,factor:new ae.default("2216e584f5fa",16)}],Kt=1e6;var Ro=1e5,vn=1e4,ea=1e4,ta=1e5;var _n=3,na=100;var oa=10,ia=100,fn=14;var U=new ae.default(0),We=new ae.default(1),Pp=new ae.default(-1);var Ap=new ae.default("18446744073700000000");var Os=L([ne(8),M("bump"),Ne("index"),I("owner"),Be("protocolFeeRate"),Be("tradeFeeRate"),Ne("tickSpacing"),Be("fundFeeRate"),E(Be(),1),I("fundOwner"),E(d(),3)]),Ns=L([Be("blockTimestamp"),cn("tickCumulative"),E(d(),4)]),ra=L([ne(8),xe("initialized"),d("recentEpoch"),Ne("observationIndex"),I("poolId"),E(Ns,na,"observations"),E(d(),4)]),Ms=L([Ne("filterPeriod"),Ne("decayPeriod"),Ne("reductionFactor"),Be("dynamicFeeControl"),Be("maxVolatilityAccumulator"),Me("tickSpacingIndexReference"),Be("volatilityReference"),Be("volatilityAccumulator"),d("lastUpdateTimestamp"),E(M(),46)]),Fs=L([M("state"),d("openTime"),d("endTime"),d("lastUpdateTime"),Q("emissionsPerSecondX64"),d("totalEmissioned"),d("claimed"),I("mint"),I("vault"),I("creator"),Q("growthGlobalX64")]),yn=L([ne(8),M("bump"),I("configId"),I("creator"),I("mintA"),I("mintB"),I("vaultA"),I("vaultB"),I("observationId"),M("mintDecimalsA"),M("mintDecimalsB"),Ne("tickSpacing"),Q("liquidity"),Q("sqrtPriceX64"),Me("tickCurrent"),Be(),Q("feeGrowthGlobalX64A"),Q("feeGrowthGlobalX64B"),d("protocolFeesTokenA"),d("protocolFeesTokenB"),E(Q(),4),M("status"),M("feeOn"),ne(6),E(Fs,_n,"rewardInfos"),ne(8*16,"tickArrayBitmap"),E(d(),4),d("fundFeesTokenA"),d("fundFeesTokenB"),d("startTime"),d("recentEpoch"),Ms.replicate("dynamicFeeInfo"),E(d(),46)]),vs=L([Q("growthInsideLastX64"),d("rewardAmountOwed")]),_s=L([ne(8),M("bump"),I("nftMint"),I("poolId"),Me("tickLower"),Me("tickUpper"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),d("tokenFeesOwedA"),d("tokenFeesOwedB"),E(vs,_n,"rewardInfos"),d("recentEpoch"),E(d(),7)]),hp=L([ne(8),M("bump"),I("poolId"),Me("tickLower"),Me("tickUpper"),Q("liquidity"),Q("feeGrowthInsideLastX64A"),Q("feeGrowthInsideLastX64B"),d("tokenFeesOwedA"),d("tokenFeesOwedB"),E(Q(),_n,"rewardGrowthInside"),d("recentEpoch"),E(d(),7)]),Vs=L([Me("tick"),_r("liquidityNet"),Q("liquidityGross"),Q("feeGrowthOutsideX64A"),Q("feeGrowthOutsideX64B"),E(Q(),_n,"rewardGrowthsOutsideX64"),d("orderPhase"),d("ordersAmount"),d("partFilledOrdersRemaining"),Q("unfilledRatioX64"),E(Be(),3)]),Vn=L([ne(8),I("poolId"),Me("startTickIndex"),E(Vs,it,"ticks"),M("initializedTickCount"),d("recentEpoch"),E(M(),107)]),Es=L([ne(8),M("bump"),E(I(),oa,"operationOwners"),E(I(),ia,"whitelistMints")]),Ds=L([ne(8),I("poolId"),I("owner"),Me("tick"),xe("zeroForOne"),d("orderPhase"),d("totalAmount"),d("filledAmount"),d("settleBase"),d("settleOutput"),d("openTime"),Q("unfilledRatioX64"),E(d(),4)]),Bi=L([ne(8),I("poolId"),ne(8*8*fn,"positiveTickArrayBitmap"),ne(8*8*fn,"negativeTickArrayBitmap")]),Ip=L([ne(8),Ne("index"),Ne("filterPeriod"),Ne("decayPeriod"),Ne("reductionFactor"),Be("dynamicFeeControl"),Be("maxVolatilityAccumulator"),E(d(),8)]),Ws=L([ne(8),I("wallet"),M("nonceIndex"),d("orderNonce"),E(d(),4)]),Bp=L([d(),M("bump"),I("owner"),I("poolId"),I("positionId"),I("nftAccount"),E(d(),8)]),qs=L([ne(8),M("bump"),I("lockOwner"),I("poolId"),I("positionId"),I("nftAccount"),I("lockNftMint"),d("recentEpoch"),E(d(),8)]);var Us=q(require("bn.js"));function xi(l){let e=Buffer.alloc(2);return e.writeUInt16LE(l),e}function Si(l){let e=Buffer.alloc(4);return e.writeInt32LE(l),e}function aa(l){let e=Buffer.alloc(4);return e.writeInt32BE(l),e}var Fp=Buffer.from("amm_config","utf8"),Ki=Buffer.from("pool","utf8"),sa=Buffer.from("pool_vault","utf8"),Gs=Buffer.from("pool_reward_vault","utf8"),ua=Buffer.from("position","utf8"),zs=Buffer.from("tick_array","utf8"),Xs=Buffer.from("operation","utf8"),Ys=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Hs=Buffer.from("observation","utf8"),vp=Buffer.from("support_mint","utf8"),_p=Buffer.from("dynamic_fee_config","utf8"),Qs=Buffer.from("permission","utf8");function ca(l,e,t,n){return ue([Ki,e.toBuffer(),t.toBuffer(),n.toBuffer()],l)}function la(l,e){return ue([Qs,e.toBuffer()],l)}function ma(l,e,t,n,o){return ue([Ki,e.toBuffer(),t.toBuffer(),n.toBuffer(),xi(o)],l)}function bn(l,e,t){return ue([sa,e.toBuffer(),t.toBuffer()],l)}function da(l,e,t){return ue([Gs,e.toBuffer(),t.toBuffer()],l)}function Se(l,e,t){return ue([zs,e.toBuffer(),aa(t)],l)}function Ct(l,e,t,n){return ue([ua,e.toBuffer(),Si(t),Si(n)],l)}function pt(l,e){return ue([ua,e.toBuffer()],l)}function Qt(l){return ue([Buffer.from("metadata","utf8"),vt.toBuffer(),l.toBuffer()],vt)}function Lo(l){return ue([Xs],l)}function Ke(l,e){return ue([Ys,e.toBuffer()],l)}function Ci(l,e){return ue([Hs,e.toBuffer()],l)}var pa=Buffer.from("locked_position","utf8");function Ri(l,e){return ue([pa,e.toBuffer()],l)}function Li(l,e){return ue([pa,e.toBuffer()],l)}var Aa=require("js-sha256");var Oi=q(require("bn.js")),Oo=q(require("decimal.js"));function Ce(l,e,t){if(t.isZero())throw new Error("Division by zero");return l.mul(e).div(t)}function he(l,e,t){if(t.isZero())throw new Error("Division by zero");let n=l.mul(e),o=n.div(t);return n.mod(t).isZero()?o:o.addn(1)}function No(l,e){return l.div(e).add(l.mod(e).isZero()?U:We)}var Dp=new Oi.default(1).shln(256).subn(1);function fa(l){return l.isZero()?-1:l.bitLength()-1}function ya(l,e){return new Oo.default(l.toString()).div(Oo.default.pow(2,64)).toDecimalPlaces(e)}function Ni(l){return new Oi.default(l.mul(Oo.default.pow(2,64)).floor().toFixed())}var Zs=q(require("bn.js"));var ve=q(require("bn.js")),Zt=q(require("decimal.js"));var Dt=class{static scanLinearBitmap({bitmap:e,tickSpacing:t,offset:n,checkInfo:o}){let i=[],r=e.length*8,a=0,c=r-1;if(o){let f=o.tick/(t*it)-n;o.valueType==="gte"?a=Math.max(0,Math.ceil(f)):c=Math.min(r-1,Math.floor(f))}if(a>c)return i;let u=Math.floor(a/8),s=Math.floor(c/8);for(let f=u;f<=s;f++){if(!e[f])continue;let m=f===u?a%8:0,p=f===s?c%8:7;for(let g=m;g<=p;g++)e[f]&1<<g&&i.push((f*8+g+n)*t*it)}return i}static findPoolBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let o=Math.floor(n.tick/it/t);if(n.valueType==="lte"&&o<-512)return[];if(n.valueType==="gte"&&o>512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:-Co,checkInfo:n})}static findPositiveTickArrayBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let o=Math.floor(n.tick/it/t);if(n.valueType==="lte"&&o<512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:Co,checkInfo:n})}static findNegativeTickArrayBitmap({bitmap:e,tickSpacing:t,count:n,checkInfo:o}){let i=[];if(o){let c=Math.floor(o.tick/it/t);if(o.valueType==="gte"&&c>=-512)return i}let r=(o==null?void 0:o.valueType)==="lte"?Math.floor(o.tick/(it*t))+7680:1/0,a=(o==null?void 0:o.valueType)==="gte"?Math.ceil(o.tick/(it*t))+7680:0;e:for(let c=0;c<fn;c++){let u=fn-1-c;for(let s=0;s<512;s++){let f=c*512+s;if(f>r)break e;if(f<a)continue;let m=u*64+Math.floor(s/8);if(!e[m]){s=Math.floor(s/8)*8+7;continue}if(e[m]&1<<s%8){let p=(c*512+s-7680)*it*t;if(i.push(p),n!==void 0&&i.length>=n)break e}}}return i}static findTickArrayStartIndex({tickSpacing:e,poolBitmap:t,tickArrayBitmap:n,findInfo:o}){if(o.type==="all")return[...this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap}),...this.findPoolBitmap({tickSpacing:e,bitmap:t}),...this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap})];let i=ce.getTickArrayStartIndex(o.tickArrayCurrent,e),{count:r}=o;if(o.type==="oneForZero"){let a={tick:i,valueType:"gte"},c=[()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap,checkInfo:a}),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:a}),()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap,checkInfo:a})];return this.collectUntil(c,r)}if(o.type==="zeroForOne"){let a={tick:i,valueType:"lte"},c=[()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap,checkInfo:a}).sort((u,s)=>s-u),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:a}).sort((u,s)=>s-u),()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap,checkInfo:a}).sort((u,s)=>s-u)];return this.collectUntil(c,r)}throw new Error("find info type check error")}static collectUntil(e,t){let n=[];for(let o of e){if(t!==void 0&&n.length>=t)break;n.push(...o())}return n.slice(0,t)}static findTickArrayAddress(e){return this.findTickArrayStartIndex(e).map(t=>Se(e.programId,e.poolId,t).publicKey)}static maxTickInTickarrayBitmap(e){return e*it*Co}},ce=class{static firstinitializedTick({data:e,zeroForOne:t}){if(t){for(let n=e.ticks.length-1;n>=0;n--)if($.isInitialized({data:e.ticks[n]}))return e.ticks[n]}else for(let n=0;n<e.ticks.length;n++)if($.isInitialized({data:e.ticks[n]}))return e.ticks[n]}static nextInitalizedTick({data:e,currentTickIndex:t,tickSpacing:n,zeroForOne:o}){if(this.getTickArrayStartIndex(t,n)!==e.startTickIndex)return;let r=Math.floor((t-e.startTickIndex)/n);if(o){for(let a=r;a>=0;a--)if($.isInitialized({data:e.ticks[a]}))return e.ticks[a]}else for(let a=r+1;a<it;a++)if($.isInitialized({data:e.ticks[a]}))return e.ticks[a]}static getTickArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=this.getTickArrayStartIndex(e,t);return Math.floor((e-n)/t)}static tickCount(e){return it*e}static getMinTick(e){return Math.ceil(mt/e)*e}static getMaxTick(e){return Math.floor(dt/e)*e}},$=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>=mt&&e<=dt}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${mt}, ${dt}]`)}static getSqrtPriceAtTick(e){this.checkTick(e);let t=Math.abs(e),n=fe.clone();for(let{bit:o,factor:i}of Jr)(t&1<<o)!==0&&(n=Ce(n,i,fe));return e>0&&(n=Ce(fe,fe,n)),n}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:n}){if(n){let o=$.getPriceAtTick(t,!1);return Ce(e,o,fe)}else{let o=$.getPriceAtTick(t,!0);return Ce(e,fe,o)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:n}){if(n){let o=$.getPriceAtTick(t,!0);return he(e,o,fe)}else{let o=$.getPriceAtTick(t,!1);return he(e,fe,o)}}static limitOrderUnfilledAmount({tick:e}){return e.ordersAmount.add(e.partFilledOrdersRemaining)}static matchLimitOrder({tick:e,swapAmount:t,swapDirectionZeroForOne:n,isBaseInput:o,feeRate:i,isFeeOnInput:r}){let a={amountIn:U,amountOut:U,ammFeeAmount:U},c=this.limitOrderUnfilledAmount({tick:e});if(t.isZero()||c.isZero())return a;if(o)r?(a.ammFeeAmount=he(t,new ve.default(i),qe),a.amountIn=t.sub(a.ammFeeAmount)):a.amountIn=t,a.amountOut=this.getLimitOrderOutput({amountIn:a.amountIn,tick:e.tick,zeroForOne:n}),a.amountOut.gt(c)&&(a.amountOut=c,a.amountIn=this.getLimitOrderInput({amountOut:c,tick:e.tick,zeroForOne:!n}),r&&(a.ammFeeAmount=he(a.amountIn,new ve.default(i),qe.sub(new ve.default(i)))));else{let f=ve.default.min(t,c);r?a.amountOut=f:a.amountOut=ve.default.min(he(f,qe,qe.sub(new ve.default(i))),c),a.amountIn=this.getLimitOrderInput({amountOut:a.amountOut,tick:e.tick,zeroForOne:!n}),r&&(a.ammFeeAmount=he(a.amountIn,new ve.default(i),qe.sub(new ve.default(i))))}let u=U;e.partFilledOrdersRemaining.gt(U)&&(u=ve.default.min(e.partFilledOrdersRemaining,a.amountOut),u.gt(U)&&(e.unfilledRatioX64=Ce(e.unfilledRatioX64,e.partFilledOrdersRemaining.sub(u),e.partFilledOrdersRemaining)),e.partFilledOrdersRemaining=e.partFilledOrdersRemaining.sub(u));let s=a.amountOut.sub(u);if(s.gt(U)){if(!e.partFilledOrdersRemaining.isZero())throw Error("!tick.partFilledOrdersRemaining.isZero()");if(e.ordersAmount.lt(s))throw Error("InvalidLimitOrderAmount");e.orderPhase=e.orderPhase.add(We),e.unfilledRatioX64=Ce(fe,e.ordersAmount.sub(s),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(s),e.ordersAmount=U}return r||(a.ammFeeAmount=he(a.amountOut,new ve.default(i),qe),a.amountOut=a.amountOut.sub(a.ammFeeAmount)),a}static getPriceAtTick(e,t){let n=this.getSqrtPriceAtTick(e);return t?n.mul(n).add(fe.subn(1)).div(fe):n.mul(n).div(fe)}static getTickAtSqrtPrice(e){if(!(e.gte(Qe)&&e.lte(Ze)))throw Error("SqrtPriceX64");let t=fa(e),n=t-64,o;n>=0?o=new ve.default(n).shln(32):o=new ve.default(-n).shln(32).neg();let i;t>=64?i=e.shrn(t-63):i=e.shln(63-t);let r=new ve.default(0),a=new ve.default(1).shln(63);for(let b=0;b<$r&&!a.isZero();b++){i=i.mul(i);let P=i.shrn(127).toNumber();i=i.shrn(63+P),P&&(r=r.add(a)),a=a.shrn(1)}let c=r.shrn(32),s=o.add(c).mul(Qr),f=s.sub(Zr),m=s.add(jr),p=this.signedShrn64(f),g=this.signedShrn64(m);return p===g?p:$.getSqrtPriceAtTick(g).lte(e)?g:p}static signedShrn64(e){if(e.isNeg()){let t=new ve.default(1).shln(64),n=e.div(t);return!e.mod(t).isZero()&&e.isNeg()?n.subn(1).toNumber():n.toNumber()}else return e.shrn(64).toNumber()}static sqrtPriceX64ToPrice(e,t,n){let o=e.mul(e),i=t-n,r=20,a=new ve.default(10).pow(new ve.default(r)),c=o.mul(a),u=new ve.default(1).shln(128),f=c.div(u).toString();for(;f.length<=r;)f="0"+f;let m=f.slice(0,-r),p=f.slice(-r),g=m+"."+p;return new Zt.default(g).mul(new Zt.default(10).pow(i))}static tickToPrice(e,t,n){let o=$.getSqrtPriceAtTick(e);return this.sqrtPriceX64ToPrice(o,t,n)}static priceToTick(e,t,n){let i=e.div(Math.pow(10,t-n)).log().div(new Zt.default(1.0001).log()).floor();return Math.max(mt,Math.min(dt,i.toNumber()))}static priceToSqrtPriceX64(e,t,n){let r=e.div(Math.pow(10,t-n)).sqrt().mul(new Zt.default(2).pow(64));return new ve.default(r.toFixed(0))}static toTickIndex(e,t){return e>=0?e-e%t:e-e%t-(e%t!==0?t:0)}static getPriceAndTick({price:e,mintADecimals:t,mintBDecimals:n,zeroForOne:o,tickSpacing:i}){let r=e.clamp(1/10**Math.max(t,n),Number.MAX_SAFE_INTEGER);o||(r=new Zt.default(1).div(r));let a=$.toTickIndex($.priceToTick(r,t,n),i),c=$.tickToPrice(a,t,n);return{price:o?c:new Zt.default(1).div(c),tick:a}}};var En=q(require("bn.js")),Mi=q(require("decimal.js"));var Le=class{static getDeltaAmountAUnsigned(e,t,n,o){e.gt(t)&&([e,t]=[t,e]);let i=n.shln(pn),r=t.sub(e);if(!e.gt(U))throw Error("!sqrtPriceX64A.gt(BN_ZERO)");let a=o?No(he(i,r,t),e):Ce(i,r,t).div(e);if(a.gt(It))throw Error("MaxTokenOverflow");return a}static getDeltaAmountBUnsigned(e,t,n,o){e.gt(t)&&([e,t]=[t,e]);let i=o?he(n,t.sub(e),fe):Ce(n,t.sub(e),fe);if(i.gt(It))throw Error("MaxTokenOverflow");return i}static addDelta(e,t){if(t.isNeg()){let n=t.neg();if(e.lt(n))throw new Error("Liquidity underflow");return e.sub(n)}else return e.add(t)}static getLiquidityFromAmountA(e,t,n){if(n.isZero())return U;e.gt(t)&&([e,t]=[t,e]);let o=Ce(e,t,fe),i=t.sub(e);return Ce(n,o,i)}static getLiquidityFromAmountB(e,t,n){if(n.isZero())return U;e.gt(t)&&([e,t]=[t,e]);let o=t.sub(e);return Ce(n,fe,o)}static getLiquidityFromAmounts(e,t,n,o,i){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return this.getLiquidityFromAmountA(t,n,o);if(e.lt(n)){let r=this.getLiquidityFromAmountA(e,n,o),a=this.getLiquidityFromAmountB(t,e,i);return r.lt(a)?r:a}else return this.getLiquidityFromAmountB(t,n,i)}static getAmountsForLiquidity(e,t,n,o,i){t.gt(n)&&([t,n]=[n,t]);let r=U,a=U;return e.lte(t)?r=this.getDeltaAmountAUnsigned(t,n,o,i):e.lt(n)?(r=this.getDeltaAmountAUnsigned(e,n,o,i),a=this.getDeltaAmountBUnsigned(t,e,o,i)):a=this.getDeltaAmountBUnsigned(t,n,o,i),{amountA:r,amountB:a}}static getAmountsFromLiquidityWithSlippage(e,t,n,o,i,r,a){let{amountA:c,amountB:u}=this.getAmountsForLiquidity(e,t,n,o,r),s=i?1+a:1-a,f=new En.default(new Mi.default(c.toString()).mul(s).toFixed(0)),m=new En.default(new Mi.default(u.toString()).mul(s).toFixed(0));return{amountSlippageA:f,amountSlippageB:m}}static getLiquidityAndAmountsFromAmount({sqrtPriceCurrentX64:e,sqrtPriceLowerX64:t,sqrtPriceUpperX64:n,amountInfo:o}){let i;if(o.type==="liquidity")i=o.amount;else if(o.type==="amountA")i=e.gte(n)?U:this.getLiquidityFromAmountA(En.default.max(e,t),n,o.amount);else if(o.type==="amountB")i=e.lte(t)?U:this.getLiquidityFromAmountB(t,En.default.min(e,n),o.amount);else throw Error("amount info type check error");return _({liquidity:i},this.getAmountsForLiquidity(e,t,n,o.amount,!0))}};var tt=require("@solana/web3.js"),Ee=q(require("bn.js"));var Mo=require("@solana/spl-token");var oe=q(require("decimal.js"));var jt=q(require("bn.js"));var Oe=q(require("bn.js"));var Dn=class{static getNextSqrtPriceFromAmountARoundingUp(e,t,n,o){if(n.isZero())return e;let i=t.shln(pn);if(o){let r=n.mul(e),a=i.add(r);if(a.gte(i))return he(i,e,a);let c=Ce(i,We,e);return he(i,We,c.add(n))}else{let r=n.mul(e);if(i.lte(r))throw new Error("Insufficient liquidity for token0 removal");let a=i.sub(r);return he(i,e,a)}}static getNextSqrtPriceFromAmountBRoundingDown(e,t,n,o){if(n.isZero())return e;if(o){let i=n.shln(pn).div(t);return e.add(i)}else{let i=No(n.shln(pn),t);return e.sub(i)}}static getNextSqrtPriceFromInput(e,t,n,o){if(!e.gt(U))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(U))throw Error("liquidity.gt(BN_ZERO)");return o?this.getNextSqrtPriceFromAmountARoundingUp(e,t,n,!0):this.getNextSqrtPriceFromAmountBRoundingDown(e,t,n,!0)}static getNextSqrtPriceFromOutput(e,t,n,o){if(!e.gt(U))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(U))throw Error("liquidity.gt(BN_ZERO)");return o?this.getNextSqrtPriceFromAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromAmountARoundingUp(e,t,n,!1)}};var kt=class{static newValue({poolInfo:e,amountSpecified:t,zeroForOne:n,feeRate:o,blockTimestamp:i}){let r={amountSpecifiedRemaining:t,amountCalculated:U,sqrtPriceX64:e.sqrtPriceX64,tick:e.tickCurrent,feeGrowthGlobalX64:n?e.feeGrowthGlobalX64A:e.feeGrowthGlobalX64B,lpFee:U,protocolFee:U,fundFee:U,liquidity:e.liquidity,sqrtPriceNextX64:U,tickNext:0,baseFeeRate:o,tickSpacing:e.tickSpacing,tickSpacingIndex:0,dynamicFeeInfo:gn.getDynamicFeeInfo({poolInfo:e})};return r.dynamicFeeInfo&&(r.tickSpacingIndex=qn.tickSpacingIndexFromTick(r.tick,r.tickSpacing),gn.updateReference({dynamicFeeInfo:r.dynamicFeeInfo,tickSpacingIndex:r.tickSpacingIndex,currentTimestamp:i})),r}static getTargetPriceBasedOnNextTick({data:e,tickNext:t,zeroForOne:n,sqrtPriceLimitX64:o}){e.tickNext=t,e.tickNext<mt?e.tickNext=mt:e.tickNext>dt&&(e.tickNext=dt),e.sqrtPriceNextX64=$.getSqrtPriceAtTick(e.tickNext);let i;if(n&&e.sqrtPriceNextX64.lt(o)||!n&&e.sqrtPriceNextX64.gt(o)?i=o:i=e.sqrtPriceNextX64,n){if(e.tick<e.tickNext)throw Error("data.tick < data.tickNext");if(e.sqrtPriceX64.lt(e.sqrtPriceNextX64))throw Error("data.sqrtPriceX64.lt(data.sqrtPriceNextX64)");if(e.sqrtPriceX64.lt(i))throw Error("data.sqrtPriceX64.lt(targetPrice)")}else{if(e.tickNext<=e.tick)throw Error("data.tickNext <= data.tick");if(e.sqrtPriceNextX64.lt(e.sqrtPriceX64))throw Error("data.sqrtPriceNextX64.lt(data.sqrtPriceX64)");if(i.lt(e.sqrtPriceX64))throw Error("targetPrice.lt(data.sqrtPriceX64)")}return i}static updateVolatilityAccumulator({state:e}){!e.dynamicFeeInfo||gn.updateVolatilityAccumulator({state:e.dynamicFeeInfo,tickSpacingIndex:e.tickSpacingIndex})}static computeDynamicFeeRate({data:e,tickSpacing:t}){let n=e.volatilityAccumulator*t,o=n*n,i=ta*vn*vn,r=he(new Oe.default(e.dynamicFeeControl),new Oe.default(o),new Oe.default(i)).toNumber();return r>Ro?Ro:r}static getTotalFeeRate({data:e}){if(e.dynamicFeeInfo){let t=this.computeDynamicFeeRate({data:e.dynamicFeeInfo,tickSpacing:e.tickSpacing}),n=e.baseFeeRate+t;return Math.min(Ro,n)}return e.baseFeeRate}static getSpacingBoundedPrice({data:e,targetPrice:t,zeroForOne:n}){if(e.dynamicFeeInfo===void 0)return{isSkipped:!0,boundedPrice:t};if(e.liquidity.isZero()||e.dynamicFeeInfo.volatilityAccumulator===e.dynamicFeeInfo.maxVolatilityAccumulator)return{isSkipped:!0,boundedPrice:t};let o=e.tickSpacing,i=n?e.tickSpacingIndex*o:(e.tickSpacingIndex+1)*o,r=Math.max(mt,Math.min(dt,i)),a=$.getSqrtPriceAtTick(r);return n?{isSkipped:!1,boundedPrice:Oe.default.max(t,a)}:{isSkipped:!1,boundedPrice:Oe.default.min(t,a)}}static applySwapAmounts({state:e,amountIn:t,amountOut:n,feeAmount:o,isBaseInput:i,isFeeOnInput:r,protocolFeeRate:a,fundFeeRate:c}){let u=r?t.add(o):t;i?(e.amountSpecifiedRemaining=e.amountSpecifiedRemaining.sub(u),e.amountCalculated=e.amountCalculated.add(n)):(e.amountSpecifiedRemaining=e.amountSpecifiedRemaining.sub(n),e.amountCalculated=e.amountCalculated.add(u)),this.splitFee({state:e,feeAmount:o,protocolFeeRate:a,fundFeeRate:c})}static updateDynamicFeeIndex({state:e,zeroForOne:t,isSkippedTickSpacing:n}){if(e.dynamicFeeInfo!==void 0){if(n){let o=e.sqrtPriceX64.eq(e.sqrtPriceNextX64)?e.tickNext:e.tick,i=qn.tickSpacingIndexFromTick(o,e.tickSpacing);!t&&o%e.tickSpacing===0&&(i=i-1),e.tickSpacingIndex=i,e.dynamicFeeInfo.volatilityAccumulator!==e.dynamicFeeInfo.maxVolatilityAccumulator&&this.updateVolatilityAccumulator({state:e})}e.tickSpacingIndex+=t?-1:1}}static splitFee({state:e,feeAmount:t,protocolFeeRate:n,fundFeeRate:o}){let i=t;if(n.gt(U)){let r=t.mul(n).div(new Oe.default(qe));e.protocolFee=e.protocolFee.add(r),i=i.sub(r)}if(o.gt(U)){let r=t.mul(o).div(new Oe.default(qe));e.fundFee=e.fundFee.add(r),i=i.sub(r)}if(e.liquidity.gt(U)){let r=Ce(i,fe,e.liquidity);e.feeGrowthGlobalX64=e.feeGrowthGlobalX64.add(r),e.lpFee=e.lpFee.add(i)}}},Wn=class{static newSwapComputationResult({sqrtPriceNextX64:e}){return{sqrtPriceNextX64:e!=null?e:U,amountIn:U,amountOut:U,feeAmount:U}}static calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:o,isBaseInput:i}){if(i)try{return o?Le.getDeltaAmountAUnsigned(t,e,n,!0):Le.getDeltaAmountBUnsigned(e,t,n,!0)}catch(r){if(r.message==="MaxTokenOverflow")return null;throw r}else try{return o?Le.getDeltaAmountBUnsigned(t,e,n,!1):Le.getDeltaAmountAUnsigned(e,t,n,!1)}catch(r){if(r.message==="MaxTokenOverflow")return null;throw r}}static computeSwap(e,t,n,o,i,r,a,c){let u=this.newSwapComputationResult({});if(r){let f=c?Ce(o,new Oe.default(Kt-i),new Oe.default(Kt)):o,m=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:a,isBaseInput:r});m!==null&&(u.amountIn=m),u.sqrtPriceNextX64=m!==null&&f.gte(u.amountIn)?t:Dn.getNextSqrtPriceFromInput(e,n,f,a)}else{let f=c?o:he(o,new Oe.default(Kt),new Oe.default(Kt-i)),m=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:a,isBaseInput:r});m!==null&&(u.amountOut=m),u.sqrtPriceNextX64=m!==null&&f.gte(u.amountOut)?t:Dn.getNextSqrtPriceFromOutput(e,n,f,a)}if(a){if(!u.sqrtPriceNextX64.gte(t))throw Error("!result.sqrtPriceNextX64.gte(sqrtPriceTargetX64)")}else if(!t.gte(u.sqrtPriceNextX64))throw Error("!sqrtPriceTargetX64.gte(result.sqrtPriceNextX64)");let s=t.eq(u.sqrtPriceNextX64);if(a?(s&&r||(u.amountIn=Le.getDeltaAmountAUnsigned(u.sqrtPriceNextX64,e,n,!0)),s&&!r||(u.amountOut=Le.getDeltaAmountBUnsigned(u.sqrtPriceNextX64,e,n,!1))):(s&&r||(u.amountIn=Le.getDeltaAmountBUnsigned(e,u.sqrtPriceNextX64,n,!0)),s&&!r||(u.amountOut=Le.getDeltaAmountAUnsigned(e,u.sqrtPriceNextX64,n,!1))),r)c?u.sqrtPriceNextX64.eq(t)?u.feeAmount=he(u.amountIn,new Oe.default(i),new Oe.default(Kt-i)):u.feeAmount=o.sub(u.amountIn):(u.feeAmount=he(u.amountOut,new Oe.default(i),new Oe.default(Kt)),u.amountOut=u.amountOut.sub(u.feeAmount),s||(u.amountIn=o));else if(c)u.amountOut=Oe.default.min(u.amountOut,o),u.feeAmount=he(u.amountIn,new Oe.default(i),new Oe.default(Kt-i));else{u.feeAmount=he(u.amountOut,new Oe.default(i),new Oe.default(Kt));let f=u.amountOut.sub(u.feeAmount);f.gt(o)?(u.feeAmount=u.amountOut.sub(o),u.amountOut=o):u.amountOut=f}return u}};function Fi({programId:l,poolId:e,poolInfo:t,tickArrays:n,configInfo:o,tickarrayBitmapExtension:i,amountSpecified:r,sqrtPriceLimitX64:a,zeroForOne:c,isBaseInput:u,blockTimestamp:s,includeExtraTickArrays:f}){a.isZero()&&(a=c?new jt.default(Qe).addn(1):new jt.default(Ze).subn(1));let m=0;if(n.length===0)return{allTrade:!1,amountSpecifiedRemaining:r,amountCalculated:U,feeAmount:U,sqrtPriceX64:t.sqrtPriceX64,liquidity:t.liquidity,tickCurrent:t.tickCurrent,accounts:[]};let p=f?Dt.findTickArrayAddress({programId:l,poolId:e,tickSpacing:t.tickSpacing,poolBitmap:t.tickArrayBitmap,tickArrayBitmap:i,findInfo:{type:c?"oneForZero":"zeroForOne",count:2,tickArrayCurrent:t.tickCurrent}}).filter(k=>k.toString()!==n[0].address.toString()):[],g=ce.getTickArrayStartIndex(t.tickCurrent,t.tickSpacing),{firstItckArrayContainsPoolTick:y,firstValidTickArrayStartIndex:b}={firstItckArrayContainsPoolTick:n[m].value.startTickIndex===g,firstValidTickArrayStartIndex:n[m].value.startTickIndex},P=y,w=b,h=n[m],B=rt.isFeeOnInput(t.feeOn,c),A=kt.newValue({poolInfo:t,amountSpecified:r,zeroForOne:c,feeRate:o.tradeFeeRate,blockTimestamp:s});for(;!A.amountSpecifiedRemaining.isZero()&&!A.sqrtPriceX64.eq(a);){let k=(()=>{let S=ce.nextInitalizedTick({data:h.value,tickSpacing:A.tickSpacing,zeroForOne:c,currentTickIndex:A.tick});if(S!==void 0)return S;if(P){let x=n[++m];return x===void 0?void 0:(w=x.value.startTickIndex,h=x,ce.firstinitializedTick({data:x.value,zeroForOne:c}))}else return P=!0,ce.firstinitializedTick({data:h.value,zeroForOne:c})})();if(k===void 0)return{allTrade:!1,amountSpecifiedRemaining:A.amountSpecifiedRemaining,amountCalculated:A.amountCalculated,feeAmount:A.lpFee.add(A.fundFee).add(A.protocolFee),sqrtPriceX64:A.sqrtPriceX64,liquidity:A.liquidity,tickCurrent:A.tick,accounts:n.slice(0,m).map(S=>S.address)};let T=kt.getTargetPriceBasedOnNextTick({data:A,tickNext:k.tick,zeroForOne:c,sqrtPriceLimitX64:a}),C=A.liquidity;do{kt.updateVolatilityAccumulator({state:A});let S=kt.getTotalFeeRate({data:A}),{isSkipped:x,boundedPrice:v}=kt.getSpacingBoundedPrice({data:A,targetPrice:T,zeroForOne:c}),F=!A.sqrtPriceX64.eq(v),O;F?(O=Wn.computeSwap(A.sqrtPriceX64,v,A.liquidity,A.amountSpecifiedRemaining,S,u,c,B),kt.applySwapAmounts({state:A,amountIn:O.amountIn,amountOut:O.amountOut,feeAmount:O.feeAmount,isBaseInput:u,isFeeOnInput:B,protocolFeeRate:new jt.default(o.protocolFeeRate),fundFeeRate:new jt.default(o.fundFeeRate)})):O=Wn.newSwapComputationResult({sqrtPriceNextX64:v});let W=$.limitOrderUnfilledAmount({tick:k});if(A.sqrtPriceNextX64.eq(O.sqrtPriceNextX64)){let D=$.matchLimitOrder({tick:k,swapAmount:A.amountSpecifiedRemaining,swapDirectionZeroForOne:c,isBaseInput:u,feeRate:S,isFeeOnInput:B});if(D.amountIn.gt(U)&&kt.applySwapAmounts({state:A,amountIn:D.amountIn,amountOut:D.amountOut,feeAmount:D.ammFeeAmount,isBaseInput:u,isFeeOnInput:B,protocolFeeRate:new jt.default(o.protocolFeeRate),fundFeeRate:new jt.default(o.fundFeeRate)}),$.hasLiquidity({data:k})&&!$.hasLimitOrders({data:k})){let Z=c?k.liquidityNet.neg():k.liquidityNet;C=Le.addDelta(A.liquidity,Z)}A.tick=c&&!$.hasLimitOrders({data:k})||!c&&$.hasLimitOrders({data:k})?A.tickNext-1:A.tickNext}else A.sqrtPriceX64.eq(O.sqrtPriceNextX64)||(A.tick=$.getTickAtSqrtPrice(O.sqrtPriceNextX64));if(A.sqrtPriceX64=O.sqrtPriceNextX64,kt.updateDynamicFeeIndex({state:A,zeroForOne:c,isSkippedTickSpacing:x}),A.amountSpecifiedRemaining.isZero()||A.sqrtPriceX64.eq(T)){let D=$.limitOrderUnfilledAmount({tick:k});if(!A.amountSpecifiedRemaining.isZero()&&!D.eq(W)&&!D.isZero())throw Error("!limitOrderUnfilledAmountAfter.isZero()");break}}while(!0);A.liquidity=C}return{allTrade:!0,amountSpecifiedRemaining:U,amountCalculated:A.amountCalculated,feeAmount:A.lpFee.add(A.fundFee).add(A.protocolFee),sqrtPriceX64:A.sqrtPriceX64,liquidity:A.liquidity,tickCurrent:A.tick,accounts:[...p,...n.slice(0,m+1+(f?1:0)).map(k=>k.address)]}}var qn=class{static tickSpacingIndexFromTick(e,t){return Math.floor(e/t)}},gn=class{static getDynamicFeeInfo({poolInfo:e}){if(!(e.dynamicFeeInfo.filterPeriod===0&&e.dynamicFeeInfo.decayPeriod===0&&e.dynamicFeeInfo.reductionFactor===0&&e.dynamicFeeInfo.dynamicFeeControl===0&&e.dynamicFeeInfo.maxVolatilityAccumulator===0&&e.dynamicFeeInfo.tickSpacingIndexReference===0&&e.dynamicFeeInfo.volatilityReference===0&&e.dynamicFeeInfo.volatilityAccumulator===0&&e.dynamicFeeInfo.lastUpdateTimestamp.isZero()))return e.dynamicFeeInfo}static updateReference({dynamicFeeInfo:e,tickSpacingIndex:t,currentTimestamp:n}){let o=n-e.lastUpdateTimestamp.toNumber();o<e.filterPeriod||(o<e.decayPeriod?(e.tickSpacingIndexReference=t,e.volatilityReference=Math.floor(e.volatilityAccumulator*e.reductionFactor/ea),e.lastUpdateTimestamp=new Ee.default(n)):(e.tickSpacingIndexReference=t,e.volatilityReference=0,e.lastUpdateTimestamp=new Ee.default(n)))}static updateVolatilityAccumulator({state:e,tickSpacingIndex:t}){let n=Math.abs(e.tickSpacingIndexReference-t),o=e.volatilityReference+n*vn;e.volatilityAccumulator=Math.min(o,e.maxVolatilityAccumulator)}},rt=class{static isFeeOnInput(e,t){switch(e){case 0:return!0;case 1:return t;case 2:return!t;default:return!0}}static isFeeOnTokenA(e,t){return e.feeOn===0?t:e.feeOn===1}static isOverflowDefaultTickarrayBitmap({tickSpacing:e,tickIndexs:t}){let{maxTickBoundary:n,minTickBoundary:o}=this.tickArrayStartIndexRange({tickSpacing:e});for(let i of t){let r=ce.getTickArrayStartIndex(i,e);if(r>=n||r<o)return!0}return!1}static tickArrayStartIndexRange({tickSpacing:e}){let t=Dt.maxTickInTickarrayBitmap(e),n=-t;return t>dt&&(t=ce.getTickArrayStartIndex(dt,e)+ce.tickCount(e)),n<mt&&(n=ce.getTickArrayStartIndex(mt,e)),{maxTickBoundary:t,minTickBoundary:n}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:o,rewardInfos:i}){var a,c,u;let r=[];for(let s=0;s<i.length;s++){let f=i[s],m=(u=(a=t.rewardDefaultInfos[s])==null?void 0:a.mint.programId)!=null?u:(c=await e.getAccountInfo(f.mint))==null?void 0:c.owner;if(m===void 0)throw Error("get new reward mint info error");let p=V(_({},f),{perSecond:ya(f.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new tt.PublicKey(m)});if(p.mint.equals(tt.PublicKey.default)||p.totalEmissioned.eq(It))continue;if(n<=p.openTime.toNumber()||o.eq(U)){r.push(p);continue}let g=new Ee.default(Math.min(p.endTime.toNumber(),n)),y=g.sub(p.lastUpdateTime);if(y.isZero()){r.push(p);continue}let b=he(y,p.emissionsPerSecondX64,fe),P=Ce(y,p.emissionsPerSecondX64,o),w,h=p.totalEmissioned.add(b);if(h.lte(It))w=h;else{let A=It.sub(p.totalEmissioned);w=It,P=Ce(A,fe,o)}let B=p.growthGlobalX64.add(P);r.push(V(_({},p),{growthGlobalX64:B,totalEmissioned:w,lastUpdateTime:g}))}return r}},je=class{static getOutputAmountAndRemainAccounts(e,t,n,o,i,r,a){let c=o.toBase58()===e.mintA.address,u=ce.getTickArrayStartIndex(e.accInfo.tickCurrent,e.accInfo.tickSpacing),{allTrade:s,amountCalculated:f,feeAmount:m,sqrtPriceX64:p,accounts:g}=Fi({programId:e.programId,poolId:e.id,poolInfo:e.accInfo,tickArrays:Object.entries(n).map(y=>({address:y[1].address,value:y[1]})).filter(y=>c?y.value.startTickIndex<=u:y.value.startTickIndex>=u).sort((y,b)=>c?b.value.startTickIndex-y.value.startTickIndex:y.value.startTickIndex-b.value.startTickIndex),configInfo:e.ammConfig,tickarrayBitmapExtension:t,amountSpecified:i,sqrtPriceLimitX64:a!=null?a:U,zeroForOne:c,isBaseInput:!0,blockTimestamp:r,includeExtraTickArrays:!0});return{allTrade:s,expectedAmountOut:f,remainingAccounts:g,executionPrice:p,feeAmount:m}}static getInputAmountAndRemainAccounts(e,t,n,o,i,r,a){let c=o.toBase58()===e.mintB.address,u=ce.getTickArrayStartIndex(e.accInfo.tickCurrent,e.accInfo.tickSpacing),{allTrade:s,amountCalculated:f,feeAmount:m,sqrtPriceX64:p,accounts:g}=Fi({programId:e.programId,poolId:e.id,poolInfo:e.accInfo,tickArrays:Object.entries(n).map(y=>({address:new tt.PublicKey(y[0]),value:y[1]})).filter(y=>c?y.value.startTickIndex<=u:y.value.startTickIndex>=u).sort((y,b)=>c?b.value.startTickIndex-y.value.startTickIndex:y.value.startTickIndex-b.value.startTickIndex),configInfo:e.ammConfig,tickarrayBitmapExtension:t,amountSpecified:i,sqrtPriceLimitX64:a!=null?a:U,zeroForOne:c,isBaseInput:!1,blockTimestamp:r,includeExtraTickArrays:!0});return{allTrade:s,expectedAmountIn:f,remainingAccounts:g,executionPrice:p,feeAmount:m}}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let o=await yt(e,t.map(r=>({pubkey:r})),{batchRequest:n}),i={};for(let r of o)r.accountInfo!==null&&(i[r.pubkey.toString()]=Bi.decode(r.accountInfo.data));return i}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let o={},i=[];for(let c of t){let u=[...Dt.findTickArrayStartIndex({tickSpacing:c.tickSpacing,poolBitmap:c.tickArrayBitmap,tickArrayBitmap:c.exBitmapInfo,findInfo:{type:"zeroForOne",count:7,tickArrayCurrent:c.tickCurrent}}),...Dt.findTickArrayStartIndex({tickSpacing:c.tickSpacing,poolBitmap:c.tickArrayBitmap,tickArrayBitmap:c.exBitmapInfo,findInfo:{type:"oneForZero",count:7,tickArrayCurrent:c.tickCurrent}})];for(let s of u){let{publicKey:f}=Se(c.programId,c.id,s);o[f.toString()]===void 0&&(i.push({pubkey:f}),o[f.toString()]=c.id)}}let r=await yt(e,i,{batchRequest:n}),a={};for(let c of r){if(!c.accountInfo)continue;let u=o[c.pubkey.toString()];if(!u)continue;a[u.toString()]===void 0&&(a[u.toString()]={});let s=Vn.decode(c.accountInfo.data);a[u.toString()][s.startTickIndex]=V(_({},s),{address:c.pubkey})}return a}static computeAmountOut({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:o,epochInfo:i,amountIn:r,slippage:a,blockTimestamp:c,priceLimit:u=new oe.default(0)}){var O;let s,f=o.toBase58()===e.mintA.address,[m,p]=f?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];u.equals(new oe.default(0))?s=f?Qe.add(new Ee.default(1)):Ze.sub(new Ee.default(1)):s=$.priceToSqrtPriceX64(u,e.mintA.decimals,e.mintB.decimals);let g=st(r,m,i,!1),{allTrade:y,expectedAmountOut:b,remainingAccounts:P,executionPrice:w,feeAmount:h}=je.getOutputAmountAndRemainAccounts(e,t,n,o,g.amount.sub((O=g.fee)!=null?O:U),c,s),B=st(b,p,i,!1),A=$.sqrtPriceX64ToPrice(w,e.mintA.decimals,e.mintB.decimals),k=f?A:new oe.default(1).div(A),T=b.mul(new Ee.default(Math.floor((1-a)*1e10))).div(new Ee.default(1e10)),C=st(T,p,i,!1),S=f?e.currentPrice:new oe.default(1).div(e.currentPrice),x=new oe.default(k).sub(S).abs(),v=S,F=new gt(new oe.default(x).mul(10**15).toFixed(0),new oe.default(v).mul(10**15).toFixed(0));return{allTrade:y,realAmountIn:g,amountOut:B,minAmountOut:C,expirationTime:Rt(g.expirationTime,B.expirationTime),currentPrice:e.currentPrice,executionPrice:k,priceImpact:F,fee:h,remainingAccounts:P,executionPriceX64:w}}static computeAmountOutFormat({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,amountIn:o,tokenOut:i,slippage:r,epochInfo:a,blockTimestamp:c,catchLiquidityInsufficient:u=!1}){let s=i.address===e.mintB.address,[f,m]=s?[e.mintA,e.mintB]:[e.mintB,e.mintA],[p,g]=[new Re(V(_({},f),{mint:f.address,isToken2022:f.programId===Mo.TOKEN_2022_PROGRAM_ID.toBase58()})),new Re(V(_({},m),{mint:m.address,isToken2022:m.programId===Mo.TOKEN_2022_PROGRAM_ID.toBase58()}))],{allTrade:y,realAmountIn:b,amountOut:P,minAmountOut:w,expirationTime:h,currentPrice:B,executionPrice:A,priceImpact:k,fee:T,remainingAccounts:C,executionPriceX64:S}=je.computeAmountOut({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:new tt.PublicKey(f.address),amountIn:o,slippage:r,epochInfo:a,catchLiquidityInsufficient:u,blockTimestamp:c}),x=V(_({},b),{amount:new Pe(p,b.amount),fee:b.fee===void 0?void 0:new Pe(p,b.fee)}),v=V(_({},P),{amount:new Pe(g,P.amount),fee:P.fee===void 0?void 0:new Pe(g,P.fee)}),F=V(_({},w),{amount:new Pe(g,w.amount),fee:w.fee===void 0?void 0:new Pe(g,w.fee)}),O=new Je({baseToken:p,denominator:new Ee.default(10).pow(new Ee.default(20+p.decimals)),quoteToken:g,numerator:B.mul(new oe.default(10**(20+g.decimals))).toFixed(0)}),W=new Je({baseToken:p,denominator:new Ee.default(10).pow(new Ee.default(20+p.decimals)),quoteToken:g,numerator:A.mul(new oe.default(10**(20+g.decimals))).toFixed(0)}),D=new Pe(p,T);return{allTrade:y,realAmountIn:x,amountOut:v,minAmountOut:F,expirationTime:h,currentPrice:O,executionPrice:W,priceImpact:k,fee:D,remainingAccounts:C,executionPriceX64:S}}static computeAmountIn({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:o,epochInfo:i,amountOut:r,slippage:a,priceLimit:c=new oe.default(0),blockTimestamp:u}){var O;let s=o.toBase58()===e.mintA.address,f={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},m;c.equals(new oe.default(0))?m=s?Ze.sub(new Ee.default(1)):Qe.add(new Ee.default(1)):m=$.priceToSqrtPriceX64(c,e.mintA.decimals,e.mintB.decimals);let p=st(r,f[o.toString()],i,!0),{allTrade:g,expectedAmountIn:y,remainingAccounts:b,executionPrice:P,feeAmount:w}=je.getInputAmountAndRemainAccounts(e,t,n,o,p.amount.sub((O=p.fee)!=null?O:U),u,m),h=s?e.mintB.address:e.mintA.address,B=st(y,f[h],i,!1),A=$.sqrtPriceX64ToPrice(P,e.mintA.decimals,e.mintB.decimals),k=s?A:new oe.default(1).div(A),T=y.mul(new Ee.default(Math.floor((1+a)*1e10))).div(new Ee.default(1e10)),C=st(T,f[h],i,!0),S=s?e.currentPrice:new oe.default(1).div(e.currentPrice),x=new oe.default(k).sub(S).abs(),v=S,F=new gt(new oe.default(x).mul(10**15).toFixed(0),new oe.default(v).mul(10**15).toFixed(0));return{allTrade:g,amountIn:B,maxAmountIn:C,realAmountOut:p,expirationTime:Rt(B.expirationTime,p.expirationTime),currentPrice:e.currentPrice,executionPrice:k,priceImpact:F,fee:w,remainingAccounts:b}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:o}){var g,y,b;let i=e[t],r=$.tickToPrice(n,e.mintA.decimals,e.mintB.decimals).toNumber(),a=$.tickToPrice(o,e.mintA.decimals,e.mintB.decimals).toNumber(),c=Math.max(r,i.priceMin),s=Math.min(a,i.priceMax)-c,f=a-r,m=i.priceMax-i.priceMin,p;return s<=0?p=0:f===s?p=m/s:m===s?p=s/f:p=s/m*(s/f),{feeApr:i.feeApr*p,rewardsApr:[((g=i.rewardApr[0])!=null?g:0)*p,((y=i.rewardApr[1])!=null?y:0)*p,((b=i.rewardApr[2])!=null?b:0)*p],apr:i.apr*p}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:o,liquidity:i,positionTickLowerIndex:r,positionTickUpperIndex:a,chainTime:c}){let u=n==="day"?1:n==="week"?7:n==="month"?30:0,s=e[n],f=o[at(e.mintA.address).toString()],m=o[at(e.mintB.address).toString()],p=e.mintA.decimals,g=e.mintB.decimals;if(!s||!f||!m)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let y=$.priceToSqrtPriceX64(new oe.default(e.price),e.mintA.decimals,e.mintB.decimals),b=$.getSqrtPriceAtTick(r),P=$.getSqrtPriceAtTick(a),{amountSlippageA:w,amountSlippageB:h}=Le.getAmountsFromLiquidityWithSlippage(y,b,P,t,!1,!1,0),{amountSlippageA:B,amountSlippageB:A}=Le.getAmountsFromLiquidityWithSlippage(y,b,P,i,!1,!1,0),k=new oe.default(w.toString()).div(new oe.default(10).pow(p)).mul(f.value).add(new oe.default(h.toString()).div(new oe.default(10).pow(g)).mul(m.value)),T=new oe.default(B.toString()).div(new oe.default(10).pow(p)).mul(f.value).add(new oe.default(A.toString()).div(new oe.default(10).pow(g)).mul(m.value)),C=new oe.default(1).div(k.add(T)),x=new oe.default(s.volumeFee).mul(365).div(u).mul(C).mul(100).toNumber(),v=3600*24*365,F=e.rewardDefaultInfos.map(O=>{var Z,G;let W=O.mint.decimals,D=o[O.mint.address];return c<((Z=O.startTime)!=null?Z:0)||c>((G=O.endTime)!=null?G:0)||!O.perSecond||!D||W===void 0?0:new oe.default(D.value).mul(new oe.default(O.perSecond).mul(v)).div(new oe.default(10).pow(W)).mul(C).mul(100).toNumber()});return{feeApr:x,rewardsApr:F,apr:x+F.reduce((O,W)=>O+W,0)}}static async getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:o,amount:i,slippage:r,add:a,epochInfo:c,amountHasFee:u}){var P,w;let s=$.priceToSqrtPriceX64(new oe.default(e.price),e.mintA.decimals,e.mintB.decimals),f=$.getSqrtPriceAtTick(n),m=$.getSqrtPriceAtTick(o),p=st(i,(P=e[t?"mintA":"mintB"].extensions)==null?void 0:P.feeConfig,c,!u),g=new Ee.default(new oe.default(p.amount.sub((w=p.fee)!=null?w:U).toString()).toFixed(0)),y;if(s.lte(f))y=t?Le.getLiquidityFromAmountA(f,m,g):new Ee.default(0);else if(s.lte(m)){let h=Le.getLiquidityFromAmountA(s,m,g),B=Le.getLiquidityFromAmountB(f,s,g);y=t?h:B}else y=t?new Ee.default(0):Le.getLiquidityFromAmountB(f,m,g);let b=await je.getAmountsFromLiquidity({epochInfo:c,poolInfo:e,tickLower:n,tickUpper:o,liquidity:y,slippage:r,add:a});return{liquidity:y,amountA:t?p:b.amountA,amountB:t?b.amountB:p,amountSlippageA:t?p:b.amountSlippageA,amountSlippageB:t?b.amountSlippageB:p,expirationTime:b.expirationTime}}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:o,liquidity:i,slippage:r,add:a}){var b,P,w,h;let c=$.getSqrtPriceAtTick(n),u=$.getSqrtPriceAtTick(o),s=a?1+r:1-r,f=Le.getAmountsForLiquidity($.priceToSqrtPriceX64(new oe.default(t.price),t.mintA.decimals,t.mintB.decimals),c,u,i,a),[m,p]=[st(f.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),st(f.amountB,(P=t.mintB.extensions)==null?void 0:P.feeConfig,e,!0)],[g,y]=[st(f.amountA.muln(s),(w=t.mintA.extensions)==null?void 0:w.feeConfig,e,!0),st(f.amountB.muln(s),(h=t.mintB.extensions)==null?void 0:h.feeConfig,e,!0)];return{liquidity:i,amountA:m,amountB:p,amountSlippageA:g,amountSlippageB:y,expirationTime:Rt(m.expirationTime,p.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let o=t.filter(u=>!n[u.id]).map(u=>new tt.PublicKey(u.id));(await ct(e,o)).forEach((u,s)=>{!u||(n[o[s].toBase58()]=yn.decode(u.data))});let r=t.map(u=>Ke(new tt.PublicKey(u.programId),new tt.PublicKey(u.id)).publicKey),a=await je.fetchExBitmaps({connection:e,exBitmapAddress:r,batchRequest:!1}),c={};return t.reduce((u,s)=>V(_({},u),{[s.id]:V(_({accInfo:n[s.id]},n[s.id]),{id:new tt.PublicKey(s.id),version:6,programId:new tt.PublicKey(s.programId),mintA:s.mintA,mintB:s.mintB,ammConfig:V(_({},s.config),{id:new tt.PublicKey(s.config.id),fundOwner:""}),currentPrice:new oe.default(s.price),exBitmapAccount:Ke(new tt.PublicKey(s.programId),new tt.PublicKey(s.id)).publicKey,exBitmapInfo:a[Ke(new tt.PublicKey(s.programId),new tt.PublicKey(s.id)).publicKey.toBase58()],startTime:n[s.id].startTime.toNumber(),rewardInfos:n[s.id].rewardInfos})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}static async fetchTickArrayInfo({connection:e,programId:t,poolId:n,tick:o,tickSpacing:i}){let r=ce.getTickArrayStartIndex(o,i),a=Se(t,n,r).publicKey,c=await e.getAccountInfo(a);if(!c)throw new Error(`tick array ${a.toBase58()} not found`);return Vn.decode(c.data)}static async fetchMultipleTickArrayInfo({connection:e,tickInfoList:t}){let n=t.map(i=>{let r=ce.getTickArrayStartIndex(i.tick,i.tickSpacing);return Se(i.programId,i.poolId,r).publicKey});return(await ct(e,n)).map(i=>i&&Vn.decode(i.data))}};var $s=q(require("bn.js"));function Ue(l){let e=`global:${l}`;return Buffer.from(Aa.sha256.digest(e)).slice(0,8)}ra.span;var ba=re("Raydium_Clmm"),Ge={createPool:Ue("create_pool"),createCustomizablePool:Ue("create_customizable_pool"),createPermissionedPool:Ue("create_permissioned_pool"),openPositionV2:Ue("open_position_v2"),openPositionWithToken22Nft:Ue("open_position_with_token22_nft"),closePosition:Ue("close_position"),increaseLiquidityV2:Ue("increase_liquidity_v2"),decreaseLiquidityV2:Ue("decrease_liquidity_v2"),initializeReward:Ue("initialize_reward"),setRewardParams:Ue("set_reward_params"),updateRewardInfos:Ue("update_reward_infos"),collectRemainingRewards:Ue("collect_remaining_rewards"),swapV2:Ue("swap_v2"),openLimitOrder:Ue("open_limit_order"),increaseLimitOrder:Ue("increase_limit_order"),decreaseLimitOrder:Ue("decrease_limit_order"),settleLimitOrder:Ue("settle_limit_order"),closeLimitOrder:Ue("close_limit_order")},ga=[188,37,179,131,82,150,84,73],Pa=[16,72,250,198,14,162,212,19],ft=class{static createPoolInstruction(e,t,n,o,i,r,a,c,u,s,f,m,p,g){let y=L([Q("sqrtPriceX64"),d("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},...(g!=null?g:[]).map(h=>({pubkey:h,isSigner:!1,isWritable:!1}))],P=Buffer.alloc(y.span);y.encode({sqrtPriceX64:p,startTime:U},P);let w=Buffer.from([...Ge.createPool,...P]);return new K.TransactionInstruction({keys:b,programId:e,data:w})}static createCustomizablePoolInstruction(e,t,n,o,i,r,a,c,u,s,f,m,p,g,y,b){let P=L([Q("sqrtPriceX64"),M("collectFeeOn"),xe("enableDynamicFee")]),w=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},...y.map(A=>({pubkey:A,isSigner:!1,isWritable:!1})),...b?[{pubkey:b,isSigner:!1,isWritable:!1}]:[]],h=Buffer.alloc(P.span);P.encode({sqrtPriceX64:p,collectFeeOn:g,enableDynamicFee:b!==void 0},h);let B=Buffer.from([...Ge.createCustomizablePool,...h]);return new K.TransactionInstruction({keys:w,programId:e,data:B})}static createPermissionedPoolInstruction(e,t,n,o,i,r,a,c,u,s,f,m,p,g,y,b,P,w,h){let B=L([Q("sqrtPriceX64"),M("collectFeeOn"),xe("enableDynamicFee"),Ne("seedIndex")]),A=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},...w.map(C=>({pubkey:C,isSigner:!1,isWritable:!1})),...h?[{pubkey:h,isSigner:!1,isWritable:!1}]:[]],k=Buffer.alloc(B.span);B.encode({sqrtPriceX64:y,collectFeeOn:b,enableDynamicFee:h!==void 0,seedIndex:P},k);let T=Buffer.from([...Ge.createPermissionedPool,...k]);return new K.TransactionInstruction({keys:A,programId:e,data:T})}static initializeRewardInstruction(e,t,n,o,i,r,a,c,u,s,f,m){let p=L([d("openTime"),d("endTime"),Q("emissionsPerSecondX64")]),g=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1}],y=Buffer.alloc(p.span);p.encode({openTime:s,endTime:f,emissionsPerSecondX64:m},y);let b=Buffer.from([...Ge.initializeReward,...y]);return new K.TransactionInstruction({keys:g,programId:e,data:b})}static updateRewardInfosInstruction(e,t){let n=[{pubkey:t,isSigner:!1,isWritable:!0}],o=Buffer.from([...Ge.updateRewardInfos]);return new K.TransactionInstruction({keys:n,programId:e,data:o})}static setRewardParamsInstruction(e,t,n,o,i,r,a,c,u,s,f,m){let p=L([M("rewardIndex"),Q("emissionsPerSecondX64"),d("openTime"),d("endTime")]),g=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0}],y=Buffer.alloc(p.span);p.encode({rewardIndex:u,emissionsPerSecondX64:m,openTime:s,endTime:f},y);let b=Buffer.from([...Ge.setRewardParams,...y]);return new K.TransactionInstruction({keys:g,programId:e,data:b})}static closePositionInstruction(e,t,n,o,i,r,a){let c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:r?X.TOKEN_2022_PROGRAM_ID:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1}];a&&c.push({pubkey:a,isSigner:!1,isWritable:!0});let u=Buffer.from([...Ge.closePosition]);return new K.TransactionInstruction({keys:c,programId:e,data:u})}static openPositionV2Instruction(e,t,n,o,i,r,a,c,u,s,f,m,p,g,y,b,P,w,h,B,A,k,T,C,S,x,v){let F=L([Me("tickLower"),Me("tickUpper"),Me("tickArrayLowerStart"),Me("tickArrayUpperStart"),Q("liquidity"),d("amountMaxA"),d("amountMaxB"),xe("withMetadata"),M("optionBaseFlag"),xe("baseFlag")]),O=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:vt,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:P,isSigner:!1,isWritable:!1},...v?[{pubkey:v,isSigner:!1,isWritable:!0}]:[]],W=Buffer.alloc(F.span);F.encode({tickLower:w,tickUpper:h,tickArrayLowerStart:B,tickArrayUpperStart:A,liquidity:k,amountMaxA:T,amountMaxB:C,withMetadata:S,optionBaseFlag:x!==null?1:0,baseFlag:x!=null?x:!1},W);let D=Buffer.from([...Ge.openPositionV2,...W]);return new K.TransactionInstruction({keys:O,programId:e,data:D})}static increaseLiquidityV2Instruction(e,t,n,o,i,r,a,c,u,s,f,m,p,g,y,b,P,w,h){let B=L([Q("liquidity"),d("amountMaxA"),d("amountMaxB"),M("optionBaseFlag"),xe("baseFlag")]),A=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[]],k=Buffer.alloc(B.span);B.encode({liquidity:y,amountMaxA:b,amountMaxB:P,optionBaseFlag:w!==null?1:0,baseFlag:w!=null?w:!1},k);let T=Buffer.from([...Ge.increaseLiquidityV2,...k]);return new K.TransactionInstruction({keys:A,programId:e,data:T})}static decreaseLiquidityV2Instruction(e,t,n,o,i,r,a,c,u,s,f,m,p,g,y,b,P,w,h){let B=L([Q("liquidity"),d("amountMinA"),d("amountMinB")]),A=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:St,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...h?[{pubkey:h,isSigner:!1,isWritable:!0}]:[],...y.map(C=>[{pubkey:C.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:C.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:C.rewardMint,isSigner:!1,isWritable:!1}]).flat()],k=Buffer.alloc(B.span);B.encode({liquidity:b,amountMinA:P,amountMinB:w},k);let T=Buffer.from([...Ge.decreaseLiquidityV2,...k]);return new K.TransactionInstruction({keys:A,programId:e,data:T})}static swapV2Instruction(e,t,n,o,i,r,a,c,u,s,f,m,p,g,y,b,P){let w=L([d("amount"),d("otherAmountThreshold"),Q("sqrtPriceLimitX64"),xe("isBaseInput")]),h=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:St,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[],...f.map(k=>({pubkey:k,isSigner:!1,isWritable:!0}))],B=Buffer.alloc(w.span);w.encode({amount:p,otherAmountThreshold:g,sqrtPriceLimitX64:y,isBaseInput:b},B);let A=Buffer.from([...Ge.swapV2,...B]);return new K.TransactionInstruction({keys:h,programId:e,data:A})}static collectRemainingRewardsInstruction(e,t,n,o,i,r,a){let c=L([M("rewardIndex")]),u=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:St,isSigner:!1,isWritable:!1}],s=Buffer.alloc(c.span);c.encode({rewardIndex:a},s);let f=Buffer.from([...Ge.collectRemainingRewards,...s]);return new K.TransactionInstruction({keys:u,programId:e,data:f})}static openPositionWithToken22NftInstruction(e,t,n,o,i,r,a,c,u,s,f,m,p,g,y,b,P,w,h,B,A,k,T,C,S,x){let v=L([Me("tickLower"),Me("tickUpper"),Me("tickArrayLowerStart"),Me("tickArrayUpperStart"),Q("liquidity"),d("amountMaxA"),d("amountMaxB"),xe("withMetadata"),M("optionBaseFlag"),xe("baseFlag")]),F=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...x?[{pubkey:x,isSigner:!1,isWritable:!0}]:[]],O=Buffer.alloc(v.span);v.encode({tickLower:P,tickUpper:w,tickArrayLowerStart:h,tickArrayUpperStart:B,liquidity:A,amountMaxA:k,amountMaxB:T,withMetadata:C,optionBaseFlag:S!==null?1:0,baseFlag:S!=null?S:!1},O);let W=Buffer.from([...Ge.openPositionWithToken22Nft,...O]);return new K.TransactionInstruction({keys:F,programId:e,data:W})}static openLimitOrderInstruction(e,t,n,o,i,r,a,c,u,s,f,m,p,g,y,b,P,w){let h=L([M("nonceIndex"),xe("zeroForOne"),Me("tickIndex"),d("amount")]),B=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[]],A=Buffer.alloc(h.span);h.encode({nonceIndex:g,zeroForOne:y,tickIndex:b,amount:P},A);let k=Buffer.from([...Ge.openLimitOrder,...A]);return new K.TransactionInstruction({keys:B,programId:e,data:k})}static increaseLimitOrderInstruction(e,t,n,o,i,r,a,c,u,s){let f=L([d("amount")]),m=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1}],p=Buffer.alloc(f.span);f.encode({amount:s},p);let g=Buffer.from([...Ge.increaseLimitOrder,...p]);return new K.TransactionInstruction({keys:m,programId:e,data:g})}static decreaseLimitOrderInstruction(e,t,n,o,i,r,a,c,u,s,f,m,p,g){let y=L([d("amount"),d("amountMin")]),b=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[]],P=Buffer.alloc(y.span);y.encode({amount:m,amountMin:p},P);let w=Buffer.from([...Ge.decreaseLimitOrder,...P]);return new K.TransactionInstruction({keys:b,programId:e,data:w})}static settleLimitOrderInstruction(e,t,n,o,i,r,a,c,u){let s=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1}],f=Buffer.from([...Ge.settleLimitOrder]);return new K.TransactionInstruction({keys:s,programId:e,data:f})}static closeLimitOrderInstruction(e,t,n,o){let i=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0}],r=Buffer.from([...Ge.closeLimitOrder]);return new K.TransactionInstruction({keys:i,programId:e,data:r})}static createPoolInstructions(e){let{programId:t,owner:n,mintA:o,mintB:i,ammConfigId:r,initialPriceX64:a,extendMintAccount:c}=e,[u,s]=[new K.PublicKey(o.address),new K.PublicKey(i.address)],[f,m]=[new K.PublicKey(o.programId||X.TOKEN_PROGRAM_ID),new K.PublicKey(i.programId||X.TOKEN_PROGRAM_ID)],{publicKey:p}=ca(t,r,u,s),{publicKey:g}=Ci(t,p),{publicKey:y}=bn(t,p,u),{publicKey:b}=bn(t,p,s),P=Ke(t,p).publicKey,w=[this.createPoolInstruction(t,p,n,r,g,u,y,f,s,b,m,P,a,c)];return{signers:[],instructions:w,instructionTypes:[ee.CreateAccount,ee.ClmmCreatePool],address:{poolId:p,observationId:g,exBitmapAccount:P,mintA:u,mintB:s,mintAProgram:f,mintBProgram:m,mintAVault:y,mintBVault:b},lookupTableAddress:[]}}static createPermissionedPoolInstructions(e){let{programId:t,owner:n,mintA:o,mintB:i,ammConfigId:r,initialPriceX64:a,extendMintAccount:c,payer:u,seedIndex:s}=e,[f,m]=[new K.PublicKey(o.address),new K.PublicKey(i.address)],[p,g]=[new K.PublicKey(o.programId||X.TOKEN_PROGRAM_ID),new K.PublicKey(i.programId||X.TOKEN_PROGRAM_ID)],{publicKey:y}=ma(t,r,f,m,s),{publicKey:b}=la(t,u),{publicKey:P}=Ci(t,y),{publicKey:w}=bn(t,y,f),{publicKey:h}=bn(t,y,m),B=Ke(t,y).publicKey,A=[this.createPoolInstruction(t,y,n,r,P,f,w,p,m,h,g,B,a,c)];return{signers:[],instructions:A,instructionTypes:[ee.CreateAccount,ee.ClmmCreatePool],address:{poolId:y,observationId:P,exBitmapAccount:B,mintA:f,mintB:m,mintAProgram:p,mintBProgram:g,mintAVault:w,mintBVault:h,permission:b},lookupTableAddress:[]}}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,liquidity:r,amountMaxA:a,amountMaxB:c,base:u,withMetadata:s,getEphemeralSigners:f,nft2022:m}){let p=[],[g,y]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],b;if(f)b=new K.PublicKey((await f(1))[0]);else{let x=K.Keypair.generate();p.push(x),b=x.publicKey}let P=ce.getTickArrayStartIndex(o,e.config.tickSpacing),w=ce.getTickArrayStartIndex(i,e.config.tickSpacing),{publicKey:h}=Se(g,y,P),{publicKey:B}=Se(g,y,w),{publicKey:A}=m?pe(n.wallet,b,X.TOKEN_2022_PROGRAM_ID):pe(n.wallet,b,X.TOKEN_PROGRAM_ID),{publicKey:k}=Qt(b),{publicKey:T}=pt(g,b),{publicKey:C}=Ct(g,y,o,i),S=m?this.openPositionWithToken22NftInstruction(g,n.feePayer,y,n.wallet,b,A,C,h,B,T,n.tokenAccountA,n.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address),o,i,P,w,r,a,c,s==="create",u&&u==="MintA",rt.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[P,w]})?Ke(g,y).publicKey:void 0):this.openPositionV2Instruction(g,n.feePayer,y,n.wallet,b,A,k,C,h,B,T,n.tokenAccountA,n.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address),o,i,P,w,r,a,c,s==="create",null,rt.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[P,w]})?Ke(g,y).publicKey:void 0);return{signers:p,instructions:[S],instructionTypes:[ee.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:h,tickArrayUpper:B,positionNftAccount:A,metadataAccount:k,personalPosition:T,protocolPosition:C}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,base:r,baseAmount:a,otherAmountMax:c,liquidity:u,withMetadata:s,getEphemeralSigners:f,nft2022:m}){let p=[],[g,y]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],b;if(f)b=new K.PublicKey((await f(1))[0]);else{let x=K.Keypair.generate();p.push(x),b=x.publicKey}let P=ce.getTickArrayStartIndex(o,e.config.tickSpacing),w=ce.getTickArrayStartIndex(i,e.config.tickSpacing),{publicKey:h}=Se(g,y,P),{publicKey:B}=Se(g,y,w),{publicKey:A}=m?pe(n.wallet,b,X.TOKEN_2022_PROGRAM_ID):pe(n.wallet,b,X.TOKEN_PROGRAM_ID),{publicKey:k}=Qt(b),{publicKey:T}=pt(g,b),{publicKey:C}=Ct(g,y,o,i),S=m?this.openPositionWithToken22NftInstruction(g,n.feePayer,y,n.wallet,b,A,C,h,B,T,n.tokenAccountA,n.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address),o,i,P,w,u,!r||r==="MintA"?a:c,!r||r==="MintA"?c:a,s==="create",r&&r==="MintA",rt.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[P,w]})?Ke(g,y).publicKey:void 0):this.openPositionV2Instruction(g,n.feePayer,y,n.wallet,b,A,k,C,h,B,T,n.tokenAccountA,n.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address),o,i,P,w,U,r==="MintA"?a:c,r==="MintA"?c:a,s==="create",r==="MintA",rt.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[P,w]})?Ke(g,y).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:h,tickArrayUpper:B,positionNftAccount:A,metadataAccount:k,personalPosition:T,protocolPosition:C},instructions:[S],signers:p,instructionTypes:[ee.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,liquidity:r,amountMaxA:a,amountMaxB:c,base:u,withMetadata:s,getEphemeralSigners:f,nft2022:m}){let p,g=[];if(f)p=new K.PublicKey((await f(1))[0]);else{let x=K.Keypair.generate();g.push(x),p=x.publicKey}let[y,b]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],P=ce.getTickArrayStartIndex(o,e.config.tickSpacing),w=ce.getTickArrayStartIndex(i,e.config.tickSpacing),{publicKey:h}=Se(y,b,P),{publicKey:B}=Se(y,b,w),{publicKey:A}=m?pe(n.wallet,p,X.TOKEN_2022_PROGRAM_ID):pe(n.wallet,p,X.TOKEN_PROGRAM_ID),{publicKey:k}=Qt(p),{publicKey:T}=pt(y,p),{publicKey:C}=Ct(y,b,o,i),S=m?this.openPositionWithToken22NftInstruction(y,n.wallet,b,n.wallet,p,A,C,h,B,T,n.tokenAccountA,n.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(t.mintA.address),new K.PublicKey(t.mintB.address),o,i,P,w,r,a,c,s==="create",u&&u==="MintA",rt.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[P,w]})?Ke(y,b).publicKey:void 0):this.openPositionV2Instruction(y,n.wallet,b,n.wallet,p,A,k,C,h,B,T,n.tokenAccountA,n.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(t.mintA.address),new K.PublicKey(t.mintB.address),o,i,P,w,r,a,c,s==="create",null,rt.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[P,w]})?Ke(y,b).publicKey:void 0);return{address:{nftMint:p,tickArrayLower:h,tickArrayUpper:B,positionNftAccount:A,metadataAccount:k,personalPosition:T,protocolPosition:C},instructions:[S],signers:g,instructionTypes:[ee.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:o,nft2022:i}){let r=new K.PublicKey(e.programId),a=i?pe(n.wallet,o.nftMint,X.TOKEN_2022_PROGRAM_ID).publicKey:pe(n.wallet,o.nftMint,X.TOKEN_PROGRAM_ID).publicKey,{publicKey:c}=pt(r,o.nftMint),u=[];return u.push(this.closePositionInstruction(r,n.wallet,o.nftMint,a,c,!!i,new K.PublicKey(e.id))),{address:{positionNftAccount:a,personalPosition:c},signers:[],instructions:u,instructionTypes:[ee.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:i,amountMaxA:r,amountMaxB:a,nft2022:c}){let[u,s]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],f=ce.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),m=ce.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Se(u,s,f),{publicKey:g}=Se(u,s,m),{publicKey:y}=c?pe(o.wallet,n.nftMint,X.TOKEN_2022_PROGRAM_ID):pe(o.wallet,n.nftMint,X.TOKEN_PROGRAM_ID),{publicKey:b}=pt(u,n.nftMint),{publicKey:P}=Ct(u,s,n.tickLower,n.tickUpper),w=this.increaseLiquidityV2Instruction(u,o.wallet,y,b,s,P,p,g,o.tokenAccountA,o.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address),i,r,a,null,rt.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[f,m]})?Ke(u,s).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:g,positionNftAccount:y,personalPosition:b,protocolPosition:P},signers:[],instructions:[w],instructionTypes:[ee.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,base:i,baseAmount:r,otherAmountMax:a,nft2022:c}){let[u,s]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],f=ce.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),m=ce.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:p}=Se(u,s,f),{publicKey:g}=Se(u,s,m),{publicKey:y}=c?pe(o.wallet,n.nftMint,X.TOKEN_2022_PROGRAM_ID):pe(o.wallet,n.nftMint,X.TOKEN_PROGRAM_ID),{publicKey:b}=pt(u,n.nftMint),{publicKey:P}=Ct(u,s,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:g,positionNftAccount:y,personalPosition:b,protocolPosition:P},instructions:[this.increaseLiquidityV2Instruction(u,o.wallet,y,b,s,P,p,g,o.tokenAccountA,o.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address),U,i==="MintA"?r:a,i==="MintA"?a:r,i==="MintA",rt.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[f,m]})?Ke(u,s).publicKey:void 0)],signers:[],instructionTypes:[ee.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:i,amountMinA:r,amountMinB:a,programId:c,nft2022:u}){let[s,f]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],m=ce.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),p=ce.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:g}=Se(s,f,m),{publicKey:y}=Se(s,f,p),{publicKey:b}=u?pe(o.wallet,n.nftMint,X.TOKEN_2022_PROGRAM_ID):pe(o.wallet,n.nftMint,c),{publicKey:P}=pt(s,n.nftMint),{publicKey:w}=Ct(s,f,n.tickLower,n.tickUpper),h=new Map;for(let T=0;T<t.rewardInfos.length;T++)h.set(t.rewardInfos[T].mint.address,o.rewardAccounts[T]);let B=[];for(let T=0;T<t.rewardInfos.length;T++){let C=t.rewardInfos[T].mint.address,S=h.get(C);S&&B.push({poolRewardVault:new K.PublicKey(t.rewardInfos[T].vault),ownerRewardVault:S,rewardMint:new K.PublicKey(C)})}let A=[],k=this.decreaseLiquidityV2Instruction(s,o.wallet,b,P,f,w,g,y,o.tokenAccountA,o.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address),B,i,r,a,rt.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[m,p]})?Ke(s,f).publicKey:void 0);return A.push(k),{address:{tickArrayLower:g,tickArrayUpper:y,positionNftAccount:b,personalPosition:P,protocolPosition:w},signers:[],instructions:A,instructionTypes:[ee.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:o,inputMint:i,amountIn:r,amountOutMin:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[s,f]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],[m,p]=[new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B)],[g,y]=[new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address)],b=e.mintA.address.toString()===i.toString(),P=[this.swapV2Instruction(s,o.wallet,f,new K.PublicKey(e.config.id),b?o.tokenAccountA:o.tokenAccountB,b?o.tokenAccountB:o.tokenAccountA,b?m:p,b?p:m,b?g:y,b?y:g,u,n,r,a,c,!0,Ke(s,f).publicKey)];return{signers:[],instructions:P,instructionTypes:[ee.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:o,outputMint:i,amountOut:r,amountInMax:a,sqrtPriceLimitX64:c,remainingAccounts:u}){let[s,f]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],[m,p]=[new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B)],[g,y]=[new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address)],b=e.mintB.address.toString()===i.toBase58(),P=[this.swapV2Instruction(s,o.wallet,f,new K.PublicKey(e.config.id),b?o.tokenAccountA:o.tokenAccountB,b?o.tokenAccountB:o.tokenAccountA,b?m:p,b?p:m,b?g:y,b?y:g,u,n,r,a,c,!1,Ke(s,f).publicKey)];return{signers:[],instructions:P,instructionTypes:[ee.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:o}){let[i,r]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],a=da(i,r,o.mint).publicKey,c=Lo(i).publicKey,u=[this.initializeRewardInstruction(i,n.wallet,r,c,new K.PublicKey(e.config.id),n.tokenAccount,o.programId,o.mint,a,new Un.default(o.openTime),new Un.default(o.endTime),o.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:c},signers:[],instructions:u,instructionTypes:[ee.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:o}){let[i,r]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],a,c,u;for(let m=0;m<e.rewardDefaultInfos.length;m++)e.rewardDefaultInfos[m].mint.address===o.mint.toString()&&(a=m,c=new K.PublicKey(t.rewardInfos[m].vault),u=new K.PublicKey(t.rewardInfos[m].mint.address));(a===void 0||c===void 0)&&ba.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let s=Lo(i).publicKey,f=[this.setRewardParamsInstruction(i,n.wallet,r,s,new K.PublicKey(e.config.id),n.tokenAccount,c,u,a,new Un.default(o.openTime),new Un.default(o.endTime),o.emissionsPerSecondX64)];return{address:{rewardVault:c,operationId:s},signers:[],instructions:f,instructionTypes:[ee.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:o}){let[i,r]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],a,c;for(let s=0;s<e.rewardDefaultInfos.length;s++)e.rewardDefaultInfos[s].mint.address===o.toString()&&(a=s,c=new K.PublicKey(t.rewardInfos[s].vault));(a===void 0||c===void 0)&&ba.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=[this.collectRemainingRewardsInstruction(i,n.wallet,r,n.tokenAccount,c,o,a)];return{address:{rewardVault:c},signers:[],instructions:u,instructionTypes:[ee.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async makeLockPositions({programId:e,authProgramId:t,poolProgramId:n,payer:o,wallet:i,nftMint:r,nft2022:a,getEphemeralSigners:c}){let u=[],s;if(c)s=new K.PublicKey((await c(1))[0]);else{let P=K.Keypair.generate();u.push(P),s=P.publicKey}let f=a?pe(i,r,X.TOKEN_2022_PROGRAM_ID).publicKey:pe(i,r,X.TOKEN_PROGRAM_ID).publicKey,{publicKey:m}=pt(n,r),p=Li(e,s).publicKey,g=pe(i,s,X.TOKEN_PROGRAM_ID).publicKey,y=Qt(s).publicKey,b=ft.lockPositionInstructionV2({programId:e,auth:t,payer:o,positionOwner:i,lockOwner:i,positionNftAccount:f,positionId:m,lockPositionId:p,lockNftMint:s,lockNftAccount:g,metadataAccount:y,withMetadata:!0,nft2022:a,positionNftMint:r,authPositionNftAccount:pe(t,r,a?X.TOKEN_2022_PROGRAM_ID:X.TOKEN_PROGRAM_ID).publicKey,positionNftProgram:a?X.TOKEN_2022_PROGRAM_ID:X.TOKEN_PROGRAM_ID});return{address:{positionId:m,lockPositionId:p,lockNftAccount:g,lockNftMint:s,positionNftAccount:f,metadataAccount:y},instructions:[b],signers:u,instructionTypes:[ee.ClmmLockPosition],lookupTableAddress:[]}}static lockPositionInstructionV2({programId:e,auth:t,payer:n,positionOwner:o,lockOwner:i,positionNftAccount:r,positionId:a,positionNftMint:c,authPositionNftAccount:u,positionNftProgram:s,lockPositionId:f,lockNftMint:m,lockNftAccount:p,metadataAccount:g,withMetadata:y}){let b=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!0,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:vt,isSigner:!1,isWritable:!1},{pubkey:X.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:lt,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1}],P=L([xe("withMetadata")]),w=Buffer.alloc(P.span);P.encode({withMetadata:y},w);let h=Buffer.from([...ga,...w]);return new K.TransactionInstruction({keys:b,programId:e,data:h})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:o,positionNft:i}){let{publicKey:r}=pe(o,i,X.TOKEN_PROGRAM_ID),{publicKey:a}=pt(n,i),c=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Ri(e,a).publicKey,isSigner:!1,isWritable:!0},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1}];return new K.TransactionInstruction({keys:c,programId:e,data:Buffer.from(ga)})}static harvestLockPositionInstruction(e){let[t,n]=[new K.PublicKey(e.poolKeys.programId),new K.PublicKey(e.poolKeys.id)],o=ce.getTickArrayStartIndex(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),i=ce.getTickArrayStartIndex(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:r}=Se(t,n,o),{publicKey:a}=Se(t,n,i),{publicKey:c}=pe(e.owner,e.ownerPosition.nftMint,X.TOKEN_PROGRAM_ID),{publicKey:u}=pt(t,e.ownerPosition.nftMint),{publicKey:s}=Ct(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),f=[];for(let g=0;g<e.poolKeys.rewardInfos.length;g++)f.push({poolRewardVault:new K.PublicKey(e.poolKeys.rewardInfos[g].vault),ownerRewardVault:e.ownerRewardAccounts[g],rewardMint:new K.PublicKey(e.poolKeys.rewardInfos[g].mint.address)});let m=[...f.map(g=>[{pubkey:g.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:g.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:g.rewardMint,isSigner:!1,isWritable:!1}]).flat()],p=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:Ri(e.programId,u).publicKey,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e.owner,isSigner:!0,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:new K.PublicKey(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new K.PublicKey(e.poolKeys.vault.B),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:e.userVaultA,isSigner:!1,isWritable:!0},{pubkey:e.userVaultB,isSigner:!1,isWritable:!0},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:St,isSigner:!1,isWritable:!1},{pubkey:new K.PublicKey(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new K.PublicKey(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...m];return new K.TransactionInstruction({keys:p,programId:e.programId,data:Buffer.from(Pa)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:o,lockOwner:i,lockNftMint:r,lockNftAccount:a,positionNftAccount:c,positionId:u,poolId:s,protocolPosition:f,vaultA:m,vaultB:p,tickArrayLower:g,tickArrayUpper:y,userVaultA:b,userVaultB:P,mintA:w,mintB:h,rewardAccounts:B,exTickArrayBitmap:A}){let k=[...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...B.map(C=>[{pubkey:C.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:C.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:C.rewardMint,isSigner:!1,isWritable:!1}]).flat()],T=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:St,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:h,isSigner:!1,isWritable:!1},...k];return new K.TransactionInstruction({keys:T,programId:e,data:Buffer.from(Pa)})}};var Fo=require("@solana/web3.js");var ou=L([M("instruction")]),iu=L([M("instruction")]),ru=L([d("rewardState"),d("rewardOpenTime"),d("rewardEndTime"),d("rewardLastUpdateTime"),d("totalReward"),d("totalRewardEmissioned"),d("rewardClaimed"),d("rewardPerSecond"),Q("accRewardPerShare"),I("rewardVault"),I("rewardMint"),I("rewardSender"),d("rewardType"),E(d(),15,"padding")]),au=L([d("state"),d("nonce"),I("lpVault"),I("rewardVault"),I(),I(),d(),d(),d("totalReward"),Q("perShareReward"),d("lastSlot"),d("perSlotReward")]),su=L([d("state"),d("nonce"),I("lpVault"),I("rewardVaultA"),d("totalRewardA"),Q("perShareRewardA"),d("perSlotRewardA"),M("option"),I("rewardVaultB"),ne(7),d("totalRewardB"),Q("perShareRewardB"),d("perSlotRewardB"),d("lastSlot"),I()]),uu=L([d(),d("state"),d("nonce"),d("validRewardTokenNum"),Q("rewardMultiplier"),d("rewardPeriodMax"),d("rewardPeriodMin"),d("rewardPeriodExtend"),I("lpMint"),I("lpVault"),E(ru,5,"rewardInfos"),I("creator"),I(),E(d(),32,"padding")]),cu=new Proxy(au,{get(l,e,t){return e==="decode"?(...n)=>{let o=l.decode(...n);return V(_({},o),{version:3,rewardInfos:[{rewardVault:o.rewardVault,totalReward:o.totalReward,perSlotReward:o.perSlotReward,perShareReward:o.perShareReward}]})}:Reflect.get(l,e,t)}}),lu=new Proxy(su,{get(l,e,t){return e==="decode"?(...n)=>{let o=l.decode(...n);return V(_({},o),{version:5,rewardInfos:[{rewardVault:o.rewardVaultA,totalReward:o.totalRewardA,perSlotReward:o.perSlotRewardA,perShareReward:o.perShareRewardA},{rewardVault:o.rewardVaultB,totalReward:o.totalRewardB,perSlotReward:o.perSlotRewardB,perShareReward:o.perShareRewardB}]})}:Reflect.get(l,e,t)}}),ka=new Proxy(uu,{get(l,e,t){return e==="decode"?(...n)=>{let o=l.decode(...n);return V(_({},o),{version:6,rewardInfos:o.rewardInfos.map(i=>{var r;return V(_({},i),{rewardType:((r=Object.entries(Gn).find(a=>String(a[1])===i.rewardType.toString()))!=null?r:["Standard SPL"])[0]})})})}:Reflect.get(l,e,t)}}),mu=L([d("isSet"),d("rewardPerSecond"),d("rewardOpenTime"),d("rewardEndTime"),d("rewardType")]),du=L([M("instruction"),d("nonce"),E(mu,5,"rewardTimeInfo")]),pu=L([M("instruction"),d("rewardReopenTime"),d("rewardEndTime"),d("rewardPerSecond")]),fu=L([M("instruction"),d("isSet"),d("rewardPerSecond"),d("rewardOpenTime"),d("rewardEndTime"),d("rewardType")]),nb=L([d("state"),I("id"),I("owner"),d("deposited"),E(d(),1,"rewardDebts")]),Ta=L([d("state"),I("id"),I("owner"),d("deposited"),E(Q(),1,"rewardDebts"),d(""),d("voteLockedBalance"),E(d(),15)]),ob=L([d("state"),I("id"),I("owner"),d("deposited"),E(d(),2,"rewardDebts")]),yu=L([d("state"),I("id"),I("owner"),d("deposited"),E(Q(),2,"rewardDebts"),E(d(),17)]),bu=L([d(),d("state"),I("id"),I("owner"),d("deposited"),E(Q(),5,"rewardDebts"),E(d(),16)]),gu=L([M("instruction"),d("amount")]),Pu=L([I("mint"),I("grantAuthority"),d("baselineVoteWeightScaledFactor"),d("maxExtraLockupVoteWeightScaledFactor"),d("lockupSaturationSecs"),vr("digitShift"),E(M(),7,"reserved1"),E(d(),7,"reserved2")]),Au=L([ne(8),I("governanceProgramId"),I("realm"),I("realmGoverningTokenMint"),I("realmAuthority"),E(M(),32,"reserved1"),E(Pu,4,"votingMints"),cn("timeOffset"),M("bump"),E(M(),7,"reserved2"),E(d(),11,"reserved3")]),wu=L([cn("startTime"),cn("endTime"),M("kind"),E(M(),15,"reserved")]),ku=L([E(wu,1,"lockup"),d("amountDeposited_native"),d("amountInitiallyLockedNative"),xe("isUsed"),xe("allowClawback"),M("votingMintConfigIdx"),E(M(),29,"reserved")]),Tu=L([ne(8),I("voterAuthority"),I("registrar"),E(ku,32,"deposits"),M("voterBump"),M("voterWweightRecordBump"),E(M(),94,"reserved")]);var hu=require("@solana/spl-token"),lb=re("Raydium_farm_config"),Iu=new Fo.PublicKey("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Bu=new Fo.PublicKey("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var mb=new Fo.PublicKey("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var Gn={"Standard SPL":0,"Option tokens":1},ha={[zr.toString()]:3,[Xr.toString()]:4,[Yr.toString()]:5,[ki.toString()]:6,[Et.FARM_PROGRAM_ID_V3.toString()]:3,[Et.FARM_PROGRAM_ID_V4.toString()]:4,[Et.FARM_PROGRAM_ID_V5.toString()]:5,[Et.FARM_PROGRAM_ID_V6.toString()]:6};var zn=require("@solana/web3.js"),Ru=q(require("bn.js")),_i=require("@solana/spl-token");var Cu=q(require("bn.js"));var Ia=require("@solana/web3.js"),Ba=q(require("bn.js"));function xu(l){return typeof l=="object"&&l!==null&&![Re,Pe,Ia.PublicKey,me,Ba.default,Je,gt].some(e=>typeof e=="object"&&l instanceof e)}function Lt(l){return typeof l=="string"?ri(l):Array.isArray(l)?l.map(e=>Lt(e)):xu(l)?Object.fromEntries(Object.entries(l).map(([e,t])=>[e,Lt(t)])):l}var Nb=re("Raydium.farm.util");var Jb=re("Raydium_farm_instruction"),eg={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])};var Vu=q(require("bn.js"));var ac=require("@solana/web3.js"),Vo=require("@solana/spl-token");var we=q(require("bn.js")),Bt=1e4;function st(l,e,t,n){if(e===void 0)return{amount:l,fee:void 0,expirationTime:void 0};let o=V(_({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),i=t.epoch<o.newerTransferFee.epoch?o.olderTransferFee:o.newerTransferFee,r=new we.default(i.maximumFee.toString()),a=t.epoch<o.newerTransferFee.epoch?(Number(o.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(i.transferFeeBasisPoints===Bt){let c=new we.default(i.maximumFee.toString());return{amount:l.add(c),fee:c,expirationTime:a}}else{let c=$t(l.mul(new we.default(Bt)),new we.default(Bt-i.transferFeeBasisPoints)),u=new we.default(i.maximumFee.toString()),s=c.sub(l).gt(u)?l.add(u):c,f=$t(s.mul(new we.default(i.transferFeeBasisPoints)),new we.default(Bt)),m=f.gt(r)?r:f;return{amount:s,fee:m,expirationTime:a}}else{let c=$t(l.mul(new we.default(i.transferFeeBasisPoints)),new we.default(Bt)),u=c.gt(r)?r:c;return{amount:l,fee:u,expirationTime:a}}}function Rt(l,e){return l===void 0?e:e===void 0?l:Math.min(l,e)}function $t(l,e){let{div:t,mod:n}=l.divmod(e);return n.gt(new we.default(0))?t.add(new we.default(1)):t}function Jt(l,e){if(l.isZero())return new we.default(0);let t=l.div(e);return t.isZero()?new we.default(1):l.mod(e).gt(new we.default(0))?t.add(new we.default(1)):t}function Xn(l,e,t){if(e===void 0)return{amount:l,fee:void 0,expirationTime:void 0};let n=Math.floor(t/432e3),o=n<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,i=new we.default(o.maximumFee.toString()),r=n<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*432e3-t)*400/1e3:void 0,a=$t(l.mul(new we.default(o.transferFeeBasisPoints)),new we.default(Bt)),c=a.gt(i)?i:a;return{amount:l,fee:c,expirationTime:r}}function Pn(l,e,t){if(e===void 0)return{amount:l,fee:void 0,expirationTime:void 0};let n=Math.floor(t/432e3),o=n<e.newerTransferFee.epoch?e.olderTransferFee:e.newerTransferFee,i=new we.default(o.maximumFee.toString()),r=n<e.newerTransferFee.epoch?(Number(e.newerTransferFee.epoch)*432e3-t)*400/1e3:void 0;if(o.transferFeeBasisPoints===Bt){let a=new we.default(o.maximumFee.toString());return{amount:l.add(a),fee:a,expirationTime:r}}else{let a=$t(l.mul(new we.default(Bt)),new we.default(Bt-o.transferFeeBasisPoints)),c=new we.default(o.maximumFee.toString()),u=a.sub(l).gt(c)?l.add(c):a,s=$t(u.mul(new we.default(o.transferFeeBasisPoints)),new we.default(Bt)),f=s.gt(i)?i:s;return{amount:u,fee:f,expirationTime:r}}}var Vi=q(require("bn.js")),Eu=new Vi.default(25),Du=new Vi.default(1e4);var An=require("@solana/spl-token"),ze=require("@solana/web3.js");var Yn=q(require("bn.js"));var Ei=L([M("instruction"),d("amountIn"),d("minAmountOut")]),Di=L([M("instruction"),d("maxAmountIn"),d("amountOut")]),Zg=L([M("instruction"),M("nonce")]),Wu=L([M("instruction"),M("nonce"),d("startTime")]),Wi=L([d("status"),d("nonce"),d("maxOrder"),d("depth"),d("baseDecimal"),d("quoteDecimal"),d("state"),d("resetFlag"),d("minSize"),d("volMaxCutRatio"),d("amountWaveRatio"),d("baseLotSize"),d("quoteLotSize"),d("minPriceMultiplier"),d("maxPriceMultiplier"),d("systemDecimalValue"),d("minSeparateNumerator"),d("minSeparateDenominator"),d("tradeFeeNumerator"),d("tradeFeeDenominator"),d("pnlNumerator"),d("pnlDenominator"),d("swapFeeNumerator"),d("swapFeeDenominator"),d("baseNeedTakePnl"),d("quoteNeedTakePnl"),d("quoteTotalPnl"),d("baseTotalPnl"),d("poolOpenTime"),d("punishPcAmount"),d("punishCoinAmount"),d("orderbookToInitTime"),Q("swapBaseInAmount"),Q("swapQuoteOutAmount"),d("swapBase2QuoteFee"),Q("swapQuoteInAmount"),Q("swapBaseOutAmount"),d("swapQuote2BaseFee"),I("baseVault"),I("quoteVault"),I("baseMint"),I("quoteMint"),I("lpMint"),I("openOrders"),I("marketId"),I("marketProgramId"),I("targetOrders"),I("withdrawQueue"),I("lpVault"),I("owner"),d("lpReserve"),E(d(),3,"padding")]),jg=L([d("accountType"),d("status"),d("nonce"),d("maxOrder"),d("depth"),d("baseDecimal"),d("quoteDecimal"),d("state"),d("resetFlag"),d("minSize"),d("volMaxCutRatio"),d("amountWaveRatio"),d("baseLotSize"),d("quoteLotSize"),d("minPriceMultiplier"),d("maxPriceMultiplier"),d("systemDecimalsValue"),d("abortTradeFactor"),d("priceTickMultiplier"),d("priceTick"),d("minSeparateNumerator"),d("minSeparateDenominator"),d("tradeFeeNumerator"),d("tradeFeeDenominator"),d("pnlNumerator"),d("pnlDenominator"),d("swapFeeNumerator"),d("swapFeeDenominator"),d("baseNeedTakePnl"),d("quoteNeedTakePnl"),d("quoteTotalPnl"),d("baseTotalPnl"),d("poolOpenTime"),d("punishPcAmount"),d("punishCoinAmount"),d("orderbookToInitTime"),Q("swapBaseInAmount"),Q("swapQuoteOutAmount"),Q("swapQuoteInAmount"),Q("swapBaseOutAmount"),d("swapQuote2BaseFee"),d("swapBase2QuoteFee"),I("baseVault"),I("quoteVault"),I("baseMint"),I("quoteMint"),I("lpMint"),I("modelDataAccount"),I("openOrders"),I("marketId"),I("marketProgramId"),I("targetOrders"),I("owner"),E(d(),64,"padding")]),qu=L([M("instruction"),d("baseAmountIn"),d("quoteAmountIn"),d("fixedSide"),d("otherAmountMin")]),Uu=L([M("instruction"),d("lpAmount"),d("baseAmountMin"),d("quoteAmountMin")]);var Gu=L([d("fee")]);var vo=re("Raydium_liquidity_instruction");function zu({poolKeys:l,userKeys:e,amountIn:t,minAmountOut:n,modelDataPubKey:o=xo},i){let r=Lt(l),a=Buffer.alloc(Ei.span);Ei.encode({instruction:9,amountIn:ke(t),minAmountOut:ke(n)},a);let c=[N({pubkey:An.TOKEN_PROGRAM_ID,isWritable:!1}),N({pubkey:r.id}),N({pubkey:r.authority,isWritable:!1}),N({pubkey:r.openOrders})];return i===4&&c.push(N({pubkey:r.targetOrders})),c.push(N({pubkey:r.vault.A}),N({pubkey:r.vault.B})),i===5&&c.push(N({pubkey:o})),c.push(N({pubkey:r.marketProgramId,isWritable:!1}),N({pubkey:r.marketId}),N({pubkey:r.marketBids}),N({pubkey:r.marketAsks}),N({pubkey:r.marketEventQueue}),N({pubkey:r.marketBaseVault}),N({pubkey:r.marketQuoteVault}),N({pubkey:r.marketAuthority,isWritable:!1}),N({pubkey:e.tokenAccountIn}),N({pubkey:e.tokenAccountOut}),N({pubkey:e.owner,isWritable:!1,isSigner:!0})),new ze.TransactionInstruction({programId:r.programId,keys:c,data:a})}function Xu({poolKeys:l,userKeys:e,maxAmountIn:t,amountOut:n,modelDataPubKey:o=xo},i){let r=Lt(l),a=Buffer.alloc(Di.span);Di.encode({instruction:11,maxAmountIn:ke(t),amountOut:ke(n)},a);let c=[N({pubkey:An.TOKEN_PROGRAM_ID,isWritable:!1}),N({pubkey:r.id}),N({pubkey:r.authority,isWritable:!1}),N({pubkey:r.openOrders}),N({pubkey:r.targetOrders}),N({pubkey:r.vault.A}),N({pubkey:r.vault.B})];return i===5&&c.push(N({pubkey:o})),c.push(N({pubkey:r.marketProgramId,isWritable:!1}),N({pubkey:r.marketId}),N({pubkey:r.marketBids}),N({pubkey:r.marketAsks}),N({pubkey:r.marketEventQueue}),N({pubkey:r.marketBaseVault}),N({pubkey:r.marketQuoteVault}),N({pubkey:r.marketAuthority,isWritable:!1}),N({pubkey:e.tokenAccountIn}),N({pubkey:e.tokenAccountOut}),N({pubkey:e.owner,isWritable:!1,isSigner:!0})),new ze.TransactionInstruction({programId:r.programId,keys:c,data:a})}function Yu(l,e,t,n,o,i,r,a,c,u){let s=L([M("instructionId"),d("amountIn"),d("minAmountOut")]),f=Buffer.alloc(s.span);s.encode({instructionId:16,amountIn:c,minAmountOut:u},f);let m=[{pubkey:An.TOKEN_PROGRAM_ID,isWritable:!1,isSigner:!1},{pubkey:e,isWritable:!0,isSigner:!1},{pubkey:t,isWritable:!1,isSigner:!1},{pubkey:n,isWritable:!0,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:r,isWritable:!0,isSigner:!1},{pubkey:a,isWritable:!1,isSigner:!0}];return new ze.TransactionInstruction({programId:l,keys:m,data:f})}function Hu(l,e,t,n,o,i,r,a,c,u){let s=L([M("instructionId"),d("maxAmountIn"),d("amountOut")]),f=Buffer.alloc(s.span);s.encode({instructionId:17,maxAmountIn:c,amountOut:u},f);let m=[{pubkey:An.TOKEN_PROGRAM_ID,isWritable:!1,isSigner:!1},{pubkey:e,isWritable:!0,isSigner:!1},{pubkey:t,isWritable:!1,isSigner:!1},{pubkey:n,isWritable:!0,isSigner:!1},{pubkey:o,isWritable:!0,isSigner:!1},{pubkey:i,isWritable:!0,isSigner:!1},{pubkey:r,isWritable:!0,isSigner:!1},{pubkey:a,isWritable:!1,isSigner:!0}];return new ze.TransactionInstruction({programId:l,keys:m,data:f})}function qi(l){let{poolKeys:e,version:t,userKeys:n,amountIn:o,amountOut:i,fixedSide:r}=l;if(t===4){if(r==="in")return Yu(new ze.PublicKey(e.programId),new ze.PublicKey(e.id),new ze.PublicKey(e.authority),new ze.PublicKey(e.vault.A),new ze.PublicKey(e.vault.B),n.tokenAccountIn,n.tokenAccountOut,n.owner,new Yn.default(o.toString()),new Yn.default(i.toString()));if(r==="out")return Hu(new ze.PublicKey(e.programId),new ze.PublicKey(e.id),new ze.PublicKey(e.authority),new ze.PublicKey(e.vault.A),new ze.PublicKey(e.vault.B),n.tokenAccountIn,n.tokenAccountOut,n.owner,new Yn.default(o.toString()),new Yn.default(i.toString()));vo.logWithError("invalid params","params",l)}throw vo.logWithError("invalid version, only support pool v4","poolKeys.version",t),new Error("invalid version")}function Ui(l){let{poolKeys:e,version:t,userKeys:n,amountIn:o,amountOut:i,fixedSide:r}=l;if(t===4||t===5){let a={poolKeys:e,userKeys:n};if(r==="in")return zu(V(_({},a),{amountIn:o,minAmountOut:i}),t);if(r==="out")return Xu(V(_({},a),{maxAmountIn:o,amountOut:i}),t);vo.logWithError("invalid params","params",l)}throw vo.logWithError("invalid version","poolKeys.version",t),new Error("invalid version")}var Qu=5e4,Zu=L([d("x"),d("y"),d("price")]),lP=L([d("accountType"),d("status"),d("multiplier"),d("validDataCount"),E(Zu,Qu,"DataElement")]);var $u=require("@solana/web3.js"),Hn=q(require("decimal.js")),Ka=require("@solana/spl-token");var ju=require("@solana/web3.js");var yP=re("Raydium_liquidity_serum");function Ca({programId:l}){let{publicKey:e}=ue([Buffer.from("amm_config_account_seed","utf-8")],l);return e}function Ra({programId:l}){return ue([Buffer.from([97,109,109,32,97,117,116,104,111,114,105,116,121])],l)}var Gi={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]},zi=l=>{let e={},t=Ka.TOKEN_PROGRAM_ID.toBase58();return Object.keys(l).map(n=>{let o=l[n],[i,r]=[o.baseMint.toBase58(),o.quoteMint.toBase58()];e[n]={id:n,version:4,status:o.status.toNumber(),programId:o.programId.toBase58(),mintA:ht({address:i,programId:t,decimals:o.baseDecimal.toNumber()}),mintB:ht({address:r,programId:t,decimals:o.quoteDecimal.toNumber()}),rewardDefaultInfos:[],rewardDefaultPoolInfos:"Ecosystem",price:o.poolPrice.toNumber(),mintAmountA:new Hn.default(o.mintAAmount.toString()).div(10**o.baseDecimal.toNumber()).toNumber(),mintAmountB:new Hn.default(o.mintBAmount.toString()).div(10**o.quoteDecimal.toNumber()).toNumber(),baseReserve:o.baseReserve,quoteReserve:o.quoteReserve,feeRate:new Hn.default(o.tradeFeeNumerator.toString()).div(o.tradeFeeDenominator.toString()).toNumber(),openTime:o.poolOpenTime.toString(),tvl:0,day:Gi,week:Gi,month:Gi,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,type:"Standard",marketId:o.marketId.toBase58(),configId:Ca({programId:o.programId}).toBase58(),lpPrice:0,lpAmount:new Hn.default(o.lpReserve.toString()).div(10**Math.min(o.baseDecimal.toNumber(),o.quoteDecimal.toNumber())).toNumber(),lpMint:ht({address:o.lpMint.toBase58(),programId:t,decimals:Math.min(o.baseDecimal.toNumber(),o.quoteDecimal.toNumber())}),burnPercent:0,feeOn:"Both",hasDynamicFee:!1,tips:[],launchMigratePool:!1}}),e};var sc=q(require("bn.js")),uc=q(require("decimal.js"));var nc=require("@solana/spl-token"),oc=require("@solana/web3.js"),ic=q(require("bn.js"));var _o=require("@solana/web3.js"),La=require("@solana/spl-token");function Ju(l="accountFlags"){let e=new ko(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 ec=L([ne(5),Ju("accountFlags"),I("ownAddress"),d("vaultSignerNonce"),I("baseMint"),I("quoteMint"),I("baseVault"),d("baseDepositsTotal"),d("baseFeesAccrued"),I("quoteVault"),d("quoteDepositsTotal"),d("quoteFeesAccrued"),d("quoteDustThreshold"),I("requestQueue"),I("eventQueue"),I("bids"),I("asks"),d("baseLotSize"),d("quoteLotSize"),d("feeRateBps"),d("referrerRebatesAccrued"),ne(7)]);var bc=require("@solana/web3.js"),jn=require("@solana/spl-token");var lc=q(require("bn.js"));var Oa=q(require("bn.js"));var CA=new Oa.default(0);var cc=q(require("bn.js"));var Na=q(require("bn.js")),qe=new Na.default(1e6);var gc=q(require("bn.js")),Pc=q(require("decimal.js"));var Qn=require("@solana/web3.js"),Qi=require("@solana/spl-token");var mc=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),UA=Buffer.from("amm_config","utf8"),GA=Buffer.from("pool","utf8"),zA=Buffer.from("pool_lp_mint","utf8"),XA=Buffer.from("pool_vault","utf8"),dc=Buffer.from("observation","utf8"),YA=Buffer.from("permission","utf8"),HA=Buffer.from("support_mint","utf8");function Yi(l){return ue([mc],l)}function Hi(l,e){return ue([dc,e.toBuffer()],l)}var QA=Buffer.from("locked_liquidity","utf8");var aw=re("Raydium_cpmm"),fc={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 Zn(l,e,t,n,o,i,r,a,c,u,s,f,m,p,g,y){let b=L([d("amountIn"),d("amounOutMin")]),P=[{pubkey:e,isSigner:!0,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0}],w=Buffer.alloc(b.span);return b.encode({amountIn:g,amounOutMin:y},w),new Qn.TransactionInstruction({keys:P,programId:l,data:Buffer.from([...fc.swapBaseInput,...w])})}var yc=L([ne(8),M("bump"),xe("disableCreatePool"),Ne("index"),d("tradeFeeRate"),d("protocolFeeRate"),d("fundFeeRate"),d("createPoolFee"),I("protocolOwner"),I("fundOwner"),d("creatorFeeRate"),E(d(),15)]),Zi=L([ne(8),I("configId"),I("poolCreator"),I("vaultA"),I("vaultB"),I("mintLp"),I("mintA"),I("mintB"),I("mintProgramA"),I("mintProgramB"),I("observationId"),M("bump"),M("status"),M("lpDecimals"),M("mintDecimalA"),M("mintDecimalB"),d("lpAmount"),d("protocolFeesMintA"),d("protocolFeesMintB"),d("fundFeesMintA"),d("fundFeesMintB"),d("openTime"),d("epoch"),M("feeOn"),xe("enableCreatorFee"),E(M(),6),d("creatorFeesMintA"),d("creatorFeesMintB"),E(d(),28)]),cw=L([ne(8),I("configId"),E(d(),30)]);var Wt=require("@solana/web3.js"),Ma=require("@solana/spl-token"),ji=q(require("bn.js"));var $e=class extends et{static getPdaPoolId(e,t){return ue([$e.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,o){return ue([$e.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new ji.default(o).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:o,chainTime:i}){if(n.length===0)return[];let r=n.map(s=>$e.getPdaPoolId(t,s).publicKey),a=[];for(let s=0;s<$e.VERSION_PROJECT.length;s++)a.push(...r.map(f=>$e.getPdaOwnerId(t,f,o,s).publicKey));let c=await ct(e,[...r,...a]),u=[];for(let s=0;s<c.length;s++){let f=Math.floor(s/n.length),m=s%n.length,p=r[m],g=a[s],y=c[m],b=c[n.length+s];if(!(y&&b)||y.data.length!==$e.POOL_LAYOUT.span||b.data.length!==$e.OWNER_LAYOUT.span)continue;let P=$e.POOL_LAYOUT.decode(y.data),w=$e.OWNER_LAYOUT.decode(b.data),h=P.openTime.toNumber(),B=P.endTime.toNumber(),A=w.tokenInfo.map(C=>C.debtAmount.gt(new ji.default(0))).filter(C=>!C).length!==3,k=i>h&&i<B&&P.status===1,T=A&&k;u.push({programId:t,poolId:p,ammId:P.ammId,ownerAccountId:g,snapshotLpAmount:w.lpAmount,project:$e.VERSION_PROJECT[f],openTime:h,endTime:B,canClaim:T,canClaimErrorType:A?k?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:P.tokenInfo.map((C,S)=>({mintAddress:C.mintAddress,mintVault:C.mintVault,mintDecimals:C.mintDecimals,perLpLoss:C.perLpLoss,debtAmount:w.tokenInfo[S].debtAmount.add(w.tokenInfo[S].claimedAmount)}))})}return u}async makeClaimTransaction({poolInfo:e,ownerInfo:t,feePayer:n}){t.wallet||this.scope.checkOwner();let o=this.createTxBuilder(n),i=t.wallet||this.scope.ownerPubKey,r=[];for(let u of e.tokenInfo){let{account:s,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({mint:u.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:u.mintAddress.equals(Re.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!u.mintAddress.equals(Re.WSOL.mint),associatedOnly:u.mintAddress.equals(Re.WSOL.mint)?!1:t.associatedOnly});f&&o.addInstruction(f),r.push(s)}o.addInstruction({instructions:[$e.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:i,ownerPda:e.ownerAccountId,claimAddress:r}})]});let{transaction:a,signers:c}=o.build();return[{transaction:a,signer:c}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:n}){let o=this.createTxBuilder(n),i=t.wallet||this.scope.ownerPubKey,r={};for(let s of e){let f=[];for(let m of s.tokenInfo){let{account:p,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({mint:m.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:m.mintAddress.equals(Re.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!m.mintAddress.equals(Re.WSOL.mint),associatedOnly:m.mintAddress.equals(Re.WSOL.mint)?!1:t.associatedOnly});g&&o.addInstruction(g),p&&(r[m.mintAddress.toString()]=p,f.push(p))}o.addInstruction({instructions:[$e.makeClaimInstruction({programId:s.programId,poolInfo:s,ownerInfo:{wallet:i,ownerPda:s.ownerAccountId,claimAddress:f}})]})}let{transaction:a,signers:c}=o.build(),u=o.allInstructions;return di(u,[i,...c.map(s=>s.publicKey)])?[{transaction:a,signer:c}]:[{transaction:new Wt.Transaction().add(...u.slice(0,o.AllTxData.instructions.length-1)),signer:c},{transaction:new Wt.Transaction().add(...u.slice(o.AllTxData.instructions.length-1)),signer:[]},{transaction:new Wt.Transaction().add(...o.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let o=L([]),i=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(c=>({pubkey:c,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:c})=>({pubkey:c,isSigner:!1,isWritable:!0})),{pubkey:Ma.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1}],r=Buffer.alloc(o.span);o.encode({},r);let a=Buffer.from([10,66,208,184,161,6,191,98,...r]);return new Wt.TransactionInstruction({keys:i,programId:e,data:a})}},Tt=$e;Tt.CLAIMED_NUM=3,Tt.POOL_LAYOUT=L([ne(8),M("bump"),M("status"),d("openTime"),d("endTime"),I("ammId"),E(L([M("mintDecimals"),I("mintAddress"),I("mintVault"),d("perLpLoss"),d("totalClaimedAmount")]),$e.CLAIMED_NUM,"tokenInfo"),E(d(),10,"padding")]),Tt.OWNER_LAYOUT=L([ne(8),M("bump"),M("version"),I("poolId"),I("owner"),d("lpAmount"),E(L([I("mintAddress"),d("debtAmount"),d("claimedAmount")]),$e.CLAIMED_NUM,"tokenInfo"),E(d(),4,"padding")]),Tt.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Wt.PublicKey(e)),Tt.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},Tt.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];var Ac=Buffer.from("vault_auth_seed","utf8"),Ak=Buffer.from("global_config","utf8"),wk=Buffer.from("pool_vesting","utf8"),kk=Buffer.from("platform_config","utf8"),Tk=Buffer.from("platform_fee_vault_auth_seed","utf8"),hk=Buffer.from("creator_fee_vault_auth_seed","utf8"),Ik=Buffer.from("platform_global_access","utf8"),Bk=Buffer.from("platform_allow_config","utf8");function wn(l){return ue([Ac],l)}function $i(l){return ue([Buffer.from("__event_authority","utf8")],l)}function $n(l,e,t){return ue([e.toBuffer(),t.toBuffer()],l)}function Jn(l,e,t){return ue([e.toBuffer(),t.toBuffer()],l)}var Ji=require("@solana/spl-token"),Tn=require("@solana/web3.js"),Eo=q(require("bn.js"));var wc=L([d(),d("epoch"),M("curveType"),Ne("index"),d("migrateFee"),d("tradeFeeRate"),d("maxShareFeeRate"),d("minSupplyA"),d("maxLockRate"),d("minSellRateA"),d("minMigrateRateA"),d("minFundRaisingB"),I("mintB"),I("protocolFeeOwner"),I("migrateFeeOwner"),I("migrateToAmmWallet"),I("migrateToCpmmWallet"),E(d(),16)]),kc=L([d("totalLockedAmount"),d("cliffPeriod"),d("unlockPeriod"),d("startTime"),d("totalAllocatedShare")]),Tc=L([d(),d("epoch"),M("bump"),M("status"),M("mintDecimalsA"),M("mintDecimalsB"),M("migrateType"),d("supply"),d("totalSellA"),d("virtualA"),d("virtualB"),d("realA"),d("realB"),d("totalFundRaisingB"),d("protocolFee"),d("platformFee"),d("migrateFee"),kc.replicate("vestingSchedule"),I("configId"),I("platformId"),I("mintA"),I("mintB"),I("vaultA"),I("vaultB"),I("creator"),M("mintProgramFlag"),M("cpmmCreatorFeeOn"),d("platformVestingShare"),E(M(),54)]),Kk=L([d(),d("epoch"),I("poolId"),I("beneficiary"),d("claimedAmount"),d("tokenShareAmount"),E(d(),8)]),Fa=L([M("migrateType"),M("migrateCpmmFeeOn"),d("supply"),d("totalSellA"),d("totalFundRaisingB"),d("totalLockedAmount"),d("cliffPeriod"),d("unlockPeriod")]),hc=L([d("epoch"),M("index"),I("configId"),Fa.replicate("bondingCurveParam"),E(d(),50)]),kn=L([d(),d("epoch"),I("platformClaimFeeWallet"),I("platformLockNftWallet"),d("platformScale"),d("creatorScale"),d("burnScale"),d("feeRate"),E(M(),64,"name"),E(M(),256,"web"),E(M(),256,"img"),I("cpConfigId"),d("creatorFeeRate"),I("transferFeeExtensionAuth"),I("platformVestingWallet"),d("platformVestingScale"),I("platformCpCreator"),M("restrictGlobalConfig"),E(M(),107),Vr(hc,"platformCurve")]);var va={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])};function Do(l,e,t,n,o,i,r,a,c,u,s,f,m,p,g,y,b,P,w,h){let B=L([d("amountB"),d("minAmountA"),d("shareFeeRate")]),A=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:$i(l).publicKey,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1}];h&&A.push({pubkey:h,isSigner:!1,isWritable:!0}),A.push({pubkey:Tn.SystemProgram.programId,isSigner:!1,isWritable:!1}),A.push({pubkey:g,isSigner:!1,isWritable:!0}),A.push({pubkey:y,isSigner:!1,isWritable:!0});let k=Buffer.alloc(B.span);return B.encode({amountB:b,minAmountA:P,shareFeeRate:w!=null?w:new Eo.default(0)},k),new Tn.TransactionInstruction({keys:A,programId:l,data:Buffer.from([...va.buyExactIn,...k])})}function er(l,e,t,n,o,i,r,a,c,u,s,f,m,p,g,y,b,P,w,h){let B=L([d("amountA"),d("minAmountB"),d("shareFeeRate")]),A=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:$i(l).publicKey,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1}];h&&A.push({pubkey:h,isSigner:!1,isWritable:!0}),A.push({pubkey:Tn.SystemProgram.programId,isSigner:!1,isWritable:!1}),A.push({pubkey:g,isSigner:!1,isWritable:!0}),A.push({pubkey:y,isSigner:!1,isWritable:!0});let k=Buffer.alloc(B.span);return B.encode({amountA:b,minAmountB:P,shareFeeRate:w!=null?w:new Eo.default(0)},k),new Tn.TransactionInstruction({keys:A,programId:l,data:Buffer.from([...va.sellExactIn,...k])})}var _k=new Eo.default("18446744073709551615");var en=require("@solana/spl-token"),_e=q(require("bn.js")),or=require("@solana/web3.js");var ot=q(require("bn.js")),nr=q(require("decimal.js"));var eo=q(require("bn.js")),hn=q(require("decimal.js"));var qt=class{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n}){throw Error()}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:o}){throw Error()}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:n}){throw Error()}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:n,totalFundRaising:o,migrateFee:i,decimalA:r,decimalB:a}){throw Error()}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:n}){throw Error()}static getInitParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:o,migrateFee:i}){throw Error()}static buyExactIn({poolInfo:e,amount:t}){throw Error()}static buyExactOut({poolInfo:e,amount:t}){throw Error()}static sellExactIn({poolInfo:e,amount:t}){throw Error()}static sellExactOut({poolInfo:e,amount:t}){throw Error()}};var Wo=class extends qt{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n}){return new hn.default(e.virtualB.toString()).div(e.virtualA.toString()).mul(10**(t-n))}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:o}){return new hn.default(t.toString()).div(e.toString()).mul(10**(n-o))}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:n}){return new hn.default(e.virtualB.add(e.realB).toString()).div(e.virtualA.sub(e.realA).toString()).mul(10**(t-n))}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:n,totalFundRaising:o,migrateFee:i,decimalA:r,decimalB:a}){return new hn.default(o.sub(i).toString()).div(e.sub(t).sub(n).toString()).mul(10**(r-a))}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:n}){let o=e.totalSellA.sub(e.realA),i=e.totalFundRaisingB.sub(e.realB);return new hn.default(e.virtualB.add(e.realB.add(i)).toString()).div(e.virtualA.sub(e.realA.add(o)).toString()).mul(10**(t-n))}static getInitParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:o,migrateFee:i}){if(e.lte(n))throw Error("supply need gt total sell");let r=e.sub(n).sub(o);if(r.lte(new eo.default(0)))throw Error("supplyMinusSellLocked <= 0");let a=t.sub(i);if(a.lte(new eo.default(0)))throw Error("tfMinusMf <= 0");let c=a.mul(n).mul(n).div(r),u=a.mul(n).div(r).sub(t),s=c.div(u),f=t.mul(t).div(u);if(s.lt(new eo.default(0))||f.lt(new eo.default(0)))throw Error("invalid input 0");return{a:s,b:f,c:n}}static buyExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,inputReserve:e.virtualB.add(e.realB),outputReserve:e.virtualA.sub(e.realA)})}static buyExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,inputReserve:e.virtualB.add(e.realB),outputReserve:e.virtualA.sub(e.realA)})}static sellExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,inputReserve:e.virtualA.sub(e.realA),outputReserve:e.virtualB.add(e.realB)})}static sellExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,inputReserve:e.virtualA.sub(e.realA),outputReserve:e.virtualB.add(e.realB)})}static getAmountOut({amountIn:e,inputReserve:t,outputReserve:n}){let o=e.mul(n),i=t.add(e);return o.div(i)}static getAmountIn({amountOut:e,inputReserve:t,outputReserve:n}){let o=t.mul(e),i=n.sub(e);return Jt(o,i)}};var to=q(require("bn.js")),In=q(require("decimal.js"));var qo=class extends qt{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n}){return new In.default(e.virtualB.toString()).div(e.virtualA.toString()).mul(10**(t-n))}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:o}){return new In.default(t.toString()).div(e.toString()).mul(10**(n-o))}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:n}){return new In.default(e.virtualB.toString()).div(e.virtualA.toString()).mul(10**(t-n))}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:n,totalFundRaising:o,migrateFee:i,decimalA:r,decimalB:a}){return new In.default(o.sub(i).toString()).div(e.sub(t).sub(n).toString()).mul(10**(r-a))}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:n}){let o=e.totalSellA.sub(e.realA),i=e.totalFundRaisingB.sub(e.realB);return new In.default(e.virtualB.add(e.realB).add(i).toString()).div(e.virtualA.sub(e.realA).add(o).toString()).mul(10**(t-n))}static getInitParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:o,migrateFee:i}){let r=e.sub(o);if(r.lte(new to.default(0)))throw Error("invalid input 1");let a=new to.default(2).mul(t).sub(i),u=t.mul(r).div(a);if(u.lt(new to.default(0))||t.lt(new to.default(0)))throw Error("invalid input 0");return{a:u,b:t,c:u}}static buyExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,initInput:e.virtualB,initOutput:e.virtualA})}static buyExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,initInput:e.virtualB,initOutput:e.virtualA})}static sellExactIn({poolInfo:e,amount:t}){return this.getAmountOut({amountIn:t,initInput:e.virtualA,initOutput:e.virtualB})}static sellExactOut({poolInfo:e,amount:t}){return this.getAmountIn({amountOut:t,initInput:e.virtualA,initOutput:e.virtualB})}static getAmountOut({amountIn:e,initInput:t,initOutput:n}){return n.mul(e).div(t)}static getAmountIn({amountOut:e,initInput:t,initOutput:n}){let o=t.mul(e);return Jt(o,n)}};var nt=q(require("bn.js")),Ut=q(require("decimal.js"));var tr=q(require("bn.js")),Uo=q(require("decimal.js")),no=class{static _multipler(e){return new Uo.default(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new Uo.default(e.toString()).div(this._Q64).mul(this._multipler(t)).div(this._multipler(n))}static getPriceX64({price:e,decimalA:t,decimalB:n}){let o=e.mul(this._multipler(n)).div(this._multipler(t));return new tr.default(o.mul(this._Q64).toFixed(0))}};no._Q64=new Uo.default(new tr.default(1).shln(64).toString());var Go=class extends qt{static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n}){return new Ut.default(0)}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:o}){return new Ut.default(0)}static getPoolPrice({poolInfo:e,decimalA:t,decimalB:n}){return new Ut.default(e.virtualA.mul(e.realA).toString()).div(no._Q64).mul(10**(t-n))}static getPoolEndPrice({supply:e,totalSell:t,totalLockedAmount:n,totalFundRaising:o,migrateFee:i,decimalA:r,decimalB:a}){return new Ut.default(o.sub(i).toString()).div(e.sub(t).sub(n).toString()).mul(10**(r-a))}static getPoolEndPriceReal({poolInfo:e,decimalA:t,decimalB:n}){let o=e.totalSellA.sub(e.realA),i=e.totalFundRaisingB.sub(e.realB);return new Ut.default(e.virtualB.add(e.realB).add(i).toString()).div(e.virtualA.sub(e.realA).add(o).toString()).mul(10**(t-n))}static getInitParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:o,migrateFee:i}){let r=e.sub(o);if(r.lte(new nt.default(0)))throw Error("supplyMinusLocked need gt 0");let a=t.mul(new nt.default(3)).sub(i),u=t.mul(new nt.default(2)).mul(r).div(a),s=u.mul(u),f=t.mul(new nt.default(2)).mul(fe).div(s);if(!f.gt(new nt.default(0)))throw Error("a need gt 0");if(!It.gt(f))throw Error("a need lt u64 max");if(f.lt(new nt.default(0))||u.lt(new nt.default(0)))throw Error("invalid input 0");return{a:f,b:new nt.default(0),c:u}}static buyExactIn({poolInfo:e,amount:t}){let n=e.realB.add(t),o=new nt.default(2).mul(n).mul(fe).div(e.virtualA);return new nt.default(new Ut.default(o.toString()).sqrt().toFixed(0)).sub(e.realA)}static buyExactOut({poolInfo:e,amount:t}){let n=e.realA.add(t),o=n.mul(n);return Jt(e.virtualA.mul(o),new nt.default(2).mul(fe)).sub(e.realB)}static sellExactIn({poolInfo:e,amount:t}){let n=e.realA.sub(t),o=n.mul(n),i=Jt(e.virtualA.mul(o),new nt.default(2).mul(fe));return e.realB.sub(i)}static sellExactOut({poolInfo:e,amount:t}){let n=e.realB.sub(t),o=new nt.default(2).mul(n).mul(fe).div(e.virtualA),i=new nt.default(new Ut.default(o.toString()).sqrt().toFixed(0));return e.realA.sub(i)}};var xt=class{static getPoolCurvePointByPoolInfo({curveType:e,pointCount:t,poolInfo:n}){return this.getPoolCurvePointByInit({curveType:e,pointCount:t,supply:n.supply,totalFundRaising:n.totalFundRaisingB,totalSell:n.totalSellA,totalLockedAmount:n.vestingSchedule.totalLockedAmount,migrateFee:n.migrateFee,decimalA:n.mintDecimalsA,decimalB:n.mintDecimalsB})}static getPoolCurvePointByInit({curveType:e,pointCount:t,supply:n,totalFundRaising:o,totalSell:i,totalLockedAmount:r,migrateFee:a,decimalA:c,decimalB:u}){if(t<3)throw Error("point count < 3");let s=this.getCurve(e),f=s.getInitParam({supply:n,totalFundRaising:o,totalSell:i,totalLockedAmount:r,migrateFee:a}),m=s.getPoolInitPriceByInit(V(_({},f),{decimalA:c,decimalB:u})),p=o.div(new ot.default(t-1)),g=new ot.default(0),y=[{price:m,totalSellSupply:0}],{a:b,b:P}=f,w=g,h=g;for(let B=1;B<t;B++){let A=B!==t-1?p:o.sub(h),k=this.buyExactIn({poolInfo:{virtualA:b,virtualB:P,realA:w,realB:h,totalFundRaisingB:o,totalSellA:i},amountB:A,protocolFeeRate:g,platformFeeRate:g,curveType:e,shareFeeRate:g,creatorFeeRate:g,transferFeeConfigA:void 0,transferFeeConfigB:void 0,slot:0});w=w.add(k.amountA.amount),h=h.add(k.amountB);let T=this.getPrice({poolInfo:{virtualA:b,virtualB:P,realA:w,realB:h},decimalA:c,decimalB:u,curveType:e});y.push({price:T,totalSellSupply:new nr.default(w.toString()).div(10**c).toNumber()})}return y}static getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n,curveType:o}){return this.getCurve(o).getPoolInitPriceByPool({poolInfo:e,decimalA:t,decimalB:n})}static getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:o,curveType:i}){return this.getCurve(i).getPoolInitPriceByInit({a:e,b:t,decimalA:n,decimalB:o})}static getPrice({poolInfo:e,curveType:t,decimalA:n,decimalB:o}){return this.getCurve(t).getPoolPrice({poolInfo:e,decimalA:n,decimalB:o})}static getEndPrice({poolInfo:e,curveType:t,decimalA:n,decimalB:o}){return this.getCurve(t).getPoolPrice({poolInfo:e,decimalA:n,decimalB:o})}static getPoolEndPriceReal({poolInfo:e,curveType:t,decimalA:n,decimalB:o}){return this.getCurve(t).getPoolEndPriceReal({poolInfo:e,decimalA:n,decimalB:o})}static checkParam({supply:e,totalFundRaising:t,totalSell:n,totalLockedAmount:o,decimals:i,config:r,migrateType:a}){if(Number(i)!==6)throw Error("decimals = 6");if(e.mul(r.maxLockRate).div(qe).lt(o))throw Error("total lock amount gte max lock amount");if(e.lt(r.minSupplyA.mul(new ot.default(10**i))))throw Error("supply lt min supply");let u=e.mul(r.minSellRateA).div(qe);if(n.lt(u))throw Error("invalid input");if(t.lt(r.minFundRaisingB))throw Error("total fund raising lt min fund raising");let s=e.sub(n).sub(o),f=e.mul(r.minMigrateRateA).div(qe);if(s.lt(f))throw Error("migrate lt min migrate amoount");let m=e.sub(n).sub(o),p=new ot.default(new nr.default(m.mul(t).toString()).sqrt().toFixed(0));if(a==="amm"){let g=new ot.default(10).pow(new ot.default(i));if(p.lte(g))throw Error("check migrate lp error")}else if(a==="cpmm"){let g=new ot.default(100);if(p.lte(g))throw Error("check migrate lp error")}else throw Error("migrate type error")}static buyExactIn({poolInfo:e,amountB:t,protocolFeeRate:n,platformFeeRate:o,curveType:i,shareFeeRate:r,creatorFeeRate:a,transferFeeConfigA:c,transferFeeConfigB:u,slot:s}){var C;let f=Xn(t,u,s),m=t.sub((C=f.fee)!=null?C:new ot.default(0)),p=this.totalFeeRate({protocolFeeRate:n,platformFeeRate:o,shareFeeRate:r,creatorFeeRate:a}),g=this.calculateFee({amount:m,feeRate:p}),y=m.sub(g),b=this.getCurve(i),P=b.buyExactIn({poolInfo:e,amount:y}),w=e.totalSellA.sub(e.realA),h,B,A,k;if(P.gt(w)){h=w;let S=b.buyExactOut({poolInfo:e,amount:h}),x=this.calculatePreFee({postFeeAmount:S,feeRate:p});A=x.sub(S);let v=Pn(x,u,s);B=v.amount,k=v.fee}else h=P,B=t,A=g,k=f.fee;let T=this.splitFee({totalFee:A,protocolFeeRate:n,platformFeeRate:o,shareFeeRate:r,creatorFeeRate:a});return{amountA:Xn(h,c,s),amountB:B,splitFee:T,transferFeeB:k}}static buyExactOut({poolInfo:e,amountA:t,protocolFeeRate:n,platformFeeRate:o,curveType:i,shareFeeRate:r,creatorFeeRate:a,transferFeeConfigA:c,transferFeeConfigB:u,slot:s}){let f=e.totalSellA.sub(e.realA),m=Pn(t,c,s),p=m.fee?m.amount.add(m.fee):m.amount;t.gt(f)&&(p=f);let y=this.getCurve(i).buyExactOut({poolInfo:e,amount:p}),b=this.totalFeeRate({protocolFeeRate:n,platformFeeRate:o,shareFeeRate:r,creatorFeeRate:a}),P=this.calculatePreFee({postFeeAmount:y,feeRate:b}),w=P.sub(y),h=Pn(P,u,s),B=this.splitFee({totalFee:w,protocolFeeRate:n,platformFeeRate:o,shareFeeRate:r,creatorFeeRate:a});return{amountA:m,amountB:h.amount,splitFee:B,transferFeeB:h.fee}}static sellExactIn({poolInfo:e,amountA:t,protocolFeeRate:n,platformFeeRate:o,curveType:i,shareFeeRate:r,creatorFeeRate:a,transferFeeConfigA:c,transferFeeConfigB:u,slot:s}){var h;let f=this.getCurve(i),m=Xn(t,c,s),p=m.fee?m.amount.sub(m.fee):m.amount,g=f.sellExactIn({poolInfo:e,amount:p}),y=this.calculateFee({amount:g,feeRate:this.totalFeeRate({protocolFeeRate:n,platformFeeRate:o,shareFeeRate:r,creatorFeeRate:a})}),b=this.splitFee({totalFee:y,protocolFeeRate:n,platformFeeRate:o,shareFeeRate:r,creatorFeeRate:a}),P=g.sub(y),w=Xn(P,u,s);return{amountA:m,amountB:P.sub((h=w.fee)!=null?h:new ot.default(0)),splitFee:b,transferFeeB:w.fee}}static sellExactOut({poolInfo:e,amountB:t,protocolFeeRate:n,platformFeeRate:o,curveType:i,shareFeeRate:r,creatorFeeRate:a,transferFeeConfigA:c,transferFeeConfigB:u,slot:s}){let f=this.totalFeeRate({protocolFeeRate:n,platformFeeRate:o,shareFeeRate:r,creatorFeeRate:a}),m=Pn(t,u,s),p=m.amount,g=this.calculatePreFee({postFeeAmount:p,feeRate:f});if(e.realB.lt(g))throw Error("Insufficient liquidity");let y=g.sub(p),P=xt.getCurve(i).sellExactOut({poolInfo:e,amount:g});if(P.gt(e.realA))throw Error();let w=this.splitFee({totalFee:y,protocolFeeRate:n,platformFeeRate:o,shareFeeRate:r,creatorFeeRate:a});return{amountA:Pn(P,c,s),amountB:t,splitFee:w,transferFeeB:m.fee}}static splitFee({totalFee:e,protocolFeeRate:t,platformFeeRate:n,shareFeeRate:o,creatorFeeRate:i}){let r=this.totalFeeRate({protocolFeeRate:t,platformFeeRate:n,shareFeeRate:o,creatorFeeRate:i}),a=r.isZero()?new ot.default(0):e.mul(n).div(r),c=r.isZero()?new ot.default(0):e.mul(o).div(r),u=r.isZero()?new ot.default(0):e.mul(i).div(r),s=e.sub(a).sub(c).sub(u);return{platformFee:a,shareFee:c,protocolFee:s,creatorFee:u}}static calculateFee({amount:e,feeRate:t}){return Xi(e,t,qe)}static calculatePreFee({postFeeAmount:e,feeRate:t}){if(t.isZero())return e;let n=e.mul(qe),o=qe.sub(t);return n.add(o).sub(new ot.default(1)).div(o)}static totalFeeRate({protocolFeeRate:e,platformFeeRate:t,shareFeeRate:n,creatorFeeRate:o}){if(e.add(t).add(n).add(o).gt(new ot.default(1e6)))throw Error("total fee rate gt 1_000_000");return e.add(t).add(n).add(o)}static getCurve(e){switch(e){case 0:return Wo;case 1:return qo;case 2:return Go}throw Error("find curve error")}};var zo=require("@solana/spl-token");function Ic(l,e){return l>>e&1?zo.TOKEN_2022_PROGRAM_ID:zo.TOKEN_PROGRAM_ID}function Xo(l){return Ic(l,0)}var Bc=q(require("decimal.js")),fh={initPriceX64:new _e.default("515752397214619"),supply:new _e.default(1e15),totalSellA:new _e.default(7931e11),totalFundRaisingB:new _e.default(85e9),totalFundRaisingBUSD:new _e.default(125e8),totalLockedAmount:new _e.default("0"),cliffPeriod:new _e.default("0"),unlockPeriod:new _e.default("0"),decimals:6,virtualA:new _e.default("1073471847374405"),virtualB:new _e.default("30050573465"),realA:new _e.default(0),realB:new _e.default(0),protocolFee:new _e.default(0),platformId:new or.PublicKey("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new _e.default(0),cliffPeriod:new _e.default(0),unlockPeriod:new _e.default(0),startTime:new _e.default(0),totalAllocatedShare:new _e.default(0)}},yh=new _e.default(1e4);var xc=require("@solana/web3.js"),oo=require("@solana/spl-token");var Bn=require("@solana/spl-token"),Y=require("@solana/web3.js"),Ot=q(require("bn.js"));function Kc(l,e,t,n,o,i,r,a,c,u,s,f,m,p,g){var k;let y=[],b=[N({pubkey:Bn.TOKEN_PROGRAM_ID,isWritable:!1}),N({pubkey:Bn.TOKEN_2022_PROGRAM_ID,isWritable:!1}),N({pubkey:Bn.ASSOCIATED_TOKEN_PROGRAM_ID,isWritable:!1}),N({pubkey:Y.SystemProgram.programId,isWritable:!1}),N({pubkey:e,isSigner:!0})];b.push(N({pubkey:t})),b.push(N({pubkey:o}));let P=[c,u],w=[s,f],h=[i,r,a];for(let T=0;T<P.length;T++){let C=P[T],S=h[T]===C.mintA.address;if(b.push(N({pubkey:new Y.PublicKey(C.programId),isWritable:!1})),T===P.length-1?b.push(N({pubkey:o})):b.push(N({pubkey:n})),b.push(N({pubkey:new Y.PublicKey(h[T])})),b.push(N({pubkey:new Y.PublicKey(h[T+1])})),C.version===6){let x=w[T];b.push(N({pubkey:new Y.PublicKey(x.config.id)})),b.push(N({pubkey:new Y.PublicKey(x.id)})),b.push(N({pubkey:new Y.PublicKey(S?x.vault.A:x.vault.B)})),b.push(N({pubkey:new Y.PublicKey(S?x.vault.B:x.vault.A)})),b.push(N({pubkey:new Y.PublicKey(C.observationId)})),b.push(N({pubkey:St})),b.push(N({pubkey:Ke(new Y.PublicKey(C.programId),new Y.PublicKey(C.id)).publicKey})),y.push(Cc(C.sqrtPriceX64.toString(),S));for(let v of(k=g[T])!=null?k:[])b.push(N({pubkey:new Y.PublicKey(v)}))}else if(C.version===5){let x=w[T];b.push(N({pubkey:new Y.PublicKey(x.id)})),b.push(N({pubkey:new Y.PublicKey(x.authority),isWritable:!1})),b.push(N({pubkey:new Y.PublicKey(x.marketProgramId)})),b.push(N({pubkey:new Y.PublicKey(x.marketAuthority)})),b.push(N({pubkey:Hr,isWritable:!1})),b.push(N({pubkey:new Y.PublicKey(x.openOrders)})),b.push(N({pubkey:new Y.PublicKey(x.vault.A)})),b.push(N({pubkey:new Y.PublicKey(x.vault.B)})),b.push(N({pubkey:new Y.PublicKey(x.id)})),b.push(N({pubkey:new Y.PublicKey(x.id)})),b.push(N({pubkey:new Y.PublicKey(x.id)})),b.push(N({pubkey:new Y.PublicKey(x.id)})),b.push(N({pubkey:new Y.PublicKey(x.id)})),b.push(N({pubkey:new Y.PublicKey(x.id)})),b.push(N({pubkey:new Y.PublicKey(x.marketId)})),b.push(N({pubkey:new Y.PublicKey(x.marketBids)})),b.push(N({pubkey:new Y.PublicKey(x.marketAsks)})),b.push(N({pubkey:new Y.PublicKey(x.marketEventQueue)})),b.push(N({pubkey:new Y.PublicKey(x.marketBaseVault)})),b.push(N({pubkey:new Y.PublicKey(x.marketQuoteVault)}))}else if(C.version===4){let x=w[T],v=C.status!==1;b.push(N({pubkey:new Y.PublicKey(x.id)})),b.push(N({pubkey:new Y.PublicKey(x.authority),isWritable:!1})),b.push(N({pubkey:new Y.PublicKey(v?x.id:x.marketProgramId)})),b.push(N({pubkey:new Y.PublicKey(v?x.id:x.marketAuthority)})),b.push(N({pubkey:new Y.PublicKey(v?x.id:x.openOrders)})),b.push(N({pubkey:new Y.PublicKey(x.vault.A)})),b.push(N({pubkey:new Y.PublicKey(x.vault.B)})),b.push(N({pubkey:new Y.PublicKey(v?x.id:x.marketId)})),b.push(N({pubkey:new Y.PublicKey(v?x.id:x.marketBids)})),b.push(N({pubkey:new Y.PublicKey(v?x.id:x.marketAsks)})),b.push(N({pubkey:new Y.PublicKey(v?x.id:x.marketEventQueue)})),b.push(N({pubkey:new Y.PublicKey(v?x.id:x.marketBaseVault)})),b.push(N({pubkey:new Y.PublicKey(v?x.id:x.marketQuoteVault)}))}else if(C.version===7){let x=w[T];b.push(N({pubkey:new Y.PublicKey(x.authority)})),b.push(N({pubkey:new Y.PublicKey(x.config.id)})),b.push(N({pubkey:new Y.PublicKey(x.id)})),b.push(N({pubkey:new Y.PublicKey(S?x.vault.A:x.vault.B)})),b.push(N({pubkey:new Y.PublicKey(S?x.vault.B:x.vault.A)})),b.push(N({pubkey:new Y.PublicKey(C.observationId)}))}else throw Error("pool type error")}let B=L([M("insId"),d("amountIn"),d("amountOut"),E(Q(),y.length,"clmmPriceLimit")]),A=Buffer.alloc(B.span);return B.encode({insId:0,amountIn:m,amountOut:p,clmmPriceLimit:y},A),new Y.TransactionInstruction({keys:b,programId:l,data:A})}function Cc(l,e){if(l)if(e){let t=new Ot.default(l).div(new Ot.default(25));return t.gt(Qe.add(We))?t:Qe.add(We)}else{let t=new Ot.default(l).mul(new Ot.default(25));return t.lt(Ze.sub(We))?t:Ze.sub(We)}else return e?Qe.add(We):Ze.sub(We)}function _a({routeProgram:l,ownerInfo:e,inputMint:t,swapInfo:n}){var o,i,r,a,c,u,s,f,m;if(n.routeType==="amm")if(n.poolInfo[0].version===6){let p=n.poolKey[0],g=Lt(p),y=t.equals(g.mintA.address)?Qe.add(We):Ze.sub(We);return ft.makeSwapBaseInInstructions({poolInfo:p,poolKeys:p,observationId:n.poolInfo[0].observationId,ownerInfo:{wallet:e.wallet,tokenAccountA:g.mintA.address.equals(t)?e.sourceToken:e.destinationToken,tokenAccountB:g.mintA.address.equals(t)?e.destinationToken:e.sourceToken},inputMint:t,amountIn:n.amountIn.amount.raw,amountOutMin:n.minAmountOut.amount.raw.sub((i=(o=n.minAmountOut.fee)==null?void 0:o.raw)!=null?i:new Ot.default(0)),sqrtPriceLimitX64:y,remainingAccounts:(r=n.remainingAccounts[0])!=null?r:[]})}else if(n.poolInfo[0].version===7){let p=n.poolInfo[0],g=t.toString()===n.poolInfo[0].mintA.address;return{signers:[],instructions:[Zn(p.programId,e.wallet,p.authority,p.configId,p.id,e.sourceToken,e.destinationToken,g?p.vaultA:p.vaultB,g?p.vaultB:p.vaultA,g?p.mintProgramA:p.mintProgramB,g?p.mintProgramB:p.mintProgramA,new Y.PublicKey(p[g?"mintA":"mintB"].address),new Y.PublicKey(p[g?"mintB":"mintA"].address),p.observationId,n.amountIn.amount.raw,n.minAmountOut.amount.raw)],lookupTableAddress:[],instructionTypes:[g?ee.CpmmSwapBaseIn:ee.CpmmSwapBaseOut],address:{}}}else{let p=n.poolKey[0];return{signers:[],instructions:[n.poolInfo[0].pooltype.includes("StablePool")?Ui({poolKeys:p,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((c=(a=n.minAmountOut.fee)==null?void 0:a.raw)!=null?c:new Ot.default(0)),fixedSide:"in"}):qi({poolKeys:p,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=(u=n.minAmountOut.fee)==null?void 0:u.raw)!=null?s:new Ot.default(0)),fixedSide:"in"})],lookupTableAddress:p.lookupTableAccount?[p.lookupTableAccount]:[],instructionTypes:[n.poolInfo[0].pooltype.includes("StablePool")?ee.AmmV5SwapBaseIn:ee.AmmV4SwapBaseIn],address:{}}}else if(n.routeType==="route"){let p=n.poolInfo[0],g=n.poolInfo[1],y=n.poolKey[0],b=n.poolKey[1];if(e.routeToken===void 0)throw Error("owner route token account check error");return{signers:[],instructions:[Kc(l,e.wallet,e.sourceToken,e.routeToken,e.destinationToken,t.toString(),n.middleToken.mint.toString(),n.outputMint.toString(),p,g,y,b,n.amountIn.amount.raw,n.minAmountOut.amount.raw.sub((m=(f=n.minAmountOut.fee)==null?void 0:f.raw)!=null?m:new Ot.default(0)),n.remainingAccounts)],instructionTypes:[ee.RouteSwap],lookupTableAddress:[y.lookupTableAccount,b.lookupTableAccount].filter(P=>P!==void 0),address:{}}}else throw Error("route type error")}var Va={[Ti.toBase58()]:3},Ea={3:Ti};var ir=L([ne(5),ne(8),I("ownAddress"),d("vaultSignerNonce"),I("baseMint"),I("quoteMint"),I("baseVault"),d("baseDepositsTotal"),d("baseFeesAccrued"),I("quoteVault"),d("quoteDepositsTotal"),d("quoteFeesAccrued"),d("quoteDustThreshold"),I("requestQueue"),I("eventQueue"),I("bids"),I("asks"),d("baseLotSize"),d("quoteLotSize"),d("feeRateBps"),d("referrerRebatesAccrued"),ne(7)]),Da={3:ir};var rr=require("@solana/web3.js");var Yo=re("Serum"),Ho=class{static getProgramId(e){let t=Ea[e];return t||Yo.logWithError("invalid version","version",e),t}static getVersion(e){let t=e.toBase58(),n=Va[t];return n||Yo.logWithError("invalid program id","programId",t),n}static getStateLayout(e){let t=Da[e];return t||Yo.logWithError(!!t,"invalid version","version",e),t}static getLayouts(e){return{state:this.getStateLayout(e)}}static getAssociatedAuthority({programId:e,marketId:t}){let n=[t.toBuffer()],o=0,i;for(;o<100;){try{let r=n.concat(Buffer.from([o]),Buffer.alloc(7));i=rr.PublicKey.createProgramAddressSync(r,e)}catch(r){if(r instanceof TypeError)throw r;o++;continue}return{publicKey:i,nonce:o}}return Yo.logWithError("unable to find a viable program address nonce","params",{programId:e,marketId:t}),{publicKey:rr.PublicKey.default,nonce:o}}};var vB=new Nt.default(2),_B=new Nt.default(3),VB=new Nt.default(5),ni=new Nt.default(10),EB=new Nt.default(100),DB=new Nt.default(1e3),WB=new Nt.default(1e4);function ui(l){return ni.pow(ke(l))}function Xi(l,e,t){return l.mul(e).add(t).sub(new Nt.default(1)).div(t)}function Jo(l,e=1,t=[]){let n=[...l];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var Xe=new te.default(0);function Mt(l,e){var n,o,i,r,a;let t=(n=l.extensions)==null?void 0:n.feeConfig;if(!!t)return{transferFeeConfigAuthority:H.PublicKey.default,withdrawWithheldAuthority:H.PublicKey.default,withheldAmount:BigInt(0),olderTransferFee:{epoch:BigInt((i=(o=t.olderTransferFee.epoch)!=null?o:e)!=null?i:0),maximumFee:BigInt(t.olderTransferFee.maximumFee),transferFeeBasisPoints:t.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt((a=(r=t.newerTransferFee.epoch)!=null?r:e)!=null?a:0),maximumFee:BigInt(t.newerTransferFee.maximumFee),transferFeeBasisPoints:t.newerTransferFee.transferFeeBasisPoints}}}function Qo(l){return l.programId?new H.PublicKey(l.programId):J.TOKEN_PROGRAM_ID}var io=class extends et{constructor(e){super(e)}async getWSolAccounts(){this.scope.checkOwner(),await this.scope.account.fetchWalletTokenAccounts();let e=this.scope.account.tokenAccounts.filter(t=>t.mint.equals(Te));return e.sort((t,n)=>t.isAssociated?1:n.isAssociated||t.amount.lt(n.amount)?-1:1),e}async unWrapWSol(e){let{amount:t,tokenProgram:n,txVersion:o=1,feePayer:i}=e,r=await this.getWSolAccounts(),a=this.createTxBuilder(i);a.addCustomComputeBudget(e.computeBudgetConfig);let c=ke(t);for(let u=0;u<r.length;u++)c.gte(r[u].amount)?(a.addInstruction({instructions:[dn({tokenAccount:r[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]}),c.sub(r[u].amount)):a.addInstruction({instructions:[dn({tokenAccount:r[u].publicKey,payer:this.scope.ownerPubKey,owner:this.scope.ownerPubKey,programId:n})]});return a.versionBuild({txVersion:o})}async wrapWSol(e,t,n,o){let i=this.createTxBuilder(o),r=await Io({connection:this.scope.connection,owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,amount:e,skipCloseAccount:!0});return i.addInstruction(r),i.versionBuild({txVersion:n!=null?n:1})}async swap({swapInfo:e,swapPoolKeys:t,ownerInfo:n,computeBudgetConfig:o,routeProgram:i,txVersion:r,feePayer:a}){let c=this.createTxBuilder(a),u=e.amountIn,s=e.amountOut,f=u.amount.token.mint.equals(Te),m=s.amount.token.mint.equals(Te),p=u.amount.token.mint,g=s.amount.token.mint,{account:y,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:u.amount.token.isToken2022?J.TOKEN_2022_PROGRAM_ID:J.TOKEN_PROGRAM_ID,mint:p,notUseTokenAccount:f,owner:this.scope.ownerPubKey,skipCloseAccount:!f,createInfo:f?{payer:this.scope.ownerPubKey,amount:u.amount.raw}:void 0,associatedOnly:f?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});if(b&&c.addInstruction(b),y===void 0)throw Error("input account check error");let P;if(e.routeType==="route"&&!m)P=this.scope.account.getAssociatedTokenAccount(g,s.amount.token.isToken2022?J.TOKEN_2022_PROGRAM_ID:J.TOKEN_PROGRAM_ID);else{let{account:A,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:s.amount.token.isToken2022?J.TOKEN_2022_PROGRAM_ID:J.TOKEN_PROGRAM_ID,mint:g,notUseTokenAccount:m,owner:this.scope.ownerPubKey,skipCloseAccount:!0,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:m?!1:n.associatedOnly,checkCreateATAOwner:n.checkCreateATAOwner});P=A,k&&c.addInstruction(k)}m&&c.addInstruction({endInstructions:[dn({owner:this.scope.ownerPubKey,payer:this.scope.ownerPubKey,tokenAccount:P,programId:J.TOKEN_PROGRAM_ID})],endInstructionTypes:[ee.CloseAccount]});let w;if(e.routeType==="route"){let A=e.middleToken;w=this.scope.account.getAssociatedTokenAccount(A.mint,A.isToken2022?J.TOKEN_2022_PROGRAM_ID:J.TOKEN_PROGRAM_ID)}let h=t||await this.computePoolToPoolKeys({pools:e.poolInfoList}),B=_a({routeProgram:i,inputMint:p,swapInfo:V(_({},e),{poolInfo:[...e.poolInfoList],poolKey:h,outputMint:g}),ownerInfo:{wallet:this.scope.ownerPubKey,sourceToken:y,routeToken:w,destinationToken:P}});if(e.feeConfig!==void 0){let A=this.createTxBuilder(),k=u.amount.token.isToken2022?(0,J.createTransferCheckedInstruction)(y,u.amount.token.mint,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber(),u.amount.token.decimals,[],J.TOKEN_2022_PROGRAM_ID):(0,J.createTransferInstruction)(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber());A.addInstruction({instructions:[k],instructionTypes:[ee.TransferAmount]}),A.addInstruction(B);let{transactions:T}=r===0?await A.sizeCheckBuildV0():await A.sizeCheckBuild();T.length<2&&c.addInstruction({instructions:[(0,J.createTransferInstruction)(y,e.feeConfig.feeAccount,this.scope.ownerPubKey,e.feeConfig.feeAmount.toNumber())],instructionTypes:[ee.TransferAmount]})}return c.addInstruction(B),r===0?c.sizeCheckBuildV0({computeBudgetConfig:o,address:B.address}):c.sizeCheckBuild({computeBudgetConfig:o,address:B.address})}async swapClmmToLaunchMint({inputMint:e,inputAmount:t,fixClmmOut:n=!1,clmmPoolId:o,launchPoolId:i,priceLimit:r,slippage:a=.01,shareFeeRate:c=new te.default(0),shareFeeReceiver:u,launchPlatformInfo:s,slot:f,mintInfo:m,epochInfo:p,ownerInfo:g={useSOLBalance:!0},checkCreateATAOwner:y=!1,computeBudgetConfig:b,txVersion:P,blockTimestamp:w}){let h=(g==null?void 0:g.feePayer)||this.scope.ownerPubKey,B=p!=null?p:await this.scope.fetchEpochInfo(),{clmmPoolData:A,clmmComputeAmount:{maxClmmAmountIn:k,clmmAmountOut:T,remainingAccounts:C},launchPoolInfo:S,launchAuthProgramId:x,launchSwapInfo:v,launchMintProgramB:F,outAmount:O,minOutAmount:W}=await this.computeClmmToLaunchAmount({inputMint:e,inputAmount:t,fixClmmOut:n,clmmPoolId:o,launchPoolId:i,slippage:a,epochInfo:B,shareFeeRate:c,launchPlatformInfo:s,slot:f,mintInfo:m,blockTimestamp:w}),D=e.toString()===A.poolInfo.mintA.address,Z=g.useSOLBalance&&A.poolInfo.mintA.address===Te.toBase58(),G=g.useSOLBalance&&A.poolInfo.mintB.address===Te.toBase58(),se={},Ae;!r||r.equals(new le.default(0))?Ae=D?Qe.add(new te.default(1)):Ze.sub(new te.default(1)):Ae=$.priceToSqrtPriceX64(r,A.poolInfo.mintA.decimals,A.poolInfo.mintB.decimals);let ge=this.createTxBuilder(h),[Ie,ye]=[new H.PublicKey(A.poolInfo.mintA.address),new H.PublicKey(A.poolInfo.mintB.address)],[ie,Ve]=[new H.PublicKey(A.poolInfo.mintA.programId),new H.PublicKey(A.poolInfo.mintB.programId)],De=this.scope.account.getAssociatedTokenAccount(Ie,ie),Ye=this.scope.account.getAssociatedTokenAccount(ye,Ve);ge.addInstruction({instructions:[(0,J.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,De,this.scope.ownerPubKey,Ie,ie),(0,J.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,Ye,this.scope.ownerPubKey,ye,Ve)]}),(D&&Z||!D&&G)&&ge.addInstruction({instructions:[H.SystemProgram.transfer({fromPubkey:this.scope.ownerPubKey,toPubkey:D?De:Ye,lamports:BigInt(k.toString())}),(0,J.createSyncNativeInstruction)(D?De:Ye)]}),se[A.poolInfo.mintA.address]=De,se[A.poolInfo.mintB.address]=Ye,(!De||!Ye)&&this.logAndCreateError("user do not have token account",{ownerTokenAccountA:De,ownerTokenAccountB:Ye}),ge.addInstruction(n?ft.makeSwapBaseOutInstructions({poolInfo:A.poolInfo,poolKeys:A.poolKeys,observationId:A.computePoolInfo.observationId,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:De,tokenAccountB:Ye},outputMint:D?ye:Ie,amountOut:T,amountInMax:k,sqrtPriceLimitX64:Ae,remainingAccounts:C}):ft.makeSwapBaseInInstructions({poolInfo:A.poolInfo,poolKeys:A.poolKeys,observationId:A.computePoolInfo.observationId,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:De,tokenAccountB:Ye},inputMint:new H.PublicKey(e),amountIn:t,amountOutMin:T,sqrtPriceLimitX64:Ae,remainingAccounts:C}));let Gt=Xo(S.mintProgramFlag),tn=this.scope.account.getAssociatedTokenAccount(S.mintA,Gt),xn=se[S.mintB.toBase58()];if(ge.addInstruction({instructions:[(0,J.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,tn,this.scope.ownerPubKey,S.mintA,Gt)]}),!xn){let nn=S.mintB.equals(Te),{account:Wa,instructionParams:ar}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:F,mint:S.mintB,notUseTokenAccount:nn,owner:this.scope.ownerPubKey,skipCloseAccount:!nn,createInfo:nn?{payer:this.scope.ownerPubKey,amount:T}:void 0,associatedOnly:!1,checkCreateATAOwner:y});xn=Wa,ar&&ge.addInstruction(ar)}return ge.addInstruction({instructions:[Do(S.programId,this.scope.ownerPubKey,x,S.configId,S.platformId,new H.PublicKey(i),tn,xn,S.vaultA,S.vaultB,S.mintA,S.mintB,Gt,F,$n(S.programId,S.platformId,S.mintB).publicKey,Jn(S.programId,S.creator,S.mintB).publicKey,v.amountB.lt(T)?v.amountB:T,W,c,u)]}),ge.addCustomComputeBudget(b),ge.versionBuild({txVersion:P,extInfo:{routes:[{mint:new H.PublicKey(e),amount:n?k:t,decimal:A.poolInfo[D?"mintA":"mintB"].decimals},{mint:D?ye:Ie,amount:T,decimal:A.poolInfo[D?"mintB":"mintA"].decimals},{mint:S.mintA,amount:O,decimal:S.mintDecimalsA}],outAmount:O,minOutAmount:W}})}async computeClmmToLaunchAmount({inputMint:e,inputAmount:t,fixClmmOut:n=!1,clmmPoolId:o,launchPoolId:i,slippage:r,epochInfo:a,shareFeeRate:c=new te.default(0),clmmPoolData:u,launchPoolInfo:s,launchPlatformInfo:f,slot:m,mintInfo:p,blockTimestamp:g}){var G,se;let y=r>0?new le.default(r).div(2).toDecimalPlaces(4,le.default.ROUND_DOWN).toNumber():r,b=u!=null?u:await this.scope.clmm.getPoolInfoFromRpc(o.toString());if(e.toString()!==b.poolInfo.mintA.address&&e.toString()!==b.poolInfo.mintB.address)throw new Error("input mint does not match clmm pool mints, please check");let P=e.toString()===b.poolInfo.mintA.address,w=b.poolInfo[P?"mintB":"mintA"],h=s;if(h||(h=await this.scope.launchpad.getRpcPoolInfo({poolId:new H.PublicKey(i)})),w.address!==h.mintB.toBase58())throw new Error(`clmm swap mint(${w.address}) != launch pool mintB(${h.mintB.toBase58()})`);let B=n?await je.computeAmountIn({poolInfo:b.computePoolInfo,tickarrayBitmapExtension:b.computePoolInfo.exBitmapInfo,tickArrayCache:b.tickData[o.toString()],amountOut:t,baseMint:new H.PublicKey(b.poolInfo[P?"mintB":"mintA"].address),slippage:y,epochInfo:a!=null?a:await this.scope.fetchEpochInfo(),blockTimestamp:g}):await je.computeAmountOutFormat({poolInfo:b.computePoolInfo,tickarrayBitmapExtension:b.computePoolInfo.exBitmapInfo,tickArrayCache:b.tickData[o.toString()],amountIn:t,tokenOut:w,slippage:y,epochInfo:a!=null?a:await this.scope.fetchEpochInfo(),blockTimestamp:g}),A=f;if(!A){let Ae=await this.scope.connection.getAccountInfo(h.platformId);A=kn.decode(Ae.data)}let k=p!=null?p:await this.scope.token.getTokenInfo(h.mintA),T=wn(h.programId).publicKey,C=Mt(k,a==null?void 0:a.epoch),S=Qo(w),x=Mt(w,a==null?void 0:a.epoch),v=n?t:B.minAmountOut.amount.raw,F=xt.buyExactIn({poolInfo:h,amountB:v,protocolFeeRate:h.configInfo.tradeFeeRate,platformFeeRate:A.feeRate,curveType:h.configInfo.curveType,shareFeeRate:c,creatorFeeRate:A.creatorFeeRate,transferFeeConfigA:C,transferFeeConfigB:x,slot:m!=null?m:await this.scope.connection.getSlot()}),O=F.amountA.amount.sub((G=F.amountA.fee)!=null?G:new te.default(0)),W=new le.default(O.toString()),D=new te.default(1e4),Z=y?new le.default(D.sub(new te.default(y*1e4)).toNumber()/D.toNumber()).clampedTo(0,1):new le.default(1);return{clmmPoolData:b,clmmComputeAmount:{maxClmmAmountIn:n?B.maxAmountIn.amount:t,clmmAmountOut:v,remainingAccounts:B.remainingAccounts},clmmComputeInfo:B,launchPoolInfo:h,launchAuthProgramId:T,launchMintTransferFeeConfig:C,launchMintProgramB:S,launchMintTransferFeeConfigB:x,launchSwapInfo:F,outAmount:F.amountA.amount.sub((se=F.amountA.fee)!=null?se:new te.default(0)),minOutAmount:new te.default(W.mul(Z).toFixed(0))}}async swapLaunchMintToClmm({inputAmount:e,clmmPoolId:t,launchPoolId:n,priceLimit:o,slippage:i=.01,shareFeeRate:r=new te.default(0),shareFeeReceiver:a,ownerInfo:c={useSOLBalance:!0},checkCreateATAOwner:u=!1,computeBudgetConfig:s,txVersion:f,blockTimestamp:m}){let p=(c==null?void 0:c.feePayer)||this.scope.ownerPubKey,g=await this.scope.fetchEpochInfo(),{clmmPoolData:y,clmmComputeAmount:{remainingAccounts:b},launchPoolInfo:P,launchAuthProgramId:w,launchSwapInfo:h,launchMintProgramB:B,minLaunchOutAmount:A,outAmount:k,minOutAmount:T}=await this.computeLaunchToClmmAmount({inputAmount:e,clmmPoolId:t,launchPoolId:n,slippage:i,epochInfo:g,shareFeeRate:r,blockTimestamp:m}),C=this.createTxBuilder(p),S={},x=Xo(P.mintProgramFlag),{account:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:x,mint:P.mintA,notUseTokenAccount:!1,owner:this.scope.ownerPubKey,skipCloseAccount:!0,createInfo:void 0,associatedOnly:!0,checkCreateATAOwner:u});if(!v)throw new Error(`do not have launch mint(${P.mintA.toString()}) token account`);let F=P.mintB.equals(Te),{account:O,instructionParams:W}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:B,mint:P.mintB,notUseTokenAccount:F,owner:this.scope.ownerPubKey,skipCloseAccount:!F,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:!1,checkCreateATAOwner:u});if(W&&C.addInstruction(W),!O)throw new Error(`do not have launch mint(${P.mintA.toString()}) token account`);S[P.mintB.toBase58()]=O,C.addInstruction({instructions:[er(P.programId,this.scope.ownerPubKey,w,P.configId,P.platformId,new H.PublicKey(n),v,O,P.vaultA,P.vaultB,P.mintA,P.mintB,x,B,$n(P.programId,P.platformId,P.mintB).publicKey,Jn(P.programId,P.creator,P.mintB).publicKey,h.amountA.amount.lt(e)?h.amountA.amount:e,A,r,a)]});let D=P.mintB.toString()===y.poolInfo.mintA.address,Z=c.useSOLBalance&&y.poolInfo.mintA.address===Te.toBase58(),G=c.useSOLBalance&&y.poolInfo.mintB.address===Te.toBase58(),se;!o||o.equals(new le.default(0))?se=D?Qe.add(new te.default(1)):Ze.sub(new te.default(1)):se=$.priceToSqrtPriceX64(o,y.poolInfo.mintA.decimals,y.poolInfo.mintB.decimals);let[Ae,ge]=[new H.PublicKey(y.poolInfo.mintA.address),new H.PublicKey(y.poolInfo.mintB.address)],[Ie,ye]=[new H.PublicKey(y.poolInfo.mintA.programId),new H.PublicKey(y.poolInfo.mintB.programId)],ie=Z?void 0:this.scope.account.getAssociatedTokenAccount(Ae,Ie),Ve=G?void 0:this.scope.account.getAssociatedTokenAccount(ge,ye);if(!ie){let{account:De,instructionParams:Ye}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:Ie,mint:Ae,notUseTokenAccount:!0,owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:c.feePayer||this.scope.ownerPubKey,amount:D?e:0},associatedOnly:!1,checkCreateATAOwner:u});ie=De,Ye&&C.addInstruction(Ye)}if(!Ve){let{account:De,instructionParams:Ye}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:ye,mint:ge,notUseTokenAccount:!0,owner:this.scope.ownerPubKey,skipCloseAccount:!1,createInfo:{payer:c.feePayer||this.scope.ownerPubKey,amount:D?0:e},associatedOnly:!1,checkCreateATAOwner:u});Ve=De,Ye&&C.addInstruction(Ye)}return S[y.poolInfo.mintA.address]=ie,S[y.poolInfo.mintB.address]=Ve,(!ie||!Ve)&&this.logAndCreateError("user do not have token account",{ownerTokenAccountA:ie,ownerTokenAccountB:Ve}),C.addInstruction(ft.makeSwapBaseInInstructions({poolInfo:y.poolInfo,poolKeys:y.poolKeys,observationId:y.computePoolInfo.observationId,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:ie,tokenAccountB:Ve},inputMint:new H.PublicKey(y.poolKeys[D?"mintA":"mintB"].address),amountIn:A,amountOutMin:T,sqrtPriceLimitX64:se,remainingAccounts:b})),C.addCustomComputeBudget(s),C.versionBuild({txVersion:f,extInfo:{routes:[{mint:P.mintA,amount:e,decimal:P.mintDecimalsA},{mint:P.mintB,amount:A,decimal:P.mintDecimalsB},{mint:new H.PublicKey(y.poolKeys[D?"mintB":"mintA"].address),amount:k,decimal:y.poolKeys[D?"mintB":"mintA"].decimals}],outAmount:k,minOutAmount:T}})}async computeLaunchToClmmAmount({inputAmount:e,clmmPoolId:t,launchPoolId:n,slippage:o,epochInfo:i,shareFeeRate:r=new te.default(0),clmmPoolData:a,launchPoolInfo:c,launchPlatformInfo:u,blockTimestamp:s}){let f=o>0?new le.default(o).div(2).toDecimalPlaces(4,le.default.ROUND_DOWN).toNumber():o,m=c;m||(m=await this.scope.launchpad.getRpcPoolInfo({poolId:new H.PublicKey(n)}));let p=m.mintB,g=a!=null?a:await this.scope.clmm.getPoolInfoFromRpc(t.toString());if(p.toString()!==g.poolInfo.mintA.address&&p.toString()!==g.poolInfo.mintB.address)throw new Error("input mint does not match clmm pool mints, please check");let y=p.toString()===g.poolInfo.mintA.address,b=g.poolInfo[y?"mintB":"mintA"],P=g.poolInfo[y?"mintA":"mintB"],w=u;if(!w){let D=await this.scope.connection.getAccountInfo(m.platformId);w=kn.decode(D.data)}let h=await this.scope.token.getTokenInfo(m.mintA),B=wn(m.programId).publicKey,A=Mt(h,i==null?void 0:i.epoch),k=Qo(P),T=Mt(P,i==null?void 0:i.epoch),C=xt.sellExactIn({poolInfo:m,amountA:e,protocolFeeRate:m.configInfo.tradeFeeRate,platformFeeRate:w.feeRate,curveType:m.configInfo.curveType,shareFeeRate:r,creatorFeeRate:w.creatorFeeRate,transferFeeConfigA:A,transferFeeConfigB:T,slot:await this.scope.connection.getSlot()}),S=C.amountB,x=new le.default(S.toString()),v=new te.default(1e4),F=f?new le.default(v.sub(new te.default(f*1e4)).toNumber()/v.toNumber()).clampedTo(0,1):new le.default(1),O=new te.default(x.mul(F).toFixed(0)),W=await je.computeAmountOutFormat({poolInfo:g.computePoolInfo,tickarrayBitmapExtension:g.computePoolInfo.exBitmapInfo,tickArrayCache:g.tickData[t.toString()],amountIn:O,tokenOut:b,slippage:f,epochInfo:i!=null?i:await this.scope.fetchEpochInfo(),blockTimestamp:s});return{clmmPoolData:g,clmmComputeAmount:W,launchPoolInfo:m,launchAuthProgramId:B,launchMintTransferFeeConfig:A,launchMintProgramB:k,launchMintTransferFeeConfigB:T,launchSwapInfo:C,minLaunchOutAmount:O,outAmount:W.amountOut.amount.raw,minOutAmount:W.minAmountOut.amount.raw}}async swapCpmmToLaunchMint({inputMint:e,inputAmount:t,cpmmPoolId:n,launchPoolId:o,poolKeys:i,slippage:r=.01,shareFeeRate:a=new te.default(0),shareFeeReceiver:c,launchPlatformInfo:u,slot:s,mintInfo:f,epochInfo:m,ownerInfo:p={useSOLBalance:!0},checkCreateATAOwner:g=!1,computeBudgetConfig:y,txVersion:b}){let P=(p==null?void 0:p.feePayer)||this.scope.ownerPubKey,w=m!=null?m:await this.scope.fetchEpochInfo(),{computePoolInfo:h,poolKeys:B}=await this.scope.cpmm.getPoolInfoFromRpc(n.toString()),{cpmmComputInfo:A,cpmmPoolData:k,launchPoolInfo:T,launchAuthProgramId:C,launchSwapInfo:S,launchMintProgramB:x,outAmount:v,minOutAmount:F}=await this.computeCpmmToLaunchAmount({inputMint:e,inputAmount:t,cpmmPoolId:n,cpmmPoolData:h,launchPoolId:o,slippage:r,epochInfo:w,shareFeeRate:a,launchPlatformInfo:u,slot:s,mintInfo:f}),O=e.toString()===k.mintA.address,W=p.useSOLBalance&&k.mintA.address===Te.toBase58(),D=p.useSOLBalance&&k.mintB.address===Te.toBase58(),Z={},G=this.createTxBuilder(P),[se,Ae]=[new H.PublicKey(k.mintA.address),new H.PublicKey(k.mintB.address)],[ge,Ie]=[new H.PublicKey(k.mintA.programId),new H.PublicKey(k.mintB.programId)],ye=this.scope.account.getAssociatedTokenAccount(se,ge),ie=this.scope.account.getAssociatedTokenAccount(Ae,Ie);G.addInstruction({instructions:[(0,J.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,ye,this.scope.ownerPubKey,se,ge),(0,J.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,ie,this.scope.ownerPubKey,Ae,Ie)]}),(O&&W||!O&&D)&&G.addInstruction({instructions:[H.SystemProgram.transfer({fromPubkey:this.scope.ownerPubKey,toPubkey:O?ye:ie,lamports:BigInt(A.amountIn.toString())}),(0,J.createSyncNativeInstruction)(O?ye:ie)]}),Z[k.mintA.address]=ye,Z[k.mintB.address]=ie,(!ye||!ie)&&this.logAndCreateError("user do not have token account",{ownerTokenAccountA:ye,ownerTokenAccountB:ie});let Ve=i!=null?i:B;G.addInstruction({instructions:[Zn(k.programId,this.scope.ownerPubKey,new H.PublicKey(Ve.authority),new H.PublicKey(Ve.config.id),k.id,O?ye:ie,O?ie:ye,new H.PublicKey(Ve.vault[O?"A":"B"]),new H.PublicKey(Ve.vault[O?"B":"A"]),new H.PublicKey(O?ge:Ie!=null?Ie:J.TOKEN_PROGRAM_ID),new H.PublicKey(O?Ie:ge!=null?ge:J.TOKEN_PROGRAM_ID),O?se:Ae,O?Ae:se,Hi(k.programId,k.id).publicKey,t,A.swapResult.outputAmount)]});let De=Xo(T.mintProgramFlag),Ye=this.scope.account.getAssociatedTokenAccount(T.mintA,De),Gt=Z[T.mintB.toBase58()];if(G.addInstruction({instructions:[(0,J.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,Ye,this.scope.ownerPubKey,T.mintA,De)]}),!Gt){let tn=T.mintB.equals(Te),{account:xn,instructionParams:nn}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:x,mint:T.mintB,notUseTokenAccount:tn,owner:this.scope.ownerPubKey,skipCloseAccount:!tn,createInfo:tn?{payer:this.scope.ownerPubKey,amount:A.minAmountOut}:void 0,associatedOnly:!1,checkCreateATAOwner:g});Gt=xn,nn&&G.addInstruction(nn)}return G.addInstruction({instructions:[Do(T.programId,this.scope.ownerPubKey,C,T.configId,T.platformId,new H.PublicKey(o),Ye,Gt,T.vaultA,T.vaultB,T.mintA,T.mintB,De,x,$n(T.programId,T.platformId,T.mintB).publicKey,Jn(T.programId,T.creator,T.mintB).publicKey,S.amountB.lt(A.minAmountOut)?S.amountB:A.minAmountOut,F,a,c)]}),G.addCustomComputeBudget(y),G.versionBuild({txVersion:b,extInfo:{routes:[{mint:new H.PublicKey(e),amount:t,decimal:k[O?"mintDecimalA":"mintDecimalB"]},{mint:O?Ae:se,amount:A.minAmountOut,decimal:k[O?"mintB":"mintA"].decimals},{mint:T.mintA,amount:v,decimal:T.mintDecimalsA}],outAmount:v,minOutAmount:F}})}async computeCpmmToLaunchAmount({inputMint:e,inputAmount:t,cpmmPoolId:n,launchPoolId:o,slippage:i,epochInfo:r,shareFeeRate:a=new te.default(0),cpmmPoolData:c,launchPoolInfo:u,launchPlatformInfo:s,slot:f,mintInfo:m}){var D,Z;let p=i>0?new le.default(i).div(2).toDecimalPlaces(4,le.default.ROUND_DOWN).toNumber():i,g=c!=null?c:(await this.scope.cpmm.getPoolInfoFromRpc(n.toString())).computePoolInfo;if(e.toString()!==g.mintA.address&&e.toString()!==g.mintB.address)throw new Error("input mint does not match clmm pool mints, please check");let y=e.toString()===g.mintA.address,b=g[y?"mintB":"mintA"],P=u;if(P||(P=await this.scope.launchpad.getRpcPoolInfo({poolId:new H.PublicKey(o)})),b.address!==P.mintB.toBase58())throw new Error(`clmm swap mint(${b.address}) != launch pool mintB(${P.mintB.toBase58()})`);let w=s;if(!w){let G=await this.scope.connection.getAccountInfo(P.platformId);w=kn.decode(G.data)}let h=m!=null?m:await this.scope.token.getTokenInfo(P.mintA),B=wn(P.programId).publicKey,A=Mt(h,r==null?void 0:r.epoch),k=Qo(b),T=Mt(b,r==null?void 0:r.epoch),C=await this.scope.cpmm.computeSwapAmount({pool:g,amountIn:t,outputMint:new H.PublicKey(b.address),slippage:p}),S=C.minAmountOut,x=xt.buyExactIn({poolInfo:P,amountB:S,protocolFeeRate:P.configInfo.tradeFeeRate,platformFeeRate:w.feeRate,curveType:P.configInfo.curveType,shareFeeRate:a,creatorFeeRate:w.creatorFeeRate,transferFeeConfigA:A,transferFeeConfigB:T,slot:f!=null?f:await this.scope.connection.getSlot()}),v=x.amountA.amount.sub((D=x.amountA.fee)!=null?D:new te.default(0)),F=new le.default(v.toString()),O=new te.default(1e4),W=p?new le.default(O.sub(new te.default(p*1e4)).toNumber()/O.toNumber()).clampedTo(0,1):new le.default(1);return{cpmmPoolData:g,cpmmComputInfo:C,launchPoolInfo:P,launchAuthProgramId:B,launchMintTransferFeeConfig:A,launchMintProgramB:k,launchMintTransferFeeConfigB:T,launchSwapInfo:x,outAmount:x.amountA.amount.sub((Z=x.amountA.fee)!=null?Z:new te.default(0)),minOutAmount:new te.default(F.mul(W).toFixed(0))}}async computeCpClToLaunchAmount({inputMint:e,inputAmount:t,clmmPoolId:n,cpmmPoolId:o,launchPoolId:i,slippage:r,epochInfo:a,shareFeeRate:c=new te.default(0),cpmmPoolData:u,clmmPoolData:s,launchPoolInfo:f,launchPlatformInfo:m,slot:p,mintInfo:g,blockTimestamp:y}){var ie,Ve;let b=r>0?new le.default(r).div(2).toDecimalPlaces(4,le.default.ROUND_DOWN).toNumber():r,P=s!=null?s:await this.scope.clmm.getPoolInfoFromRpc(n.toString());if(e.toString()!==P.poolInfo.mintA.address&&e.toString()!==P.poolInfo.mintB.address)throw new Error("input mint does not match clmm pool mints, please check");let w=e.toString()===P.poolInfo.mintA.address,h=P.poolInfo[w?"mintB":"mintA"],B=f;if(B||(B=await this.scope.launchpad.getRpcPoolInfo({poolId:new H.PublicKey(i)})),h.address!==B.mintB.toBase58())throw new Error(`clmm swap mint(${h.address}) != launch pool mintB(${B.mintB.toBase58()})`);let A=m;if(!A){let De=await this.scope.connection.getAccountInfo(B.platformId);A=kn.decode(De.data)}let k=g!=null?g:await this.scope.token.getTokenInfo(B.mintA),T=wn(B.programId).publicKey,C=Mt(k,a==null?void 0:a.epoch),S=Qo(h),x=Mt(h,a==null?void 0:a.epoch),v=await je.computeAmountOutFormat({poolInfo:P.computePoolInfo,tickArrayCache:P.tickData[n.toString()],amountIn:t,tokenOut:h,slippage:b,epochInfo:a!=null?a:await this.scope.fetchEpochInfo(),blockTimestamp:y,tickarrayBitmapExtension:P.computePoolInfo.exBitmapInfo}),F=u!=null?u:(await this.scope.cpmm.getPoolInfoFromRpc(o.toString())).computePoolInfo,O=await this.scope.cpmm.computeSwapAmount({pool:F,amountIn:t,outputMint:new H.PublicKey(h.address),slippage:b}),[W,D]=[v.minAmountOut.amount.raw,O.minAmountOut],Z=W.gte(D)?"clmm":"cpmm",G=W.gte(D)?W:D,se=xt.buyExactIn({poolInfo:B,amountB:G,protocolFeeRate:B.configInfo.tradeFeeRate,platformFeeRate:A.feeRate,curveType:B.configInfo.curveType,shareFeeRate:c,creatorFeeRate:A.creatorFeeRate,transferFeeConfigA:C,transferFeeConfigB:x,slot:p!=null?p:await this.scope.connection.getSlot()}),Ae=se.amountA.amount.sub((ie=se.amountA.fee)!=null?ie:new te.default(0)),ge=new le.default(Ae.toString()),Ie=new te.default(1e4),ye=b?new le.default(Ie.sub(new te.default(b*1e4)).toNumber()/Ie.toNumber()).clampedTo(0,1):new le.default(1);return{clmmPoolData:P,clmmComputeAmount:{maxClmmAmountIn:t,clmmAmountOut:G,remainingAccounts:v.remainingAccounts},clmmComputeInfo:v,cpmmComputInfo:O,swapPoolType:Z,launchPoolInfo:B,launchAuthProgramId:T,launchMintTransferFeeConfig:C,launchMintProgramB:S,launchMintTransferFeeConfigB:x,launchSwapInfo:se,outAmount:se.amountA.amount.sub((Ve=se.amountA.fee)!=null?Ve:new te.default(0)),minOutAmount:new te.default(ge.mul(ye).toFixed(0))}}async fetchRoutePoolBasicInfo(e){let{amm:t=hi,clmm:n=Ii,cpmm:o=So}=e||{},i=await this.scope.connection.getProgramAccounts(t,{dataSlice:{offset:Wi.offsetOf("baseMint"),length:64}}),r=L([I("baseMint"),I("quoteMint")]),a=i.map(p=>({id:p.pubkey,version:4,mintA:r.decode(p.account.data).baseMint,mintB:r.decode(p.account.data).quoteMint})),c=L([I("mintA"),I("mintB")]),s=(await this.scope.connection.getProgramAccounts(n,{filters:[{dataSize:yn.span}],dataSlice:{offset:yn.offsetOf("mintA"),length:64}})).map(p=>{let g=c.decode(p.account.data);return{id:p.pubkey,version:6,mintA:g.mintA,mintB:g.mintB}}),m=(await this.scope.connection.getProgramAccounts(o,{dataSlice:{offset:Zi.offsetOf("mintA"),length:64}})).map(p=>{let g=c.decode(p.account.data);return{id:p.pubkey,version:7,mintA:g.mintA,mintB:g.mintB}});return{clmmPools:s,ammPools:a,cpmmPools:m}}getAllRoute({inputMint:e,outputMint:t,clmmPools:n,ammPools:o,cpmmPools:i}){e=e.toString()===H.PublicKey.default.toString()?Te:e,t=t.toString()===H.PublicKey.default.toString()?Te:t;let r={},a={},c={},u=[],s={};for(let m of n!=null?n:[]){if((m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),a[m.id.toString()]=m),m.mintA.equals(e)){let p=m.mintB.toString();s[p]===void 0&&(s[p]={mintProgram:J.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),s[p].in.push(m)}if(m.mintB.equals(e)){let p=m.mintA.toString();s[p]===void 0&&(s[p]={mintProgram:J.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),s[p].in.push(m)}if(m.mintA.equals(t)){let p=m.mintB.toString();s[p]===void 0&&(s[p]={mintProgram:J.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),s[p].out.push(m)}if(m.mintB.equals(t)){let p=m.mintA.toString();s[p]===void 0&&(s[p]={mintProgram:J.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),s[p].out.push(m)}}let f=[];for(let m of o)(m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),r[m.id.toBase58()]=m,f.push(m)),m.mintA.equals(e)&&(s[m.mintB.toBase58()]===void 0&&(s[m.mintB.toBase58()]={mintProgram:J.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),s[m.mintB.toBase58()].in.push(m)),m.mintB.equals(e)&&(s[m.mintA.toBase58()]===void 0&&(s[m.mintA.toBase58()]={mintProgram:J.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),s[m.mintA.toBase58()].in.push(m)),m.mintA.equals(t)&&(s[m.mintB.toBase58()]===void 0&&(s[m.mintB.toBase58()]={mintProgram:J.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),s[m.mintB.toBase58()].out.push(m)),m.mintB.equals(t)&&(s[m.mintA.toBase58()]===void 0&&(s[m.mintA.toBase58()]={mintProgram:J.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),s[m.mintA.toBase58()].out.push(m));for(let m of i)(m.mintA.equals(e)&&m.mintB.equals(t)||m.mintA.equals(t)&&m.mintB.equals(e))&&(u.push(m),c[m.id.toBase58()]=m),m.mintA.equals(e)&&(s[m.mintB.toBase58()]===void 0&&(s[m.mintB.toBase58()]={mintProgram:J.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),s[m.mintB.toBase58()].in.push(m)),m.mintB.equals(e)&&(s[m.mintA.toBase58()]===void 0&&(s[m.mintA.toBase58()]={mintProgram:J.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),s[m.mintA.toBase58()].in.push(m)),m.mintA.equals(t)&&(s[m.mintB.toBase58()]===void 0&&(s[m.mintB.toBase58()]={mintProgram:J.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),s[m.mintB.toBase58()].out.push(m)),m.mintB.equals(t)&&(s[m.mintA.toBase58()]===void 0&&(s[m.mintA.toBase58()]={mintProgram:J.TOKEN_PROGRAM_ID,in:[],out:[],mDecimals:0}),s[m.mintA.toBase58()].out.push(m));for(let m of Object.keys(s)){if(s[m].in.length===1&&s[m].out.length===1&&s[m].in[0].id.equals(s[m].out[0].id)){delete s[m];continue}if(s[m].in.length===0||s[m].out.length===0){delete s[m];continue}let p=s[m];for(let g of p.in)for(let y of p.out)g.version===6&&a[g.id.toString()]===void 0?a[g.id.toString()]=g:g.version===7&&c[g.id.toString()]===void 0?c[g.id.toString()]=g:(g.version===4||g.version===5)&&r[g.id.toString()]===void 0&&(r[g.id.toString()]=g),y.version===6&&a[y.id.toString()]===void 0?a[y.id.toString()]=y:y.version===7&&c[y.id.toString()]===void 0?c[y.id.toString()]=y:(y.version===4||y.version===5)&&r[y.id.toString()]===void 0&&(r[y.id.toString()]=y)}return{directPath:u,addLiquidityPools:f,routePathDict:s,needSimulate:Object.values(r),needTickArray:Object.values(a),cpmmPoolList:Object.values(c)}}async fetchSwapRoutesData({routes:e,inputMint:t,outputMint:n}){let o=new Set([...e.needTickArray.map(y=>[y.mintA.toBase58(),y.mintB.toBase58()]).flat(),t.toString(),n.toString()]);console.log("fetching amm pools info, total: ",e.needSimulate.length);let i=await this.scope.liquidity.getRpcPoolInfos(e.needSimulate.map(y=>y.id)),r=zi(i),a={};Object.values(r).forEach(y=>{o.delete(y.mintA.address),a[y.mintA.address]={address:new H.PublicKey(y.mintA.address),programId:J.TOKEN_PROGRAM_ID,mintAuthority:null,supply:BigInt(0),decimals:y.mintA.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0},o.delete(y.mintB.address),a[y.mintB.address]={address:new H.PublicKey(y.mintB.address),programId:J.TOKEN_PROGRAM_ID,mintAuthority:null,supply:BigInt(0),decimals:y.mintB.decimals,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}}),console.log("fetching cpmm pools info, total: ",e.cpmmPoolList.length);let c=await this.scope.cpmm.getRpcPoolInfos(e.cpmmPoolList.map(y=>y.id.toBase58()),!0);Object.values(c).forEach(y=>{let[b,P]=[y.mintA.toBase58(),y.mintB.toBase58()];y.mintProgramA.equals(J.TOKEN_PROGRAM_ID)?(o.delete(b),a[b]={address:y.mintA,programId:y.mintProgramA,mintAuthority:null,supply:BigInt(0),decimals:y.mintDecimalA,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):o.add(b),y.mintProgramB.equals(J.TOKEN_PROGRAM_ID)?(o.delete(P),a[P]={address:y.mintB,programId:y.mintProgramB,mintAuthority:null,supply:BigInt(0),decimals:y.mintDecimalB,isInitialized:!0,freezeAuthority:null,tlvData:Buffer.from("0","hex"),feeConfig:void 0}):o.add(P)}),console.log("fetching mints info, total: ",o.size);let u=await ao({connection:this.scope.connection,mints:Array.from(o).map(y=>new H.PublicKey(y))});a=_(_({},a),u);let s=this.scope.cpmm.toComputePoolInfos({pools:c,mintInfos:a});console.log("fetching clmm pools info, total:",e.needTickArray.length);let f=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:e.needTickArray.map(y=>y.id)}),{computeClmmPoolInfo:m,computePoolTickData:p}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:f,mintInfos:a}),g=Object.keys(e.routePathDict).reduce((y,b)=>V(_({},y),{[b]:V(_({},e.routePathDict[b]),{mintProgram:a[b].programId,mDecimals:a[b].decimals,in:e.routePathDict[b].in.map(P=>r[P.id.toBase58()]||m[P.id.toBase58()]||s[P.id.toBase58()]),out:e.routePathDict[b].out.map(P=>r[P.id.toBase58()]||m[P.id.toBase58()]||s[P.id.toBase58()])})}),{});return{mintInfos:a,ammPoolsRpcInfo:i,ammSimulateCache:r,clmmPoolsRpcInfo:f,computeClmmPoolInfo:m,computePoolTickData:p,computeCpmmData:s,routePathDict:g}}getAllRouteComputeAmountOut({inputTokenAmount:e,outputToken:t,directPath:n,routePathDict:o,simulateCache:i,tickCache:r,slippage:a,chainTime:c,epochInfo:u,feeConfig:s,blockTimestamp:f}){var w,h,B,A,k,T,C,S,x;let m=s===void 0?new te.default(0):e.raw.mul(new te.default(s.feeBps.toNumber())).div(new te.default(1e4)),p=e.raw.sub(m),g=new Pe(e.token,p),y=s===void 0?void 0:{feeAmount:m,feeAccount:s.feeAccount},b=V(_({},t),{address:at(t.address).toString()}),P=[];for(let v of n)try{P.push(V(_({},this.computeAmountOut({itemPool:v,tickCache:r,simulateCache:i,chainTime:c,epochInfo:u,slippage:a,outputToken:b,amountIn:g,blockTimestamp:f})),{feeConfig:y}))}catch(F){this.logDebug("direct error",v.version,v.id.toString(),F.message)}this.logDebug("direct done");for(let[v,F]of Object.entries(o)){let O={chainId:101,address:v,programId:F.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:F.mDecimals,tags:[],extensions:{}},W=F.in.map(Z=>{try{return{pool:Z,data:this.computeAmountOut({itemPool:Z,tickCache:r,simulateCache:i,chainTime:c,epochInfo:u,slippage:a,outputToken:O,amountIn:g,blockTimestamp:f})}}catch(G){this.logDebug("route in error",Z.version,Z.id.toString(),G.message);return}}).sort((Z,G)=>{var ge,Ie,ye,ie;let se=Z===void 0?Xe:Z.data.amountOut.amount.raw.sub((Ie=(ge=Z.data.amountOut.fee)==null?void 0:ge.raw)!=null?Ie:Xe),Ae=G===void 0?Xe:G.data.amountOut.amount.raw.sub((ie=(ye=G.data.amountOut.fee)==null?void 0:ye.raw)!=null?ie:Xe);return se.lt(Ae)?1:-1})[0];if(W===void 0)continue;let D=new Pe(Ko(O),W.data.amountOut.amount.raw.sub((h=(w=W.data.amountOut.fee)==null?void 0:w.raw)!=null?h:Xe));for(let Z of F.out)try{let G=this.computeAmountOut({itemPool:Z,tickCache:r,simulateCache:i,chainTime:c,epochInfo:u,slippage:a,outputToken:b,amountIn:D,blockTimestamp:f});P.push(V(_({},G),{allTrade:!!(W.data.allTrade&&G.allTrade),amountIn:W.data.amountIn,amountOut:G.amountOut,minAmountOut:G.minAmountOut,currentPrice:void 0,executionPrice:new le.default(new Je({baseToken:W.data.amountIn.amount.token,denominator:W.data.amountIn.amount.raw,quoteToken:G.amountOut.amount.token,numerator:G.amountOut.amount.raw.sub((A=(B=G.amountOut.fee)==null?void 0:B.raw)!=null?A:Xe)}).toFixed()),priceImpact:new le.default(W.data.priceImpact.add(G.priceImpact).toFixed()),fee:[W.data.fee[0],G.fee[0]],routeType:"route",poolInfoList:[W.pool,Z],remainingAccounts:[W.data.remainingAccounts[0],G.remainingAccounts[0]],minMiddleAmountFee:(k=G.amountOut.fee)!=null&&k.raw?new Pe(W.data.amountOut.amount.token,((C=(T=W.data.amountOut.fee)==null?void 0:T.raw)!=null?C:Xe).add((x=(S=G.amountOut.fee)==null?void 0:S.raw)!=null?x:Xe)):void 0,middleToken:W.data.amountOut.amount.token,poolReady:W.data.poolReady&&G.poolReady,poolType:[W.data.poolType,G.poolType],feeConfig:y,expirationTime:Rt(W.data.expirationTime,G.expirationTime)}))}catch(G){this.logDebug("route out error",Z.version,Z.id.toString(),G.message)}}return P.filter(v=>(v.allTrade||this.logDebug(`pool ${v.poolInfoList.map(F=>F.id.toString()).join(",")} filter out since not all trade`),v.allTrade)).sort((v,F)=>v.amountOut.amount.raw.sub(F.amountOut.amount.raw).gt(Xe)?-1:1)}getAllRouteComputeAmountIn({outputTokenAmount:e,directPath:t,routePathDict:n,simulateCache:o,tickCache:i,slippage:r,chainTime:a,epochInfo:c,blockTimestamp:u,feeConfig:s}){var p,g,y,b,P,w,h,B,A;let f=ht({address:at(e.token.mint).toBase58(),decimals:e.token.decimals,programId:e.token.isToken2022?J.TOKEN_2022_PROGRAM_ID.toBase58():J.TOKEN_PROGRAM_ID.toBase58(),extensions:{}}),m=[];for(let k of t)try{let T=this.computeAmountIn({itemPool:k,tickCache:i,simulateCache:o,chainTime:a,epochInfo:c,slippage:r,outputToken:f,amountOut:e.raw,blockTimestamp:u}),C=s===void 0?new te.default(0):T.amountIn.amount.raw.mul(new te.default(s.feeBps.toNumber())).div(new te.default(1e4));m.push(V(_({},T),{feeConfig:s===void 0?void 0:{feeAmount:C,feeAccount:s.feeAccount}}))}catch(T){this.logDebug("direct error",k.version,k.id.toString(),T.message)}this.logDebug("direct done");for(let[k,T]of Object.entries(n)){let C={chainId:101,address:k,programId:T.mintProgram.toBase58(),logoURI:"",symbol:"",name:"",decimals:T.mDecimals,tags:[],extensions:{}},S=T.out.map(v=>{try{return{pool:v,data:this.computeAmountIn({itemPool:v,tickCache:i,simulateCache:o,chainTime:a,epochInfo:c,slippage:r,outputToken:f,amountOut:e.raw,blockTimestamp:u})}}catch(F){this.logDebug("route in error",v.version,v.id.toString(),F.message);return}}).sort((v,F)=>{var D,Z,G,se;let O=v===void 0?Xe:v.data.amountIn.amount.raw.add((Z=(D=v.data.amountIn.fee)==null?void 0:D.raw)!=null?Z:Xe),W=F===void 0?Xe:F.data.amountIn.amount.raw.add((se=(G=F.data.amountIn.fee)==null?void 0:G.raw)!=null?se:Xe);return O.lt(W)?-1:1})[0];if(S===void 0)continue;let x=new Pe(Ko(C),S.data.amountIn.amount.raw.add((g=(p=S.data.amountIn.fee)==null?void 0:p.raw)!=null?g:Xe));for(let v of T.in)try{let F=this.computeAmountIn({itemPool:v,tickCache:i,simulateCache:o,chainTime:a,epochInfo:c,slippage:r,outputToken:C,amountOut:x.raw,blockTimestamp:u}),O=s===void 0?new te.default(0):F.amountIn.amount.raw.mul(new te.default(s.feeBps.toNumber())).div(new te.default(1e4));m.push(V(_({},F),{allTrade:!!(F.allTrade&&S.data.allTrade),amountIn:F.amountIn,amountOut:S.data.amountOut,maxAmountIn:F.maxAmountIn,currentPrice:void 0,executionPrice:new le.default(new Je({baseToken:S.data.amountIn.amount.token,denominator:S.data.amountIn.amount.raw,quoteToken:F.amountOut.amount.token,numerator:F.amountOut.amount.raw.sub((b=(y=F.amountOut.fee)==null?void 0:y.raw)!=null?b:Xe)}).toFixed()),priceImpact:new le.default(S.data.priceImpact.add(F.priceImpact).toFixed()),fee:[F.fee[0],S.data.fee[0]],routeType:"route",poolInfoList:[S.pool,v],remainingAccounts:[S.data.remainingAccounts[0],F.remainingAccounts[0]],minMiddleAmountFee:(P=F.amountOut.fee)!=null&&P.raw?new Pe(S.data.amountOut.amount.token,((h=(w=S.data.amountOut.fee)==null?void 0:w.raw)!=null?h:Xe).add((A=(B=F.amountOut.fee)==null?void 0:B.raw)!=null?A:Xe)):void 0,middleToken:S.data.amountOut.amount.token,poolReady:S.data.poolReady&&F.poolReady,poolType:[S.data.poolType,F.poolType],feeConfig:s===void 0?void 0:{feeAmount:O,feeAccount:s.feeAccount},expirationTime:Rt(S.data.expirationTime,F.expirationTime)}))}catch(F){this.logDebug("route out error",v.version,v.id.toString(),F.message)}}return m.filter(k=>(k.allTrade||this.logDebug(`pool ${k.poolInfoList.map(T=>T.id.toString()).join(",")} filter out since not all trade`),k.allTrade)).sort((k,T)=>T.amountIn.amount.raw.sub(k.amountIn.amount.raw).gt(Xe)?-1:1)}computeAmountOut({itemPool:e,tickCache:t,simulateCache:n,chainTime:o,epochInfo:i,slippage:r,outputToken:a,amountIn:c,blockTimestamp:u}){if(e.version===6){let{allTrade:s,realAmountIn:f,amountOut:m,minAmountOut:p,expirationTime:g,currentPrice:y,executionPrice:b,priceImpact:P,fee:w,remainingAccounts:h,executionPriceX64:B}=je.computeAmountOutFormat({poolInfo:e,tickarrayBitmapExtension:e.exBitmapInfo,tickArrayCache:t[e.id.toString()],amountIn:c.raw,tokenOut:a,slippage:r,epochInfo:i,catchLiquidityInsufficient:!0,blockTimestamp:u});return{allTrade:s,amountIn:f,amountOut:m,minAmountOut:p,currentPrice:new le.default(y.toFixed()),executionPrice:new le.default(b.toFixed()),priceImpact:new le.default(P.toFixed()),fee:[w],remainingAccounts:[h],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<o,poolType:"CLMM",slippage:r,clmmExPriceX64:[B],expirationTime:Rt(f.expirationTime,g)}}else if(e.version===7){let{allTrade:s,executionPrice:f,amountOut:m,minAmountOut:p,priceImpact:g,fee:y}=this.scope.cpmm.computeSwapAmount({pool:e,outputMint:a.address,amountIn:c.raw,slippage:r});return{allTrade:s,amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:Fe(V(_({},a),{amount:m})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Fe(V(_({},a),{amount:p})),fee:void 0,expirationTime:void 0},currentPrice:e.poolPrice,executionPrice:f,priceImpact:g,fee:[new Pe(c.token,y)],remainingAccounts:[],routeType:"amm",poolInfoList:[e],poolReady:e.openTime.toNumber()<o,poolType:"CPMM",slippage:r,clmmExPriceX64:[void 0],expirationTime:void 0}}else{if(![1,6,7].includes(n[e.id.toString()].status))throw Error("swap error");let{amountOut:s,minAmountOut:f,currentPrice:m,executionPrice:p,priceImpact:g,fee:y}=this.scope.liquidity.computeAmountOut({poolInfo:n[e.id.toString()],amountIn:c.raw,mintIn:c.token.mint,mintOut:a.address,slippage:r});return{amountIn:{amount:c,fee:void 0,expirationTime:void 0},amountOut:{amount:Fe(V(_({},a),{amount:s})),fee:void 0,expirationTime:void 0},minAmountOut:{amount:Fe(V(_({},a),{amount:f})),fee:void 0,expirationTime:void 0},currentPrice:m,executionPrice:p,priceImpact:g,fee:[new Pe(c.token,y)],routeType:"amm",poolInfoList:[e],remainingAccounts:[],poolReady:Number(n[e.id].openTime)<o,poolType:e.version===5?"STABLE":void 0,expirationTime:void 0,allTrade:!0,slippage:r,clmmExPriceX64:[void 0]}}}computeAmountIn({itemPool:e,tickCache:t,simulateCache:n,chainTime:o,epochInfo:i,slippage:r,amountOut:a,outputToken:c,blockTimestamp:u}){let s=c.address===e.mintB.address?e.mintA:e.mintB;if(e.version===6){let{allTrade:f,realAmountOut:m,amountIn:p,maxAmountIn:g,expirationTime:y,currentPrice:b,executionPrice:P,priceImpact:w,fee:h,remainingAccounts:B}=je.computeAmountIn({poolInfo:e,tickarrayBitmapExtension:e.exBitmapInfo,tickArrayCache:t[e.id.toString()],amountOut:a,baseMint:new H.PublicKey(s.address),slippage:r,epochInfo:i,blockTimestamp:u});return{allTrade:f,amountOut:{amount:Fe(V(_({},c),{amount:m.amount})),fee:m.fee?Fe(V(_({},c),{amount:m.fee})):void 0,expirationTime:void 0},amountIn:{amount:Fe(V(_({},s),{amount:p.amount})),fee:p.fee?Fe(V(_({},s),{amount:p.fee})):void 0,expirationTime:p.expirationTime},maxAmountIn:{amount:Fe(V(_({},s),{amount:g.amount})),fee:g.fee?Fe(V(_({},s),{amount:g.fee})):void 0,expirationTime:g.expirationTime},currentPrice:new le.default(b.toFixed()),executionPrice:new le.default(P.toFixed()),priceImpact:new le.default(w.toFixed()),fee:[Fe(V(_({},s),{amount:h}))],remainingAccounts:[B],routeType:"amm",poolInfoList:[e],poolReady:e.startTime<o,poolType:"CLMM",slippage:r,clmmExPriceX64:[Ni(P)],expirationTime:Rt(m.expirationTime,y)}}else if(e.version===7){let{allTrade:f,executionPrice:m,amountIn:p,amountOut:g,priceImpact:y,fee:b}=this.scope.cpmm.computeSwapAmount({pool:e,outputMint:c.address,amountIn:a,swapBaseIn:!1,slippage:r});return{allTrade:f,amountOut:{amount:Fe(V(_({},c),{amount:g})),fee:void 0,expirationTime:void 0},amountIn:{amount:Fe(V(_({},s),{amount:p})),fee:void 0,expirationTime:void 0},maxAmountIn:{amount:Fe(V(_({},s),{amount:p.mul(new te.default((1+r)*1e4)).div(new te.default(1e4))})),fee:void 0,expirationTime:void 0},currentPrice:e.poolPrice,executionPrice:m,priceImpact:y,fee:[Fe(V(_({},s),{amount:b}))],remainingAccounts:[],routeType:"amm",poolInfoList:[e],poolReady:e.openTime.toNumber()<o,poolType:"CPMM",slippage:r,clmmExPriceX64:[void 0],expirationTime:void 0}}else{if(![1,6,7].includes(n[e.id.toString()].status))throw Error("swap error");let{amountIn:f,maxAmountIn:m,currentPrice:p,executionPrice:g,priceImpact:y}=this.scope.liquidity.computeAmountIn({poolInfo:n[e.id.toString()],amountOut:a,mintIn:s.address,mintOut:c.address,slippage:r});return{amountOut:{amount:Fe(V(_({},c),{amount:a})),fee:void 0,expirationTime:void 0},amountIn:{amount:Fe(V(_({},s),{amount:f})),fee:void 0,expirationTime:void 0},maxAmountIn:{amount:Fe(V(_({},s),{amount:m})),fee:void 0,expirationTime:void 0},currentPrice:p,executionPrice:g,priceImpact:y,fee:[Fe(V(_({},s),{amount:U}))],routeType:"amm",poolInfoList:[e],remainingAccounts:[],poolReady:Number(n[e.id].openTime)<o,poolType:e.version===5?"STABLE":void 0,expirationTime:void 0,allTrade:!0,slippage:r,clmmExPriceX64:[void 0]}}}async computePoolToPoolKeys({pools:e,clmmRpcData:t={},ammRpcData:n={}}){let o=new Set(e.filter(u=>u.version===6&&!t[u.id.toString()]).map(u=>u.id.toString()));if(o.size>0){let u=await this.scope.clmm.getRpcClmmPoolInfos({poolIds:Array.from(o)});Object.keys(u).forEach(s=>{t[s]=u[s]})}let i=new Set(e.filter(u=>u.version===4&&!n[u.id.toString()]).map(u=>u.id.toString()));if(i.size>0){let u=await this.scope.liquidity.getRpcPoolInfos(Array.from(i));Object.keys(u).forEach(s=>{n[s]=u[s]})}let r=new Set(e.filter(u=>u.version===4).map(u=>u.marketId)),a={};r.size>0&&(await yt(this.scope.connection,Array.from(r).map(s=>({pubkey:new H.PublicKey(s)})))).forEach(s=>{if(!s.accountInfo)return;let f=ir.decode(s.accountInfo.data);a[s.pubkey.toBase58()]={marketId:s.pubkey.toString(),marketProgramId:s.accountInfo.owner.toString(),marketAuthority:Ho.getAssociatedAuthority({programId:s.accountInfo.owner,marketId:s.pubkey}).publicKey.toString(),marketBaseVault:f.baseVault.toString(),marketQuoteVault:f.quoteVault.toString(),marketBids:f.bids.toString(),marketAsks:f.asks.toString(),marketEventQueue:f.eventQueue.toString()}});let c=[];return e.forEach(u=>{if(u.version===6){let s=t[u.id.toString()],f={programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.startTime),vault:{A:s.vaultA.toBase58(),B:s.vaultB.toBase58()},config:V(_({},u.ammConfig),{id:u.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),rewardInfos:[],observationId:u.observationId.toBase58(),exBitmapAccount:u.exBitmapAccount.toBase58()};c.push(f)}else if(u.version===4){let s=n[u.id.toString()],f=_({programId:u.programId,id:u.id,mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),vault:{A:s.baseVault.toBase58(),B:s.quoteVault.toBase58()},authority:Ra({programId:new H.PublicKey(u.programId)}).publicKey.toString(),openOrders:s.openOrders.toBase58(),targetOrders:s.targetOrders.toBase58(),mintLp:u.lpMint},a[u.marketId]||{marketProgramId:s.marketProgramId.toBase58(),marketId:s.marketId.toBase58(),marketAuthority:H.PublicKey.default.toBase58(),marketBaseVault:H.PublicKey.default.toBase58(),marketQuoteVault:H.PublicKey.default.toBase58(),marketBids:H.PublicKey.default.toBase58(),marketAsks:H.PublicKey.default.toBase58(),marketEventQueue:H.PublicKey.default.toBase58()});c.push(f)}else u.version===7&&c.push({observationId:u.observationId.toBase58(),programId:u.programId.toBase58(),id:u.id.toBase58(),mintA:u.mintA,mintB:u.mintB,openTime:String(u.openTime),authority:Yi(u.programId).publicKey.toBase58(),vault:{A:u.vaultA.toBase58(),B:u.vaultB.toBase58()},mintLp:ht({address:u.mintLp.toBase58(),programId:J.TOKEN_PROGRAM_ID.toBase58(),decimals:u.lpDecimals}),config:V(_({id:u.configId.toBase58()},u.configInfo),{protocolFeeRate:u.configInfo.protocolFeeRate.toNumber(),tradeFeeRate:u.configInfo.tradeFeeRate.toNumber(),fundFeeRate:u.configInfo.fundFeeRate.toNumber(),createPoolFee:u.configInfo.createPoolFee.toString()})})}),c}};0&&(module.exports={toTransferFeeConfig});
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
//# sourceMappingURL=trade.js.map