@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 125 kB
JavaScript
var Si=Object.defineProperty,Ki=Object.defineProperties;var xi=Object.getOwnPropertyDescriptors;var Wt=Object.getOwnPropertySymbols;var eo=Object.prototype.hasOwnProperty,to=Object.prototype.propertyIsEnumerable;var Jn=(r,e,t)=>e in r?Si(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,L=(r,e)=>{for(var t in e||(e={}))eo.call(e,t)&&Jn(r,t,e[t]);if(Wt)for(var t of Wt(e))to.call(e,t)&&Jn(r,t,e[t]);return r},E=(r,e)=>Ki(r,xi(e));var Ce=(r,e)=>{var t={};for(var n in r)eo.call(r,n)&&e.indexOf(n)<0&&(t[n]=r[n]);if(r!=null&&Wt)for(var n of Wt(r))e.indexOf(n)<0&&to.call(r,n)&&(t[n]=r[n]);return t};import Re from"bn.js";import fn from"decimal.js";import X from"bn.js";var Z=new X(1).shln(64),it=64,dn=new X(1).shln(128),qe=new X(1).shln(64).subn(1),qt=new X(1).shln(128).subn(1),he=-443636,Ie=443636,Fe=new X("4295048016"),ve=new X("79226673521066979257578248091"),no=new X("59543866431248"),oo=new X("184467440737095516"),io=new X("15793534762490258745"),ro=16,Ut=512,Pe=60,Vs=new X("18446743708227953217"),ao=[{bit:0,factor:new X("fffcb933bd6fb800",16)},{bit:1,factor:new X("fff97272373d4000",16)},{bit:2,factor:new X("fff2e50f5f657000",16)},{bit:3,factor:new X("ffe5caca7e10f000",16)},{bit:4,factor:new X("ffcb9843d60f7000",16)},{bit:5,factor:new X("ff973b41fa98e800",16)},{bit:6,factor:new X("ff2ea16466c9b000",16)},{bit:7,factor:new X("fe5dee046a9a3800",16)},{bit:8,factor:new X("fcbe86c7900bb000",16)},{bit:9,factor:new X("f987a7253ac65800",16)},{bit:10,factor:new X("f3392b0822bb6000",16)},{bit:11,factor:new X("e7159475a2caf000",16)},{bit:12,factor:new X("d097f3bdfd2f2000",16)},{bit:13,factor:new X("a9f746462d9f8000",16)},{bit:14,factor:new X("70d869a156f31c00",16)},{bit:15,factor:new X("31be135f97ed3200",16)},{bit:16,factor:new X("9aa508b5b85a500",16)},{bit:17,factor:new X("5d6af8dedc582c",16)},{bit:18,factor:new X("2216e584f5fa",16)}],Ue=1e6,_s=1e5,pn=(n=>(n[n.FromInput=0]="FromInput",n[n.TokenOnlyA=1]="TokenOnlyA",n[n.TokenOnlyB=2]="TokenOnlyB",n))(pn||{}),Es=1e3,Gt=1e5,kt=1e4,so=1e4,uo=1e5,Ds=60,Tt=3,co=100,Ws=15,lo=10,mo=100,rt=14,Ci=(s=>(s[s.OpenPositionOrIncreaseLiquidity=0]="OpenPositionOrIncreaseLiquidity",s[s.DecreaseLiquidity=1]="DecreaseLiquidity",s[s.CollectFee=2]="CollectFee",s[s.CollectReward=3]="CollectReward",s[s.Swap=4]="Swap",s[s.LimitOrder=5]="LimitOrder",s))(Ci||{}),Ri=(t=>(t[t.Enable=0]="Enable",t[t.Disable=1]="Disable",t))(Ri||{}),Li=(o=>(o[o.Uninitialized=0]="Uninitialized",o[o.Initialized=1]="Initialized",o[o.Opening=2]="Opening",o[o.Ended=3]="Ended",o))(Li||{}),Oi=(a=>(a[a.TradeFeeRate=0]="TradeFeeRate",a[a.ProtocolFeeRate=1]="ProtocolFeeRate",a[a.FundFeeRate=2]="FundFeeRate",a[a.NewOwner=3]="NewOwner",a[a.NewFundOwner=4]="NewFundOwner",a))(Oi||{}),Ni=(o=>(o[o.UpdateOperationOwner=0]="UpdateOperationOwner",o[o.RemoveOperationOwner=1]="RemoveOperationOwner",o[o.UpdateWhitelistMint=2]="UpdateWhitelistMint",o[o.RemoveWhitelistMint=3]="RemoveWhitelistMint",o))(Ni||{}),C=new X(0),Be=new X(1),qs=new X(-1),Mi={tvl:0,volumeQuote:0,mintAmountA:0,mintAmountB:0,rewardDefaultInfos:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,day:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},week:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},month:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},pooltype:[]};function Us(r){switch(r){case 0:return"0 (FromInput - fee from input token)";case 1:return"1 (Token0Only - fee from token0)";case 2:return"2 (Token1Only - fee from token1)";default:return`${r} (unknown)`}}var Gs=2,zs=new X("18446744073700000000");function yn(r){return new Re(1).shln(r).subn(1)}function Hs(r,e,t){let n=r.add(e),o=yn(t);if(n.gt(o))throw new Error(`Addition overflow: result exceeds ${t} bits`);return n}function js(r,e){if(r.lt(e))throw new Error("Subtraction underflow");return r.sub(e)}function $s(r,e,t){let n=r.mul(e),o=yn(t);if(n.gt(o))throw new Error(`Multiplication overflow: result exceeds ${t} bits`);return n}function Js(r,e){let t=r.mul(e),n=t.and(yn(128)),o=t.shrn(128);return[n,o]}function j(r,e,t){if(t.isZero())throw new Error("Division by zero");return r.mul(e).div(t)}function J(r,e,t){if(t.isZero())throw new Error("Division by zero");let n=r.mul(e),o=n.div(t);return n.mod(t).isZero()?o:o.addn(1)}function eu(r,e,t,n){return n?J(r,e,t):j(r,e,t)}function zt(r,e){return r.div(e).add(r.mod(e).isZero()?C:Be)}function tu(r,e){let t=r.add(e);return t.gt(qt)?qt:t}function nu(r,e){return r.gt(e)?r.sub(e):new Re(0)}function ou(r,e){let t=r.mul(e);if(t.gt(qt))throw new Error("U128 multiplication overflow");return t}var iu=new Re(1).shln(256).subn(1);function ru(r,e,t){if(t.isZero())throw new Error("Division by zero");return r.mul(e).div(t)}function au(r,e,t){if(t.isZero())throw new Error("Division by zero");let n=r.mul(e),o=n.div(t);return n.mod(t).isZero()?o:o.addn(1)}function po(r){return r.isZero()?-1:r.bitLength()-1}function su(r){if(r.isZero())return-1;let e=0,t=r.clone();for(;t.and(new Re(1)).isZero();)t=t.shrn(1),e++;return e}function uu(r,e){return r.testn(e)}function cu(r,e){return r.or(new Re(1).shln(e))}function lu(r,e){return r.and(new Re(1).shln(e).notn(256))}function mu(r,e){return r.xor(new Re(1).shln(e))}function du(r){let e=new Re(1).shln(127);return r.and(e).isZero()?r:r.sub(new Re(1).shln(128))}function pu(r){return r.isNeg()?r.add(new Re(1).shln(128)):r}function fu(r){return r.isNeg()?r.neg():r}function fo(r,e){return new fn(r.toString()).div(fn.pow(2,64)).toDecimalPlaces(e)}function yo(r){return new Re(r.mul(fn.pow(2,64)).floor().toFixed())}function ye(r,e){return r.add(dn).sub(e).mod(dn)}import Ms from"bn.js";import{PublicKey as Vi}from"@solana/web3.js";import{get as bo,set as Fi}from"lodash";var bn=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}},go={},vi={};function G(r){let e=bo(go,r);if(!e){let t=bo(vi,r);e=new bn({name:r,logLevel:t}),Fi(go,r,e)}return e}import{MINT_SIZE as Bu,TOKEN_PROGRAM_ID as Su,getTransferFeeConfig as Ku,unpackMint as xu}from"@solana/spl-token";var gn=G("Raydium_accountInfo_util");async function we(r,e,t){let{batchRequest:n,commitment:o="confirmed",chunkCount:a=100}=L({batchRequest:!1},t),s=Pn(e,a),u=new Array(s.length).fill([]);if(n){let c=s.map(p=>{let P=r._buildArgs([p.map(g=>g.toBase58())],o,"base64");return{methodName:"getMultipleAccounts",args:P}}),l=Pn(c,10);u=(await(await Promise.all(l.map(async p=>await r._rpcBatchRequest(p)))).flat()).map(p=>(p.error&&gn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${p.error.message}`),p.result.value.map(P=>{if(P){let{data:g,executable:h,lamports:A,owner:T,rentEpoch:S}=P;return g.length!==2&&g[1]!=="base64"&&gn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(g[0],"base64"),executable:h,lamports:A,owner:new Vi(T),rentEpoch:S}}return null})))}else try{u=await Promise.all(s.map(c=>r.getMultipleAccountsInfo(c,o)))}catch(c){c instanceof Error&&gn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return u.flat()}async function Ge(r,e,t){let n=await we(r,e.map(o=>o.pubkey),t);return e.map((o,a)=>E(L({},o),{accountInfo:n[a]}))}import nt from"bn.js";import jC from"decimal.js";import zi from"big.js";import Qt from"bn.js";import _i from"toformat";var Ei=_i,ht=Ei;import Yt from"big.js";import Wi from"bn.js";import qi from"decimal.js-light";import It from"bn.js";var Po=9007199254740991;function re(r){let e=G("Raydium_parseBigNumberish");if(r instanceof It)return r;if(typeof r=="string"){if(r.match(/^-?[0-9]+$/))return new It(r);e.logWithError(`invalid BigNumberish string: ${r}`)}return typeof r=="number"?(r%1&&e.logWithError(`BigNumberish number underflow: ${r}`),(r>=Po||r<=-Po)&&e.logWithError(`BigNumberish number overflow: ${r}`),new It(String(r))):typeof r=="bigint"?new It(r.toString()):(e.error(`invalid BigNumberish value: ${r}`),new It(0))}var Xt=G("module/fraction"),An=ht(Yt),Bt=ht(qi),Ui={[0]:Bt.ROUND_DOWN,[1]:Bt.ROUND_HALF_UP,[2]:Bt.ROUND_UP},Gi={[0]:Yt.roundDown,[1]:Yt.roundHalfUp,[2]:Yt.roundUp},Y=class{constructor(e,t=new Wi(1)){this.numerator=re(e),this.denominator=re(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new Y(this.denominator,this.numerator)}add(e){let t=e instanceof Y?e:new Y(re(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.add(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof Y?e:new Y(re(e));return this.denominator.eq(t.denominator)?new Y(this.numerator.sub(t.numerator),this.denominator):new Y(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof Y?e:new Y(re(e));return new Y(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof Y?e:new Y(re(e));return new Y(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Xt.logWithError(`${e} is not an integer.`),e<=0&&Xt.logWithError(`${e} is not positive.`),Bt.set({precision:e+1,rounding:Ui[n]});let o=new Bt(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)||Xt.logWithError(`${e} is not an integer.`),e<0&&Xt.logWithError(`${e} is negative.`),An.DP=e,An.RM=Gi[n]||1,new An(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Xi=G("Raydium_amount"),Ao=ht(zi);function Yi(r,e){let t="0",n="0";if(r.includes(".")){let o=r.split(".");o.length===2?([t,n]=o,n=n.padEnd(e,"0")):Xi.logWithError(`invalid number string, num: ${r}`)}else t=r;return[t,n.slice(0,e)||n]}var ae=class extends Y{constructor(t,n,o=!0,a){let s=new Qt(0),u=wn.pow(new Qt(t.decimals));if(o)s=re(n);else{let c=new Qt(0),l=new Qt(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[m,p]=Yi(n.toString(),t.decimals);c=re(m),l=re(p)}c=c.mul(u),s=c.add(l)}super(s,u);this.logger=G(a||"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 ae(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new ae(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 Ao.DP=this.token.decimals,new Ao(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Qi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as wo}from"@solana/spl-token";var Zt={chainId:101,address:Qi.default.toBase58(),programId:wo.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Ve={chainId:101,address:"So11111111111111111111111111111111111111112",programId:wo.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};import{PublicKey as hn}from"@solana/web3.js";import{PublicKey as ee,SystemProgram as ko,SYSVAR_RENT_PUBKEY as Zi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Hi}from"@solana/spl-token";function at({pubkey:r,isSigner:e=!1,isWritable:t=!0}){return{pubkey:r,isWritable:t,isSigner:e}}var ji=[at({pubkey:Hi,isWritable:!1}),at({pubkey:ko.programId,isWritable:!1}),at({pubkey:Zi,isWritable:!1})];function kn({publicKey:r,transformSol:e}){let t=To(r.toString());if(t instanceof ee)return e&&t.equals($e)?ze:t;if(e&&t.toString()===$e.toBase58())return ze;if(typeof t=="string"){if(t===ee.default.toBase58())return ee.default;try{return new ee(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function To(r){try{return new ee(r)}catch{return r}}var Tn=new ee("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),St=new ee("SysvarRent111111111111111111111111111111111"),ac=new ee("SysvarC1ock11111111111111111111111111111111"),st=new ee("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),$i=new ee("Sysvar1nstructions1111111111111111111111111"),Ji=ko.programId,sc=new ee("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),uc=new ee("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),cc=new ee("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),lc=new ee("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),mc=new ee("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),dc=new ee("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),pc=new ee("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),fc=new ee("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),yc=new ee("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),bc=new ee("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),gc=new ee("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),ze=new ee("So11111111111111111111111111111111111111112"),$e=ee.default;function Xe(r){return kn({publicKey:r,transformSol:!0})}var In=class{constructor({mint:e,decimals:t,symbol:n,name:o,skipMint:a=!1,isToken2022:s=!1}){if(e===$e.toBase58()||e instanceof hn&&$e.equals(e)){this.decimals=Ve.decimals,this.symbol=Ve.symbol,this.name=Ve.name,this.mint=new hn(Ve.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=a?hn.default:kn({publicKey:e}),this.isToken2022=s}equals(e){return this===e?!0:this.mint.equals(e.mint)}},me=In;me.WSOL=new In(E(L({},Ve),{mint:Ve.address}));var Bn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Ht=Bn;Ht.SOL=new Bn(Zt);import er from"bn.js";var ho=new Y(new er(100)),_e=class extends Y{toSignificant(e=5,t,n){return this.mul(ho).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(ho).toFixed(e,t,n)}};var tr=G("Raydium_price"),Se=class extends Y{constructor(t){let{baseToken:n,quoteToken:o,numerator:a,denominator:s}=t;super(a,s);this.baseToken=n,this.quoteToken=o,this.scalar=new Y(Sn(n.decimals),Sn(o.decimals))}get raw(){return new Y(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Se({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&tr.logWithError("mul token not equals");let n=super.mul(t);return new Se({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)}};import{merge as Jx}from"lodash";import Wc from"axios";var Io={BASE_HOST:"https://api-v3.raydium.io",OWNER_BASE_HOST:"https://owner-v1.raydium.io",SERVICE_BASE_HOST:"https://service.raydium.io",MONITOR_BASE_HOST:"https://monitor.raydium.io",SERVICE_1_BASE_HOST:"https://service-v1.raydium.io",TEMP_HOST:"https://temp-api-v1.raydium.io",SEND_TRANSACTION:"/send-transaction",FARM_ARP:"/main/farm/info",FARM_ARP_LINE:"/main/farm-apr-tv",CLMM_CONFIG:"/main/clmm-config",CPMM_CONFIG:"/main/cpmm-config",CLMM_DYNAMIC_CONFIG:"/main/clmm-dynamic-config",VERSION:"/main/version",CHECK_AVAILABILITY:"/v3/main/AvailabilityCheckAPI",RPCS:"/main/rpcs",INFO:"/main/info",STAKE_POOLS:"/main/stake-pools",CHAIN_TIME:"/main/chain-time",TOKEN_LIST:"/mint/list",MINT_INFO_ID:"/mint/ids",JUP_TOKEN_LIST:"https://lite-api.jup.ag/tokens/v2/tag?query=verified",POOL_LIST:"/pools/info/list-v2",POOL_SEARCH_BY_ID:"/pools/info/ids",POOL_SEARCH_MINT:"/pools/info/list-v2",POOL_SEARCH_LP:"/pools/info/lps",POOL_KEY_BY_ID:"/pools/key/ids",POOL_LIQUIDITY_LINE:"/pools/line/liquidity",POOL_POSITION_LINE:"/pools/line/position",FARM_INFO:"/farms/info/ids",FARM_LP_INFO:"/farms/info/lp",FARM_KEYS:"/farms/key/ids",OWNER_CREATED_FARM:"/create-pool/{owner}",OWNER_STAKE_FARMS:"/position/stake/{owner}",OWNER_LOCK_POSITION:"/position/clmm-lock/{owner}",SWAP_HOST:"https://transaction-v1.raydium.io",SWAP_COMPUTE:"/compute/",SWAP_TX:"/transaction/",MINT_PRICE:"/mint/price",MIGRATE_CONFIG:"/main/migrate-lp",PRIORITY_FEE:"/main/auto-fee",CPMM_LOCK:"https://dynamic-ipfs.raydium.io/lock/cpmm/position",LAUNCH_AUTH_HOST:"https://launch-auth-v1.raydium.io",LAUNCH_COMMENT_HOST:"hhttps://launch-forum-v1.raydium.io",LAUNCH_HISTORY_HOST:"https://launch-history-v1.raydium.io",LAUNCH_MINT_HOST:"https://launch-mint-v1.raydium.io"},nr=E(L({},Io),{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 ll=G("Raydium_Api");import{PublicKey as Cd,SystemProgram as Rd}from"@solana/web3.js";import{AccountLayout as Fd,createAssociatedTokenAccountIdempotentInstruction as vd,TOKEN_PROGRAM_ID as Vd,TOKEN_2022_PROGRAM_ID as _d}from"@solana/spl-token";import{PublicKey as dt,sendAndConfirmTransaction as On,SystemProgram as ur,Transaction as Ct,TransactionMessage as Rt,VersionedTransaction as Lt}from"@solana/web3.js";import cr from"axios";import{PublicKey as Kn,AddressLookupTableAccount as lt}from"@solana/web3.js";async function xn({connection:r,address:e,cluster:t="mainnet"}){let n=await we(r,[...new Set(e.map(a=>a.toString()))].map(a=>new Kn(a))),o={};for(let a=0;a<e.length;a++){let s=n[a],u=e[a];if(!s)continue;let c=new lt({key:u,state:lt.deserialize(s.data)});o[u.toString()]=c,t==="devnet"?ct[u.toString()]=c:ut[u.toString()]=c}return o}var ut={},Cn=async r=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(ut[e])return ut;let t=new Kn(e),n=await r.getAccountInfo(t);return n&&(ut[e]=new lt({key:t,state:lt.deserialize(n.data)})),ut},ct={},Rn=async r=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(ct[e])return ct;let t=new Kn(e),n=await r.getAccountInfo(t);return n&&(ct[e]=new lt({key:t,state:lt.deserialize(n.data)})),ct};var de={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{ComputeBudgetProgram as Bo,Keypair as Ko,PublicKey as or,Transaction as xo,TransactionMessage as ir,VersionedTransaction as Co}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as rr}from"@solana/spl-token";var So=G("Raydium_txUtil"),Ro=1644;function jt(r){let e=[],t=[];return r.microLamports&&(e.push(Bo.setComputeUnitPrice({microLamports:r.microLamports})),t.push(de.SetComputeUnitPrice)),r.units&&(e.push(Bo.setComputeUnitLimit({units:r.units})),t.push(de.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function mt(r,e){var n,o;let t=e!=null?e:"confirmed";return(o=await((n=r.getLatestBlockhash)==null?void 0:n.call(r,{commitment:t})))==null?void 0:o.blockhash}async function $t(r,e){return r.getSignatureStatuses([e]),new Promise((t,n)=>{let o=setTimeout(n,6e4);r.onSignature(e,a=>{if(clearTimeout(o),!a.err){t("");return}n(Object.assign(a.err,{txId:e}))},"confirmed")})}function Ln(r,e){r.length<1&&So.logWithError(`no instructions provided: ${r.toString()}`),e.length<1&&So.logWithError(`no signers provided:, ${e.toString()}`);let t=new xo;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...r);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Ro}catch{return!1}}function Q(r,e){let[t,n]=or.findProgramAddressSync(r,e);return{publicKey:t,nonce:n}}function Kt({instructions:r,payer:e,signers:t}){return Ln(r,[e,...t])}function xt({instructions:r,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Ko.generate().publicKey.toString()}){let a=new ir({payerKey:e,recentBlockhash:n,instructions:r}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Co(a).serialize()).toString("base64").length<Ro}catch{return!1}}var ar=r=>Buffer.isBuffer(r)?r:r instanceof Uint8Array?Buffer.from(r.buffer,r.byteOffset,r.byteLength):Buffer.from(r),sr=r=>{let e=r.serialize({requireAllSignatures:!1,verifySignatures:!1});r instanceof Co&&(e=ar(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Je(r){let e=[];return r.forEach(t=>{t instanceof xo&&(t.recentBlockhash||(t.recentBlockhash=rr.toBase58()),t.feePayer||(t.feePayer=Ko.generate().publicKey)),e.push(sr(t))}),console.log("simulate tx string:",e),e}var Jt=2e3,en=class{constructor(e){this.instructions=[];this.endInstructions=[];this.lookupTableAddress=[];this.signers=[];this.instructionTypes=[];this.endInstructionTypes=[];this.connection=e.connection,this.feePayer=e.feePayer,this.signAllTransactions=e.signAllTransactions,this.owner=e.owner,this.cluster=e.cluster,this.blockhashCommitment=e.blockhashCommitment,this.loopMultiTxStatus=!!e.loopMultiTxStatus}get AllTxData(){return{instructions:this.instructions,endInstructions:this.endInstructions,signers:this.signers,instructionTypes:this.instructionTypes,endInstructionTypes:this.endInstructionTypes,lookupTableAddress:this.lookupTableAddress}}get allInstructions(){return[...this.instructions,...this.endInstructions]}async getComputeBudgetConfig(){var n;let e=(await cr.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=jt(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(ur.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new dt(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(de.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:a=[],lookupTableAddress:s=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...o),this.endInstructionTypes.push(...a),this.lookupTableAddress.push(...s.filter(u=>u!==dt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:n}){return e===0?await this.buildV0(E(L({},t||{}),{lookupTableAddress:n})):this.build(t)}build(e){var n;let t=new Ct;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 m;let{recentBlockHash:a,skipPreflight:s=!0,sendAndConfirm:u,notSendToRpc:c}=o||{},l=a!=null?a:await mt(this.connection,this.blockhashCommitment);if(t.recentBlockhash=l,this.signers.length&&t.sign(...this.signers),Je([t]),(m=this.owner)!=null&&m.isKeyPair)return{txId:u?await On(this.connection,t,this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:s}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:s}),signedTx:t};if(this.signAllTransactions){let p=await this.signAllTransactions([t]);if(this.signers.length)for(let P of p)try{P.sign(...this.signers)}catch{}return{txId:c?"":await this.connection.sendRawTransaction(p[0].serialize(),{skipPreflight:s}),signedTx:p[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var l;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:o}=this.build(n),a=t.filter(m=>m.transaction.instructions.length>0),s=[o,...a.map(m=>m.transaction)],u=[this.signers,...a.map(m=>m.signers)],c=[...this.instructionTypes,...a.map(m=>m.instructionTypes).flat()];return(l=this.owner)!=null&&l.signer&&u.forEach(m=>{m.some(p=>p.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:s,signers:u,instructionTypes:c,execute:async m=>{var S;let{sequentially:p,onTxUpdate:P,skipTxCount:g=0,recentBlockHash:h,skipPreflight:A=!0}=m||{},T=h!=null?h:await mt(this.connection,this.blockhashCommitment);if((S=this.owner)!=null&&S.isKeyPair){if(p){let K=[],M=0;for(let v of s){if(++M,M<=g)continue;let b=await On(this.connection,v,this.signers.find(I=>I.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:A});K.push(b)}return{txIds:K,signedTxs:s}}return{txIds:await await Promise.all(s.map(async K=>(K.recentBlockhash=T,await this.connection.sendRawTransaction(K.serialize(),{skipPreflight:A})))),signedTxs:s}}if(this.signAllTransactions){let K=s.map((v,b)=>(v.recentBlockhash=T,u[b].length&&v.sign(...u[b]),v));Je(K);let M=await this.signAllTransactions(K);if(p){let v=0,b=[],I=async()=>{if(!M[v])return;let x=await this.connection.sendRawTransaction(M[v].serialize(),{skipPreflight:A});b.push({txId:x,status:"sent",signedTx:M[v]}),P==null||P([...b]),v++;let O=!1,R=null,_=null,$=U=>{R!==null&&clearInterval(R),_!==null&&this.connection.removeSignatureListener(_);let N=b.findIndex(H=>H.txId===x);if(N>-1){if(b[N].status==="error"||b[N].status==="success")return;b[N].status=U.err?"error":"success"}P==null||P([...b]),U.err||I()};this.loopMultiTxStatus&&(R=setInterval(async()=>{var U;if(O){clearInterval(R);return}try{let N=await this.connection.getTransaction(x,{commitment:"confirmed",maxSupportedTransactionVersion:0});N&&(O=!0,clearInterval(R),$({err:((U=N.meta)==null?void 0:U.err)||null}),console.log("tx status from getTransaction:",x))}catch(N){O=!0,clearInterval(R),console.error("getTransaction timeout:",N,x)}},Jt)),_=this.connection.onSignature(x,U=>{if(O){this.connection.removeSignatureListener(_);return}O=!0,$(U)},"confirmed"),this.connection.getSignatureStatus(x)};return await I(),{txIds:b.map(x=>x.txId),signedTxs:M}}else{let v=[];for(let b=0;b<M.length;b+=1){let I=await this.connection.sendRawTransaction(M[b].serialize(),{skipPreflight:A});v.push(I)}return{txIds:v,signedTxs:M}}}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 A;let h=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:o,recentBlockhash:a}=h,s=Ce(h,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),u=L(L({},this.cluster==="devnet"?await Rn(this.connection):await Cn(this.connection)),t),c=Array.from(new Set([...n,...this.lookupTableAddress])),l=[];for(let T of c)u[T]===void 0&&l.push(new dt(T));let m=await xn({connection:this.connection,address:l});for(let[T,S]of Object.entries(m))u[T]=S;let p=o?dt.default.toBase58():a!=null?a:await mt(this.connection,this.blockhashCommitment),P=new Rt({payerKey:this.feePayer,recentBlockhash:p,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(u));((A=this.owner)==null?void 0:A.signer)&&!this.signers.some(T=>T.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let g=new Lt(P);return g.sign(this.signers),{builder:this,transaction:g,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async T=>{var v;let{skipPreflight:S=!0,sendAndConfirm:K,notSendToRpc:M}=T||{};if(Je([g]),(v=this.owner)!=null&&v.isKeyPair){let b=await this.connection.sendTransaction(g,{skipPreflight:S});return K&&await $t(this.connection,b),{txId:b,signedTx:g}}if(this.signAllTransactions){let b=await this.signAllTransactions([g]);if(this.signers.length)for(let I of b)try{I.sign(this.signers)}catch{}return{txId:M?"":await this.connection.sendTransaction(b[0],{skipPreflight:S}),signedTx:b[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:s||{}}}async buildV0MultiTx(e){var l;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:o}=await this.buildV0(n),a=t.filter(m=>m.builder.instructions.length>0),s=[o,...a.map(m=>m.transaction)],u=[this.signers,...a.map(m=>m.signers)],c=[...this.instructionTypes,...a.map(m=>m.instructionTypes).flat()];return(l=this.owner)!=null&&l.signer&&u.forEach(m=>{m.some(p=>p.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),s.forEach(async(m,p)=>{m.sign(u[p])}),{builder:this,transactions:s,signers:u,instructionTypes:c,buildProps:n,execute:async m=>{var A;let{sequentially:p,onTxUpdate:P,recentBlockHash:g,skipPreflight:h=!0}=m||{};if(g&&s.forEach(T=>T.message.recentBlockhash=g),Je(s),(A=this.owner)!=null&&A.isKeyPair){if(p){let T=[];for(let S of s){let K=await this.connection.sendTransaction(S,{skipPreflight:h});await $t(this.connection,K),T.push(K)}return{txIds:T,signedTxs:s}}return{txIds:await Promise.all(s.map(async T=>await this.connection.sendTransaction(T,{skipPreflight:h}))),signedTxs:s}}if(this.signAllTransactions){let T=await this.signAllTransactions(s);if(p){let S=0,K=[],M=async()=>{if(!T[S])return;let v=await this.connection.sendTransaction(T[S],{skipPreflight:h});K.push({txId:v,status:"sent",signedTx:T[S]}),P==null||P([...K]),S++;let b=!1,I=null,x=null,O=R=>{I!==null&&clearInterval(I),x!==null&&this.connection.removeSignatureListener(x);let _=K.findIndex($=>$.txId===v);if(_>-1){if(K[_].status==="error"||K[_].status==="success")return;K[_].status=R.err?"error":"success"}P==null||P([...K]),R.err||M()};this.loopMultiTxStatus&&(I=setInterval(async()=>{var R;if(b){clearInterval(I);return}try{let _=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});_&&(b=!0,clearInterval(I),O({err:((R=_.meta)==null?void 0:R.err)||null}),console.log("tx status from getTransaction:",v))}catch(_){b=!0,clearInterval(I),console.error("getTransaction timeout:",_,v)}},Jt)),x=this.connection.onSignature(v,R=>{if(b){this.connection.removeSignatureListener(x);return}b=!0,O(R)},"confirmed"),this.connection.getSignatureStatus(v)};return M(),{txIds:[],signedTxs:T}}else{let S=[];for(let K=0;K<T.length;K+=1){let M=await this.connection.sendTransaction(T[K],{skipPreflight:h});S.push(M)}return{txIds:S,signedTxs:T}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var P;let p=e||{},{splitIns:t=[],computeBudgetConfig:n}=p,o=Ce(p,["splitIns","computeBudgetConfig"]),a=n?jt(n):{instructions:[],instructionTypes:[]},s=this.signers.reduce((g,h)=>E(L({},g),{[h.publicKey.toBase58()]:h}),{}),u=[],c=[],l=[],m=0;if(this.allInstructions.forEach(g=>{let h=[...l,g],A=n?[...a.instructions,...h]:h,S=[...new Set(h.map(K=>K.keys.filter(M=>M.isSigner).map(M=>M.pubkey.toString())).flat()).values()].map(K=>new dt(K));if(g!==t[m]&&l.length<12&&(Kt({instructions:A,payer:this.feePayer,signers:S})||Kt({instructions:h,payer:this.feePayer,signers:S})))l.push(g);else{if(l.length===0)throw Error("item ins too big");m+=g===t[m]?1:0,Kt({instructions:n?[...a.instructions,...l]:[...l],payer:this.feePayer,signers:S})?u.push(new Ct().add(...a.instructions,...l)):u.push(new Ct().add(...l)),c.push(Array.from(new Set(l.map(K=>K.keys.filter(M=>M.isSigner).map(M=>M.pubkey.toString())).flat())).map(K=>s[K]).filter(K=>K!==void 0)),l=[g]}}),l.length>0){let h=[...new Set(l.map(A=>A.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(A=>s[A]).filter(A=>A!==void 0);Kt({instructions:n?[...a.instructions,...l]:[...l],payer:this.feePayer,signers:h.map(A=>A.publicKey)})?u.push(new Ct().add(...a.instructions,...l)):u.push(new Ct().add(...l)),c.push(h)}return u.forEach(g=>g.feePayer=this.feePayer),(P=this.owner)!=null&&P.signer&&c.forEach(g=>{g.some(h=>h.publicKey.equals(this.owner.publicKey))||g.push(this.owner.signer)}),{builder:this,transactions:u,signers:c,instructionTypes:this.instructionTypes,execute:async g=>{var v;let{sequentially:h,onTxUpdate:A,skipTxCount:T=0,recentBlockHash:S,skipPreflight:K=!0}=g||{},M=S!=null?S:await mt(this.connection,this.blockhashCommitment);if(u.forEach(async(b,I)=>{b.recentBlockhash=M,c[I].length&&b.sign(...c[I])}),Je(u),(v=this.owner)!=null&&v.isKeyPair){if(h){let b=0,I=[];for(let x of u){if(++b,b<=T){I.push("tx skipped");continue}let O=await On(this.connection,x,this.signers.find(R=>R.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:K});I.push(O)}return{txIds:I,signedTxs:u}}return{txIds:await Promise.all(u.map(async b=>await this.connection.sendRawTransaction(b.serialize(),{skipPreflight:K}))),signedTxs:u}}if(this.signAllTransactions){let b=await this.signAllTransactions(u.slice(T,u.length)),I=[...u.slice(0,T),...b];if(h){let x=0,O=[],R=async()=>{if(!I[x])return;x<T&&(O.push({txId:"",status:"success",signedTx:I[x]}),A==null||A([...O]),x++,R());let _=await this.connection.sendRawTransaction(I[x].serialize(),{skipPreflight:K});O.push({txId:_,status:"sent",signedTx:I[x]}),A==null||A([...O]),x++;let $=!1,U=null,N=null,H=q=>{U!==null&&clearInterval(U),N!==null&&this.connection.removeSignatureListener(N);let oe=O.findIndex(Te=>Te.txId===_);if(oe>-1){if(O[oe].status==="error"||O[oe].status==="success")return;O[oe].status=q.err?"error":"success"}A==null||A([...O]),q.err||R()};this.loopMultiTxStatus&&(U=setInterval(async()=>{var q;if($){clearInterval(U);return}try{let oe=await this.connection.getTransaction(_,{commitment:"confirmed",maxSupportedTransactionVersion:0});oe&&($=!0,clearInterval(U),H({err:((q=oe.meta)==null?void 0:q.err)||null}),console.log("tx status from getTransaction:",_))}catch(oe){$=!0,clearInterval(U),console.error("getTransaction timeout:",oe,_)}},Jt)),N=this.connection.onSignature(_,q=>{if($){this.connection.removeSignatureListener(N);return}$=!0,H(q)},"confirmed"),this.connection.getSignatureStatus(_)};return await R(),{txIds:O.map(_=>_.txId),signedTxs:I}}else{let x=[];for(let O=0;O<I.length;O+=1){let R=await this.connection.sendRawTransaction(I[O].serialize(),{skipPreflight:K});x.push(R)}return{txIds:x,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuildV0(e){var v;let M=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:o={},lookupTableAddress:a=[],insCountLimit:s=12}=M,u=Ce(M,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),c=L(L({},this.cluster==="devnet"?await Rn(this.connection):await Cn(this.connection)),o),l=Array.from(new Set([...this.lookupTableAddress,...a])),m=[];for(let b of l)c[b]===void 0&&m.push(new dt(b));let p=await xn({connection:this.connection,address:m});for(let[b,I]of Object.entries(p))c[b]=I;let P=t?jt(t):{instructions:[],instructionTypes:[]},g=await mt(this.connection,this.blockhashCommitment),h=this.signers.reduce((b,I)=>E(L({},b),{[I.publicKey.toBase58()]:I}),{}),A=[],T=[],S=[],K=0;if(this.allInstructions.forEach(b=>{let I=[...S,b],x=t?[...P.instructions,...I]:I;if(b!==n[K]&&S.length<s&&(xt({instructions:x,payer:this.feePayer,lookupTableAddressAccount:c})||xt({instructions:I,payer:this.feePayer,lookupTableAddressAccount:c})))S.push(b);else{if(S.length===0)throw Error("item ins too big");K+=b===n[K]?1:0;let O={};for(let R of[...new Set(l)])c[R]!==void 0&&(O[R]=c[R]);if(t&&xt({instructions:[...P.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:g})){let R=new Rt({payerKey:this.feePayer,recentBlockhash:g,instructions:[...P.instructions,...S]}).compileToV0Message(Object.values(c));A.push(new Lt(R))}else{let R=new Rt({payerKey:this.feePayer,recentBlockhash:g,instructions:[...S]}).compileToV0Message(Object.values(c));A.push(new Lt(R))}T.push(Array.from(new Set(S.map(R=>R.keys.filter(_=>_.isSigner).map(_=>_.pubkey.toString())).flat())).map(R=>h[R]).filter(R=>R!==void 0)),S=[b]}}),S.length>0){let I=[...new Set(S.map(x=>x.keys.filter(O=>O.isSigner).map(O=>O.pubkey.toString())).flat()).values()].map(x=>h[x]).filter(x=>x!==void 0);if(t&&xt({instructions:[...P.instructions,...S],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:g})){let x=new Rt({payerKey:this.feePayer,recentBlockhash:g,instructions:[...P.instructions,...S]}).compileToV0Message(Object.values(c));A.push(new Lt(x))}else{let x=new Rt({payerKey:this.feePayer,recentBlockhash:g,instructions:[...S]}).compileToV0Message(Object.values(c));A.push(new Lt(x))}T.push(I)}return(v=this.owner)!=null&&v.signer&&T.forEach(b=>{b.some(I=>I.publicKey.equals(this.owner.publicKey))||b.push(this.owner.signer)}),A.forEach((b,I)=>{b.sign(T[I])}),{builder:this,transactions:A,buildProps:e,signers:T,instructionTypes:this.instructionTypes,execute:async b=>{var $;let{sequentially:I,onTxUpdate:x,skipTxCount:O=0,recentBlockHash:R,skipPreflight:_=!0}=b||{};if(A.map(async(U,N)=>{T[N].length&&U.sign(T[N]),R&&(U.message.recentBlockhash=R)}),Je(A),($=this.owner)!=null&&$.isKeyPair){if(I){let U=0,N=[];for(let H of A){if(++U,U<=O){console.log("skip tx: ",U),N.push("tx skipped");continue}let q=await this.connection.sendTransaction(H,{skipPreflight:_});await $t(this.connection,q),N.push(q)}return{txIds:N,signedTxs:A}}return{txIds:await Promise.all(A.map(async U=>await this.connection.sendTransaction(U,{skipPreflight:_}))),signedTxs:A}}if(this.signAllTransactions){let U=await this.signAllTransactions(A.slice(O,A.length)),N=[...A.slice(0,O),...U];if(I){let H=0,q=[],oe=async()=>{if(!N[H])return;if(H<O){q.push({txId:"",status:"success",signedTx:N[H]}),x==null||x([...q]),H++,oe();return}let Te=await this.connection.sendTransaction(N[H],{skipPreflight:_});q.push({txId:Te,status:"sent",signedTx:N[H]}),x==null||x([...q]),H++;let wt=!1,ot=null,Dt=null,$n=je=>{ot!==null&&clearInterval(ot),Dt!==null&&this.connection.removeSignatureListener(Dt);let We=q.findIndex(Bi=>Bi.txId===Te);if(We>-1){if(q[We].status==="error"||q[We].status==="success")return;q[We].status=je.err?"error":"success"}x==null||x([...q]),je.err||oe()};this.loopMultiTxStatus&&(ot=setInterval(async()=>{var je;if(wt){clearInterval(ot);return}try{let We=await this.connection.getTransaction(Te,{commitment:"confirmed",maxSupportedTransactionVersion:0});We&&(wt=!0,clearInterval(ot),$n({err:((je=We.meta)==null?void 0:je.err)||null}),console.log("tx status from getTransaction:",Te))}catch(We){wt=!0,clearInterval(ot),console.error("getTransaction timeout:",We,Te)}},Jt)),Dt=this.connection.onSignature(Te,je=>{if(wt){this.connection.removeSignatureListener(Dt);return}wt=!0,$n(je)},"confirmed"),this.connection.getSignatureStatus(Te)};return oe(),{txIds:[],signedTxs:N}}else{let H=[];for(let q=0;q<N.length;q+=1){let oe=await this.connection.sendTransaction(N[q],{skipPreflight:_});H.push(oe)}return{txIds:H,signedTxs:N}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:u||{}}}};var Nn=(...r)=>r.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Ae=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=G(t)}createTxBuilder(e){return this.scope.checkOwner(),new en({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(Nn(e))}logInfo(...e){this.logger.info(Nn(e))}logAndCreateError(...e){let t=Nn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as ad,SystemProgram as ud}from"@solana/web3.js";import md from"bn.js";import{createCloseAccountInstruction as yd,createInitializeAccountInstruction as bd,createTransferInstruction as gd,TOKEN_PROGRAM_ID as Pd}from"@solana/spl-token";import{Keypair as Ym,PublicKey as Qm}from"@solana/web3.js";import jm from"bn.js";import{TOKEN_PROGRAM_ID as ed}from"@solana/spl-token";import{PublicKey as kr}from"@solana/web3.js";import Fo,{isBN as vo}from"bn.js";import{bits as lr,BitStructure as $l,blob as mr,Blob as Jl,cstr as em,f32 as tm,f32be as nm,f64 as om,f64be as im,greedy as rm,Layout as dr,ns64 as am,ns64be as sm,nu64 as um,nu64be as cm,offset as pr,s16 as lm,s16be as mm,s24 as dm,s24be as pm,s32 as fr,s32be as fm,s40 as ym,s40be as bm,s48 as gm,s48be as Pm,s8 as Am,seq as yr,struct as wm,Structure as br,u16 as gr,u16be as km,u24 as Tm,u24be as hm,u32 as Pr,u32be as Im,u40 as Bm,u40be as Sm,u48 as Km,u48be as xm,u8 as Ar,UInt as wr,union as Cm,Union as Rm,unionLayoutDiscriminator as Lm,utf8 as Om}from"@solana/buffer-layout";var tn=dr,Lo=br;var Mn=wr;var Oo=Ar,se=gr;var nn=Pr;var Le=fr;var No=yr;var W=mr;var Fn=lr,Mo=pr;var tt=class extends tn{constructor(t,n,o){super(t,o);this.blob=W(t),this.signed=n}decode(t,n=0){let o=new Fo(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 Fo(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,o)}},on=class extends tn{constructor(t){super(8,t);this._lower=Fn(nn(),!1),this._upper=Fn(nn(),!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),a=this._upper.decode(t,n+this._lower.span);return L(L({},o),a)}encode(t,n,o=0){return this._lower.encode(t,n,o)+this._upper.encode(t,n,o+this._lower.span)}};function w(r){return new Mn(1,r)}function te(r){return new Mn(4,r)}function i(r){return new tt(8,!1,r)}function D(r){return new tt(16,!1,r)}function Vo(r){return new tt(1,!0,r)}function pt(r){return new tt(8,!0,r)}function _o(r){return new tt(16,!0,r)}var Ot=class extends tn{constructor(t,n,o,a){super(t.span,a);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 d(r){return new Ot(W(32),e=>new kr(e),e=>e.toBuffer(),r)}function Ke(r){return new Ot(Oo(),Tr,hr,r)}function Tr(r){if(r===0)return!1;if(r===1)return!0;throw new Error("Invalid bool: "+r)}function hr(r){return r?1:0}function Eo(r,e){let t=nn("length"),n=k([t,B(r,Mo(t,-t.span),"values")]);return new Ot(n,({values:o})=>o,o=>({values:o}),e)}var vn=class extends Lo{decode(e,t){return super.decode(e,t)}};function k(r,e,t){return new vn(r,e,t)}function B(r,e,t){let n,o=typeof e=="number"?e:vo(e)?e.toNumber():new Proxy(e,{get(a,s){if(!n){let u=Reflect.get(a,"count");n=vo(u)?u.toNumber():u,Reflect.set(a,"count",n)}return Reflect.get(a,s)},set(a,s,u){return s==="count"&&(n=u),Reflect.set(a,s,u)}});return No(r,o,t)}var rn=k([d("mint"),d("owner"),i("amount"),te("delegateOption"),d("delegate"),w("state"),te("isNativeOption"),i("isNative"),i("delegatedAmount"),te("closeAuthorityOption"),d("closeAuthority")]);import{PublicKey as Qb,SystemProgram as Zb}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as jb}from"@solana/spl-token";import{PublicKey as zd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Yd}from"@solana/spl-token";import{PublicKey as V}from"@solana/web3.js";var Wo=new V("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),qo=new V("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Uo=new V("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Vn=new V("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),jd=new V("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Br=new V("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Go=new V("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),zo=new V("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),$d=new V("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Sr=new V("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Xo=new V("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Kr=new V("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),xr=new V("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Yo=new V("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Jd=new V("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Cr=new V("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),_n=new V("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Rr=new V("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),ep=new V("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Lr=new V("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Or=new V("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Nr=new V("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),tp=new V("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),np=new V("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),op=new V("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),ip=new V("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),rp=new V("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Ze={OPEN_BOOK_PROGRAM:new V("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new V("Ray1111111111111111111111111111111111111111"),AMM_V4:new V("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new V("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new V("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new V("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new V("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new V("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new V("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new V("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new V("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new V("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:V.default,Router:new V("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new V("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new V("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new V("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new V("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new V("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new V("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new V("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new V("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new V("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new V("Ray1111111111111111111111111111111111111111")};import sg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as Bf,TOKEN_2022_PROGRAM_ID as Sf,TOKEN_PROGRAM_ID as Kf}from"@solana/spl-token";import{PublicKey as Cf}from"@solana/web3.js";import Lf from"bn.js";import Nf from"decimal.js";import{TOKEN_PROGRAM_ID as Ap}from"@solana/spl-token";import{PublicKey as hp}from"@solana/web3.js";var Mr=k([te("mintAuthorityOption"),d("mintAuthority"),i("supply"),w("decimals"),w("isInitialized"),te("freezeAuthorityOption"),d("freezeAuthority")]);var ft=o=>{var a=o,{address:r,programId:e,decimals:t}=a,n=Ce(a,["address","programId","decimals"]);return L({chainId:101,address:Xe(r).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)};import{ASSOCIATED_TOKEN_PROGRAM_ID as Jp,TOKEN_2022_PROGRAM_ID as ef,TOKEN_PROGRAM_ID as tf}from"@solana/spl-token";import{Keypair as rf,PublicKey as af,SystemProgram as uf,TransactionInstruction as cf}from"@solana/web3.js";import mf from"bn.js";var Fr=k([W(8),w("bump"),se("index"),d("owner"),te("protocolFeeRate"),te("tradeFeeRate"),se("tickSpacing"),te("fundFeeRate"),B(te(),1),d("fundOwner"),B(i(),3)]),vr=k([te("blockTimestamp"),pt("tickCumulative"),B(i(),4)]),Qo=k([W(8),Ke("initialized"),i("recentEpoch"),se("observationIndex"),d("poolId"),B(vr,co,"observations"),B(i(),4)]),Vr=k([se("filterPeriod"),se("decayPeriod"),se("reductionFactor"),te("dynamicFeeControl"),te("maxVolatilityAccumulator"),Le("tickSpacingIndexReference"),te("volatilityReference"),te("volatilityAccumulator"),i("lastUpdateTimestamp"),B(w(),46)]),_r=k([w("state"),i("openTime"),i("endTime"),i("lastUpdateTime"),D("emissionsPerSecondX64"),i("totalEmissioned"),i("claimed"),d("mint"),d("vault"),d("creator"),D("growthGlobalX64")]),sn=k([W(8),w("bump"),d("configId"),d("creator"),d("mintA"),d("mintB"),d("vaultA"),d("vaultB"),d("observationId"),w("mintDecimalsA"),w("mintDecimalsB"),se("tickSpacing"),D("liquidity"),D("sqrtPriceX64"),Le("tickCurrent"),te(),D("feeGrowthGlobalX64A"),D("feeGrowthGlobalX64B"),i("protocolFeesTokenA"),i("protocolFeesTokenB"),B(D(),4),w("status"),w("feeOn"),W(6),B(_r,Tt,"rewardInfos"),W(8*16,"tickArrayBitmap"),B(i(),4),i("fundFeesTokenA"),i("fundFeesTokenB"),i("startTime"),i("recentEpoch"),Vr.replicate("dynamicFeeInfo"),B(i(),46)]),Er=k([D("growthInsideLastX64"),i("rewardAmountOwed")]),Dr=k([W(8),w("bump"),d("nftMint"),d("poolId"),Le("tickLower"),Le("tickUpper"),D("liquidity"),D("feeGrowthInsideLastX64A"),D("feeGrowthInsideLastX64B"),i("tokenFeesOwedA"),i("tokenFeesOwedB"),B(Er,Tt,"rewardInfos"),i("recentEpoch"),B(i(),7)]),vp=k([W(8),w("bump"),d("poolId"),Le("tickLower"),Le("tickUpper"),D("liquidity"),D("feeGrowthInsideLastX64A"),D("feeGrowthInsideLastX64B"),i("tokenFeesOwedA"),i("tokenFeesOwedB"),B(D(),Tt,"rewardGrowthInside"),i("recentEpoch"),B(i(),7)]),Wr=k([Le("tick"),_o("liquidityNet"),D("liquidityGross"),D("feeGrowthOutsideX64A"),D("feeGrowthOutsideX64B"),B(D(),Tt,"rewardGrowthsOutsideX64"),i("orderPhase"),i("ordersAmount"),i("partFilledOrdersRemaining"),D("unfilledRatioX64"),B(te(),3)]),yt=k([W(8),d("poolId"),Le("startTickIndex"),B(Wr,Pe,"ticks"),w("initializedTickCount"),i("recentEpoch"),B(w(),107)]),qr=k([W(8),w("bump"),B(d(),lo,"operationOwners"),B(d(),mo,"whitelistMints")]),Ur=k([W(8),d("poolId"),d("owner"),Le("tick"),Ke("zeroForOne"),i("orderPhase"),i("totalAmount"),i("filledAmount"),i("settleBase"),i("settleOutput"),i("openTime"),D("unfilledRatioX64"),B(i(),4)]),un=k([W(8),d("poolId"),W(8*8*rt,"positiveTickArrayBitmap"),W(8*8*rt,"negativeTickArrayBitmap")]),Vp=k([W(8),se("index"),se("filterPeriod"),se("decayPeriod"),se("reductionFactor"),te("dynamicFeeControl"),te("maxVolatilityAccumulator"),B(i(),8)]),Gr=k([W(8),d("wallet"),w("nonceIndex"),i("orderNonce"),B(i(),4)]),_p=k([i(),w("bump"),d("owner"),d("poolId"),d("positionId"),d("nftAccount"),B(i(),8)]),zr=k([W(8),w("bump"),d("lockOwner"),d("poolId"),d("positionId"),d("nftAccount"),d("lockNftMint"),i("recentEpoch"),B(i(),8)]);import Xr from"bn.js";function En(r){let e=Buffer.alloc(2);return e.writeUInt16LE(r),e}function Dn(r){let e=Buffer.alloc(2);return e.writeUInt16BE(r),e}function Wn(r){let e=Buffer.alloc(4);return e.writeInt32LE(r),e}function Zo(r){let e=Buffer.alloc(4);return e.writeInt32BE(r),e}function Ho(r){return(typeof r=="number"||typeof r=="bigint")&&(r=new Xr(r.toString())),r.toArrayLike(Buffer,"be",8)}function jo(r){let e=new ArrayBuffer(1);return new DataView(e).setUint8(0,r),new Uint8Array(e)}var Yr=Buffer.from("amm_config","utf8"),qn=Buffer.from("pool","utf8"),$o=Buffer.from("pool_vault","utf8"),Qr=Buffer.from("pool_reward_vault","utf8"),Jo=Buffer.from("position","utf8"),Zr=Buffer.from("tick_array","utf8"),Hr=Buffer.from("operation","utf8"),jr=Buffer.from("pool_tick_array_bitmap_extension","utf8"),$r=Buffer.from("observation","utf8"),Jr=Buffer.from("support_mint","utf8"),ea=Buffer.from("dynamic_fee_config","utf8"),ta=Buffer.from("permission","utf8");function Xp(r,e){return Q([Yr,Dn(e)],r)}function na(r,e,t,n){return Q([qn,e.toBuffer(),t.toBuffer(),n.toBuffer()],r)}function oa(r,e){return Q([ta,e.toBuffer()],r)}function ia(r,e,t,n,o){return Q([qn,e.toBuffer(),t.toBuffer(),n.toBuffer(),En(o)],r)}function ei(r,e,t){return Q([$o,e.toBuffer(),t.toBuffer()],r)}function ra(r,e,t){return Q([Qr,e.toBuffer(),t.toBuffer()],r)}function He(r,e,t){return Q([Zr,e.toBuffer(),Zo(t)],r)}function ti(r,e,t,n){return Q([Jo,e.toBuffer(),Wn(t),Wn(n)],r)}function ni(r,e){return Q([Jo,e.toBuffer()],r)}function Un(r){return Q([Buffer.from("metadata","utf8"),st.toBuffer(),r.toBuffer()],st)}function oi(r){return Q([Hr],r)}function Ye(r,e){return Q([jr,e.toBuffer()],r)}function aa(r,e){return Q([$r,e.toBuffer()],r)}function sa(r,e){return Q([Jr,e.toBuffer()],r)}function ua(r,e,t,n){return Q([e.toBuffer(),t.toBuffer(),Ho(n)],r)}function Yp(r,e){return Q([ea,Dn(e)],r)}function ca(r,e,t){return Q([e.toBuffer(),jo(t)],r)}var ii=Buffer.from("locked_position","utf8");function la(r,e){return Q([ii,e.toBuffer()],r)}function ri(r,e){return Q([ii,e.toBuffer()],r)}import{sha256 as ma}from"js-sha256";function pe(r){let e=`global:${r}`;return Buffer.from(ma.digest(e)).slice(0,8)}Qo.span;var Af=G("Raydium_Clmm"),wf={createPool:pe("create_pool"),createCustomizablePool:pe("create_customizable_pool"),createPermissionedPool:pe("create_permissioned_pool"),openPositionV2:pe("open_position_v2"),openPositionWithToken22Nft:pe("open_position_with_token22_nft"),closePosition:pe("close_position"),increaseLiquidityV2:pe("increase_liquidity_v2"),decreaseLiquidityV2:pe("decrease_liquidity_v2"),initializeReward:pe("initialize_reward"),setRewardParams:pe("set_reward_params"),updateRewardInfos:pe("update_reward_infos"),collectRemainingRewards:pe("collect_remaining_rewards"),swapV2:pe("swap_v2"),openLimitOrder:pe("open_limit_order"),increaseLimitOrder:pe("increase_limit_order"),decreaseLimitOrder:pe("decrease_limit_order"),settleLimitOrder:pe("settle_limit_order"),closeLimitOrder:pe("close_limit_order")};import{PublicKey as Xn}from"@solana/web3.js";var ya=k([w("instruction")]),ba=k([w("instruction")]),ga=k([i("rewardState"),i("rewardOpenTime"),i("rewardEndTime"),i("rewardLastUpdateTime"),i("totalReward"),i("totalRewardEmissioned"),i("rewardClaimed"),i("rewardPerSecond"),D("accRewardPerShare"),d("rewardVault"),d("rewardMint"),d("rewardSender"),i("rewardType"),B(i(),15,"padding")]),Pa=k([i("state"),i("nonce"),d("lpVault"),d("rewardVault"),d(),d(),i(),i(),i("totalReward"),D("perShareReward"),i("lastSlot"),i("perSlotReward")]),Aa=k([i("state"),i("nonce"),d("lpVault"),d("rewardVaultA"),i("totalRewardA"),D("perShareRewardA"),i("perSlotRewardA"),w("option"),d("rewardVaultB"),W(7),i("totalRewardB"),D("perShareRewardB"),i("perSlotRewardB"),i("lastSlot"),d()]),wa=k([i(),i("state"),i("nonce"),i("validRewardTokenNum"),D("rewardMultiplier"),i("rewardPeriodMax"),i("rewardPeriodMin"),i("rewardPeriodExtend"),d("lpMint"),d("lpVault"),B(ga,5,"rewardInfos"),d("creator"),d(),B(i(),32,"padding")]),ka=new Proxy(Pa,{get(r,e,t){return e==="decode"?(...n)=>{let o=r.decode(...n);return E(L({},o),{version:3,rewardInfos:[{rewardVault:o.rewardVault,totalReward:o.totalReward,perSlotReward:o.perSlotReward,perShareReward:o.perShareReward}]})}:Reflect.get(r,e,t)}}),Ta=new Proxy(Aa,{get(r,e,t){return e==="decode"?(...n)=>{let o=r.decode(...n);return E(L({},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(r,e,t)}}),ui=new Proxy(wa,{get(r,e,t){return e==="decode"?(...n)=>{let o=r.decode(...n);return E(L({},o),{version:6,rewardInfos:o.rewardInfos.map(a=>{var s;return E(L({},a),{rewardType:((s=Object.entries(Mt).find(u=>String(u[1])===a.rewardType.toString()))!=null?s:["Standard SPL"])[0]})})})}:Reflect.get(r,e,t)}}),ha=k([i("isSet"),i("rewardPerSecond"),i("rewardOpenTime"),i("rewardEndTime"),i("rewardType")]),Ia=k([w("instruction"),i("nonce"),B(ha,5,"rewardTimeInfo")]),Ba=k([w("instruction"),i("rewardReopenTime"),i("rewardEndTime"),i("rewardPerSecond")]),Sa=k([w("instruction"),i("isSet"),i("rewardPerSecond"),i("rewardOpenTime"),i("rewardEndTime"),i("rewardType")]),dy=k([i("state"),d("id"),d("owner"),i("deposited"),B(i(),1,"rewardDebts")]),ci=k([i("state"),d("id"),d("owner"),i("deposited"),B(D(),1,"rewardDebts"),i(""),i("voteLockedBalance"),B(i(),15)]),py=k([i("state"),d("id"),d("owner"),i("deposited"),B(i(),2,"rewardDebts")]),Ka=k([i("state"),d("id"),d("owner"),i("deposited"),B(D(),2,"rewardDebts"),B(i(),17)]),xa=k([i(),i("state"),d("id"),d("owner"),i("deposited"),B(D(),5,"rewardDebts"),B(i(),16)]),Ca=k([w("instruction"),i("amount")]),Ra=k([d("mint"),d("grantAuthority"),i("baselineVoteWeightScaledFactor"),i("maxExtraLockupVoteWeightScaledFactor"),i("lockupSaturationSecs"),Vo("digitShift"),B(w(),7,"reserved1"),B(i(),7,"reserved2")]),La=k([W(8),d("governanceProgramId"),d("realm"),d("realmGoverningTokenMint"),d("realmAuthority"),B(w(),32,"reserved1"),B(Ra,4,"votingMints"),pt("timeOffset"),w("bump"),B(w(),7,"reserved2"),B(i(),11,"reserved3")]),Oa=k([pt("startTime"),pt("endTime"),w("kind"),B(w(),15,"reserved")]),Na=k([B(Oa,1,"lockup"),i("amountDeposited_native"),i("amountInitiallyLockedNative"),Ke("isUsed"),Ke("allowClawback"),w("votingMintConfigIdx"),B(w(),29,"reserved")]),Ma=k([W(8),d("voterAuthority"),d("registrar"),B(Na,32,"deposits"),w("voterBump"),w("voterWweightRecordBump"),B(w(),94,"reserved")]);import{NATIVE_MINT as Ty}from"@solana/spl-token";var hy=G("Raydium_farm_config"),Fa=new Xn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),va=new Xn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Iy=new Xn("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var Mt={"Standard SPL":0,"Option tokens":1},li={[Wo.toString()]:3,[qo.toString()]:4,[Uo.toString()]:5,[Vn.toString()]:6,[Ze.FARM_PROGRAM_ID_V3.toString()]:3,[Ze.FARM_PROGRAM_ID_V4.toString()]:4,[Ze.FARM_PROGRAM_ID_V5.toString()]:5,[Ze.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as cb,SystemProgram as lb,SYSVAR_CLOCK_PUBKEY as mb,SYSVAR_RENT_PUBKEY as db,TransactionInstruction as pb}from"@solana/web3.js";import yb from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as gb,createAssociatedTokenAccountIdempotentInstruction as Pb,TOKEN_PROGRAM_ID as Ab}from"@solana/spl-token";import Ey from"bn.js";import{PublicKey as Ry}from"@solana/web3.js";import Oy from"bn.js";var $y=G("Raydium.farm.util");var Rb=G("Raydium_farm_instruction"),Lb={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};import Pg from"bn.js";import{PublicKey as IA}from"@solana/web3.js";import{AccountLayout as KA,MintLayout as xA,NATIVE_MINT as CA,TOKEN_PROGRAM_ID as LA}from"@solana/spl-token";import Oe from"bn.js";var Ft=1e4;function ke(r,e,t,n){if(e===void 0)return{amount:r,fee:void 0,expirationTime:void 0};let o=E(L({},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}}),a=t.epoch<o.newerTransferFee.epoch?o.olderTransferFee:o.newerTransferFee,s=new Oe(a.maximumFee.toString()),u=t.epoch<o.newerTransferFee.epoch?(Number(o.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(a.transferFeeBasisPoints===Ft){let c=new Oe(a.maximumFee.toString());return{amount:r.add(c),fee:c,expirationTime:u}}else{let c=cn(r.mul(new Oe(Ft)),new Oe(Ft-a.transferFeeBasisPoints)),l=new Oe(a.maximumFee.toString()),m=c.sub(r).gt(l)?r.add(l):c,p=cn(m.mul(new Oe(a.transferFeeBasisPoints)),new Oe(Ft)),P=p.gt(s)?s:p;return{amount:m,fee:P,expirationTime:u}}else{let c=cn(r.mul(new Oe(a.transferFeeBasisPoints)),new Oe(Ft)),l=c.gt(s)?s:c;return{amount:r,fee:l,expirationTime:u}}}function vt(r,e){return r===void 0?e:e===void 0?r:Math.min(r,e)}function cn(r,e){let{div:t,mod:n}=r.divmod(e);return n.gt(new Oe(0))?t.add(new Oe(1)):t}import di from"bn.js";var Ga=new di(25),za=new di(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as qg,TOKEN_PROGRAM_ID as Ug}from"@solana/spl-token";import{PublicKey as zg,SystemProgram as Xg,SYSVAR_RENT_PUBKEY as Yg,TransactionInstruction as Qg}from"@solana/web3.js";import nP from"bn.js";var Xa=k([w("instruction"),i("amountIn"),i("minAmountOut")]),Ya=k([w("instruction"),i("maxAmountIn"),i("amountOut")]),_g=k([w("instruction"),w("nonce")]),Qa=k([w("instruction"),w("nonce"),i("startTime")]),pi=k([i("status"),i("nonce"),i("maxOrder"),i("depth"),i("baseDecimal"),i("quoteDecimal"),i("state"),i("resetFlag"),i("minSize"),i("volMaxCutRatio"),i("amountWaveRatio"),i("baseLotSize"),i("quoteLotSize"),i("minPriceMultiplier"),i("maxPriceMultiplier"),i("systemDecimalValue"),i("minSeparateNumerator"),i("minSeparateDenominator"),i("tradeFeeNumerator"),i("tradeFeeDenominator"),i("pnlNumerator"),i("pnlDenominator"),i("swapFeeNumerator"),i("swapFeeDenominator"),i("baseNeedTakePnl"),i("quoteNeedTakePnl"),i("quoteTotalPnl"),i("baseTotalPnl"),i("poolOpenTime"),i("punishPcAmount"),i("punishCoinAmount"),i("orderbookToInitTime"),D("swapBaseInAmount"),D("swapQuoteOutAmount"),i("swapBase2QuoteFee"),D("swapQuoteInAmount"),D("swapBaseOutAmount"),i("swapQuote2BaseFee"),d("baseVault"),d("quoteVault"),d("baseMint"),d("quoteMint"),d("lpMint"),d("openOrders"),d("marketId"),d("marketProgramId"),d("targetOrders"),d("withdrawQueue"),d("lpVault"),d("owner"),i("lpReserve"),B(i(),3,"padding")]),Eg=k([i("accountType"),i("status"),i("nonce"),i("maxOrder"),i("depth"),i("baseDecimal"),i("quoteDecimal"),i("state"),i("resetFlag"),i("minSize"),i("volMaxCutRatio"),i("amountWaveRatio"),i("baseLotSize"),i("quoteLotSize"),i("minPriceMultiplier"),i("maxPriceMultiplier"),i("systemDecimalsValue"),i("abortTradeFactor"),i("priceTickMultiplier"),i("priceTick"),i("minSeparateNumerator"),i("minSeparateDenominator"),i("tradeFeeNumerator"),i("tradeFeeDenominator"),i("pnlNumerator"),i("pnlDenominator"),i("swapFeeNumerator"),i("swapFeeDenominator"),i("baseNeedTakePnl"),i("quoteNeedTakePnl"),i("quoteTotalPnl"),i("baseTotalPnl"),i("poolOpenTime"),i("punishPcAmount"),i("punishCoinAmount"),i("orderbookToInitTime"),D("swapBaseInAmount"),D("swapQuoteOutAmount"),D("swapQuoteInAmount"),D("swapBaseOutAmount"),i("swapQuote2BaseFee"),i("swapBase2QuoteFee"),d("baseVault"),d("quoteVault"),d("baseMint"),d("quoteMint"),d("lpMint"),d("modelDataAccount"),d("openOrders"),d("marketId"),d("marketProgramId"),d("targetOrders"),d("owner"),B(i(),64,"padding")]),Za=k([w("instruction"),i("baseAmountIn"),i("quoteAmountIn"),i("fixedSide"),i("otherAmountMin")]),Ha=k([w("instruction"),i("lpAmount"),i("baseAmountMin"),i("quoteAmountMin")]);var ja=k([i("fee")]);var rP=G("Raydium_liquidity_instruction");var $a=5e4,Ja=k([i("x"),i("y"),i("price")]),cP=k([i("accountType"),i("status"),i("multiplier"),i("validDataCount"),B(Ja,$a,"DataElement")]);import{PublicKey as kP}from"@solana/web3.js";import hP from"decimal.js";import{TOKEN_PROGRAM_ID as BP}from"@solana/spl-token";import{PublicKey as pP}from"@solana/web3.js";var bP=G("Raydium_liquidity_serum");import jA from"bn.js";import JA from"decimal.js";import{TOKEN_PROGRAM_ID as $P}from"@solana/spl-token";import{PublicKey as eA}from"@solana/web3.js";import nA from"bn.js";import{SystemProgram as EP,SYSVAR_RENT_PUBKEY as DP,Transaction as WP,TransactionInstruction as qP}from"@solana/web3.js";import{createInitializeAccountInstruction as GP,TOKEN_PROGRAM_ID as zP}from"@solana/spl-token";function es(r="accountFlags"){let e=new on(r);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var ts=k([W(5),es("accountFlags"),d("ownAddress"),i("vaultSignerNonce"),d("baseMint"),d("quoteMint"),d("baseVault"),i("baseDepositsTotal"),i("baseFeesAccrued"),d("quoteVault"),i("quoteDepositsTotal"),i("quoteFeesAccrued"),i("quoteDustThreshold"),d("requestQueue"),d("eventQueue"),d("bids"),d("asks"),i("baseLotSize"),i("quoteLotSize"),i("feeRateBps"),i("referrerRebatesAccrued"),W(7)]);import{PublicKey as Ik}from"@solana/web3.js";import{AccountLayout as Sk,NATIVE_MINT as Kk,TOKEN_2022_PROGRAM_ID as xk,TOKEN_PROGRAM_ID as Ck,createAssociatedTokenAccountIdempotentInstruction as Rk}from"@solana/spl-token";import hw from"bn.js";import us from"bn.js";var cw=new us(0);import yw from"bn.js";import cs from"bn.js";var xe=new cs(1e6);import _k from"bn.js";import Dk from"decimal.js";import{PublicKey as Ww,TransactionInstruction as qw,Keypair as Gw,SystemProgram as zw}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Yw,TOKEN_2022_PROGRAM_ID as Qw,TOKEN_PROGRAM_ID as Zw}from"@solana/spl-token";var xw=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Cw=Buffer.from("amm_config","utf8"),Rw=Buffer.from("pool","utf8"),Lw=Buffer.from("pool_lp_mint","utf8"),Ow=Buffer.from("pool_vault","utf8"),Nw=Buffer.from("observation","utf8"),Mw=Buffer.from("permission","utf8"),Fw=Buffer.from("support_mint","utf8");var vw=Buffer.from("locked_liquidity","utf8");var nk=G("Raydium_cpmm"),ok={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])};var ds=k([W(8),w("bump"),Ke("disableCreatePool"),se("index"),i("tradeFeeRate"),i("protocolFeeRate"),i("fundFeeRate"),i("createPoolFee"),d("protocolOwner"),d("fundOwner"),i("creatorFeeRate"),B(i(),15)]),fi=k([W(8),d("configId"),d("poolCreator"),d("vaultA"),d("vaultB"),d("mintLp"),d("mintA"),d("mintB"),d("mintProgramA"),d("mintProgramB"),d("observationId"),w("bump"),w("status"),w("lpDecimals"),w("mintDecimalA"),w("mintDecimalB"),i("lpAmount"),i("protocolFeesMintA"),i("protocolFeesMintB"),i("fundFeesMintA"),i("fundFeesMintB"),i("openTime"),i("epoch"),w("feeOn"),Ke("enableCreatorFee"),B(w(),6),i("creatorFeesMintA"),i("creatorFeesMintB"),B(i(),28)]),ak=k([W(8),d("configId"),B(i(),30)]);import{PublicKey as TK,SystemProgram as hK}from"@solana/web3.js";import{createTransferInstruction as BK,TOKEN_PROGRAM_ID as SK,TOKEN_2022_PROGRAM_ID as KK,createAssociatedTokenAccountIdempotentInstruction as xK,createSyncNativeInstruction as RK,createTransferCheckedInstruction as LK}from"@solana/spl-token";import Rs from"bn.js";import MK from"decimal.js";import{PublicKey as ge}from"@solana/web3.js";import fe from"bn.js";import{TOKEN_2022_PROGRAM_ID as gi,TOKEN_PROGRAM_ID as ys}from"@solana/spl-token";import z from"decimal.js";import ln from"bn.js";import bi from"decimal.js";var ne=class{static getDeltaAmountAUnsigned(e,t,n,o){e.gt(t)&&([e,t]=[t,e]);let a=n.shln(it),s=t.sub(e);if(!e.gt(C))throw Error("!sqrtPriceX64A.gt(BN_ZERO)");let u=o?zt(J(a,s,t),e):j(a,s,t).div(e);if(u.gt(qe))throw Error("MaxTokenOverflow");return u}static getDeltaAmountBUnsigned(e,t,n,o){e.gt(t)&&([e,t]=[t,e]);let a=o?J(n,t.sub(e),Z):j(n,t.sub(e),Z);if(a.gt(qe))throw Error("MaxTokenOverflow");return a}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 C;e.gt(t)&&([e,t]=[t,e]);let o=j(e,t,Z),a=t.sub(e);return j(n,o,a)}static getLiquidityFromAmountB(e,t,n){if(n.isZero())return C;e.gt(t)&&([e,t]=[t,e]);let o=t.sub(e);return j(n,Z,o)}static getLiquidityFromAmounts(e,t,n,o,a){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return this.getLiquidityFromAmountA(t,n,o);if(e.lt(n)){let s=this.getLiquidityFromAmountA(e,n,o),u=this.getLiquidityFromAmountB(t,e,a);return s.lt(u)?s:u}else return this.getLiquidityFromAmountB(t,n,a)}static getAmountsForLiquidity(e,t,n,o,a){t.gt(n)&&([t,n]=[n,t]);let s=C,u=C;return e.lte(t)?s=this.getDeltaAmountAUnsigned(t,n,o,a):e.lt(n)?(s=this.getDeltaAmountAUnsigned(e,n,o,a),u=this.getDeltaAmountBUnsigned(t,e,o,a)):u=this.getDeltaAmountBUnsigned(t,n,o,a),{amountA:s,amountB:u}}static getAmountsFromLiquidityWithSlippage(e,t,n,o,a,s,u){let{amountA:c,amountB:l}=this.getAmountsForLiquidity(e,t,n,o,s),m=a?1+u:1-u,p=new ln(new bi(c.toString()).mul(m).toFixed(0)),P=new ln(new bi(l.toString()).mul(m).toFixed(0));return{amountSlippageA:p,amountSlippageB:P}}static getLiquidityAndAmountsFromAmount({sqrtPriceCurrentX64:e,sqrtPriceLowerX64:t,sqrtPriceUpperX64:n,amountInfo:o}){let a;if(o.type==="liquidity")a=o.amount;else if(o.type==="amountA")a=e.gte(n)?C:this.getLiquidityFromAmountA(ln.max(e,t),n,o.amount);else if(o.type==="amountB")a=e.lte(t)?C:this.getLiquidityFromAmountB(t,ln.min(e,n),o.amount);else throw Error("amount info type check error");return L({liquidity:a},this.getAmountsForLiquidity(e,t,n,o.amount,!0))}};import gt from"bn.js";import ie from"bn.js";var Vt=class{static getNextSqrtPriceFromAmountARoundingUp(e,t,n,o){if(n.isZero())return e;let a=t.shln(it);if(o){let s=n.mul(e),u=a.add(s);if(u.gte(a))return J(a,e,u);let c=j(a,Be,e);return J(a,Be,c.add(n))}else{let s=n.mul(e);if(a.lte(s))throw new Error("Insufficient liquidity for token0 removal");let u=a.sub(s);return J(a,e,u)}}static getNextSqrtPriceFromAmountBRoundingDown(e,t,n,o){if(n.isZero())return e;if(o){let a=n.shln(it).div(t);return e.add(a)}else{let a=zt(n.shln(it),t);return e.sub(a)}}static getNextSqrtPriceFromInput(e,t,n,o){if(!e.gt(C))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(C))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(C))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(C))throw Error("liquidity.gt(BN_ZERO)");return o?this.getNextSqrtPriceFromAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromAmountARoundingUp(e,t,n,!1)}};var Ne=class{static newValue({poolInfo:e,amountSpecified:t,zeroForOne:n,feeRate:o,blockTimestamp:a}){let s={amountSpecifiedRemaining:t,amountCalculated:C,sqrtPriceX64:e.sqrtPriceX64,tick:e.tickCurrent,feeGrowthGlobalX64:n?e.feeGrowthGlobalX64A:e.feeGrowthGlobalX64B,lpFee:C,protocolFee:C,fundFee:C,liquidity:e.liquidity,sqrtPriceNextX64:C,tickNext:0,baseFeeRate:o,tickSpacing:e.tickSpacing,tickSpacingIndex:0,dynamicFeeInfo:bt.getDynamicFeeInfo({poolInfo:e})};return s.dynamicFeeInfo&&(s.tickSpacingIndex=Et.tickSpacingIndexFromTick(s.tick,s.tickSpacing),bt.updateReference({dynamicFeeInfo:s.dynamicFeeInfo,tickSpacingIndex:s.tickSpacingIndex,currentTimestamp:a})),s}static getTargetPriceBasedOnNextTick({data:e,tickNext:t,zeroForOne:n,sqrtPriceLimitX64:o}){e.tickNext=t,e.tickNext<he?e.tickNext=he:e.tickNext>Ie&&(e.tickNext=Ie),e.sqrtPriceNextX64=F.getSqrtPriceAtTick(e.tickNext);let a;if(n&&e.sqrtPriceNextX64.lt(o)||!n&&e.sqrtPriceNextX64.gt(o)?a=o:a=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(a))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(a.lt(e.sqrtPriceX64))throw Error("targetPrice.lt(data.sqrtPriceX64)")}return a}static updateVolatilityAccumulator({state:e}){!e.dynamicFeeInfo||bt.updateVolatilityAccumulator({state:e.dynamicFeeInfo,tickSpacingIndex:e.tickSpacingIndex})}static computeDynamicFeeRate({data:e,tickSpacing:t}){let n=e.volatilityAccumulator*t,o=n*n,a=uo*kt*kt,s=J(new ie(e.dynamicFeeControl),new ie(o),new ie(a)).toNumber();return s>Gt?Gt:s}static getTotalFeeRate({data:e}){if(e.dynamicFeeInfo){let t=this.computeDynamicFeeRate({data:e.dynamicFeeInfo,tickSpacing:e.tickSpacing}),n=e.baseFeeRate+t;return Math.min(Gt,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,a=n?e.tickSpacingIndex*o:(e.tickSpacingIndex+1)*o,s=Math.max(he,Math.min(Ie,a)),u=F.getSqrtPriceAtTick(s);return n?{isSkipped:!1,boundedPrice:ie.max(t,u)}:{isSkipped:!1,boundedPrice:ie.min(t,u)}}static applySwapAmounts({state:e,amountIn:t,amountOut:n,feeAmount:o,isBaseInput:a,isFeeOnInput:s,protocolFeeRate:u,fundFeeRate:c}){let l=s?t.add(o):t;a?(e.amountSpecifiedRemaining=e.amountSpecifiedRemaining.sub(l),e.amountCalculated=e.amountCalculated.add(n)):(e.amountSpecifiedRemaining=e.amountSpecifiedRemaining.sub(n),e.amountCalculated=e.amountCalculated.add(l)),this.splitFee({state:e,feeAmount:o,protocolFeeRate:u,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,a=Et.tickSpacingIndexFromTick(o,e.tickSpacing);!t&&o%e.tickSpacing===0&&(a=a-1),e.tickSpacingIndex=a,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 a=t;if(n.gt(C)){let s=t.mul(n).div(new ie(xe));e.protocolFee=e.protocolFee.add(s),a=a.sub(s)}if(o.gt(C)){let s=t.mul(o).div(new ie(xe));e.fundFee=e.fundFee.add(s),a=a.sub(s)}if(e.liquidity.gt(C)){let s=j(a,Z,e.liquidity);e.feeGrowthGlobalX64=e.feeGrowthGlobalX64.add(s),e.lpFee=e.lpFee.add(a)}}},_t=class{static newSwapComputationResult({sqrtPriceNextX64:e}){return{sqrtPriceNextX64:e!=null?e:C,amountIn:C,amountOut:C,feeAmount:C}}static calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:o,isBaseInput:a}){if(a)try{return o?ne.getDeltaAmountAUnsigned(t,e,n,!0):ne.getDeltaAmountBUnsigned(e,t,n,!0)}catch(s){if(s.message==="MaxTokenOverflow")return null;throw s}else try{return o?ne.getDeltaAmountBUnsigned(t,e,n,!1):ne.getDeltaAmountAUnsigned(e,t,n,!1)}catch(s){if(s.message==="MaxTokenOverflow")return null;throw s}}static computeSwap(e,t,n,o,a,s,u,c){let l=this.newSwapComputationResult({});if(s){let p=c?j(o,new ie(Ue-a),new ie(Ue)):o,P=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:u,isBaseInput:s});P!==null&&(l.amountIn=P),l.sqrtPriceNextX64=P!==null&&p.gte(l.amountIn)?t:Vt.getNextSqrtPriceFromInput(e,n,p,u)}else{let p=c?o:J(o,new ie(Ue),new ie(Ue-a)),P=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:u,isBaseInput:s});P!==null&&(l.amountOut=P),l.sqrtPriceNextX64=P!==null&&p.gte(l.amountOut)?t:Vt.getNextSqrtPriceFromOutput(e,n,p,u)}if(u){if(!l.sqrtPriceNextX64.gte(t))throw Error("!result.sqrtPriceNextX64.gte(sqrtPriceTargetX64)")}else if(!t.gte(l.sqrtPriceNextX64))throw Error("!sqrtPriceTargetX64.gte(result.sqrtPriceNextX64)");let m=t.eq(l.sqrtPriceNextX64);if(u?(m&&s||(l.amountIn=ne.getDeltaAmountAUnsigned(l.sqrtPriceNextX64,e,n,!0)),m&&!s||(l.amountOut=ne.getDeltaAmountBUnsigned(l.sqrtPriceNextX64,e,n,!1))):(m&&s||(l.amountIn=ne.getDeltaAmountBUnsigned(e,l.sqrtPriceNextX64,n,!0)),m&&!s||(l.amountOut=ne.getDeltaAmountAUnsigned(e,l.sqrtPriceNextX64,n,!1))),s)c?l.sqrtPriceNextX64.eq(t)?l.feeAmount=J(l.amountIn,new ie(a),new ie(Ue-a)):l.feeAmount=o.sub(l.amountIn):(l.feeAmount=J(l.amountOut,new ie(a),new ie(Ue)),l.amountOut=l.amountOut.sub(l.feeAmount),m||(l.amountIn=o));else if(c)l.amountOut=ie.min(l.amountOut,o),l.feeAmount=J(l.amountIn,new ie(a),new ie(Ue-a));else{l.feeAmount=J(l.amountOut,new ie(a),new ie(Ue));let p=l.amountOut.sub(l.feeAmount);p.gt(o)?(l.feeAmount=l.amountOut.sub(o),l.amountOut=o):l.amountOut=p}return l}};function Qn({programId:r,poolId:e,poolInfo:t,tickArrays:n,configInfo:o,tickarrayBitmapExtension:a,amountSpecified:s,sqrtPriceLimitX64:u,zeroForOne:c,isBaseInput:l,blockTimestamp:m,includeExtraTickArrays:p}){u.isZero()&&(u=c?new gt(Fe).addn(1):new gt(ve).subn(1));let P=0;if(n.length===0)return{allTrade:!1,amountSpecifiedRemaining:s,amountCalculated:C,feeAmount:C,sqrtPriceX64:t.sqrtPriceX64,liquidity:t.liquidity,tickCurrent:t.tickCurrent,accounts:[]};let g=p?Qe.findTickArrayAddress({programId:r,poolId:e,tickSpacing:t.tickSpacing,poolBitmap:t.tickArrayBitmap,tickArrayBitmap:a,findInfo:{type:c?"oneForZero":"zeroForOne",count:2,tickArrayCurrent:t.tickCurrent}}).filter(I=>I.toString()!==n[0].address.toString()):[],h=ue.getTickArrayStartIndex(t.tickCurrent,t.tickSpacing),{firstItckArrayContainsPoolTick:A,firstValidTickArrayStartIndex:T}={firstItckArrayContainsPoolTick:n[P].value.startTickIndex===h,firstValidTickArrayStartIndex:n[P].value.startTickIndex},S=A,K=T,M=n[P],v=Nt.isFeeOnInput(t.feeOn,c),b=Ne.newValue({poolInfo:t,amountSpecified:s,zeroForOne:c,feeRate:o.tradeFeeRate,blockTimestamp:m});for(;!b.amountSpecifiedRemaining.isZero()&&!b.sqrtPriceX64.eq(u);){let I=(()=>{let R=ue.nextInitalizedTick({data:M.value,tickSpacing:b.tickSpacing,zeroForOne:c,currentTickIndex:b.tick});if(R!==void 0)return R;if(S){let _=n[++P];return _===void 0?void 0:(K=_.value.startTickIndex,M=_,ue.firstinitializedTick({data:_.value,zeroForOne:c}))}else return S=!0,ue.firstinitializedTick({data:M.value,zeroForOne:c})})();if(I===void 0)return{allTrade:!1,amountSpecifiedRemaining:b.amountSpecifiedRemaining,amountCalculated:b.amountCalculated,feeAmount:b.lpFee.add(b.fundFee).add(b.protocolFee),sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:n.slice(0,P).map(R=>R.address)};let x=Ne.getTargetPriceBasedOnNextTick({data:b,tickNext:I.tick,zeroForOne:c,sqrtPriceLimitX64:u}),O=b.liquidity;do{Ne.updateVolatilityAccumulator({state:b});let R=Ne.getTotalFeeRate({data:b}),{isSkipped:_,boundedPrice:$}=Ne.getSpacingBoundedPrice({data:b,targetPrice:x,zeroForOne:c}),U=!b.sqrtPriceX64.eq($),N;U?(N=_t.computeSwap(b.sqrtPriceX64,$,b.liquidity,b.amountSpecifiedRemaining,R,l,c,v),Ne.applySwapAmounts({state:b,amountIn:N.amountIn,amountOut:N.amountOut,feeAmount:N.feeAmount,isBaseInput:l,isFeeOnInput:v,protocolFeeRate:new gt(o.protocolFeeRate),fundFeeRate:new gt(o.fundFeeRate)})):N=_t.newSwapComputationResult({sqrtPriceNextX64:$});let H=F.limitOrderUnfilledAmount({tick:I});if(b.sqrtPriceNextX64.eq(N.sqrtPriceNextX64)){let q=F.matchLimitOrder({tick:I,swapAmount:b.amountSpecifiedRemaining,swapDirectionZeroForOne:c,isBaseInput:l,feeRate:R,isFeeOnInput:v});if(q.amountIn.gt(C)&&Ne.applySwapAmounts({state:b,amountIn:q.amountIn,amountOut:q.amountOut,feeAmount:q.ammFeeAmount,isBaseInput:l,isFeeOnInput:v,protocolFeeRate:new gt(o.protocolFeeRate),fundFeeRate:new gt(o.fundFeeRate)}),F.hasLiquidity({data:I})&&!F.hasLimitOrders({data:I})){let oe=c?I.liquidityNet.neg():I.liquidityNet;O=ne.addDelta(b.liquidity,oe)}b.tick=c&&!F.hasLimitOrders({data:I})||!c&&F.hasLimitOrders({data:I})?b.tickNext-1:b.tickNext}else b.sqrtPriceX64.eq(N.sqrtPriceNextX64)||(b.tick=F.getTickAtSqrtPrice(N.sqrtPriceNextX64));if(b.sqrtPriceX64=N.sqrtPriceNextX64,Ne.updateDynamicFeeIndex({state:b,zeroForOne:c,isSkippedTickSpacing:_}),b.amountSpecifiedRemaining.isZero()||b.sqrtPriceX64.eq(x)){let q=F.limitOrderUnfilledAmount({tick:I});if(!b.amountSpecifiedRemaining.isZero()&&!q.eq(H)&&!q.isZero())throw Error("!limitOrderUnfilledAmountAfter.isZero()");break}}while(!0);b.liquidity=O}return{allTrade:!0,amountSpecifiedRemaining:C,amountCalculated:b.amountCalculated,feeAmount:b.lpFee.add(b.fundFee).add(b.protocolFee),sqrtPriceX64:b.sqrtPriceX64,liquidity:b.liquidity,tickCurrent:b.tick,accounts:[...g,...n.slice(0,P+1+(p?1:0)).map(I=>I.address)]}}var Et=class{static tickSpacingIndexFromTick(e,t){return Math.floor(e/t)}},bt=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/so),e.lastUpdateTimestamp=new fe(n)):(e.tickSpacingIndexReference=t,e.volatilityReference=0,e.lastUpdateTimestamp=new fe(n)))}static updateVolatilityAccumulator({state:e,tickSpacingIndex:t}){let n=Math.abs(e.tickSpacingIndexReference-t),o=e.volatilityReference+n*kt;e.volatilityAccumulator=Math.min(o,e.maxVolatilityAccumulator)}},Nt=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 a of t){let s=ue.getTickArrayStartIndex(a,e);if(s>=n||s<o)return!0}return!1}static tickArrayStartIndexRange({tickSpacing:e}){let t=Qe.maxTickInTickarrayBitmap(e),n=-t;return t>Ie&&(t=ue.getTickArrayStartIndex(Ie,e)+ue.tickCount(e)),n<he&&(n=ue.getTickArrayStartIndex(he,e)),{maxTickBoundary:t,minTickBoundary:n}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:o,rewardInfos:a}){var u,c,l;let s=[];for(let m=0;m<a.length;m++){let p=a[m],P=(l=(u=t.rewardDefaultInfos[m])==null?void 0:u.mint.programId)!=null?l:(c=await e.getAccountInfo(p.mint))==null?void 0:c.owner;if(P===void 0)throw Error("get new reward mint info error");let g=E(L({},p),{perSecond:fo(p.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new ge(P)});if(g.mint.equals(ge.default)||g.totalEmissioned.eq(qe))continue;if(n<=g.openTime.toNumber()||o.eq(C)){s.push(g);continue}let h=new fe(Math.min(g.endTime.toNumber(),n)),A=h.sub(g.lastUpdateTime);if(A.isZero()){s.push(g);continue}let T=J(A,g.emissionsPerSecondX64,Z),S=j(A,g.emissionsPerSecondX64,o),K,M=g.totalEmissioned.add(T);if(M.lte(qe))K=M;else{let b=qe.sub(g.totalEmissioned);K=qe,S=j(b,Z,o)}let v=g.growthGlobalX64.add(S);s.push(E(L({},g),{growthGlobalX64:v,totalEmissioned:K,lastUpdateTime:h}))}return s}},De=class{static getOutputAmountAndRemainAccounts(e,t,n,o,a,s,u){let c=o.toBase58()===e.mintA.address,l=ue.getTickArrayStartIndex(e.accInfo.tickCurrent,e.accInfo.tickSpacing),{allTrade:m,amountCalculated:p,feeAmount:P,sqrtPriceX64:g,accounts:h}=Qn({programId:e.programId,poolId:e.id,poolInfo:e.accInfo,tickArrays:Object.entries(n).map(A=>({address:A[1].address,value:A[1]})).filter(A=>c?A.value.startTickIndex<=l:A.value.startTickIndex>=l).sort((A,T)=>c?T.value.startTickIndex-A.value.startTickIndex:A.value.startTickIndex-T.value.startTickIndex),configInfo:e.ammConfig,tickarrayBitmapExtension:t,amountSpecified:a,sqrtPriceLimitX64:u!=null?u:C,zeroForOne:c,isBaseInput:!0,blockTimestamp:s,includeExtraTickArrays:!0});return{allTrade:m,expectedAmountOut:p,remainingAccounts:h,executionPrice:g,feeAmount:P}}static getInputAmountAndRemainAccounts(e,t,n,o,a,s,u){let c=o.toBase58()===e.mintB.address,l=ue.getTickArrayStartIndex(e.accInfo.tickCurrent,e.accInfo.tickSpacing),{allTrade:m,amountCalculated:p,feeAmount:P,sqrtPriceX64:g,accounts:h}=Qn({programId:e.programId,poolId:e.id,poolInfo:e.accInfo,tickArrays:Object.entries(n).map(A=>({address:new ge(A[0]),value:A[1]})).filter(A=>c?A.value.startTickIndex<=l:A.value.startTickIndex>=l).sort((A,T)=>c?T.value.startTickIndex-A.value.startTickIndex:A.value.startTickIndex-T.value.startTickIndex),configInfo:e.ammConfig,tickarrayBitmapExtension:t,amountSpecified:a,sqrtPriceLimitX64:u!=null?u:C,zeroForOne:c,isBaseInput:!1,blockTimestamp:s,includeExtraTickArrays:!0});return{allTrade:m,expectedAmountIn:p,remainingAccounts:h,executionPrice:g,feeAmount:P}}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let o=await Ge(e,t.map(s=>({pubkey:s})),{batchRequest:n}),a={};for(let s of o)s.accountInfo!==null&&(a[s.pubkey.toString()]=un.decode(s.accountInfo.data));return a}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let o={},a=[];for(let c of t){let l=[...Qe.findTickArrayStartIndex({tickSpacing:c.tickSpacing,poolBitmap:c.tickArrayBitmap,tickArrayBitmap:c.exBitmapInfo,findInfo:{type:"zeroForOne",count:7,tickArrayCurrent:c.tickCurrent}}),...Qe.findTickArrayStartIndex({tickSpacing:c.tickSpacing,poolBitmap:c.tickArrayBitmap,tickArrayBitmap:c.exBitmapInfo,findInfo:{type:"oneForZero",count:7,tickArrayCurrent:c.tickCurrent}})];for(let m of l){let{publicKey:p}=He(c.programId,c.id,m);o[p.toString()]===void 0&&(a.push({pubkey:p}),o[p.toString()]=c.id)}}let s=await Ge(e,a,{batchRequest:n}),u={};for(let c of s){if(!c.accountInfo)continue;let l=o[c.pubkey.toString()];if(!l)continue;u[l.toString()]===void 0&&(u[l.toString()]={});let m=yt.decode(c.accountInfo.data);u[l.toString()][m.startTickIndex]=E(L({},m),{address:c.pubkey})}return u}static computeAmountOut({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:o,epochInfo:a,amountIn:s,slippage:u,blockTimestamp:c,priceLimit:l=new z(0)}){var N;let m,p=o.toBase58()===e.mintA.address,[P,g]=p?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];l.equals(new z(0))?m=p?Fe.add(new fe(1)):ve.sub(new fe(1)):m=F.priceToSqrtPriceX64(l,e.mintA.decimals,e.mintB.decimals);let h=ke(s,P,a,!1),{allTrade:A,expectedAmountOut:T,remainingAccounts:S,executionPrice:K,feeAmount:M}=De.getOutputAmountAndRemainAccounts(e,t,n,o,h.amount.sub((N=h.fee)!=null?N:C),c,m),v=ke(T,g,a,!1),b=F.sqrtPriceX64ToPrice(K,e.mintA.decimals,e.mintB.decimals),I=p?b:new z(1).div(b),x=T.mul(new fe(Math.floor((1-u)*1e10))).div(new fe(1e10)),O=ke(x,g,a,!1),R=p?e.currentPrice:new z(1).div(e.currentPrice),_=new z(I).sub(R).abs(),$=R,U=new _e(new z(_).mul(10**15).toFixed(0),new z($).mul(10**15).toFixed(0));return{allTrade:A,realAmountIn:h,amountOut:v,minAmountOut:O,expirationTime:vt(h.expirationTime,v.expirationTime),currentPrice:e.currentPrice,executionPrice:I,priceImpact:U,fee:M,remainingAccounts:S,executionPriceX64:K}}static computeAmountOutFormat({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,amountIn:o,tokenOut:a,slippage:s,epochInfo:u,blockTimestamp:c,catchLiquidityInsufficient:l=!1}){let m=a.address===e.mintB.address,[p,P]=m?[e.mintA,e.mintB]:[e.mintB,e.mintA],[g,h]=[new me(E(L({},p),{mint:p.address,isToken2022:p.programId===gi.toBase58()})),new me(E(L({},P),{mint:P.address,isToken2022:P.programId===gi.toBase58()}))],{allTrade:A,realAmountIn:T,amountOut:S,minAmountOut:K,expirationTime:M,currentPrice:v,executionPrice:b,priceImpact:I,fee:x,remainingAccounts:O,executionPriceX64:R}=De.computeAmountOut({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:new ge(p.address),amountIn:o,slippage:s,epochInfo:u,catchLiquidityInsufficient:l,blockTimestamp:c}),_=E(L({},T),{amount:new ae(g,T.amount),fee:T.fee===void 0?void 0:new ae(g,T.fee)}),$=E(L({},S),{amount:new ae(h,S.amount),fee:S.fee===void 0?void 0:new ae(h,S.fee)}),U=E(L({},K),{amount:new ae(h,K.amount),fee:K.fee===void 0?void 0:new ae(h,K.fee)}),N=new Se({baseToken:g,denominator:new fe(10).pow(new fe(20+g.decimals)),quoteToken:h,numerator:v.mul(new z(10**(20+h.decimals))).toFixed(0)}),H=new Se({baseToken:g,denominator:new fe(10).pow(new fe(20+g.decimals)),quoteToken:h,numerator:b.mul(new z(10**(20+h.decimals))).toFixed(0)}),q=new ae(g,x);return{allTrade:A,realAmountIn:_,amountOut:$,minAmountOut:U,expirationTime:M,currentPrice:N,executionPrice:H,priceImpact:I,fee:q,remainingAccounts:O,executionPriceX64:R}}static computeAmountIn({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:o,epochInfo:a,amountOut:s,slippage:u,priceLimit:c=new z(0),blockTimestamp:l}){var N;let m=o.toBase58()===e.mintA.address,p={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},P;c.equals(new z(0))?P=m?ve.sub(new fe(1)):Fe.add(new fe(1)):P=F.priceToSqrtPriceX64(c,e.mintA.decimals,e.mintB.decimals);let g=ke(s,p[o.toString()],a,!0),{allTrade:h,expectedAmountIn:A,remainingAccounts:T,executionPrice:S,feeAmount:K}=De.getInputAmountAndRemainAccounts(e,t,n,o,g.amount.sub((N=g.fee)!=null?N:C),l,P),M=m?e.mintB.address:e.mintA.address,v=ke(A,p[M],a,!1),b=F.sqrtPriceX64ToPrice(S,e.mintA.decimals,e.mintB.decimals),I=m?b:new z(1).div(b),x=A.mul(new fe(Math.floor((1+u)*1e10))).div(new fe(1e10)),O=ke(x,p[M],a,!0),R=m?e.currentPrice:new z(1).div(e.currentPrice),_=new z(I).sub(R).abs(),$=R,U=new _e(new z(_).mul(10**15).toFixed(0),new z($).mul(10**15).toFixed(0));return{allTrade:h,amountIn:v,maxAmountIn:O,realAmountOut:g,expirationTime:vt(v.expirationTime,g.expirationTime),currentPrice:e.currentPrice,executionPrice:I,priceImpact:U,fee:K,remainingAccounts:T}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:o}){var h,A,T;let a=e[t],s=F.tickToPrice(n,e.mintA.decimals,e.mintB.decimals).toNumber(),u=F.tickToPrice(o,e.mintA.decimals,e.mintB.decimals).toNumber(),c=Math.max(s,a.priceMin),m=Math.min(u,a.priceMax)-c,p=u-s,P=a.priceMax-a.priceMin,g;return m<=0?g=0:p===m?g=P/m:P===m?g=m/p:g=m/P*(m/p),{feeApr:a.feeApr*g,rewardsApr:[((h=a.rewardApr[0])!=null?h:0)*g,((A=a.rewardApr[1])!=null?A:0)*g,((T=a.rewardApr[2])!=null?T:0)*g],apr:a.apr*g}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:o,liquidity:a,positionTickLowerIndex:s,positionTickUpperIndex:u,chainTime:c}){let l=n==="day"?1:n==="week"?7:n==="month"?30:0,m=e[n],p=o[Xe(e.mintA.address).toString()],P=o[Xe(e.mintB.address).toString()],g=e.mintA.decimals,h=e.mintB.decimals;if(!m||!p||!P)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let A=F.priceToSqrtPriceX64(new z(e.price),e.mintA.decimals,e.mintB.decimals),T=F.getSqrtPriceAtTick(s),S=F.getSqrtPriceAtTick(u),{amountSlippageA:K,amountSlippageB:M}=ne.getAmountsFromLiquidityWithSlippage(A,T,S,t,!1,!1,0),{amountSlippageA:v,amountSlippageB:b}=ne.getAmountsFromLiquidityWithSlippage(A,T,S,a,!1,!1,0),I=new z(K.toString()).div(new z(10).pow(g)).mul(p.value).add(new z(M.toString()).div(new z(10).pow(h)).mul(P.value)),x=new z(v.toString()).div(new z(10).pow(g)).mul(p.value).add(new z(b.toString()).div(new z(10).pow(h)).mul(P.value)),O=new z(1).div(I.add(x)),_=new z(m.volumeFee).mul(365).div(l).mul(O).mul(100).toNumber(),$=3600*24*365,U=e.rewardDefaultInfos.map(N=>{var oe,Te;let H=N.mint.decimals,q=o[N.mint.address];return c<((oe=N.startTime)!=null?oe:0)||c>((Te=N.endTime)!=null?Te:0)||!N.perSecond||!q||H===void 0?0:new z(q.value).mul(new z(N.perSecond).mul($)).div(new z(10).pow(H)).mul(O).mul(100).toNumber()});return{feeApr:_,rewardsApr:U,apr:_+U.reduce((N,H)=>N+H,0)}}static async getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:o,amount:a,slippage:s,add:u,epochInfo:c,amountHasFee:l}){var S,K;let m=F.priceToSqrtPriceX64(new z(e.price),e.mintA.decimals,e.mintB.decimals),p=F.getSqrtPriceAtTick(n),P=F.getSqrtPriceAtTick(o),g=ke(a,(S=e[t?"mintA":"mintB"].extensions)==null?void 0:S.feeConfig,c,!l),h=new fe(new z(g.amount.sub((K=g.fee)!=null?K:C).toString()).toFixed(0)),A;if(m.lte(p))A=t?ne.getLiquidityFromAmountA(p,P,h):new fe(0);else if(m.lte(P)){let M=ne.getLiquidityFromAmountA(m,P,h),v=ne.getLiquidityFromAmountB(p,m,h);A=t?M:v}else A=t?new fe(0):ne.getLiquidityFromAmountB(p,P,h);let T=await De.getAmountsFromLiquidity({epochInfo:c,poolInfo:e,tickLower:n,tickUpper:o,liquidity:A,slippage:s,add:u});return{liquidity:A,amountA:t?g:T.amountA,amountB:t?T.amountB:g,amountSlippageA:t?g:T.amountSlippageA,amountSlippageB:t?T.amountSlippageB:g,expirationTime:T.expirationTime}}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:o,liquidity:a,slippage:s,add:u}){var T,S,K,M;let c=F.getSqrtPriceAtTick(n),l=F.getSqrtPriceAtTick(o),m=u?1+s:1-s,p=ne.getAmountsForLiquidity(F.priceToSqrtPriceX64(new z(t.price),t.mintA.decimals,t.mintB.decimals),c,l,a,u),[P,g]=[ke(p.amountA,(T=t.mintA.extensions)==null?void 0:T.feeConfig,e,!0),ke(p.amountB,(S=t.mintB.extensions)==null?void 0:S.feeConfig,e,!0)],[h,A]=[ke(p.amountA.muln(m),(K=t.mintA.extensions)==null?void 0:K.feeConfig,e,!0),ke(p.amountB.muln(m),(M=t.mintB.extensions)==null?void 0:M.feeConfig,e,!0)];return{liquidity:a,amountA:P,amountB:g,amountSlippageA:h,amountSlippageB:A,expirationTime:vt(P.expirationTime,g.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let o=t.filter(l=>!n[l.id]).map(l=>new ge(l.id));(await we(e,o)).forEach((l,m)=>{!l||(n[o[m].toBase58()]=sn.decode(l.data))});let s=t.map(l=>Ye(new ge(l.programId),new ge(l.id)).publicKey),u=await De.fetchExBitmaps({connection:e,exBitmapAddress:s,batchRequest:!1}),c={};return t.reduce((l,m)=>E(L({},l),{[m.id]:E(L({accInfo:n[m.id]},n[m.id]),{id:new ge(m.id),version:6,programId:new ge(m.programId),mintA:m.mintA,mintB:m.mintB,ammConfig:E(L({},m.config),{id:new ge(m.config.id),fundOwner:""}),currentPrice:new z(m.price),exBitmapAccount:Ye(new ge(m.programId),new ge(m.id)).publicKey,exBitmapInfo:u[Ye(new ge(m.programId),new ge(m.id)).publicKey.toBase58()],startTime:n[m.id].startTime.toNumber(),rewardInfos:n[m.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:a}){let s=ue.getTickArrayStartIndex(o,a),u=He(t,n,s).publicKey,c=await e.getAccountInfo(u);if(!c)throw new Error(`tick array ${u.toBase58()} not found`);return yt.decode(c.data)}static async fetchMultipleTickArrayInfo({connection:e,tickInfoList:t}){let n=t.map(a=>{let s=ue.getTickArrayStartIndex(a.tick,a.tickSpacing);return He(a.programId,a.poolId,s).publicKey});return(await we(e,n)).map(a=>a&&yt.decode(a.data))}},Zn={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};function da(r,e){let t=e!=null?e:{};return E(L({},r),{type:"Concentrated",programId:r.programId.toString(),id:r.id.toString(),rewardDefaultInfos:r.rewardInfos.filter(n=>!n.mint.equals(ge.default)).map(n=>{var o,a;return{mint:ft({address:n.mint.toBase58(),programId:ys.toBase58(),decimals:(o=t[n.mint.toBase58()].decimals)!=null?o:6}),perSecond:Number(n.emissionsPerSecondX64.divn(10**((a=t[n.mint.toBase58()].decimals)!=null?a:6)).toString()),startTime:n.openTime.toNumber(),endTime:n.endTime.toNumber()}}),rewardDefaultPoolInfos:"Clmm",price:r.currentPrice.toNumber(),mintAmountA:0,mintAmountB:0,feeRate:r.ammConfig.tradeFeeRate,openTime:r.startTime.toString(),tvl:0,day:Zn,week:Zn,month:Zn,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,burnPercent:0,config:E(L({},r.ammConfig),{id:r.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),hasDynamicFee:!1,feeOn:"",launchMigratePool:!1,tips:[]})}import{ASSOCIATED_TOKEN_PROGRAM_ID as Wh,TOKEN_2022_PROGRAM_ID as qh,TOKEN_PROGRAM_ID as Uh}from"@solana/spl-token";import{SystemProgram as Yh,TransactionInstruction as Qh}from"@solana/web3.js";import ws from"bn.js";var bs=k([i(),i("epoch"),w("curveType"),se("index"),i("migrateFee"),i("tradeFeeRate"),i("maxShareFeeRate"),i("minSupplyA"),i("maxLockRate"),i("minSellRateA"),i("minMigrateRateA"),i("minFundRaisingB"),d("mintB"),d("protocolFeeOwner"),d("migrateFeeOwner"),d("migrateToAmmWallet"),d("migrateToCpmmWallet"),B(i(),16)]),gs=k([i("totalLockedAmount"),i("cliffPeriod"),i("unlockPeriod"),i("startTime"),i("totalAllocatedShare")]),Ps=k([i(),i("epoch"),w("bump"),w("status"),w("mintDecimalsA"),w("mintDecimalsB"),w("migrateType"),i("supply"),i("totalSellA"),i("virtualA"),i("virtualB"),i("realA"),i("realB"),i("totalFundRaisingB"),i("protocolFee"),i("platformFee"),i("migrateFee"),gs.replicate("vestingSchedule"),d("configId"),d("platformId"),d("mintA"),d("mintB"),d("vaultA"),d("vaultB"),d("creator"),w("mintProgramFlag"),w("cpmmCreatorFeeOn"),i("platformVestingShare"),B(w(),54)]),Th=k([i(),i("epoch"),d("poolId"),d("beneficiary"),i("claimedAmount"),i("tokenShareAmount"),B(i(),8)]),Pi=k([w("migrateType"),w("migrateCpmmFeeOn"),i("supply"),i("totalSellA"),i("totalFundRaisingB"),i("totalLockedAmount"),i("cliffPeriod"),i("unlockPeriod")]),As=k([i("epoch"),w("index"),d("configId"),Pi.replicate("bondingCurveParam"),B(i(),50)]),Ai=k([i(),i("epoch"),d("platformClaimFeeWallet"),d("platformLockNftWallet"),i("platformScale"),i("creatorScale"),i("burnScale"),i("feeRate"),B(w(),64,"name"),B(w(),256,"web"),B(w(),256,"img"),d("cpConfigId"),i("creatorFeeRate"),d("transferFeeExtensionAuth"),d("platformVestingWallet"),i("platformVestingScale"),d("platformCpCreator"),w("restrictGlobalConfig"),B(w(),107),Eo(As,"platformCurve")]);var Kh=Buffer.from("vault_auth_seed","utf8"),xh=Buffer.from("global_config","utf8"),Ch=Buffer.from("pool_vesting","utf8"),Rh=Buffer.from("platform_config","utf8"),Lh=Buffer.from("platform_fee_vault_auth_seed","utf8"),Oh=Buffer.from("creator_fee_vault_auth_seed","utf8"),Nh=Buffer.from("platform_global_access","utf8"),Mh=Buffer.from("platform_allow_config","utf8");var $h={initialize:Buffer.from([175,175,109,31,13,152,155,237]),initializeV2:Buffer.from([67,153,175,39,218,16,38,32]),buyExactIn:Buffer.from([250,234,13,123,213,156,19,236]),buyExactOut:Buffer.from([24,211,116,40,105,3,153,56]),sellExactIn:Buffer.from([149,39,222,155,211,124,152,26]),sellExactOut:Buffer.from([95,200,71,34,8,9,11,166]),createVestingAccount:Buffer.from([129,178,2,13,217,172,230,218]),claimVestedToken:Buffer.from([49,33,104,30,189,157,79,35]),createPlatformConfig:Buffer.from([176,90,196,175,253,113,220,20]),claimPlatformFee:Buffer.from([156,39,208,135,76,237,61,72]),updatePlaformConfig:Buffer.from([195,60,76,129,146,45,67,143]),initializeWithToken2022:Buffer.from([37,190,126,222,44,154,171,17]),claimPlatformFeeFromVault:Buffer.from([117,241,198,168,248,218,80,29]),claimCreatorFee:Buffer.from([26,97,138,203,132,171,141,252]),updatePlatformCurveParam:Buffer.from([138,144,138,250,220,128,4,57]),removePlatformCurveParam:Buffer.from([27,30,62,169,93,224,24,145]),createPlatformVestingAccount:Buffer.from([146,71,173,69,98,19,15,106]),createPlatformAllowConfig:Buffer.from([69,71,168,7,214,250,107,102]),closePlatformAllowConfig:Buffer.from([82,205,36,216,16,6,240,215])};var Jh=new ws("18446744073709551615");import{TOKEN_2022_PROGRAM_ID as oI,TOKEN_PROGRAM_ID as iI}from"@solana/spl-token";import uI from"bn.js";import lI from"decimal.js";import qI from"bn.js";import GI from"decimal.js";import bI from"bn.js";import PI from"decimal.js";import xI from"bn.js";import RI from"decimal.js";import Ti from"bn.js";import Hn from"decimal.js";var mn=class{static _multipler(e){return new Hn(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new Hn(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 Ti(o.mul(this._Q64).toFixed(0))}};mn._Q64=new Hn(new Ti(1).shln(64).toString());import{NATIVE_MINT as $B,TOKEN_2022_PROGRAM_ID as JB,TOKEN_PROGRAM_ID as eS,createAssociatedTokenAccountIdempotentInstruction as nS,createSyncNativeInstruction as oS,getTransferFeeConfig as iS,unpackMint as rS}from"@solana/spl-token";import ce from"bn.js";import{PublicKey as Ks,SystemProgram as uS}from"@solana/web3.js";import yS from"decimal.js";var bS={initPriceX64:new ce("515752397214619"),supply:new ce(1e15),totalSellA:new ce(7931e11),totalFundRaisingB:new ce(85e9),totalFundRaisingBUSD:new ce(125e8),totalLockedAmount:new ce("0"),cliffPeriod:new ce("0"),unlockPeriod:new ce("0"),decimals:6,virtualA:new ce("1073471847374405"),virtualB:new ce("30050573465"),realA:new ce(0),realB:new ce(0),protocolFee:new ce(0),platformId:new Ks("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new ce(0),cliffPeriod:new ce(0),unlockPeriod:new ce(0),startTime:new ce(0),totalAllocatedShare:new ce(0)}},gS=new ce(1e4);var xs={[Go.toBase58()]:3};var Cs=k([W(5),W(8),d("ownAddress"),i("vaultSignerNonce"),d("baseMint"),d("quoteMint"),d("baseVault"),i("baseDepositsTotal"),i("baseFeesAccrued"),d("quoteVault"),i("quoteDepositsTotal"),i("quoteFeesAccrued"),i("quoteDustThreshold"),d("requestQueue"),d("eventQueue"),d("bids"),d("asks"),i("baseLotSize"),i("quoteLotSize"),i("feeRateBps"),i("referrerRebatesAccrued"),W(7)]);import{PublicKey as DS}from"@solana/web3.js";var zS=G("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as eK,TOKEN_2022_PROGRAM_ID as tK,TOKEN_PROGRAM_ID as nK}from"@solana/spl-token";import{PublicKey as iK,SystemProgram as rK,TransactionInstruction as aK}from"@solana/web3.js";import uK from"bn.js";var lx=new Rs(0);import{PublicKey as Ls,Transaction as jn,TransactionInstruction as Os}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ns}from"@solana/spl-token";import hi from"bn.js";var be=class extends Ae{static getPdaPoolId(e,t){return Q([be.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,o){return Q([be.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new hi(o).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:o,chainTime:a}){if(n.length===0)return[];let s=n.map(m=>be.getPdaPoolId(t,m).publicKey),u=[];for(let m=0;m<be.VERSION_PROJECT.length;m++)u.push(...s.map(p=>be.getPdaOwnerId(t,p,o,m).publicKey));let c=await we(e,[...s,...u]),l=[];for(let m=0;m<c.length;m++){let p=Math.floor(m/n.length),P=m%n.length,g=s[P],h=u[m],A=c[P],T=c[n.length+m];if(!(A&&T)||A.data.length!==be.POOL_LAYOUT.span||T.data.length!==be.OWNER_LAYOUT.span)continue;let S=be.POOL_LAYOUT.decode(A.data),K=be.OWNER_LAYOUT.decode(T.data),M=S.openTime.toNumber(),v=S.endTime.toNumber(),b=K.tokenInfo.map(O=>O.debtAmount.gt(new hi(0))).filter(O=>!O).length!==3,I=a>M&&a<v&&S.status===1,x=b&&I;l.push({programId:t,poolId:g,ammId:S.ammId,ownerAccountId:h,snapshotLpAmount:K.lpAmount,project:be.VERSION_PROJECT[p],openTime:M,endTime:v,canClaim:x,canClaimErrorType:b?I?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:S.tokenInfo.map((O,R)=>({mintAddress:O.mintAddress,mintVault:O.mintVault,mintDecimals:O.mintDecimals,perLpLoss:O.perLpLoss,debtAmount:K.tokenInfo[R].debtAmount.add(K.tokenInfo[R].claimedAmount)}))})}return l}async makeClaimTransaction({poolInfo:e,ownerInfo:t,feePayer:n}){t.wallet||this.scope.checkOwner();let o=this.createTxBuilder(n),a=t.wallet||this.scope.ownerPubKey,s=[];for(let l of e.tokenInfo){let{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({mint:l.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:l.mintAddress.equals(me.WSOL.mint),createInfo:{payer:a,amount:0},skipCloseAccount:!l.mintAddress.equals(me.WSOL.mint),associatedOnly:l.mintAddress.equals(me.WSOL.mint)?!1:t.associatedOnly});p&&o.addInstruction(p),s.push(m)}o.addInstruction({instructions:[be.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:a,ownerPda:e.ownerAccountId,claimAddress:s}})]});let{transaction:u,signers:c}=o.build();return[{transaction:u,signer:c}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:n}){let o=this.createTxBuilder(n),a=t.wallet||this.scope.ownerPubKey,s={};for(let m of e){let p=[];for(let P of m.tokenInfo){let{account:g,instructionParams:h}=await this.scope.account.getOrCreateTokenAccount({mint:P.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:P.mintAddress.equals(me.WSOL.mint),createInfo:{payer:a,amount:0},skipCloseAccount:!P.mintAddress.equals(me.WSOL.mint),associatedOnly:P.mintAddress.equals(me.WSOL.mint)?!1:t.associatedOnly});h&&o.addInstruction(h),g&&(s[P.mintAddress.toString()]=g,p.push(g))}o.addInstruction({instructions:[be.makeClaimInstruction({programId:m.programId,poolInfo:m,ownerInfo:{wallet:a,ownerPda:m.ownerAccountId,claimAddress:p}})]})}let{transaction:u,signers:c}=o.build(),l=o.allInstructions;return Ln(l,[a,...c.map(m=>m.publicKey)])?[{transaction:u,signer:c}]:[{transaction:new jn().add(...l.slice(0,o.AllTxData.instructions.length-1)),signer:c},{transaction:new jn().add(...l.slice(o.AllTxData.instructions.length-1)),signer:[]},{transaction:new jn().add(...o.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let o=k([]),a=[{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:Ns,isSigner:!1,isWritable:!1}],s=Buffer.alloc(o.span);o.encode({},s);let u=Buffer.from([10,66,208,184,161,6,191,98,...s]);return new Os({keys:a,programId:e,data:u})}},Me=be;Me.CLAIMED_NUM=3,Me.POOL_LAYOUT=k([W(8),w("bump"),w("status"),i("openTime"),i("endTime"),d("ammId"),B(k([w("mintDecimals"),d("mintAddress"),d("mintVault"),i("perLpLoss"),i("totalClaimedAmount")]),be.CLAIMED_NUM,"tokenInfo"),B(i(),10,"padding")]),Me.OWNER_LAYOUT=k([W(8),w("bump"),w("version"),d("poolId"),d("owner"),i("lpAmount"),B(k([d("mintAddress"),i("debtAmount"),i("claimedAmount")]),be.CLAIMED_NUM,"tokenInfo"),B(i(),4,"padding")]),Me.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Ls(e)),Me.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},Me.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as Kx}from"@solana/web3.js";import{getTransferFeeConfig as Cx,MintLayout as Rx,TOKEN_2022_PROGRAM_ID as Lx,TOKEN_PROGRAM_ID as Ox,unpackMint as Nx}from"@solana/spl-token";var sR=new nt(2),uR=new nt(3),cR=new nt(5),wn=new nt(10),lR=new nt(100),mR=new nt(1e3),dR=new nt(1e4);function Sn(r){return wn.pow(re(r))}function Pn(r,e=1,t=[]){let n=[...r];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import le from"bn.js";import Pt from"decimal.js";var Qe=class{static scanLinearBitmap({bitmap:e,tickSpacing:t,offset:n,checkInfo:o}){let a=[],s=e.length*8,u=0,c=s-1;if(o){let p=o.tick/(t*Pe)-n;o.valueType==="gte"?u=Math.max(0,Math.ceil(p)):c=Math.min(s-1,Math.floor(p))}if(u>c)return a;let l=Math.floor(u/8),m=Math.floor(c/8);for(let p=l;p<=m;p++){if(!e[p])continue;let P=p===l?u%8:0,g=p===m?c%8:7;for(let h=P;h<=g;h++)e[p]&1<<h&&a.push((p*8+h+n)*t*Pe)}return a}static findPoolBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let o=Math.floor(n.tick/Pe/t);if(n.valueType==="lte"&&o<-512)return[];if(n.valueType==="gte"&&o>512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:-Ut,checkInfo:n})}static findPositiveTickArrayBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let o=Math.floor(n.tick/Pe/t);if(n.valueType==="lte"&&o<512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:Ut,checkInfo:n})}static findNegativeTickArrayBitmap({bitmap:e,tickSpacing:t,count:n,checkInfo:o}){let a=[];if(o){let c=Math.floor(o.tick/Pe/t);if(o.valueType==="gte"&&c>=-512)return a}let s=(o==null?void 0:o.valueType)==="lte"?Math.floor(o.tick/(Pe*t))+7680:1/0,u=(o==null?void 0:o.valueType)==="gte"?Math.ceil(o.tick/(Pe*t))+7680:0;e:for(let c=0;c<rt;c++){let l=rt-1-c;for(let m=0;m<512;m++){let p=c*512+m;if(p>s)break e;if(p<u)continue;let P=l*64+Math.floor(m/8);if(!e[P]){m=Math.floor(m/8)*8+7;continue}if(e[P]&1<<m%8){let g=(c*512+m-7680)*Pe*t;if(a.push(g),n!==void 0&&a.length>=n)break e}}}return a}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 a=ue.getTickArrayStartIndex(o.tickArrayCurrent,e),{count:s}=o;if(o.type==="oneForZero"){let u={tick:a,valueType:"gte"},c=[()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap,checkInfo:u}),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:u}),()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap,checkInfo:u})];return this.collectUntil(c,s)}if(o.type==="zeroForOne"){let u={tick:a,valueType:"lte"},c=[()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap,checkInfo:u}).sort((l,m)=>m-l),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:u}).sort((l,m)=>m-l),()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap,checkInfo:u}).sort((l,m)=>m-l)];return this.collectUntil(c,s)}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=>He(e.programId,e.poolId,t).publicKey)}static maxTickInTickarrayBitmap(e){return e*Pe*Ut}},ue=class{static firstinitializedTick({data:e,zeroForOne:t}){if(t){for(let n=e.ticks.length-1;n>=0;n--)if(F.isInitialized({data:e.ticks[n]}))return e.ticks[n]}else for(let n=0;n<e.ticks.length;n++)if(F.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 s=Math.floor((t-e.startTickIndex)/n);if(o){for(let u=s;u>=0;u--)if(F.isInitialized({data:e.ticks[u]}))return e.ticks[u]}else for(let u=s+1;u<Pe;u++)if(F.isInitialized({data:e.ticks[u]}))return e.ticks[u]}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 Pe*e}static getMinTick(e){return Math.ceil(he/e)*e}static getMaxTick(e){return Math.floor(Ie/e)*e}},F=class{static isInitialized({data:e}){return this.hasLiquidity({data:e})||this.hasLimitOrders({data:e})}static hasLimitOrders({data:e}){return!e.ordersAmount.isZero()||!e.partFilledOrdersRemaining.isZero()}static hasLiquidity({data:e}){return!e.liquidityGross.isZero()}static isValidTick(e){return e>=he&&e<=Ie}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${he}, ${Ie}]`)}static getSqrtPriceAtTick(e){this.checkTick(e);let t=Math.abs(e),n=Z.clone();for(let{bit:o,factor:a}of ao)(t&1<<o)!==0&&(n=j(n,a,Z));return e>0&&(n=j(Z,Z,n)),n}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:n}){if(n){let o=F.getPriceAtTick(t,!1);return j(e,o,Z)}else{let o=F.getPriceAtTick(t,!0);return j(e,Z,o)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:n}){if(n){let o=F.getPriceAtTick(t,!0);return J(e,o,Z)}else{let o=F.getPriceAtTick(t,!1);return J(e,Z,o)}}static limitOrderUnfilledAmount({tick:e}){return e.ordersAmount.add(e.partFilledOrdersRemaining)}static matchLimitOrder({tick:e,swapAmount:t,swapDirectionZeroForOne:n,isBaseInput:o,feeRate:a,isFeeOnInput:s}){let u={amountIn:C,amountOut:C,ammFeeAmount:C},c=this.limitOrderUnfilledAmount({tick:e});if(t.isZero()||c.isZero())return u;if(o)s?(u.ammFeeAmount=J(t,new le(a),xe),u.amountIn=t.sub(u.ammFeeAmount)):u.amountIn=t,u.amountOut=this.getLimitOrderOutput({amountIn:u.amountIn,tick:e.tick,zeroForOne:n}),u.amountOut.gt(c)&&(u.amountOut=c,u.amountIn=this.getLimitOrderInput({amountOut:c,tick:e.tick,zeroForOne:!n}),s&&(u.ammFeeAmount=J(u.amountIn,new le(a),xe.sub(new le(a)))));else{let p=le.min(t,c);s?u.amountOut=p:u.amountOut=le.min(J(p,xe,xe.sub(new le(a))),c),u.amountIn=this.getLimitOrderInput({amountOut:u.amountOut,tick:e.tick,zeroForOne:!n}),s&&(u.ammFeeAmount=J(u.amountIn,new le(a),xe.sub(new le(a))))}let l=C;e.partFilledOrdersRemaining.gt(C)&&(l=le.min(e.partFilledOrdersRemaining,u.amountOut),l.gt(C)&&(e.unfilledRatioX64=j(e.unfilledRatioX64,e.partFilledOrdersRemaining.sub(l),e.partFilledOrdersRemaining)),e.partFilledOrdersRemaining=e.partFilledOrdersRemaining.sub(l));let m=u.amountOut.sub(l);if(m.gt(C)){if(!e.partFilledOrdersRemaining.isZero())throw Error("!tick.partFilledOrdersRemaining.isZero()");if(e.ordersAmount.lt(m))throw Error("InvalidLimitOrderAmount");e.orderPhase=e.orderPhase.add(Be),e.unfilledRatioX64=j(Z,e.ordersAmount.sub(m),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(m),e.ordersAmount=C}return s||(u.ammFeeAmount=J(u.amountOut,new le(a),xe),u.amountOut=u.amountOut.sub(u.ammFeeAmount)),u}static getPriceAtTick(e,t){let n=this.getSqrtPriceAtTick(e);return t?n.mul(n).add(Z.subn(1)).div(Z):n.mul(n).div(Z)}static getTickAtSqrtPrice(e){if(!(e.gte(Fe)&&e.lte(ve)))throw Error("SqrtPriceX64");let t=po(e),n=t-64,o;n>=0?o=new le(n).shln(32):o=new le(-n).shln(32).neg();let a;t>=64?a=e.shrn(t-63):a=e.shln(63-t);let s=new le(0),u=new le(1).shln(63);for(let T=0;T<ro&&!u.isZero();T++){a=a.mul(a);let S=a.shrn(127).toNumber();a=a.shrn(63+S),S&&(s=s.add(u)),u=u.shrn(1)}let c=s.shrn(32),m=o.add(c).mul(no),p=m.sub(oo),P=m.add(io),g=this.signedShrn64(p),h=this.signedShrn64(P);return g===h?g:F.getSqrtPriceAtTick(h).lte(e)?h:g}static signedShrn64(e){if(e.isNeg()){let t=new le(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),a=t-n,s=20,u=new le(10).pow(new le(s)),c=o.mul(u),l=new le(1).shln(128),p=c.div(l).toString();for(;p.length<=s;)p="0"+p;let P=p.slice(0,-s),g=p.slice(-s),h=P+"."+g;return new Pt(h).mul(new Pt(10).pow(a))}static tickToPrice(e,t,n){let o=F.getSqrtPriceAtTick(e);return this.sqrtPriceX64ToPrice(o,t,n)}static priceToTick(e,t,n){let a=e.div(Math.pow(10,t-n)).log().div(new Pt(1.0001).log()).floor();return Math.max(he,Math.min(Ie,a.toNumber()))}static priceToSqrtPriceX64(e,t,n){let s=e.div(Math.pow(10,t-n)).sqrt().mul(new Pt(2).pow(64));return new le(s.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:a}){let s=e.clamp(1/10**Math.max(t,n),Number.MAX_SAFE_INTEGER);o||(s=new Pt(1).div(s));let u=F.toTickIndex(F.priceToTick(s,t,n),a),c=F.tickToPrice(u,t,n);return{price:o?c:new Pt(1).div(c),tick:u}}};async function pa(r,e,t,n,o,a,s=!0){let u=[],c=Ye(r,t).publicKey,l=await e.getAccountInfo(c),m=Qe.findTickArrayAddress({programId:r,poolId:t,poolBitmap:a,tickArrayBitmap:un.decode(l.data),tickSpacing:o,findInfo:{type:s?"zeroForOne":"oneForZero",tickArrayCurrent:n}});return(await we(e,m)).forEach((P,g)=>{P&&u.push({address:m[g],value:yt.decode(P.data)})}),u}var zn=class{static isFullyFilled({orderInfo:e}){return e.totalAmount.eq(e.filledAmount)}static getUnFilledAmount({orderInfo:e}){return e.totalAmount.sub(e.filledAmount)}static settleFilledOrder({orderInfo:e,tickInfo:t}){if(e.settleBase.isZero())return C;if(e.orderPhase.eq(t.orderPhase))return C;if(e.orderPhase.add(Be).eq(t.orderPhase)){let n=e.settleBase.mul(t.unfilledRatioX64),o=e.unfilledRatioX64,a=n.div(o),s=n.mod(o).isZero(),u=e.settleBase.sub(a);if(u.isZero())return C;let c=s?u:u.sub(Be);return F.getLimitOrderOutput({amountIn:c,tick:t.tick,zeroForOne:e.zeroForOne}).sub(e.settleOutput)}else{if(e.orderPhase.add(new Ms(2)).lte(t.orderPhase))return F.getLimitOrderOutput({amountIn:e.settleBase,tick:t.tick,zeroForOne:e.zeroForOne}).sub(e.settleOutput);throw Error("invalid order phase")}}};var ZR=({baseIn:r,price:e,mintADecimal:t,mintBDecimal:n,tickSpacing:o})=>{let a=F.priceToTick(e,t,n),s=F.toTickIndex(a,o),u=F.tickToPrice(s,t,n);return{tick:s,price:u}};import At from"bn.js";var Ii=class{static getfeeGrowthInside(e,t,n){let o=new At(0),a=new At(0);e.tickCurrent>=t.tick?(o=t.feeGrowthOutsideX64A,a=t.feeGrowthOutsideX64B):(o=ye(e.feeGrowthGlobalX64A,t.feeGrowthOutsideX64A),a=ye(e.feeGrowthGlobalX64B,t.feeGrowthOutsideX64B));let s=new At(0),u=new At(0);e.tickCurrent<n.tick?(s=n.feeGrowthOutsideX64A,u=n.feeGrowthOutsideX64B):(s=ye(e.feeGrowthGlobalX64A,n.feeGrowthOutsideX64A),u=ye(e.feeGrowthGlobalX64B,n.feeGrowthOutsideX64B));let c=ye(ye(e.feeGrowthGlobalX64A,o),s),l=ye(ye(e.feeGrowthGlobalX64B,a),u);return{feeGrowthInsideX64A:c,feeGrowthInsideBX64:l}}static GetPositionFees(e,t,n,o){let{feeGrowthInsideX64A:a,feeGrowthInsideBX64:s}=this.getfeeGrowthInside(e,n,o),u=j(ye(a,t.feeGrowthInsideLastX64A),t.liquidity,Z),c=t.tokenFeesOwedA.add(u),l=j(ye(s,t.feeGrowthInsideLastX64B),t.liquidity,Z),m=t.tokenFeesOwedB.add(l);return{tokenFeeAmountA:c,tokenFeeAmountB:m}}static GetPositionRewards(e,t,n,o){let a=[],s=this.getRewardGrowthInside(e.tickCurrent,n,o,e.rewardInfos);for(let u=0;u<s.length;u++){let c=s[u],l=t.rewardInfos[u],m=ye(c,l.growthInsideLastX64),p=j(m,t.liquidity,Z),P=l.rewardAmountOwed.add(p);a.push(P)}return a}static getRewardGrowthInside(e,t,n,o){let a=[];for(let s=0;s<o.length;s++){let u=new At(0);t.liquidityGross.eqn(0)?u=o[s].growthGlobalX64:e<t.tick?u=ye(o[s].growthGlobalX64,t.rewardGrowthsOutsideX64[s]):u=t.rewardGrowthsOutsideX64[s];let c=new At(0);n.liquidityGross.eqn(0)||(e<n.tick?c=n.rewardGrowthsOutsideX64[s]:c=ye(o[s].growthGlobalX64,n.rewardGrowthsOutsideX64[s])),a.push(ye(ye(o[s].growthGlobalX64,u),c))}return a}};export{Yr as AMM_CONFIG_SEED,ro as BIT_PRECISION,qs as BN_NEGATIVE_ONE,Be as BN_ONE,C as BN_ZERO,pn as CollectFeeOn,Gs as DYNAMIC_CONFIG_INDEX,ea as DYNAMIC_FEE_CONFIG_SEED,uo as DYNAMIC_FEE_CONTROL_DENOMINATOR,bt as DynamicFeeInfo,rt as EXTENSION_TICKARRAY_BITMAP_SIZE,Ue as FEE_RATE_DENOMINATOR,no as LOG_B_2_X32,oo as LOG_B_P_ERR_MARGIN_LOWER_X64,io as LOG_B_P_ERR_MARGIN_UPPER_X64,zn as LimitOrderMath,ne as LiquidityMathUtil,Vs as MAGIC_SQRT_10001,_s as MAX_FEE_RATE,Gt as MAX_FEE_RATE_NUMERATOR,ve as MAX_SQRT_PRICE_X64,Ie as MAX_TICK,Es as MAX_TICK_SPACING,Fe as MIN_SQRT_PRICE_X64,he as MIN_TICK,co as OBSERVATION_NUM,Ws as OBSERVATION_UPDATE_DURATION_DEFAULT,Hr as OPERATION_SEED,lo as OPERATION_SIZE_USIZE,ta as PERMISSION_SEED,ii as POOL_LOCK_ID_SEED,$r as POOL_OBSERVATION_SEED,Qr as POOL_REWARD_VAULT_SEED,qn as POOL_SEED,jr as POOL_TICK_ARRAY_BITMAP_SEED,$o as POOL_VAULT_SEED,Jo as POSITION_SEED,Et as PoolFee,Ri as PoolStatusBitFlag,Ci as PoolStatusBitIndex,Nt as PoolUtil,De as PoolUtils,Ii as PositionUtils,dn as Q128,Z as Q64,so as REDUCTION_FACTOR_DENOMINATOR,it as RESOLUTION,Tt as REWARD_NUM,Li as RewardState,Jr as SUPPORT_MINT_SEED,Vt as SqrtPriceMath,_t as SwapMathUtil,Ne as SwapState,Ut as TICK_ARRAY_BITMAP_SIZE,Zr as TICK_ARRAY_SEED,Pe as TICK_ARRAY_SIZE,Ds as TICK_ARRAY_SIZE_USIZE,ao as TICK_TO_SQRT_PRICE_FACTORS,Qe as TickArrayBitmapUtil,ue as TickArrayUtil,F as TickUtil,qt as U128_MAX,iu as U256_MAX,zs as U64_IGNORE_RANGE,qe as U64_MAX,Oi as UpdateAmmConfigParam,Ni as UpdateOperationAccountParam,kt as VOLATILITY_ACCUMULATOR_SCALE,mo as WHITE_MINT_SIZE_USIZE,fu as abs,Hs as checkedAdd,$s as checkedMul,js as checkedSub,lu as clearBit,da as clmmComputeInfoToApiInfo,yo as decimalToX64,zt as divRoundingUp,pa as fetchTickArrays,pu as fromSignedI128,Us as getCollectFeeOnDescription,ZR as getOrderTick,Xp as getPdaAmmConfigId,Yp as getPdaDynamicFeeConfigAddress,Ye as getPdaExBitmapAccount,ua as getPdaLimitOrderAddress,ca as getPdaLimitOrderNonceAddress,ri as getPdaLockClPositionIdV2,la as getPdaLockPositionId,Un as getPdaMetadataKey,sa as getPdaMintExAccount,aa as getPdaObservationAccount,oi as getPdaOperationAccount,oa as getPdaPermission,ia as getPdaPermissionedPoolId,ni as getPdaPersonalPositionAddress,na as getPdaPoolId,ra as getPdaPoolRewardVaultId,ei as getPdaPoolVaultId,ti as getPdaProtocolPositionAddress,He as getPdaTickArrayAddress,Wn as i32ToBytes,Zo as i32ToBytesBE,uu as isBitSet,su as leastSignificantBit,yn as mask,Mi as mockV3CreatePoolInfo,po as mostSignificantBit,J as mulDivCeil,j as mulDivFloor,eu as mulDivRound,Js as mulFull,cu as setBit,Qn as swapInternal,du as toSignedI128,mu as toggleBit,ou as u128CheckedMul,tu as u128SaturatingAdd,nu as u128SaturatingSub,En as u16ToBytes,Dn as u16ToBytesBE,au as u256MulDivCeil,ru as u256MulDivFloor,Ho as u64ToBytes,jo as u8ToBytes,ye as wrappingSubU128,fo as x64ToDecimal};
//# sourceMappingURL=index.mjs.map