@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 212 kB
JavaScript
var _r=Object.create;var Ht=Object.defineProperty,Er=Object.defineProperties,Dr=Object.getOwnPropertyDescriptor,Wr=Object.getOwnPropertyDescriptors,qr=Object.getOwnPropertyNames,Sn=Object.getOwnPropertySymbols,Ur=Object.getPrototypeOf,io=Object.prototype.hasOwnProperty,Zo=Object.prototype.propertyIsEnumerable;var Qo=(f,e,t)=>e in f?Ht(f,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):f[e]=t,M=(f,e)=>{for(var t in e||(e={}))io.call(e,t)&&Qo(f,t,e[t]);if(Sn)for(var t of Sn(e))Zo.call(e,t)&&Qo(f,t,e[t]);return f},q=(f,e)=>Er(f,Wr(e));var ot=(f,e)=>{var t={};for(var n in f)io.call(f,n)&&e.indexOf(n)<0&&(t[n]=f[n]);if(f!=null&&Sn)for(var n of Sn(f))e.indexOf(n)<0&&Zo.call(f,n)&&(t[n]=f[n]);return t};var Gr=(f,e)=>{for(var t in e)Ht(f,t,{get:e[t],enumerable:!0})},Ho=(f,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of qr(e))!io.call(f,o)&&o!==t&&Ht(f,o,{get:()=>e[o],enumerable:!(n=Dr(e,o))||n.enumerable});return f};var W=(f,e,t)=>(t=f!=null?_r(Ur(f)):{},Ho(e||!f||!f.__esModule?Ht(t,"default",{value:f,enumerable:!0}):t,f)),zr=f=>Ho(Ht({},"__esModule",{value:!0}),f);var Mu={};Gr(Mu,{Clmm:()=>An});module.exports=zr(Mu);var uo=require("@solana/web3.js");var jt=require("lodash");var ro=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}},jo={},Xr={};function oe(f){let e=(0,jt.get)(jo,f);if(!e){let t=(0,jt.get)(Xr,f);e=new ro({name:f,logLevel:t}),(0,jt.set)(jo,f,e)}return e}var gt=require("@solana/spl-token"),ao=oe("Raydium_accountInfo_util");async function Ee(f,e,t){let{batchRequest:n,commitment:o="confirmed",chunkCount:i=100}=M({batchRequest:!1},t),r=so(e,i),a=new Array(r.length).fill([]);if(n){let s=r.map(d=>{let g=f._buildArgs([d.map(m=>m.toBase58())],o,"base64");return{methodName:"getMultipleAccounts",args:g}}),c=so(s,10);a=(await(await Promise.all(c.map(async d=>await f._rpcBatchRequest(d)))).flat()).map(d=>(d.error&&ao.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${d.error.message}`),d.result.value.map(g=>{if(g){let{data:m,executable:p,lamports:y,owner:b,rentEpoch:w}=g;return m.length!==2&&m[1]!=="base64"&&ao.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(m[0],"base64"),executable:p,lamports:y,owner:new uo.PublicKey(b),rentEpoch:w}}return null})))}else try{a=await Promise.all(r.map(s=>f.getMultipleAccountsInfo(s,o)))}catch(s){s instanceof Error&&ao.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${s.message}`)}return a.flat()}async function We(f,e,t){let n=await Ee(f,e.map(o=>o.pubkey),t);return e.map((o,i)=>q(M({},o),{accountInfo:n[i]}))}async function $t({connection:f,mints:e,config:t}){var i,r,a;if(e.length===0)return{};let n=await We(f,e.map(s=>({pubkey:ut(s)})),t),o={};for(let s of n){if(!s.accountInfo||s.accountInfo.data.length<gt.MINT_SIZE){console.log("invalid mint account",s.pubkey.toBase58());continue}let c=(0,gt.unpackMint)(s.pubkey,s.accountInfo,(i=s.accountInfo)==null?void 0:i.owner);o[s.pubkey.toString()]=q(M({},c),{programId:((r=s.accountInfo)==null?void 0:r.owner)||gt.TOKEN_PROGRAM_ID,feeConfig:(a=(0,gt.getTransferFeeConfig)(c))!=null?a:void 0})}return o[uo.PublicKey.default.toBase58()]=o[Z.toBase58()],o}var It=W(require("bn.js")),Nu=W(require("decimal.js"));var oi=W(require("big.js")),nn=W(require("bn.js"));var $o=W(require("toformat")),Yr=$o.default,Jt=Yr;var en=W(require("big.js")),ei=W(require("bn.js")),ti=W(require("decimal.js-light"));var Ft=W(require("bn.js"));var Jo=9007199254740991;function xe(f){let e=oe("Raydium_parseBigNumberish");if(f instanceof Ft.default)return f;if(typeof f=="string"){if(f.match(/^-?[0-9]+$/))return new Ft.default(f);e.logWithError(`invalid BigNumberish string: ${f}`)}return typeof f=="number"?(f%1&&e.logWithError(`BigNumberish number underflow: ${f}`),(f>=Jo||f<=-Jo)&&e.logWithError(`BigNumberish number overflow: ${f}`),new Ft.default(String(f))):typeof f=="bigint"?new Ft.default(f.toString()):(e.error(`invalid BigNumberish value: ${f}`),new Ft.default(0))}var Kn=oe("module/fraction"),co=Jt(en.default),tn=Jt(ti.default),Zr={[0]:tn.ROUND_DOWN,[1]:tn.ROUND_HALF_UP,[2]:tn.ROUND_UP},Hr={[0]:en.default.roundDown,[1]:en.default.roundHalfUp,[2]:en.default.roundUp},se=class{constructor(e,t=new ei.default(1)){this.numerator=xe(e),this.denominator=xe(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new se(this.denominator,this.numerator)}add(e){let t=e instanceof se?e:new se(xe(e));return this.denominator.eq(t.denominator)?new se(this.numerator.add(t.numerator),this.denominator):new se(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof se?e:new se(xe(e));return this.denominator.eq(t.denominator)?new se(this.numerator.sub(t.numerator),this.denominator):new se(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof se?e:new se(xe(e));return new se(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof se?e:new se(xe(e));return new se(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Kn.logWithError(`${e} is not an integer.`),e<=0&&Kn.logWithError(`${e} is not positive.`),tn.set({precision:e+1,rounding:Zr[n]});let o=new tn(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)||Kn.logWithError(`${e} is not an integer.`),e<0&&Kn.logWithError(`${e} is negative.`),co.DP=e,co.RM=Hr[n]||1,new co(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var jr=oe("Raydium_amount"),ni=Jt(oi.default);function $r(f,e){let t="0",n="0";if(f.includes(".")){let o=f.split(".");o.length===2?([t,n]=o,n=n.padEnd(e,"0")):jr.logWithError(`invalid number string, num: ${f}`)}else t=f;return[t,n.slice(0,e)||n]}var Ce=class extends se{constructor(t,n,o=!0,i){let r=new nn.default(0),a=lo.pow(new nn.default(t.decimals));if(o)r=xe(n);else{let s=new nn.default(0),c=new nn.default(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[u,d]=$r(n.toString(),t.decimals);s=xe(u),c=xe(d)}s=s.mul(a),r=s.add(c)}super(r,a);this.logger=oe(i||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new Ce(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Ce(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 ni.DP=this.token.decimals,new ni(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};var ii=require("@solana/web3.js"),mo=require("@solana/spl-token"),xn={chainId:101,address:ii.PublicKey.default.toBase58(),programId:mo.TOKEN_PROGRAM_ID.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},ct={chainId:101,address:"So11111111111111111111111111111111111111112",programId:mo.TOKEN_PROGRAM_ID.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};var Cn=require("@solana/web3.js");var ce=require("@solana/web3.js"),ri=require("@solana/spl-token");function vt({pubkey:f,isSigner:e=!1,isWritable:t=!0}){return{pubkey:f,isWritable:t,isSigner:e}}var Jr=[vt({pubkey:ri.TOKEN_PROGRAM_ID,isWritable:!1}),vt({pubkey:ce.SystemProgram.programId,isWritable:!1}),vt({pubkey:ce.SYSVAR_RENT_PUBKEY,isWritable:!1})];function po({publicKey:f,transformSol:e}){let t=ai(f.toString());if(t instanceof ce.PublicKey)return e&&t.equals(Bt)?Z:t;if(e&&t.toString()===Bt.toBase58())return Z;if(typeof t=="string"){if(t===ce.PublicKey.default.toBase58())return ce.PublicKey.default;try{return new ce.PublicKey(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function ai(f){try{return new ce.PublicKey(f)}catch{return f}}var Pt=new ce.PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Qe=new ce.PublicKey("SysvarRent111111111111111111111111111111111"),uc=new ce.PublicKey("SysvarC1ock11111111111111111111111111111111"),At=new ce.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),ea=new ce.PublicKey("Sysvar1nstructions1111111111111111111111111"),ta=ce.SystemProgram.programId,cc=new ce.PublicKey("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),lc=new ce.PublicKey("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),mc=new ce.PublicKey("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),dc=new ce.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),pc=new ce.PublicKey("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),fc=new ce.PublicKey("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),yc=new ce.PublicKey("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),bc=new ce.PublicKey("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),gc=new ce.PublicKey("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Pc=new ce.PublicKey("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),Ac=new ce.PublicKey("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Z=new ce.PublicKey("So11111111111111111111111111111111111111112"),Bt=ce.PublicKey.default;function ut(f){return po({publicKey:f,transformSol:!0})}var fo=class{constructor({mint:e,decimals:t,symbol:n,name:o,skipMint:i=!1,isToken2022:r=!1}){if(e===Bt.toBase58()||e instanceof Cn.PublicKey&&Bt.equals(e)){this.decimals=ct.decimals,this.symbol=ct.symbol,this.name=ct.name,this.mint=new Cn.PublicKey(ct.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=o||e.toString().substring(0,6),this.mint=i?Cn.PublicKey.default:po({publicKey:e}),this.isToken2022=r}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Le=fo;Le.WSOL=new fo(q(M({},ct),{mint:ct.address}));var yo=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Rn=yo;Rn.SOL=new yo(xn);var ui=W(require("bn.js"));var si=new se(new ui.default(100)),lt=class extends se{toSignificant(e=5,t,n){return this.mul(si).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(si).toFixed(e,t,n)}};var na=oe("Raydium_price"),Ze=class extends se{constructor(t){let{baseToken:n,quoteToken:o,numerator:i,denominator:r}=t;super(i,r);this.baseToken=n,this.quoteToken=o,this.scalar=new se(bo(n.decimals),bo(o.decimals))}get raw(){return new se(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new Ze({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&na.logWithError("mul token not equals");let n=super.mul(t);return new Ze({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,o){return this.adjusted.toSignificant(t,n,o)}toFixed(t=this.quoteToken.decimals,n,o){return this.adjusted.toFixed(t,n,o)}};var Ou=require("lodash");var ia=W(require("axios"));var ci={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"},oa=q(M({},ci),{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 ul=oe("Raydium_Api");var Bi=require("@solana/web3.js");var Dn=require("@solana/spl-token");var re=require("@solana/web3.js"),pi=W(require("axios"));var it=require("@solana/web3.js");async function go({connection:f,address:e,cluster:t="mainnet"}){let n=await Ee(f,[...new Set(e.map(i=>i.toString()))].map(i=>new it.PublicKey(i))),o={};for(let i=0;i<e.length;i++){let r=n[i],a=e[i];if(!r)continue;let s=new it.AddressLookupTableAccount({key:a,state:it.AddressLookupTableAccount.deserialize(r.data)});o[a.toString()]=s,t==="devnet"?_t[a.toString()]=s:Vt[a.toString()]=s}return o}var Vt={},Po=async f=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Vt[e])return Vt;let t=new it.PublicKey(e),n=await f.getAccountInfo(t);return n&&(Vt[e]=new it.AddressLookupTableAccount({key:t,state:it.AddressLookupTableAccount.deserialize(n.data)})),Vt},_t={},Ao=async f=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(_t[e])return _t;let t=new it.PublicKey(e),n=await f.getAccountInfo(t);return n&&(_t[e]=new it.AddressLookupTableAccount({key:t,state:it.AddressLookupTableAccount.deserialize(n.data)})),_t};var ee={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};var Fe=require("@solana/web3.js");var mi=require("@solana/spl-token"),li=oe("Raydium_txUtil"),di=1644;function Ln(f){let e=[],t=[];return f.microLamports&&(e.push(Fe.ComputeBudgetProgram.setComputeUnitPrice({microLamports:f.microLamports})),t.push(ee.SetComputeUnitPrice)),f.units&&(e.push(Fe.ComputeBudgetProgram.setComputeUnitLimit({units:f.units})),t.push(ee.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Et(f,e){var n,o;let t=e!=null?e:"confirmed";return(o=await((n=f.getLatestBlockhash)==null?void 0:n.call(f,{commitment:t})))==null?void 0:o.blockhash}async function On(f,e){return f.getSignatureStatuses([e]),new Promise((t,n)=>{let o=setTimeout(n,6e4);f.onSignature(e,i=>{if(clearTimeout(o),!i.err){t("");return}n(Object.assign(i.err,{txId:e}))},"confirmed")})}function wo(f,e){f.length<1&&li.logWithError(`no instructions provided: ${f.toString()}`),e.length<1&&li.logWithError(`no signers provided:, ${e.toString()}`);let t=new Fe.Transaction;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...f);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<di}catch{return!1}}function le(f,e){let[t,n]=Fe.PublicKey.findProgramAddressSync(f,e);return{publicKey:t,nonce:n}}function on({instructions:f,payer:e,signers:t}){return wo(f,[e,...t])}function rn({instructions:f,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Fe.Keypair.generate().publicKey.toString()}){let i=new Fe.TransactionMessage({payerKey:e,recentBlockhash:n,instructions:f}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Fe.VersionedTransaction(i).serialize()).toString("base64").length<di}catch{return!1}}var ra=f=>Buffer.isBuffer(f)?f:f instanceof Uint8Array?Buffer.from(f.buffer,f.byteOffset,f.byteLength):Buffer.from(f),aa=f=>{let e=f.serialize({requireAllSignatures:!1,verifySignatures:!1});f instanceof Fe.VersionedTransaction&&(e=ra(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function St(f){let e=[];return f.forEach(t=>{t instanceof Fe.Transaction&&(t.recentBlockhash||(t.recentBlockhash=mi.TOKEN_PROGRAM_ID.toBase58()),t.feePayer||(t.feePayer=Fe.Keypair.generate().publicKey)),e.push(aa(t))}),console.log("simulate tx string:",e),e}var Nn=2e3,Mn=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 pi.default.get(`https://solanacompass.com/api/fees?cacheFreshTime=${3e5}`)).data,{avg:t}=(n=e==null?void 0:e[15])!=null?n:{};if(!!t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:n}=Ln(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(re.SystemProgram.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new re.PublicKey(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(ee.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:o=[],endInstructionTypes:i=[],lookupTableAddress:r=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...o),this.endInstructionTypes.push(...i),this.lookupTableAddress.push(...r.filter(a=>a!==re.PublicKey.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:n}){return e===0?await this.buildV0(q(M({},t||{}),{lookupTableAddress:n})):this.build(t)}build(e){var n;let t=new re.Transaction;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(o=>o.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async o=>{var u;let{recentBlockHash:i,skipPreflight:r=!0,sendAndConfirm:a,notSendToRpc:s}=o||{},c=i!=null?i:await Et(this.connection,this.blockhashCommitment);if(t.recentBlockhash=c,this.signers.length&&t.sign(...this.signers),St([t]),(u=this.owner)!=null&&u.isKeyPair)return{txId:a?await(0,re.sendAndConfirmTransaction)(this.connection,t,this.signers.find(g=>g.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:r}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:r}),signedTx:t};if(this.signAllTransactions){let d=await this.signAllTransactions([t]);if(this.signers.length)for(let g of d)try{g.sign(...this.signers)}catch{}return{txId:s?"":await this.connection.sendRawTransaction(d[0].serialize(),{skipPreflight:r}),signedTx:d[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var c;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:o}=this.build(n),i=t.filter(u=>u.transaction.instructions.length>0),r=[o,...i.map(u=>u.transaction)],a=[this.signers,...i.map(u=>u.signers)],s=[...this.instructionTypes,...i.map(u=>u.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(u=>{u.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:r,signers:a,instructionTypes:s,execute:async u=>{var w;let{sequentially:d,onTxUpdate:g,skipTxCount:m=0,recentBlockHash:p,skipPreflight:y=!0}=u||{},b=p!=null?p:await Et(this.connection,this.blockhashCommitment);if((w=this.owner)!=null&&w.isKeyPair){if(d){let A=[],T=0;for(let I of r){if(++T,T<=m)continue;let P=await(0,re.sendAndConfirmTransaction)(this.connection,I,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});A.push(P)}return{txIds:A,signedTxs:r}}return{txIds:await await Promise.all(r.map(async A=>(A.recentBlockhash=b,await this.connection.sendRawTransaction(A.serialize(),{skipPreflight:y})))),signedTxs:r}}if(this.signAllTransactions){let A=r.map((I,P)=>(I.recentBlockhash=b,a[P].length&&I.sign(...a[P]),I));St(A);let T=await this.signAllTransactions(A);if(d){let I=0,P=[],k=async()=>{if(!T[I])return;let B=await this.connection.sendRawTransaction(T[I].serialize(),{skipPreflight:y});P.push({txId:B,status:"sent",signedTx:T[I]}),g==null||g([...P]),I++;let S=!1,x=null,L=null,U=V=>{x!==null&&clearInterval(x),L!==null&&this.connection.removeSignatureListener(L);let F=P.findIndex(v=>v.txId===B);if(F>-1){if(P[F].status==="error"||P[F].status==="success")return;P[F].status=V.err?"error":"success"}g==null||g([...P]),V.err||k()};this.loopMultiTxStatus&&(x=setInterval(async()=>{var V;if(S){clearInterval(x);return}try{let F=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:0});F&&(S=!0,clearInterval(x),U({err:((V=F.meta)==null?void 0:V.err)||null}),console.log("tx status from getTransaction:",B))}catch(F){S=!0,clearInterval(x),console.error("getTransaction timeout:",F,B)}},Nn)),L=this.connection.onSignature(B,V=>{if(S){this.connection.removeSignatureListener(L);return}S=!0,U(V)},"confirmed"),this.connection.getSignatureStatus(B)};return await k(),{txIds:P.map(B=>B.txId),signedTxs:T}}else{let I=[];for(let P=0;P<T.length;P+=1){let k=await this.connection.sendRawTransaction(T[P].serialize(),{skipPreflight:y});I.push(k)}return{txIds:I,signedTxs:T}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){var y;let p=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:o,recentBlockhash:i}=p,r=ot(p,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),a=M(M({},this.cluster==="devnet"?await Ao(this.connection):await Po(this.connection)),t),s=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let b of s)a[b]===void 0&&c.push(new re.PublicKey(b));let u=await go({connection:this.connection,address:c});for(let[b,w]of Object.entries(u))a[b]=w;let d=o?re.PublicKey.default.toBase58():i!=null?i:await Et(this.connection,this.blockhashCommitment),g=new re.TransactionMessage({payerKey:this.feePayer,recentBlockhash:d,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(a));((y=this.owner)==null?void 0:y.signer)&&!this.signers.some(b=>b.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let m=new re.VersionedTransaction(g);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async b=>{var I;let{skipPreflight:w=!0,sendAndConfirm:A,notSendToRpc:T}=b||{};if(St([m]),(I=this.owner)!=null&&I.isKeyPair){let P=await this.connection.sendTransaction(m,{skipPreflight:w});return A&&await On(this.connection,P),{txId:P,signedTx:m}}if(this.signAllTransactions){let P=await this.signAllTransactions([m]);if(this.signers.length)for(let k of P)try{k.sign(this.signers)}catch{}return{txId:T?"":await this.connection.sendTransaction(P[0],{skipPreflight:w}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async buildV0MultiTx(e){var c;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:o}=await this.buildV0(n),i=t.filter(u=>u.builder.instructions.length>0),r=[o,...i.map(u=>u.transaction)],a=[this.signers,...i.map(u=>u.signers)],s=[...this.instructionTypes,...i.map(u=>u.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(u=>{u.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),r.forEach(async(u,d)=>{u.sign(a[d])}),{builder:this,transactions:r,signers:a,instructionTypes:s,buildProps:n,execute:async u=>{var y;let{sequentially:d,onTxUpdate:g,recentBlockHash:m,skipPreflight:p=!0}=u||{};if(m&&r.forEach(b=>b.message.recentBlockhash=m),St(r),(y=this.owner)!=null&&y.isKeyPair){if(d){let b=[];for(let w of r){let A=await this.connection.sendTransaction(w,{skipPreflight:p});await On(this.connection,A),b.push(A)}return{txIds:b,signedTxs:r}}return{txIds:await Promise.all(r.map(async b=>await this.connection.sendTransaction(b,{skipPreflight:p}))),signedTxs:r}}if(this.signAllTransactions){let b=await this.signAllTransactions(r);if(d){let w=0,A=[],T=async()=>{if(!b[w])return;let I=await this.connection.sendTransaction(b[w],{skipPreflight:p});A.push({txId:I,status:"sent",signedTx:b[w]}),g==null||g([...A]),w++;let P=!1,k=null,B=null,S=x=>{k!==null&&clearInterval(k),B!==null&&this.connection.removeSignatureListener(B);let L=A.findIndex(U=>U.txId===I);if(L>-1){if(A[L].status==="error"||A[L].status==="success")return;A[L].status=x.err?"error":"success"}g==null||g([...A]),x.err||T()};this.loopMultiTxStatus&&(k=setInterval(async()=>{var x;if(P){clearInterval(k);return}try{let L=await this.connection.getTransaction(I,{commitment:"confirmed",maxSupportedTransactionVersion:0});L&&(P=!0,clearInterval(k),S({err:((x=L.meta)==null?void 0:x.err)||null}),console.log("tx status from getTransaction:",I))}catch(L){P=!0,clearInterval(k),console.error("getTransaction timeout:",L,I)}},Nn)),B=this.connection.onSignature(I,x=>{if(P){this.connection.removeSignatureListener(B);return}P=!0,S(x)},"confirmed"),this.connection.getSignatureStatus(I)};return T(),{txIds:[],signedTxs:b}}else{let w=[];for(let A=0;A<b.length;A+=1){let T=await this.connection.sendTransaction(b[A],{skipPreflight:p});w.push(T)}return{txIds:w,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var g;let d=e||{},{splitIns:t=[],computeBudgetConfig:n}=d,o=ot(d,["splitIns","computeBudgetConfig"]),i=n?Ln(n):{instructions:[],instructionTypes:[]},r=this.signers.reduce((m,p)=>q(M({},m),{[p.publicKey.toBase58()]:p}),{}),a=[],s=[],c=[],u=0;if(this.allInstructions.forEach(m=>{let p=[...c,m],y=n?[...i.instructions,...p]:p,w=[...new Set(p.map(A=>A.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(A=>new re.PublicKey(A));if(m!==t[u]&&c.length<12&&(on({instructions:y,payer:this.feePayer,signers:w})||on({instructions:p,payer:this.feePayer,signers:w})))c.push(m);else{if(c.length===0)throw Error("item ins too big");u+=m===t[u]?1:0,on({instructions:n?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:w})?a.push(new re.Transaction().add(...i.instructions,...c)):a.push(new re.Transaction().add(...c)),s.push(Array.from(new Set(c.map(A=>A.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat())).map(A=>r[A]).filter(A=>A!==void 0)),c=[m]}}),c.length>0){let p=[...new Set(c.map(y=>y.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(y=>r[y]).filter(y=>y!==void 0);on({instructions:n?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:p.map(y=>y.publicKey)})?a.push(new re.Transaction().add(...i.instructions,...c)):a.push(new re.Transaction().add(...c)),s.push(p)}return a.forEach(m=>m.feePayer=this.feePayer),(g=this.owner)!=null&&g.signer&&s.forEach(m=>{m.some(p=>p.publicKey.equals(this.owner.publicKey))||m.push(this.owner.signer)}),{builder:this,transactions:a,signers:s,instructionTypes:this.instructionTypes,execute:async m=>{var I;let{sequentially:p,onTxUpdate:y,skipTxCount:b=0,recentBlockHash:w,skipPreflight:A=!0}=m||{},T=w!=null?w:await Et(this.connection,this.blockhashCommitment);if(a.forEach(async(P,k)=>{P.recentBlockhash=T,s[k].length&&P.sign(...s[k])}),St(a),(I=this.owner)!=null&&I.isKeyPair){if(p){let P=0,k=[];for(let B of a){if(++P,P<=b){k.push("tx skipped");continue}let S=await(0,re.sendAndConfirmTransaction)(this.connection,B,this.signers.find(x=>x.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:A});k.push(S)}return{txIds:k,signedTxs:a}}return{txIds:await Promise.all(a.map(async P=>await this.connection.sendRawTransaction(P.serialize(),{skipPreflight:A}))),signedTxs:a}}if(this.signAllTransactions){let P=await this.signAllTransactions(a.slice(b,a.length)),k=[...a.slice(0,b),...P];if(p){let B=0,S=[],x=async()=>{if(!k[B])return;B<b&&(S.push({txId:"",status:"success",signedTx:k[B]}),y==null||y([...S]),B++,x());let L=await this.connection.sendRawTransaction(k[B].serialize(),{skipPreflight:A});S.push({txId:L,status:"sent",signedTx:k[B]}),y==null||y([...S]),B++;let U=!1,V=null,F=null,v=_=>{V!==null&&clearInterval(V),F!==null&&this.connection.removeSignatureListener(F);let $=S.findIndex(pe=>pe.txId===L);if($>-1){if(S[$].status==="error"||S[$].status==="success")return;S[$].status=_.err?"error":"success"}y==null||y([...S]),_.err||x()};this.loopMultiTxStatus&&(V=setInterval(async()=>{var _;if(U){clearInterval(V);return}try{let $=await this.connection.getTransaction(L,{commitment:"confirmed",maxSupportedTransactionVersion:0});$&&(U=!0,clearInterval(V),v({err:((_=$.meta)==null?void 0:_.err)||null}),console.log("tx status from getTransaction:",L))}catch($){U=!0,clearInterval(V),console.error("getTransaction timeout:",$,L)}},Nn)),F=this.connection.onSignature(L,_=>{if(U){this.connection.removeSignatureListener(F);return}U=!0,v(_)},"confirmed"),this.connection.getSignatureStatus(L)};return await x(),{txIds:S.map(L=>L.txId),signedTxs:k}}else{let B=[];for(let S=0;S<k.length;S+=1){let x=await this.connection.sendRawTransaction(k[S].serialize(),{skipPreflight:A});B.push(x)}return{txIds:B,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuildV0(e){var I;let T=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:o={},lookupTableAddress:i=[],insCountLimit:r=12}=T,a=ot(T,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),s=M(M({},this.cluster==="devnet"?await Ao(this.connection):await Po(this.connection)),o),c=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let P of c)s[P]===void 0&&u.push(new re.PublicKey(P));let d=await go({connection:this.connection,address:u});for(let[P,k]of Object.entries(d))s[P]=k;let g=t?Ln(t):{instructions:[],instructionTypes:[]},m=await Et(this.connection,this.blockhashCommitment),p=this.signers.reduce((P,k)=>q(M({},P),{[k.publicKey.toBase58()]:k}),{}),y=[],b=[],w=[],A=0;if(this.allInstructions.forEach(P=>{let k=[...w,P],B=t?[...g.instructions,...k]:k;if(P!==n[A]&&w.length<r&&(rn({instructions:B,payer:this.feePayer,lookupTableAddressAccount:s})||rn({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s})))w.push(P);else{if(w.length===0)throw Error("item ins too big");A+=P===n[A]?1:0;let S={};for(let x of[...new Set(c)])s[x]!==void 0&&(S[x]=s[x]);if(t&&rn({instructions:[...g.instructions,...w],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let x=new re.TransactionMessage({payerKey:this.feePayer,recentBlockhash:m,instructions:[...g.instructions,...w]}).compileToV0Message(Object.values(s));y.push(new re.VersionedTransaction(x))}else{let x=new re.TransactionMessage({payerKey:this.feePayer,recentBlockhash:m,instructions:[...w]}).compileToV0Message(Object.values(s));y.push(new re.VersionedTransaction(x))}b.push(Array.from(new Set(w.map(x=>x.keys.filter(L=>L.isSigner).map(L=>L.pubkey.toString())).flat())).map(x=>p[x]).filter(x=>x!==void 0)),w=[P]}}),w.length>0){let k=[...new Set(w.map(B=>B.keys.filter(S=>S.isSigner).map(S=>S.pubkey.toString())).flat()).values()].map(B=>p[B]).filter(B=>B!==void 0);if(t&&rn({instructions:[...g.instructions,...w],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let B=new re.TransactionMessage({payerKey:this.feePayer,recentBlockhash:m,instructions:[...g.instructions,...w]}).compileToV0Message(Object.values(s));y.push(new re.VersionedTransaction(B))}else{let B=new re.TransactionMessage({payerKey:this.feePayer,recentBlockhash:m,instructions:[...w]}).compileToV0Message(Object.values(s));y.push(new re.VersionedTransaction(B))}b.push(k)}return(I=this.owner)!=null&&I.signer&&b.forEach(P=>{P.some(k=>k.publicKey.equals(this.owner.publicKey))||P.push(this.owner.signer)}),y.forEach((P,k)=>{P.sign(b[k])}),{builder:this,transactions:y,buildProps:e,signers:b,instructionTypes:this.instructionTypes,execute:async P=>{var U;let{sequentially:k,onTxUpdate:B,skipTxCount:S=0,recentBlockHash:x,skipPreflight:L=!0}=P||{};if(y.map(async(V,F)=>{b[F].length&&V.sign(b[F]),x&&(V.message.recentBlockhash=x)}),St(y),(U=this.owner)!=null&&U.isKeyPair){if(k){let V=0,F=[];for(let v of y){if(++V,V<=S){console.log("skip tx: ",V),F.push("tx skipped");continue}let _=await this.connection.sendTransaction(v,{skipPreflight:L});await On(this.connection,_),F.push(_)}return{txIds:F,signedTxs:y}}return{txIds:await Promise.all(y.map(async V=>await this.connection.sendTransaction(V,{skipPreflight:L}))),signedTxs:y}}if(this.signAllTransactions){let V=await this.signAllTransactions(y.slice(S,y.length)),F=[...y.slice(0,S),...V];if(k){let v=0,_=[],$=async()=>{if(!F[v])return;if(v<S){_.push({txId:"",status:"success",signedTx:F[v]}),B==null||B([..._]),v++,$();return}let pe=await this.connection.sendTransaction(F[v],{skipPreflight:L});_.push({txId:pe,status:"sent",signedTx:F[v]}),B==null||B([..._]),v++;let me=!1,be=null,bt=null,_e=Me=>{be!==null&&clearInterval(be),bt!==null&&this.connection.removeSignatureListener(bt);let Ke=_.findIndex(oo=>oo.txId===pe);if(Ke>-1){if(_[Ke].status==="error"||_[Ke].status==="success")return;_[Ke].status=Me.err?"error":"success"}B==null||B([..._]),Me.err||$()};this.loopMultiTxStatus&&(be=setInterval(async()=>{var Me;if(me){clearInterval(be);return}try{let Ke=await this.connection.getTransaction(pe,{commitment:"confirmed",maxSupportedTransactionVersion:0});Ke&&(me=!0,clearInterval(be),_e({err:((Me=Ke.meta)==null?void 0:Me.err)||null}),console.log("tx status from getTransaction:",pe))}catch(Ke){me=!0,clearInterval(be),console.error("getTransaction timeout:",Ke,pe)}},Nn)),bt=this.connection.onSignature(pe,Me=>{if(me){this.connection.removeSignatureListener(bt);return}me=!0,_e(Me)},"confirmed"),this.connection.getSignatureStatus(pe)};return $(),{txIds:[],signedTxs:F}}else{let v=[];for(let _=0;_<F.length;_+=1){let $=await this.connection.sendTransaction(F[_],{skipPreflight:L});v.push($)}return{txIds:v,signedTxs:F}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}};var ko=(...f)=>f.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),De=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=oe(t)}createTxBuilder(e){return this.scope.checkOwner(),new Mn({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(ko(e))}logInfo(...e){this.logger.info(ko(e))}logAndCreateError(...e){let t=ko(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};var hi=require("@solana/web3.js"),ma=W(require("bn.js"));var En=require("@solana/spl-token");var Ti=require("@solana/web3.js"),ca=W(require("bn.js"));var la=require("@solana/spl-token");var Pi=require("@solana/web3.js"),Dt=W(require("bn.js"));var G=require("@solana/buffer-layout"),Fn=G.Layout,fi=G.Structure;var To=G.UInt;var yi=G.u8,he=G.u16;var vn=G.u32;var Ie=G.s32;var bi=G.seq;var te=G.blob;var ho=G.bits,gi=G.offset;var xt=class extends Fn{constructor(t,n,o){super(t,o);this.blob=te(t),this.signed=n}decode(t,n=0){let o=new Dt.default(this.blob.decode(t,n),10,"le");return this.signed?o.fromTwos(this.span*8).clone():o}encode(t,n,o=0){return typeof t=="number"&&(t=new Dt.default(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,o)}},Vn=class extends Fn{constructor(t){super(8,t);this._lower=ho(vn(),!1),this._upper=ho(vn(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let o=this._lower.decode(t,n),i=this._upper.decode(t,n+this._lower.span);return M(M({},o),i)}encode(t,n,o=0){return this._lower.encode(t,n,o)+this._upper.encode(t,n,o+this._lower.span)}};function N(f){return new To(1,f)}function ge(f){return new To(4,f)}function l(f){return new xt(8,!1,f)}function Y(f){return new xt(16,!1,f)}function Ai(f){return new xt(1,!0,f)}function Wt(f){return new xt(8,!0,f)}function wi(f){return new xt(16,!0,f)}var an=class extends Fn{constructor(t,n,o,i){super(t.span,i);this.layout=t,this.decoder=n,this.encoder=o}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,o){return this.layout.encode(this.encoder(t),n,o)}getSpan(t,n){return this.layout.getSpan(t,n)}};function h(f){return new an(te(32),e=>new Pi.PublicKey(e),e=>e.toBuffer(),f)}function Pe(f){return new an(yi(),sa,ua,f)}function sa(f){if(f===0)return!1;if(f===1)return!0;throw new Error("Invalid bool: "+f)}function ua(f){return f?1:0}function ki(f,e){let t=vn("length"),n=O([t,E(f,gi(t,-t.span),"values")]);return new an(n,({values:o})=>o,o=>({values:o}),e)}var Io=class extends fi{decode(e,t){return super.decode(e,t)}};function O(f,e,t){return new Io(f,e,t)}function E(f,e,t){let n,o=typeof e=="number"?e:(0,Dt.isBN)(e)?e.toNumber():new Proxy(e,{get(i,r){if(!n){let a=Reflect.get(i,"count");n=(0,Dt.isBN)(a)?a.toNumber():a,Reflect.set(i,"count",n)}return Reflect.get(i,r)},set(i,r,a){return r==="count"&&(n=a),Reflect.set(i,r,a)}});return bi(f,o,t)}var qt=O([h("mint"),h("owner"),l("amount"),ge("delegateOption"),h("delegate"),N("state"),ge("isNativeOption"),l("isNative"),l("delegatedAmount"),ge("closeAuthorityOption"),h("closeAuthority")]);var wr=require("@solana/web3.js"),bs=require("@solana/spl-token");var Si=require("@solana/web3.js"),Ki=require("@solana/spl-token");function j(f,e,t){return le([f.toBuffer(),(t!=null?t:Ki.TOKEN_PROGRAM_ID).toBuffer(),e.toBuffer()],new Si.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}var Q=require("@solana/web3.js"),xi=new Q.PublicKey("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),Ci=new Q.PublicKey("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),Ri=new Q.PublicKey("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Bo=new Q.PublicKey("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Rm=new Q.PublicKey("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),pa=new Q.PublicKey("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Li=new Q.PublicKey("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Oi=new Q.PublicKey("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Lm=new Q.PublicKey("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),fa=new Q.PublicKey("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),wt=new Q.PublicKey("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),sn=new Q.PublicKey("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Wn=new Q.PublicKey("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),Ni=new Q.PublicKey("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Om=new Q.PublicKey("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),ya=new Q.PublicKey("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),So=new Q.PublicKey("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),ba=new Q.PublicKey("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Nm=new Q.PublicKey("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ga=new Q.PublicKey("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Pa=new Q.PublicKey("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Aa=new Q.PublicKey("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Mm=new Q.PublicKey("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Fm=new Q.PublicKey("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),vm=new Q.PublicKey("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Vm=new Q.PublicKey("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),_m=new Q.PublicKey("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var kt={OPEN_BOOK_PROGRAM:new Q.PublicKey("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new Q.PublicKey("Ray1111111111111111111111111111111111111111"),AMM_V4:new Q.PublicKey("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new Q.PublicKey("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new Q.PublicKey("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new Q.PublicKey("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new Q.PublicKey("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new Q.PublicKey("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new Q.PublicKey("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new Q.PublicKey("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new Q.PublicKey("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new Q.PublicKey("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:Q.PublicKey.default,Router:new Q.PublicKey("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new Q.PublicKey("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new Q.PublicKey("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new Q.PublicKey("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new Q.PublicKey("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new Q.PublicKey("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new Q.PublicKey("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new Q.PublicKey("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new Q.PublicKey("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new Q.PublicKey("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new Q.PublicKey("Ray1111111111111111111111111111111111111111")};var gs=W(require("decimal.js"));var ie=W(require("bn.js")),de=new ie.default(1).shln(64),Ut=64,wa=new ie.default(1).shln(128),dt=new ie.default(1).shln(64).subn(1),ka=new ie.default(1).shln(128).subn(1),He=-443636,je=443636,$e=new ie.default("4295048016"),Je=new ie.default("79226673521066979257578248091"),Mi=new ie.default("59543866431248"),Fi=new ie.default("184467440737095516"),vi=new ie.default("15793534762490258745"),Vi=16,qn=512,qe=60,zm=new ie.default("18446743708227953217"),_i=[{bit:0,factor:new ie.default("fffcb933bd6fb800",16)},{bit:1,factor:new ie.default("fff97272373d4000",16)},{bit:2,factor:new ie.default("fff2e50f5f657000",16)},{bit:3,factor:new ie.default("ffe5caca7e10f000",16)},{bit:4,factor:new ie.default("ffcb9843d60f7000",16)},{bit:5,factor:new ie.default("ff973b41fa98e800",16)},{bit:6,factor:new ie.default("ff2ea16466c9b000",16)},{bit:7,factor:new ie.default("fe5dee046a9a3800",16)},{bit:8,factor:new ie.default("fcbe86c7900bb000",16)},{bit:9,factor:new ie.default("f987a7253ac65800",16)},{bit:10,factor:new ie.default("f3392b0822bb6000",16)},{bit:11,factor:new ie.default("e7159475a2caf000",16)},{bit:12,factor:new ie.default("d097f3bdfd2f2000",16)},{bit:13,factor:new ie.default("a9f746462d9f8000",16)},{bit:14,factor:new ie.default("70d869a156f31c00",16)},{bit:15,factor:new ie.default("31be135f97ed3200",16)},{bit:16,factor:new ie.default("9aa508b5b85a500",16)},{bit:17,factor:new ie.default("5d6af8dedc582c",16)},{bit:18,factor:new ie.default("2216e584f5fa",16)}],pt=1e6;var Un=1e5,un=1e4,Ei=1e4,Di=1e5;var cn=3,Wi=100;var qi=10,Ui=100,Gt=14;var D=new ie.default(0),et=new ie.default(1),Xm=new ie.default(-1),Gn={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:[]};var Ym=new ie.default("18446744073700000000");var Ko=O([te(8),N("bump"),he("index"),h("owner"),ge("protocolFeeRate"),ge("tradeFeeRate"),he("tickSpacing"),ge("fundFeeRate"),E(ge(),1),h("fundOwner"),E(l(),3)]),Ta=O([ge("blockTimestamp"),Wt("tickCumulative"),E(l(),4)]),Gi=O([te(8),Pe("initialized"),l("recentEpoch"),he("observationIndex"),h("poolId"),E(Ta,Wi,"observations"),E(l(),4)]),ha=O([he("filterPeriod"),he("decayPeriod"),he("reductionFactor"),ge("dynamicFeeControl"),ge("maxVolatilityAccumulator"),Ie("tickSpacingIndexReference"),ge("volatilityReference"),ge("volatilityAccumulator"),l("lastUpdateTimestamp"),E(N(),46)]),Ia=O([N("state"),l("openTime"),l("endTime"),l("lastUpdateTime"),Y("emissionsPerSecondX64"),l("totalEmissioned"),l("claimed"),h("mint"),h("vault"),h("creator"),Y("growthGlobalX64")]),ln=O([te(8),N("bump"),h("configId"),h("creator"),h("mintA"),h("mintB"),h("vaultA"),h("vaultB"),h("observationId"),N("mintDecimalsA"),N("mintDecimalsB"),he("tickSpacing"),Y("liquidity"),Y("sqrtPriceX64"),Ie("tickCurrent"),ge(),Y("feeGrowthGlobalX64A"),Y("feeGrowthGlobalX64B"),l("protocolFeesTokenA"),l("protocolFeesTokenB"),E(Y(),4),N("status"),N("feeOn"),te(6),E(Ia,cn,"rewardInfos"),te(8*16,"tickArrayBitmap"),E(l(),4),l("fundFeesTokenA"),l("fundFeesTokenB"),l("startTime"),l("recentEpoch"),ha.replicate("dynamicFeeInfo"),E(l(),46)]),Ba=O([Y("growthInsideLastX64"),l("rewardAmountOwed")]),zn=O([te(8),N("bump"),h("nftMint"),h("poolId"),Ie("tickLower"),Ie("tickUpper"),Y("liquidity"),Y("feeGrowthInsideLastX64A"),Y("feeGrowthInsideLastX64B"),l("tokenFeesOwedA"),l("tokenFeesOwedB"),E(Ba,cn,"rewardInfos"),l("recentEpoch"),E(l(),7)]),jm=O([te(8),N("bump"),h("poolId"),Ie("tickLower"),Ie("tickUpper"),Y("liquidity"),Y("feeGrowthInsideLastX64A"),Y("feeGrowthInsideLastX64B"),l("tokenFeesOwedA"),l("tokenFeesOwedB"),E(Y(),cn,"rewardGrowthInside"),l("recentEpoch"),E(l(),7)]),Sa=O([Ie("tick"),wi("liquidityNet"),Y("liquidityGross"),Y("feeGrowthOutsideX64A"),Y("feeGrowthOutsideX64B"),E(Y(),cn,"rewardGrowthsOutsideX64"),l("orderPhase"),l("ordersAmount"),l("partFilledOrdersRemaining"),Y("unfilledRatioX64"),E(ge(),3)]),zt=O([te(8),h("poolId"),Ie("startTickIndex"),E(Sa,qe,"ticks"),N("initializedTickCount"),l("recentEpoch"),E(N(),107)]),zi=O([te(8),N("bump"),E(h(),qi,"operationOwners"),E(h(),Ui,"whitelistMints")]),Ct=O([te(8),h("poolId"),h("owner"),Ie("tick"),Pe("zeroForOne"),l("orderPhase"),l("totalAmount"),l("filledAmount"),l("settleBase"),l("settleOutput"),l("openTime"),Y("unfilledRatioX64"),E(l(),4)]),Xn=O([te(8),h("poolId"),te(8*8*Gt,"positiveTickArrayBitmap"),te(8*8*Gt,"negativeTickArrayBitmap")]),$m=O([te(8),he("index"),he("filterPeriod"),he("decayPeriod"),he("reductionFactor"),ge("dynamicFeeControl"),ge("maxVolatilityAccumulator"),E(l(),8)]),Xi=O([te(8),h("wallet"),N("nonceIndex"),l("orderNonce"),E(l(),4)]),Jm=O([l(),N("bump"),h("owner"),h("poolId"),h("positionId"),h("nftAccount"),E(l(),8)]),Yi=O([te(8),N("bump"),h("lockOwner"),h("poolId"),h("positionId"),h("nftAccount"),h("lockNftMint"),l("recentEpoch"),E(l(),8)]);var X=require("@solana/spl-token"),K=require("@solana/web3.js"),Pn=W(require("bn.js"));var Qi=W(require("bn.js"));function xo(f){let e=Buffer.alloc(2);return e.writeUInt16LE(f),e}function Co(f){let e=Buffer.alloc(4);return e.writeInt32LE(f),e}function Zi(f){let e=Buffer.alloc(4);return e.writeInt32BE(f),e}function Hi(f){return(typeof f=="number"||typeof f=="bigint")&&(f=new Qi.default(f.toString())),f.toArrayLike(Buffer,"be",8)}function ji(f){let e=new ArrayBuffer(1);return new DataView(e).setUint8(0,f),new Uint8Array(e)}var sd=Buffer.from("amm_config","utf8"),Ro=Buffer.from("pool","utf8"),$i=Buffer.from("pool_vault","utf8"),Ka=Buffer.from("pool_reward_vault","utf8"),Ji=Buffer.from("position","utf8"),xa=Buffer.from("tick_array","utf8"),Ca=Buffer.from("operation","utf8"),Ra=Buffer.from("pool_tick_array_bitmap_extension","utf8"),La=Buffer.from("observation","utf8"),Oa=Buffer.from("support_mint","utf8"),ud=Buffer.from("dynamic_fee_config","utf8"),Na=Buffer.from("permission","utf8");function er(f,e,t,n){return le([Ro,e.toBuffer(),t.toBuffer(),n.toBuffer()],f)}function tr(f,e){return le([Na,e.toBuffer()],f)}function nr(f,e,t,n,o){return le([Ro,e.toBuffer(),t.toBuffer(),n.toBuffer(),xo(o)],f)}function ze(f,e,t){return le([$i,e.toBuffer(),t.toBuffer()],f)}function or(f,e,t){return le([Ka,e.toBuffer(),t.toBuffer()],f)}function ae(f,e,t){return le([xa,e.toBuffer(),Zi(t)],f)}function rt(f,e,t,n){return le([Ji,e.toBuffer(),Co(t),Co(n)],f)}function Xe(f,e){return le([Ji,e.toBuffer()],f)}function Rt(f){return le([Buffer.from("metadata","utf8"),At.toBuffer(),f.toBuffer()],At)}function mn(f){return le([Ca],f)}function fe(f,e){return le([Ra,e.toBuffer()],f)}function Lo(f,e){return le([La,e.toBuffer()],f)}function Lt(f,e){return le([Oa,e.toBuffer()],f)}function ir(f,e,t,n){return le([e.toBuffer(),t.toBuffer(),Hi(n)],f)}function rr(f,e,t){return le([e.toBuffer(),ji(t)],f)}var ar=Buffer.from("locked_position","utf8");function Oo(f,e){return le([ar,e.toBuffer()],f)}function Xt(f,e){return le([ar,e.toBuffer()],f)}var yr=require("js-sha256");var No=W(require("bn.js")),Yn=W(require("decimal.js"));function Ae(f,e,t){if(t.isZero())throw new Error("Division by zero");return f.mul(e).div(t)}function ye(f,e,t){if(t.isZero())throw new Error("Division by zero");let n=f.mul(e),o=n.div(t);return n.mod(t).isZero()?o:o.addn(1)}function Qn(f,e){return f.div(e).add(f.mod(e).isZero()?D:et)}var md=new No.default(1).shln(256).subn(1);function sr(f){return f.isZero()?-1:f.bitLength()-1}function ur(f,e){return new Yn.default(f.toString()).div(Yn.default.pow(2,64)).toDecimalPlaces(e)}function Yt(f){return new No.default(f.mul(Yn.default.pow(2,64)).floor().toFixed())}var lr=W(require("bn.js"));var Be=W(require("bn.js")),Ot=W(require("decimal.js"));var ft=class{static scanLinearBitmap({bitmap:e,tickSpacing:t,offset:n,checkInfo:o}){let i=[],r=e.length*8,a=0,s=r-1;if(o){let d=o.tick/(t*qe)-n;o.valueType==="gte"?a=Math.max(0,Math.ceil(d)):s=Math.min(r-1,Math.floor(d))}if(a>s)return i;let c=Math.floor(a/8),u=Math.floor(s/8);for(let d=c;d<=u;d++){if(!e[d])continue;let g=d===c?a%8:0,m=d===u?s%8:7;for(let p=g;p<=m;p++)e[d]&1<<p&&i.push((d*8+p+n)*t*qe)}return i}static findPoolBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let o=Math.floor(n.tick/qe/t);if(n.valueType==="lte"&&o<-512)return[];if(n.valueType==="gte"&&o>512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:-qn,checkInfo:n})}static findPositiveTickArrayBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let o=Math.floor(n.tick/qe/t);if(n.valueType==="lte"&&o<512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:qn,checkInfo:n})}static findNegativeTickArrayBitmap({bitmap:e,tickSpacing:t,count:n,checkInfo:o}){let i=[];if(o){let s=Math.floor(o.tick/qe/t);if(o.valueType==="gte"&&s>=-512)return i}let r=(o==null?void 0:o.valueType)==="lte"?Math.floor(o.tick/(qe*t))+7680:1/0,a=(o==null?void 0:o.valueType)==="gte"?Math.ceil(o.tick/(qe*t))+7680:0;e:for(let s=0;s<Gt;s++){let c=Gt-1-s;for(let u=0;u<512;u++){let d=s*512+u;if(d>r)break e;if(d<a)continue;let g=c*64+Math.floor(u/8);if(!e[g]){u=Math.floor(u/8)*8+7;continue}if(e[g]&1<<u%8){let m=(s*512+u-7680)*qe*t;if(i.push(m),n!==void 0&&i.length>=n)break e}}}return i}static findTickArrayStartIndex({tickSpacing:e,poolBitmap:t,tickArrayBitmap:n,findInfo:o}){if(o.type==="all")return[...this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap}),...this.findPoolBitmap({tickSpacing:e,bitmap:t}),...this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap})];let i=H.getTickArrayStartIndex(o.tickArrayCurrent,e),{count:r}=o;if(o.type==="oneForZero"){let a={tick:i,valueType:"gte"},s=[()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap,checkInfo:a}),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:a}),()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap,checkInfo:a})];return this.collectUntil(s,r)}if(o.type==="zeroForOne"){let a={tick:i,valueType:"lte"},s=[()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap,checkInfo:a}).sort((c,u)=>u-c),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:a}).sort((c,u)=>u-c),()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap,checkInfo:a}).sort((c,u)=>u-c)];return this.collectUntil(s,r)}throw new Error("find info type check error")}static collectUntil(e,t){let n=[];for(let o of e){if(t!==void 0&&n.length>=t)break;n.push(...o())}return n.slice(0,t)}static findTickArrayAddress(e){return this.findTickArrayStartIndex(e).map(t=>ae(e.programId,e.poolId,t).publicKey)}static maxTickInTickarrayBitmap(e){return e*qe*qn}},H=class{static firstinitializedTick({data:e,zeroForOne:t}){if(t){for(let n=e.ticks.length-1;n>=0;n--)if(z.isInitialized({data:e.ticks[n]}))return e.ticks[n]}else for(let n=0;n<e.ticks.length;n++)if(z.isInitialized({data:e.ticks[n]}))return e.ticks[n]}static nextInitalizedTick({data:e,currentTickIndex:t,tickSpacing:n,zeroForOne:o}){if(this.getTickArrayStartIndex(t,n)!==e.startTickIndex)return;let r=Math.floor((t-e.startTickIndex)/n);if(o){for(let a=r;a>=0;a--)if(z.isInitialized({data:e.ticks[a]}))return e.ticks[a]}else for(let a=r+1;a<qe;a++)if(z.isInitialized({data:e.ticks[a]}))return e.ticks[a]}static getTickArrayStartIndex(e,t){let n=this.tickCount(t);return Math.floor(e/n)*n}static getTickOffsetInArray(e,t){if(e%t!=0)throw new Error("tickIndex % tickSpacing not equal 0");let n=this.getTickArrayStartIndex(e,t);return Math.floor((e-n)/t)}static tickCount(e){return qe*e}static getMinTick(e){return Math.ceil(He/e)*e}static getMaxTick(e){return Math.floor(je/e)*e}},z=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<=je}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${He}, ${je}]`)}static getSqrtPriceAtTick(e){this.checkTick(e);let t=Math.abs(e),n=de.clone();for(let{bit:o,factor:i}of _i)(t&1<<o)!==0&&(n=Ae(n,i,de));return e>0&&(n=Ae(de,de,n)),n}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:n}){if(n){let o=z.getPriceAtTick(t,!1);return Ae(e,o,de)}else{let o=z.getPriceAtTick(t,!0);return Ae(e,de,o)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:n}){if(n){let o=z.getPriceAtTick(t,!0);return ye(e,o,de)}else{let o=z.getPriceAtTick(t,!1);return ye(e,de,o)}}static limitOrderUnfilledAmount({tick:e}){return e.ordersAmount.add(e.partFilledOrdersRemaining)}static matchLimitOrder({tick:e,swapAmount:t,swapDirectionZeroForOne:n,isBaseInput:o,feeRate:i,isFeeOnInput:r}){let a={amountIn:D,amountOut:D,ammFeeAmount:D},s=this.limitOrderUnfilledAmount({tick:e});if(t.isZero()||s.isZero())return a;if(o)r?(a.ammFeeAmount=ye(t,new Be.default(i),tt),a.amountIn=t.sub(a.ammFeeAmount)):a.amountIn=t,a.amountOut=this.getLimitOrderOutput({amountIn:a.amountIn,tick:e.tick,zeroForOne:n}),a.amountOut.gt(s)&&(a.amountOut=s,a.amountIn=this.getLimitOrderInput({amountOut:s,tick:e.tick,zeroForOne:!n}),r&&(a.ammFeeAmount=ye(a.amountIn,new Be.default(i),tt.sub(new Be.default(i)))));else{let d=Be.default.min(t,s);r?a.amountOut=d:a.amountOut=Be.default.min(ye(d,tt,tt.sub(new Be.default(i))),s),a.amountIn=this.getLimitOrderInput({amountOut:a.amountOut,tick:e.tick,zeroForOne:!n}),r&&(a.ammFeeAmount=ye(a.amountIn,new Be.default(i),tt.sub(new Be.default(i))))}let c=D;e.partFilledOrdersRemaining.gt(D)&&(c=Be.default.min(e.partFilledOrdersRemaining,a.amountOut),c.gt(D)&&(e.unfilledRatioX64=Ae(e.unfilledRatioX64,e.partFilledOrdersRemaining.sub(c),e.partFilledOrdersRemaining)),e.partFilledOrdersRemaining=e.partFilledOrdersRemaining.sub(c));let u=a.amountOut.sub(c);if(u.gt(D)){if(!e.partFilledOrdersRemaining.isZero())throw Error("!tick.partFilledOrdersRemaining.isZero()");if(e.ordersAmount.lt(u))throw Error("InvalidLimitOrderAmount");e.orderPhase=e.orderPhase.add(et),e.unfilledRatioX64=Ae(de,e.ordersAmount.sub(u),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(u),e.ordersAmount=D}return r||(a.ammFeeAmount=ye(a.amountOut,new Be.default(i),tt),a.amountOut=a.amountOut.sub(a.ammFeeAmount)),a}static getPriceAtTick(e,t){let n=this.getSqrtPriceAtTick(e);return t?n.mul(n).add(de.subn(1)).div(de):n.mul(n).div(de)}static getTickAtSqrtPrice(e){if(!(e.gte($e)&&e.lte(Je)))throw Error("SqrtPriceX64");let t=sr(e),n=t-64,o;n>=0?o=new Be.default(n).shln(32):o=new Be.default(-n).shln(32).neg();let i;t>=64?i=e.shrn(t-63):i=e.shln(63-t);let r=new Be.default(0),a=new Be.default(1).shln(63);for(let b=0;b<Vi&&!a.isZero();b++){i=i.mul(i);let w=i.shrn(127).toNumber();i=i.shrn(63+w),w&&(r=r.add(a)),a=a.shrn(1)}let s=r.shrn(32),u=o.add(s).mul(Mi),d=u.sub(Fi),g=u.add(vi),m=this.signedShrn64(d),p=this.signedShrn64(g);return m===p?m:z.getSqrtPriceAtTick(p).lte(e)?p:m}static signedShrn64(e){if(e.isNeg()){let t=new Be.default(1).shln(64),n=e.div(t);return!e.mod(t).isZero()&&e.isNeg()?n.subn(1).toNumber():n.toNumber()}else return e.shrn(64).toNumber()}static sqrtPriceX64ToPrice(e,t,n){let o=e.mul(e),i=t-n,r=20,a=new Be.default(10).pow(new Be.default(r)),s=o.mul(a),c=new Be.default(1).shln(128),d=s.div(c).toString();for(;d.length<=r;)d="0"+d;let g=d.slice(0,-r),m=d.slice(-r),p=g+"."+m;return new Ot.default(p).mul(new Ot.default(10).pow(i))}static tickToPrice(e,t,n){let o=z.getSqrtPriceAtTick(e);return this.sqrtPriceX64ToPrice(o,t,n)}static priceToTick(e,t,n){let i=e.div(Math.pow(10,t-n)).log().div(new Ot.default(1.0001).log()).floor();return Math.max(He,Math.min(je,i.toNumber()))}static priceToSqrtPriceX64(e,t,n){let r=e.div(Math.pow(10,t-n)).sqrt().mul(new Ot.default(2).pow(64));return new Be.default(r.toFixed(0))}static toTickIndex(e,t){return e>=0?e-e%t:e-e%t-(e%t!==0?t:0)}static getPriceAndTick({price:e,mintADecimals:t,mintBDecimals:n,zeroForOne:o,tickSpacing:i}){let r=e.clamp(1/10**Math.max(t,n),Number.MAX_SAFE_INTEGER);o||(r=new Ot.default(1).div(r));let a=z.toTickIndex(z.priceToTick(r,t,n),i),s=z.tickToPrice(a,t,n);return{price:o?s:new Ot.default(1).div(s),tick:a}}};async function cr(f,e,t,n,o,i,r=!0){let a=[],s=fe(f,t).publicKey,c=await e.getAccountInfo(s),u=ft.findTickArrayAddress({programId:f,poolId:t,poolBitmap:i,tickArrayBitmap:Xn.decode(c.data),tickSpacing:o,findInfo:{type:r?"zeroForOne":"oneForZero",tickArrayCurrent:n}});return(await Ee(e,u)).forEach((g,m)=>{g&&a.push({address:u[m],value:zt.decode(g.data)})}),a}var Tt=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 D;if(e.orderPhase.eq(t.orderPhase))return D;if(e.orderPhase.add(et).eq(t.orderPhase)){let n=e.settleBase.mul(t.unfilledRatioX64),o=e.unfilledRatioX64,i=n.div(o),r=n.mod(o).isZero(),a=e.settleBase.sub(i);if(a.isZero())return D;let s=r?a:a.sub(et);return z.getLimitOrderOutput({amountIn:s,tick:t.tick,zeroForOne:e.zeroForOne}).sub(e.settleOutput)}else{if(e.orderPhase.add(new lr.default(2)).lte(t.orderPhase))return z.getLimitOrderOutput({amountIn:e.settleBase,tick:t.tick,zeroForOne:e.zeroForOne}).sub(e.settleOutput);throw Error("invalid order phase")}}};var dn=W(require("bn.js")),Mo=W(require("decimal.js"));var ke=class{static getDeltaAmountAUnsigned(e,t,n,o){e.gt(t)&&([e,t]=[t,e]);let i=n.shln(Ut),r=t.sub(e);if(!e.gt(D))throw Error("!sqrtPriceX64A.gt(BN_ZERO)");let a=o?Qn(ye(i,r,t),e):Ae(i,r,t).div(e);if(a.gt(dt))throw Error("MaxTokenOverflow");return a}static getDeltaAmountBUnsigned(e,t,n,o){e.gt(t)&&([e,t]=[t,e]);let i=o?ye(n,t.sub(e),de):Ae(n,t.sub(e),de);if(i.gt(dt))throw Error("MaxTokenOverflow");return i}static addDelta(e,t){if(t.isNeg()){let n=t.neg();if(e.lt(n))throw new Error("Liquidity underflow");return e.sub(n)}else return e.add(t)}static getLiquidityFromAmountA(e,t,n){if(n.isZero())return D;e.gt(t)&&([e,t]=[t,e]);let o=Ae(e,t,de),i=t.sub(e);return Ae(n,o,i)}static getLiquidityFromAmountB(e,t,n){if(n.isZero())return D;e.gt(t)&&([e,t]=[t,e]);let o=t.sub(e);return Ae(n,de,o)}static getLiquidityFromAmounts(e,t,n,o,i){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return this.getLiquidityFromAmountA(t,n,o);if(e.lt(n)){let r=this.getLiquidityFromAmountA(e,n,o),a=this.getLiquidityFromAmountB(t,e,i);return r.lt(a)?r:a}else return this.getLiquidityFromAmountB(t,n,i)}static getAmountsForLiquidity(e,t,n,o,i){t.gt(n)&&([t,n]=[n,t]);let r=D,a=D;return e.lte(t)?r=this.getDeltaAmountAUnsigned(t,n,o,i):e.lt(n)?(r=this.getDeltaAmountAUnsigned(e,n,o,i),a=this.getDeltaAmountBUnsigned(t,e,o,i)):a=this.getDeltaAmountBUnsigned(t,n,o,i),{amountA:r,amountB:a}}static getAmountsFromLiquidityWithSlippage(e,t,n,o,i,r,a){let{amountA:s,amountB:c}=this.getAmountsForLiquidity(e,t,n,o,r),u=i?1+a:1-a,d=new dn.default(new Mo.default(s.toString()).mul(u).toFixed(0)),g=new dn.default(new Mo.default(c.toString()).mul(u).toFixed(0));return{amountSlippageA:d,amountSlippageB:g}}static getLiquidityAndAmountsFromAmount({sqrtPriceCurrentX64:e,sqrtPriceLowerX64:t,sqrtPriceUpperX64:n,amountInfo:o}){let i;if(o.type==="liquidity")i=o.amount;else if(o.type==="amountA")i=e.gte(n)?D:this.getLiquidityFromAmountA(dn.default.max(e,t),n,o.amount);else if(o.type==="amountB")i=e.lte(t)?D:this.getLiquidityFromAmountB(t,dn.default.min(e,n),o.amount);else throw Error("amount info type check error");return M({liquidity:i},this.getAmountsForLiquidity(e,t,n,o.amount,!0))}};var ve=require("@solana/web3.js"),Re=W(require("bn.js"));var gn=require("@solana/spl-token");var ne=W(require("decimal.js"));var Nt=W(require("bn.js"));var Te=W(require("bn.js"));var pn=class{static getNextSqrtPriceFromAmountARoundingUp(e,t,n,o){if(n.isZero())return e;let i=t.shln(Ut);if(o){let r=n.mul(e),a=i.add(r);if(a.gte(i))return ye(i,e,a);let s=Ae(i,et,e);return ye(i,et,s.add(n))}else{let r=n.mul(e);if(i.lte(r))throw new Error("Insufficient liquidity for token0 removal");let a=i.sub(r);return ye(i,e,a)}}static getNextSqrtPriceFromAmountBRoundingDown(e,t,n,o){if(n.isZero())return e;if(o){let i=n.shln(Ut).div(t);return e.add(i)}else{let i=Qn(n.shln(Ut),t);return e.sub(i)}}static getNextSqrtPriceFromInput(e,t,n,o){if(!e.gt(D))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(D))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(D))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(D))throw Error("liquidity.gt(BN_ZERO)");return o?this.getNextSqrtPriceFromAmountBRoundingDown(e,t,n,!1):this.getNextSqrtPriceFromAmountARoundingUp(e,t,n,!1)}};var at=class{static newValue({poolInfo:e,amountSpecified:t,zeroForOne:n,feeRate:o,blockTimestamp:i}){let r={amountSpecifiedRemaining:t,amountCalculated:D,sqrtPriceX64:e.sqrtPriceX64,tick:e.tickCurrent,feeGrowthGlobalX64:n?e.feeGrowthGlobalX64A:e.feeGrowthGlobalX64B,lpFee:D,protocolFee:D,fundFee:D,liquidity:e.liquidity,sqrtPriceNextX64:D,tickNext:0,baseFeeRate:o,tickSpacing:e.tickSpacing,tickSpacingIndex:0,dynamicFeeInfo:Qt.getDynamicFeeInfo({poolInfo:e})};return r.dynamicFeeInfo&&(r.tickSpacingIndex=yn.tickSpacingIndexFromTick(r.tick,r.tickSpacing),Qt.updateReference({dynamicFeeInfo:r.dynamicFeeInfo,tickSpacingIndex:r.tickSpacingIndex,currentTimestamp:i})),r}static getTargetPriceBasedOnNextTick({data:e,tickNext:t,zeroForOne:n,sqrtPriceLimitX64:o}){e.tickNext=t,e.tickNext<He?e.tickNext=He:e.tickNext>je&&(e.tickNext=je),e.sqrtPriceNextX64=z.getSqrtPriceAtTick(e.tickNext);let i;if(n&&e.sqrtPriceNextX64.lt(o)||!n&&e.sqrtPriceNextX64.gt(o)?i=o:i=e.sqrtPriceNextX64,n){if(e.tick<e.tickNext)throw Error("data.tick < data.tickNext");if(e.sqrtPriceX64.lt(e.sqrtPriceNextX64))throw Error("data.sqrtPriceX64.lt(data.sqrtPriceNextX64)");if(e.sqrtPriceX64.lt(i))throw Error("data.sqrtPriceX64.lt(targetPrice)")}else{if(e.tickNext<=e.tick)throw Error("data.tickNext <= data.tick");if(e.sqrtPriceNextX64.lt(e.sqrtPriceX64))throw Error("data.sqrtPriceNextX64.lt(data.sqrtPriceX64)");if(i.lt(e.sqrtPriceX64))throw Error("targetPrice.lt(data.sqrtPriceX64)")}return i}static updateVolatilityAccumulator({state:e}){!e.dynamicFeeInfo||Qt.updateVolatilityAccumulator({state:e.dynamicFeeInfo,tickSpacingIndex:e.tickSpacingIndex})}static computeDynamicFeeRate({data:e,tickSpacing:t}){let n=e.volatilityAccumulator*t,o=n*n,i=Di*un*un,r=ye(new Te.default(e.dynamicFeeControl),new Te.default(o),new Te.default(i)).toNumber();return r>Un?Un:r}static getTotalFeeRate({data:e}){if(e.dynamicFeeInfo){let t=this.computeDynamicFeeRate({data:e.dynamicFeeInfo,tickSpacing:e.tickSpacing}),n=e.baseFeeRate+t;return Math.min(Un,n)}return e.baseFeeRate}static getSpacingBoundedPrice({data:e,targetPrice:t,zeroForOne:n}){if(e.dynamicFeeInfo===void 0)return{isSkipped:!0,boundedPrice:t};if(e.liquidity.isZero()||e.dynamicFeeInfo.volatilityAccumulator===e.dynamicFeeInfo.maxVolatilityAccumulator)return{isSkipped:!0,boundedPrice:t};let o=e.tickSpacing,i=n?e.tickSpacingIndex*o:(e.tickSpacingIndex+1)*o,r=Math.max(He,Math.min(je,i)),a=z.getSqrtPriceAtTick(r);return n?{isSkipped:!1,boundedPrice:Te.default.max(t,a)}:{isSkipped:!1,boundedPrice:Te.default.min(t,a)}}static applySwapAmounts({state:e,amountIn:t,amountOut:n,feeAmount:o,isBaseInput:i,isFeeOnInput:r,protocolFeeRate:a,fundFeeRate:s}){let c=r?t.add(o):t;i?(e.amountSpecifiedRemaining=e.amountSpecifiedRemaining.sub(c),e.amountCalculated=e.amountCalculated.add(n)):(e.amountSpecifiedRemaining=e.amountSpecifiedRemaining.sub(n),e.amountCalculated=e.amountCalculated.add(c)),this.splitFee({state:e,feeAmount:o,protocolFeeRate:a,fundFeeRate:s})}static updateDynamicFeeIndex({state:e,zeroForOne:t,isSkippedTickSpacing:n}){if(e.dynamicFeeInfo!==void 0){if(n){let o=e.sqrtPriceX64.eq(e.sqrtPriceNextX64)?e.tickNext:e.tick,i=yn.tickSpacingIndexFromTick(o,e.tickSpacing);!t&&o%e.tickSpacing===0&&(i=i-1),e.tickSpacingIndex=i,e.dynamicFeeInfo.volatilityAccumulator!==e.dynamicFeeInfo.maxVolatilityAccumulator&&this.updateVolatilityAccumulator({state:e})}e.tickSpacingIndex+=t?-1:1}}static splitFee({state:e,feeAmount:t,protocolFeeRate:n,fundFeeRate:o}){let i=t;if(n.gt(D)){let r=t.mul(n).div(new Te.default(tt));e.protocolFee=e.protocolFee.add(r),i=i.sub(r)}if(o.gt(D)){let r=t.mul(o).div(new Te.default(tt));e.fundFee=e.fundFee.add(r),i=i.sub(r)}if(e.liquidity.gt(D)){let r=Ae(i,de,e.liquidity);e.feeGrowthGlobalX64=e.feeGrowthGlobalX64.add(r),e.lpFee=e.lpFee.add(i)}}},fn=class{static newSwapComputationResult({sqrtPriceNextX64:e}){return{sqrtPriceNextX64:e!=null?e:D,amountIn:D,amountOut:D,feeAmount:D}}static calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:o,isBaseInput:i}){if(i)try{return o?ke.getDeltaAmountAUnsigned(t,e,n,!0):ke.getDeltaAmountBUnsigned(e,t,n,!0)}catch(r){if(r.message==="MaxTokenOverflow")return null;throw r}else try{return o?ke.getDeltaAmountBUnsigned(t,e,n,!1):ke.getDeltaAmountAUnsigned(e,t,n,!1)}catch(r){if(r.message==="MaxTokenOverflow")return null;throw r}}static computeSwap(e,t,n,o,i,r,a,s){let c=this.newSwapComputationResult({});if(r){let d=s?Ae(o,new Te.default(pt-i),new Te.default(pt)):o,g=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:a,isBaseInput:r});g!==null&&(c.amountIn=g),c.sqrtPriceNextX64=g!==null&&d.gte(c.amountIn)?t:pn.getNextSqrtPriceFromInput(e,n,d,a)}else{let d=s?o:ye(o,new Te.default(pt),new Te.default(pt-i)),g=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:a,isBaseInput:r});g!==null&&(c.amountOut=g),c.sqrtPriceNextX64=g!==null&&d.gte(c.amountOut)?t:pn.getNextSqrtPriceFromOutput(e,n,d,a)}if(a){if(!c.sqrtPriceNextX64.gte(t))throw Error("!result.sqrtPriceNextX64.gte(sqrtPriceTargetX64)")}else if(!t.gte(c.sqrtPriceNextX64))throw Error("!sqrtPriceTargetX64.gte(result.sqrtPriceNextX64)");let u=t.eq(c.sqrtPriceNextX64);if(a?(u&&r||(c.amountIn=ke.getDeltaAmountAUnsigned(c.sqrtPriceNextX64,e,n,!0)),u&&!r||(c.amountOut=ke.getDeltaAmountBUnsigned(c.sqrtPriceNextX64,e,n,!1))):(u&&r||(c.amountIn=ke.getDeltaAmountBUnsigned(e,c.sqrtPriceNextX64,n,!0)),u&&!r||(c.amountOut=ke.getDeltaAmountAUnsigned(e,c.sqrtPriceNextX64,n,!1))),r)s?c.sqrtPriceNextX64.eq(t)?c.feeAmount=ye(c.amountIn,new Te.default(i),new Te.default(pt-i)):c.feeAmount=o.sub(c.amountIn):(c.feeAmount=ye(c.amountOut,new Te.default(i),new Te.default(pt)),c.amountOut=c.amountOut.sub(c.feeAmount),u||(c.amountIn=o));else if(s)c.amountOut=Te.default.min(c.amountOut,o),c.feeAmount=ye(c.amountIn,new Te.default(i),new Te.default(pt-i));else{c.feeAmount=ye(c.amountOut,new Te.default(i),new Te.default(pt));let d=c.amountOut.sub(c.feeAmount);d.gt(o)?(c.feeAmount=c.amountOut.sub(o),c.amountOut=o):c.amountOut=d}return c}};function Fo({programId:f,poolId:e,poolInfo:t,tickArrays:n,configInfo:o,tickarrayBitmapExtension:i,amountSpecified:r,sqrtPriceLimitX64:a,zeroForOne:s,isBaseInput:c,blockTimestamp:u,includeExtraTickArrays:d}){a.isZero()&&(a=s?new Nt.default($e).addn(1):new Nt.default(Je).subn(1));let g=0;if(n.length===0)return{allTrade:!1,amountSpecifiedRemaining:r,amountCalculated:D,feeAmount:D,sqrtPriceX64:t.sqrtPriceX64,liquidity:t.liquidity,tickCurrent:t.tickCurrent,accounts:[]};let m=d?ft.findTickArrayAddress({programId:f,poolId:e,tickSpacing:t.tickSpacing,poolBitmap:t.tickArrayBitmap,tickArrayBitmap:i,findInfo:{type:s?"oneForZero":"zeroForOne",count:2,tickArrayCurrent:t.tickCurrent}}).filter(k=>k.toString()!==n[0].address.toString()):[],p=H.getTickArrayStartIndex(t.tickCurrent,t.tickSpacing),{firstItckArrayContainsPoolTick:y,firstValidTickArrayStartIndex:b}={firstItckArrayContainsPoolTick:n[g].value.startTickIndex===p,firstValidTickArrayStartIndex:n[g].value.startTickIndex},w=y,A=b,T=n[g],I=Ue.isFeeOnInput(t.feeOn,s),P=at.newValue({poolInfo:t,amountSpecified:r,zeroForOne:s,feeRate:o.tradeFeeRate,blockTimestamp:u});for(;!P.amountSpecifiedRemaining.isZero()&&!P.sqrtPriceX64.eq(a);){let k=(()=>{let x=H.nextInitalizedTick({data:T.value,tickSpacing:P.tickSpacing,zeroForOne:s,currentTickIndex:P.tick});if(x!==void 0)return x;if(w){let L=n[++g];return L===void 0?void 0:(A=L.value.startTickIndex,T=L,H.firstinitializedTick({data:L.value,zeroForOne:s}))}else return w=!0,H.firstinitializedTick({data:T.value,zeroForOne:s})})();if(k===void 0)return{allTrade:!1,amountSpecifiedRemaining:P.amountSpecifiedRemaining,amountCalculated:P.amountCalculated,feeAmount:P.lpFee.add(P.fundFee).add(P.protocolFee),sqrtPriceX64:P.sqrtPriceX64,liquidity:P.liquidity,tickCurrent:P.tick,accounts:n.slice(0,g).map(x=>x.address)};let B=at.getTargetPriceBasedOnNextTick({data:P,tickNext:k.tick,zeroForOne:s,sqrtPriceLimitX64:a}),S=P.liquidity;do{at.updateVolatilityAccumulator({state:P});let x=at.getTotalFeeRate({data:P}),{isSkipped:L,boundedPrice:U}=at.getSpacingBoundedPrice({data:P,targetPrice:B,zeroForOne:s}),V=!P.sqrtPriceX64.eq(U),F;V?(F=fn.computeSwap(P.sqrtPriceX64,U,P.liquidity,P.amountSpecifiedRemaining,x,c,s,I),at.applySwapAmounts({state:P,amountIn:F.amountIn,amountOut:F.amountOut,feeAmount:F.feeAmount,isBaseInput:c,isFeeOnInput:I,protocolFeeRate:new Nt.default(o.protocolFeeRate),fundFeeRate:new Nt.default(o.fundFeeRate)})):F=fn.newSwapComputationResult({sqrtPriceNextX64:U});let v=z.limitOrderUnfilledAmount({tick:k});if(P.sqrtPriceNextX64.eq(F.sqrtPriceNextX64)){let _=z.matchLimitOrder({tick:k,swapAmount:P.amountSpecifiedRemaining,swapDirectionZeroForOne:s,isBaseInput:c,feeRate:x,isFeeOnInput:I});if(_.amountIn.gt(D)&&at.applySwapAmounts({state:P,amountIn:_.amountIn,amountOut:_.amountOut,feeAmount:_.ammFeeAmount,isBaseInput:c,isFeeOnInput:I,protocolFeeRate:new Nt.default(o.protocolFeeRate),fundFeeRate:new Nt.default(o.fundFeeRate)}),z.hasLiquidity({data:k})&&!z.hasLimitOrders({data:k})){let $=s?k.liquidityNet.neg():k.liquidityNet;S=ke.addDelta(P.liquidity,$)}P.tick=s&&!z.hasLimitOrders({data:k})||!s&&z.hasLimitOrders({data:k})?P.tickNext-1:P.tickNext}else P.sqrtPriceX64.eq(F.sqrtPriceNextX64)||(P.tick=z.getTickAtSqrtPrice(F.sqrtPriceNextX64));if(P.sqrtPriceX64=F.sqrtPriceNextX64,at.updateDynamicFeeIndex({state:P,zeroForOne:s,isSkippedTickSpacing:L}),P.amountSpecifiedRemaining.isZero()||P.sqrtPriceX64.eq(B)){let _=z.limitOrderUnfilledAmount({tick:k});if(!P.amountSpecifiedRemaining.isZero()&&!_.eq(v)&&!_.isZero())throw Error("!limitOrderUnfilledAmountAfter.isZero()");break}}while(!0);P.liquidity=S}return{allTrade:!0,amountSpecifiedRemaining:D,amountCalculated:P.amountCalculated,feeAmount:P.lpFee.add(P.fundFee).add(P.protocolFee),sqrtPriceX64:P.sqrtPriceX64,liquidity:P.liquidity,tickCurrent:P.tick,accounts:[...m,...n.slice(0,g+1+(d?1:0)).map(k=>k.address)]}}var yn=class{static tickSpacingIndexFromTick(e,t){return Math.floor(e/t)}},Qt=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/Ei),e.lastUpdateTimestamp=new Re.default(n)):(e.tickSpacingIndexReference=t,e.volatilityReference=0,e.lastUpdateTimestamp=new Re.default(n)))}static updateVolatilityAccumulator({state:e,tickSpacingIndex:t}){let n=Math.abs(e.tickSpacingIndexReference-t),o=e.volatilityReference+n*un;e.volatilityAccumulator=Math.min(o,e.maxVolatilityAccumulator)}},Ue=class{static isFeeOnInput(e,t){switch(e){case 0:return!0;case 1:return t;case 2:return!t;default:return!0}}static isFeeOnTokenA(e,t){return e.feeOn===0?t:e.feeOn===1}static isOverflowDefaultTickarrayBitmap({tickSpacing:e,tickIndexs:t}){let{maxTickBoundary:n,minTickBoundary:o}=this.tickArrayStartIndexRange({tickSpacing:e});for(let i of t){let r=H.getTickArrayStartIndex(i,e);if(r>=n||r<o)return!0}return!1}static tickArrayStartIndexRange({tickSpacing:e}){let t=ft.maxTickInTickarrayBitmap(e),n=-t;return t>je&&(t=H.getTickArrayStartIndex(je,e)+H.tickCount(e)),n<He&&(n=H.getTickArrayStartIndex(He,e)),{maxTickBoundary:t,minTickBoundary:n}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:o,rewardInfos:i}){var a,s,c;let r=[];for(let u=0;u<i.length;u++){let d=i[u],g=(c=(a=t.rewardDefaultInfos[u])==null?void 0:a.mint.programId)!=null?c:(s=await e.getAccountInfo(d.mint))==null?void 0:s.owner;if(g===void 0)throw Error("get new reward mint info error");let m=q(M({},d),{perSecond:ur(d.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new ve.PublicKey(g)});if(m.mint.equals(ve.PublicKey.default)||m.totalEmissioned.eq(dt))continue;if(n<=m.openTime.toNumber()||o.eq(D)){r.push(m);continue}let p=new Re.default(Math.min(m.endTime.toNumber(),n)),y=p.sub(m.lastUpdateTime);if(y.isZero()){r.push(m);continue}let b=ye(y,m.emissionsPerSecondX64,de),w=Ae(y,m.emissionsPerSecondX64,o),A,T=m.totalEmissioned.add(b);if(T.lte(dt))A=T;else{let P=dt.sub(m.totalEmissioned);A=dt,w=Ae(P,de,o)}let I=m.growthGlobalX64.add(w);r.push(q(M({},m),{growthGlobalX64:I,totalEmissioned:A,lastUpdateTime:p}))}return r}},Ge=class{static getOutputAmountAndRemainAccounts(e,t,n,o,i,r,a){let s=o.toBase58()===e.mintA.address,c=H.getTickArrayStartIndex(e.accInfo.tickCurrent,e.accInfo.tickSpacing),{allTrade:u,amountCalculated:d,feeAmount:g,sqrtPriceX64:m,accounts:p}=Fo({programId:e.programId,poolId:e.id,poolInfo:e.accInfo,tickArrays:Object.entries(n).map(y=>({address:y[1].address,value:y[1]})).filter(y=>s?y.value.startTickIndex<=c:y.value.startTickIndex>=c).sort((y,b)=>s?b.value.startTickIndex-y.value.startTickIndex:y.value.startTickIndex-b.value.startTickIndex),configInfo:e.ammConfig,tickarrayBitmapExtension:t,amountSpecified:i,sqrtPriceLimitX64:a!=null?a:D,zeroForOne:s,isBaseInput:!0,blockTimestamp:r,includeExtraTickArrays:!0});return{allTrade:u,expectedAmountOut:d,remainingAccounts:p,executionPrice:m,feeAmount:g}}static getInputAmountAndRemainAccounts(e,t,n,o,i,r,a){let s=o.toBase58()===e.mintB.address,c=H.getTickArrayStartIndex(e.accInfo.tickCurrent,e.accInfo.tickSpacing),{allTrade:u,amountCalculated:d,feeAmount:g,sqrtPriceX64:m,accounts:p}=Fo({programId:e.programId,poolId:e.id,poolInfo:e.accInfo,tickArrays:Object.entries(n).map(y=>({address:new ve.PublicKey(y[0]),value:y[1]})).filter(y=>s?y.value.startTickIndex<=c:y.value.startTickIndex>=c).sort((y,b)=>s?b.value.startTickIndex-y.value.startTickIndex:y.value.startTickIndex-b.value.startTickIndex),configInfo:e.ammConfig,tickarrayBitmapExtension:t,amountSpecified:i,sqrtPriceLimitX64:a!=null?a:D,zeroForOne:s,isBaseInput:!1,blockTimestamp:r,includeExtraTickArrays:!0});return{allTrade:u,expectedAmountIn:d,remainingAccounts:p,executionPrice:m,feeAmount:g}}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let o=await We(e,t.map(r=>({pubkey:r})),{batchRequest:n}),i={};for(let r of o)r.accountInfo!==null&&(i[r.pubkey.toString()]=Xn.decode(r.accountInfo.data));return i}static async fetchMultiplePoolTickArrays({connection:e,poolKeys:t,batchRequest:n}){let o={},i=[];for(let s of t){let c=[...ft.findTickArrayStartIndex({tickSpacing:s.tickSpacing,poolBitmap:s.tickArrayBitmap,tickArrayBitmap:s.exBitmapInfo,findInfo:{type:"zeroForOne",count:7,tickArrayCurrent:s.tickCurrent}}),...ft.findTickArrayStartIndex({tickSpacing:s.tickSpacing,poolBitmap:s.tickArrayBitmap,tickArrayBitmap:s.exBitmapInfo,findInfo:{type:"oneForZero",count:7,tickArrayCurrent:s.tickCurrent}})];for(let u of c){let{publicKey:d}=ae(s.programId,s.id,u);o[d.toString()]===void 0&&(i.push({pubkey:d}),o[d.toString()]=s.id)}}let r=await We(e,i,{batchRequest:n}),a={};for(let s of r){if(!s.accountInfo)continue;let c=o[s.pubkey.toString()];if(!c)continue;a[c.toString()]===void 0&&(a[c.toString()]={});let u=zt.decode(s.accountInfo.data);a[c.toString()][u.startTickIndex]=q(M({},u),{address:s.pubkey})}return a}static computeAmountOut({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:o,epochInfo:i,amountIn:r,slippage:a,blockTimestamp:s,priceLimit:c=new ne.default(0)}){var F;let u,d=o.toBase58()===e.mintA.address,[g,m]=d?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];c.equals(new ne.default(0))?u=d?$e.add(new Re.default(1)):Je.sub(new Re.default(1)):u=z.priceToSqrtPriceX64(c,e.mintA.decimals,e.mintB.decimals);let p=Ye(r,g,i,!1),{allTrade:y,expectedAmountOut:b,remainingAccounts:w,executionPrice:A,feeAmount:T}=Ge.getOutputAmountAndRemainAccounts(e,t,n,o,p.amount.sub((F=p.fee)!=null?F:D),s,u),I=Ye(b,m,i,!1),P=z.sqrtPriceX64ToPrice(A,e.mintA.decimals,e.mintB.decimals),k=d?P:new ne.default(1).div(P),B=b.mul(new Re.default(Math.floor((1-a)*1e10))).div(new Re.default(1e10)),S=Ye(B,m,i,!1),x=d?e.currentPrice:new ne.default(1).div(e.currentPrice),L=new ne.default(k).sub(x).abs(),U=x,V=new lt(new ne.default(L).mul(10**15).toFixed(0),new ne.default(U).mul(10**15).toFixed(0));return{allTrade:y,realAmountIn:p,amountOut:I,minAmountOut:S,expirationTime:bn(p.expirationTime,I.expirationTime),currentPrice:e.currentPrice,executionPrice:k,priceImpact:V,fee:T,remainingAccounts:w,executionPriceX64:A}}static computeAmountOutFormat({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,amountIn:o,tokenOut:i,slippage:r,epochInfo:a,blockTimestamp:s,catchLiquidityInsufficient:c=!1}){let u=i.address===e.mintB.address,[d,g]=u?[e.mintA,e.mintB]:[e.mintB,e.mintA],[m,p]=[new Le(q(M({},d),{mint:d.address,isToken2022:d.programId===gn.TOKEN_2022_PROGRAM_ID.toBase58()})),new Le(q(M({},g),{mint:g.address,isToken2022:g.programId===gn.TOKEN_2022_PROGRAM_ID.toBase58()}))],{allTrade:y,realAmountIn:b,amountOut:w,minAmountOut:A,expirationTime:T,currentPrice:I,executionPrice:P,priceImpact:k,fee:B,remainingAccounts:S,executionPriceX64:x}=Ge.computeAmountOut({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:new ve.PublicKey(d.address),amountIn:o,slippage:r,epochInfo:a,catchLiquidityInsufficient:c,blockTimestamp:s}),L=q(M({},b),{amount:new Ce(m,b.amount),fee:b.fee===void 0?void 0:new Ce(m,b.fee)}),U=q(M({},w),{amount:new Ce(p,w.amount),fee:w.fee===void 0?void 0:new Ce(p,w.fee)}),V=q(M({},A),{amount:new Ce(p,A.amount),fee:A.fee===void 0?void 0:new Ce(p,A.fee)}),F=new Ze({baseToken:m,denominator:new Re.default(10).pow(new Re.default(20+m.decimals)),quoteToken:p,numerator:I.mul(new ne.default(10**(20+p.decimals))).toFixed(0)}),v=new Ze({baseToken:m,denominator:new Re.default(10).pow(new Re.default(20+m.decimals)),quoteToken:p,numerator:P.mul(new ne.default(10**(20+p.decimals))).toFixed(0)}),_=new Ce(m,B);return{allTrade:y,realAmountIn:L,amountOut:U,minAmountOut:V,expirationTime:T,currentPrice:F,executionPrice:v,priceImpact:k,fee:_,remainingAccounts:S,executionPriceX64:x}}static computeAmountIn({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:o,epochInfo:i,amountOut:r,slippage:a,priceLimit:s=new ne.default(0),blockTimestamp:c}){var F;let u=o.toBase58()===e.mintA.address,d={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},g;s.equals(new ne.default(0))?g=u?Je.sub(new Re.default(1)):$e.add(new Re.default(1)):g=z.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let m=Ye(r,d[o.toString()],i,!0),{allTrade:p,expectedAmountIn:y,remainingAccounts:b,executionPrice:w,feeAmount:A}=Ge.getInputAmountAndRemainAccounts(e,t,n,o,m.amount.sub((F=m.fee)!=null?F:D),c,g),T=u?e.mintB.address:e.mintA.address,I=Ye(y,d[T],i,!1),P=z.sqrtPriceX64ToPrice(w,e.mintA.decimals,e.mintB.decimals),k=u?P:new ne.default(1).div(P),B=y.mul(new Re.default(Math.floor((1+a)*1e10))).div(new Re.default(1e10)),S=Ye(B,d[T],i,!0),x=u?e.currentPrice:new ne.default(1).div(e.currentPrice),L=new ne.default(k).sub(x).abs(),U=x,V=new lt(new ne.default(L).mul(10**15).toFixed(0),new ne.default(U).mul(10**15).toFixed(0));return{allTrade:p,amountIn:I,maxAmountIn:S,realAmountOut:m,expirationTime:bn(I.expirationTime,m.expirationTime),currentPrice:e.currentPrice,executionPrice:k,priceImpact:V,fee:A,remainingAccounts:b}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:o}){var p,y,b;let i=e[t],r=z.tickToPrice(n,e.mintA.decimals,e.mintB.decimals).toNumber(),a=z.tickToPrice(o,e.mintA.decimals,e.mintB.decimals).toNumber(),s=Math.max(r,i.priceMin),u=Math.min(a,i.priceMax)-s,d=a-r,g=i.priceMax-i.priceMin,m;return u<=0?m=0:d===u?m=g/u:g===u?m=u/d:m=u/g*(u/d),{feeApr:i.feeApr*m,rewardsApr:[((p=i.rewardApr[0])!=null?p:0)*m,((y=i.rewardApr[1])!=null?y:0)*m,((b=i.rewardApr[2])!=null?b:0)*m],apr:i.apr*m}}static estimateAprsForPriceRangeDelta({poolInfo:e,poolLiquidity:t,aprType:n,mintPrice:o,liquidity:i,positionTickLowerIndex:r,positionTickUpperIndex:a,chainTime:s}){let c=n==="day"?1:n==="week"?7:n==="month"?30:0,u=e[n],d=o[ut(e.mintA.address).toString()],g=o[ut(e.mintB.address).toString()],m=e.mintA.decimals,p=e.mintB.decimals;if(!u||!d||!g)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let y=z.priceToSqrtPriceX64(new ne.default(e.price),e.mintA.decimals,e.mintB.decimals),b=z.getSqrtPriceAtTick(r),w=z.getSqrtPriceAtTick(a),{amountSlippageA:A,amountSlippageB:T}=ke.getAmountsFromLiquidityWithSlippage(y,b,w,t,!1,!1,0),{amountSlippageA:I,amountSlippageB:P}=ke.getAmountsFromLiquidityWithSlippage(y,b,w,i,!1,!1,0),k=new ne.default(A.toString()).div(new ne.default(10).pow(m)).mul(d.value).add(new ne.default(T.toString()).div(new ne.default(10).pow(p)).mul(g.value)),B=new ne.default(I.toString()).div(new ne.default(10).pow(m)).mul(d.value).add(new ne.default(P.toString()).div(new ne.default(10).pow(p)).mul(g.value)),S=new ne.default(1).div(k.add(B)),L=new ne.default(u.volumeFee).mul(365).div(c).mul(S).mul(100).toNumber(),U=3600*24*365,V=e.rewardDefaultInfos.map(F=>{var $,pe;let v=F.mint.decimals,_=o[F.mint.address];return s<(($=F.startTime)!=null?$:0)||s>((pe=F.endTime)!=null?pe:0)||!F.perSecond||!_||v===void 0?0:new ne.default(_.value).mul(new ne.default(F.perSecond).mul(U)).div(new ne.default(10).pow(v)).mul(S).mul(100).toNumber()});return{feeApr:L,rewardsApr:V,apr:L+V.reduce((F,v)=>F+v,0)}}static async getLiquidityAmountOutFromAmountIn({poolInfo:e,inputA:t,tickLower:n,tickUpper:o,amount:i,slippage:r,add:a,epochInfo:s,amountHasFee:c}){var w,A;let u=z.priceToSqrtPriceX64(new ne.default(e.price),e.mintA.decimals,e.mintB.decimals),d=z.getSqrtPriceAtTick(n),g=z.getSqrtPriceAtTick(o),m=Ye(i,(w=e[t?"mintA":"mintB"].extensions)==null?void 0:w.feeConfig,s,!c),p=new Re.default(new ne.default(m.amount.sub((A=m.fee)!=null?A:D).toString()).toFixed(0)),y;if(u.lte(d))y=t?ke.getLiquidityFromAmountA(d,g,p):new Re.default(0);else if(u.lte(g)){let T=ke.getLiquidityFromAmountA(u,g,p),I=ke.getLiquidityFromAmountB(d,u,p);y=t?T:I}else y=t?new Re.default(0):ke.getLiquidityFromAmountB(d,g,p);let b=await Ge.getAmountsFromLiquidity({epochInfo:s,poolInfo:e,tickLower:n,tickUpper:o,liquidity:y,slippage:r,add:a});return{liquidity:y,amountA:t?m:b.amountA,amountB:t?b.amountB:m,amountSlippageA:t?m:b.amountSlippageA,amountSlippageB:t?b.amountSlippageB:m,expirationTime:b.expirationTime}}static async getAmountsFromLiquidity({epochInfo:e,poolInfo:t,tickLower:n,tickUpper:o,liquidity:i,slippage:r,add:a}){var b,w,A,T;let s=z.getSqrtPriceAtTick(n),c=z.getSqrtPriceAtTick(o),u=a?1+r:1-r,d=ke.getAmountsForLiquidity(z.priceToSqrtPriceX64(new ne.default(t.price),t.mintA.decimals,t.mintB.decimals),s,c,i,a),[g,m]=[Ye(d.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),Ye(d.amountB,(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)],[p,y]=[Ye(d.amountA.muln(u),(A=t.mintA.extensions)==null?void 0:A.feeConfig,e,!0),Ye(d.amountB.muln(u),(T=t.mintB.extensions)==null?void 0:T.feeConfig,e,!0)];return{liquidity:i,amountA:g,amountB:m,amountSlippageA:p,amountSlippageB:y,expirationTime:bn(g.expirationTime,m.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let o=t.filter(c=>!n[c.id]).map(c=>new ve.PublicKey(c.id));(await Ee(e,o)).forEach((c,u)=>{!c||(n[o[u].toBase58()]=ln.decode(c.data))});let r=t.map(c=>fe(new ve.PublicKey(c.programId),new ve.PublicKey(c.id)).publicKey),a=await Ge.fetchExBitmaps({connection:e,exBitmapAddress:r,batchRequest:!1}),s={};return t.reduce((c,u)=>q(M({},c),{[u.id]:q(M({accInfo:n[u.id]},n[u.id]),{id:new ve.PublicKey(u.id),version:6,programId:new ve.PublicKey(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:q(M({},u.config),{id:new ve.PublicKey(u.config.id),fundOwner:""}),currentPrice:new ne.default(u.price),exBitmapAccount:fe(new ve.PublicKey(u.programId),new ve.PublicKey(u.id)).publicKey,exBitmapInfo:a[fe(new ve.PublicKey(u.programId),new ve.PublicKey(u.id)).publicKey.toBase58()],startTime:n[u.id].startTime.toNumber(),rewardInfos:n[u.id].rewardInfos})}),{})}static async fetchComputeClmmInfo({connection:e,poolInfo:t,rpcData:n}){return(await this.fetchComputeMultipleClmmInfo({connection:e,rpcDataMap:n?{[t.id]:n}:void 0,poolList:[t]}))[t.id]}static async fetchTickArrayInfo({connection:e,programId:t,poolId:n,tick:o,tickSpacing:i}){let r=H.getTickArrayStartIndex(o,i),a=ae(t,n,r).publicKey,s=await e.getAccountInfo(a);if(!s)throw new Error(`tick array ${a.toBase58()} not found`);return zt.decode(s.data)}static async fetchMultipleTickArrayInfo({connection:e,tickInfoList:t}){let n=t.map(i=>{let r=H.getTickArrayStartIndex(i.tick,i.tickSpacing);return ae(i.programId,i.poolId,r).publicKey});return(await Ee(e,n)).map(i=>i&&zt.decode(i.data))}},vo={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};function mr(f,e){let t=e!=null?e:{};return q(M({},f),{type:"Concentrated",programId:f.programId.toString(),id:f.id.toString(),rewardDefaultInfos:f.rewardInfos.filter(n=>!n.mint.equals(ve.PublicKey.default)).map(n=>{var o,i;return{mint:yt({address:n.mint.toBase58(),programId:gn.TOKEN_PROGRAM_ID.toBase58(),decimals:(o=t[n.mint.toBase58()].decimals)!=null?o:6}),perSecond:Number(n.emissionsPerSecondX64.divn(10**((i=t[n.mint.toBase58()].decimals)!=null?i:6)).toString()),startTime:n.openTime.toNumber(),endTime:n.endTime.toNumber()}}),rewardDefaultPoolInfos:"Clmm",price:f.currentPrice.toNumber(),mintAmountA:0,mintAmountB:0,feeRate:f.ammConfig.tradeFeeRate,openTime:f.startTime.toString(),tvl:0,day:vo,week:vo,month:vo,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,burnPercent:0,config:q(M({},f.ammConfig),{id:f.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),hasDynamicFee:!1,feeOn:"",launchMigratePool:!1,tips:[]})}var Fa=W(require("bn.js"));function Oe(f){let e=`global:${f}`;return Buffer.from(yr.sha256.digest(e)).slice(0,8)}Gi.span;var dr=oe("Raydium_Clmm"),Ne={createPool:Oe("create_pool"),createCustomizablePool:Oe("create_customizable_pool"),createPermissionedPool:Oe("create_permissioned_pool"),openPositionV2:Oe("open_position_v2"),openPositionWithToken22Nft:Oe("open_position_with_token22_nft"),closePosition:Oe("close_position"),increaseLiquidityV2:Oe("increase_liquidity_v2"),decreaseLiquidityV2:Oe("decrease_liquidity_v2"),initializeReward:Oe("initialize_reward"),setRewardParams:Oe("set_reward_params"),updateRewardInfos:Oe("update_reward_infos"),collectRemainingRewards:Oe("collect_remaining_rewards"),swapV2:Oe("swap_v2"),openLimitOrder:Oe("open_limit_order"),increaseLimitOrder:Oe("increase_limit_order"),decreaseLimitOrder:Oe("decrease_limit_order"),settleLimitOrder:Oe("settle_limit_order"),closeLimitOrder:Oe("close_limit_order")},pr=[188,37,179,131,82,150,84,73],fr=[16,72,250,198,14,162,212,19],J=class{static createPoolInstruction(e,t,n,o,i,r,a,s,c,u,d,g,m,p){let y=O([Y("sqrtPriceX64"),l("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},...(p!=null?p:[]).map(T=>({pubkey:T,isSigner:!1,isWritable:!1}))],w=Buffer.alloc(y.span);y.encode({sqrtPriceX64:m,startTime:D},w);let A=Buffer.from([...Ne.createPool,...w]);return new K.TransactionInstruction({keys:b,programId:e,data:A})}static createCustomizablePoolInstruction(e,t,n,o,i,r,a,s,c,u,d,g,m,p,y,b){let w=O([Y("sqrtPriceX64"),N("collectFeeOn"),Pe("enableDynamicFee")]),A=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},...y.map(P=>({pubkey:P,isSigner:!1,isWritable:!1})),...b?[{pubkey:b,isSigner:!1,isWritable:!1}]:[]],T=Buffer.alloc(w.span);w.encode({sqrtPriceX64:m,collectFeeOn:p,enableDynamicFee:b!==void 0},T);let I=Buffer.from([...Ne.createCustomizablePool,...T]);return new K.TransactionInstruction({keys:A,programId:e,data:I})}static createPermissionedPoolInstruction(e,t,n,o,i,r,a,s,c,u,d,g,m,p,y,b,w,A,T){let I=O([Y("sqrtPriceX64"),N("collectFeeOn"),Pe("enableDynamicFee"),he("seedIndex")]),P=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},...A.map(S=>({pubkey:S,isSigner:!1,isWritable:!1})),...T?[{pubkey:T,isSigner:!1,isWritable:!1}]:[]],k=Buffer.alloc(I.span);I.encode({sqrtPriceX64:y,collectFeeOn:b,enableDynamicFee:T!==void 0,seedIndex:w},k);let B=Buffer.from([...Ne.createPermissionedPool,...k]);return new K.TransactionInstruction({keys:P,programId:e,data:B})}static initializeRewardInstruction(e,t,n,o,i,r,a,s,c,u,d,g){let m=O([l("openTime"),l("endTime"),Y("emissionsPerSecondX64")]),p=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1}],y=Buffer.alloc(m.span);m.encode({openTime:u,endTime:d,emissionsPerSecondX64:g},y);let b=Buffer.from([...Ne.initializeReward,...y]);return new K.TransactionInstruction({keys:p,programId:e,data:b})}static updateRewardInfosInstruction(e,t){let n=[{pubkey:t,isSigner:!1,isWritable:!0}],o=Buffer.from([...Ne.updateRewardInfos]);return new K.TransactionInstruction({keys:n,programId:e,data:o})}static setRewardParamsInstruction(e,t,n,o,i,r,a,s,c,u,d,g){let m=O([N("rewardIndex"),Y("emissionsPerSecondX64"),l("openTime"),l("endTime")]),p=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0}],y=Buffer.alloc(m.span);m.encode({rewardIndex:c,emissionsPerSecondX64:g,openTime:u,endTime:d},y);let b=Buffer.from([...Ne.setRewardParams,...y]);return new K.TransactionInstruction({keys:p,programId:e,data:b})}static closePositionInstruction(e,t,n,o,i,r,a){let s=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:r?X.TOKEN_2022_PROGRAM_ID:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1}];a&&s.push({pubkey:a,isSigner:!1,isWritable:!0});let c=Buffer.from([...Ne.closePosition]);return new K.TransactionInstruction({keys:s,programId:e,data:c})}static openPositionV2Instruction(e,t,n,o,i,r,a,s,c,u,d,g,m,p,y,b,w,A,T,I,P,k,B,S,x,L,U){let V=O([Ie("tickLower"),Ie("tickUpper"),Ie("tickArrayLowerStart"),Ie("tickArrayUpperStart"),Y("liquidity"),l("amountMaxA"),l("amountMaxB"),Pe("withMetadata"),N("optionBaseFlag"),Pe("baseFlag")]),F=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:At,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...U?[{pubkey:U,isSigner:!1,isWritable:!0}]:[]],v=Buffer.alloc(V.span);V.encode({tickLower:A,tickUpper:T,tickArrayLowerStart:I,tickArrayUpperStart:P,liquidity:k,amountMaxA:B,amountMaxB:S,withMetadata:x,optionBaseFlag:L!==null?1:0,baseFlag:L!=null?L:!1},v);let _=Buffer.from([...Ne.openPositionV2,...v]);return new K.TransactionInstruction({keys:F,programId:e,data:_})}static increaseLiquidityV2Instruction(e,t,n,o,i,r,a,s,c,u,d,g,m,p,y,b,w,A,T){let I=O([Y("liquidity"),l("amountMaxA"),l("amountMaxB"),N("optionBaseFlag"),Pe("baseFlag")]),P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[]],k=Buffer.alloc(I.span);I.encode({liquidity:y,amountMaxA:b,amountMaxB:w,optionBaseFlag:A!==null?1:0,baseFlag:A!=null?A:!1},k);let B=Buffer.from([...Ne.increaseLiquidityV2,...k]);return new K.TransactionInstruction({keys:P,programId:e,data:B})}static decreaseLiquidityV2Instruction(e,t,n,o,i,r,a,s,c,u,d,g,m,p,y,b,w,A,T){let I=O([Y("liquidity"),l("amountMinA"),l("amountMinB")]),P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:Pt,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[],...y.map(S=>[{pubkey:S.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.rewardMint,isSigner:!1,isWritable:!1}]).flat()],k=Buffer.alloc(I.span);I.encode({liquidity:b,amountMinA:w,amountMinB:A},k);let B=Buffer.from([...Ne.decreaseLiquidityV2,...k]);return new K.TransactionInstruction({keys:P,programId:e,data:B})}static swapV2Instruction(e,t,n,o,i,r,a,s,c,u,d,g,m,p,y,b,w){let A=O([l("amount"),l("otherAmountThreshold"),Y("sqrtPriceLimitX64"),Pe("isBaseInput")]),T=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:Pt,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...d.map(k=>({pubkey:k,isSigner:!1,isWritable:!0}))],I=Buffer.alloc(A.span);A.encode({amount:m,otherAmountThreshold:p,sqrtPriceLimitX64:y,isBaseInput:b},I);let P=Buffer.from([...Ne.swapV2,...I]);return new K.TransactionInstruction({keys:T,programId:e,data:P})}static collectRemainingRewardsInstruction(e,t,n,o,i,r,a){let s=O([N("rewardIndex")]),c=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:Pt,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({rewardIndex:a},u);let d=Buffer.from([...Ne.collectRemainingRewards,...u]);return new K.TransactionInstruction({keys:c,programId:e,data:d})}static openPositionWithToken22NftInstruction(e,t,n,o,i,r,a,s,c,u,d,g,m,p,y,b,w,A,T,I,P,k,B,S,x,L){let U=O([Ie("tickLower"),Ie("tickUpper"),Ie("tickArrayLowerStart"),Ie("tickArrayUpperStart"),Y("liquidity"),l("amountMaxA"),l("amountMaxB"),Pe("withMetadata"),N("optionBaseFlag"),Pe("baseFlag")]),V=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...L?[{pubkey:L,isSigner:!1,isWritable:!0}]:[]],F=Buffer.alloc(U.span);U.encode({tickLower:w,tickUpper:A,tickArrayLowerStart:T,tickArrayUpperStart:I,liquidity:P,amountMaxA:k,amountMaxB:B,withMetadata:S,optionBaseFlag:x!==null?1:0,baseFlag:x!=null?x:!1},F);let v=Buffer.from([...Ne.openPositionWithToken22Nft,...F]);return new K.TransactionInstruction({keys:V,programId:e,data:v})}static openLimitOrderInstruction(e,t,n,o,i,r,a,s,c,u,d,g,m,p,y,b,w,A){let T=O([N("nonceIndex"),Pe("zeroForOne"),Ie("tickIndex"),l("amount")]),I=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1},...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[]],P=Buffer.alloc(T.span);T.encode({nonceIndex:p,zeroForOne:y,tickIndex:b,amount:w},P);let k=Buffer.from([...Ne.openLimitOrder,...P]);return new K.TransactionInstruction({keys:I,programId:e,data:k})}static increaseLimitOrderInstruction(e,t,n,o,i,r,a,s,c,u){let d=O([l("amount")]),g=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1}],m=Buffer.alloc(d.span);d.encode({amount:u},m);let p=Buffer.from([...Ne.increaseLimitOrder,...m]);return new K.TransactionInstruction({keys:g,programId:e,data:p})}static decreaseLimitOrderInstruction(e,t,n,o,i,r,a,s,c,u,d,g,m,p){let y=O([l("amount"),l("amountMin")]),b=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},...p?[{pubkey:p,isSigner:!1,isWritable:!0}]:[]],w=Buffer.alloc(y.span);y.encode({amount:g,amountMin:m},w);let A=Buffer.from([...Ne.decreaseLimitOrder,...w]);return new K.TransactionInstruction({keys:b,programId:e,data:A})}static settleLimitOrderInstruction(e,t,n,o,i,r,a,s,c){let u=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1}],d=Buffer.from([...Ne.settleLimitOrder]);return new K.TransactionInstruction({keys:u,programId:e,data:d})}static closeLimitOrderInstruction(e,t,n,o){let i=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0}],r=Buffer.from([...Ne.closeLimitOrder]);return new K.TransactionInstruction({keys:i,programId:e,data:r})}static createPoolInstructions(e){let{programId:t,owner:n,mintA:o,mintB:i,ammConfigId:r,initialPriceX64:a,extendMintAccount:s}=e,[c,u]=[new K.PublicKey(o.address),new K.PublicKey(i.address)],[d,g]=[new K.PublicKey(o.programId||X.TOKEN_PROGRAM_ID),new K.PublicKey(i.programId||X.TOKEN_PROGRAM_ID)],{publicKey:m}=er(t,r,c,u),{publicKey:p}=Lo(t,m),{publicKey:y}=ze(t,m,c),{publicKey:b}=ze(t,m,u),w=fe(t,m).publicKey,A=[this.createPoolInstruction(t,m,n,r,p,c,y,d,u,b,g,w,a,s)];return{signers:[],instructions:A,instructionTypes:[ee.CreateAccount,ee.ClmmCreatePool],address:{poolId:m,observationId:p,exBitmapAccount:w,mintA:c,mintB:u,mintAProgram:d,mintBProgram:g,mintAVault:y,mintBVault:b},lookupTableAddress:[]}}static createPermissionedPoolInstructions(e){let{programId:t,owner:n,mintA:o,mintB:i,ammConfigId:r,initialPriceX64:a,extendMintAccount:s,payer:c,seedIndex:u}=e,[d,g]=[new K.PublicKey(o.address),new K.PublicKey(i.address)],[m,p]=[new K.PublicKey(o.programId||X.TOKEN_PROGRAM_ID),new K.PublicKey(i.programId||X.TOKEN_PROGRAM_ID)],{publicKey:y}=nr(t,r,d,g,u),{publicKey:b}=tr(t,c),{publicKey:w}=Lo(t,y),{publicKey:A}=ze(t,y,d),{publicKey:T}=ze(t,y,g),I=fe(t,y).publicKey,P=[this.createPoolInstruction(t,y,n,r,w,d,A,m,g,T,p,I,a,s)];return{signers:[],instructions:P,instructionTypes:[ee.CreateAccount,ee.ClmmCreatePool],address:{poolId:y,observationId:w,exBitmapAccount:I,mintA:d,mintB:g,mintAProgram:m,mintBProgram:p,mintAVault:A,mintBVault:T,permission:b},lookupTableAddress:[]}}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,liquidity:r,amountMaxA:a,amountMaxB:s,base:c,withMetadata:u,getEphemeralSigners:d,nft2022:g}){let m=[],[p,y]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],b;if(d)b=new K.PublicKey((await d(1))[0]);else{let L=K.Keypair.generate();m.push(L),b=L.publicKey}let w=H.getTickArrayStartIndex(o,e.config.tickSpacing),A=H.getTickArrayStartIndex(i,e.config.tickSpacing),{publicKey:T}=ae(p,y,w),{publicKey:I}=ae(p,y,A),{publicKey:P}=g?j(n.wallet,b,X.TOKEN_2022_PROGRAM_ID):j(n.wallet,b,X.TOKEN_PROGRAM_ID),{publicKey:k}=Rt(b),{publicKey:B}=Xe(p,b),{publicKey:S}=rt(p,y,o,i),x=g?this.openPositionWithToken22NftInstruction(p,n.feePayer,y,n.wallet,b,P,S,T,I,B,n.tokenAccountA,n.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address),o,i,w,A,r,a,s,u==="create",c&&c==="MintA",Ue.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[w,A]})?fe(p,y).publicKey:void 0):this.openPositionV2Instruction(p,n.feePayer,y,n.wallet,b,P,k,S,T,I,B,n.tokenAccountA,n.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address),o,i,w,A,r,a,s,u==="create",null,Ue.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[w,A]})?fe(p,y).publicKey:void 0);return{signers:m,instructions:[x],instructionTypes:[ee.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:T,tickArrayUpper:I,positionNftAccount:P,metadataAccount:k,personalPosition:B,protocolPosition:S}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,base:r,baseAmount:a,otherAmountMax:s,liquidity:c,withMetadata:u,getEphemeralSigners:d,nft2022:g}){let m=[],[p,y]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],b;if(d)b=new K.PublicKey((await d(1))[0]);else{let L=K.Keypair.generate();m.push(L),b=L.publicKey}let w=H.getTickArrayStartIndex(o,e.config.tickSpacing),A=H.getTickArrayStartIndex(i,e.config.tickSpacing),{publicKey:T}=ae(p,y,w),{publicKey:I}=ae(p,y,A),{publicKey:P}=g?j(n.wallet,b,X.TOKEN_2022_PROGRAM_ID):j(n.wallet,b,X.TOKEN_PROGRAM_ID),{publicKey:k}=Rt(b),{publicKey:B}=Xe(p,b),{publicKey:S}=rt(p,y,o,i),x=g?this.openPositionWithToken22NftInstruction(p,n.feePayer,y,n.wallet,b,P,S,T,I,B,n.tokenAccountA,n.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address),o,i,w,A,c,!r||r==="MintA"?a:s,!r||r==="MintA"?s:a,u==="create",r&&r==="MintA",Ue.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[w,A]})?fe(p,y).publicKey:void 0):this.openPositionV2Instruction(p,n.feePayer,y,n.wallet,b,P,k,S,T,I,B,n.tokenAccountA,n.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address),o,i,w,A,D,r==="MintA"?a:s,r==="MintA"?s:a,u==="create",r==="MintA",Ue.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[w,A]})?fe(p,y).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:T,tickArrayUpper:I,positionNftAccount:P,metadataAccount:k,personalPosition:B,protocolPosition:S},instructions:[x],signers:m,instructionTypes:[ee.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,liquidity:r,amountMaxA:a,amountMaxB:s,base:c,withMetadata:u,getEphemeralSigners:d,nft2022:g}){let m,p=[];if(d)m=new K.PublicKey((await d(1))[0]);else{let L=K.Keypair.generate();p.push(L),m=L.publicKey}let[y,b]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],w=H.getTickArrayStartIndex(o,e.config.tickSpacing),A=H.getTickArrayStartIndex(i,e.config.tickSpacing),{publicKey:T}=ae(y,b,w),{publicKey:I}=ae(y,b,A),{publicKey:P}=g?j(n.wallet,m,X.TOKEN_2022_PROGRAM_ID):j(n.wallet,m,X.TOKEN_PROGRAM_ID),{publicKey:k}=Rt(m),{publicKey:B}=Xe(y,m),{publicKey:S}=rt(y,b,o,i),x=g?this.openPositionWithToken22NftInstruction(y,n.wallet,b,n.wallet,m,P,S,T,I,B,n.tokenAccountA,n.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(t.mintA.address),new K.PublicKey(t.mintB.address),o,i,w,A,r,a,s,u==="create",c&&c==="MintA",Ue.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[w,A]})?fe(y,b).publicKey:void 0):this.openPositionV2Instruction(y,n.wallet,b,n.wallet,m,P,k,S,T,I,B,n.tokenAccountA,n.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(t.mintA.address),new K.PublicKey(t.mintB.address),o,i,w,A,r,a,s,u==="create",null,Ue.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[w,A]})?fe(y,b).publicKey:void 0);return{address:{nftMint:m,tickArrayLower:T,tickArrayUpper:I,positionNftAccount:P,metadataAccount:k,personalPosition:B,protocolPosition:S},instructions:[x],signers:p,instructionTypes:[ee.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:o,nft2022:i}){let r=new K.PublicKey(e.programId),a=i?j(n.wallet,o.nftMint,X.TOKEN_2022_PROGRAM_ID).publicKey:j(n.wallet,o.nftMint,X.TOKEN_PROGRAM_ID).publicKey,{publicKey:s}=Xe(r,o.nftMint),c=[];return c.push(this.closePositionInstruction(r,n.wallet,o.nftMint,a,s,!!i,new K.PublicKey(e.id))),{address:{positionNftAccount:a,personalPosition:s},signers:[],instructions:c,instructionTypes:[ee.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:i,amountMaxA:r,amountMaxB:a,nft2022:s}){let[c,u]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],d=H.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),g=H.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:m}=ae(c,u,d),{publicKey:p}=ae(c,u,g),{publicKey:y}=s?j(o.wallet,n.nftMint,X.TOKEN_2022_PROGRAM_ID):j(o.wallet,n.nftMint,X.TOKEN_PROGRAM_ID),{publicKey:b}=Xe(c,n.nftMint),{publicKey:w}=rt(c,u,n.tickLower,n.tickUpper),A=this.increaseLiquidityV2Instruction(c,o.wallet,y,b,u,w,m,p,o.tokenAccountA,o.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address),i,r,a,null,Ue.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[d,g]})?fe(c,u).publicKey:void 0);return{address:{tickArrayLower:m,tickArrayUpper:p,positionNftAccount:y,personalPosition:b,protocolPosition:w},signers:[],instructions:[A],instructionTypes:[ee.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,base:i,baseAmount:r,otherAmountMax:a,nft2022:s}){let[c,u]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],d=H.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),g=H.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:m}=ae(c,u,d),{publicKey:p}=ae(c,u,g),{publicKey:y}=s?j(o.wallet,n.nftMint,X.TOKEN_2022_PROGRAM_ID):j(o.wallet,n.nftMint,X.TOKEN_PROGRAM_ID),{publicKey:b}=Xe(c,n.nftMint),{publicKey:w}=rt(c,u,n.tickLower,n.tickUpper);return{address:{tickArrayLower:m,tickArrayUpper:p,positionNftAccount:y,personalPosition:b,protocolPosition:w},instructions:[this.increaseLiquidityV2Instruction(c,o.wallet,y,b,u,w,m,p,o.tokenAccountA,o.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address),D,i==="MintA"?r:a,i==="MintA"?a:r,i==="MintA",Ue.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[d,g]})?fe(c,u).publicKey:void 0)],signers:[],instructionTypes:[ee.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:o,liquidity:i,amountMinA:r,amountMinB:a,programId:s,nft2022:c}){let[u,d]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],g=H.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),m=H.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:p}=ae(u,d,g),{publicKey:y}=ae(u,d,m),{publicKey:b}=c?j(o.wallet,n.nftMint,X.TOKEN_2022_PROGRAM_ID):j(o.wallet,n.nftMint,s),{publicKey:w}=Xe(u,n.nftMint),{publicKey:A}=rt(u,d,n.tickLower,n.tickUpper),T=new Map;for(let B=0;B<t.rewardInfos.length;B++)T.set(t.rewardInfos[B].mint.address,o.rewardAccounts[B]);let I=[];for(let B=0;B<t.rewardInfos.length;B++){let S=t.rewardInfos[B].mint.address,x=T.get(S);x&&I.push({poolRewardVault:new K.PublicKey(t.rewardInfos[B].vault),ownerRewardVault:x,rewardMint:new K.PublicKey(S)})}let P=[],k=this.decreaseLiquidityV2Instruction(u,o.wallet,b,w,d,A,p,y,o.tokenAccountA,o.tokenAccountB,new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B),new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address),I,i,r,a,Ue.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[g,m]})?fe(u,d).publicKey:void 0);return P.push(k),{address:{tickArrayLower:p,tickArrayUpper:y,positionNftAccount:b,personalPosition:w,protocolPosition:A},signers:[],instructions:P,instructionTypes:[ee.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:o,inputMint:i,amountIn:r,amountOutMin:a,sqrtPriceLimitX64:s,remainingAccounts:c}){let[u,d]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],[g,m]=[new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B)],[p,y]=[new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address)],b=e.mintA.address.toString()===i.toString(),w=[this.swapV2Instruction(u,o.wallet,d,new K.PublicKey(e.config.id),b?o.tokenAccountA:o.tokenAccountB,b?o.tokenAccountB:o.tokenAccountA,b?g:m,b?m:g,b?p:y,b?y:p,c,n,r,a,s,!0,fe(u,d).publicKey)];return{signers:[],instructions:w,instructionTypes:[ee.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:o,outputMint:i,amountOut:r,amountInMax:a,sqrtPriceLimitX64:s,remainingAccounts:c}){let[u,d]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],[g,m]=[new K.PublicKey(t.vault.A),new K.PublicKey(t.vault.B)],[p,y]=[new K.PublicKey(e.mintA.address),new K.PublicKey(e.mintB.address)],b=e.mintB.address.toString()===i.toBase58(),w=[this.swapV2Instruction(u,o.wallet,d,new K.PublicKey(e.config.id),b?o.tokenAccountA:o.tokenAccountB,b?o.tokenAccountB:o.tokenAccountA,b?g:m,b?m:g,b?p:y,b?y:p,c,n,r,a,s,!1,fe(u,d).publicKey)];return{signers:[],instructions:w,instructionTypes:[ee.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:o}){let[i,r]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],a=or(i,r,o.mint).publicKey,s=mn(i).publicKey,c=[this.initializeRewardInstruction(i,n.wallet,r,s,new K.PublicKey(e.config.id),n.tokenAccount,o.programId,o.mint,a,new Pn.default(o.openTime),new Pn.default(o.endTime),o.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:s},signers:[],instructions:c,instructionTypes:[ee.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:o}){let[i,r]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],a,s,c;for(let g=0;g<e.rewardDefaultInfos.length;g++)e.rewardDefaultInfos[g].mint.address===o.mint.toString()&&(a=g,s=new K.PublicKey(t.rewardInfos[g].vault),c=new K.PublicKey(t.rewardInfos[g].mint.address));(a===void 0||s===void 0)&&dr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=mn(i).publicKey,d=[this.setRewardParamsInstruction(i,n.wallet,r,u,new K.PublicKey(e.config.id),n.tokenAccount,s,c,a,new Pn.default(o.openTime),new Pn.default(o.endTime),o.emissionsPerSecondX64)];return{address:{rewardVault:s,operationId:u},signers:[],instructions:d,instructionTypes:[ee.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:o}){let[i,r]=[new K.PublicKey(e.programId),new K.PublicKey(e.id)],a,s;for(let u=0;u<e.rewardDefaultInfos.length;u++)e.rewardDefaultInfos[u].mint.address===o.toString()&&(a=u,s=new K.PublicKey(t.rewardInfos[u].vault));(a===void 0||s===void 0)&&dr.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=[this.collectRemainingRewardsInstruction(i,n.wallet,r,n.tokenAccount,s,o,a)];return{address:{rewardVault:s},signers:[],instructions:c,instructionTypes:[ee.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async makeLockPositions({programId:e,authProgramId:t,poolProgramId:n,payer:o,wallet:i,nftMint:r,nft2022:a,getEphemeralSigners:s}){let c=[],u;if(s)u=new K.PublicKey((await s(1))[0]);else{let w=K.Keypair.generate();c.push(w),u=w.publicKey}let d=a?j(i,r,X.TOKEN_2022_PROGRAM_ID).publicKey:j(i,r,X.TOKEN_PROGRAM_ID).publicKey,{publicKey:g}=Xe(n,r),m=Xt(e,u).publicKey,p=j(i,u,X.TOKEN_PROGRAM_ID).publicKey,y=Rt(u).publicKey,b=J.lockPositionInstructionV2({programId:e,auth:t,payer:o,positionOwner:i,lockOwner:i,positionNftAccount:d,positionId:g,lockPositionId:m,lockNftMint:u,lockNftAccount:p,metadataAccount:y,withMetadata:!0,nft2022:a,positionNftMint:r,authPositionNftAccount:j(t,r,a?X.TOKEN_2022_PROGRAM_ID:X.TOKEN_PROGRAM_ID).publicKey,positionNftProgram:a?X.TOKEN_2022_PROGRAM_ID:X.TOKEN_PROGRAM_ID});return{address:{positionId:g,lockPositionId:m,lockNftAccount:p,lockNftMint:u,positionNftAccount:d,metadataAccount:y},instructions:[b],signers:c,instructionTypes:[ee.ClmmLockPosition],lookupTableAddress:[]}}static lockPositionInstructionV2({programId:e,auth:t,payer:n,positionOwner:o,lockOwner:i,positionNftAccount:r,positionId:a,positionNftMint:s,authPositionNftAccount:c,positionNftProgram:u,lockPositionId:d,lockNftMint:g,lockNftAccount:m,metadataAccount:p,withMetadata:y}){let b=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!0,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:At,isSigner:!1,isWritable:!1},{pubkey:X.ASSOCIATED_TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:Qe,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1}],w=O([Pe("withMetadata")]),A=Buffer.alloc(w.span);w.encode({withMetadata:y},A);let T=Buffer.from([...pr,...A]);return new K.TransactionInstruction({keys:b,programId:e,data:T})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:o,positionNft:i}){let{publicKey:r}=j(o,i,X.TOKEN_PROGRAM_ID),{publicKey:a}=Xe(n,i),s=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:Oo(e,a).publicKey,isSigner:!1,isWritable:!0},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:K.SystemProgram.programId,isSigner:!1,isWritable:!1}];return new K.TransactionInstruction({keys:s,programId:e,data:Buffer.from(pr)})}static harvestLockPositionInstruction(e){let[t,n]=[new K.PublicKey(e.poolKeys.programId),new K.PublicKey(e.poolKeys.id)],o=H.getTickArrayStartIndex(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),i=H.getTickArrayStartIndex(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:r}=ae(t,n,o),{publicKey:a}=ae(t,n,i),{publicKey:s}=j(e.owner,e.ownerPosition.nftMint,X.TOKEN_PROGRAM_ID),{publicKey:c}=Xe(t,e.ownerPosition.nftMint),{publicKey:u}=rt(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),d=[];for(let p=0;p<e.poolKeys.rewardInfos.length;p++)d.push({poolRewardVault:new K.PublicKey(e.poolKeys.rewardInfos[p].vault),ownerRewardVault:e.ownerRewardAccounts[p],rewardMint:new K.PublicKey(e.poolKeys.rewardInfos[p].mint.address)});let g=[...d.map(p=>[{pubkey:p.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:p.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:p.rewardMint,isSigner:!1,isWritable:!1}]).flat()],m=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:Oo(e.programId,c).publicKey,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e.owner,isSigner:!0,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:new K.PublicKey(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new K.PublicKey(e.poolKeys.vault.B),isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:e.userVaultA,isSigner:!1,isWritable:!0},{pubkey:e.userVaultB,isSigner:!1,isWritable:!0},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:Pt,isSigner:!1,isWritable:!1},{pubkey:new K.PublicKey(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new K.PublicKey(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...g];return new K.TransactionInstruction({keys:m,programId:e.programId,data:Buffer.from(fr)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:o,lockOwner:i,lockNftMint:r,lockNftAccount:a,positionNftAccount:s,positionId:c,poolId:u,protocolPosition:d,vaultA:g,vaultB:m,tickArrayLower:p,tickArrayUpper:y,userVaultA:b,userVaultB:w,mintA:A,mintB:T,rewardAccounts:I,exTickArrayBitmap:P}){let k=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[],...I.map(S=>[{pubkey:S.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.rewardMint,isSigner:!1,isWritable:!1}]).flat()],B=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:X.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:X.TOKEN_2022_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:Pt,isSigner:!1,isWritable:!1},{pubkey:A,isSigner:!1,isWritable:!1},{pubkey:T,isSigner:!1,isWritable:!1},...k];return new K.TransactionInstruction({keys:B,programId:e,data:Buffer.from(fr)})}};var Zn=require("@solana/web3.js");var va=O([N("instruction")]),Va=O([N("instruction")]),_a=O([l("rewardState"),l("rewardOpenTime"),l("rewardEndTime"),l("rewardLastUpdateTime"),l("totalReward"),l("totalRewardEmissioned"),l("rewardClaimed"),l("rewardPerSecond"),Y("accRewardPerShare"),h("rewardVault"),h("rewardMint"),h("rewardSender"),l("rewardType"),E(l(),15,"padding")]),Ea=O([l("state"),l("nonce"),h("lpVault"),h("rewardVault"),h(),h(),l(),l(),l("totalReward"),Y("perShareReward"),l("lastSlot"),l("perSlotReward")]),Da=O([l("state"),l("nonce"),h("lpVault"),h("rewardVaultA"),l("totalRewardA"),Y("perShareRewardA"),l("perSlotRewardA"),N("option"),h("rewardVaultB"),te(7),l("totalRewardB"),Y("perShareRewardB"),l("perSlotRewardB"),l("lastSlot"),h()]),Wa=O([l(),l("state"),l("nonce"),l("validRewardTokenNum"),Y("rewardMultiplier"),l("rewardPeriodMax"),l("rewardPeriodMin"),l("rewardPeriodExtend"),h("lpMint"),h("lpVault"),E(_a,5,"rewardInfos"),h("creator"),h(),E(l(),32,"padding")]),qa=new Proxy(Ea,{get(f,e,t){return e==="decode"?(...n)=>{let o=f.decode(...n);return q(M({},o),{version:3,rewardInfos:[{rewardVault:o.rewardVault,totalReward:o.totalReward,perSlotReward:o.perSlotReward,perShareReward:o.perShareReward}]})}:Reflect.get(f,e,t)}}),Ua=new Proxy(Da,{get(f,e,t){return e==="decode"?(...n)=>{let o=f.decode(...n);return q(M({},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(f,e,t)}}),br=new Proxy(Wa,{get(f,e,t){return e==="decode"?(...n)=>{let o=f.decode(...n);return q(M({},o),{version:6,rewardInfos:o.rewardInfos.map(i=>{var r;return q(M({},i),{rewardType:((r=Object.entries(wn).find(a=>String(a[1])===i.rewardType.toString()))!=null?r:["Standard SPL"])[0]})})})}:Reflect.get(f,e,t)}}),Ga=O([l("isSet"),l("rewardPerSecond"),l("rewardOpenTime"),l("rewardEndTime"),l("rewardType")]),za=O([N("instruction"),l("nonce"),E(Ga,5,"rewardTimeInfo")]),Xa=O([N("instruction"),l("rewardReopenTime"),l("rewardEndTime"),l("rewardPerSecond")]),Ya=O([N("instruction"),l("isSet"),l("rewardPerSecond"),l("rewardOpenTime"),l("rewardEndTime"),l("rewardType")]),rf=O([l("state"),h("id"),h("owner"),l("deposited"),E(l(),1,"rewardDebts")]),gr=O([l("state"),h("id"),h("owner"),l("deposited"),E(Y(),1,"rewardDebts"),l(""),l("voteLockedBalance"),E(l(),15)]),af=O([l("state"),h("id"),h("owner"),l("deposited"),E(l(),2,"rewardDebts")]),Qa=O([l("state"),h("id"),h("owner"),l("deposited"),E(Y(),2,"rewardDebts"),E(l(),17)]),Za=O([l(),l("state"),h("id"),h("owner"),l("deposited"),E(Y(),5,"rewardDebts"),E(l(),16)]),Ha=O([N("instruction"),l("amount")]),ja=O([h("mint"),h("grantAuthority"),l("baselineVoteWeightScaledFactor"),l("maxExtraLockupVoteWeightScaledFactor"),l("lockupSaturationSecs"),Ai("digitShift"),E(N(),7,"reserved1"),E(l(),7,"reserved2")]),$a=O([te(8),h("governanceProgramId"),h("realm"),h("realmGoverningTokenMint"),h("realmAuthority"),E(N(),32,"reserved1"),E(ja,4,"votingMints"),Wt("timeOffset"),N("bump"),E(N(),7,"reserved2"),E(l(),11,"reserved3")]),Ja=O([Wt("startTime"),Wt("endTime"),N("kind"),E(N(),15,"reserved")]),es=O([E(Ja,1,"lockup"),l("amountDeposited_native"),l("amountInitiallyLockedNative"),Pe("isUsed"),Pe("allowClawback"),N("votingMintConfigIdx"),E(N(),29,"reserved")]),ts=O([te(8),h("voterAuthority"),h("registrar"),E(es,32,"deposits"),N("voterBump"),N("voterWweightRecordBump"),E(N(),94,"reserved")]);var ns=require("@solana/spl-token"),pf=oe("Raydium_farm_config"),os=new Zn.PublicKey("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),is=new Zn.PublicKey("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var ff=new Zn.PublicKey("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var wn={"Standard SPL":0,"Option tokens":1},Pr={[xi.toString()]:3,[Ci.toString()]:4,[Ri.toString()]:5,[Bo.toString()]:6,[kt.FARM_PROGRAM_ID_V3.toString()]:3,[kt.FARM_PROGRAM_ID_V4.toString()]:4,[kt.FARM_PROGRAM_ID_V5.toString()]:5,[kt.FARM_PROGRAM_ID_V6.toString()]:6};var kn=require("@solana/web3.js"),ls=W(require("bn.js")),_o=require("@solana/spl-token");var cs=W(require("bn.js"));var rs=require("@solana/web3.js"),as=W(require("bn.js"));var vf=oe("Raydium.farm.util");var ny=oe("Raydium_farm_instruction"),oy={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};var Ps=W(require("bn.js"));var Qs=require("@solana/web3.js"),Jn=require("@solana/spl-token");var nt=W(require("bn.js")),Tn=1e4;function Ye(f,e,t,n){if(e===void 0)return{amount:f,fee:void 0,expirationTime:void 0};let o=q(M({},e),{olderTransferFee:{epoch:BigInt(e.olderTransferFee.epoch),maximumFee:BigInt(e.olderTransferFee.maximumFee),transferFeeBasisPoints:e.olderTransferFee.transferFeeBasisPoints},newerTransferFee:{epoch:BigInt(e.newerTransferFee.epoch),maximumFee:BigInt(e.newerTransferFee.maximumFee),transferFeeBasisPoints:e.newerTransferFee.transferFeeBasisPoints}}),i=t.epoch<o.newerTransferFee.epoch?o.olderTransferFee:o.newerTransferFee,r=new nt.default(i.maximumFee.toString()),a=t.epoch<o.newerTransferFee.epoch?(Number(o.newerTransferFee.epoch)*t.slotsInEpoch-t.absoluteSlot)*400/1e3:void 0;if(n)if(i.transferFeeBasisPoints===Tn){let s=new nt.default(i.maximumFee.toString());return{amount:f.add(s),fee:s,expirationTime:a}}else{let s=Hn(f.mul(new nt.default(Tn)),new nt.default(Tn-i.transferFeeBasisPoints)),c=new nt.default(i.maximumFee.toString()),u=s.sub(f).gt(c)?f.add(c):s,d=Hn(u.mul(new nt.default(i.transferFeeBasisPoints)),new nt.default(Tn)),g=d.gt(r)?r:d;return{amount:u,fee:g,expirationTime:a}}else{let s=Hn(f.mul(new nt.default(i.transferFeeBasisPoints)),new nt.default(Tn)),c=s.gt(r)?r:s;return{amount:f,fee:c,expirationTime:a}}}function bn(f,e){return f===void 0?e:e===void 0?f:Math.min(f,e)}function Hn(f,e){let{div:t,mod:n}=f.divmod(e);return n.gt(new nt.default(0))?t.add(new nt.default(1)):t}var As=O([ge("mintAuthorityOption"),h("mintAuthority"),l("supply"),N("decimals"),N("isInitialized"),ge("freezeAuthorityOption"),h("freezeAuthority")]);var ws=require("@solana/spl-token"),ks=require("@solana/web3.js");var yt=o=>{var i=o,{address:f,programId:e,decimals:t}=i,n=ot(i,["address","programId","decimals"]);return M({chainId:101,address:ut(f).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)},hn=f=>f?q(M({},f),{transferFeeConfigAuthority:f.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:f.withdrawWithheldAuthority.toBase58(),withheldAmount:f.withheldAmount.toString(),olderTransferFee:q(M({},f.olderTransferFee),{epoch:f.olderTransferFee.epoch.toString(),maximumFee:f.olderTransferFee.maximumFee.toString()}),newerTransferFee:q(M({},f.newerTransferFee),{epoch:f.newerTransferFee.epoch.toString(),maximumFee:f.newerTransferFee.maximumFee.toString()})}):void 0;var Eo=W(require("bn.js")),Ts=new Eo.default(25),hs=new Eo.default(1e4);var Tr=require("@solana/spl-token"),jn=require("@solana/web3.js");var Rs=W(require("bn.js"));var Is=O([N("instruction"),l("amountIn"),l("minAmountOut")]),Bs=O([N("instruction"),l("maxAmountIn"),l("amountOut")]),cb=O([N("instruction"),N("nonce")]),Ss=O([N("instruction"),N("nonce"),l("startTime")]),kr=O([l("status"),l("nonce"),l("maxOrder"),l("depth"),l("baseDecimal"),l("quoteDecimal"),l("state"),l("resetFlag"),l("minSize"),l("volMaxCutRatio"),l("amountWaveRatio"),l("baseLotSize"),l("quoteLotSize"),l("minPriceMultiplier"),l("maxPriceMultiplier"),l("systemDecimalValue"),l("minSeparateNumerator"),l("minSeparateDenominator"),l("tradeFeeNumerator"),l("tradeFeeDenominator"),l("pnlNumerator"),l("pnlDenominator"),l("swapFeeNumerator"),l("swapFeeDenominator"),l("baseNeedTakePnl"),l("quoteNeedTakePnl"),l("quoteTotalPnl"),l("baseTotalPnl"),l("poolOpenTime"),l("punishPcAmount"),l("punishCoinAmount"),l("orderbookToInitTime"),Y("swapBaseInAmount"),Y("swapQuoteOutAmount"),l("swapBase2QuoteFee"),Y("swapQuoteInAmount"),Y("swapBaseOutAmount"),l("swapQuote2BaseFee"),h("baseVault"),h("quoteVault"),h("baseMint"),h("quoteMint"),h("lpMint"),h("openOrders"),h("marketId"),h("marketProgramId"),h("targetOrders"),h("withdrawQueue"),h("lpVault"),h("owner"),l("lpReserve"),E(l(),3,"padding")]),lb=O([l("accountType"),l("status"),l("nonce"),l("maxOrder"),l("depth"),l("baseDecimal"),l("quoteDecimal"),l("state"),l("resetFlag"),l("minSize"),l("volMaxCutRatio"),l("amountWaveRatio"),l("baseLotSize"),l("quoteLotSize"),l("minPriceMultiplier"),l("maxPriceMultiplier"),l("systemDecimalsValue"),l("abortTradeFactor"),l("priceTickMultiplier"),l("priceTick"),l("minSeparateNumerator"),l("minSeparateDenominator"),l("tradeFeeNumerator"),l("tradeFeeDenominator"),l("pnlNumerator"),l("pnlDenominator"),l("swapFeeNumerator"),l("swapFeeDenominator"),l("baseNeedTakePnl"),l("quoteNeedTakePnl"),l("quoteTotalPnl"),l("baseTotalPnl"),l("poolOpenTime"),l("punishPcAmount"),l("punishCoinAmount"),l("orderbookToInitTime"),Y("swapBaseInAmount"),Y("swapQuoteOutAmount"),Y("swapQuoteInAmount"),Y("swapBaseOutAmount"),l("swapQuote2BaseFee"),l("swapBase2QuoteFee"),h("baseVault"),h("quoteVault"),h("baseMint"),h("quoteMint"),h("lpMint"),h("modelDataAccount"),h("openOrders"),h("marketId"),h("marketProgramId"),h("targetOrders"),h("owner"),E(l(),64,"padding")]),Ks=O([N("instruction"),l("baseAmountIn"),l("quoteAmountIn"),l("fixedSide"),l("otherAmountMin")]),xs=O([N("instruction"),l("lpAmount"),l("baseAmountMin"),l("quoteAmountMin")]);var Cs=O([l("fee")]);var wb=oe("Raydium_liquidity_instruction");var Ls=5e4,Os=O([l("x"),l("y"),l("price")]),Ib=O([l("accountType"),l("status"),l("multiplier"),l("validDataCount"),E(Os,Ls,"DataElement")]);var Ms=require("@solana/web3.js"),Fs=W(require("decimal.js")),vs=require("@solana/spl-token");var Ns=require("@solana/web3.js");var Cb=oe("Raydium_liquidity_serum");var Zs=W(require("bn.js")),Hs=W(require("decimal.js"));var Ds=require("@solana/spl-token"),Ws=require("@solana/web3.js"),qs=W(require("bn.js"));var $n=require("@solana/web3.js"),hr=require("@solana/spl-token");function Vs(f="accountFlags"){let e=new Vn(f);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var _s=O([te(5),Vs("accountFlags"),h("ownAddress"),l("vaultSignerNonce"),h("baseMint"),h("quoteMint"),h("baseVault"),l("baseDepositsTotal"),l("baseFeesAccrued"),h("quoteVault"),l("quoteDepositsTotal"),l("quoteFeesAccrued"),l("quoteDustThreshold"),h("requestQueue"),h("eventQueue"),h("bids"),h("asks"),l("baseLotSize"),l("quoteLotSize"),l("feeRateBps"),l("referrerRebatesAccrued"),te(7)]);var iu=require("@solana/web3.js"),In=require("@solana/spl-token");var Js=W(require("bn.js"));var Ir=W(require("bn.js"));var Zg=new Ir.default(0);var js=W(require("bn.js"));var Br=W(require("bn.js")),tt=new Br.default(1e6);var ru=W(require("bn.js")),au=W(require("decimal.js"));var eo=require("@solana/web3.js"),Do=require("@solana/spl-token");var cP=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),lP=Buffer.from("amm_config","utf8"),mP=Buffer.from("pool","utf8"),dP=Buffer.from("pool_lp_mint","utf8"),pP=Buffer.from("pool_vault","utf8"),fP=Buffer.from("observation","utf8"),yP=Buffer.from("permission","utf8"),bP=Buffer.from("support_mint","utf8");var gP=Buffer.from("locked_liquidity","utf8");var xP=oe("Raydium_cpmm"),CP={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 tu=O([te(8),N("bump"),Pe("disableCreatePool"),he("index"),l("tradeFeeRate"),l("protocolFeeRate"),l("fundFeeRate"),l("createPoolFee"),h("protocolOwner"),h("fundOwner"),l("creatorFeeRate"),E(l(),15)]),Sr=O([te(8),h("configId"),h("poolCreator"),h("vaultA"),h("vaultB"),h("mintLp"),h("mintA"),h("mintB"),h("mintProgramA"),h("mintProgramB"),h("observationId"),N("bump"),N("status"),N("lpDecimals"),N("mintDecimalA"),N("mintDecimalB"),l("lpAmount"),l("protocolFeesMintA"),l("protocolFeesMintB"),l("fundFeesMintA"),l("fundFeesMintB"),l("openTime"),l("epoch"),N("feeOn"),Pe("enableCreatorFee"),E(N(),6),l("creatorFeesMintA"),l("creatorFeesMintB"),E(l(),28)]),OP=O([te(8),h("configId"),E(l(),30)]);var Fr=require("@solana/web3.js"),Zt=require("@solana/spl-token"),vr=W(require("bn.js")),Ru=W(require("decimal.js"));var Wo=require("@solana/spl-token"),Rr=require("@solana/web3.js"),Lr=W(require("bn.js"));var su=O([l(),l("epoch"),N("curveType"),he("index"),l("migrateFee"),l("tradeFeeRate"),l("maxShareFeeRate"),l("minSupplyA"),l("maxLockRate"),l("minSellRateA"),l("minMigrateRateA"),l("minFundRaisingB"),h("mintB"),h("protocolFeeOwner"),h("migrateFeeOwner"),h("migrateToAmmWallet"),h("migrateToCpmmWallet"),E(l(),16)]),uu=O([l("totalLockedAmount"),l("cliffPeriod"),l("unlockPeriod"),l("startTime"),l("totalAllocatedShare")]),cu=O([l(),l("epoch"),N("bump"),N("status"),N("mintDecimalsA"),N("mintDecimalsB"),N("migrateType"),l("supply"),l("totalSellA"),l("virtualA"),l("virtualB"),l("realA"),l("realB"),l("totalFundRaisingB"),l("protocolFee"),l("platformFee"),l("migrateFee"),uu.replicate("vestingSchedule"),h("configId"),h("platformId"),h("mintA"),h("mintB"),h("vaultA"),h("vaultB"),h("creator"),N("mintProgramFlag"),N("cpmmCreatorFeeOn"),l("platformVestingShare"),E(N(),54)]),zA=O([l(),l("epoch"),h("poolId"),h("beneficiary"),l("claimedAmount"),l("tokenShareAmount"),E(l(),8)]),xr=O([N("migrateType"),N("migrateCpmmFeeOn"),l("supply"),l("totalSellA"),l("totalFundRaisingB"),l("totalLockedAmount"),l("cliffPeriod"),l("unlockPeriod")]),lu=O([l("epoch"),N("index"),h("configId"),xr.replicate("bondingCurveParam"),E(l(),50)]),Cr=O([l(),l("epoch"),h("platformClaimFeeWallet"),h("platformLockNftWallet"),l("platformScale"),l("creatorScale"),l("burnScale"),l("feeRate"),E(N(),64,"name"),E(N(),256,"web"),E(N(),256,"img"),h("cpConfigId"),l("creatorFeeRate"),h("transferFeeExtensionAuth"),h("platformVestingWallet"),l("platformVestingScale"),h("platformCpCreator"),N("restrictGlobalConfig"),E(N(),107),ki(lu,"platformCurve")]);var HA=Buffer.from("vault_auth_seed","utf8"),jA=Buffer.from("global_config","utf8"),$A=Buffer.from("pool_vesting","utf8"),JA=Buffer.from("platform_config","utf8"),ew=Buffer.from("platform_fee_vault_auth_seed","utf8"),tw=Buffer.from("creator_fee_vault_auth_seed","utf8"),nw=Buffer.from("platform_global_access","utf8"),ow=Buffer.from("platform_allow_config","utf8");var pw={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 fw=new Lr.default("18446744073709551615");var Or=require("@solana/spl-token");var mu=W(require("bn.js")),du=W(require("decimal.js"));var gu=W(require("bn.js")),Pu=W(require("decimal.js"));var pu=W(require("bn.js")),fu=W(require("decimal.js"));var yu=W(require("bn.js")),bu=W(require("decimal.js"));var qo=W(require("bn.js")),to=W(require("decimal.js")),no=class{static _multipler(e){return new to.default(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new to.default(e.toString()).div(this._Q64).mul(this._multipler(t)).div(this._multipler(n))}static getPriceX64({price:e,decimalA:t,decimalB:n}){let o=e.mul(this._multipler(n)).div(this._multipler(t));return new qo.default(o.mul(this._Q64).toFixed(0))}};no._Q64=new to.default(new qo.default(1).shln(64).toString());var Mt=require("@solana/spl-token"),Se=W(require("bn.js")),Uo=require("@solana/web3.js");var Bu=W(require("decimal.js")),jk={initPriceX64:new Se.default("515752397214619"),supply:new Se.default(1e15),totalSellA:new Se.default(7931e11),totalFundRaisingB:new Se.default(85e9),totalFundRaisingBUSD:new Se.default(125e8),totalLockedAmount:new Se.default("0"),cliffPeriod:new Se.default("0"),unlockPeriod:new Se.default("0"),decimals:6,virtualA:new Se.default("1073471847374405"),virtualB:new Se.default("30050573465"),realA:new Se.default(0),realB:new Se.default(0),protocolFee:new Se.default(0),platformId:new Uo.PublicKey("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new Se.default(0),cliffPeriod:new Se.default(0),unlockPeriod:new Se.default(0),startTime:new Se.default(0),totalAllocatedShare:new Se.default(0)}},$k=new Se.default(1e4);var Su={[Li.toBase58()]:3};var Ku=O([te(5),te(8),h("ownAddress"),l("vaultSignerNonce"),h("baseMint"),h("quoteMint"),h("baseVault"),l("baseDepositsTotal"),l("baseFeesAccrued"),h("quoteVault"),l("quoteDepositsTotal"),l("quoteFeesAccrued"),l("quoteDustThreshold"),h("requestQueue"),h("eventQueue"),h("bids"),h("asks"),l("baseLotSize"),l("quoteLotSize"),l("feeRateBps"),l("referrerRebatesAccrued"),te(7)]);var xu=require("@solana/web3.js");var IT=oe("Serum");var Go=require("@solana/spl-token"),zo=require("@solana/web3.js"),Cu=W(require("bn.js"));var wh=new vr.default(0);var ht=require("@solana/web3.js"),Vr=require("@solana/spl-token"),Xo=W(require("bn.js"));var Ve=class extends De{static getPdaPoolId(e,t){return le([Ve.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,o){return le([Ve.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Xo.default(o).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:o,chainTime:i}){if(n.length===0)return[];let r=n.map(u=>Ve.getPdaPoolId(t,u).publicKey),a=[];for(let u=0;u<Ve.VERSION_PROJECT.length;u++)a.push(...r.map(d=>Ve.getPdaOwnerId(t,d,o,u).publicKey));let s=await Ee(e,[...r,...a]),c=[];for(let u=0;u<s.length;u++){let d=Math.floor(u/n.length),g=u%n.length,m=r[g],p=a[u],y=s[g],b=s[n.length+u];if(!(y&&b)||y.data.length!==Ve.POOL_LAYOUT.span||b.data.length!==Ve.OWNER_LAYOUT.span)continue;let w=Ve.POOL_LAYOUT.decode(y.data),A=Ve.OWNER_LAYOUT.decode(b.data),T=w.openTime.toNumber(),I=w.endTime.toNumber(),P=A.tokenInfo.map(S=>S.debtAmount.gt(new Xo.default(0))).filter(S=>!S).length!==3,k=i>T&&i<I&&w.status===1,B=P&&k;c.push({programId:t,poolId:m,ammId:w.ammId,ownerAccountId:p,snapshotLpAmount:A.lpAmount,project:Ve.VERSION_PROJECT[d],openTime:T,endTime:I,canClaim:B,canClaimErrorType:P?k?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:w.tokenInfo.map((S,x)=>({mintAddress:S.mintAddress,mintVault:S.mintVault,mintDecimals:S.mintDecimals,perLpLoss:S.perLpLoss,debtAmount:A.tokenInfo[x].debtAmount.add(A.tokenInfo[x].claimedAmount)}))})}return c}async makeClaimTransaction({poolInfo:e,ownerInfo:t,feePayer:n}){t.wallet||this.scope.checkOwner();let o=this.createTxBuilder(n),i=t.wallet||this.scope.ownerPubKey,r=[];for(let c of e.tokenInfo){let{account:u,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({mint:c.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:c.mintAddress.equals(Le.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!c.mintAddress.equals(Le.WSOL.mint),associatedOnly:c.mintAddress.equals(Le.WSOL.mint)?!1:t.associatedOnly});d&&o.addInstruction(d),r.push(u)}o.addInstruction({instructions:[Ve.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:i,ownerPda:e.ownerAccountId,claimAddress:r}})]});let{transaction:a,signers:s}=o.build();return[{transaction:a,signer:s}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:n}){let o=this.createTxBuilder(n),i=t.wallet||this.scope.ownerPubKey,r={};for(let u of e){let d=[];for(let g of u.tokenInfo){let{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({mint:g.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:g.mintAddress.equals(Le.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!g.mintAddress.equals(Le.WSOL.mint),associatedOnly:g.mintAddress.equals(Le.WSOL.mint)?!1:t.associatedOnly});p&&o.addInstruction(p),m&&(r[g.mintAddress.toString()]=m,d.push(m))}o.addInstruction({instructions:[Ve.makeClaimInstruction({programId:u.programId,poolInfo:u,ownerInfo:{wallet:i,ownerPda:u.ownerAccountId,claimAddress:d}})]})}let{transaction:a,signers:s}=o.build(),c=o.allInstructions;return wo(c,[i,...s.map(u=>u.publicKey)])?[{transaction:a,signer:s}]:[{transaction:new ht.Transaction().add(...c.slice(0,o.AllTxData.instructions.length-1)),signer:s},{transaction:new ht.Transaction().add(...c.slice(o.AllTxData.instructions.length-1)),signer:[]},{transaction:new ht.Transaction().add(...o.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let o=O([]),i=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(s=>({pubkey:s,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:s})=>({pubkey:s,isSigner:!1,isWritable:!0})),{pubkey:Vr.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1}],r=Buffer.alloc(o.span);o.encode({},r);let a=Buffer.from([10,66,208,184,161,6,191,98,...r]);return new ht.TransactionInstruction({keys:i,programId:e,data:a})}},st=Ve;st.CLAIMED_NUM=3,st.POOL_LAYOUT=O([te(8),N("bump"),N("status"),l("openTime"),l("endTime"),h("ammId"),E(O([N("mintDecimals"),h("mintAddress"),h("mintVault"),l("perLpLoss"),l("totalClaimedAmount")]),Ve.CLAIMED_NUM,"tokenInfo"),E(l(),10,"padding")]),st.OWNER_LAYOUT=O([te(8),N("bump"),N("version"),h("poolId"),h("owner"),l("lpAmount"),E(O([h("mintAddress"),l("debtAmount"),l("claimedAmount")]),Ve.CLAIMED_NUM,"tokenInfo"),E(l(),4,"padding")]),st.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new ht.PublicKey(e)),st.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},st.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];var Lu=require("@solana/web3.js"),Bn=require("@solana/spl-token");var tB=new It.default(2),nB=new It.default(3),oB=new It.default(5),lo=new It.default(10),iB=new It.default(100),rB=new It.default(1e3),aB=new It.default(1e4);function bo(f){return lo.pow(xe(f))}function so(f,e=1,t=[]){let n=[...f];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}var ue=require("@solana/spl-token"),R=require("@solana/web3.js"),we=W(require("bn.js")),mt=W(require("decimal.js"));var An=class extends De{constructor(e){super(e)}async getClmmPoolKeys(e){return(await this.scope.api.fetchPoolKeysById({idList:[e]}))[0]}async createPool(e){var P;let{programId:t,owner:n=((P=this.scope.owner)==null?void 0:P.publicKey)||R.PublicKey.default,mint1:o,mint2:i,ammConfig:r,initialPrice:a,computeBudgetConfig:s,txVersion:c,txTipConfig:u,feePayer:d}=e,g=this.createTxBuilder(d),[m,p,y]=new we.default(new R.PublicKey(o.address).toBuffer()).gt(new we.default(new R.PublicKey(i.address).toBuffer()))?[i,o,new mt.default(1).div(a)]:[o,i,a],b=z.priceToSqrtPriceX64(y,m.decimals,p.decimals),w=[],A=[];m.programId===ue.TOKEN_2022_PROGRAM_ID.toBase58()&&A.push(Lt(t,new R.PublicKey(m.address)).publicKey),p.programId===ue.TOKEN_2022_PROGRAM_ID.toBase58()&&A.push(Lt(t,new R.PublicKey(p.address)).publicKey),(await this.scope.connection.getMultipleAccountsInfo(A)).forEach((k,B)=>{k&&w.push(A[B])});let I=await J.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:m,mintB:p,ammConfigId:r.id,initialPriceX64:b,extendMintAccount:w});return g.addInstruction(I),g.addCustomComputeBudget(s),g.addTipInstruction(u),g.versionBuild({txVersion:c,extInfo:{address:q(M({},I.address),{observationId:I.address.observationId.toBase58(),exBitmapAccount:I.address.exBitmapAccount.toBase58(),programId:t.toString(),id:I.address.poolId.toString(),mintA:m,mintB:p,openTime:"0",vault:{A:I.address.mintAVault.toString(),B:I.address.mintBVault.toString()},rewardInfos:[],config:{id:r.id.toString(),index:r.index,protocolFeeRate:r.protocolFeeRate,tradeFeeRate:r.tradeFeeRate,tickSpacing:r.tickSpacing,fundFeeRate:r.fundFeeRate,description:r.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:M({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:I.address.poolId.toString(),mintA:m,mintB:p,feeRate:r.tradeFeeRate,openTime:"0",programId:t.toString(),price:y.toNumber(),config:{id:r.id.toString(),index:r.index,protocolFeeRate:r.protocolFeeRate,tradeFeeRate:r.tradeFeeRate,tickSpacing:r.tickSpacing,fundFeeRate:r.fundFeeRate,description:r.description,defaultRange:0,defaultRangePoint:[]},feeOn:"Both",hasDynamicFee:!1,launchMigratePool:!1,burnPercent:0,tips:[]},Gn)}})}async createCustomizablePool(e){var x;let{programId:t,owner:n=((x=this.scope.owner)==null?void 0:x.publicKey)||R.PublicKey.default,mint1:o,mint2:i,initialPrice:r,ammConfig:a,collectFeeOn:s=0,dynamicFeeConfig:c,computeBudgetConfig:u,txVersion:d,txTipConfig:g,feePayer:m,addSupportMintExt:p}=e,y=this.createTxBuilder(m),[b,w,A]=new we.default(new R.PublicKey(o.address).toBuffer()).gt(new we.default(new R.PublicKey(i.address).toBuffer()))?[i,o,new mt.default(1).div(r)]:[o,i,r],T=z.priceToSqrtPriceX64(A,b.decimals,w.decimals),I=[],P=[];p&&(b.programId===ue.TOKEN_2022_PROGRAM_ID.toBase58()&&P.push(Lt(t,new R.PublicKey(b.address)).publicKey),w.programId===ue.TOKEN_2022_PROGRAM_ID.toBase58()&&P.push(Lt(t,new R.PublicKey(w.address)).publicKey),(await this.scope.connection.getMultipleAccountsInfo(P)).forEach((U,V)=>{U&&I.push(P[V])}));let{address:k}=await J.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:b,mintB:w,ammConfigId:a.id,initialPriceX64:T,extendMintAccount:I}),B=[];if(c){if(!await this.scope.connection.getAccountInfo(c))throw new Error("Dynamic Fee Config not found. Run 03_admin_create_dynamic_fee_config.ts first.");console.log("Dynamic Fee Config",c.toBase58()),B.push({pubkey:c,isSigner:!1,isWritable:!1})}let S=J.createCustomizablePoolInstruction(t,k.poolId,this.scope.ownerPubKey,a.id,k.mintA,k.mintB,k.mintAVault,k.mintBVault,k.observationId,k.exBitmapAccount,k.mintAProgram,k.mintBProgram,T,s,[...I,...B.map(L=>L.pubkey)],c);return y.addInstruction({instructions:[S]}),y.addCustomComputeBudget(u),y.addTipInstruction(g),y.versionBuild({txVersion:d,extInfo:{address:q(M({},k),{observationId:k.observationId.toBase58(),exBitmapAccount:k.exBitmapAccount.toBase58(),programId:t.toString(),id:k.poolId.toString(),mintA:b,mintB:w,openTime:"0",vault:{A:k.mintAVault.toString(),B:k.mintBVault.toString()},rewardInfos:[],config:{id:a.id.toString(),index:a.index,protocolFeeRate:a.protocolFeeRate,tradeFeeRate:a.tradeFeeRate,tickSpacing:a.tickSpacing,fundFeeRate:a.fundFeeRate,description:a.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:M({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:k.poolId.toString(),mintA:b,mintB:w,feeRate:a.tradeFeeRate,openTime:"0",programId:t.toString(),price:A.toNumber(),config:{id:a.id.toString(),index:a.index,protocolFeeRate:a.protocolFeeRate,tradeFeeRate:a.tradeFeeRate,tickSpacing:a.tickSpacing,fundFeeRate:a.fundFeeRate,description:a.description,defaultRange:0,defaultRangePoint:[]},burnPercent:0,collectFeeOn:s,feeOn:s===0?"Both":s===1?"TokenA":"TokenB",hasDynamicFee:!!c,tips:[],launchMigratePool:!1},Gn)}})}async createPermissionedPool(e){var U;let{programId:t,owner:n=((U=this.scope.owner)==null?void 0:U.publicKey)||R.PublicKey.default,mint1:o,mint2:i,initialPrice:r,ammConfig:a,collectFeeOn:s=0,dynamicFeeConfig:c,computeBudgetConfig:u,txVersion:d,txTipConfig:g,feePayer:m,addSupportMintExt:p}=e,y=this.createTxBuilder(m),[b,w,A]=new we.default(new R.PublicKey(o.address).toBuffer()).gt(new we.default(new R.PublicKey(i.address).toBuffer()))?[i,o,new mt.default(1).div(r)]:[o,i,r],T=z.priceToSqrtPriceX64(A,b.decimals,w.decimals),I=[],P=[];p&&(b.programId===ue.TOKEN_2022_PROGRAM_ID.toBase58()&&P.push(Lt(t,new R.PublicKey(b.address)).publicKey),w.programId===ue.TOKEN_2022_PROGRAM_ID.toBase58()&&P.push(Lt(t,new R.PublicKey(w.address)).publicKey),(await this.scope.connection.getMultipleAccountsInfo(P)).forEach((F,v)=>{F&&I.push(P[v])}));let k=m!=null?m:this.scope.ownerPubKey,B=Math.floor(Math.random()*Math.pow(2,16))+1,{address:S}=await J.createPermissionedPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:b,mintB:w,ammConfigId:a.id,initialPriceX64:T,extendMintAccount:I,payer:k,seedIndex:B}),x=[];if(c){if(!await this.scope.connection.getAccountInfo(c))throw new Error("Dynamic Fee Config not found. Run 03_admin_create_dynamic_fee_config.ts first.");console.log("Dynamic Fee Config",c.toBase58()),x.push({pubkey:c,isSigner:!1,isWritable:!1})}let L=J.createPermissionedPoolInstruction(t,k,k,S.permission,a.id,S.poolId,S.mintA,S.mintB,S.mintAVault,S.mintBVault,S.observationId,S.exBitmapAccount,S.mintAProgram,S.mintBProgram,T,s,B,[...I,...x.map(V=>V.pubkey)],c);return y.addInstruction({instructions:[L]}),y.addCustomComputeBudget(u),y.addTipInstruction(g),y.versionBuild({txVersion:d,extInfo:{address:q(M({},S),{observationId:S.observationId.toBase58(),exBitmapAccount:S.exBitmapAccount.toBase58(),programId:t.toString(),id:S.poolId.toString(),mintA:b,mintB:w,openTime:"0",vault:{A:S.mintAVault.toString(),B:S.mintBVault.toString()},rewardInfos:[],config:{id:a.id.toString(),index:a.index,protocolFeeRate:a.protocolFeeRate,tradeFeeRate:a.tradeFeeRate,tickSpacing:a.tickSpacing,fundFeeRate:a.fundFeeRate,description:a.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:M({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:S.poolId.toString(),mintA:b,mintB:w,feeRate:a.tradeFeeRate,openTime:"0",programId:t.toString(),price:A.toNumber(),config:{id:a.id.toString(),index:a.index,protocolFeeRate:a.protocolFeeRate,tradeFeeRate:a.tradeFeeRate,tickSpacing:a.tickSpacing,fundFeeRate:a.fundFeeRate,description:a.description,defaultRange:0,defaultRangePoint:[]},burnPercent:0,collectFeeOn:s,feeOn:s===0?"Both":s===1?"TokenA":"TokenB",hasDynamicFee:!!c,tips:[],launchMigratePool:!1},Gn)}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,base:r=null,baseAmount:a,otherAmountMax:s,liquidity:c=new we.default(0),nft2022:u,associatedOnly:d=!0,checkCreateATAOwner:g=!1,withMetadata:m="create",getEphemeralSigners:p,computeBudgetConfig:y,txTipConfig:b,txVersion:w,feePayer:A}){this.scope.availability.addConcentratedPosition===!1&&this.logAndCreateError("add position feature disabled in your region"),this.scope.checkOwner();let T=this.createTxBuilder(A),I=null,P=null,k=n.useSOLBalance&&e.mintA.address===Z.toString(),B=n.useSOLBalance&&e.mintB.address===Z.toString(),[S,x]=r==="MintA"?[a,s]:[s,a],{account:L,instructionParams:U}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new R.PublicKey(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:k||S.isZero()?{payer:this.scope.ownerPubKey,amount:S}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:k?!1:d,checkCreateATAOwner:g});L&&(I=L),T.addInstruction(U||{});let{account:V,instructionParams:F}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new R.PublicKey(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:B||x.isZero()?{payer:this.scope.ownerPubKey,amount:x}:void 0,skipCloseAccount:!B,notUseTokenAccount:B,associatedOnly:B?!1:d,checkCreateATAOwner:g});V&&(P=V),T.addInstruction(F||{}),(!I||!P)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",{ownerTokenAccountA:I==null?void 0:I.toBase58(),ownerTokenAccountB:P==null?void 0:P.toBase58()});let v=t!=null?t:await this.getClmmPoolKeys(e.id.toString()),_=await J.openPositionFromBaseInstructions({poolInfo:e,poolKeys:v,ownerInfo:q(M({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:I,tokenAccountB:P}),tickLower:o,tickUpper:i,base:r,baseAmount:a,otherAmountMax:s,liquidity:c,withMetadata:m,getEphemeralSigners:p,nft2022:u});return T.addInstruction(_),T.addCustomComputeBudget(y),T.addTipInstruction(b),T.versionBuild({txVersion:w,extInfo:M({},_.address)})}async openPositionFromLiquidity({poolInfo:e,poolKeys:t,ownerInfo:n,amountMaxA:o,amountMaxB:i,base:r=null,tickLower:a,tickUpper:s,liquidity:c,associatedOnly:u=!0,checkCreateATAOwner:d=!1,withMetadata:g="create",txVersion:m,computeBudgetConfig:p,txTipConfig:y,getEphemeralSigners:b,nft2022:w,feePayer:A}){this.scope.availability.createConcentratedPosition===!1&&this.logAndCreateError("open position feature disabled in your region");let T=this.createTxBuilder(A),I=null,P=null,k=n.useSOLBalance&&e.mintA.address===Z.toBase58(),B=n.useSOLBalance&&e.mintB.address===Z.toBase58(),{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new R.PublicKey(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:k||o.isZero()?{payer:this.scope.ownerPubKey,amount:o}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:k?!1:u,checkCreateATAOwner:d});S&&(I=S),T.addInstruction(x||{});let{account:L,instructionParams:U}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new R.PublicKey(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:B||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!B,notUseTokenAccount:B,associatedOnly:B?!1:u,checkCreateATAOwner:d});L&&(P=L),T.addInstruction(U||{}),(I===void 0||P===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let V=t||await this.getClmmPoolKeys(e.id.toString()),F=await J.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:V,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:I,tokenAccountB:P},tickLower:a,tickUpper:s,liquidity:c,amountMaxA:o,amountMaxB:i,base:r,withMetadata:g,getEphemeralSigners:b,nft2022:w});return T.addInstruction(F),T.addCustomComputeBudget(p),T.addTipInstruction(y),T.versionBuild({txVersion:m,extInfo:{address:F.address}})}async increasePositionFromLiquidity(e){var L;let{poolInfo:t,poolKeys:n,ownerPosition:o,amountMaxA:i,amountMaxB:r,liquidity:a,ownerInfo:s,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:d,txTipConfig:g,txVersion:m,feePayer:p}=e,y=this.createTxBuilder(p),b,w,A=s.useSOLBalance&&t.mintA.address===Z.toString(),T=s.useSOLBalance&&t.mintB.address===Z.toString(),{account:I,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new R.PublicKey(t.mintA.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:A||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!A,associatedOnly:A?!1:c,checkCreateATAOwner:u});I&&(b=I),y.addInstruction(P||{});let{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new R.PublicKey(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:T||r.isZero()?{payer:this.scope.ownerPubKey,amount:r}:void 0,notUseTokenAccount:T,skipCloseAccount:!T,associatedOnly:T?!1:c,checkCreateATAOwner:u});k&&(w=k),y.addInstruction(B||{}),!b&&!w&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=n!=null?n:await this.getClmmPoolKeys(t.id),x=J.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:S,ownerPosition:o,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:w},liquidity:a,amountMaxA:i,amountMaxB:r,nft2022:(L=await this.scope.connection.getAccountInfo(o.nftMint))==null?void 0:L.owner.equals(ue.TOKEN_2022_PROGRAM_ID)});return y.addInstruction(x),y.addCustomComputeBudget(d),y.addTipInstruction(g),y.versionBuild({txVersion:m,extInfo:{address:x.address}})}async increasePositionFromBase(e){var x;let{poolInfo:t,ownerPosition:n,base:o,baseAmount:i,otherAmountMax:r,ownerInfo:a,associatedOnly:s=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:u,txTipConfig:d,txVersion:g,feePayer:m}=e,p=this.createTxBuilder(m),y,b,w=a.useSOLBalance&&t.mintA.address===Z.toString(),A=a.useSOLBalance&&t.mintB.address===Z.toString(),{account:T,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new R.PublicKey(t.mintA.address),notUseTokenAccount:w,owner:this.scope.ownerPubKey,createInfo:w||(o==="MintA"?i:r).isZero()?{payer:this.scope.ownerPubKey,amount:o==="MintA"?i:r}:void 0,skipCloseAccount:!w,associatedOnly:w?!1:s,checkCreateATAOwner:c});T&&(y=T),p.addInstruction(I||{});let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new R.PublicKey(t.mintB.address),owner:this.scope.ownerPubKey,createInfo:A||(o==="MintA"?r:i).isZero()?{payer:this.scope.ownerPubKey,amount:o==="MintA"?r:i}:void 0,notUseTokenAccount:A,skipCloseAccount:!A,associatedOnly:A?!1:s,checkCreateATAOwner:c});P&&(b=P),p.addInstruction(k||{}),!y&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let B=await this.getClmmPoolKeys(t.id),S=J.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:B,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:y,tokenAccountB:b},base:o,baseAmount:i,otherAmountMax:r,nft2022:(x=await this.scope.connection.getAccountInfo(n.nftMint))==null?void 0:x.owner.equals(ue.TOKEN_2022_PROGRAM_ID)});return p.addInstruction(S),p.addCustomComputeBudget(u),p.addTipInstruction(d),p.versionBuild({txVersion:g,extInfo:{address:S.address}})}async decreaseLiquidity(e){var F;let{poolInfo:t,poolKeys:n,ownerPosition:o,ownerInfo:i,amountMinA:r,amountMinB:a,liquidity:s,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:d,txTipConfig:g,txVersion:m,feePayer:p}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let y=this.createTxBuilder(p),b=i.useSOLBalance&&t.mintA.address===Z.toString(),w=i.useSOLBalance&&t.mintB.address===Z.toString(),A,T,{account:I,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new R.PublicKey(t.mintA.address),notUseTokenAccount:b,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!b,associatedOnly:b?!1:c,checkCreateATAOwner:u});A=I,P&&y.addInstruction(P);let{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new R.PublicKey(t.mintB.address),notUseTokenAccount:w,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!w,associatedOnly:w?!1:c,checkCreateATAOwner:u});T=k,B&&y.addInstruction(B);let S=n!=null?n:await this.getClmmPoolKeys(t.id),x=[];for(let v of S.rewardInfos){let _=i.useSOLBalance&&v.mint.address===Z.toString(),$;if(v.mint.address===t.mintA.address)$=A;else if(v.mint.address===t.mintB.address)$=T;else{let{account:pe,instructionParams:me}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R.PublicKey(v.mint.programId),mint:new R.PublicKey(v.mint.address),notUseTokenAccount:_,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!_,associatedOnly:_?!1:c,checkCreateATAOwner:u});$=pe,me&&y.addInstruction(me)}x.push($)}!A&&!T&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let L=(F=await this.scope.connection.getAccountInfo(o.nftMint))==null?void 0:F.owner.equals(ue.TOKEN_2022_PROGRAM_ID),U=await J.decreaseLiquidityInstructions({poolInfo:t,poolKeys:S,ownerPosition:o,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:A,tokenAccountB:T,rewardAccounts:x},liquidity:s,amountMinA:r,amountMinB:a,nft2022:L});y.addInstruction({instructions:U.instructions,instructionTypes:[ee.ClmmDecreasePosition]});let V=M({},U.address);if(i.closePosition){let v=await J.closePositionInstructions({poolInfo:t,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:o,nft2022:L});y.addInstruction({endInstructions:v.instructions,endInstructionTypes:v.instructionTypes}),V=M(M({},V),v.address)}return y.addCustomComputeBudget(d),y.addTipInstruction(g),y.versionBuild({txVersion:m,extInfo:{address:V}})}async lockPosition(e){var p;let{programId:t=sn,authProgramId:n=Wn,poolProgramId:o=wt,ownerPosition:i,payer:r,computeBudgetConfig:a,txTipConfig:s,txVersion:c,getEphemeralSigners:u,feePayer:d}=e,g=this.createTxBuilder(d),m=await J.makeLockPositions({programId:t,authProgramId:n,poolProgramId:o,wallet:this.scope.ownerPubKey,payer:r!=null?r:this.scope.ownerPubKey,nftMint:i.nftMint,getEphemeralSigners:u,nft2022:(p=await this.scope.connection.getAccountInfo(i.nftMint))==null?void 0:p.owner.equals(ue.TOKEN_2022_PROGRAM_ID)});return g.addInstruction(m),g.addCustomComputeBudget(a),g.addTipInstruction(s),g.versionBuild({txVersion:c,extInfo:m.address})}async harvestLockPosition(e){let{programId:t=sn,authProgramId:n=Wn,clmmProgram:o=wt,poolKeys:i,lockData:r,ownerInfo:a={useSOLBalance:!0},associatedOnly:s=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:u,txTipConfig:d,txVersion:g,feePayer:m}=e,p=i||await this.getClmmPoolKeys(r.poolId.toString()),y=this.createTxBuilder(m),b=await this.scope.connection.getAccountInfo(r.positionId);b||this.logger.logWithError("position not found",r.positionId);let w=zn.decode(b.data),A=a.useSOLBalance&&p.mintA.address===Z.toString(),T=a.useSOLBalance&&p.mintB.address===Z.toString(),I,P,{account:k,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintA.programId,mint:new R.PublicKey(p.mintA.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:A?!1:s,checkCreateATAOwner:c});I=k,B&&y.addInstruction(B);let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p.mintB.programId,mint:new R.PublicKey(p.mintB.address),notUseTokenAccount:T,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!T,associatedOnly:T?!1:s,checkCreateATAOwner:c});P=S,x&&y.addInstruction(x);let L={},U=[];for(let _e of p.rewardInfos){let Me=a.useSOLBalance&&_e.mint.address===Z.toString(),Ke=L[_e.mint.address];if(!Ke){let{account:oo,instructionParams:Yo}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R.PublicKey(_e.mint.programId),mint:new R.PublicKey(_e.mint.address),notUseTokenAccount:Me,owner:this.scope.ownerPubKey,skipCloseAccount:!Me,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:Me?!1:s});Ke=oo,Yo&&y.addInstruction(Yo)}L[_e.mint.address]=Ke,U.push(Ke)}let V=Xt(t,r.lockNftMint).publicKey,F=j(this.scope.ownerPubKey,r.lockNftMint,ue.TOKEN_PROGRAM_ID).publicKey,v=H.getTickArrayStartIndex(w.tickLower,p.config.tickSpacing),_=H.getTickArrayStartIndex(w.tickUpper,p.config.tickSpacing),{publicKey:$}=ae(new R.PublicKey(p.programId),r.poolId,v),{publicKey:pe}=ae(new R.PublicKey(p.programId),r.poolId,_),{publicKey:me}=rt(new R.PublicKey(p.programId),r.poolId,w.tickLower,w.tickUpper),be=[];for(let _e=0;_e<p.rewardInfos.length;_e++){let Me=p.rewardInfos[_e].mint.address,Ke=L[Me];Ke&&be.push({poolRewardVault:new R.PublicKey(p.rewardInfos[_e].vault),ownerRewardVault:Ke,rewardMint:new R.PublicKey(Me)})}let bt=await J.harvestLockPositionInstructionV2({programId:t,auth:n,lockPositionId:V,clmmProgram:o,lockOwner:this.scope.ownerPubKey,lockNftMint:r.lockNftMint,lockNftAccount:F,positionNftAccount:r.nftAccount,positionId:r.positionId,poolId:r.poolId,protocolPosition:me,vaultA:new R.PublicKey(p.vault.A),vaultB:new R.PublicKey(p.vault.B),tickArrayLower:$,tickArrayUpper:pe,userVaultA:I,userVaultB:P,mintA:new R.PublicKey(p.mintA.address),mintB:new R.PublicKey(p.mintB.address),rewardAccounts:be,exTickArrayBitmap:fe(o,r.poolId).publicKey});return y.addInstruction({instructions:[bt],instructionTypes:[ee.ClmmHarvestLockPosition]}),y.addCustomComputeBudget(u),y.addTipInstruction(d),y.versionBuild({txVersion:g})}async closePosition({poolInfo:e,poolKeys:t,ownerPosition:n,txVersion:o,computeBudgetConfig:i,txTipConfig:r,feePayer:a}){var d;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let s=this.createTxBuilder(a),c=t!=null?t:await this.getClmmPoolKeys(e.id),u=J.closePositionInstructions({poolInfo:e,poolKeys:c,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:n,nft2022:(d=await this.scope.connection.getAccountInfo(n.nftMint))==null?void 0:d.owner.equals(ue.TOKEN_2022_PROGRAM_ID)});return s.addCustomComputeBudget(i),s.addTipInstruction(r),s.addInstruction(u).versionBuild({txVersion:o,extInfo:{address:u.address}})}async initReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1,computeBudgetConfig:r,txVersion:a,feePayer:s}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let c=this.createTxBuilder(s),u=t.useSOLBalance&&n.mint.address.toString()===Z.toString(),d=n.perSecond.mul(n.endTime-n.openTime),{account:g,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R.PublicKey(n.mint.programId),mint:new R.PublicKey(n.mint.address),notUseTokenAccount:!!u,skipCloseAccount:!u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new we.default(new mt.default(d.toFixed(0)).gte(d)?d.toFixed(0):d.add(1).toFixed(0))}:void 0,associatedOnly:u?!1:o,checkCreateATAOwner:i});m&&c.addInstruction(m),g||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=J.initRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:g},rewardInfo:{programId:new R.PublicKey(n.mint.programId),mint:new R.PublicKey(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:Yt(n.perSecond)}});return c.addInstruction(y),c.addCustomComputeBudget(r),c.versionBuild({txVersion:a,extInfo:{address:y.address}})}async initRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:o,associatedOnly:i=!0,checkCreateATAOwner:r=!1,computeBudgetConfig:a,txTipConfig:s,txVersion:c,feePayer:u}){for(let m of o)m.endTime<=m.openTime&&this.logAndCreateError("reward time error","rewardInfo",m);let d=this.createTxBuilder(u),g={};for(let m of o){let p=n.useSOLBalance&&m.mint.address===Z.toString(),y=m.perSecond.mul(m.endTime-m.openTime),{account:b,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R.PublicKey(m.mint.programId),mint:new R.PublicKey(m.mint.address),notUseTokenAccount:!!p,skipCloseAccount:!p,owner:this.scope.ownerPubKey,createInfo:p?{payer:n.feePayer||this.scope.ownerPubKey,amount:new we.default(new mt.default(y.toFixed(0)).gte(y)?y.toFixed(0):y.add(1).toFixed(0))}:void 0,associatedOnly:p?!1:i,checkCreateATAOwner:r});w&&d.addInstruction(w),b||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let A=t!=null?t:await this.getClmmPoolKeys(e.id),T=J.initRewardInstructions({poolInfo:e,poolKeys:A,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:b},rewardInfo:{programId:new R.PublicKey(m.mint.programId),mint:new R.PublicKey(m.mint.address),openTime:m.openTime,endTime:m.endTime,emissionsPerSecondX64:Yt(m.perSecond)}});g=M(M({},g),T.address),d.addInstruction(T)}return d.addCustomComputeBudget(a),d.addTipInstruction(s),d.versionBuild({txVersion:c,extInfo:{address:g}})}async setReward({poolInfo:e,ownerInfo:t,rewardInfo:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1,computeBudgetConfig:r,txTipConfig:a,txVersion:s,feePayer:c}){n.endTime<=n.openTime&&this.logAndCreateError("reward time error","rewardInfo",n);let u=this.createTxBuilder(c),d=t.useSOLBalance&&n.mint.equals(Z),{account:g,instructionParams:m}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:d,owner:this.scope.ownerPubKey,createInfo:d?{payer:t.feePayer||this.scope.ownerPubKey,amount:new we.default(new mt.default(n.perSecond.mul(n.endTime-n.openTime).toFixed(0)).gte(n.perSecond.mul(n.endTime-n.openTime))?n.perSecond.mul(n.endTime-n.openTime).toFixed(0):n.perSecond.mul(n.endTime-n.openTime).add(1).toFixed(0))}:void 0,associatedOnly:d?!1:o,checkCreateATAOwner:i});m&&u.addInstruction(m),g||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let p=await this.getClmmPoolKeys(e.id),y=J.setRewardInstructions({poolInfo:e,poolKeys:p,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:g},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:Yt(n.perSecond)}});return u.addInstruction(y),u.addCustomComputeBudget(r),u.addTipInstruction(a),u.versionBuild({txVersion:s,extInfo:{address:y.address}})}async setRewards({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfos:o,associatedOnly:i=!0,checkCreateATAOwner:r=!1,computeBudgetConfig:a,txTipConfig:s,txVersion:c,feePayer:u}){let d=this.createTxBuilder(u),g={};for(let m of o){m.endTime<=m.openTime&&this.logAndCreateError("reward time error","rewardInfo",m);let p=n.useSOLBalance&&m.mint.address===Z.toString(),{account:y,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R.PublicKey(m.mint.programId),mint:new R.PublicKey(m.mint.address),notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:p?{payer:n.feePayer||this.scope.ownerPubKey,amount:new we.default(new mt.default(m.perSecond.mul(m.endTime-m.openTime).toFixed(0)).gte(m.perSecond.mul(m.endTime-m.openTime))?m.perSecond.mul(m.endTime-m.openTime).toFixed(0):m.perSecond.mul(m.endTime-m.openTime).add(1).toFixed(0))}:void 0,associatedOnly:p?!1:i,checkCreateATAOwner:r});b&&d.addInstruction(b),y||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let w=t!=null?t:await this.getClmmPoolKeys(e.id),A=J.setRewardInstructions({poolInfo:e,poolKeys:w,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:y},rewardInfo:{mint:new R.PublicKey(m.mint.address),openTime:m.openTime,endTime:m.endTime,emissionsPerSecondX64:Yt(m.perSecond)}});d.addInstruction(A),g=M(M({},g),A.address)}return d.addCustomComputeBudget(a),d.addTipInstruction(s),d.versionBuild({txVersion:c,extInfo:{address:g}})}async collectReward({poolInfo:e,ownerInfo:t,rewardMint:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1,computeBudgetConfig:r,txTipConfig:a,txVersion:s,feePayer:c}){let u=e.rewardDefaultInfos.find(w=>w.mint.address===n.toString());u||this.logAndCreateError("reward mint error","not found reward mint",n);let d=this.createTxBuilder(c),g=t.useSOLBalance&&n.equals(Z),{account:m,instructionParams:p}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R.PublicKey(u.mint.programId),mint:n,notUseTokenAccount:g,owner:this.scope.ownerPubKey,skipCloseAccount:!g,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:g?!1:o,checkCreateATAOwner:i});p&&d.addInstruction(p),m||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let y=await this.getClmmPoolKeys(e.id),b=J.collectRewardInstructions({poolInfo:e,poolKeys:y,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:m},rewardMint:n});return d.addInstruction(b),d.addCustomComputeBudget(r),d.addTipInstruction(a),d.versionBuild({txVersion:s,extInfo:{address:b.address}})}async collectRewards({poolInfo:e,ownerInfo:t,rewardMints:n,associatedOnly:o=!0,checkCreateATAOwner:i=!1,computeBudgetConfig:r,txTipConfig:a,feePayer:s}){let c=this.createTxBuilder(s),u={};for(let d of n){let g=e.rewardDefaultInfos.find(A=>A.mint.address===d.toString());if(!g){this.logAndCreateError("reward mint error","not found reward mint",d);continue}let m=t.useSOLBalance&&d.equals(Z),{account:p,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R.PublicKey(g.mint.programId),mint:d,notUseTokenAccount:m,owner:this.scope.ownerPubKey,skipCloseAccount:!m,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:m?!1:o,checkCreateATAOwner:i});p||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos),y&&c.addInstruction(y);let b=await this.getClmmPoolKeys(e.id),w=J.collectRewardInstructions({poolInfo:e,poolKeys:b,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:p},rewardMint:d});c.addInstruction(w),u=M(M({},u),w.address)}return c.addCustomComputeBudget(r),c.addTipInstruction(a),c.build({address:u})}async openLimitOrder({poolInfo:e,baseIn:t=!0,orderTick:n,amount:o,noneIndex:i=0,tickArrayBitmap:r,ownerInfo:a={useSOLBalance:!0},associatedOnly:s=!0,feePayer:c,computeBudgetConfig:u,txTipConfig:d,txVersion:g}){let m=new R.PublicKey(e.id),p=new R.PublicKey(e.programId),y=t?new R.PublicKey(e.mintA.address):new R.PublicKey(e.mintB.address),b=t?new R.PublicKey(e.mintB.address):new R.PublicKey(e.mintA.address),w=new R.PublicKey(e[t?"mintA":"mintB"].programId),A=new R.PublicKey(e[t?"mintB":"mintA"].programId),T=y.equals(Z),I=b.equals(Z),P=a.useSOLBalance&&T,k=a.useSOLBalance&&I,B=this.createTxBuilder(),S=P||!s?void 0:j(this.scope.ownerPubKey,y,w).publicKey;if(S)B.addInstruction({instructions:[(0,ue.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,S,this.scope.ownerPubKey,y,w)]});else{let{account:me,instructionParams:be}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:w,mint:y,notUseTokenAccount:P,owner:this.scope.ownerPubKey,skipCloseAccount:!P,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:o},associatedOnly:!P});S=me,be&&B.addInstruction(be)}let x=k||!s?void 0:j(this.scope.ownerPubKey,b,A).publicKey;if(x)B.addInstruction({instructions:[(0,ue.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,x,this.scope.ownerPubKey,b,A)]});else{let{account:me,instructionParams:be}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:A,mint:b,notUseTokenAccount:k,owner:this.scope.ownerPubKey,skipCloseAccount:!k,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:o},associatedOnly:!k});x=me,be&&B.addInstruction(be)}let L=rr(p,this.scope.ownerPubKey,i).publicKey,U=await this.scope.connection.getAccountInfo(L),V=U?Xi.decode(U.data).orderNonce:new we.default(0),F=ir(p,c||this.scope.ownerPubKey,L,V).publicKey,v=H.getTickArrayStartIndex(n,e.config.tickSpacing),_=ae(p,m,v).publicKey,$=ze(p,m,new R.PublicKey(e[t?"mintA":"mintB"].address)).publicKey,pe=ze(p,m,new R.PublicKey(e[t?"mintB":"mintA"].address)).publicKey;return B.addInstruction({instructions:[J.openLimitOrderInstruction(p,c||this.scope.ownerPubKey,m,_,L,F,S,x,$,pe,y,b,w,i,t,n,o,r)]}),B.addCustomComputeBudget(u),B.addTipInstruction(d),B.versionBuild({txVersion:g,extInfo:{limitOrder:F}})}async increaseLimitOrder({poolInfo:e,limitOrder:t,amount:n,ownerInfo:o={useSOLBalance:!0},associatedOnly:i=!0,feePayer:r,computeBudgetConfig:a,txTipConfig:s,txVersion:c}){let u=new R.PublicKey(e.id),d=new R.PublicKey(e.programId),g=await this.scope.connection.getAccountInfo(t);g||this.logAndCreateError(`limit order ${t.toBase58()} not exist`);let m=Ct.decode(g.data),p=m.zeroForOne?new R.PublicKey(e.mintA.address):new R.PublicKey(e.mintB.address),y=new R.PublicKey(e[m.zeroForOne?"mintA":"mintB"].programId),b=p.equals(Z),w=o.useSOLBalance&&b,A=this.createTxBuilder(),T=w||!i?void 0:j(this.scope.ownerPubKey,p,y).publicKey;if(T)A.addInstruction({instructions:[(0,ue.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,T,this.scope.ownerPubKey,p,y)]});else{let{account:B,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y,mint:p,notUseTokenAccount:w,owner:this.scope.ownerPubKey,skipCloseAccount:!w,createInfo:{payer:o.feePayer||this.scope.ownerPubKey,amount:n},associatedOnly:!w});T=B,S&&A.addInstruction(S)}let I=ze(d,u,new R.PublicKey(e[m.zeroForOne?"mintA":"mintB"].address)).publicKey,P=H.getTickArrayStartIndex(m.tick,e.config.tickSpacing),k=ae(d,u,P).publicKey;return A.addInstruction({instructions:[J.increaseLimitOrderInstruction(d,r||this.scope.ownerPubKey,m.poolId,k,t,T,I,p,y,n)]}),A.addCustomComputeBudget(a),A.addTipInstruction(s),A.versionBuild({txVersion:c})}async decreaseLimitOrder({poolInfo:e,limitOrder:t,limitOrderInfo:n,amount:o,slippage:i=1e3,tickArrayBitmap:r,ownerInfo:a={useSOLBalance:!0},associatedOnly:s=!0,feePayer:c,computeBudgetConfig:u,txTipConfig:d,txVersion:g,forerunCreate:m}){let p=new R.PublicKey(e.id),y=new R.PublicKey(e.programId),b=n;if(!b){let me=await this.scope.connection.getAccountInfo(t);me||this.logAndCreateError(`limit order ${t.toBase58()} not exist`),b=Ct.decode(me.data)}let w=o.muln(1e4-i).divn(1e4),A=Tt.getUnFilledAmount({orderInfo:b});(A.isZero()||o.gt(A))&&this.logAndCreateError(`amount should be less than unfulfilled amount: ${A.toString()}, amount: ${o.toString()}`);let[T,I]=b.zeroForOne?[new R.PublicKey(e.mintA.address),new R.PublicKey(e.mintB.address)]:[new R.PublicKey(e.mintB.address),new R.PublicKey(e.mintA.address)],[P,k]=b.zeroForOne?[new R.PublicKey(e.mintA.programId),new R.PublicKey(e.mintB.programId)]:[new R.PublicKey(e.mintB.programId),new R.PublicKey(e.mintA.programId)],[B,S]=[T.equals(Z),I.equals(Z)],[x,L]=[a.useSOLBalance&&B,a.useSOLBalance&&S],U=this.createTxBuilder(),V=x||!s?void 0:j(this.scope.ownerPubKey,T,P).publicKey,F=L||!s?void 0:j(this.scope.ownerPubKey,I,k).publicKey;if(V)U.addInstruction({instructions:[(0,ue.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,V,this.scope.ownerPubKey,T,P)]});else{let{account:me,instructionParams:be}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:P,mint:T,notUseTokenAccount:x,owner:this.scope.ownerPubKey,skipCloseAccount:!x,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:!x});V=me,be&&U.addInstruction(be)}if(F)U.addInstruction({instructions:[(0,ue.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,F,this.scope.ownerPubKey,I,k)]});else{let{account:me,instructionParams:be}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:k,mint:I,notUseTokenAccount:L,owner:this.scope.ownerPubKey,skipCloseAccount:!L,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:!L});F=me,be&&U.addInstruction(be)}let[v,_]=[ze(y,p,T).publicKey,ze(y,p,I).publicKey],$=H.getTickArrayStartIndex(b.tick,e.config.tickSpacing),pe=ae(y,p,$).publicKey;return U.addInstruction({instructions:[J.decreaseLimitOrderInstruction(y,c||this.scope.ownerPubKey,p,pe,t,V,F,v,_,T,I,o,w,r)]}),U.addCustomComputeBudget(u),U.addTipInstruction(d),U.versionBuild({txVersion:g,extInfo:{forerunCreate:m}})}async closeLimitOrder({programId:e=wt,limitOrder:t,autoWithdraw:n=!0,tickArrayBitmap:o,slippage:i=0,feePayer:r,computeBudgetConfig:a,txTipConfig:s,txVersion:c}){let u=await this.scope.connection.getAccountInfo(t);u||this.logAndCreateError(`limit order ${t.toBase58()} not exist`);let d=Ct.decode(u.data),g=Tt.getUnFilledAmount({orderInfo:d});!n&&!g.isZero()&&this.logAndCreateError(`unfulfilled amount should be 0, (${g.toString()} remaining), please withdraw first or set autoWithdraw: true`);let m=this.createTxBuilder(),p=(await this.scope.api.fetchPoolById({ids:d.poolId.toBase58()}))[0];p||(p=(await this.getSimplePoolInfo(d.poolId)).poolInfo);let y=await Ge.fetchTickArrayInfo({connection:this.scope.connection,programId:e,poolId:d.poolId,tick:d.tick,tickSpacing:p.config.tickSpacing}),b=Tt.settleFilledOrder({orderInfo:d,tickInfo:y.ticks.find(w=>w.tick===d.tick)});if(g.isZero()){if(!b.isZero()){let w=await this.settleLimitOrder({limitOrder:t});m.addInstruction(M({},w.builder.AllTxData))}}else{let{builder:w}=await this.decreaseLimitOrder({poolInfo:p,limitOrder:t,limitOrderInfo:d,amount:g,tickArrayBitmap:o,slippage:i,txVersion:0});m.addInstruction({instructions:w.allInstructions})}return m.addInstruction({instructions:[J.closeLimitOrderInstruction(e,r||this.scope.ownerPubKey,this.scope.ownerPubKey,t)]}),m.addCustomComputeBudget(a),m.addTipInstruction(s),m.versionBuild({txVersion:c})}async closeAllLimitOrder({programId:e=wt,limitOrders:t,autoWithdraw:n=!0,slippage:o=1e4,feePayer:i,computeBudgetConfig:r,txVersion:a}){let s=this.createTxBuilder(),u=(await Ee(this.scope.connection,t)).map((A,T)=>A?q(M({},Ct.decode(A.data)),{pda:t[T]}):null),d=u.filter(Boolean),g=d.map(A=>A.poolId.toBase58()),m=(await this.scope.api.fetchPoolById({ids:g.join(",")})).filter(Boolean),p={};m.forEach(A=>p[A.id]=A);let y=await Ge.fetchMultipleTickArrayInfo({connection:this.scope.connection,tickInfoList:d.map(A=>({programId:e,poolId:A.poolId,tick:A.tick,tickSpacing:p[A.poolId.toString()].config.tickSpacing}))}),b={};y.forEach((A,T)=>{!A||(b[d[T].pda.toBase58()]=A)});let w=0;for(let A of t){let T=u[w];if(!T){w++;continue}let I=Tt.getUnFilledAmount({orderInfo:T});!n&&!I.isZero()&&this.logAndCreateError(`${A.toBase58()} order unfulfilled amount should be 0 (${I.toString()} remaining), please withdraw first or set autoWithdraw: true`);let P=p[T.poolId.toBase58()],k=b[A.toBase58()],B=Tt.settleFilledOrder({orderInfo:T,tickInfo:k.ticks.find(S=>S.tick===T.tick)});if(I.isZero()){if(!B.isZero()){let S=await this.settleLimitOrder({limitOrder:A,forerunCreate:!0});s.addInstruction(M({},S.builder.AllTxData))}}else{let{builder:S}=await this.decreaseLimitOrder({poolInfo:P,limitOrder:A,limitOrderInfo:T,amount:I,slippage:o,txVersion:0,forerunCreate:!0});s.addInstruction({instructions:S.allInstructions})}s.addInstruction({instructions:[J.closeLimitOrderInstruction(e,i||this.scope.ownerPubKey,this.scope.ownerPubKey,A)]}),w++}return a===0?s.sizeCheckBuildV0({computeBudgetConfig:r}):s.sizeCheckBuild({computeBudgetConfig:r})}async settleLimitOrder({limitOrder:e,feePayer:t,ownerInfo:n={useSOLBalance:!0},associatedOnly:o=!0,computeBudgetConfig:i,txTipConfig:r,txVersion:a,forerunCreate:s}){let c=await this.scope.connection.getAccountInfo(e);c||this.logAndCreateError(`limit order ${e.toBase58()} not exist`);let u=Ct.decode(c.data),d=(await this.scope.api.fetchPoolById({ids:u.poolId.toBase58()}))[0];d||(d=(await this.getSimplePoolInfo(u.poolId)).poolInfo);let g=u.zeroForOne?d.mintB:d.mintA,[m,p]=[new R.PublicKey(g.address),new R.PublicKey(g.programId)],y=new R.PublicKey(d.programId),b=this.createTxBuilder(),w=m.equals(Z),A=n.useSOLBalance&&w,T=A||!o?void 0:j(this.scope.ownerPubKey,m,p).publicKey;if(T)b.addInstruction({instructions:[(0,ue.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,T,this.scope.ownerPubKey,m,p)]});else{let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:p,mint:m,notUseTokenAccount:A,owner:this.scope.ownerPubKey,skipCloseAccount:!A,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:!A});T=P,k&&b.addInstruction(k)}let I=H.getTickArrayStartIndex(u.tick,d.config.tickSpacing);return b.addInstruction({instructions:[J.settleLimitOrderInstruction(y,t||this.scope.ownerPubKey,u.poolId,ae(y,u.poolId,I).publicKey,e,T,ze(y,u.poolId,m).publicKey,m,p)]}),b.addCustomComputeBudget(i),b.addTipInstruction(r),b.versionBuild({txVersion:a,extInfo:{forerunCreate:s}})}async settleAllLimitOrder({limitOrders:e,feePayer:t,ownerInfo:n={useSOLBalance:!0},associatedOnly:o=!0,computeBudgetConfig:i,txVersion:r}){let a=await Ee(this.scope.connection,e),s=[],c=a.map((m,p)=>{if(!m)return;let y=Ct.decode(m.data);return s.push(y.poolId.toString()),q(M({},y),{pda:e[p]})}),u=await this.scope.api.fetchPoolById({ids:s.join(",")});u.filter(Boolean).length||(u=(await Promise.all(s.map(p=>this.getSimplePoolInfo(p)))).map(p=>p.poolInfo));let d=this.createTxBuilder(),g={};for(let m of c){if(!m)continue;let p=u.find(B=>B.id===m.poolId.toBase58());if(!p)continue;let y=new R.PublicKey(p.programId),b=new R.PublicKey(m.zeroForOne?p.mintB.address:p.mintA.address),w=b.equals(Z),A=n.useSOLBalance&&w,T=new R.PublicKey(w?ue.TOKEN_PROGRAM_ID:(await this.scope.token.getTokenInfo(b)).programId),I=g[b.toBase58()],P=A||!o?void 0:j(this.scope.ownerPubKey,b,T).publicKey;if(I)P=I;else{if(P)d.addInstruction({instructions:[(0,ue.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,P,this.scope.ownerPubKey,b,T)]});else{let{account:B,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:T,mint:b,notUseTokenAccount:A,owner:this.scope.ownerPubKey,skipCloseAccount:!A,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:!A});P=B,S&&d.addInstruction(S)}g[b.toBase58()]=P}let k=H.getTickArrayStartIndex(m.tick,p.config.tickSpacing);d.addInstruction({instructions:[J.settleLimitOrderInstruction(y,t||this.scope.ownerPubKey,m.poolId,ae(y,m.poolId,k).publicKey,m.pda,P,ze(y,m.poolId,b).publicKey,b,T)]})}return r===0?d.sizeCheckBuildV0({computeBudgetConfig:i}):d.sizeCheckBuild({computeBudgetConfig:i})}async swap({poolInfo:e,poolKeys:t,inputMint:n,amountIn:o,amountOutMin:i,priceLimit:r,observationId:a,ownerInfo:s,remainingAccounts:c,associatedOnly:u=!0,checkCreateATAOwner:d=!1,txVersion:g,computeBudgetConfig:m,txTipConfig:p,feePayer:y}){let b=this.createTxBuilder(y),w=n.toString()===e.mintA.address.toString(),A=s.useSOLBalance&&e.mintA.address.toString()===Z.toBase58(),T=s.useSOLBalance&&e.mintB.address.toString()===Z.toBase58(),I;!r||r.equals(new mt.default(0))?I=w?$e.add(new we.default(1)):Je.sub(new we.default(1)):I=z.priceToSqrtPriceX64(r,e.mintA.decimals,e.mintB.decimals);let P;if(!P){let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new R.PublicKey(e.mintA.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,skipCloseAccount:!A,createInfo:A||!w?{payer:s.feePayer||this.scope.ownerPubKey,amount:w?o:0}:void 0,associatedOnly:A?!1:u,checkCreateATAOwner:d});P=S,x&&b.addInstruction(x)}let k;if(!k){let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new R.PublicKey(e.mintB.address),notUseTokenAccount:T,owner:this.scope.ownerPubKey,skipCloseAccount:!T,createInfo:T||w?{payer:s.feePayer||this.scope.ownerPubKey,amount:w?0:o}:void 0,associatedOnly:T?!1:u,checkCreateATAOwner:d});k=S,x&&b.addInstruction(x)}(!P||!k)&&this.logAndCreateError("user do not have token account",{tokenA:e.mintA.address,tokenB:e.mintB.address,ownerTokenAccountA:P,ownerTokenAccountB:k,mintAUseSOLBalance:A,mintBUseSOLBalance:T,associatedOnly:u});let B=t!=null?t:await this.getClmmPoolKeys(e.id.toString());return b.addInstruction(J.makeSwapBaseInInstructions({poolInfo:q(M({},e),{id:e.id.toString(),programId:e.programId.toString()}),poolKeys:B,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:P,tokenAccountB:k},inputMint:new R.PublicKey(n),amountIn:o,amountOutMin:i,sqrtPriceLimitX64:D,remainingAccounts:c})),b.addCustomComputeBudget(m),b.addTipInstruction(p),b.versionBuild({txVersion:g})}async swapBaseOut({poolInfo:e,poolKeys:t,outputMint:n,amountOut:o,amountInMax:i,priceLimit:r,observationId:a,ownerInfo:s,remainingAccounts:c,associatedOnly:u=!0,checkCreateATAOwner:d=!1,txVersion:g,computeBudgetConfig:m,txTipConfig:p,feePayer:y}){let b=this.createTxBuilder(y),w=n.toString()===e.mintB.address.toString(),A=s.useSOLBalance&&e.mintA.address.toString()===Z.toBase58(),T=s.useSOLBalance&&e.mintB.address.toString()===Z.toBase58(),I;!r||r.equals(new mt.default(0))?I=w?$e.add(new we.default(1)):Je.sub(new we.default(1)):I=z.priceToSqrtPriceX64(r,e.mintA.decimals,e.mintB.decimals);let P;if(!P){let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new R.PublicKey(e.mintA.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,skipCloseAccount:!A,createInfo:A||!w?{payer:s.feePayer||this.scope.ownerPubKey,amount:w?i:0}:void 0,associatedOnly:A?!1:u,checkCreateATAOwner:d});P=S,x&&b.addInstruction(x)}let k;if(!k){let{account:S,instructionParams:x}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new R.PublicKey(e.mintB.address),notUseTokenAccount:T,owner:this.scope.ownerPubKey,skipCloseAccount:!T,createInfo:T||w?{payer:s.feePayer||this.scope.ownerPubKey,amount:w?0:i}:void 0,associatedOnly:T?!1:u,checkCreateATAOwner:d});k=S,x&&b.addInstruction(x)}(!P||!k)&&this.logAndCreateError("user do not have token account",{tokenA:e.mintA.address,tokenB:e.mintB.address,ownerTokenAccountA:P,ownerTokenAccountB:k,mintAUseSOLBalance:A,mintBUseSOLBalance:T,associatedOnly:u});let B=t!=null?t:await this.getClmmPoolKeys(e.id.toString());return b.addInstruction(J.makeSwapBaseOutInstructions({poolInfo:q(M({},e),{id:e.id.toString(),programId:e.programId.toString()}),poolKeys:B,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:P,tokenAccountB:k},outputMint:new R.PublicKey(n),amountOut:o,amountInMax:i,sqrtPriceLimitX64:D,remainingAccounts:c})),b.addCustomComputeBudget(m),b.addTipInstruction(p),b.versionBuild({txVersion:g})}async harvestAllRewards({allPoolInfo:e,allPositions:t,lockInfo:n,ownerInfo:o,associatedOnly:i=!0,checkCreateATAOwner:r=!1,programId:a,txVersion:s,computeBudgetConfig:c,feePayer:u,lockProgram:d=sn,lockAuth:g=Wn,clmmProgram:m=wt}){var T,I;let p={};for(let P of this.scope.account.tokenAccountRawInfos)i?j(this.scope.ownerPubKey,P.accountInfo.mint,a).publicKey.equals(P.pubkey)&&(p[P.accountInfo.mint.toString()]=P.pubkey):p[P.accountInfo.mint.toString()]=P.pubkey;let y=Object.values(t).flat().map(P=>P.nftMint),b=await We(this.scope.connection,y.map(P=>({pubkey:P}))),w={};b.forEach(P=>{var k,B;w[P.pubkey.toBase58()]=(B=(k=P==null?void 0:P.accountInfo)==null?void 0:k.owner)!=null?B:null});let A=this.createTxBuilder(u);for(let P of Object.values(e)){if(t[P.id]===void 0||!t[P.id].find(v=>!v.liquidity.isZero()||v.rewardInfos.find(_=>!_.rewardAmountOwed.isZero())))continue;let k=P,B=o.useSOLBalance&&k.mintA.address===Z.toString(),S=o.useSOLBalance&&k.mintB.address===Z.toString(),x=p[k.mintA.address];if(!x)if(B){let{account:v,instructionParams:_}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:k.mintA.programId,mint:new R.PublicKey(k.mintA.address),notUseTokenAccount:B,owner:this.scope.ownerPubKey,skipCloseAccount:!B,createInfo:{payer:o.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:B?!1:i,checkCreateATAOwner:r});x=v,_&&A.addInstruction(_)}else{let v=new R.PublicKey(k.mintA.address);x=this.scope.account.getAssociatedTokenAccount(v,new R.PublicKey(k.mintA.programId)),A.addInstruction({instructions:[(0,ue.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,x,this.scope.ownerPubKey,v,new R.PublicKey(k.mintA.programId))]})}let L=p[k.mintB.address];if(!L)if(S){let{account:v,instructionParams:_}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:k.mintB.programId,mint:new R.PublicKey(k.mintB.address),notUseTokenAccount:S,owner:this.scope.ownerPubKey,skipCloseAccount:!S,createInfo:{payer:o.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:S?!1:i,checkCreateATAOwner:r});L=v,_&&A.addInstruction(_)}else{let v=new R.PublicKey(k.mintB.address);L=this.scope.account.getAssociatedTokenAccount(v,new R.PublicKey(k.mintB.programId)),A.addInstruction({instructions:[(0,ue.createAssociatedTokenAccountIdempotentInstruction)(this.scope.ownerPubKey,L,this.scope.ownerPubKey,v,new R.PublicKey(k.mintB.programId))]})}p[k.mintA.address]=x,p[k.mintB.address]=L;let U=[];for(let v of k.rewardDefaultInfos){let _=o.useSOLBalance&&v.mint.address===Z.toString(),$=p[v.mint.address];if(!$){let{account:pe,instructionParams:me}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R.PublicKey(v.mint.programId),mint:new R.PublicKey(v.mint.address),notUseTokenAccount:_,owner:this.scope.ownerPubKey,skipCloseAccount:!_,createInfo:{payer:o.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:_?!1:i});$=pe,me&&A.addInstruction(me)}p[v.mint.address]=$,U.push($)}let V=await this.getClmmPoolKeys(k.id),F=[];for(let v=0;v<V.rewardInfos.length;v++)F.push({poolRewardVault:new R.PublicKey(V.rewardInfos[v].vault),ownerRewardVault:U[v],rewardMint:new R.PublicKey(V.rewardInfos[v].mint.address)});for(let v of t[P.id]){let _=(T=n==null?void 0:n[P.id])==null?void 0:T[v.nftMint.toBase58()];if(_){let $=j(this.scope.ownerPubKey,_.lockNftMint,ue.TOKEN_PROGRAM_ID).publicKey,pe=H.getTickArrayStartIndex(v.tickLower,V.config.tickSpacing),me=H.getTickArrayStartIndex(v.tickUpper,V.config.tickSpacing),{publicKey:be}=ae(new R.PublicKey(V.programId),_.poolId,pe),{publicKey:bt}=ae(new R.PublicKey(V.programId),_.poolId,me),{publicKey:_e}=rt(new R.PublicKey(V.programId),_.poolId,v.tickLower,v.tickUpper),Me=Xt(d,_.lockNftMint).publicKey,Ke=J.harvestLockPositionInstructionV2({programId:d,auth:g,lockPositionId:Me,clmmProgram:m,lockOwner:this.scope.ownerPubKey,lockNftMint:_.lockNftMint,lockNftAccount:$,positionNftAccount:_.nftAccount,positionId:_.positionId,poolId:_.poolId,protocolPosition:_e,vaultA:new R.PublicKey(V.vault.A),vaultB:new R.PublicKey(V.vault.B),tickArrayLower:be,tickArrayUpper:bt,userVaultA:x,userVaultB:L,mintA:new R.PublicKey(V.mintA.address),mintB:new R.PublicKey(V.mintB.address),rewardAccounts:F,exTickArrayBitmap:fe(m,_.poolId).publicKey});A.addInstruction({instructions:[Ke],instructionTypes:[ee.ClmmHarvestLockPosition],lookupTableAddress:V.lookupTableAccount?[V.lookupTableAccount]:[]})}else{let $=J.decreaseLiquidityInstructions({poolInfo:k,poolKeys:V,ownerPosition:v,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:x,tokenAccountB:L,rewardAccounts:U},liquidity:new we.default(0),amountMinA:new we.default(0),amountMinB:new we.default(0),nft2022:(I=w[v.nftMint.toBase58()])==null?void 0:I.equals(ue.TOKEN_2022_PROGRAM_ID)});A.addInstruction($)}}}return s===0?A.sizeCheckBuildV0({computeBudgetConfig:c}):A.sizeCheckBuild({computeBudgetConfig:c})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(mn(e).publicKey);return t?zi.decode(t.data).whitelistMints.filter(o=>!o.equals(R.PublicKey.default)):[]}async getOwnerPositionInfo({programId:e=wt}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(r=>r.accountInfo.amount.eq(new we.default(1))).map(r=>Xe(new R.PublicKey(e),r.accountInfo.mint).publicKey),o=await this.scope.connection.getMultipleAccountsInfo(n),i=[];return o.forEach(r=>{if(!r)return;let a=zn.decode(r.data);i.push(a)}),i}async getOwnerLockedPositionInfo({programId:e=sn}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(s=>s.accountInfo.amount.eq(new we.default(1))).map(s=>Xt(new R.PublicKey(e),s.accountInfo.mint).publicKey),o=await this.scope.connection.getMultipleAccountsInfo(n),i=[];o.forEach(s=>{if(!s)return;let c=Yi.decode(s.data);i.push(c)});let r=await this.scope.connection.getMultipleAccountsInfo(i.map(s=>s.positionId)),a=[];return r.forEach(s=>{if(!s)return;let c=zn.decode(s.data);a.push(c)}),i.map((s,c)=>({position:a[c],lockInfo:s}))}async getRpcClmmPoolInfo({poolId:e}){return(await this.getRpcClmmPoolInfos({poolIds:[e]}))[String(e)]}async getRpcClmmPoolInfos({poolIds:e,config:t}){let n=await We(this.scope.connection,e.map(i=>({pubkey:new R.PublicKey(i)})),t),o={};for(let i=0;i<e.length;i++){let r=n[i];if(r===null||!r.accountInfo)throw Error("fetch pool info error: "+String(e[i]));let a=ln.decode(r.accountInfo.data),s=z.sqrtPriceX64ToPrice(a.sqrtPriceX64,a.mintDecimalsA,a.mintDecimalsB).toNumber();o[String(e[i])]=q(M({},a),{currentPrice:s,programId:r.accountInfo.owner})}return o}async getComputeClmmPoolInfos({clmmPoolsRpcInfo:e,mintInfos:t}){let n=new Set(Object.keys(e).map(s=>e[s].configId.toBase58())),o=await We(this.scope.connection,Array.from(n).map(s=>({pubkey:new R.PublicKey(s)}))),i={};o.forEach(s=>{!s.accountInfo||(i[s.pubkey.toBase58()]=Ko.decode(s.accountInfo.data))});let r=await Ge.fetchComputeMultipleClmmInfo({connection:this.scope.connection,rpcDataMap:e,poolList:Object.keys(e).map(s=>{var d,g,m,p;let[c,u]=[e[s].mintA.toBase58(),e[s].mintB.toBase58()];return{id:s,programId:e[s].programId.toBase58(),mintA:yt({address:c,decimals:e[s].mintDecimalsA,programId:t[c].programId.toBase58()||ue.TOKEN_PROGRAM_ID.toBase58(),extensions:{feeConfig:(d=t[c])!=null&&d.feeConfig?hn((g=t[c])==null?void 0:g.feeConfig):void 0}}),mintB:yt({address:u,decimals:e[s].mintDecimalsB,programId:t[u].programId.toBase58()||ue.TOKEN_PROGRAM_ID.toBase58(),extensions:{feeConfig:(m=t[u])!=null&&m.feeConfig?hn((p=t[u])==null?void 0:p.feeConfig):void 0}}),price:e[s].currentPrice,config:q(M({},i[e[s].configId.toBase58()]),{id:e[s].configId.toBase58(),fundFeeRate:0,description:"",defaultRange:0,defaultRangePoint:[]})}})}),a=await Ge.fetchMultiplePoolTickArrays({connection:this.scope.connection,poolKeys:Object.values(r)});return{computeClmmPoolInfo:r,computePoolTickData:a}}async getPoolInfoFromRpc(e){let t=await this.getRpcClmmPoolInfo({poolId:e}),n=new Set([t.mintA.toBase58(),t.mintB.toBase58(),...t.rewardInfos.filter(u=>!u.mint.equals(R.PublicKey.default)).map(u=>u.mint.toBase58())]),o=await $t({connection:this.scope.connection,mints:Array.from(n).map(u=>new R.PublicKey(u))}),{computeClmmPoolInfo:i,computePoolTickData:r}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:{[e]:t},mintInfos:o}),a=await We(this.scope.connection,[{pubkey:t.vaultA},{pubkey:t.vaultB}]),s=mr(i[e],o);if(!a[0].accountInfo||!a[1].accountInfo)throw new Error("pool vault data not found");s.mintAmountA=Number(qt.decode(a[0].accountInfo.data).amount.toString()),s.mintAmountB=Number(qt.decode(a[1].accountInfo.data).amount.toString());let c=q(M({},i[e]),{exBitmapAccount:i[e].exBitmapAccount.toBase58(),observationId:i[e].observationId.toBase58(),id:e,programId:t.programId.toBase58(),openTime:t.startTime.toString(),vault:{A:t.vaultA.toBase58(),B:t.vaultB.toBase58()},config:s.config,rewardInfos:i[e].rewardInfos.filter(u=>!u.vault.equals(R.PublicKey.default)).map(u=>{var d;return{mint:yt({address:u.mint.toBase58(),programId:ue.TOKEN_PROGRAM_ID.toBase58(),decimals:(d=o[u.mint.toBase58()].decimals)!=null?d:6}),vault:u.vault.toBase58()}})});return{poolInfo:s,poolKeys:c,computePoolInfo:i[e],tickData:r,rpcPoolInfo:t,tickArrays:Object.values(r[e])}}async getSwapPoolInfo(e,t=!0){let{poolInfo:n,rpcData:o}=await this.getSimplePoolInfo(e),i=await this.scope.connection.getAccountInfo(o.configId),r=Ko.decode(i.data),a=new R.PublicKey(n.programId),s=new R.PublicKey(e),c=await cr(a,this.scope.connection,s,o.tickCurrent,r.tickSpacing,o.tickArrayBitmap,t);return{poolInfo:n,rpcData:o,configInfo:r,tickArrays:c}}async getSimplePoolInfo(e){let t=await this.getRpcClmmPoolInfo({poolId:e}),n=await this.scope.connection.getMultipleAccountsInfo([t.mintA,t.mintB]);return{poolInfo:{id:e.toString(),programId:t.programId.toString(),mintA:{address:t.mintA.toString(),programId:n[0].owner.toString(),decimals:t.mintDecimalsA},mintB:{address:t.mintB.toString(),programId:n[1].owner.toString(),decimals:t.mintDecimalsB},config:{id:t.configId.toBase58(),tickSpacing:t.tickSpacing}},rpcData:t}}async getMultipleSimplePoolInfo(e){let t=await this.getRpcClmmPoolInfos({poolIds:e}),n=new Set(Object.values(t).map(r=>[r.mintA.toBase58(),r.mintB.toBase58()]).flat()),o=await $t({connection:this.scope.connection,mints:Array.from(n).map(r=>new R.PublicKey(r))}),i={};return e.forEach(r=>{let a=t[r.toString()];if(!a)return null;let s=o[a.mintA.toBase58()],c=o[a.mintB.toBase58()];i[r.toString()]={poolInfo:{id:r.toString(),programId:a.programId.toString(),mintA:{address:a.mintA.toString(),programId:s.programId.toString(),decimals:a.mintDecimalsA},mintB:{address:a.mintB.toString(),programId:c.programId.toString(),decimals:a.mintDecimalsB},config:{id:a.configId.toBase58(),tickSpacing:a.tickSpacing}},rpcData:a}}),i}};0&&(module.exports={Clmm});
//# sourceMappingURL=clmm.js.map