UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

2 lines 215 kB
var dr=Object.defineProperty,pr=Object.defineProperties;var fr=Object.getOwnPropertyDescriptors;var An=Object.getOwnPropertySymbols;var Vo=Object.prototype.hasOwnProperty,Eo=Object.prototype.propertyIsEnumerable;var _o=(m,e,t)=>e in m?dr(m,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):m[e]=t,F=(m,e)=>{for(var t in e||(e={}))Vo.call(e,t)&&_o(m,t,e[t]);if(An)for(var t of An(e))Eo.call(e,t)&&_o(m,t,e[t]);return m},q=(m,e)=>pr(m,fr(e));var nt=(m,e)=>{var t={};for(var n in m)Vo.call(m,n)&&e.indexOf(n)<0&&(t[n]=m[n]);if(m!=null&&An)for(var n of An(m))e.indexOf(n)<0&&Eo.call(m,n)&&(t[n]=m[n]);return t};import{PublicKey as qo}from"@solana/web3.js";import{get as Do,set as yr}from"lodash";var Hn=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}},Wo={},br={};function ee(m){let e=Do(Wo,m);if(!e){let t=Do(br,m);e=new Hn({name:m,logLevel:t}),yr(Wo,m,e)}return e}import{MINT_SIZE as gr,TOKEN_PROGRAM_ID as Pr,getTransferFeeConfig as Ar,unpackMint as wr}from"@solana/spl-token";var Qn=ee("Raydium_accountInfo_util");async function _e(m,e,t){let{batchRequest:n,commitment:o="confirmed",chunkCount:i=100}=F({batchRequest:!1},t),r=Zn(e,i),a=new Array(r.length).fill([]);if(n){let s=r.map(p=>{let g=m._buildArgs([p.map(d=>d.toBase58())],o,"base64");return{methodName:"getMultipleAccounts",args:g}}),c=Zn(s,10);a=(await(await Promise.all(c.map(async p=>await m._rpcBatchRequest(p)))).flat()).map(p=>(p.error&&Qn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${p.error.message}`),p.result.value.map(g=>{if(g){let{data:d,executable:f,lamports:y,owner:b,rentEpoch:w}=g;return d.length!==2&&d[1]!=="base64"&&Qn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:f,lamports:y,owner:new qo(b),rentEpoch:w}}return null})))}else try{a=await Promise.all(r.map(s=>m.getMultipleAccountsInfo(s,o)))}catch(s){s instanceof Error&&Qn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${s.message}`)}return a.flat()}async function De(m,e,t){let n=await _e(m,e.map(o=>o.pubkey),t);return e.map((o,i)=>q(F({},o),{accountInfo:n[i]}))}async function Zt({connection:m,mints:e,config:t}){var i,r,a;if(e.length===0)return{};let n=await De(m,e.map(s=>({pubkey:ut(s)})),t),o={};for(let s of n){if(!s.accountInfo||s.accountInfo.data.length<gr){console.log("invalid mint account",s.pubkey.toBase58());continue}let c=wr(s.pubkey,s.accountInfo,(i=s.accountInfo)==null?void 0:i.owner);o[s.pubkey.toString()]=q(F({},c),{programId:((r=s.accountInfo)==null?void 0:r.owner)||Pr,feeConfig:(a=Ar(c))!=null?a:void 0})}return o[qo.default.toBase58()]=o[Y.toBase58()],o}import Lt from"bn.js";import RR from"decimal.js";import xr from"big.js";import Tn from"bn.js";import kr from"toformat";var Tr=kr,$t=Tr;import kn from"big.js";import Ir from"bn.js";import Br from"decimal.js-light";import jt from"bn.js";var Uo=9007199254740991;function Be(m){let e=ee("Raydium_parseBigNumberish");if(m instanceof jt)return m;if(typeof m=="string"){if(m.match(/^-?[0-9]+$/))return new jt(m);e.logWithError(`invalid BigNumberish string: ${m}`)}return typeof m=="number"?(m%1&&e.logWithError(`BigNumberish number underflow: ${m}`),(m>=Uo||m<=-Uo)&&e.logWithError(`BigNumberish number overflow: ${m}`),new jt(String(m))):typeof m=="bigint"?new jt(m.toString()):(e.error(`invalid BigNumberish value: ${m}`),new jt(0))}var wn=ee("module/fraction"),$n=$t(kn),Jt=$t(Br),Sr={[0]:Jt.ROUND_DOWN,[1]:Jt.ROUND_HALF_UP,[2]:Jt.ROUND_UP},Kr={[0]:kn.roundDown,[1]:kn.roundHalfUp,[2]:kn.roundUp},ie=class{constructor(e,t=new Ir(1)){this.numerator=Be(e),this.denominator=Be(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new ie(this.denominator,this.numerator)}add(e){let t=e instanceof ie?e:new ie(Be(e));return this.denominator.eq(t.denominator)?new ie(this.numerator.add(t.numerator),this.denominator):new ie(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof ie?e:new ie(Be(e));return this.denominator.eq(t.denominator)?new ie(this.numerator.sub(t.numerator),this.denominator):new ie(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof ie?e:new ie(Be(e));return new ie(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof ie?e:new ie(Be(e));return new ie(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||wn.logWithError(`${e} is not an integer.`),e<=0&&wn.logWithError(`${e} is not positive.`),Jt.set({precision:e+1,rounding:Sr[n]});let o=new Jt(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)||wn.logWithError(`${e} is not an integer.`),e<0&&wn.logWithError(`${e} is negative.`),$n.DP=e,$n.RM=Kr[n]||1,new $n(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Cr=ee("Raydium_amount"),Go=$t(xr);function Rr(m,e){let t="0",n="0";if(m.includes(".")){let o=m.split(".");o.length===2?([t,n]=o,n=n.padEnd(e,"0")):Cr.logWithError(`invalid number string, num: ${m}`)}else t=m;return[t,n.slice(0,e)||n]}var Se=class extends ie{constructor(t,n,o=!0,i){let r=new Tn(0),a=jn.pow(new Tn(t.decimals));if(o)r=Be(n);else{let s=new Tn(0),c=new Tn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[u,p]=Rr(n.toString(),t.decimals);s=Be(u),c=Be(p)}s=s.mul(a),r=s.add(c)}super(r,a);this.logger=ee(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 Se(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Se(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 Go.DP=this.token.decimals,new Go(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Lr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as zo}from"@solana/spl-token";var hn={chainId:101,address:Lr.default.toBase58(),programId:zo.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:zo.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}};import{PublicKey as eo}from"@solana/web3.js";import{PublicKey as fe,SystemProgram as Xo,SYSVAR_RENT_PUBKEY as Or}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Nr}from"@solana/spl-token";function Ot({pubkey:m,isSigner:e=!1,isWritable:t=!0}){return{pubkey:m,isWritable:t,isSigner:e}}var Mr=[Ot({pubkey:Nr,isWritable:!1}),Ot({pubkey:Xo.programId,isWritable:!1}),Ot({pubkey:Or,isWritable:!1})];function Jn({publicKey:m,transformSol:e}){let t=Yo(m.toString());if(t instanceof fe)return e&&t.equals(It)?Y:t;if(e&&t.toString()===It.toBase58())return Y;if(typeof t=="string"){if(t===fe.default.toBase58())return fe.default;try{return new fe(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Yo(m){try{return new fe(m)}catch{return m}}var At=new fe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ye=new fe("SysvarRent111111111111111111111111111111111"),Zu=new fe("SysvarC1ock11111111111111111111111111111111"),wt=new fe("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Fr=new fe("Sysvar1nstructions1111111111111111111111111"),vr=Xo.programId,$u=new fe("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ju=new fe("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Ju=new fe("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),ec=new fe("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),tc=new fe("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),nc=new fe("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),oc=new fe("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),ic=new fe("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),rc=new fe("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),ac=new fe("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),sc=new fe("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Y=new fe("So11111111111111111111111111111111111111112"),It=fe.default;function ut(m){return Jn({publicKey:m,transformSol:!0})}var to=class{constructor({mint:e,decimals:t,symbol:n,name:o,skipMint:i=!1,isToken2022:r=!1}){if(e===It.toBase58()||e instanceof eo&&It.equals(e)){this.decimals=ct.decimals,this.symbol=ct.symbol,this.name=ct.name,this.mint=new eo(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?eo.default:Jn({publicKey:e}),this.isToken2022=r}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Ce=to;Ce.WSOL=new to(q(F({},ct),{mint:ct.address}));var no=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},In=no;In.SOL=new no(hn);import _r from"bn.js";var Ho=new ie(new _r(100)),lt=class extends ie{toSignificant(e=5,t,n){return this.mul(Ho).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Ho).toFixed(e,t,n)}};var Vr=ee("Raydium_price"),He=class extends ie{constructor(t){let{baseToken:n,quoteToken:o,numerator:i,denominator:r}=t;super(i,r);this.baseToken=n,this.quoteToken=o,this.scalar=new ie(oo(n.decimals),oo(o.decimals))}get raw(){return new ie(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new He({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Vr.logWithError("mul token not equals");let n=super.mul(t);return new He({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,o){return this.adjusted.toSignificant(t,n,o)}toFixed(t=this.quoteToken.decimals,n,o){return this.adjusted.toFixed(t,n,o)}};import{merge as OC}from"lodash";import Lc from"axios";var Qo={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"},Er=q(F({},Qo),{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 el=ee("Raydium_Api");import{PublicKey as Ad,SystemProgram as wd}from"@solana/web3.js";import{AccountLayout as Bd,createAssociatedTokenAccountIdempotentInstruction as Sd,TOKEN_PROGRAM_ID as Kd,TOKEN_2022_PROGRAM_ID as xd}from"@solana/spl-token";import{PublicKey as _t,sendAndConfirmTransaction as co,SystemProgram as zr,Transaction as nn,TransactionMessage as on,VersionedTransaction as rn}from"@solana/web3.js";import Xr from"axios";import{PublicKey as io,AddressLookupTableAccount as Ft}from"@solana/web3.js";async function ro({connection:m,address:e,cluster:t="mainnet"}){let n=await _e(m,[...new Set(e.map(i=>i.toString()))].map(i=>new io(i))),o={};for(let i=0;i<e.length;i++){let r=n[i],a=e[i];if(!r)continue;let s=new Ft({key:a,state:Ft.deserialize(r.data)});o[a.toString()]=s,t==="devnet"?Mt[a.toString()]=s:Nt[a.toString()]=s}return o}var Nt={},ao=async m=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Nt[e])return Nt;let t=new io(e),n=await m.getAccountInfo(t);return n&&(Nt[e]=new Ft({key:t,state:Ft.deserialize(n.data)})),Nt},Mt={},so=async m=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Mt[e])return Mt;let t=new io(e),n=await m.getAccountInfo(t);return n&&(Mt[e]=new Ft({key:t,state:Ft.deserialize(n.data)})),Mt};var J={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{ComputeBudgetProgram as Zo,Keypair as jo,PublicKey as Dr,Transaction as Jo,TransactionMessage as Wr,VersionedTransaction as ei}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as qr}from"@solana/spl-token";var $o=ee("Raydium_txUtil"),ti=1644;function Bn(m){let e=[],t=[];return m.microLamports&&(e.push(Zo.setComputeUnitPrice({microLamports:m.microLamports})),t.push(J.SetComputeUnitPrice)),m.units&&(e.push(Zo.setComputeUnitLimit({units:m.units})),t.push(J.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function vt(m,e){var n,o;let t=e!=null?e:"confirmed";return(o=await((n=m.getLatestBlockhash)==null?void 0:n.call(m,{commitment:t})))==null?void 0:o.blockhash}async function Sn(m,e){return m.getSignatureStatuses([e]),new Promise((t,n)=>{let o=setTimeout(n,6e4);m.onSignature(e,i=>{if(clearTimeout(o),!i.err){t("");return}n(Object.assign(i.err,{txId:e}))},"confirmed")})}function uo(m,e){m.length<1&&$o.logWithError(`no instructions provided: ${m.toString()}`),e.length<1&&$o.logWithError(`no signers provided:, ${e.toString()}`);let t=new Jo;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...m);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<ti}catch{return!1}}function re(m,e){let[t,n]=Dr.findProgramAddressSync(m,e);return{publicKey:t,nonce:n}}function en({instructions:m,payer:e,signers:t}){return uo(m,[e,...t])}function tn({instructions:m,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=jo.generate().publicKey.toString()}){let i=new Wr({payerKey:e,recentBlockhash:n,instructions:m}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new ei(i).serialize()).toString("base64").length<ti}catch{return!1}}var Ur=m=>Buffer.isBuffer(m)?m:m instanceof Uint8Array?Buffer.from(m.buffer,m.byteOffset,m.byteLength):Buffer.from(m),Gr=m=>{let e=m.serialize({requireAllSignatures:!1,verifySignatures:!1});m instanceof ei&&(e=Ur(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Bt(m){let e=[];return m.forEach(t=>{t instanceof Jo&&(t.recentBlockhash||(t.recentBlockhash=qr.toBase58()),t.feePayer||(t.feePayer=jo.generate().publicKey)),e.push(Gr(t))}),console.log("simulate tx string:",e),e}var Kn=2e3,xn=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 Xr.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}=Bn(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(zr.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new _t(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(J.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!==_t.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:n}){return e===0?await this.buildV0(q(F({},t||{}),{lookupTableAddress:n})):this.build(t)}build(e){var n;let t=new nn;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 vt(this.connection,this.blockhashCommitment);if(t.recentBlockhash=c,this.signers.length&&t.sign(...this.signers),Bt([t]),(u=this.owner)!=null&&u.isKeyPair)return{txId:a?await co(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 p=await this.signAllTransactions([t]);if(this.signers.length)for(let g of p)try{g.sign(...this.signers)}catch{}return{txId:s?"":await this.connection.sendRawTransaction(p[0].serialize(),{skipPreflight:r}),signedTx:p[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(p=>p.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:p,onTxUpdate:g,skipTxCount:d=0,recentBlockHash:f,skipPreflight:y=!0}=u||{},b=f!=null?f:await vt(this.connection,this.blockhashCommitment);if((w=this.owner)!=null&&w.isKeyPair){if(p){let A=[],T=0;for(let B of r){if(++T,T<=d)continue;let P=await co(this.connection,B,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((B,P)=>(B.recentBlockhash=b,a[P].length&&B.sign(...a[P]),B));Bt(A);let T=await this.signAllTransactions(A);if(p){let B=0,P=[],k=async()=>{if(!T[B])return;let S=await this.connection.sendRawTransaction(T[B].serialize(),{skipPreflight:y});P.push({txId:S,status:"sent",signedTx:T[B]}),g==null||g([...P]),B++;let I=!1,K=null,L=null,U=V=>{K!==null&&clearInterval(K),L!==null&&this.connection.removeSignatureListener(L);let v=P.findIndex(_=>_.txId===S);if(v>-1){if(P[v].status==="error"||P[v].status==="success")return;P[v].status=V.err?"error":"success"}g==null||g([...P]),V.err||k()};this.loopMultiTxStatus&&(K=setInterval(async()=>{var V;if(I){clearInterval(K);return}try{let v=await this.connection.getTransaction(S,{commitment:"confirmed",maxSupportedTransactionVersion:1});v&&(I=!0,clearInterval(K),U({err:((V=v.meta)==null?void 0:V.err)||null}),console.log("tx status from getTransaction:",S))}catch(v){I=!0,clearInterval(K),console.error("getTransaction timeout:",v,S)}},Kn)),L=this.connection.onSignature(S,V=>{if(I){this.connection.removeSignatureListener(L);return}I=!0,U(V)},"confirmed"),this.connection.getSignatureStatus(S)};return await k(),{txIds:P.map(S=>S.txId),signedTxs:T}}else{let B=[];for(let P=0;P<T.length;P+=1){let k=await this.connection.sendRawTransaction(T[P].serialize(),{skipPreflight:y});B.push(k)}return{txIds:B,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 f=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:o,recentBlockhash:i}=f,r=nt(f,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),a=F(F({},this.cluster==="devnet"?await so(this.connection):await ao(this.connection)),t),s=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let b of s)a[b]===void 0&&c.push(new _t(b));let u=await ro({connection:this.connection,address:c});for(let[b,w]of Object.entries(u))a[b]=w;let p=o?_t.default.toBase58():i!=null?i:await vt(this.connection,this.blockhashCommitment),g=new on({payerKey:this.feePayer,recentBlockhash:p,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 d=new rn(g);return d.sign(this.signers),{builder:this,transaction:d,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async b=>{var B;let{skipPreflight:w=!0,sendAndConfirm:A,notSendToRpc:T}=b||{};if(Bt([d]),(B=this.owner)!=null&&B.isKeyPair){let P=await this.connection.sendTransaction(d,{skipPreflight:w});return A&&await Sn(this.connection,P),{txId:P,signedTx:d}}if(this.signAllTransactions){let P=await this.signAllTransactions([d]);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(p=>p.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),r.forEach(async(u,p)=>{u.sign(a[p])}),{builder:this,transactions:r,signers:a,instructionTypes:s,buildProps:n,execute:async u=>{var y;let{sequentially:p,onTxUpdate:g,recentBlockHash:d,skipPreflight:f=!0}=u||{};if(d&&r.forEach(b=>b.message.recentBlockhash=d),Bt(r),(y=this.owner)!=null&&y.isKeyPair){if(p){let b=[];for(let w of r){let A=await this.connection.sendTransaction(w,{skipPreflight:f});await Sn(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:f}))),signedTxs:r}}if(this.signAllTransactions){let b=await this.signAllTransactions(r);if(p){let w=0,A=[],T=async()=>{if(!b[w])return;let B=await this.connection.sendTransaction(b[w],{skipPreflight:f});A.push({txId:B,status:"sent",signedTx:b[w]}),g==null||g([...A]),w++;let P=!1,k=null,S=null,I=K=>{k!==null&&clearInterval(k),S!==null&&this.connection.removeSignatureListener(S);let L=A.findIndex(U=>U.txId===B);if(L>-1){if(A[L].status==="error"||A[L].status==="success")return;A[L].status=K.err?"error":"success"}g==null||g([...A]),K.err||T()};this.loopMultiTxStatus&&(k=setInterval(async()=>{var K;if(P){clearInterval(k);return}try{let L=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:1});L&&(P=!0,clearInterval(k),I({err:((K=L.meta)==null?void 0:K.err)||null}),console.log("tx status from getTransaction:",B))}catch(L){P=!0,clearInterval(k),console.error("getTransaction timeout:",L,B)}},Kn)),S=this.connection.onSignature(B,K=>{if(P){this.connection.removeSignatureListener(S);return}P=!0,I(K)},"confirmed"),this.connection.getSignatureStatus(B)};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:f});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 p=e||{},{splitIns:t=[],computeBudgetConfig:n}=p,o=nt(p,["splitIns","computeBudgetConfig"]),i=n?Bn(n):{instructions:[],instructionTypes:[]},r=this.signers.reduce((d,f)=>q(F({},d),{[f.publicKey.toBase58()]:f}),{}),a=[],s=[],c=[],u=0;if(this.allInstructions.forEach(d=>{let f=[...c,d],y=n?[...i.instructions,...f]:f,w=[...new Set(f.map(A=>A.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(A=>new _t(A));if(d!==t[u]&&c.length<12&&(en({instructions:y,payer:this.feePayer,signers:w})||en({instructions:f,payer:this.feePayer,signers:w})))c.push(d);else{if(c.length===0)throw Error("item ins too big");u+=d===t[u]?1:0,en({instructions:n?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:w})?a.push(new nn().add(...i.instructions,...c)):a.push(new nn().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=[d]}}),c.length>0){let f=[...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);en({instructions:n?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:f.map(y=>y.publicKey)})?a.push(new nn().add(...i.instructions,...c)):a.push(new nn().add(...c)),s.push(f)}return a.forEach(d=>d.feePayer=this.feePayer),(g=this.owner)!=null&&g.signer&&s.forEach(d=>{d.some(f=>f.publicKey.equals(this.owner.publicKey))||d.push(this.owner.signer)}),{builder:this,transactions:a,signers:s,instructionTypes:this.instructionTypes,execute:async d=>{var B;let{sequentially:f,onTxUpdate:y,skipTxCount:b=0,recentBlockHash:w,skipPreflight:A=!0}=d||{},T=w!=null?w:await vt(this.connection,this.blockhashCommitment);if(a.forEach(async(P,k)=>{P.recentBlockhash=T,s[k].length&&P.sign(...s[k])}),Bt(a),(B=this.owner)!=null&&B.isKeyPair){if(f){let P=0,k=[];for(let S of a){if(++P,P<=b){k.push("tx skipped");continue}let I=await co(this.connection,S,this.signers.find(K=>K.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:A});k.push(I)}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(f){let S=0,I=[],K=async()=>{if(!k[S])return;S<b&&(I.push({txId:"",status:"success",signedTx:k[S]}),y==null||y([...I]),S++,K());let L=await this.connection.sendRawTransaction(k[S].serialize(),{skipPreflight:A});I.push({txId:L,status:"sent",signedTx:k[S]}),y==null||y([...I]),S++;let U=!1,V=null,v=null,_=E=>{V!==null&&clearInterval(V),v!==null&&this.connection.removeSignatureListener(v);let Z=I.findIndex(me=>me.txId===L);if(Z>-1){if(I[Z].status==="error"||I[Z].status==="success")return;I[Z].status=E.err?"error":"success"}y==null||y([...I]),E.err||K()};this.loopMultiTxStatus&&(V=setInterval(async()=>{var E;if(U){clearInterval(V);return}try{let Z=await this.connection.getTransaction(L,{commitment:"confirmed",maxSupportedTransactionVersion:1});Z&&(U=!0,clearInterval(V),_({err:((E=Z.meta)==null?void 0:E.err)||null}),console.log("tx status from getTransaction:",L))}catch(Z){U=!0,clearInterval(V),console.error("getTransaction timeout:",Z,L)}},Kn)),v=this.connection.onSignature(L,E=>{if(U){this.connection.removeSignatureListener(v);return}U=!0,_(E)},"confirmed"),this.connection.getSignatureStatus(L)};return await K(),{txIds:I.map(L=>L.txId),signedTxs:k}}else{let S=[];for(let I=0;I<k.length;I+=1){let K=await this.connection.sendRawTransaction(k[I].serialize(),{skipPreflight:A});S.push(K)}return{txIds:S,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuildV0(e){var B;let T=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:o={},lookupTableAddress:i=[],insCountLimit:r=12}=T,a=nt(T,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),s=F(F({},this.cluster==="devnet"?await so(this.connection):await ao(this.connection)),o),c=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let P of c)s[P]===void 0&&u.push(new _t(P));let p=await ro({connection:this.connection,address:u});for(let[P,k]of Object.entries(p))s[P]=k;let g=t?Bn(t):{instructions:[],instructionTypes:[]},d=await vt(this.connection,this.blockhashCommitment),f=this.signers.reduce((P,k)=>q(F({},P),{[k.publicKey.toBase58()]:k}),{}),y=[],b=[],w=[],A=0;if(this.allInstructions.forEach(P=>{let k=[...w,P],S=t?[...g.instructions,...k]:k;if(P!==n[A]&&w.length<r&&(tn({instructions:S,payer:this.feePayer,lookupTableAddressAccount:s})||tn({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 I={};for(let K of[...new Set(c)])s[K]!==void 0&&(I[K]=s[K]);if(t&&tn({instructions:[...g.instructions,...w],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let K=new on({payerKey:this.feePayer,recentBlockhash:d,instructions:[...g.instructions,...w]}).compileToV0Message(Object.values(s));y.push(new rn(K))}else{let K=new on({payerKey:this.feePayer,recentBlockhash:d,instructions:[...w]}).compileToV0Message(Object.values(s));y.push(new rn(K))}b.push(Array.from(new Set(w.map(K=>K.keys.filter(L=>L.isSigner).map(L=>L.pubkey.toString())).flat())).map(K=>f[K]).filter(K=>K!==void 0)),w=[P]}}),w.length>0){let k=[...new Set(w.map(S=>S.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat()).values()].map(S=>f[S]).filter(S=>S!==void 0);if(t&&tn({instructions:[...g.instructions,...w],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let S=new on({payerKey:this.feePayer,recentBlockhash:d,instructions:[...g.instructions,...w]}).compileToV0Message(Object.values(s));y.push(new rn(S))}else{let S=new on({payerKey:this.feePayer,recentBlockhash:d,instructions:[...w]}).compileToV0Message(Object.values(s));y.push(new rn(S))}b.push(k)}return(B=this.owner)!=null&&B.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:S,skipTxCount:I=0,recentBlockHash:K,skipPreflight:L=!0}=P||{};if(y.map(async(V,v)=>{b[v].length&&V.sign(b[v]),K&&(V.message.recentBlockhash=K)}),Bt(y),(U=this.owner)!=null&&U.isKeyPair){if(k){let V=0,v=[];for(let _ of y){if(++V,V<=I){console.log("skip tx: ",V),v.push("tx skipped");continue}let E=await this.connection.sendTransaction(_,{skipPreflight:L});await Sn(this.connection,E),v.push(E)}return{txIds:v,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(I,y.length)),v=[...y.slice(0,I),...V];if(k){let _=0,E=[],Z=async()=>{if(!v[_])return;if(_<I){E.push({txId:"",status:"success",signedTx:v[_]}),S==null||S([...E]),_++,Z();return}let me=await this.connection.sendTransaction(v[_],{skipPreflight:L});E.push({txId:me,status:"sent",signedTx:v[_]}),S==null||S([...E]),_++;let ue=!1,pe=null,Pt=null,ve=Ne=>{pe!==null&&clearInterval(pe),Pt!==null&&this.connection.removeSignatureListener(Pt);let Ie=E.findIndex(Yn=>Yn.txId===me);if(Ie>-1){if(E[Ie].status==="error"||E[Ie].status==="success")return;E[Ie].status=Ne.err?"error":"success"}S==null||S([...E]),Ne.err||Z()};this.loopMultiTxStatus&&(pe=setInterval(async()=>{var Ne;if(ue){clearInterval(pe);return}try{let Ie=await this.connection.getTransaction(me,{commitment:"confirmed",maxSupportedTransactionVersion:1});Ie&&(ue=!0,clearInterval(pe),ve({err:((Ne=Ie.meta)==null?void 0:Ne.err)||null}),console.log("tx status from getTransaction:",me))}catch(Ie){ue=!0,clearInterval(pe),console.error("getTransaction timeout:",Ie,me)}},Kn)),Pt=this.connection.onSignature(me,Ne=>{if(ue){this.connection.removeSignatureListener(Pt);return}ue=!0,ve(Ne)},"confirmed"),this.connection.getSignatureStatus(me)};return Z(),{txIds:[],signedTxs:v}}else{let _=[];for(let E=0;E<v.length;E+=1){let Z=await this.connection.sendTransaction(v[E],{skipPreflight:L});_.push(Z)}return{txIds:_,signedTxs:v}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}};var lo=(...m)=>m.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Ve=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ee(t)}createTxBuilder(e){return this.scope.checkOwner(),new xn({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(lo(e))}logInfo(...e){this.logger.info(lo(e))}logAndCreateError(...e){let t=lo(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Zm,SystemProgram as jm}from"@solana/web3.js";import td from"bn.js";import{createCloseAccountInstruction as rd,createInitializeAccountInstruction as ad,createTransferInstruction as sd,TOKEN_PROGRAM_ID as ud}from"@solana/spl-token";import{Keypair as _m,PublicKey as Vm}from"@solana/web3.js";import Wm from"bn.js";import{TOKEN_PROGRAM_ID as Gm}from"@solana/spl-token";import{PublicKey as ia}from"@solana/web3.js";import ai,{isBN as si}from"bn.js";import{bits as Yr,BitStructure as ql,blob as Hr,Blob as Ul,cstr as Gl,f32 as zl,f32be as Xl,f64 as Yl,f64be as Hl,greedy as Ql,Layout as Qr,ns64 as Zl,ns64be as $l,nu64 as jl,nu64be as Jl,offset as Zr,s16 as em,s16be as tm,s24 as nm,s24be as om,s32 as $r,s32be as im,s40 as rm,s40be as am,s48 as sm,s48be as um,s8 as cm,seq as jr,struct as lm,Structure as Jr,u16 as ea,u16be as mm,u24 as dm,u24be as pm,u32 as ta,u32be as fm,u40 as ym,u40be as bm,u48 as gm,u48be as Pm,u8 as na,UInt as oa,union as Am,Union as wm,unionLayoutDiscriminator as km,utf8 as Tm}from"@solana/buffer-layout";var Cn=Qr,ni=Jr;var mo=oa;var oi=na,Pe=ea;var Rn=ta;var Te=$r;var ii=jr;var $=Hr;var po=Yr,ri=Zr;var Kt=class extends Cn{constructor(t,n,o){super(t,o);this.blob=$(t),this.signed=n}decode(t,n=0){let o=new ai(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 ai(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,o)}},Ln=class extends Cn{constructor(t){super(8,t);this._lower=po(Rn(),!1),this._upper=po(Rn(),!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 F(F({},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(m){return new mo(1,m)}function ye(m){return new mo(4,m)}function l(m){return new Kt(8,!1,m)}function z(m){return new Kt(16,!1,m)}function ui(m){return new Kt(1,!0,m)}function Vt(m){return new Kt(8,!0,m)}function ci(m){return new Kt(16,!0,m)}var an=class extends Cn{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(m){return new an($(32),e=>new ia(e),e=>e.toBuffer(),m)}function be(m){return new an(oi(),ra,aa,m)}function ra(m){if(m===0)return!1;if(m===1)return!0;throw new Error("Invalid bool: "+m)}function aa(m){return m?1:0}function yo(m,e){let t=Rn("length"),n=O([t,D(m,ri(t,-t.span),"values")]);return new an(n,({values:o})=>o,o=>({values:o}),e)}var fo=class extends ni{decode(e,t){return super.decode(e,t)}};function O(m,e,t){return new fo(m,e,t)}function D(m,e,t){let n,o=typeof e=="number"?e:si(e)?e.toNumber():new Proxy(e,{get(i,r){if(!n){let a=Reflect.get(i,"count");n=si(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 ii(m,o,t)}var Et=O([h("mint"),h("owner"),l("amount"),ye("delegateOption"),h("delegate"),N("state"),ye("isNativeOption"),l("isNative"),l("delegatedAmount"),ye("closeAuthorityOption"),h("closeAuthority")]);import{PublicKey as zf,SystemProgram as Xf}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Hf}from"@solana/spl-token";import{PublicKey as ua}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ca}from"@solana/spl-token";function Q(m,e,t){return re([m.toBuffer(),(t!=null?t:ca).toBuffer(),e.toBuffer()],new ua("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as X}from"@solana/web3.js";var mi=new X("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),di=new X("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),pi=new X("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),bo=new X("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Ed=new X("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),la=new X("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),fi=new X("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),yi=new X("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Dd=new X("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),ma=new X("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),kt=new X("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),sn=new X("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Nn=new X("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),bi=new X("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Wd=new X("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),da=new X("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),go=new X("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),pa=new X("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),qd=new X("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),fa=new X("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),ya=new X("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),ba=new X("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Ud=new X("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Gd=new X("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),zd=new X("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Xd=new X("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Yd=new X("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Tt={OPEN_BOOK_PROGRAM:new X("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new X("Ray1111111111111111111111111111111111111111"),AMM_V4:new X("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new X("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new X("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new X("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new X("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new X("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new X("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new X("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new X("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new X("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:X.default,Router:new X("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new X("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new X("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new X("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new X("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new X("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new X("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new X("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new X("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new X("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new X("Ray1111111111111111111111111111111111111111")};import iy from"decimal.js";import{PublicKey as Po}from"@solana/web3.js";var ga=O([N("instruction")]),Pa=O([N("instruction")]),Aa=O([l("rewardState"),l("rewardOpenTime"),l("rewardEndTime"),l("rewardLastUpdateTime"),l("totalReward"),l("totalRewardEmissioned"),l("rewardClaimed"),l("rewardPerSecond"),z("accRewardPerShare"),h("rewardVault"),h("rewardMint"),h("rewardSender"),l("rewardType"),D(l(),15,"padding")]),wa=O([l("state"),l("nonce"),h("lpVault"),h("rewardVault"),h(),h(),l(),l(),l("totalReward"),z("perShareReward"),l("lastSlot"),l("perSlotReward")]),ka=O([l("state"),l("nonce"),h("lpVault"),h("rewardVaultA"),l("totalRewardA"),z("perShareRewardA"),l("perSlotRewardA"),N("option"),h("rewardVaultB"),$(7),l("totalRewardB"),z("perShareRewardB"),l("perSlotRewardB"),l("lastSlot"),h()]),Ta=O([l(),l("state"),l("nonce"),l("validRewardTokenNum"),z("rewardMultiplier"),l("rewardPeriodMax"),l("rewardPeriodMin"),l("rewardPeriodExtend"),h("lpMint"),h("lpVault"),D(Aa,5,"rewardInfos"),h("creator"),h(),D(l(),32,"padding")]),ha=new Proxy(wa,{get(m,e,t){return e==="decode"?(...n)=>{let o=m.decode(...n);return q(F({},o),{version:3,rewardInfos:[{rewardVault:o.rewardVault,totalReward:o.totalReward,perSlotReward:o.perSlotReward,perShareReward:o.perShareReward}]})}:Reflect.get(m,e,t)}}),Ia=new Proxy(ka,{get(m,e,t){return e==="decode"?(...n)=>{let o=m.decode(...n);return q(F({},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(m,e,t)}}),gi=new Proxy(Ta,{get(m,e,t){return e==="decode"?(...n)=>{let o=m.decode(...n);return q(F({},o),{version:6,rewardInfos:o.rewardInfos.map(i=>{var r;return q(F({},i),{rewardType:((r=Object.entries(un).find(a=>String(a[1])===i.rewardType.toString()))!=null?r:["Standard SPL"])[0]})})})}:Reflect.get(m,e,t)}}),Ba=O([l("isSet"),l("rewardPerSecond"),l("rewardOpenTime"),l("rewardEndTime"),l("rewardType")]),Sa=O([N("instruction"),l("nonce"),D(Ba,5,"rewardTimeInfo")]),Ka=O([N("instruction"),l("rewardReopenTime"),l("rewardEndTime"),l("rewardPerSecond")]),xa=O([N("instruction"),l("isSet"),l("rewardPerSecond"),l("rewardOpenTime"),l("rewardEndTime"),l("rewardType")]),ep=O([l("state"),h("id"),h("owner"),l("deposited"),D(l(),1,"rewardDebts")]),Pi=O([l("state"),h("id"),h("owner"),l("deposited"),D(z(),1,"rewardDebts"),l(""),l("voteLockedBalance"),D(l(),15)]),tp=O([l("state"),h("id"),h("owner"),l("deposited"),D(l(),2,"rewardDebts")]),Ca=O([l("state"),h("id"),h("owner"),l("deposited"),D(z(),2,"rewardDebts"),D(l(),17)]),Ra=O([l(),l("state"),h("id"),h("owner"),l("deposited"),D(z(),5,"rewardDebts"),D(l(),16)]),La=O([N("instruction"),l("amount")]),Oa=O([h("mint"),h("grantAuthority"),l("baselineVoteWeightScaledFactor"),l("maxExtraLockupVoteWeightScaledFactor"),l("lockupSaturationSecs"),ui("digitShift"),D(N(),7,"reserved1"),D(l(),7,"reserved2")]),Na=O([$(8),h("governanceProgramId"),h("realm"),h("realmGoverningTokenMint"),h("realmAuthority"),D(N(),32,"reserved1"),D(Oa,4,"votingMints"),Vt("timeOffset"),N("bump"),D(N(),7,"reserved2"),D(l(),11,"reserved3")]),Ma=O([Vt("startTime"),Vt("endTime"),N("kind"),D(N(),15,"reserved")]),Fa=O([D(Ma,1,"lockup"),l("amountDeposited_native"),l("amountInitiallyLockedNative"),be("isUsed"),be("allowClawback"),N("votingMintConfigIdx"),D(N(),29,"reserved")]),va=O([$(8),h("voterAuthority"),h("registrar"),D(Fa,32,"deposits"),N("voterBump"),N("voterWweightRecordBump"),D(N(),94,"reserved")]);import{NATIVE_MINT as lp}from"@solana/spl-token";var mp=ee("Raydium_farm_config"),_a=new Po("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Va=new Po("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var dp=new Po("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var un={"Standard SPL":0,"Option tokens":1},Ai={[mi.toString()]:3,[di.toString()]:4,[pi.toString()]:5,[bo.toString()]:6,[Tt.FARM_PROGRAM_ID_V3.toString()]:3,[Tt.FARM_PROGRAM_ID_V4.toString()]:4,[Tt.FARM_PROGRAM_ID_V5.toString()]:5,[Tt.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as af,SystemProgram as sf,SYSVAR_CLOCK_PUBKEY as uf,SYSVAR_RENT_PUBKEY as cf,TransactionInstruction as lf}from"@solana/web3.js";import df from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as ff,createAssociatedTokenAccountIdempotentInstruction as yf,TOKEN_PROGRAM_ID as bf}from"@solana/spl-token";import Fp from"bn.js";import{PublicKey as Sp}from"@solana/web3.js";import xp from"bn.js";var Hp=ee("Raydium.farm.util");var Kf=ee("Raydium_farm_instruction"),xf={voterStakeRegistryCreateVoter:Buffer.from([6,24,245,52,243,255,148,25]),voterStakeRegistryCreateDepositEntry:Buffer.from([185,131,167,186,159,125,19,67]),voterStakeRegistryDeposit:Buffer.from([242,35,198,137,82,225,242,182]),voterStakeRegistryWithdraw:Buffer.from([183,18,70,156,148,109,161,34]),voterStakeRegistryUpdateVoterWeightRecord:Buffer.from([45,185,3,36,109,190,115,169])};import yy from"bn.js";import{PublicKey as Iw}from"@solana/web3.js";import{AccountLayout as Kw,MintLayout as xw,NATIVE_MINT as Cw,TOKEN_PROGRAM_ID as Lw}from"@solana/spl-token";import ot from"bn.js";var cn=1e4;function Ge(m,e,t,n){if(e===void 0)return{amount:m,fee:void 0,expirationTime:void 0};let o=q(F({},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 ot(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===cn){let s=new ot(i.maximumFee.toString());return{amount:m.add(s),fee:s,expirationTime:a}}else{let s=Mn(m.mul(new ot(cn)),new ot(cn-i.transferFeeBasisPoints)),c=new ot(i.maximumFee.toString()),u=s.sub(m).gt(c)?m.add(c):s,p=Mn(u.mul(new ot(i.transferFeeBasisPoints)),new ot(cn)),g=p.gt(r)?r:p;return{amount:u,fee:g,expirationTime:a}}else{let s=Mn(m.mul(new ot(i.transferFeeBasisPoints)),new ot(cn)),c=s.gt(r)?r:s;return{amount:m,fee:c,expirationTime:a}}}function ln(m,e){return m===void 0?e:e===void 0?m:Math.min(m,e)}function Mn(m,e){let{div:t,mod:n}=m.divmod(e);return n.gt(new ot(0))?t.add(new ot(1)):t}import{ASSOCIATED_TOKEN_PROGRAM_ID as No,TOKEN_2022_PROGRAM_ID as we,TOKEN_PROGRAM_ID as ae}from"@solana/spl-token";import{Keypair as Un,PublicKey as M,SystemProgram as mt,TransactionInstruction as ge}from"@solana/web3.js";import Gn from"bn.js";import ne from"bn.js";var se=new ne(1).shln(64),Dt=64,wo=new ne(1).shln(128),dt=new ne(1).shln(64).subn(1),Fn=new ne(1).shln(128).subn(1),Qe=-443636,Ze=443636,$e=new ne("4295048016"),je=new ne("79226673521066979257578248091"),ki=new ne("59543866431248"),Ti=new ne("184467440737095516"),hi=new ne("15793534762490258745"),Ii=16,vn=512,We=60,Ky=new ne("18446743708227953217"),Bi=[{bit:0,factor:new ne("fffcb933bd6fb800",16)},{bit:1,factor:new ne("fff97272373d4000",16)},{bit:2,factor:new ne("fff2e50f5f657000",16)},{bit:3,factor:new ne("ffe5caca7e10f000",16)},{bit:4,factor:new ne("ffcb9843d60f7000",16)},{bit:5,factor:new ne("ff973b41fa98e800",16)},{bit:6,factor:new ne("ff2ea16466c9b000",16)},{bit:7,factor:new ne("fe5dee046a9a3800",16)},{bit:8,factor:new ne("fcbe86c7900bb000",16)},{bit:9,factor:new ne("f987a7253ac65800",16)},{bit:10,factor:new ne("f3392b0822bb6000",16)},{bit:11,factor:new ne("e7159475a2caf000",16)},{bit:12,factor:new ne("d097f3bdfd2f2000",16)},{bit:13,factor:new ne("a9f746462d9f8000",16)},{bit:14,factor:new ne("70d869a156f31c00",16)},{bit:15,factor:new ne("31be135f97ed3200",16)},{bit:16,factor:new ne("9aa508b5b85a500",16)},{bit:17,factor:new ne("5d6af8dedc582c",16)},{bit:18,factor:new ne("2216e584f5fa",16)}],pt=1e6,xy=1e5,ko=(n=>(n[n.FromInput=0]="FromInput",n[n.TokenOnlyA=1]="TokenOnlyA",n[n.TokenOnlyB=2]="TokenOnlyB",n))(ko||{}),Cy=1e3,_n=1e5,mn=1e4,Si=1e4,Ki=1e5,Ry=60,dn=3,xi=100,Ly=15,Ci=10,Ri=100,Wt=14,Xa=(r=>(r[r.OpenPositionOrIncreaseLiquidity=0]="OpenPositionOrIncreaseLiquidity",r[r.DecreaseLiquidity=1]="DecreaseLiquidity",r[r.CollectFee=2]="CollectFee",r[r.CollectReward=3]="CollectReward",r[r.Swap=4]="Swap",r[r.LimitOrder=5]="LimitOrder",r))(Xa||{}),Ya=(t=>(t[t.Enable=0]="Enable",t[t.Disable=1]="Disable",t))(Ya||{}),Ha=(o=>(o[o.Uninitialized=0]="Uninitialized",o[o.Initialized=1]="Initialized",o[o.Opening=2]="Opening",o[o.Ended=3]="Ended",o))(Ha||{}),Qa=(i=>(i[i.TradeFeeRate=0]="TradeFeeRate",i[i.ProtocolFeeRate=1]="ProtocolFeeRate",i[i.FundFeeRate=2]="FundFeeRate",i[i.NewOwner=3]="NewOwner",i[i.NewFundOwner=4]="NewFundOwner",i))(Qa||{}),Za=(o=>(o[o.UpdateOperationOwner=0]="UpdateOperationOwner",o[o.RemoveOperationOwner=1]="RemoveOperationOwner",o[o.UpdateWhitelistMint=2]="UpdateWhitelistMint",o[o.RemoveWhitelistMint=3]="RemoveWhitelistMint",o))(Za||{}),W=new ne(0),Je=new ne(1),Oy=new ne(-1),Vn={tvl:0,volumeQuote:0,mintAmountA:0,mintAmountB:0,rewardDefaultInfos:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,day:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},week:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},month:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},pooltype:[]};function Ny(m){switch(m){case 0:return"0 (FromInput - fee from input token)";case 1:return"1 (Token0Only - fee from token0)";case 2:return"2 (Token1Only - fee from token1)";default:return`${m} (unknown)`}}var My=2,Fy=new ne("18446744073700000000");var To=O([$(8),N("bump"),Pe("index"),h("owner"),ye("protocolFeeRate"),ye("tradeFeeRate"),Pe("tickSpacing"),ye("fundFeeRate"),D(ye(),1),h("fundOwner"),D(l(),3)]),$a=O([ye("blockTimestamp"),Vt("tickCumulative"),D(l(),4)]),Li=O([$(8),be("initialized"),l("recentEpoch"),Pe("observationIndex"),h("poolId"),D($a,xi,"observations"),D(l(),4)]),ja=O([Pe("filterPeriod"),Pe("decayPeriod"),Pe("reductionFactor"),ye("dynamicFeeControl"),ye("maxVolatilityAccumulator"),Te("tickSpacingIndexReference"),ye("volatilityReference"),ye("volatilityAccumulator"),l("lastUpdateTimestamp"),D(N(),46)]),Ja=O([N("state"),l("openTime"),l("endTime"),l("lastUpdateTime"),z("emissionsPerSecondX64"),l("totalEmissioned"),l("claimed"),h("mint"),h("vault"),h("creator"),z("growthGlobalX64")]),pn=O([$(8),N("bump"),h("configId"),h("creator"),h("mintA"),h("mintB"),h("vaultA"),h("vaultB"),h("observationId"),N("mintDecimalsA"),N("mintDecimalsB"),Pe("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),Te("tickCurrent"),ye(),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),l("protocolFeesTokenA"),l("protocolFeesTokenB"),D(z(),4),N("status"),N("feeOn"),$(6),D(Ja,dn,"rewardInfos"),$(8*16,"tickArrayBitmap"),D(l(),4),l("fundFeesTokenA"),l("fundFeesTokenB"),l("startTime"),l("recentEpoch"),ja.replicate("dynamicFeeInfo"),D(l(),46)]),es=O([z("growthInsideLastX64"),l("rewardAmountOwed")]),En=O([$(8),N("bump"),h("nftMint"),h("poolId"),Te("tickLower"),Te("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),l("tokenFeesOwedA"),l("tokenFeesOwedB"),D(es,dn,"rewardInfos"),l("recentEpoch"),D(l(),7)]),Ey=O([$(8),N("bump"),h("poolId"),Te("tickLower"),Te("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),l("tokenFeesOwedA"),l("tokenFeesOwedB"),D(z(),dn,"rewardGrowthInside"),l("recentEpoch"),D(l(),7)]),ts=O([Te("tick"),ci("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),D(z(),dn,"rewardGrowthsOutsideX64"),l("orderPhase"),l("ordersAmount"),l("partFilledOrdersRemaining"),z("unfilledRatioX64"),D(ye(),3)]),qt=O([$(8),h("poolId"),Te("startTickIndex"),D(ts,We,"ticks"),N("initializedTickCount"),l("recentEpoch"),D(N(),107)]),Oi=O([$(8),N("bump"),D(h(),Ci,"operationOwners"),D(h(),Ri,"whitelistMints")]),xt=O([$(8),h("poolId"),h("owner"),Te("tick"),be("zeroForOne"),l("orderPhase"),l("totalAmount"),l("filledAmount"),l("settleBase"),l("settleOutput"),l("openTime"),z("unfilledRatioX64"),D(l(),4)]),Dn=O([$(8),h("poolId"),$(8*8*Wt,"positiveTickArrayBitmap"),$(8*8*Wt,"negativeTickArrayBitmap")]),Dy=O([$(8),Pe("index"),Pe("filterPeriod"),Pe("decayPeriod"),Pe("reductionFactor"),ye("dynamicFeeControl"),ye("maxVolatilityAccumulator"),D(l(),8)]),Ni=O([$(8),h("wallet"),N("nonceIndex"),l("orderNonce"),D(l(),4)]),Wy=O([l(),N("bump"),h("owner"),h("poolId"),h("positionId"),h("nftAccount"),D(l(),8)]),Mi=O([$(8),N("bump"),h("lockOwner"),h("poolId"),h("positionId"),h("nftAccount"),h("lockNftMint"),l("recentEpoch"),D(l(),8)]);import ns from"bn.js";function ho(m){let e=Buffer.alloc(2);return e.writeUInt16LE(m),e}function Io(m){let e=Buffer.alloc(2);return e.writeUInt16BE(m),e}function Bo(m){let e=Buffer.alloc(4);return e.writeInt32LE(m),e}function Fi(m){let e=Buffer.alloc(4);return e.writeInt32BE(m),e}function vi(m){return(typeof m=="number"||typeof m=="bigint")&&(m=new ns(m.toString())),m.toArrayLike(Buffer,"be",8)}function _i(m){let e=new ArrayBuffer(1);return new DataView(e).setUint8(0,m),new Uint8Array(e)}var os=Buffer.from("amm_config","utf8"),So=Buffer.from("pool","utf8"),Vi=Buffer.from("pool_vault","utf8"),is=Buffer.from("pool_reward_vault","utf8"),Ei=Buffer.from("position","utf8"),rs=Buffer.from("tick_array","utf8"),as=Buffer.from("operation","utf8"),ss=Buffer.from("pool_tick_array_bitmap_extension","utf8"),us=Buffer.from("observation","utf8"),cs=Buffer.from("support_mint","utf8"),ls=Buffer.from("dynamic_fee_config","utf8"),ms=Buffer.from("permission","utf8");function Qy(m,e){return re([os,Io(e)],m)}function Di(m,e,t,n){return re([So,e.toBuffer(),t.toBuffer(),n.toBuffer()],m)}function Wi(m,e){return re([ms,e.toBuffer()],m)}function qi(m,e,t,n,o){return re([So,e.toBuffer(),t.toBuffer(),n.toBuffer(),ho(o)],m)}function ze(m,e,t){return re([Vi,e.toBuffer(),t.toBuffer()],m)}function Ui(m,e,t){return re([is,e.toBuffer(),t.toBuffer()],m)}function oe(m,e,t){return re([rs,e.toBuffer(),Fi(t)],m)}function it(m,e,t,n){return re([Ei,e.toBuffer(),Bo(t),Bo(n)],m)}function Xe(m,e){return re([Ei,e.toBuffer()],m)}function Ct(m){return re([Buffer.from("metadata","utf8"),wt.toBuffer(),m.toBuffer()],wt)}function fn(m){return re([as],m)}function de(m,e){return re([ss,e.toBuffer()],m)}function Ko(m,e){return re([us,e.toBuffer()],m)}function Rt(m,e){return re([cs,e.toBuffer()],m)}function Gi(m,e,t,n){return re([e.toBuffer(),t.toBuffer(),vi(n)],m)}function Zy(m,e){return re([ls,Io(e)],m)}function zi(m,e,t){return re([e.toBuffer(),_i(t)],m)}var Xi=Buffer.from("locked_position","utf8");function xo(m,e){return re([Xi,e.toBuffer()],m)}function Ut(m,e){return re([Xi,e.toBuffer()],m)}import{sha256 as fs}from"js-sha256";import rt from"bn.js";import Co from"decimal.js";function Ro(m){return new rt(1).shln(m).subn(1)}function tb(m,e,t){let n=m.add(e),o=Ro(t);if(n.gt(o))throw new Error(`Addition overflow: result exceeds ${t} bits`);return n}function nb(m,e){if(m.lt(e))throw new Error("Subtraction underflow");return m.sub(e)}function ob(m,e,t){let n=m.mul(e),o=Ro(t);if(n.gt(o))throw new Error(`Multiplication overflow: result exceeds ${t} bits`);return n}function ib(m,e){let t=m.mul(e),n=t.and(Ro(128)),o=t.shrn(128);return[n,o]}function ce(m,e,t){if(t.isZero())throw new Error("Division by zero");return m.mul(e).div(t)}function le(m,e,t){if(t.isZero())throw new Error("Division by zero");let n=m.mul(e),o=n.div(t);return n.mod(t).isZero()?o:o.addn(1)}function rb(m,e,t,n){return n?le(m,e,t):ce(m,e,t)}function Wn(m,e){return m.div(e).add(m.mod(e).isZero()?W:Je)}function ab(m,e){let t=m.add(e);return t.gt(Fn)?Fn:t}function sb(m,e){return m.gt(e)?m.sub(e):new rt(0)}function ub(m,e){let t=m.mul(e);if(t.gt(Fn))throw new Error("U128 multiplication overflow");return t}var cb=new rt(1).shln(256).subn(1);function lb(m,e,t){if(t.isZero())throw new Error("Division by zero");return m.mul(e).div(t)}function mb(m,e,t){if(t.isZero())throw new Error("Division by zero");let n=m.mul(e),o=n.div(t);return n.mod(t).isZero()?o:o.addn(1)}function Yi(m){return m.isZero()?-1:m.bitLength()-1}function db(m){if(m.isZero())return-1;let e=0,t=m.clone();for(;t.and(new rt(1)).isZero();)t=t.shrn(1),e++;return e}function pb(m,e){return m.testn(e)}function fb(m,e){return m.or(new rt(1).shln(e))}function yb(m,e){return m.and(new rt(1).shln(e).notn(256))}function bb(m,e){return m.xor(new rt(1).shln(e))}function gb(m){let e=new rt(1).shln(127);return m.and(e).isZero()?m:m.sub(new rt(1).shln(128))}function Pb(m){return m.isNeg()?m.add(new rt(1).shln(128)):m}function Ab(m){return m.isNeg()?m.neg():m}function Hi(m,e){return new Co(m.toString()).div(Co.pow(2,64)).toDecimalPlaces(e)}function Gt(m){return new rt(m.mul(Co.pow(2,64)).floor().toFixed())}function Me(m,e){return m.add(wo).sub(e).mod(wo)}import ds from"bn.js";import Ke from"bn.js";import zt from"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 p=o.tick/(t*We)-n;o.valueType==="gte"?a=Math.max(0,Math.ceil(p)):s=Math.min(r-1,Math.floor(p))}if(a>s)return i;let c=Math.floor(a/8),u=Math.floor(s/8);for(let p=c;p<=u;p++){if(!e[p])continue;let g=p===c?a%8:0,d=p===u?s%8:7;for(let f=g;f<=d;f++)e[p]&1<<f&&i.push((p*8+f+n)*t*We)}return i}static findPoolBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let o=Math.floor(n.tick/We/t);if(n.valueType==="lte"&&o<-512)return[];if(n.valueType==="gte"&&o>512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:-vn,checkInfo:n})}static findPositiveTickArrayBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let o=Math.floor(n.tick/We/t);if(n.valueType==="lte"&&o<512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:vn,checkInfo:n})}static findNegativeTickArrayBitmap({bitmap:e,tickSpacing:t,count:n,checkInfo:o}){let i=[];if(o){let s=Math.floor(o.tick/We/t);if(o.valueType==="gte"&&s>=-512)return i}let r=(o==null?void 0:o.valueType)==="lte"?Math.floor(o.tick/(We*t))+7680:1/0,a=(o==null?void 0:o.valueType)==="gte"?Math.ceil(o.tick/(We*t))+7680:0;e:for(let s=0;s<Wt;s++){let c=Wt-1-s;for(let u=0;u<512;u++){let p=s*512+u;if(p>r)break e;if(p<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 d=(s*512+u-7680)*We*t;if(i.push(d),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=>oe(e.programId,e.poolId,t).publicKey)}static maxTickInTickarrayBitmap(e){return e*We*vn}},H=class{static firstinitializedTick({data:e,zeroForOne:t}){if(t){for(let n=e.ticks.length-1;n>=0;n--)if(G.isInitialized({data:e.ticks[n]}))return e.ticks[n]}else for(let n=0;n<e.ticks.length;n++)if(G.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(G.isInitialized({data:e.ticks[a]}))return e.ticks[a]}else for(let a=r+1;a<We;a++)if(G.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 We*e}static getMinTick(e){return Math.ceil(Qe/e)*e}static getMaxTick(e){return Math.floor(Ze/e)*e}},G=class{static isInitialized({data:e}){return this.hasLiquidity({data:e})||this.hasLimitOrders({data:e})}static hasLimitOrders({data:e}){return!e.ordersAmount.isZero()||!e.partFilledOrdersRemaining.isZero()}static hasLiquidity({data:e}){return!e.liquidityGross.isZero()}static isValidTick(e){return e>=Qe&&e<=Ze}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${Qe}, ${Ze}]`)}static getSqrtPriceAtTick(e){this.checkTick(e);let t=Math.abs(e),n=se.clone();for(let{bit:o,factor:i}of Bi)(t&1<<o)!==0&&(n=ce(n,i,se));return e>0&&(n=ce(se,se,n)),n}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:n}){if(n){let o=G.getPriceAtTick(t,!1);return ce(e,o,se)}else{let o=G.getPriceAtTick(t,!0);return ce(e,se,o)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:n}){if(n){let o=G.getPriceAtTick(t,!0);return le(e,o,se)}else{let o=G.getPriceAtTick(t,!1);return le(e,se,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:W,amountOut:W,ammFeeAmount:W},s=this.limitOrderUnfilledAmount({tick:e});if(t.isZero()||s.isZero())return a;if(o)r?(a.ammFeeAmount=le(t,new Ke(i),et),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=le(a.amountIn,new Ke(i),et.sub(new Ke(i)))));else{let p=Ke.min(t,s);r?a.amountOut=p:a.amountOut=Ke.min(le(p,et,et.sub(new Ke(i))),s),a.amountIn=this.getLimitOrderInput({amountOut:a.amountOut,tick:e.tick,zeroForOne:!n}),r&&(a.ammFeeAmount=le(a.amountIn,new Ke(i),et.sub(new Ke(i))))}let c=W;e.partFilledOrdersRemaining.gt(W)&&(c=Ke.min(e.partFilledOrdersRemaining,a.amountOut),c.gt(W)&&(e.unfilledRatioX64=ce(e.unfilledRatioX64,e.partFilledOrdersRemaining.sub(c),e.partFilledOrdersRemaining)),e.partFilledOrdersRemaining=e.partFilledOrdersRemaining.sub(c));let u=a.amountOut.sub(c);if(u.gt(W)){if(!e.partFilledOrdersRemaining.isZero())throw Error("!tick.partFilledOrdersRemaining.isZero()");if(e.ordersAmount.lt(u))throw Error("InvalidLimitOrderAmount");e.orderPhase=e.orderPhase.add(Je),e.unfilledRatioX64=ce(se,e.ordersAmount.sub(u),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(u),e.ordersAmount=W}return r||(a.ammFeeAmount=le(a.amountOut,new Ke(i),et),a.amountOut=a.amountOut.sub(a.ammFeeAmount)),a}static getPriceAtTick(e,t){let n=this.getSqrtPriceAtTick(e);return t?n.mul(n).add(se.subn(1)).div(se):n.mul(n).div(se)}static getTickAtSqrtPrice(e){if(!(e.gte($e)&&e.lte(je)))throw Error("SqrtPriceX64");let t=Yi(e),n=t-64,o;n>=0?o=new Ke(n).shln(32):o=new Ke(-n).shln(32).neg();let i;t>=64?i=e.shrn(t-63):i=e.shln(63-t);let r=new Ke(0),a=new Ke(1).shln(63);for(let b=0;b<Ii&&!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(ki),p=u.sub(Ti),g=u.add(hi),d=this.signedShrn64(p),f=this.signedShrn64(g);return d===f?d:G.getSqrtPriceAtTick(f).lte(e)?f:d}static signedShrn64(e){if(e.isNeg()){let t=new Ke(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 Ke(10).pow(new Ke(r)),s=o.mul(a),c=new Ke(1).shln(128),p=s.div(c).toString();for(;p.length<=r;)p="0"+p;let g=p.slice(0,-r),d=p.slice(-r),f=g+"."+d;return new zt(f).mul(new zt(10).pow(i))}static tickToPrice(e,t,n){let o=G.getSqrtPriceAtTick(e);return this.sqrtPriceX64ToPrice(o,t,n)}static priceToTick(e,t,n){let i=e.div(Math.pow(10,t-n)).log().div(new zt(1.0001).log()).floor();return Math.max(Qe,Math.min(Ze,i.toNumber()))}static priceToSqrtPriceX64(e,t,n){let r=e.div(Math.pow(10,t-n)).sqrt().mul(new zt(2).pow(64));return new Ke(r.toFixed(0))}static toTickIndex(e,t){return e>=0?e-e%t:e-e%t-(e%t!==0?t:0)}static getPriceAndTick({price:e,mintADecimals:t,mintBDecimals:n,zeroForOne:o,tickSpacing:i}){let r=e.clamp(1/10**Math.max(t,n),Number.MAX_SAFE_INTEGER);o||(r=new zt(1).div(r));let a=G.toTickIndex(G.priceToTick(r,t,n),i),s=G.tickToPrice(a,t,n);return{price:o?s:new zt(1).div(s),tick:a}}};async function Qi(m,e,t,n,o,i,r=!0){let a=[],s=de(m,t).publicKey,c=await e.getAccountInfo(s),u=ft.findTickArrayAddress({programId:m,poolId:t,poolBitmap:i,tickArrayBitmap:Dn.decode(c.data),tickSpacing:o,findInfo:{type:r?"zeroForOne":"oneForZero",tickArrayCurrent:n}});return(await _e(e,u)).forEach((g,d)=>{g&&a.push({address:u[d],value:qt.decode(g.data)})}),a}var ht=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 W;if(e.orderPhase.eq(t.orderPhase))return W;if(e.orderPhase.add(Je).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 W;let s=r?a:a.sub(Je);return G.getLimitOrderOutput({amountIn:s,tick:t.tick,zeroForOne:e.zeroForOne}).sub(e.settleOutput)}else{if(e.orderPhase.add(new ds(2)).lte(t.orderPhase))return G.getLimitOrderOutput({amountIn:e.settleBase,tick:t.tick,zeroForOne:e.zeroForOne}).sub(e.settleOutput);throw Error("invalid order phase")}}};import qn from"bn.js";import Zi from"decimal.js";var Ae=class{static getDeltaAmountAUnsigned(e,t,n,o){e.gt(t)&&([e,t]=[t,e]);let i=n.shln(Dt),r=t.sub(e);if(!e.gt(W))throw Error("!sqrtPriceX64A.gt(BN_ZERO)");let a=o?Wn(le(i,r,t),e):ce(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?le(n,t.sub(e),se):ce(n,t.sub(e),se);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 W;e.gt(t)&&([e,t]=[t,e]);let o=ce(e,t,se),i=t.sub(e);return ce(n,o,i)}static getLiquidityFromAmountB(e,t,n){if(n.isZero())return W;e.gt(t)&&([e,t]=[t,e]);let o=t.sub(e);return ce(n,se,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=W,a=W;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,p=new qn(new Zi(s.toString()).mul(u).toFixed(0)),g=new qn(new Zi(c.toString()).mul(u).toFixed(0));return{amountSlippageA:p,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)?W:this.getLiquidityFromAmountA(qn.max(e,t),n,o.amount);else if(o.type==="amountB")i=e.lte(t)?W:this.getLiquidityFromAmountB(t,qn.min(e,n),o.amount);else throw Error("amount info type check error");return F({liquidity:i},this.getAmountsForLiquidity(e,t,n,o.amount,!0))}};var Wb=({baseIn:m,price:e,mintADecimal:t,mintBDecimal:n,tickSpacing:o})=>{let i=G.priceToTick(e,t,n),r=G.toTickIndex(i,o),a=G.tickToPrice(r,t,n);return{tick:r,price:a}};import{PublicKey as Ee}from"@solana/web3.js";import Re from"bn.js";import{TOKEN_2022_PROGRAM_ID as $i,TOKEN_PROGRAM_ID as ps}from"@solana/spl-token";import te from"decimal.js";import Yt from"bn.js";import he from"bn.js";var yn=class{static getNextSqrtPriceFromAmountARoundingUp(e,t,n,o){if(n.isZero())return e;let i=t.shln(Dt);if(o){let r=n.mul(e),a=i.add(r);if(a.gte(i))return le(i,e,a);let s=ce(i,Je,e);return le(i,Je,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 le(i,e,a)}}static getNextSqrtPriceFromAmountBRoundingDown(e,t,n,o){if(n.isZero())return e;if(o){let i=n.shln(Dt).div(t);return e.add(i)}else{let i=Wn(n.shln(Dt),t);return e.sub(i)}}static getNextSqrtPriceFromInput(e,t,n,o){if(!e.gt(W))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(W))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(W))throw Error("sqrtPriceX64.gt(BN_ZERO)");if(!t.gt(W))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:W,sqrtPriceX64:e.sqrtPriceX64,tick:e.tickCurrent,feeGrowthGlobalX64:n?e.feeGrowthGlobalX64A:e.feeGrowthGlobalX64B,lpFee:W,protocolFee:W,fundFee:W,liquidity:e.liquidity,sqrtPriceNextX64:W,tickNext:0,baseFeeRate:o,tickSpacing:e.tickSpacing,tickSpacingIndex:0,dynamicFeeInfo:Xt.getDynamicFeeInfo({poolInfo:e})};return r.dynamicFeeInfo&&(r.tickSpacingIndex=gn.tickSpacingIndexFromTick(r.tick,r.tickSpacing),Xt.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<Qe?e.tickNext=Qe:e.tickNext>Ze&&(e.tickNext=Ze),e.sqrtPriceNextX64=G.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||Xt.updateVolatilityAccumulator({state:e.dynamicFeeInfo,tickSpacingIndex:e.tickSpacingIndex})}static computeDynamicFeeRate({data:e,tickSpacing:t}){let n=e.volatilityAccumulator*t,o=n*n,i=Ki*mn*mn,r=le(new he(e.dynamicFeeControl),new he(o),new he(i)).toNumber();return r>_n?_n: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(_n,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(Qe,Math.min(Ze,i)),a=G.getSqrtPriceAtTick(r);return n?{isSkipped:!1,boundedPrice:he.max(t,a)}:{isSkipped:!1,boundedPrice:he.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=gn.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(W)){let r=t.mul(n).div(new he(et));e.protocolFee=e.protocolFee.add(r),i=i.sub(r)}if(o.gt(W)){let r=t.mul(o).div(new he(et));e.fundFee=e.fundFee.add(r),i=i.sub(r)}if(e.liquidity.gt(W)){let r=ce(i,se,e.liquidity);e.feeGrowthGlobalX64=e.feeGrowthGlobalX64.add(r),e.lpFee=e.lpFee.add(i)}}},bn=class{static newSwapComputationResult({sqrtPriceNextX64:e}){return{sqrtPriceNextX64:e!=null?e:W,amountIn:W,amountOut:W,feeAmount:W}}static calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:o,isBaseInput:i}){if(i)try{return o?Ae.getDeltaAmountAUnsigned(t,e,n,!0):Ae.getDeltaAmountBUnsigned(e,t,n,!0)}catch(r){if(r.message==="MaxTokenOverflow")return null;throw r}else try{return o?Ae.getDeltaAmountBUnsigned(t,e,n,!1):Ae.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 p=s?ce(o,new he(pt-i),new he(pt)):o,g=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:a,isBaseInput:r});g!==null&&(c.amountIn=g),c.sqrtPriceNextX64=g!==null&&p.gte(c.amountIn)?t:yn.getNextSqrtPriceFromInput(e,n,p,a)}else{let p=s?o:le(o,new he(pt),new he(pt-i)),g=this.calculateAmountInRange({sqrtPriceCurrentX64:e,sqrtPriceTargetX64:t,liquidity:n,zeroForOne:a,isBaseInput:r});g!==null&&(c.amountOut=g),c.sqrtPriceNextX64=g!==null&&p.gte(c.amountOut)?t:yn.getNextSqrtPriceFromOutput(e,n,p,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=Ae.getDeltaAmountAUnsigned(c.sqrtPriceNextX64,e,n,!0)),u&&!r||(c.amountOut=Ae.getDeltaAmountBUnsigned(c.sqrtPriceNextX64,e,n,!1))):(u&&r||(c.amountIn=Ae.getDeltaAmountBUnsigned(e,c.sqrtPriceNextX64,n,!0)),u&&!r||(c.amountOut=Ae.getDeltaAmountAUnsigned(e,c.sqrtPriceNextX64,n,!1))),r)s?c.sqrtPriceNextX64.eq(t)?c.feeAmount=le(c.amountIn,new he(i),new he(pt-i)):c.feeAmount=o.sub(c.amountIn):(c.feeAmount=le(c.amountOut,new he(i),new he(pt)),c.amountOut=c.amountOut.sub(c.feeAmount),u||(c.amountIn=o));else if(s)c.amountOut=he.min(c.amountOut,o),c.feeAmount=le(c.amountIn,new he(i),new he(pt-i));else{c.feeAmount=le(c.amountOut,new he(i),new he(pt));let p=c.amountOut.sub(c.feeAmount);p.gt(o)?(c.feeAmount=c.amountOut.sub(o),c.amountOut=o):c.amountOut=p}return c}};function Lo({programId:m,poolId:e,poolInfo:t,tickArrays:n,configInfo:o,tickarrayBitmapExtension:i,amountSpecified:r,sqrtPriceLimitX64:a,zeroForOne:s,isBaseInput:c,blockTimestamp:u,includeExtraTickArrays:p}){a.isZero()&&(a=s?new Yt($e).addn(1):new Yt(je).subn(1));let g=0;if(n.length===0)return{allTrade:!1,amountSpecifiedRemaining:r,amountCalculated:W,feeAmount:W,sqrtPriceX64:t.sqrtPriceX64,liquidity:t.liquidity,tickCurrent:t.tickCurrent,accounts:[]};let d=p?ft.findTickArrayAddress({programId:m,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()):[],f=H.getTickArrayStartIndex(t.tickCurrent,t.tickSpacing),{firstItckArrayContainsPoolTick:y,firstValidTickArrayStartIndex:b}={firstItckArrayContainsPoolTick:n[g].value.startTickIndex===f,firstValidTickArrayStartIndex:n[g].value.startTickIndex},w=y,A=b,T=n[g],B=qe.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 K=H.nextInitalizedTick({data:T.value,tickSpacing:P.tickSpacing,zeroForOne:s,currentTickIndex:P.tick});if(K!==void 0)return K;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(K=>K.address)};let S=at.getTargetPriceBasedOnNextTick({data:P,tickNext:k.tick,zeroForOne:s,sqrtPriceLimitX64:a}),I=P.liquidity;do{at.updateVolatilityAccumulator({state:P});let K=at.getTotalFeeRate({data:P}),{isSkipped:L,boundedPrice:U}=at.getSpacingBoundedPrice({data:P,targetPrice:S,zeroForOne:s}),V=!P.sqrtPriceX64.eq(U),v;V?(v=bn.computeSwap(P.sqrtPriceX64,U,P.liquidity,P.amountSpecifiedRemaining,K,c,s,B),at.applySwapAmounts({state:P,amountIn:v.amountIn,amountOut:v.amountOut,feeAmount:v.feeAmount,isBaseInput:c,isFeeOnInput:B,protocolFeeRate:new Yt(o.protocolFeeRate),fundFeeRate:new Yt(o.fundFeeRate)})):v=bn.newSwapComputationResult({sqrtPriceNextX64:U});let _=G.limitOrderUnfilledAmount({tick:k});if(P.sqrtPriceNextX64.eq(v.sqrtPriceNextX64)){let E=G.matchLimitOrder({tick:k,swapAmount:P.amountSpecifiedRemaining,swapDirectionZeroForOne:s,isBaseInput:c,feeRate:K,isFeeOnInput:B});if(E.amountIn.gt(W)&&at.applySwapAmounts({state:P,amountIn:E.amountIn,amountOut:E.amountOut,feeAmount:E.ammFeeAmount,isBaseInput:c,isFeeOnInput:B,protocolFeeRate:new Yt(o.protocolFeeRate),fundFeeRate:new Yt(o.fundFeeRate)}),G.hasLiquidity({data:k})&&!G.hasLimitOrders({data:k})){let Z=s?k.liquidityNet.neg():k.liquidityNet;I=Ae.addDelta(P.liquidity,Z)}P.tick=s&&!G.hasLimitOrders({data:k})||!s&&G.hasLimitOrders({data:k})?P.tickNext-1:P.tickNext}else P.sqrtPriceX64.eq(v.sqrtPriceNextX64)||(P.tick=G.getTickAtSqrtPrice(v.sqrtPriceNextX64));if(P.sqrtPriceX64=v.sqrtPriceNextX64,at.updateDynamicFeeIndex({state:P,zeroForOne:s,isSkippedTickSpacing:L}),P.amountSpecifiedRemaining.isZero()||P.sqrtPriceX64.eq(S)){let E=G.limitOrderUnfilledAmount({tick:k});if(!P.amountSpecifiedRemaining.isZero()&&!E.eq(_)&&!E.isZero())throw Error("!limitOrderUnfilledAmountAfter.isZero()");break}}while(!0);P.liquidity=I}return{allTrade:!0,amountSpecifiedRemaining:W,amountCalculated:P.amountCalculated,feeAmount:P.lpFee.add(P.fundFee).add(P.protocolFee),sqrtPriceX64:P.sqrtPriceX64,liquidity:P.liquidity,tickCurrent:P.tick,accounts:[...d,...n.slice(0,g+1+(p?1:0)).map(k=>k.address)]}}var gn=class{static tickSpacingIndexFromTick(e,t){return Math.floor(e/t)}},Xt=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/Si),e.lastUpdateTimestamp=new Re(n)):(e.tickSpacingIndexReference=t,e.volatilityReference=0,e.lastUpdateTimestamp=new Re(n)))}static updateVolatilityAccumulator({state:e,tickSpacingIndex:t}){let n=Math.abs(e.tickSpacingIndexReference-t),o=e.volatilityReference+n*mn;e.volatilityAccumulator=Math.min(o,e.maxVolatilityAccumulator)}},qe=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>Ze&&(t=H.getTickArrayStartIndex(Ze,e)+H.tickCount(e)),n<Qe&&(n=H.getTickArrayStartIndex(Qe,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 p=i[u],g=(c=(a=t.rewardDefaultInfos[u])==null?void 0:a.mint.programId)!=null?c:(s=await e.getAccountInfo(p.mint))==null?void 0:s.owner;if(g===void 0)throw Error("get new reward mint info error");let d=q(F({},p),{perSecond:Hi(p.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Ee(g)});if(d.mint.equals(Ee.default)||d.totalEmissioned.eq(dt))continue;if(n<=d.openTime.toNumber()||o.eq(W)){r.push(d);continue}let f=new Re(Math.min(d.endTime.toNumber(),n)),y=f.sub(d.lastUpdateTime);if(y.isZero()){r.push(d);continue}let b=le(y,d.emissionsPerSecondX64,se),w=ce(y,d.emissionsPerSecondX64,o),A,T=d.totalEmissioned.add(b);if(T.lte(dt))A=T;else{let P=dt.sub(d.totalEmissioned);A=dt,w=ce(P,se,o)}let B=d.growthGlobalX64.add(w);r.push(q(F({},d),{growthGlobalX64:B,totalEmissioned:A,lastUpdateTime:f}))}return r}},Ue=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:p,feeAmount:g,sqrtPriceX64:d,accounts:f}=Lo({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:W,zeroForOne:s,isBaseInput:!0,blockTimestamp:r,includeExtraTickArrays:!0});return{allTrade:u,expectedAmountOut:p,remainingAccounts:f,executionPrice:d,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:p,feeAmount:g,sqrtPriceX64:d,accounts:f}=Lo({programId:e.programId,poolId:e.id,poolInfo:e.accInfo,tickArrays:Object.entries(n).map(y=>({address:new Ee(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:W,zeroForOne:s,isBaseInput:!1,blockTimestamp:r,includeExtraTickArrays:!0});return{allTrade:u,expectedAmountIn:p,remainingAccounts:f,executionPrice:d,feeAmount:g}}static async fetchExBitmaps({connection:e,exBitmapAddress:t,batchRequest:n}){let o=await De(e,t.map(r=>({pubkey:r})),{batchRequest:n}),i={};for(let r of o)r.accountInfo!==null&&(i[r.pubkey.toString()]=Dn.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:p}=oe(s.programId,s.id,u);o[p.toString()]===void 0&&(i.push({pubkey:p}),o[p.toString()]=s.id)}}let r=await De(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=qt.decode(s.accountInfo.data);a[c.toString()][u.startTickIndex]=q(F({},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 te(0)}){var v;let u,p=o.toBase58()===e.mintA.address,[g,d]=p?[e.mintA.extensions.feeConfig,e.mintB.extensions.feeConfig]:[e.mintB.extensions.feeConfig,e.mintA.extensions.feeConfig];c.equals(new te(0))?u=p?$e.add(new Re(1)):je.sub(new Re(1)):u=G.priceToSqrtPriceX64(c,e.mintA.decimals,e.mintB.decimals);let f=Ge(r,g,i,!1),{allTrade:y,expectedAmountOut:b,remainingAccounts:w,executionPrice:A,feeAmount:T}=Ue.getOutputAmountAndRemainAccounts(e,t,n,o,f.amount.sub((v=f.fee)!=null?v:W),s,u),B=Ge(b,d,i,!1),P=G.sqrtPriceX64ToPrice(A,e.mintA.decimals,e.mintB.decimals),k=p?P:new te(1).div(P),S=b.mul(new Re(Math.floor((1-a)*1e10))).div(new Re(1e10)),I=Ge(S,d,i,!1),K=p?e.currentPrice:new te(1).div(e.currentPrice),L=new te(k).sub(K).abs(),U=K,V=new lt(new te(L).mul(10**15).toFixed(0),new te(U).mul(10**15).toFixed(0));return{allTrade:y,realAmountIn:f,amountOut:B,minAmountOut:I,expirationTime:ln(f.expirationTime,B.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,[p,g]=u?[e.mintA,e.mintB]:[e.mintB,e.mintA],[d,f]=[new Ce(q(F({},p),{mint:p.address,isToken2022:p.programId===$i.toBase58()})),new Ce(q(F({},g),{mint:g.address,isToken2022:g.programId===$i.toBase58()}))],{allTrade:y,realAmountIn:b,amountOut:w,minAmountOut:A,expirationTime:T,currentPrice:B,executionPrice:P,priceImpact:k,fee:S,remainingAccounts:I,executionPriceX64:K}=Ue.computeAmountOut({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:new Ee(p.address),amountIn:o,slippage:r,epochInfo:a,catchLiquidityInsufficient:c,blockTimestamp:s}),L=q(F({},b),{amount:new Se(d,b.amount),fee:b.fee===void 0?void 0:new Se(d,b.fee)}),U=q(F({},w),{amount:new Se(f,w.amount),fee:w.fee===void 0?void 0:new Se(f,w.fee)}),V=q(F({},A),{amount:new Se(f,A.amount),fee:A.fee===void 0?void 0:new Se(f,A.fee)}),v=new He({baseToken:d,denominator:new Re(10).pow(new Re(20+d.decimals)),quoteToken:f,numerator:B.mul(new te(10**(20+f.decimals))).toFixed(0)}),_=new He({baseToken:d,denominator:new Re(10).pow(new Re(20+d.decimals)),quoteToken:f,numerator:P.mul(new te(10**(20+f.decimals))).toFixed(0)}),E=new Se(d,S);return{allTrade:y,realAmountIn:L,amountOut:U,minAmountOut:V,expirationTime:T,currentPrice:v,executionPrice:_,priceImpact:k,fee:E,remainingAccounts:I,executionPriceX64:K}}static computeAmountIn({poolInfo:e,tickarrayBitmapExtension:t,tickArrayCache:n,baseMint:o,epochInfo:i,amountOut:r,slippage:a,priceLimit:s=new te(0),blockTimestamp:c}){var v;let u=o.toBase58()===e.mintA.address,p={[e.mintA.address]:e.mintA.extensions.feeConfig,[e.mintB.address]:e.mintB.extensions.feeConfig},g;s.equals(new te(0))?g=u?je.sub(new Re(1)):$e.add(new Re(1)):g=G.priceToSqrtPriceX64(s,e.mintA.decimals,e.mintB.decimals);let d=Ge(r,p[o.toString()],i,!0),{allTrade:f,expectedAmountIn:y,remainingAccounts:b,executionPrice:w,feeAmount:A}=Ue.getInputAmountAndRemainAccounts(e,t,n,o,d.amount.sub((v=d.fee)!=null?v:W),c,g),T=u?e.mintB.address:e.mintA.address,B=Ge(y,p[T],i,!1),P=G.sqrtPriceX64ToPrice(w,e.mintA.decimals,e.mintB.decimals),k=u?P:new te(1).div(P),S=y.mul(new Re(Math.floor((1+a)*1e10))).div(new Re(1e10)),I=Ge(S,p[T],i,!0),K=u?e.currentPrice:new te(1).div(e.currentPrice),L=new te(k).sub(K).abs(),U=K,V=new lt(new te(L).mul(10**15).toFixed(0),new te(U).mul(10**15).toFixed(0));return{allTrade:f,amountIn:B,maxAmountIn:I,realAmountOut:d,expirationTime:ln(B.expirationTime,d.expirationTime),currentPrice:e.currentPrice,executionPrice:k,priceImpact:V,fee:A,remainingAccounts:b}}static estimateAprsForPriceRangeMultiplier({poolInfo:e,aprType:t,positionTickLowerIndex:n,positionTickUpperIndex:o}){var f,y,b;let i=e[t],r=G.tickToPrice(n,e.mintA.decimals,e.mintB.decimals).toNumber(),a=G.tickToPrice(o,e.mintA.decimals,e.mintB.decimals).toNumber(),s=Math.max(r,i.priceMin),u=Math.min(a,i.priceMax)-s,p=a-r,g=i.priceMax-i.priceMin,d;return u<=0?d=0:p===u?d=g/u:g===u?d=u/p:d=u/g*(u/p),{feeApr:i.feeApr*d,rewardsApr:[((f=i.rewardApr[0])!=null?f:0)*d,((y=i.rewardApr[1])!=null?y:0)*d,((b=i.rewardApr[2])!=null?b:0)*d],apr:i.apr*d}}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],p=o[ut(e.mintA.address).toString()],g=o[ut(e.mintB.address).toString()],d=e.mintA.decimals,f=e.mintB.decimals;if(!u||!p||!g)return{feeApr:0,rewardsApr:[0,0,0],apr:0};let y=G.priceToSqrtPriceX64(new te(e.price),e.mintA.decimals,e.mintB.decimals),b=G.getSqrtPriceAtTick(r),w=G.getSqrtPriceAtTick(a),{amountSlippageA:A,amountSlippageB:T}=Ae.getAmountsFromLiquidityWithSlippage(y,b,w,t,!1,!1,0),{amountSlippageA:B,amountSlippageB:P}=Ae.getAmountsFromLiquidityWithSlippage(y,b,w,i,!1,!1,0),k=new te(A.toString()).div(new te(10).pow(d)).mul(p.value).add(new te(T.toString()).div(new te(10).pow(f)).mul(g.value)),S=new te(B.toString()).div(new te(10).pow(d)).mul(p.value).add(new te(P.toString()).div(new te(10).pow(f)).mul(g.value)),I=new te(1).div(k.add(S)),L=new te(u.volumeFee).mul(365).div(c).mul(I).mul(100).toNumber(),U=3600*24*365,V=e.rewardDefaultInfos.map(v=>{var Z,me;let _=v.mint.decimals,E=o[v.mint.address];return s<((Z=v.startTime)!=null?Z:0)||s>((me=v.endTime)!=null?me:0)||!v.perSecond||!E||_===void 0?0:new te(E.value).mul(new te(v.perSecond).mul(U)).div(new te(10).pow(_)).mul(I).mul(100).toNumber()});return{feeApr:L,rewardsApr:V,apr:L+V.reduce((v,_)=>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=G.priceToSqrtPriceX64(new te(e.price),e.mintA.decimals,e.mintB.decimals),p=G.getSqrtPriceAtTick(n),g=G.getSqrtPriceAtTick(o),d=Ge(i,(w=e[t?"mintA":"mintB"].extensions)==null?void 0:w.feeConfig,s,!c),f=new Re(new te(d.amount.sub((A=d.fee)!=null?A:W).toString()).toFixed(0)),y;if(u.lte(p))y=t?Ae.getLiquidityFromAmountA(p,g,f):new Re(0);else if(u.lte(g)){let T=Ae.getLiquidityFromAmountA(u,g,f),B=Ae.getLiquidityFromAmountB(p,u,f);y=t?T:B}else y=t?new Re(0):Ae.getLiquidityFromAmountB(p,g,f);let b=await Ue.getAmountsFromLiquidity({epochInfo:s,poolInfo:e,tickLower:n,tickUpper:o,liquidity:y,slippage:r,add:a});return{liquidity:y,amountA:t?d:b.amountA,amountB:t?b.amountB:d,amountSlippageA:t?d:b.amountSlippageA,amountSlippageB:t?b.amountSlippageB:d,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=G.getSqrtPriceAtTick(n),c=G.getSqrtPriceAtTick(o),u=Ae.getAmountsForLiquidity(G.priceToSqrtPriceX64(new te(t.price),t.mintA.decimals,t.mintB.decimals),s,c,i,a),[p,g]=[Ge(u.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),Ge(u.amountB,(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)],d=r*1e4,[f,y]=[Ge(u.amountA.muln(1e4-d).divn(1e4),(A=t.mintA.extensions)==null?void 0:A.feeConfig,e,!0),Ge(u.amountB.muln(1e4-d).divn(1e4),(T=t.mintB.extensions)==null?void 0:T.feeConfig,e,!0)];return{liquidity:i,amountA:p,amountB:g,amountSlippageA:f,amountSlippageB:y,expirationTime:ln(p.expirationTime,g.expirationTime)}}static async fetchComputeMultipleClmmInfo({connection:e,poolList:t,rpcDataMap:n={}}){let o=t.filter(c=>!n[c.id]).map(c=>new Ee(c.id));(await _e(e,o)).forEach((c,u)=>{!c||(n[o[u].toBase58()]=pn.decode(c.data))});let r=t.map(c=>de(new Ee(c.programId),new Ee(c.id)).publicKey),a=await Ue.fetchExBitmaps({connection:e,exBitmapAddress:r,batchRequest:!1}),s={};return t.reduce((c,u)=>q(F({},c),{[u.id]:q(F({accInfo:n[u.id]},n[u.id]),{id:new Ee(u.id),version:6,programId:new Ee(u.programId),mintA:u.mintA,mintB:u.mintB,ammConfig:q(F({},u.config),{id:new Ee(u.config.id),fundOwner:""}),currentPrice:new te(u.price),exBitmapAccount:de(new Ee(u.programId),new Ee(u.id)).publicKey,exBitmapInfo:a[de(new Ee(u.programId),new Ee(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=oe(t,n,r).publicKey,s=await e.getAccountInfo(a);if(!s)throw new Error(`tick array ${a.toBase58()} not found`);return qt.decode(s.data)}static async fetchMultipleTickArrayInfo({connection:e,tickInfoList:t}){let n=t.map(i=>{let r=H.getTickArrayStartIndex(i.tick,i.tickSpacing);return oe(i.programId,i.poolId,r).publicKey});return(await _e(e,n)).map(i=>i&&qt.decode(i.data))}},Oo={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};function ji(m,e){let t=e!=null?e:{};return q(F({},m),{type:"Concentrated",programId:m.programId.toString(),id:m.id.toString(),rewardDefaultInfos:m.rewardInfos.filter(n=>!n.mint.equals(Ee.default)).map(n=>{var o,i;return{mint:yt({address:n.mint.toBase58(),programId:ps.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:m.currentPrice.toNumber(),mintAmountA:0,mintAmountB:0,feeRate:m.ammConfig.tradeFeeRate,openTime:m.startTime.toString(),tvl:0,day:Oo,week:Oo,month:Oo,pooltype:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,burnPercent:0,config:q(F({},m.ammConfig),{id:m.ammConfig.id.toString(),defaultRange:0,defaultRangePoint:[]}),hasDynamicFee:!1,feeOn:"",launchMigratePool:!1,tips:[]})}import Ht from"bn.js";var Ji=class{static getfeeGrowthInside(e,t,n){let o=new Ht(0),i=new Ht(0);e.tickCurrent>=t.tick?(o=t.feeGrowthOutsideX64A,i=t.feeGrowthOutsideX64B):(o=Me(e.feeGrowthGlobalX64A,t.feeGrowthOutsideX64A),i=Me(e.feeGrowthGlobalX64B,t.feeGrowthOutsideX64B));let r=new Ht(0),a=new Ht(0);e.tickCurrent<n.tick?(r=n.feeGrowthOutsideX64A,a=n.feeGrowthOutsideX64B):(r=Me(e.feeGrowthGlobalX64A,n.feeGrowthOutsideX64A),a=Me(e.feeGrowthGlobalX64B,n.feeGrowthOutsideX64B));let s=Me(Me(e.feeGrowthGlobalX64A,o),r),c=Me(Me(e.feeGrowthGlobalX64B,i),a);return{feeGrowthInsideX64A:s,feeGrowthInsideBX64:c}}static GetPositionFees(e,t,n,o){let{feeGrowthInsideX64A:i,feeGrowthInsideBX64:r}=this.getfeeGrowthInside(e,n,o),a=ce(Me(i,t.feeGrowthInsideLastX64A),t.liquidity,se),s=t.tokenFeesOwedA.add(a),c=ce(Me(r,t.feeGrowthInsideLastX64B),t.liquidity,se),u=t.tokenFeesOwedB.add(c);return{tokenFeeAmountA:s,tokenFeeAmountB:u}}static GetPositionRewards(e,t,n,o){let i=[],r=this.getRewardGrowthInside(e.tickCurrent,n,o,e.rewardInfos);for(let a=0;a<r.length;a++){let s=r[a],c=t.rewardInfos[a],u=Me(s,c.growthInsideLastX64),p=ce(u,t.liquidity,se),g=c.rewardAmountOwed.add(p);i.push(g)}return i}static getRewardGrowthInside(e,t,n,o){let i=[];for(let r=0;r<o.length;r++){let a=new Ht(0);t.liquidityGross.eqn(0)?a=o[r].growthGlobalX64:e<t.tick?a=Me(o[r].growthGlobalX64,t.rewardGrowthsOutsideX64[r]):a=t.rewardGrowthsOutsideX64[r];let s=new Ht(0);n.liquidityGross.eqn(0)||(e<n.tick?s=n.rewardGrowthsOutsideX64[r]:s=Me(o[r].growthGlobalX64,n.rewardGrowthsOutsideX64[r])),i.push(Me(Me(o[r].growthGlobalX64,a),s))}return i}};function Le(m){let e=`global:${m}`;return Buffer.from(fs.digest(e)).slice(0,8)}Li.span;var er=ee("Raydium_Clmm"),Oe={createPool:Le("create_pool"),createCustomizablePool:Le("create_customizable_pool"),createPermissionedPool:Le("create_permissioned_pool"),openPositionV2:Le("open_position_v2"),openPositionWithToken22Nft:Le("open_position_with_token22_nft"),closePosition:Le("close_position"),increaseLiquidityV2:Le("increase_liquidity_v2"),decreaseLiquidityV2:Le("decrease_liquidity_v2"),initializeReward:Le("initialize_reward"),setRewardParams:Le("set_reward_params"),updateRewardInfos:Le("update_reward_infos"),collectRemainingRewards:Le("collect_remaining_rewards"),swapV2:Le("swap_v2"),openLimitOrder:Le("open_limit_order"),increaseLimitOrder:Le("increase_limit_order"),decreaseLimitOrder:Le("decrease_limit_order"),settleLimitOrder:Le("settle_limit_order"),closeLimitOrder:Le("close_limit_order")},tr=[188,37,179,131,82,150,84,73],nr=[16,72,250,198,14,162,212,19],j=class{static createPoolInstruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f){let y=O([z("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:p,isSigner:!1,isWritable:!1},{pubkey:mt.programId,isSigner:!1,isWritable:!1},{pubkey:Ye,isSigner:!1,isWritable:!1},...(f!=null?f:[]).map(T=>({pubkey:T,isSigner:!1,isWritable:!1}))],w=Buffer.alloc(y.span);y.encode({sqrtPriceX64:d,startTime:W},w);let A=Buffer.from([...Oe.createPool,...w]);return new ge({keys:b,programId:e,data:A})}static createCustomizablePoolInstruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f,y,b){let w=O([z("sqrtPriceX64"),N("collectFeeOn"),be("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:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:mt.programId,isSigner:!1,isWritable:!1},{pubkey:Ye,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:d,collectFeeOn:f,enableDynamicFee:b!==void 0},T);let B=Buffer.from([...Oe.createCustomizablePool,...T]);return new ge({keys:A,programId:e,data:B})}static createPermissionedPoolInstruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f,y,b,w,A,T){let B=O([z("sqrtPriceX64"),N("collectFeeOn"),be("enableDynamicFee"),Pe("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:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:mt.programId,isSigner:!1,isWritable:!1},{pubkey:Ye,isSigner:!1,isWritable:!1},...A.map(I=>({pubkey:I,isSigner:!1,isWritable:!1})),...T?[{pubkey:T,isSigner:!1,isWritable:!1}]:[]],k=Buffer.alloc(B.span);B.encode({sqrtPriceX64:y,collectFeeOn:b,enableDynamicFee:T!==void 0,seedIndex:w},k);let S=Buffer.from([...Oe.createPermissionedPool,...k]);return new ge({keys:P,programId:e,data:S})}static initializeRewardInstruction(e,t,n,o,i,r,a,s,c,u,p,g){let d=O([l("openTime"),l("endTime"),z("emissionsPerSecondX64")]),f=[{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:mt.programId,isSigner:!1,isWritable:!1},{pubkey:Ye,isSigner:!1,isWritable:!1}],y=Buffer.alloc(d.span);d.encode({openTime:u,endTime:p,emissionsPerSecondX64:g},y);let b=Buffer.from([...Oe.initializeReward,...y]);return new ge({keys:f,programId:e,data:b})}static updateRewardInfosInstruction(e,t){let n=[{pubkey:t,isSigner:!1,isWritable:!0}],o=Buffer.from([...Oe.updateRewardInfos]);return new ge({keys:n,programId:e,data:o})}static setRewardParamsInstruction(e,t,n,o,i,r,a,s,c,u,p,g){let d=O([N("rewardIndex"),z("emissionsPerSecondX64"),l("openTime"),l("endTime")]),f=[{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:ae,isSigner:!1,isWritable:!1},{pubkey:we,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(d.span);d.encode({rewardIndex:c,emissionsPerSecondX64:g,openTime:u,endTime:p},y);let b=Buffer.from([...Oe.setRewardParams,...y]);return new ge({keys:f,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:mt.programId,isSigner:!1,isWritable:!1},{pubkey:r?we:ae,isSigner:!1,isWritable:!1}];a&&s.push({pubkey:a,isSigner:!1,isWritable:!0});let c=Buffer.from([...Oe.closePosition]);return new ge({keys:s,programId:e,data:c})}static openPositionV2Instruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f,y,b,w,A,T,B,P,k,S,I,K,L,U){let V=O([Te("tickLower"),Te("tickUpper"),Te("tickArrayLowerStart"),Te("tickArrayUpperStart"),z("liquidity"),l("amountMaxA"),l("amountMaxB"),be("withMetadata"),N("optionBaseFlag"),be("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: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:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:Ye,isSigner:!1,isWritable:!1},{pubkey:mt.programId,isSigner:!1,isWritable:!1},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:No,isSigner:!1,isWritable:!1},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...U?[{pubkey:U,isSigner:!1,isWritable:!0}]:[]],_=Buffer.alloc(V.span);V.encode({tickLower:A,tickUpper:T,tickArrayLowerStart:B,tickArrayUpperStart:P,liquidity:k,amountMaxA:S,amountMaxB:I,withMetadata:K,optionBaseFlag:L!==null?1:0,baseFlag:L!=null?L:!1},_);let E=Buffer.from([...Oe.openPositionV2,..._]);return new ge({keys:v,programId:e,data:E})}static increaseLiquidityV2Instruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f,y,b,w,A,T){let B=O([z("liquidity"),l("amountMaxA"),l("amountMaxB"),N("optionBaseFlag"),be("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:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[]],k=Buffer.alloc(B.span);B.encode({liquidity:y,amountMaxA:b,amountMaxB:w,optionBaseFlag:A!==null?1:0,baseFlag:A!=null?A:!1},k);let S=Buffer.from([...Oe.increaseLiquidityV2,...k]);return new ge({keys:P,programId:e,data:S})}static decreaseLiquidityV2Instruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f,y,b,w,A,T){let B=O([z("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:p,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:ae,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:At,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[],...y.map(I=>[{pubkey:I.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:I.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:I.rewardMint,isSigner:!1,isWritable:!1}]).flat()],k=Buffer.alloc(B.span);B.encode({liquidity:b,amountMinA:w,amountMinB:A},k);let S=Buffer.from([...Oe.decreaseLiquidityV2,...k]);return new ge({keys:P,programId:e,data:S})}static swapV2Instruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f,y,b,w){let A=O([l("amount"),l("otherAmountThreshold"),z("sqrtPriceLimitX64"),be("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:ae,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:At,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},...w?[{pubkey:w,isSigner:!1,isWritable:!0}]:[],...p.map(k=>({pubkey:k,isSigner:!1,isWritable:!0}))],B=Buffer.alloc(A.span);A.encode({amount:d,otherAmountThreshold:f,sqrtPriceLimitX64:y,isBaseInput:b},B);let P=Buffer.from([...Oe.swapV2,...B]);return new ge({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:ae,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:At,isSigner:!1,isWritable:!1}],u=Buffer.alloc(s.span);s.encode({rewardIndex:a},u);let p=Buffer.from([...Oe.collectRemainingRewards,...u]);return new ge({keys:c,programId:e,data:p})}static openPositionWithToken22NftInstruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f,y,b,w,A,T,B,P,k,S,I,K,L){let U=O([Te("tickLower"),Te("tickUpper"),Te("tickArrayLowerStart"),Te("tickArrayUpperStart"),z("liquidity"),l("amountMaxA"),l("amountMaxB"),be("withMetadata"),N("optionBaseFlag"),be("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:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:Ye,isSigner:!1,isWritable:!1},{pubkey:mt.programId,isSigner:!1,isWritable:!1},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:No,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...L?[{pubkey:L,isSigner:!1,isWritable:!0}]:[]],v=Buffer.alloc(U.span);U.encode({tickLower:w,tickUpper:A,tickArrayLowerStart:T,tickArrayUpperStart:B,liquidity:P,amountMaxA:k,amountMaxB:S,withMetadata:I,optionBaseFlag:K!==null?1:0,baseFlag:K!=null?K:!1},v);let _=Buffer.from([...Oe.openPositionWithToken22Nft,...v]);return new ge({keys:V,programId:e,data:_})}static openLimitOrderInstruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f,y,b,w,A){let T=O([N("nonceIndex"),be("zeroForOne"),Te("tickIndex"),l("amount")]),B=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:mt.programId,isSigner:!1,isWritable:!1},...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[]],P=Buffer.alloc(T.span);T.encode({nonceIndex:f,zeroForOne:y,tickIndex:b,amount:w},P);let k=Buffer.from([...Oe.openLimitOrder,...P]);return new ge({keys:B,programId:e,data:k})}static increaseLimitOrderInstruction(e,t,n,o,i,r,a,s,c,u){let p=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}],d=Buffer.alloc(p.span);p.encode({amount:u},d);let f=Buffer.from([...Oe.increaseLimitOrder,...d]);return new ge({keys:g,programId:e,data:f})}static decreaseLimitOrderInstruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f){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:p,isSigner:!1,isWritable:!1},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1},...f?[{pubkey:f,isSigner:!1,isWritable:!0}]:[]],w=Buffer.alloc(y.span);y.encode({amount:g,amountMin:d},w);let A=Buffer.from([...Oe.decreaseLimitOrder,...w]);return new ge({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}],p=Buffer.from([...Oe.settleLimitOrder]);return new ge({keys:u,programId:e,data:p})}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([...Oe.closeLimitOrder]);return new ge({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 M(o.address),new M(i.address)],[p,g]=[new M(o.programId||ae),new M(i.programId||ae)],{publicKey:d}=Di(t,r,c,u),{publicKey:f}=Ko(t,d),{publicKey:y}=ze(t,d,c),{publicKey:b}=ze(t,d,u),w=de(t,d).publicKey,A=[this.createPoolInstruction(t,d,n,r,f,c,y,p,u,b,g,w,a,s)];return{signers:[],instructions:A,instructionTypes:[J.CreateAccount,J.ClmmCreatePool],address:{poolId:d,observationId:f,exBitmapAccount:w,mintA:c,mintB:u,mintAProgram:p,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,[p,g]=[new M(o.address),new M(i.address)],[d,f]=[new M(o.programId||ae),new M(i.programId||ae)],{publicKey:y}=qi(t,r,p,g,u),{publicKey:b}=Wi(t,c),{publicKey:w}=Ko(t,y),{publicKey:A}=ze(t,y,p),{publicKey:T}=ze(t,y,g),B=de(t,y).publicKey,P=[this.createPoolInstruction(t,y,n,r,w,p,A,d,g,T,f,B,a,s)];return{signers:[],instructions:P,instructionTypes:[J.CreateAccount,J.ClmmCreatePool],address:{poolId:y,observationId:w,exBitmapAccount:B,mintA:p,mintB:g,mintAProgram:d,mintBProgram:f,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:p,nft2022:g}){let d=[],[f,y]=[new M(e.programId),new M(e.id)],b;if(p)b=new M((await p(1))[0]);else{let L=Un.generate();d.push(L),b=L.publicKey}let w=H.getTickArrayStartIndex(o,e.config.tickSpacing),A=H.getTickArrayStartIndex(i,e.config.tickSpacing),{publicKey:T}=oe(f,y,w),{publicKey:B}=oe(f,y,A),{publicKey:P}=g?Q(n.wallet,b,we):Q(n.wallet,b,ae),{publicKey:k}=Ct(b),{publicKey:S}=Xe(f,b),{publicKey:I}=it(f,y,o,i),K=g?this.openPositionWithToken22NftInstruction(f,n.feePayer,y,n.wallet,b,P,I,T,B,S,n.tokenAccountA,n.tokenAccountB,new M(t.vault.A),new M(t.vault.B),new M(e.mintA.address),new M(e.mintB.address),o,i,w,A,r,a,s,u==="create",c&&c==="MintA",qe.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[w,A]})?de(f,y).publicKey:void 0):this.openPositionV2Instruction(f,n.feePayer,y,n.wallet,b,P,k,I,T,B,S,n.tokenAccountA,n.tokenAccountB,new M(t.vault.A),new M(t.vault.B),new M(e.mintA.address),new M(e.mintB.address),o,i,w,A,r,a,s,u==="create",null,qe.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[w,A]})?de(f,y).publicKey:void 0);return{signers:d,instructions:[K],instructionTypes:[J.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:T,tickArrayUpper:B,positionNftAccount:P,metadataAccount:k,personalPosition:S,protocolPosition:I}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,base:r,baseAmount:a,otherAmountMax:s,liquidity:c,withMetadata:u,getEphemeralSigners:p,nft2022:g}){let d=[],[f,y]=[new M(e.programId),new M(e.id)],b;if(p)b=new M((await p(1))[0]);else{let L=Un.generate();d.push(L),b=L.publicKey}let w=H.getTickArrayStartIndex(o,e.config.tickSpacing),A=H.getTickArrayStartIndex(i,e.config.tickSpacing),{publicKey:T}=oe(f,y,w),{publicKey:B}=oe(f,y,A),{publicKey:P}=g?Q(n.wallet,b,we):Q(n.wallet,b,ae),{publicKey:k}=Ct(b),{publicKey:S}=Xe(f,b),{publicKey:I}=it(f,y,o,i),K=g?this.openPositionWithToken22NftInstruction(f,n.feePayer,y,n.wallet,b,P,I,T,B,S,n.tokenAccountA,n.tokenAccountB,new M(t.vault.A),new M(t.vault.B),new M(e.mintA.address),new M(e.mintB.address),o,i,w,A,c,!r||r==="MintA"?a:s,!r||r==="MintA"?s:a,u==="create",r&&r==="MintA",qe.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[w,A]})?de(f,y).publicKey:void 0):this.openPositionV2Instruction(f,n.feePayer,y,n.wallet,b,P,k,I,T,B,S,n.tokenAccountA,n.tokenAccountB,new M(t.vault.A),new M(t.vault.B),new M(e.mintA.address),new M(e.mintB.address),o,i,w,A,W,r==="MintA"?a:s,r==="MintA"?s:a,u==="create",r==="MintA",qe.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[w,A]})?de(f,y).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:T,tickArrayUpper:B,positionNftAccount:P,metadataAccount:k,personalPosition:S,protocolPosition:I},instructions:[K],signers:d,instructionTypes:[J.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:p,nft2022:g}){let d,f=[];if(p)d=new M((await p(1))[0]);else{let L=Un.generate();f.push(L),d=L.publicKey}let[y,b]=[new M(e.programId),new M(e.id)],w=H.getTickArrayStartIndex(o,e.config.tickSpacing),A=H.getTickArrayStartIndex(i,e.config.tickSpacing),{publicKey:T}=oe(y,b,w),{publicKey:B}=oe(y,b,A),{publicKey:P}=g?Q(n.wallet,d,we):Q(n.wallet,d,ae),{publicKey:k}=Ct(d),{publicKey:S}=Xe(y,d),{publicKey:I}=it(y,b,o,i),K=g?this.openPositionWithToken22NftInstruction(y,n.wallet,b,n.wallet,d,P,I,T,B,S,n.tokenAccountA,n.tokenAccountB,new M(t.vault.A),new M(t.vault.B),new M(t.mintA.address),new M(t.mintB.address),o,i,w,A,r,a,s,u==="create",c&&c==="MintA",qe.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[w,A]})?de(y,b).publicKey:void 0):this.openPositionV2Instruction(y,n.wallet,b,n.wallet,d,P,k,I,T,B,S,n.tokenAccountA,n.tokenAccountB,new M(t.vault.A),new M(t.vault.B),new M(t.mintA.address),new M(t.mintB.address),o,i,w,A,r,a,s,u==="create",null,qe.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[w,A]})?de(y,b).publicKey:void 0);return{address:{nftMint:d,tickArrayLower:T,tickArrayUpper:B,positionNftAccount:P,metadataAccount:k,personalPosition:S,protocolPosition:I},instructions:[K],signers:f,instructionTypes:[J.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:o,nft2022:i}){let r=new M(e.programId),a=i?Q(n.wallet,o.nftMint,we).publicKey:Q(n.wallet,o.nftMint,ae).publicKey,{publicKey:s}=Xe(r,o.nftMint),c=[];return c.push(this.closePositionInstruction(r,n.wallet,o.nftMint,a,s,!!i,new M(e.id))),{address:{positionNftAccount:a,personalPosition:s},signers:[],instructions:c,instructionTypes:[J.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 M(e.programId),new M(e.id)],p=H.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),g=H.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:d}=oe(c,u,p),{publicKey:f}=oe(c,u,g),{publicKey:y}=s?Q(o.wallet,n.nftMint,we):Q(o.wallet,n.nftMint,ae),{publicKey:b}=Xe(c,n.nftMint),{publicKey:w}=it(c,u,n.tickLower,n.tickUpper),A=this.increaseLiquidityV2Instruction(c,o.wallet,y,b,u,w,d,f,o.tokenAccountA,o.tokenAccountB,new M(t.vault.A),new M(t.vault.B),new M(e.mintA.address),new M(e.mintB.address),i,r,a,null,qe.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[p,g]})?de(c,u).publicKey:void 0);return{address:{tickArrayLower:d,tickArrayUpper:f,positionNftAccount:y,personalPosition:b,protocolPosition:w},signers:[],instructions:[A],instructionTypes:[J.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 M(e.programId),new M(e.id)],p=H.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),g=H.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:d}=oe(c,u,p),{publicKey:f}=oe(c,u,g),{publicKey:y}=s?Q(o.wallet,n.nftMint,we):Q(o.wallet,n.nftMint,ae),{publicKey:b}=Xe(c,n.nftMint),{publicKey:w}=it(c,u,n.tickLower,n.tickUpper);return{address:{tickArrayLower:d,tickArrayUpper:f,positionNftAccount:y,personalPosition:b,protocolPosition:w},instructions:[this.increaseLiquidityV2Instruction(c,o.wallet,y,b,u,w,d,f,o.tokenAccountA,o.tokenAccountB,new M(t.vault.A),new M(t.vault.B),new M(e.mintA.address),new M(e.mintB.address),W,i==="MintA"?r:a,i==="MintA"?a:r,i==="MintA",qe.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[p,g]})?de(c,u).publicKey:void 0)],signers:[],instructionTypes:[J.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,p]=[new M(e.programId),new M(e.id)],g=H.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),d=H.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:f}=oe(u,p,g),{publicKey:y}=oe(u,p,d),{publicKey:b}=c?Q(o.wallet,n.nftMint,we):Q(o.wallet,n.nftMint,s),{publicKey:w}=Xe(u,n.nftMint),{publicKey:A}=it(u,p,n.tickLower,n.tickUpper),T=new Map;for(let S=0;S<t.rewardInfos.length;S++)T.set(t.rewardInfos[S].mint.address,o.rewardAccounts[S]);let B=[];for(let S=0;S<t.rewardInfos.length;S++){let I=t.rewardInfos[S].mint.address,K=T.get(I);K&&B.push({poolRewardVault:new M(t.rewardInfos[S].vault),ownerRewardVault:K,rewardMint:new M(I)})}let P=[],k=this.decreaseLiquidityV2Instruction(u,o.wallet,b,w,p,A,f,y,o.tokenAccountA,o.tokenAccountB,new M(t.vault.A),new M(t.vault.B),new M(e.mintA.address),new M(e.mintB.address),B,i,r,a,qe.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[g,d]})?de(u,p).publicKey:void 0);return P.push(k),{address:{tickArrayLower:f,tickArrayUpper:y,positionNftAccount:b,personalPosition:w,protocolPosition:A},signers:[],instructions:P,instructionTypes:[J.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,p]=[new M(e.programId),new M(e.id)],[g,d]=[new M(t.vault.A),new M(t.vault.B)],[f,y]=[new M(e.mintA.address),new M(e.mintB.address)],b=e.mintA.address.toString()===i.toString(),w=[this.swapV2Instruction(u,o.wallet,p,new M(e.config.id),b?o.tokenAccountA:o.tokenAccountB,b?o.tokenAccountB:o.tokenAccountA,b?g:d,b?d:g,b?f:y,b?y:f,c,n,r,a,s,!0,de(u,p).publicKey)];return{signers:[],instructions:w,instructionTypes:[J.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,p]=[new M(e.programId),new M(e.id)],[g,d]=[new M(t.vault.A),new M(t.vault.B)],[f,y]=[new M(e.mintA.address),new M(e.mintB.address)],b=e.mintB.address.toString()===i.toBase58(),w=[this.swapV2Instruction(u,o.wallet,p,new M(e.config.id),b?o.tokenAccountA:o.tokenAccountB,b?o.tokenAccountB:o.tokenAccountA,b?g:d,b?d:g,b?f:y,b?y:f,c,n,r,a,s,!1,de(u,p).publicKey)];return{signers:[],instructions:w,instructionTypes:[J.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:o}){let[i,r]=[new M(e.programId),new M(e.id)],a=Ui(i,r,o.mint).publicKey,s=fn(i).publicKey,c=[this.initializeRewardInstruction(i,n.wallet,r,s,new M(e.config.id),n.tokenAccount,o.programId,o.mint,a,new Gn(o.openTime),new Gn(o.endTime),o.emissionsPerSecondX64)];return{address:{poolRewardVault:a,operationId:s},signers:[],instructions:c,instructionTypes:[J.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:o}){let[i,r]=[new M(e.programId),new M(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 M(t.rewardInfos[g].vault),c=new M(t.rewardInfos[g].mint.address));(a===void 0||s===void 0)&&er.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let u=fn(i).publicKey,p=[this.setRewardParamsInstruction(i,n.wallet,r,u,new M(e.config.id),n.tokenAccount,s,c,a,new Gn(o.openTime),new Gn(o.endTime),o.emissionsPerSecondX64)];return{address:{rewardVault:s,operationId:u},signers:[],instructions:p,instructionTypes:[J.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:o}){let[i,r]=[new M(e.programId),new M(e.id)],a,s;for(let u=0;u<e.rewardDefaultInfos.length;u++)e.rewardDefaultInfos[u].mint.address===o.toString()&&(a=u,s=new M(t.rewardInfos[u].vault));(a===void 0||s===void 0)&&er.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:[J.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 M((await s(1))[0]);else{let w=Un.generate();c.push(w),u=w.publicKey}let p=a?Q(i,r,we).publicKey:Q(i,r,ae).publicKey,{publicKey:g}=Xe(n,r),d=Ut(e,u).publicKey,f=Q(i,u,ae).publicKey,y=Ct(u).publicKey,b=j.lockPositionInstructionV2({programId:e,auth:t,payer:o,positionOwner:i,lockOwner:i,positionNftAccount:p,positionId:g,lockPositionId:d,lockNftMint:u,lockNftAccount:f,metadataAccount:y,withMetadata:!0,nft2022:a,positionNftMint:r,authPositionNftAccount:Q(t,r,a?we:ae).publicKey,positionNftProgram:a?we:ae});return{address:{positionId:g,lockPositionId:d,lockNftAccount:f,lockNftMint:u,positionNftAccount:p,metadataAccount:y},instructions:[b],signers:c,instructionTypes:[J.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:p,lockNftMint:g,lockNftAccount:d,metadataAccount:f,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:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!0,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:No,isSigner:!1,isWritable:!1},{pubkey:Ye,isSigner:!1,isWritable:!1},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:mt.programId,isSigner:!1,isWritable:!1}],w=O([be("withMetadata")]),A=Buffer.alloc(w.span);w.encode({withMetadata:y},A);let T=Buffer.from([...tr,...A]);return new ge({keys:b,programId:e,data:T})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:o,positionNft:i}){let{publicKey:r}=Q(o,i,ae),{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:xo(e,a).publicKey,isSigner:!1,isWritable:!0},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:mt.programId,isSigner:!1,isWritable:!1}];return new ge({keys:s,programId:e,data:Buffer.from(tr)})}static harvestLockPositionInstruction(e){let[t,n]=[new M(e.poolKeys.programId),new M(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}=oe(t,n,o),{publicKey:a}=oe(t,n,i),{publicKey:s}=Q(e.owner,e.ownerPosition.nftMint,ae),{publicKey:c}=Xe(t,e.ownerPosition.nftMint),{publicKey:u}=it(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),p=[];for(let f=0;f<e.poolKeys.rewardInfos.length;f++)p.push({poolRewardVault:new M(e.poolKeys.rewardInfos[f].vault),ownerRewardVault:e.ownerRewardAccounts[f],rewardMint:new M(e.poolKeys.rewardInfos[f].mint.address)});let g=[...p.map(f=>[{pubkey:f.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:f.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:f.rewardMint,isSigner:!1,isWritable:!1}]).flat()],d=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:xo(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 M(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new M(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:ae,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:At,isSigner:!1,isWritable:!1},{pubkey:new M(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new M(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...g];return new ge({keys:d,programId:e.programId,data:Buffer.from(nr)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:o,lockOwner:i,lockNftMint:r,lockNftAccount:a,positionNftAccount:s,positionId:c,poolId:u,protocolPosition:p,vaultA:g,vaultB:d,tickArrayLower:f,tickArrayUpper:y,userVaultA:b,userVaultB:w,mintA:A,mintB:T,rewardAccounts:B,exTickArrayBitmap:P}){let k=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[],...B.map(I=>[{pubkey:I.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:I.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:I.rewardMint,isSigner:!1,isWritable:!1}]).flat()],S=[{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:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!0},{pubkey:ae,isSigner:!1,isWritable:!1},{pubkey:we,isSigner:!1,isWritable:!1},{pubkey:At,isSigner:!1,isWritable:!1},{pubkey:A,isSigner:!1,isWritable:!1},{pubkey:T,isSigner:!1,isWritable:!1},...k];return new ge({keys:S,programId:e,data:Buffer.from(nr)})}};var ys=O([ye("mintAuthorityOption"),h("mintAuthority"),l("supply"),N("decimals"),N("isInitialized"),ye("freezeAuthorityOption"),h("freezeAuthority")]);import{TOKEN_PROGRAM_ID as fP}from"@solana/spl-token";import{PublicKey as PP}from"@solana/web3.js";var yt=o=>{var i=o,{address:m,programId:e,decimals:t}=i,n=nt(i,["address","programId","decimals"]);return F({chainId:101,address:ut(m).toBase58(),programId:e,logoURI:"",symbol:"",name:"",decimals:t,tags:[],extensions:n.extensions||{}},n)},Pn=m=>m?q(F({},m),{transferFeeConfigAuthority:m.transferFeeConfigAuthority.toBase58(),withdrawWithheldAuthority:m.withdrawWithheldAuthority.toBase58(),withheldAmount:m.withheldAmount.toString(),olderTransferFee:q(F({},m.olderTransferFee),{epoch:m.olderTransferFee.epoch.toString(),maximumFee:m.olderTransferFee.maximumFee.toString()}),newerTransferFee:q(F({},m.newerTransferFee),{epoch:m.newerTransferFee.epoch.toString(),maximumFee:m.newerTransferFee.maximumFee.toString()})}):void 0;import or from"bn.js";var bs=new or(25),gs=new or(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as _P,TOKEN_PROGRAM_ID as VP}from"@solana/spl-token";import{PublicKey as DP,SystemProgram as WP,SYSVAR_RENT_PUBKEY as qP,TransactionInstruction as UP}from"@solana/web3.js";import $P from"bn.js";var Ps=O([N("instruction"),l("amountIn"),l("minAmountOut")]),As=O([N("instruction"),l("maxAmountIn"),l("amountOut")]),NP=O([N("instruction"),N("nonce")]),ws=O([N("instruction"),N("nonce"),l("startTime")]),ir=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"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),l("swapBase2QuoteFee"),z("swapQuoteInAmount"),z("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"),D(l(),3,"padding")]),MP=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"),z("swapBaseInAmount"),z("swapQuoteOutAmount"),z("swapQuoteInAmount"),z("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"),D(l(),64,"padding")]),ks=O([N("instruction"),l("baseAmountIn"),l("quoteAmountIn"),l("fixedSide"),l("otherAmountMin")]),Ts=O([N("instruction"),l("lpAmount"),l("baseAmountMin"),l("quoteAmountMin")]);var hs=O([l("fee")]);var eA=ee("Raydium_liquidity_instruction");var Is=5e4,Bs=O([l("x"),l("y"),l("price")]),iA=O([l("accountType"),l("status"),l("multiplier"),l("validDataCount"),D(Bs,Is,"DataElement")]);import{PublicKey as bA}from"@solana/web3.js";import PA from"decimal.js";import{TOKEN_PROGRAM_ID as wA}from"@solana/spl-token";import{PublicKey as uA}from"@solana/web3.js";var mA=ee("Raydium_liquidity_serum");import $w from"bn.js";import Jw from"decimal.js";import{TOKEN_PROGRAM_ID as jA}from"@solana/spl-token";import{PublicKey as ew}from"@solana/web3.js";import nw from"bn.js";import{SystemProgram as EA,SYSVAR_RENT_PUBKEY as DA,Transaction as WA,TransactionInstruction as qA}from"@solana/web3.js";import{createInitializeAccountInstruction as GA,TOKEN_PROGRAM_ID as zA}from"@solana/spl-token";function Ss(m="accountFlags"){let e=new Ln(m);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var Ks=O([$(5),Ss("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"),$(7)]);import{PublicKey as KT}from"@solana/web3.js";import{AccountLayout as CT,NATIVE_MINT as RT,TOKEN_2022_PROGRAM_ID as LT,TOKEN_PROGRAM_ID as OT,createAssociatedTokenAccountIdempotentInstruction as NT}from"@solana/spl-token";import hk from"bn.js";import Ms from"bn.js";var ck=new Ms(0);import yk from"bn.js";import Fs from"bn.js";var et=new Fs(1e6);import WT from"bn.js";import UT from"decimal.js";import{PublicKey as Uk,TransactionInstruction as Gk,Keypair as Xk,SystemProgram as Yk}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Qk,TOKEN_2022_PROGRAM_ID as Zk,TOKEN_PROGRAM_ID as $k}from"@solana/spl-token";var xk=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Ck=Buffer.from("amm_config","utf8"),Rk=Buffer.from("pool","utf8"),Lk=Buffer.from("pool_lp_mint","utf8"),Ok=Buffer.from("pool_vault","utf8"),Nk=Buffer.from("observation","utf8"),Mk=Buffer.from("permission","utf8"),Fk=Buffer.from("support_mint","utf8"),vk=Buffer.from("creator_fee_share","utf8");var _k=Buffer.from("locked_liquidity","utf8");var iT=ee("Raydium_cpmm"),rT={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 Vs=O([$(8),N("bump"),be("disableCreatePool"),Pe("index"),l("tradeFeeRate"),l("protocolFeeRate"),l("fundFeeRate"),l("createPoolFee"),h("protocolOwner"),h("fundOwner"),l("creatorFeeRate"),l("creatorFeeShareRate"),D(l(),14)]),rr=O([$(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"),be("enableCreatorFee"),D(N(),6),l("creatorFeesMintA"),l("creatorFeesMintB"),D(l(),28)]),uT=O([$(8),h("configId"),D(l(),30)]),cT=O([$(8),N("bump"),h("creator"),h("ammConfig"),l("shareRate"),D(l(),8)]);import{PublicKey as tx,SystemProgram as nx}from"@solana/web3.js";import{createTransferInstruction as ix,TOKEN_PROGRAM_ID as rx,TOKEN_2022_PROGRAM_ID as ax,createAssociatedTokenAccountIdempotentInstruction as sx,createSyncNativeInstruction as cx,createTransferCheckedInstruction as lx}from"@solana/spl-token";import ru from"bn.js";import px from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as $h,TOKEN_2022_PROGRAM_ID as jh,TOKEN_PROGRAM_ID as Jh}from"@solana/spl-token";import{SystemProgram as oI,TransactionInstruction as iI}from"@solana/web3.js";import Ws from"bn.js";var vh=Buffer.from("vault_auth_seed","utf8"),_h=Buffer.from("global_config","utf8"),Vh=Buffer.from("pool_vesting","utf8"),Eh=Buffer.from("platform_config","utf8"),Dh=Buffer.from("platform_fee_vault_auth_seed","utf8"),Wh=Buffer.from("creator_fee_vault_auth_seed","utf8"),qh=Buffer.from("platform_global_access","utf8"),Uh=Buffer.from("platform_allow_config","utf8"),Gh=Buffer.from("platform_curve_rule","utf8");var sI={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]),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]),createPlatformCurveRule:Buffer.from([148,71,180,136,122,144,59,21]),updatePlatformCurveRule:Buffer.from([90,100,206,196,54,117,120,139]),removePlatformCurveRule:Buffer.from([236,77,154,138,32,145,127,219]),closePlatformCurveRule:Buffer.from([194,114,82,45,136,88,169,159])};var uI=new Ws("18446744073709551615");var qs=O([l(),l("epoch"),N("curveType"),Pe("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"),D(l(),16)]),Us=O([l("totalLockedAmount"),l("cliffPeriod"),l("unlockPeriod"),l("startTime"),l("totalAllocatedShare")]),Gs=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"),Us.replicate("vestingSchedule"),h("configId"),h("platformId"),h("mintA"),h("mintB"),h("vaultA"),h("vaultB"),h("creator"),N("mintProgramFlag"),N("cpmmCreatorFeeOn"),l("platformVestingShare"),D(N(),54)]),dI=O([l(),l("epoch"),h("poolId"),h("beneficiary"),l("claimedAmount"),l("tokenShareAmount"),D(l(),8)]),zs=O([N("migrateType"),N("migrateCpmmFeeOn"),l("supply"),l("totalSellA"),l("totalFundRaisingB"),l("totalLockedAmount"),l("cliffPeriod"),l("unlockPeriod")]),pI=O([l("epoch"),N("index"),h("configId"),zs.replicate("bondingCurveParam"),D(l(),50)]),sr=O([l(),l("epoch"),h("platformClaimFeeWallet"),h("platformLockNftWallet"),l("platformScale"),l("creatorScale"),l("burnScale"),l("feeRate"),D(N(),64,"name"),D(N(),256,"web"),D(N(),256,"img"),h("cpConfigId"),l("creatorFeeRate"),h("transferFeeExtensionAuth"),h("platformVestingWallet"),l("platformVestingScale"),h("platformCpCreator"),N("restrictGlobalConfig"),N("restrictCurveParam"),h("curveRuleManager"),D(N(),78)]),Xs=O([N("field"),N("op"),z("value")]),Ys=O([Pe("groupId"),l("epoch"),yo(Xs,"constraints")]),Hs=O([l(),N("bump"),N("version"),h("platformId"),h("configId"),l("epoch"),D(l(),8),yo(Ys,"groups")]);import{TOKEN_2022_PROGRAM_ID as bI,TOKEN_PROGRAM_ID as gI}from"@solana/spl-token";import Qs from"bn.js";var CI=new Qs(1e6);import NI from"bn.js";import FI from"decimal.js";import pB from"bn.js";import yB from"decimal.js";import WI from"bn.js";import UI from"decimal.js";import JI from"bn.js";import tB from"decimal.js";import lr from"bn.js";import Mo from"decimal.js";var zn=class{static _multipler(e){return new Mo(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new Mo(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 lr(o.mul(this._Q64).toFixed(0))}};zn._Q64=new Mo(new lr(1).shln(64).toString());import{NATIVE_MINT as RS,TOKEN_2022_PROGRAM_ID as LS,TOKEN_PROGRAM_ID as OS,createAssociatedTokenAccountIdempotentInstruction as MS,createSyncNativeInstruction as FS,getTransferFeeConfig as vS,unpackMint as _S}from"@solana/spl-token";import xe from"bn.js";import{PublicKey as nu,SystemProgram as DS}from"@solana/web3.js";import YS from"decimal.js";var HS={initPriceX64:new xe("515752397214619"),supply:new xe(1e15),totalSellA:new xe(7931e11),totalFundRaisingB:new xe(85e9),totalFundRaisingBUSD:new xe(125e8),totalLockedAmount:new xe("0"),cliffPeriod:new xe("0"),unlockPeriod:new xe("0"),decimals:6,virtualA:new xe("1073471847374405"),virtualB:new xe("30050573465"),realA:new xe(0),realB:new xe(0),protocolFee:new xe(0),platformId:new nu("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new xe(0),cliffPeriod:new xe(0),unlockPeriod:new xe(0),startTime:new xe(0),totalAllocatedShare:new xe(0)}},QS=new xe(1e4);var ou={[fi.toBase58()]:3};var iu=O([$(5),$(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"),$(7)]);import{PublicKey as AK}from"@solana/web3.js";var IK=ee("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as NK,TOKEN_2022_PROGRAM_ID as MK,TOKEN_PROGRAM_ID as FK}from"@solana/spl-token";import{PublicKey as _K,SystemProgram as VK,TransactionInstruction as EK}from"@solana/web3.js";import WK from"bn.js";var Ux=new ru(0);import{PublicKey as au,Transaction as Fo,TransactionInstruction as su}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as uu}from"@solana/spl-token";import mr from"bn.js";var Fe=class extends Ve{static getPdaPoolId(e,t){return re([Fe.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,o){return re([Fe.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new mr(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=>Fe.getPdaPoolId(t,u).publicKey),a=[];for(let u=0;u<Fe.VERSION_PROJECT.length;u++)a.push(...r.map(p=>Fe.getPdaOwnerId(t,p,o,u).publicKey));let s=await _e(e,[...r,...a]),c=[];for(let u=0;u<s.length;u++){let p=Math.floor(u/n.length),g=u%n.length,d=r[g],f=a[u],y=s[g],b=s[n.length+u];if(!(y&&b)||y.data.length!==Fe.POOL_LAYOUT.span||b.data.length!==Fe.OWNER_LAYOUT.span)continue;let w=Fe.POOL_LAYOUT.decode(y.data),A=Fe.OWNER_LAYOUT.decode(b.data),T=w.openTime.toNumber(),B=w.endTime.toNumber(),P=A.tokenInfo.map(I=>I.debtAmount.gt(new mr(0))).filter(I=>!I).length!==3,k=i>T&&i<B&&w.status===1,S=P&&k;c.push({programId:t,poolId:d,ammId:w.ammId,ownerAccountId:f,snapshotLpAmount:A.lpAmount,project:Fe.VERSION_PROJECT[p],openTime:T,endTime:B,canClaim:S,canClaimErrorType:P?k?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:w.tokenInfo.map((I,K)=>({mintAddress:I.mintAddress,mintVault:I.mintVault,mintDecimals:I.mintDecimals,perLpLoss:I.perLpLoss,debtAmount:A.tokenInfo[K].debtAmount.add(A.tokenInfo[K].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:p}=await this.scope.account.getOrCreateTokenAccount({mint:c.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:c.mintAddress.equals(Ce.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!c.mintAddress.equals(Ce.WSOL.mint),associatedOnly:c.mintAddress.equals(Ce.WSOL.mint)?!1:t.associatedOnly});p&&o.addInstruction(p),r.push(u)}o.addInstruction({instructions:[Fe.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 p=[];for(let g of u.tokenInfo){let{account:d,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({mint:g.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:g.mintAddress.equals(Ce.WSOL.mint),createInfo:{payer:i,amount:0},skipCloseAccount:!g.mintAddress.equals(Ce.WSOL.mint),associatedOnly:g.mintAddress.equals(Ce.WSOL.mint)?!1:t.associatedOnly});f&&o.addInstruction(f),d&&(r[g.mintAddress.toString()]=d,p.push(d))}o.addInstruction({instructions:[Fe.makeClaimInstruction({programId:u.programId,poolInfo:u,ownerInfo:{wallet:i,ownerPda:u.ownerAccountId,claimAddress:p}})]})}let{transaction:a,signers:s}=o.build(),c=o.allInstructions;return uo(c,[i,...s.map(u=>u.publicKey)])?[{transaction:a,signer:s}]:[{transaction:new Fo().add(...c.slice(0,o.AllTxData.instructions.length-1)),signer:s},{transaction:new Fo().add(...c.slice(o.AllTxData.instructions.length-1)),signer:[]},{transaction:new Fo().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:uu,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 su({keys:i,programId:e,data:a})}},st=Fe;st.CLAIMED_NUM=3,st.POOL_LAYOUT=O([$(8),N("bump"),N("status"),l("openTime"),l("endTime"),h("ammId"),D(O([N("mintDecimals"),h("mintAddress"),h("mintVault"),l("perLpLoss"),l("totalClaimedAmount")]),Fe.CLAIMED_NUM,"tokenInfo"),D(l(),10,"padding")]),st.OWNER_LAYOUT=O([$(8),N("bump"),N("version"),h("poolId"),h("owner"),l("lpAmount"),D(O([h("mintAddress"),l("debtAmount"),l("claimedAmount")]),Fe.CLAIMED_NUM,"tokenInfo"),D(l(),4,"padding")]),st.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new au(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"];import{PublicKey as aC}from"@solana/web3.js";import{getTransferFeeConfig as uC,MintLayout as cC,TOKEN_2022_PROGRAM_ID as lC,TOKEN_PROGRAM_ID as mC,unpackMint as dC}from"@solana/spl-token";var DR=new Lt(2),WR=new Lt(3),qR=new Lt(5),jn=new Lt(10),UR=new Lt(100),GR=new Lt(1e3),zR=new Lt(1e4);function oo(m){return jn.pow(Be(m))}function Zn(m,e=1,t=[]){let n=[...m];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{createAssociatedTokenAccountIdempotentInstruction as bt,TOKEN_2022_PROGRAM_ID as tt,TOKEN_PROGRAM_ID as Qt}from"@solana/spl-token";import{PublicKey as R}from"@solana/web3.js";import ke from"bn.js";import gt from"decimal.js";var Xn=class extends Ve{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.default,mint1:o,mint2:i,ammConfig:r,initialPrice:a,computeBudgetConfig:s,txVersion:c,txTipConfig:u,feePayer:p}=e,g=this.createTxBuilder(p),[d,f,y]=new ke(new R(o.address).toBuffer()).gt(new ke(new R(i.address).toBuffer()))?[i,o,new gt(1).div(a)]:[o,i,a],b=G.priceToSqrtPriceX64(y,d.decimals,f.decimals),w=[],A=[];d.programId===tt.toBase58()&&A.push(Rt(t,new R(d.address)).publicKey),f.programId===tt.toBase58()&&A.push(Rt(t,new R(f.address)).publicKey),(await this.scope.connection.getMultipleAccountsInfo(A)).forEach((k,S)=>{k&&w.push(A[S])});let B=await j.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:d,mintB:f,ammConfigId:r.id,initialPriceX64:b,extendMintAccount:w});return g.addInstruction(B),g.addCustomComputeBudget(s),g.addTipInstruction(u),g.versionBuild({txVersion:c,extInfo:{address:q(F({},B.address),{observationId:B.address.observationId.toBase58(),exBitmapAccount:B.address.exBitmapAccount.toBase58(),programId:t.toString(),id:B.address.poolId.toString(),mintA:d,mintB:f,openTime:"0",vault:{A:B.address.mintAVault.toString(),B:B.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:F({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:B.address.poolId.toString(),mintA:d,mintB:f,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:[]},Vn)}})}async createCustomizablePool(e){var L;let{programId:t,owner:n=((L=this.scope.owner)==null?void 0:L.publicKey)||R.default,mint1:o,mint2:i,initialPrice:r,ammConfig:a,collectFeeOnMint:s,dynamicFeeConfig:c,computeBudgetConfig:u,txVersion:p,txTipConfig:g,feePayer:d,addSupportMintExt:f}=e;if(e.collectFeeOn!==void 0)throw Error("SDK no longer supports this parameter, please use collectFeeOnMint");let y=this.createTxBuilder(d),[b,w,A]=new ke(new R(o.address).toBuffer()).gt(new ke(new R(i.address).toBuffer()))?[i,o,new gt(1).div(r)]:[o,i,r],T=G.priceToSqrtPriceX64(A,b.decimals,w.decimals),B=[],P=[];f&&(b.programId===tt.toBase58()&&P.push(Rt(t,new R(b.address)).publicKey),w.programId===tt.toBase58()&&P.push(Rt(t,new R(w.address)).publicKey),(await this.scope.connection.getMultipleAccountsInfo(P)).forEach((V,v)=>{V&&B.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:B}),S=[];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()),S.push({pubkey:c,isSigner:!1,isWritable:!1})}let I;s===void 0?I=0:s.equals(k.mintA)?I=1:s.equals(k.mintB)?I=2:this.logAndCreateError("param collectFeeOnMint find error");let K=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,I,[...B,...S.map(U=>U.pubkey)],c);return y.addInstruction({instructions:[K]}),y.addCustomComputeBudget(u),y.addTipInstruction(g),y.versionBuild({txVersion:p,extInfo:{address:q(F({},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:F({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:I,feeOn:I===0?"Both":I===1?"TokenA":"TokenB",hasDynamicFee:!!c,tips:[],launchMigratePool:!1},Vn)}})}async createPermissionedPool(e){var V;let{programId:t,owner:n=((V=this.scope.owner)==null?void 0:V.publicKey)||R.default,mint1:o,mint2:i,initialPrice:r,ammConfig:a,collectFeeOnMint:s,dynamicFeeConfig:c,computeBudgetConfig:u,txVersion:p,txTipConfig:g,feePayer:d,addSupportMintExt:f}=e;if(e.collectFeeOn!==void 0)throw Error("SDK no longer supports this parameter, please use collectFeeOnMint");let y=this.createTxBuilder(d),[b,w,A]=new ke(new R(o.address).toBuffer()).gt(new ke(new R(i.address).toBuffer()))?[i,o,new gt(1).div(r)]:[o,i,r],T=G.priceToSqrtPriceX64(A,b.decimals,w.decimals),B=[],P=[];f&&(b.programId===tt.toBase58()&&P.push(Rt(t,new R(b.address)).publicKey),w.programId===tt.toBase58()&&P.push(Rt(t,new R(w.address)).publicKey),(await this.scope.connection.getMultipleAccountsInfo(P)).forEach((_,E)=>{_&&B.push(P[E])}));let k=d!=null?d:this.scope.ownerPubKey,S=Math.floor(Math.random()*Math.pow(2,16))+1,{address:I}=await j.createPermissionedPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:b,mintB:w,ammConfigId:a.id,initialPriceX64:T,extendMintAccount:B,payer:k,seedIndex:S}),K=[];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()),K.push({pubkey:c,isSigner:!1,isWritable:!1})}let L;s===void 0?L=0:s.equals(I.mintA)?L=1:s.equals(I.mintB)?L=2:this.logAndCreateError("param collectFeeOnMint find error");let U=j.createPermissionedPoolInstruction(t,k,k,I.permission,a.id,I.poolId,I.mintA,I.mintB,I.mintAVault,I.mintBVault,I.observationId,I.exBitmapAccount,I.mintAProgram,I.mintBProgram,T,L,S,[...B,...K.map(v=>v.pubkey)],c);return y.addInstruction({instructions:[U]}),y.addCustomComputeBudget(u),y.addTipInstruction(g),y.versionBuild({txVersion:p,extInfo:{address:q(F({},I),{observationId:I.observationId.toBase58(),exBitmapAccount:I.exBitmapAccount.toBase58(),programId:t.toString(),id:I.poolId.toString(),mintA:b,mintB:w,openTime:"0",vault:{A:I.mintAVault.toString(),B:I.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:F({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:I.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:L,feeOn:L===0?"Both":L===1?"TokenA":"TokenB",hasDynamicFee:!!c,tips:[],launchMigratePool:!1},Vn)}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,base:r=null,baseAmount:a,otherAmountMax:s,liquidity:c=new ke(0),nft2022:u,associatedOnly:p=!0,checkCreateATAOwner:g=!1,withMetadata:d="create",getEphemeralSigners:f,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),B=null,P=null,k=n.useSOLBalance&&e.mintA.address===Y.toString(),S=n.useSOLBalance&&e.mintB.address===Y.toString(),[I,K]=r==="MintA"?[a,s]:[s,a],{account:L,instructionParams:U}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new R(e.mintA.address),owner:this.scope.ownerPubKey,createInfo:k||I.isZero()?{payer:this.scope.ownerPubKey,amount:I}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:k?!1:p,checkCreateATAOwner:g});L&&(B=L),T.addInstruction(U||{});let{account:V,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new R(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:S||K.isZero()?{payer:this.scope.ownerPubKey,amount:K}:void 0,skipCloseAccount:!S,notUseTokenAccount:S,associatedOnly:S?!1:p,checkCreateATAOwner:g});V&&(P=V),T.addInstruction(v||{}),(!B||!P)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",{ownerTokenAccountA:B==null?void 0:B.toBase58(),ownerTokenAccountB:P==null?void 0:P.toBase58()});let _=t!=null?t:await this.getClmmPoolKeys(e.id.toString()),E=await j.openPositionFromBaseInstructions({poolInfo:e,poolKeys:_,ownerInfo:q(F({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:B,tokenAccountB:P}),tickLower:o,tickUpper:i,base:r,baseAmount:a,otherAmountMax:s,liquidity:c,withMetadata:d,getEphemeralSigners:f,nft2022:u});return T.addInstruction(E),T.addCustomComputeBudget(y),T.addTipInstruction(b),T.versionBuild({txVersion:w,extInfo:F({},E.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:p=!1,withMetadata:g="create",txVersion:d,computeBudgetConfig:f,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),B=null,P=null,k=n.useSOLBalance&&e.mintA.address===Y.toBase58(),S=n.useSOLBalance&&e.mintB.address===Y.toBase58(),{account:I,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new R(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:p});I&&(B=I),T.addInstruction(K||{});let{account:L,instructionParams:U}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new R(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:S||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!S,notUseTokenAccount:S,associatedOnly:S?!1:u,checkCreateATAOwner:p});L&&(P=L),T.addInstruction(U||{}),(B===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()),v=await j.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:V,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:B,tokenAccountB:P},tickLower:a,tickUpper:s,liquidity:c,amountMaxA:o,amountMaxB:i,base:r,withMetadata:g,getEphemeralSigners:b,nft2022:w});return T.addInstruction(v),T.addCustomComputeBudget(f),T.addTipInstruction(y),T.versionBuild({txVersion:d,extInfo:{address:v.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:p,txTipConfig:g,txVersion:d,feePayer:f}=e,y=this.createTxBuilder(f),b,w,A=s.useSOLBalance&&t.mintA.address===Y.toString(),T=s.useSOLBalance&&t.mintB.address===Y.toString(),{account:B,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new R(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});B&&(b=B),y.addInstruction(P||{});let{account:k,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new R(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(S||{}),!b&&!w&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let I=n!=null?n:await this.getClmmPoolKeys(t.id),K=j.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:I,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(tt)});return y.addInstruction(K),y.addCustomComputeBudget(p),y.addTipInstruction(g),y.versionBuild({txVersion:d,extInfo:{address:K.address}})}async increasePositionFromBase(e){var K;let{poolInfo:t,ownerPosition:n,base:o,baseAmount:i,otherAmountMax:r,ownerInfo:a,associatedOnly:s=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:u,txTipConfig:p,txVersion:g,feePayer:d}=e,f=this.createTxBuilder(d),y,b,w=a.useSOLBalance&&t.mintA.address===Y.toString(),A=a.useSOLBalance&&t.mintB.address===Y.toString(),{account:T,instructionParams:B}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new R(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),f.addInstruction(B||{});let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new R(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),f.addInstruction(k||{}),!y&&!b&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=await this.getClmmPoolKeys(t.id),I=j.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:S,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:y,tokenAccountB:b},base:o,baseAmount:i,otherAmountMax:r,nft2022:(K=await this.scope.connection.getAccountInfo(n.nftMint))==null?void 0:K.owner.equals(tt)});return f.addInstruction(I),f.addCustomComputeBudget(u),f.addTipInstruction(p),f.versionBuild({txVersion:g,extInfo:{address:I.address}})}async decreaseLiquidity(e){var v;let{poolInfo:t,poolKeys:n,ownerPosition:o,ownerInfo:i,amountMinA:r,amountMinB:a,liquidity:s,associatedOnly:c=!0,checkCreateATAOwner:u=!1,computeBudgetConfig:p,txTipConfig:g,txVersion:d,feePayer:f}=e;this.scope.availability.removeConcentratedPosition===!1&&this.logAndCreateError("remove position feature disabled in your region");let y=this.createTxBuilder(f),b=i.useSOLBalance&&t.mintA.address===Y.toString(),w=i.useSOLBalance&&t.mintB.address===Y.toString(),A,T,{account:B,instructionParams:P}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintA.programId,mint:new R(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=B,P&&y.addInstruction(P);let{account:k,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:t.mintB.programId,mint:new R(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,S&&y.addInstruction(S);let I=n!=null?n:await this.getClmmPoolKeys(t.id),K=[];for(let _ of I.rewardInfos){let E=i.useSOLBalance&&_.mint.address===Y.toString(),Z;if(_.mint.address===t.mintA.address)Z=A;else if(_.mint.address===t.mintB.address)Z=T;else{let{account:me,instructionParams:ue}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R(_.mint.programId),mint:new R(_.mint.address),notUseTokenAccount:E,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!E,associatedOnly:E?!1:c,checkCreateATAOwner:u});Z=me,ue&&y.addInstruction(ue)}K.push(Z)}!A&&!T&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccountRawInfos);let L=(v=await this.scope.connection.getAccountInfo(o.nftMint))==null?void 0:v.owner.equals(tt),U=await j.decreaseLiquidityInstructions({poolInfo:t,poolKeys:I,ownerPosition:o,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:A,tokenAccountB:T,rewardAccounts:K},liquidity:s,amountMinA:r,amountMinB:a,nft2022:L});y.addInstruction({instructions:U.instructions,instructionTypes:[J.ClmmDecreasePosition]});let V=F({},U.address);if(i.closePosition){let _=await j.closePositionInstructions({poolInfo:t,poolKeys:I,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:o,nft2022:L});y.addInstruction({endInstructions:_.instructions,endInstructionTypes:_.instructionTypes}),V=F(F({},V),_.address)}return y.addCustomComputeBudget(p),y.addTipInstruction(g),y.versionBuild({txVersion:d,extInfo:{address:V}})}async lockPosition(e){var f;let{programId:t=sn,authProgramId:n=Nn,poolProgramId:o=kt,ownerPosition:i,payer:r,computeBudgetConfig:a,txTipConfig:s,txVersion:c,getEphemeralSigners:u,feePayer:p}=e,g=this.createTxBuilder(p),d=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:(f=await this.scope.connection.getAccountInfo(i.nftMint))==null?void 0:f.owner.equals(tt)});return g.addInstruction(d),g.addCustomComputeBudget(a),g.addTipInstruction(s),g.versionBuild({txVersion:c,extInfo:d.address})}async harvestLockPosition(e){let{programId:t=sn,authProgramId:n=Nn,clmmProgram:o=kt,poolKeys:i,lockData:r,ownerInfo:a={useSOLBalance:!0},associatedOnly:s=!0,checkCreateATAOwner:c=!1,computeBudgetConfig:u,txTipConfig:p,txVersion:g,feePayer:d}=e,f=i||await this.getClmmPoolKeys(r.poolId.toString()),y=this.createTxBuilder(d),b=await this.scope.connection.getAccountInfo(r.positionId);b||this.logger.logWithError("position not found",r.positionId);let w=En.decode(b.data),A=a.useSOLBalance&&f.mintA.address===Y.toString(),T=a.useSOLBalance&&f.mintB.address===Y.toString(),B,P,{account:k,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f.mintA.programId,mint:new R(f.mintA.address),notUseTokenAccount:A,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!A,associatedOnly:A?!1:s,checkCreateATAOwner:c});B=k,S&&y.addInstruction(S);let{account:I,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f.mintB.programId,mint:new R(f.mintB.address),notUseTokenAccount:T,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!T,associatedOnly:T?!1:s,checkCreateATAOwner:c});P=I,K&&y.addInstruction(K);let L={},U=[];for(let ve of f.rewardInfos){let Ne=a.useSOLBalance&&ve.mint.address===Y.toString(),Ie=L[ve.mint.address];if(!Ie){let{account:Yn,instructionParams:vo}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R(ve.mint.programId),mint:new R(ve.mint.address),notUseTokenAccount:Ne,owner:this.scope.ownerPubKey,skipCloseAccount:!Ne,createInfo:{payer:this.scope.ownerPubKey,amount:0},associatedOnly:Ne?!1:s});Ie=Yn,vo&&y.addInstruction(vo)}L[ve.mint.address]=Ie,U.push(Ie)}let V=Ut(t,r.lockNftMint).publicKey,v=Q(this.scope.ownerPubKey,r.lockNftMint,Qt).publicKey,_=H.getTickArrayStartIndex(w.tickLower,f.config.tickSpacing),E=H.getTickArrayStartIndex(w.tickUpper,f.config.tickSpacing),{publicKey:Z}=oe(new R(f.programId),r.poolId,_),{publicKey:me}=oe(new R(f.programId),r.poolId,E),{publicKey:ue}=it(new R(f.programId),r.poolId,w.tickLower,w.tickUpper),pe=[];for(let ve=0;ve<f.rewardInfos.length;ve++){let Ne=f.rewardInfos[ve].mint.address,Ie=L[Ne];Ie&&pe.push({poolRewardVault:new R(f.rewardInfos[ve].vault),ownerRewardVault:Ie,rewardMint:new R(Ne)})}let Pt=await j.harvestLockPositionInstructionV2({programId:t,auth:n,lockPositionId:V,clmmProgram:o,lockOwner:this.scope.ownerPubKey,lockNftMint:r.lockNftMint,lockNftAccount:v,positionNftAccount:r.nftAccount,positionId:r.positionId,poolId:r.poolId,protocolPosition:ue,vaultA:new R(f.vault.A),vaultB:new R(f.vault.B),tickArrayLower:Z,tickArrayUpper:me,userVaultA:B,userVaultB:P,mintA:new R(f.mintA.address),mintB:new R(f.mintB.address),rewardAccounts:pe,exTickArrayBitmap:de(o,r.poolId).publicKey});return y.addInstruction({instructions:[Pt],instructionTypes:[J.ClmmHarvestLockPosition]}),y.addCustomComputeBudget(u),y.addTipInstruction(p),y.versionBuild({txVersion:g})}async closePosition({poolInfo:e,poolKeys:t,ownerPosition:n,txVersion:o,computeBudgetConfig:i,txTipConfig:r,feePayer:a}){var p;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:(p=await this.scope.connection.getAccountInfo(n.nftMint))==null?void 0:p.owner.equals(tt)});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()===Y.toString(),p=n.perSecond.mul(n.endTime-n.openTime),{account:g,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R(n.mint.programId),mint:new R(n.mint.address),notUseTokenAccount:!!u,skipCloseAccount:!u,owner:this.scope.ownerPubKey,createInfo:u?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ke(new gt(p.toFixed(0)).gte(p)?p.toFixed(0):p.add(1).toFixed(0))}:void 0,associatedOnly:u?!1:o,checkCreateATAOwner:i});d&&c.addInstruction(d),g||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),y=j.initRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:g},rewardInfo:{programId:new R(n.mint.programId),mint:new R(n.mint.address),openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:Gt(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 d of o)d.endTime<=d.openTime&&this.logAndCreateError("reward time error","rewardInfo",d);let p=this.createTxBuilder(u),g={};for(let d of o){let f=n.useSOLBalance&&d.mint.address===Y.toString(),y=d.perSecond.mul(d.endTime-d.openTime),{account:b,instructionParams:w}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R(d.mint.programId),mint:new R(d.mint.address),notUseTokenAccount:!!f,skipCloseAccount:!f,owner:this.scope.ownerPubKey,createInfo:f?{payer:n.feePayer||this.scope.ownerPubKey,amount:new ke(new gt(y.toFixed(0)).gte(y)?y.toFixed(0):y.add(1).toFixed(0))}:void 0,associatedOnly:f?!1:i,checkCreateATAOwner:r});w&&p.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(d.mint.programId),mint:new R(d.mint.address),openTime:d.openTime,endTime:d.endTime,emissionsPerSecondX64:Gt(d.perSecond)}});g=F(F({},g),T.address),p.addInstruction(T)}return p.addCustomComputeBudget(a),p.addTipInstruction(s),p.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),p=t.useSOLBalance&&n.mint.equals(Y),{account:g,instructionParams:d}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:n.programId,mint:n.mint,notUseTokenAccount:p,owner:this.scope.ownerPubKey,createInfo:p?{payer:t.feePayer||this.scope.ownerPubKey,amount:new ke(new gt(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:p?!1:o,checkCreateATAOwner:i});d&&u.addInstruction(d),g||this.logAndCreateError("no money","ownerRewardAccount",this.scope.account.tokenAccountRawInfos);let f=await this.getClmmPoolKeys(e.id),y=j.setRewardInstructions({poolInfo:e,poolKeys:f,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccount:g},rewardInfo:{mint:n.mint,openTime:n.openTime,endTime:n.endTime,emissionsPerSecondX64:Gt(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 p=this.createTxBuilder(u),g={};for(let d of o){d.endTime<=d.openTime&&this.logAndCreateError("reward time error","rewardInfo",d);let f=n.useSOLBalance&&d.mint.address===Y.toString(),{account:y,instructionParams:b}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R(d.mint.programId),mint:new R(d.mint.address),notUseTokenAccount:f,owner:this.scope.ownerPubKey,createInfo:f?{payer:n.feePayer||this.scope.ownerPubKey,amount:new ke(new gt(d.perSecond.mul(d.endTime-d.openTime).toFixed(0)).gte(d.perSecond.mul(d.endTime-d.openTime))?d.perSecond.mul(d.endTime-d.openTime).toFixed(0):d.perSecond.mul(d.endTime-d.openTime).add(1).toFixed(0))}:void 0,associatedOnly:f?!1:i,checkCreateATAOwner:r});b&&p.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(d.mint.address),openTime:d.openTime,endTime:d.endTime,emissionsPerSecondX64:Gt(d.perSecond)}});p.addInstruction(A),g=F(F({},g),A.address)}return p.addCustomComputeBudget(a),p.addTipInstruction(s),p.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 p=this.createTxBuilder(c),g=t.useSOLBalance&&n.equals(Y),{account:d,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R(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});f&&p.addInstruction(f),d||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:d},rewardMint:n});return p.addInstruction(b),p.addCustomComputeBudget(r),p.addTipInstruction(a),p.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 p of n){let g=e.rewardDefaultInfos.find(A=>A.mint.address===p.toString());if(!g){this.logAndCreateError("reward mint error","not found reward mint",p);continue}let d=t.useSOLBalance&&p.equals(Y),{account:f,instructionParams:y}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R(g.mint.programId),mint:p,notUseTokenAccount:d,owner:this.scope.ownerPubKey,skipCloseAccount:!d,createInfo:{payer:t.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:d?!1:o,checkCreateATAOwner:i});f||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:f},rewardMint:p});c.addInstruction(w),u=F(F({},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:p,txVersion:g}){let d=new R(e.id),f=new R(e.programId),y=t?new R(e.mintA.address):new R(e.mintB.address),b=t?new R(e.mintB.address):new R(e.mintA.address),w=new R(e[t?"mintA":"mintB"].programId),A=new R(e[t?"mintB":"mintA"].programId),T=y.equals(Y),B=b.equals(Y),P=a.useSOLBalance&&T,k=a.useSOLBalance&&B,S=this.createTxBuilder(),I=P||!s?void 0:Q(this.scope.ownerPubKey,y,w).publicKey;if(I)S.addInstruction({instructions:[bt(this.scope.ownerPubKey,I,this.scope.ownerPubKey,y,w)]});else{let{account:ue,instructionParams:pe}=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});I=ue,pe&&S.addInstruction(pe)}let K=k||!s?void 0:Q(this.scope.ownerPubKey,b,A).publicKey;if(K)S.addInstruction({instructions:[bt(this.scope.ownerPubKey,K,this.scope.ownerPubKey,b,A)]});else{let{account:ue,instructionParams:pe}=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:0},associatedOnly:!k});K=ue,pe&&S.addInstruction(pe)}let L=zi(f,this.scope.ownerPubKey,i).publicKey,U=await this.scope.connection.getAccountInfo(L),V=U?Ni.decode(U.data).orderNonce:new ke(0),v=Gi(f,c||this.scope.ownerPubKey,L,V).publicKey,_=H.getTickArrayStartIndex(n,e.config.tickSpacing),E=oe(f,d,_).publicKey,Z=ze(f,d,new R(e[t?"mintA":"mintB"].address)).publicKey,me=ze(f,d,new R(e[t?"mintB":"mintA"].address)).publicKey;return S.addInstruction({instructions:[j.openLimitOrderInstruction(f,c||this.scope.ownerPubKey,d,E,L,v,I,K,Z,me,y,b,w,i,t,n,o,r)]}),S.addCustomComputeBudget(u),S.addTipInstruction(p),S.versionBuild({txVersion:g,extInfo:{limitOrder:v}})}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(e.id),p=new R(e.programId),g=await this.scope.connection.getAccountInfo(t);g||this.logAndCreateError(`limit order ${t.toBase58()} not exist`);let d=xt.decode(g.data),f=d.zeroForOne?new R(e.mintA.address):new R(e.mintB.address),y=new R(e[d.zeroForOne?"mintA":"mintB"].programId),b=f.equals(Y),w=o.useSOLBalance&&b,A=this.createTxBuilder(),T=w||!i?void 0:Q(this.scope.ownerPubKey,f,y).publicKey;if(T)A.addInstruction({instructions:[bt(this.scope.ownerPubKey,T,this.scope.ownerPubKey,f,y)]});else{let{account:S,instructionParams:I}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:y,mint:f,notUseTokenAccount:w,owner:this.scope.ownerPubKey,skipCloseAccount:!w,createInfo:{payer:o.feePayer||this.scope.ownerPubKey,amount:n},associatedOnly:!w});T=S,I&&A.addInstruction(I)}let B=ze(p,u,new R(e[d.zeroForOne?"mintA":"mintB"].address)).publicKey,P=H.getTickArrayStartIndex(d.tick,e.config.tickSpacing),k=oe(p,u,P).publicKey;return A.addInstruction({instructions:[j.increaseLimitOrderInstruction(p,r||this.scope.ownerPubKey,d.poolId,k,t,T,B,f,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:p,txVersion:g,forerunCreate:d}){let f=new R(e.id),y=new R(e.programId),b=n;if(!b){let ue=await this.scope.connection.getAccountInfo(t);ue||this.logAndCreateError(`limit order ${t.toBase58()} not exist`),b=xt.decode(ue.data)}let w=o.muln(1e4-i).divn(1e4),A=ht.getUnFilledAmount({orderInfo:b});(A.isZero()||o.gt(A))&&this.logAndCreateError(`amount should be less than unfulfilled amount: ${A.toString()}, amount: ${o.toString()}`);let[T,B]=b.zeroForOne?[new R(e.mintA.address),new R(e.mintB.address)]:[new R(e.mintB.address),new R(e.mintA.address)],[P,k]=b.zeroForOne?[new R(e.mintA.programId),new R(e.mintB.programId)]:[new R(e.mintB.programId),new R(e.mintA.programId)],[S,I]=[T.equals(Y),B.equals(Y)],[K,L]=[a.useSOLBalance&&S,a.useSOLBalance&&I],U=this.createTxBuilder(),V=K||!s?void 0:Q(this.scope.ownerPubKey,T,P).publicKey,v=L||!s?void 0:Q(this.scope.ownerPubKey,B,k).publicKey;if(V)U.addInstruction({instructions:[bt(this.scope.ownerPubKey,V,this.scope.ownerPubKey,T,P)]});else{let{account:ue,instructionParams:pe}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:P,mint:T,notUseTokenAccount:K,owner:this.scope.ownerPubKey,skipCloseAccount:!K,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:!K});V=ue,pe&&U.addInstruction(pe)}if(v)U.addInstruction({instructions:[bt(this.scope.ownerPubKey,v,this.scope.ownerPubKey,B,k)]});else{let{account:ue,instructionParams:pe}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:k,mint:B,notUseTokenAccount:L,owner:this.scope.ownerPubKey,skipCloseAccount:!L,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:!L});v=ue,pe&&U.addInstruction(pe)}let[_,E]=[ze(y,f,T).publicKey,ze(y,f,B).publicKey],Z=H.getTickArrayStartIndex(b.tick,e.config.tickSpacing),me=oe(y,f,Z).publicKey;return U.addInstruction({instructions:[j.decreaseLimitOrderInstruction(y,c||this.scope.ownerPubKey,f,me,t,V,v,_,E,T,B,o,w,r)]}),U.addCustomComputeBudget(u),U.addTipInstruction(p),U.versionBuild({txVersion:g,extInfo:{forerunCreate:d}})}async closeLimitOrder({programId:e=kt,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 p=xt.decode(u.data),g=ht.getUnFilledAmount({orderInfo:p});!n&&!g.isZero()&&this.logAndCreateError(`unfulfilled amount should be 0, (${g.toString()} remaining), please withdraw first or set autoWithdraw: true`);let d=this.createTxBuilder(),f=(await this.scope.api.fetchPoolById({ids:p.poolId.toBase58()}))[0];f||(f=(await this.getSimplePoolInfo(p.poolId)).poolInfo);let y=await Ue.fetchTickArrayInfo({connection:this.scope.connection,programId:e,poolId:p.poolId,tick:p.tick,tickSpacing:f.config.tickSpacing}),b=ht.settleFilledOrder({orderInfo:p,tickInfo:y.ticks.find(w=>w.tick===p.tick)});if(g.isZero()){if(!b.isZero()){let w=await this.settleLimitOrder({limitOrder:t});d.addInstruction(F({},w.builder.AllTxData))}}else{let{builder:w}=await this.decreaseLimitOrder({poolInfo:f,limitOrder:t,limitOrderInfo:p,amount:g,tickArrayBitmap:o,slippage:i,txVersion:0});d.addInstruction({instructions:w.allInstructions})}return d.addInstruction({instructions:[j.closeLimitOrderInstruction(e,r||this.scope.ownerPubKey,this.scope.ownerPubKey,t)]}),d.addCustomComputeBudget(a),d.addTipInstruction(s),d.versionBuild({txVersion:c})}async closeAllLimitOrder({programId:e=kt,limitOrders:t,autoWithdraw:n=!0,slippage:o=1e4,feePayer:i,computeBudgetConfig:r,txVersion:a}){let s=this.createTxBuilder(),u=(await _e(this.scope.connection,t)).map((A,T)=>A?q(F({},xt.decode(A.data)),{pda:t[T]}):null),p=u.filter(Boolean),g=p.map(A=>A.poolId.toBase58()),d=(await this.scope.api.fetchPoolById({ids:g.join(",")})).filter(Boolean),f={};d.forEach(A=>f[A.id]=A);let y=await Ue.fetchMultipleTickArrayInfo({connection:this.scope.connection,tickInfoList:p.map(A=>({programId:e,poolId:A.poolId,tick:A.tick,tickSpacing:f[A.poolId.toString()].config.tickSpacing}))}),b={};y.forEach((A,T)=>{!A||(b[p[T].pda.toBase58()]=A)});let w=0;for(let A of t){let T=u[w];if(!T){w++;continue}let B=ht.getUnFilledAmount({orderInfo:T});!n&&!B.isZero()&&this.logAndCreateError(`${A.toBase58()} order unfulfilled amount should be 0 (${B.toString()} remaining), please withdraw first or set autoWithdraw: true`);let P=f[T.poolId.toBase58()],k=b[A.toBase58()],S=ht.settleFilledOrder({orderInfo:T,tickInfo:k.ticks.find(I=>I.tick===T.tick)});if(B.isZero()){if(!S.isZero()){let I=await this.settleLimitOrder({limitOrder:A,forerunCreate:!0});s.addInstruction(F({},I.builder.AllTxData))}}else{let{builder:I}=await this.decreaseLimitOrder({poolInfo:P,limitOrder:A,limitOrderInfo:T,amount:B,slippage:o,txVersion:0,forerunCreate:!0});s.addInstruction({instructions:I.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=xt.decode(c.data),p=(await this.scope.api.fetchPoolById({ids:u.poolId.toBase58()}))[0];p||(p=(await this.getSimplePoolInfo(u.poolId)).poolInfo);let g=u.zeroForOne?p.mintB:p.mintA,[d,f]=[new R(g.address),new R(g.programId)],y=new R(p.programId),b=this.createTxBuilder(),w=d.equals(Y),A=n.useSOLBalance&&w,T=A||!o?void 0:Q(this.scope.ownerPubKey,d,f).publicKey;if(T)b.addInstruction({instructions:[bt(this.scope.ownerPubKey,T,this.scope.ownerPubKey,d,f)]});else{let{account:P,instructionParams:k}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:f,mint:d,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 B=H.getTickArrayStartIndex(u.tick,p.config.tickSpacing);return b.addInstruction({instructions:[j.settleLimitOrderInstruction(y,t||this.scope.ownerPubKey,u.poolId,oe(y,u.poolId,B).publicKey,e,T,ze(y,u.poolId,d).publicKey,d,f)]}),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 _e(this.scope.connection,e),s=[],c=a.map((d,f)=>{if(!d)return;let y=xt.decode(d.data);return s.push(y.poolId.toString()),q(F({},y),{pda:e[f]})}),u=await this.scope.api.fetchPoolById({ids:s.join(",")});u.filter(Boolean).length||(u=(await Promise.all(s.map(f=>this.getSimplePoolInfo(f)))).map(f=>f.poolInfo));let p=this.createTxBuilder(),g={};for(let d of c){if(!d)continue;let f=u.find(S=>S.id===d.poolId.toBase58());if(!f)continue;let y=new R(f.programId),b=new R(d.zeroForOne?f.mintB.address:f.mintA.address),w=b.equals(Y),A=n.useSOLBalance&&w,T=new R(w?Qt:(await this.scope.token.getTokenInfo(b)).programId),B=g[b.toBase58()],P=A||!o?void 0:Q(this.scope.ownerPubKey,b,T).publicKey;if(B)P=B;else{if(P)p.addInstruction({instructions:[bt(this.scope.ownerPubKey,P,this.scope.ownerPubKey,b,T)]});else{let{account:S,instructionParams:I}=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=S,I&&p.addInstruction(I)}g[b.toBase58()]=P}let k=H.getTickArrayStartIndex(d.tick,f.config.tickSpacing);p.addInstruction({instructions:[j.settleLimitOrderInstruction(y,t||this.scope.ownerPubKey,d.poolId,oe(y,d.poolId,k).publicKey,d.pda,P,ze(y,d.poolId,b).publicKey,b,T)]})}return r===0?p.sizeCheckBuildV0({computeBudgetConfig:i}):p.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:p=!1,txVersion:g,computeBudgetConfig:d,txTipConfig:f,feePayer:y}){let b=this.createTxBuilder(y),w=n.toString()===e.mintA.address.toString(),A=s.useSOLBalance&&e.mintA.address.toString()===Y.toBase58(),T=s.useSOLBalance&&e.mintB.address.toString()===Y.toBase58(),B;!r||r.equals(new gt(0))?B=w?$e.add(new ke(1)):je.sub(new ke(1)):B=G.priceToSqrtPriceX64(r,e.mintA.decimals,e.mintB.decimals);let P;if(!P){let{account:I,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new R(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:p});P=I,K&&b.addInstruction(K)}let k;if(!k){let{account:I,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new R(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:p});k=I,K&&b.addInstruction(K)}(!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 S=t!=null?t:await this.getClmmPoolKeys(e.id.toString());return b.addInstruction(j.makeSwapBaseInInstructions({poolInfo:q(F({},e),{id:e.id.toString(),programId:e.programId.toString()}),poolKeys:S,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:P,tokenAccountB:k},inputMint:new R(n),amountIn:o,amountOutMin:i,sqrtPriceLimitX64:W,remainingAccounts:c})),b.addCustomComputeBudget(d),b.addTipInstruction(f),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:p=!1,txVersion:g,computeBudgetConfig:d,txTipConfig:f,feePayer:y}){let b=this.createTxBuilder(y),w=n.toString()===e.mintB.address.toString(),A=s.useSOLBalance&&e.mintA.address.toString()===Y.toBase58(),T=s.useSOLBalance&&e.mintB.address.toString()===Y.toBase58(),B;!r||r.equals(new gt(0))?B=w?$e.add(new ke(1)):je.sub(new ke(1)):B=G.priceToSqrtPriceX64(r,e.mintA.decimals,e.mintB.decimals);let P;if(!P){let{account:I,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintA.programId,mint:new R(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:p});P=I,K&&b.addInstruction(K)}let k;if(!k){let{account:I,instructionParams:K}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new R(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:p});k=I,K&&b.addInstruction(K)}(!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 S=t!=null?t:await this.getClmmPoolKeys(e.id.toString());return b.addInstruction(j.makeSwapBaseOutInstructions({poolInfo:q(F({},e),{id:e.id.toString(),programId:e.programId.toString()}),poolKeys:S,observationId:a,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:P,tokenAccountB:k},outputMint:new R(n),amountOut:o,amountInMax:i,sqrtPriceLimitX64:W,remainingAccounts:c})),b.addCustomComputeBudget(d),b.addTipInstruction(f),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:p=sn,lockAuth:g=Nn,clmmProgram:d=kt}){var T,B;let f={};for(let P of this.scope.account.tokenAccountRawInfos)i?Q(this.scope.ownerPubKey,P.accountInfo.mint,a).publicKey.equals(P.pubkey)&&(f[P.accountInfo.mint.toString()]=P.pubkey):f[P.accountInfo.mint.toString()]=P.pubkey;let y=Object.values(t).flat().map(P=>P.nftMint),b=await De(this.scope.connection,y.map(P=>({pubkey:P}))),w={};b.forEach(P=>{var k,S;w[P.pubkey.toBase58()]=(S=(k=P==null?void 0:P.accountInfo)==null?void 0:k.owner)!=null?S:null});let A=this.createTxBuilder(u);for(let P of Object.values(e)){if(t[P.id]===void 0||!t[P.id].find(_=>!_.liquidity.isZero()||_.rewardInfos.find(E=>!E.rewardAmountOwed.isZero())))continue;let k=P,S=o.useSOLBalance&&k.mintA.address===Y.toString(),I=o.useSOLBalance&&k.mintB.address===Y.toString(),K=f[k.mintA.address];if(!K)if(S){let{account:_,instructionParams:E}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:k.mintA.programId,mint:new R(k.mintA.address),notUseTokenAccount:S,owner:this.scope.ownerPubKey,skipCloseAccount:!S,createInfo:{payer:o.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:S?!1:i,checkCreateATAOwner:r});K=_,E&&A.addInstruction(E)}else{let _=new R(k.mintA.address);K=this.scope.account.getAssociatedTokenAccount(_,new R(k.mintA.programId)),A.addInstruction({instructions:[bt(this.scope.ownerPubKey,K,this.scope.ownerPubKey,_,new R(k.mintA.programId))]})}let L=f[k.mintB.address];if(!L)if(I){let{account:_,instructionParams:E}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:k.mintB.programId,mint:new R(k.mintB.address),notUseTokenAccount:I,owner:this.scope.ownerPubKey,skipCloseAccount:!I,createInfo:{payer:o.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:I?!1:i,checkCreateATAOwner:r});L=_,E&&A.addInstruction(E)}else{let _=new R(k.mintB.address);L=this.scope.account.getAssociatedTokenAccount(_,new R(k.mintB.programId)),A.addInstruction({instructions:[bt(this.scope.ownerPubKey,L,this.scope.ownerPubKey,_,new R(k.mintB.programId))]})}f[k.mintA.address]=K,f[k.mintB.address]=L;let U=[];for(let _ of k.rewardDefaultInfos){let E=o.useSOLBalance&&_.mint.address===Y.toString(),Z=f[_.mint.address];if(!Z){let{account:me,instructionParams:ue}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R(_.mint.programId),mint:new R(_.mint.address),notUseTokenAccount:E,owner:this.scope.ownerPubKey,skipCloseAccount:!E,createInfo:{payer:o.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:E?!1:i});Z=me,ue&&A.addInstruction(ue)}f[_.mint.address]=Z,U.push(Z)}let V=await this.getClmmPoolKeys(k.id),v=[];for(let _=0;_<V.rewardInfos.length;_++)v.push({poolRewardVault:new R(V.rewardInfos[_].vault),ownerRewardVault:U[_],rewardMint:new R(V.rewardInfos[_].mint.address)});for(let _ of t[P.id]){let E=(T=n==null?void 0:n[P.id])==null?void 0:T[_.nftMint.toBase58()];if(E){let Z=Q(this.scope.ownerPubKey,E.lockNftMint,Qt).publicKey,me=H.getTickArrayStartIndex(_.tickLower,V.config.tickSpacing),ue=H.getTickArrayStartIndex(_.tickUpper,V.config.tickSpacing),{publicKey:pe}=oe(new R(V.programId),E.poolId,me),{publicKey:Pt}=oe(new R(V.programId),E.poolId,ue),{publicKey:ve}=it(new R(V.programId),E.poolId,_.tickLower,_.tickUpper),Ne=Ut(p,E.lockNftMint).publicKey,Ie=j.harvestLockPositionInstructionV2({programId:p,auth:g,lockPositionId:Ne,clmmProgram:d,lockOwner:this.scope.ownerPubKey,lockNftMint:E.lockNftMint,lockNftAccount:Z,positionNftAccount:E.nftAccount,positionId:E.positionId,poolId:E.poolId,protocolPosition:ve,vaultA:new R(V.vault.A),vaultB:new R(V.vault.B),tickArrayLower:pe,tickArrayUpper:Pt,userVaultA:K,userVaultB:L,mintA:new R(V.mintA.address),mintB:new R(V.mintB.address),rewardAccounts:v,exTickArrayBitmap:de(d,E.poolId).publicKey});A.addInstruction({instructions:[Ie],instructionTypes:[J.ClmmHarvestLockPosition],lookupTableAddress:V.lookupTableAccount?[V.lookupTableAccount]:[]})}else{let Z=j.decreaseLiquidityInstructions({poolInfo:k,poolKeys:V,ownerPosition:_,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:K,tokenAccountB:L,rewardAccounts:U},liquidity:new ke(0),amountMinA:new ke(0),amountMinB:new ke(0),nft2022:(B=w[_.nftMint.toBase58()])==null?void 0:B.equals(tt)});A.addInstruction(Z)}}}return s===0?A.sizeCheckBuildV0({computeBudgetConfig:c}):A.sizeCheckBuild({computeBudgetConfig:c})}async getWhiteListMint({programId:e}){let t=await this.scope.connection.getAccountInfo(fn(e).publicKey);return t?Oi.decode(t.data).whitelistMints.filter(o=>!o.equals(R.default)):[]}async getOwnerPositionInfo({programId:e=kt}){await this.scope.account.fetchWalletTokenAccounts();let n=this.scope.account.tokenAccountRawInfos.filter(r=>r.accountInfo.amount.eq(new ke(1))).map(r=>Xe(new R(e),r.accountInfo.mint).publicKey),o=await this.scope.connection.getMultipleAccountsInfo(n),i=[];return o.forEach(r=>{if(!r)return;let a=En.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 ke(1))).map(s=>Ut(new R(e),s.accountInfo.mint).publicKey),o=await this.scope.connection.getMultipleAccountsInfo(n),i=[];o.forEach(s=>{if(!s)return;let c=Mi.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=En.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 De(this.scope.connection,e.map(i=>({pubkey:new R(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=pn.decode(r.accountInfo.data),s=G.sqrtPriceX64ToPrice(a.sqrtPriceX64,a.mintDecimalsA,a.mintDecimalsB).toNumber();o[String(e[i])]=q(F({},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 De(this.scope.connection,Array.from(n).map(s=>({pubkey:new R(s)}))),i={};o.forEach(s=>{!s.accountInfo||(i[s.pubkey.toBase58()]=To.decode(s.accountInfo.data))});let r=await Ue.fetchComputeMultipleClmmInfo({connection:this.scope.connection,rpcDataMap:e,poolList:Object.keys(e).map(s=>{var p,g,d,f;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()||Qt.toBase58(),extensions:{feeConfig:(p=t[c])!=null&&p.feeConfig?Pn((g=t[c])==null?void 0:g.feeConfig):void 0}}),mintB:yt({address:u,decimals:e[s].mintDecimalsB,programId:t[u].programId.toBase58()||Qt.toBase58(),extensions:{feeConfig:(d=t[u])!=null&&d.feeConfig?Pn((f=t[u])==null?void 0:f.feeConfig):void 0}}),price:e[s].currentPrice,config:q(F({},i[e[s].configId.toBase58()]),{id:e[s].configId.toBase58(),fundFeeRate:0,description:"",defaultRange:0,defaultRangePoint:[]})}})}),a=await Ue.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.default)).map(u=>u.mint.toBase58())]),o=await Zt({connection:this.scope.connection,mints:Array.from(n).map(u=>new R(u))}),{computeClmmPoolInfo:i,computePoolTickData:r}=await this.scope.clmm.getComputeClmmPoolInfos({clmmPoolsRpcInfo:{[e]:t},mintInfos:o}),a=await De(this.scope.connection,[{pubkey:t.vaultA},{pubkey:t.vaultB}]),s=ji(i[e],o);if(!a[0].accountInfo||!a[1].accountInfo)throw new Error("pool vault data not found");s.mintAmountA=Number(Et.decode(a[0].accountInfo.data).amount.toString()),s.mintAmountB=Number(Et.decode(a[1].accountInfo.data).amount.toString());let c=q(F({},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.default)).map(u=>{var p;return{mint:yt({address:u.mint.toBase58(),programId:Qt.toBase58(),decimals:(p=o[u.mint.toBase58()].decimals)!=null?p: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=To.decode(i.data),a=new R(n.programId),s=new R(e),c=await Qi(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 Zt({connection:this.scope.connection,mints:Array.from(n).map(r=>new R(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}};export{os as AMM_CONFIG_SEED,Ii as BIT_PRECISION,Oy as BN_NEGATIVE_ONE,Je as BN_ONE,W as BN_ZERO,Xn as Clmm,To as ClmmConfigLayout,j as ClmmInstrument,ko as CollectFeeOn,My as DYNAMIC_CONFIG_INDEX,ls as DYNAMIC_FEE_CONFIG_SEED,Ki as DYNAMIC_FEE_CONTROL_DENOMINATOR,Dy as DynamicFeeConfigLayout,Xt as DynamicFeeInfo,ja as DynamicFeeInfoLayout,Wt as EXTENSION_TICKARRAY_BITMAP_SIZE,pt as FEE_RATE_DENOMINATOR,ki as LOG_B_2_X32,Ti as LOG_B_P_ERR_MARGIN_LOWER_X64,hi as LOG_B_P_ERR_MARGIN_UPPER_X64,xt as LimitOrderLayout,ht as LimitOrderMath,Ni as LimitOrderNonceLayout,Ae as LiquidityMathUtil,Mi as LockClPositionLayoutV2,Wy as LockPositionLayout,Ky as MAGIC_SQRT_10001,xy as MAX_FEE_RATE,_n as MAX_FEE_RATE_NUMERATOR,je as MAX_SQRT_PRICE_X64,Ze as MAX_TICK,Cy as MAX_TICK_SPACING,$e as MIN_SQRT_PRICE_X64,Qe as MIN_TICK,xi as OBSERVATION_NUM,Ly as OBSERVATION_UPDATE_DURATION_DEFAULT,as as OPERATION_SEED,Ci as OPERATION_SIZE_USIZE,$a as ObservationItemLayout,Li as ObservationLayout,Oi as OperationLayout,ms as PERMISSION_SEED,Xi as POOL_LOCK_ID_SEED,us as POOL_OBSERVATION_SEED,is as POOL_REWARD_VAULT_SEED,So as POOL_SEED,ss as POOL_TICK_ARRAY_BITMAP_SEED,Vi as POOL_VAULT_SEED,Ei as POSITION_SEED,En as PersonalPositionLayout,gn as PoolFee,pn as PoolInfoLayout,Ya as PoolStatusBitFlag,Xa as PoolStatusBitIndex,qe as PoolUtil,Ue as PoolUtils,es as PositionRewardInfoLayout,Ji as PositionUtils,Ey as ProtocolPositionLayout,wo as Q128,se as Q64,Si as REDUCTION_FACTOR_DENOMINATOR,Dt as RESOLUTION,dn as REWARD_NUM,Ja as RewardInfoLayout,Ha as RewardState,cs as SUPPORT_MINT_SEED,yn as SqrtPriceMath,bn as SwapMathUtil,at as SwapState,vn as TICK_ARRAY_BITMAP_SIZE,rs as TICK_ARRAY_SEED,We as TICK_ARRAY_SIZE,Ry as TICK_ARRAY_SIZE_USIZE,Bi as TICK_TO_SQRT_PRICE_FACTORS,Dn as TickArrayBitmapExtensionLayout,ft as TickArrayBitmapUtil,qt as TickArrayLayout,H as TickArrayUtil,ts as TickLayout,G as TickUtil,Fn as U128_MAX,cb as U256_MAX,Fy as U64_IGNORE_RANGE,dt as U64_MAX,Qa as UpdateAmmConfigParam,Za as UpdateOperationAccountParam,mn as VOLATILITY_ACCUMULATOR_SCALE,Ri as WHITE_MINT_SIZE_USIZE,Ab as abs,tb as checkedAdd,ob as checkedMul,nb as checkedSub,yb as clearBit,ji as clmmComputeInfoToApiInfo,Gt as decimalToX64,Wn as divRoundingUp,Qi as fetchTickArrays,Pb as fromSignedI128,Ny as getCollectFeeOnDescription,Wb as getOrderTick,Qy as getPdaAmmConfigId,Zy as getPdaDynamicFeeConfigAddress,de as getPdaExBitmapAccount,Gi as getPdaLimitOrderAddress,zi as getPdaLimitOrderNonceAddress,Ut as getPdaLockClPositionIdV2,xo as getPdaLockPositionId,Ct as getPdaMetadataKey,Rt as getPdaMintExAccount,Ko as getPdaObservationAccount,fn as getPdaOperationAccount,Wi as getPdaPermission,qi as getPdaPermissionedPoolId,Xe as getPdaPersonalPositionAddress,Di as getPdaPoolId,Ui as getPdaPoolRewardVaultId,ze as getPdaPoolVaultId,it as getPdaProtocolPositionAddress,oe as getPdaTickArrayAddress,Bo as i32ToBytes,Fi as i32ToBytesBE,pb as isBitSet,db as leastSignificantBit,Ro as mask,Vn as mockV3CreatePoolInfo,Yi as mostSignificantBit,le as mulDivCeil,ce as mulDivFloor,rb as mulDivRound,ib as mulFull,fb as setBit,Lo as swapInternal,gb as toSignedI128,bb as toggleBit,ub as u128CheckedMul,ab as u128SaturatingAdd,sb as u128SaturatingSub,ho as u16ToBytes,Io as u16ToBytesBE,mb as u256MulDivCeil,lb as u256MulDivFloor,vi as u64ToBytes,_i as u8ToBytes,Me as wrappingSubU128,Hi as x64ToDecimal};
//# sourceMappingURL=index.mjs.map