@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 214 kB
JavaScript
var pr=Object.defineProperty,fr=Object.defineProperties;var yr=Object.getOwnPropertyDescriptors;var An=Object.getOwnPropertySymbols;var Vo=Object.prototype.hasOwnProperty,_o=Object.prototype.propertyIsEnumerable;var vo=(m,e,t)=>e in m?pr(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)&&vo(m,t,e[t]);if(An)for(var t of An(e))_o.call(e,t)&&vo(m,t,e[t]);return m},q=(m,e)=>fr(m,yr(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&&_o.call(m,n)&&(t[n]=m[n]);return t};import{PublicKey as Wo}from"@solana/web3.js";import{get as Eo,set as br}from"lodash";var Qn=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}},Do={},gr={};function ee(m){let e=Eo(Do,m);if(!e){let t=Eo(gr,m);e=new Qn({name:m,logLevel:t}),br(Do,m,e)}return e}import{MINT_SIZE as Pr,TOKEN_PROGRAM_ID as Ar,getTransferFeeConfig as wr,unpackMint as kr}from"@solana/spl-token";var Zn=ee("Raydium_accountInfo_util");async function Ve(m,e,t){let{batchRequest:n,commitment:o="confirmed",chunkCount:i=100}=F({batchRequest:!1},t),r=Hn(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=Hn(s,10);a=(await(await Promise.all(c.map(async p=>await m._rpcBatchRequest(p)))).flat()).map(p=>(p.error&&Zn.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"&&Zn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(d[0],"base64"),executable:f,lamports:y,owner:new Wo(b),rentEpoch:w}}return null})))}else try{a=await Promise.all(r.map(s=>m.getMultipleAccountsInfo(s,o)))}catch(s){s instanceof Error&&Zn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${s.message}`)}return a.flat()}async function De(m,e,t){let n=await Ve(m,e.map(o=>o.pubkey),t);return e.map((o,i)=>q(F({},o),{accountInfo:n[i]}))}async function Ht({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<Pr){console.log("invalid mint account",s.pubkey.toBase58());continue}let c=kr(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)||Ar,feeConfig:(a=wr(c))!=null?a:void 0})}return o[Wo.default.toBase58()]=o[Y.toBase58()],o}import Lt from"bn.js";import nR from"decimal.js";import Cr from"big.js";import Tn from"bn.js";import Tr from"toformat";var hr=Tr,jt=hr;import kn from"big.js";import Br from"bn.js";import Sr from"decimal.js-light";import $t from"bn.js";var qo=9007199254740991;function Be(m){let e=ee("Raydium_parseBigNumberish");if(m instanceof $t)return m;if(typeof m=="string"){if(m.match(/^-?[0-9]+$/))return new $t(m);e.logWithError(`invalid BigNumberish string: ${m}`)}return typeof m=="number"?(m%1&&e.logWithError(`BigNumberish number underflow: ${m}`),(m>=qo||m<=-qo)&&e.logWithError(`BigNumberish number overflow: ${m}`),new $t(String(m))):typeof m=="bigint"?new $t(m.toString()):(e.error(`invalid BigNumberish value: ${m}`),new $t(0))}var wn=ee("module/fraction"),jn=jt(kn),Jt=jt(Sr),Kr={[0]:Jt.ROUND_DOWN,[1]:Jt.ROUND_HALF_UP,[2]:Jt.ROUND_UP},xr={[0]:kn.roundDown,[1]:kn.roundHalfUp,[2]:kn.roundUp},ie=class{constructor(e,t=new Br(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:Kr[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.`),jn.DP=e,jn.RM=xr[n]||1,new jn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Rr=ee("Raydium_amount"),Uo=jt(Cr);function Lr(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")):Rr.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=$n.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]=Lr(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 Uo.DP=this.token.decimals,new Uo(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Or}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Go}from"@solana/spl-token";var hn={chainId:101,address:Or.default.toBase58(),programId:Go.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:Go.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 zo,SYSVAR_RENT_PUBKEY as Nr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Mr}from"@solana/spl-token";function Ot({pubkey:m,isSigner:e=!1,isWritable:t=!0}){return{pubkey:m,isWritable:t,isSigner:e}}var Fr=[Ot({pubkey:Mr,isWritable:!1}),Ot({pubkey:zo.programId,isWritable:!1}),Ot({pubkey:Nr,isWritable:!1})];function Jn({publicKey:m,transformSol:e}){let t=Xo(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 Xo(m){try{return new fe(m)}catch{return m}}var At=new fe("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ye=new fe("SysvarRent111111111111111111111111111111111"),Yu=new fe("SysvarC1ock11111111111111111111111111111111"),wt=new fe("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),vr=new fe("Sysvar1nstructions1111111111111111111111111"),Vr=zo.programId,Qu=new fe("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Zu=new fe("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Hu=new fe("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),ju=new fe("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),$u=new fe("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Ju=new fe("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),ec=new fe("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),tc=new fe("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),nc=new fe("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),oc=new fe("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),ic=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 Yo=new ie(new _r(100)),lt=class extends ie{toSignificant(e=5,t,n){return this.mul(Yo).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(Yo).toFixed(e,t,n)}};var Er=ee("Raydium_price"),Qe=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 Qe({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Er.logWithError("mul token not equals");let n=super.mul(t);return new Qe({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 iC}from"lodash";import xc 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"},Dr=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 jc=ee("Raydium_Api");import{PublicKey as bd,SystemProgram as gd}from"@solana/web3.js";import{AccountLayout as Td,createAssociatedTokenAccountIdempotentInstruction as hd,TOKEN_PROGRAM_ID as Id,TOKEN_2022_PROGRAM_ID as Bd}from"@solana/spl-token";import{PublicKey as Vt,sendAndConfirmTransaction as co,SystemProgram as Xr,Transaction as nn,TransactionMessage as on,VersionedTransaction as rn}from"@solana/web3.js";import Yr 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 Ve(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 $={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 Wr,Transaction as $o,TransactionMessage as qr,VersionedTransaction as Jo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ur}from"@solana/spl-token";var Ho=ee("Raydium_txUtil"),ei=1644;function Bn(m){let e=[],t=[];return m.microLamports&&(e.push(Zo.setComputeUnitPrice({microLamports:m.microLamports})),t.push($.SetComputeUnitPrice)),m.units&&(e.push(Zo.setComputeUnitLimit({units:m.units})),t.push($.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&&Ho.logWithError(`no instructions provided: ${m.toString()}`),e.length<1&&Ho.logWithError(`no signers provided:, ${e.toString()}`);let t=new $o;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...m);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<ei}catch{return!1}}function re(m,e){let[t,n]=Wr.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 qr({payerKey:e,recentBlockhash:n,instructions:m}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Jo(i).serialize()).toString("base64").length<ei}catch{return!1}}var Gr=m=>Buffer.isBuffer(m)?m:m instanceof Uint8Array?Buffer.from(m.buffer,m.byteOffset,m.byteLength):Buffer.from(m),zr=m=>{let e=m.serialize({requireAllSignatures:!1,verifySignatures:!1});m instanceof Jo&&(e=Gr(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 $o&&(t.recentBlockhash||(t.recentBlockhash=Ur.toBase58()),t.feePayer||(t.feePayer=jo.generate().publicKey)),e.push(zr(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 Yr.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(Xr.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new Vt(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push($.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!==Vt.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 I of r){if(++T,T<=d)continue;let P=await co(this.connection,I,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});A.push(P)}return{txIds:A,signedTxs:r}}return{txIds:await await Promise.all(r.map(async A=>(A.recentBlockhash=b,await this.connection.sendRawTransaction(A.serialize(),{skipPreflight:y})))),signedTxs:r}}if(this.signAllTransactions){let A=r.map((I,P)=>(I.recentBlockhash=b,a[P].length&&I.sign(...a[P]),I));Bt(A);let T=await this.signAllTransactions(A);if(p){let I=0,P=[],k=async()=>{if(!T[I])return;let B=await this.connection.sendRawTransaction(T[I].serialize(),{skipPreflight:y});P.push({txId:B,status:"sent",signedTx:T[I]}),g==null||g([...P]),I++;let S=!1,K=null,L=null,U=_=>{K!==null&&clearInterval(K),L!==null&&this.connection.removeSignatureListener(L);let v=P.findIndex(V=>V.txId===B);if(v>-1){if(P[v].status==="error"||P[v].status==="success")return;P[v].status=_.err?"error":"success"}g==null||g([...P]),_.err||k()};this.loopMultiTxStatus&&(K=setInterval(async()=>{var _;if(S){clearInterval(K);return}try{let v=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:0});v&&(S=!0,clearInterval(K),U({err:((_=v.meta)==null?void 0:_.err)||null}),console.log("tx status from getTransaction:",B))}catch(v){S=!0,clearInterval(K),console.error("getTransaction timeout:",v,B)}},Kn)),L=this.connection.onSignature(B,_=>{if(S){this.connection.removeSignatureListener(L);return}S=!0,U(_)},"confirmed"),this.connection.getSignatureStatus(B)};return await k(),{txIds:P.map(B=>B.txId),signedTxs:T}}else{let I=[];for(let P=0;P<T.length;P+=1){let k=await this.connection.sendRawTransaction(T[P].serialize(),{skipPreflight:y});I.push(k)}return{txIds:I,signedTxs:T}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){var y;let 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 Vt(b));let u=await ro({connection:this.connection,address:c});for(let[b,w]of Object.entries(u))a[b]=w;let p=o?Vt.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 I;let{skipPreflight:w=!0,sendAndConfirm:A,notSendToRpc:T}=b||{};if(Bt([d]),(I=this.owner)!=null&&I.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 I=await this.connection.sendTransaction(b[w],{skipPreflight:f});A.push({txId:I,status:"sent",signedTx:b[w]}),g==null||g([...A]),w++;let P=!1,k=null,B=null,S=K=>{k!==null&&clearInterval(k),B!==null&&this.connection.removeSignatureListener(B);let L=A.findIndex(U=>U.txId===I);if(L>-1){if(A[L].status==="error"||A[L].status==="success")return;A[L].status=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(I,{commitment:"confirmed",maxSupportedTransactionVersion:0});L&&(P=!0,clearInterval(k),S({err:((K=L.meta)==null?void 0:K.err)||null}),console.log("tx status from getTransaction:",I))}catch(L){P=!0,clearInterval(k),console.error("getTransaction timeout:",L,I)}},Kn)),B=this.connection.onSignature(I,K=>{if(P){this.connection.removeSignatureListener(B);return}P=!0,S(K)},"confirmed"),this.connection.getSignatureStatus(I)};return T(),{txIds:[],signedTxs:b}}else{let w=[];for(let A=0;A<b.length;A+=1){let T=await this.connection.sendTransaction(b[A],{skipPreflight: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 Vt(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 I;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),(I=this.owner)!=null&&I.isKeyPair){if(f){let P=0,k=[];for(let B of a){if(++P,P<=b){k.push("tx skipped");continue}let S=await co(this.connection,B,this.signers.find(K=>K.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:A});k.push(S)}return{txIds:k,signedTxs:a}}return{txIds:await Promise.all(a.map(async P=>await this.connection.sendRawTransaction(P.serialize(),{skipPreflight:A}))),signedTxs:a}}if(this.signAllTransactions){let P=await this.signAllTransactions(a.slice(b,a.length)),k=[...a.slice(0,b),...P];if(f){let B=0,S=[],K=async()=>{if(!k[B])return;B<b&&(S.push({txId:"",status:"success",signedTx:k[B]}),y==null||y([...S]),B++,K());let L=await this.connection.sendRawTransaction(k[B].serialize(),{skipPreflight:A});S.push({txId:L,status:"sent",signedTx:k[B]}),y==null||y([...S]),B++;let U=!1,_=null,v=null,V=E=>{_!==null&&clearInterval(_),v!==null&&this.connection.removeSignatureListener(v);let H=S.findIndex(me=>me.txId===L);if(H>-1){if(S[H].status==="error"||S[H].status==="success")return;S[H].status=E.err?"error":"success"}y==null||y([...S]),E.err||K()};this.loopMultiTxStatus&&(_=setInterval(async()=>{var E;if(U){clearInterval(_);return}try{let H=await this.connection.getTransaction(L,{commitment:"confirmed",maxSupportedTransactionVersion:0});H&&(U=!0,clearInterval(_),V({err:((E=H.meta)==null?void 0:E.err)||null}),console.log("tx status from getTransaction:",L))}catch(H){U=!0,clearInterval(_),console.error("getTransaction timeout:",H,L)}},Kn)),v=this.connection.onSignature(L,E=>{if(U){this.connection.removeSignatureListener(v);return}U=!0,V(E)},"confirmed"),this.connection.getSignatureStatus(L)};return await K(),{txIds:S.map(L=>L.txId),signedTxs:k}}else{let B=[];for(let S=0;S<k.length;S+=1){let K=await this.connection.sendRawTransaction(k[S].serialize(),{skipPreflight:A});B.push(K)}return{txIds:B,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuildV0(e){var I;let T=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:o={},lookupTableAddress:i=[],insCountLimit:r=12}=T,a=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 Vt(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],B=t?[...g.instructions,...k]:k;if(P!==n[A]&&w.length<r&&(tn({instructions:B,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 S={};for(let K of[...new Set(c)])s[K]!==void 0&&(S[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(B=>B.keys.filter(S=>S.isSigner).map(S=>S.pubkey.toString())).flat()).values()].map(B=>f[B]).filter(B=>B!==void 0);if(t&&tn({instructions:[...g.instructions,...w],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:d})){let B=new on({payerKey:this.feePayer,recentBlockhash:d,instructions:[...g.instructions,...w]}).compileToV0Message(Object.values(s));y.push(new rn(B))}else{let B=new on({payerKey:this.feePayer,recentBlockhash:d,instructions:[...w]}).compileToV0Message(Object.values(s));y.push(new rn(B))}b.push(k)}return(I=this.owner)!=null&&I.signer&&b.forEach(P=>{P.some(k=>k.publicKey.equals(this.owner.publicKey))||P.push(this.owner.signer)}),y.forEach((P,k)=>{P.sign(b[k])}),{builder:this,transactions:y,buildProps:e,signers:b,instructionTypes:this.instructionTypes,execute:async P=>{var U;let{sequentially:k,onTxUpdate:B,skipTxCount:S=0,recentBlockHash:K,skipPreflight:L=!0}=P||{};if(y.map(async(_,v)=>{b[v].length&&_.sign(b[v]),K&&(_.message.recentBlockhash=K)}),Bt(y),(U=this.owner)!=null&&U.isKeyPair){if(k){let _=0,v=[];for(let V of y){if(++_,_<=S){console.log("skip tx: ",_),v.push("tx skipped");continue}let E=await this.connection.sendTransaction(V,{skipPreflight:L});await Sn(this.connection,E),v.push(E)}return{txIds:v,signedTxs:y}}return{txIds:await Promise.all(y.map(async _=>await this.connection.sendTransaction(_,{skipPreflight:L}))),signedTxs:y}}if(this.signAllTransactions){let _=await this.signAllTransactions(y.slice(S,y.length)),v=[...y.slice(0,S),..._];if(k){let V=0,E=[],H=async()=>{if(!v[V])return;if(V<S){E.push({txId:"",status:"success",signedTx:v[V]}),B==null||B([...E]),V++,H();return}let me=await this.connection.sendTransaction(v[V],{skipPreflight:L});E.push({txId:me,status:"sent",signedTx:v[V]}),B==null||B([...E]),V++;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"}B==null||B([...E]),Ne.err||H()};this.loopMultiTxStatus&&(pe=setInterval(async()=>{var Ne;if(ue){clearInterval(pe);return}try{let Ie=await this.connection.getTransaction(me,{commitment:"confirmed",maxSupportedTransactionVersion:0});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 H(),{txIds:[],signedTxs:v}}else{let V=[];for(let E=0;E<v.length;E+=1){let H=await this.connection.sendTransaction(v[E],{skipPreflight:L});V.push(H)}return{txIds:V,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(", "),_e=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 Ym,SystemProgram as Zm}from"@solana/web3.js";import $m from"bn.js";import{createCloseAccountInstruction as nd,createInitializeAccountInstruction as od,createTransferInstruction as id,TOKEN_PROGRAM_ID as rd}from"@solana/spl-token";import{Keypair as Mm,PublicKey as Fm}from"@solana/web3.js";import _m from"bn.js";import{TOKEN_PROGRAM_ID as Wm}from"@solana/spl-token";import{PublicKey as ra}from"@solana/web3.js";import ri,{isBN as ai}from"bn.js";import{bits as Qr,BitStructure as El,blob as Zr,Blob as Dl,cstr as Wl,f32 as ql,f32be as Ul,f64 as Gl,f64be as zl,greedy as Xl,Layout as Hr,ns64 as Yl,ns64be as Ql,nu64 as Zl,nu64be as Hl,offset as jr,s16 as jl,s16be as $l,s24 as Jl,s24be as em,s32 as $r,s32be as tm,s40 as nm,s40be as om,s48 as im,s48be as rm,s8 as am,seq as Jr,struct as sm,Structure as ea,u16 as ta,u16be as um,u24 as cm,u24be as lm,u32 as na,u32be as mm,u40 as dm,u40be as pm,u48 as fm,u48be as ym,u8 as oa,UInt as ia,union as bm,Union as gm,unionLayoutDiscriminator as Pm,utf8 as Am}from"@solana/buffer-layout";var Cn=Hr,ti=ea;var mo=ia;var ni=oa,ke=ta;var Rn=na;var Te=$r;var oi=Jr;var J=Zr;var po=Qr,ii=jr;var Kt=class extends Cn{constructor(t,n,o){super(t,o);this.blob=J(t),this.signed=n}decode(t,n=0){let o=new ri(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 ri(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 si(m){return new Kt(1,!0,m)}function _t(m){return new Kt(8,!0,m)}function ui(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(J(32),e=>new ra(e),e=>e.toBuffer(),m)}function be(m){return new an(ni(),aa,sa,m)}function aa(m){if(m===0)return!1;if(m===1)return!0;throw new Error("Invalid bool: "+m)}function sa(m){return m?1:0}function ci(m,e){let t=Rn("length"),n=O([t,D(m,ii(t,-t.span),"values")]);return new an(n,({values:o})=>o,o=>({values:o}),e)}var fo=class extends ti{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:ai(e)?e.toNumber():new Proxy(e,{get(i,r){if(!n){let a=Reflect.get(i,"count");n=ai(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 oi(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 qf,SystemProgram as Uf}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as zf}from"@solana/spl-token";import{PublicKey as ca}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as la}from"@solana/spl-token";function Z(m,e,t){return re([m.toBuffer(),(t!=null?t:la).toBuffer(),e.toBuffer()],new ca("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as X}from"@solana/web3.js";var mi=new X("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),di=new X("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),pi=new X("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),yo=new X("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),vd=new X("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),ma=new X("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),fi=new X("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),yi=new X("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Vd=new X("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),da=new X("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),kt=new X("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),sn=new X("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Nn=new X("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),bi=new X("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),_d=new X("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),pa=new X("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),bo=new X("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),fa=new X("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Ed=new X("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ya=new X("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),ba=new X("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),ga=new X("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Dd=new X("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Wd=new X("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),qd=new X("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Ud=new X("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Gd=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 ty from"decimal.js";import{PublicKey as go}from"@solana/web3.js";var Pa=O([N("instruction")]),Aa=O([N("instruction")]),wa=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")]),ka=O([l("state"),l("nonce"),h("lpVault"),h("rewardVault"),h(),h(),l(),l(),l("totalReward"),z("perShareReward"),l("lastSlot"),l("perSlotReward")]),Ta=O([l("state"),l("nonce"),h("lpVault"),h("rewardVaultA"),l("totalRewardA"),z("perShareRewardA"),l("perSlotRewardA"),N("option"),h("rewardVaultB"),J(7),l("totalRewardB"),z("perShareRewardB"),l("perSlotRewardB"),l("lastSlot"),h()]),ha=O([l(),l("state"),l("nonce"),l("validRewardTokenNum"),z("rewardMultiplier"),l("rewardPeriodMax"),l("rewardPeriodMin"),l("rewardPeriodExtend"),h("lpMint"),h("lpVault"),D(wa,5,"rewardInfos"),h("creator"),h(),D(l(),32,"padding")]),Ia=new Proxy(ka,{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)}}),Ba=new Proxy(Ta,{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(ha,{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)}}),Sa=O([l("isSet"),l("rewardPerSecond"),l("rewardOpenTime"),l("rewardEndTime"),l("rewardType")]),Ka=O([N("instruction"),l("nonce"),D(Sa,5,"rewardTimeInfo")]),xa=O([N("instruction"),l("rewardReopenTime"),l("rewardEndTime"),l("rewardPerSecond")]),Ca=O([N("instruction"),l("isSet"),l("rewardPerSecond"),l("rewardOpenTime"),l("rewardEndTime"),l("rewardType")]),jd=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)]),$d=O([l("state"),h("id"),h("owner"),l("deposited"),D(l(),2,"rewardDebts")]),Ra=O([l("state"),h("id"),h("owner"),l("deposited"),D(z(),2,"rewardDebts"),D(l(),17)]),La=O([l(),l("state"),h("id"),h("owner"),l("deposited"),D(z(),5,"rewardDebts"),D(l(),16)]),Oa=O([N("instruction"),l("amount")]),Na=O([h("mint"),h("grantAuthority"),l("baselineVoteWeightScaledFactor"),l("maxExtraLockupVoteWeightScaledFactor"),l("lockupSaturationSecs"),si("digitShift"),D(N(),7,"reserved1"),D(l(),7,"reserved2")]),Ma=O([J(8),h("governanceProgramId"),h("realm"),h("realmGoverningTokenMint"),h("realmAuthority"),D(N(),32,"reserved1"),D(Na,4,"votingMints"),_t("timeOffset"),N("bump"),D(N(),7,"reserved2"),D(l(),11,"reserved3")]),Fa=O([_t("startTime"),_t("endTime"),N("kind"),D(N(),15,"reserved")]),va=O([D(Fa,1,"lockup"),l("amountDeposited_native"),l("amountInitiallyLockedNative"),be("isUsed"),be("allowClawback"),N("votingMintConfigIdx"),D(N(),29,"reserved")]),Va=O([J(8),h("voterAuthority"),h("registrar"),D(va,32,"deposits"),N("voterBump"),N("voterWweightRecordBump"),D(N(),94,"reserved")]);import{NATIVE_MINT as sp}from"@solana/spl-token";var up=ee("Raydium_farm_config"),_a=new go("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ea=new go("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var cp=new go("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var un={"Standard SPL":0,"Option tokens":1},Ai={[mi.toString()]:3,[di.toString()]:4,[pi.toString()]:5,[yo.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 nf,SystemProgram as of,SYSVAR_CLOCK_PUBKEY as rf,SYSVAR_RENT_PUBKEY as af,TransactionInstruction as sf}from"@solana/web3.js";import cf from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as mf,createAssociatedTokenAccountIdempotentInstruction as df,TOKEN_PROGRAM_ID as pf}from"@solana/spl-token";import Op from"bn.js";import{PublicKey as hp}from"@solana/web3.js";import Bp from"bn.js";var zp=ee("Raydium.farm.util");var If=ee("Raydium_farm_instruction"),Bf={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 dy from"bn.js";import{PublicKey as ww}from"@solana/web3.js";import{AccountLayout as hw,MintLayout as Iw,NATIVE_MINT as Bw,TOKEN_PROGRAM_ID as Kw}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 Oo,TOKEN_2022_PROGRAM_ID as Ae,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,Ao=new ne(1).shln(128),dt=new ne(1).shln(64).subn(1),Fn=new ne(1).shln(128).subn(1),Ze=-443636,He=443636,je=new ne("4295048016"),$e=new ne("79226673521066979257578248091"),ki=new ne("59543866431248"),Ti=new ne("184467440737095516"),hi=new ne("15793534762490258745"),Ii=16,vn=512,We=60,Iy=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,By=1e5,wo=(n=>(n[n.FromInput=0]="FromInput",n[n.TokenOnlyA=1]="TokenOnlyA",n[n.TokenOnlyB=2]="TokenOnlyB",n))(wo||{}),Sy=1e3,Vn=1e5,mn=1e4,Si=1e4,Ki=1e5,Ky=60,dn=3,xi=100,xy=15,Ci=10,Ri=100,Wt=14,Ya=(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))(Ya||{}),Qa=(t=>(t[t.Enable=0]="Enable",t[t.Disable=1]="Disable",t))(Qa||{}),Za=(o=>(o[o.Uninitialized=0]="Uninitialized",o[o.Initialized=1]="Initialized",o[o.Opening=2]="Opening",o[o.Ended=3]="Ended",o))(Za||{}),Ha=(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))(Ha||{}),ja=(o=>(o[o.UpdateOperationOwner=0]="UpdateOperationOwner",o[o.RemoveOperationOwner=1]="RemoveOperationOwner",o[o.UpdateWhitelistMint=2]="UpdateWhitelistMint",o[o.RemoveWhitelistMint=3]="RemoveWhitelistMint",o))(ja||{}),W=new ne(0),Je=new ne(1),Cy=new ne(-1),_n={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 Ry(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 Ly=2,Oy=new ne("18446744073700000000");var ko=O([J(8),N("bump"),ke("index"),h("owner"),ye("protocolFeeRate"),ye("tradeFeeRate"),ke("tickSpacing"),ye("fundFeeRate"),D(ye(),1),h("fundOwner"),D(l(),3)]),$a=O([ye("blockTimestamp"),_t("tickCumulative"),D(l(),4)]),Li=O([J(8),be("initialized"),l("recentEpoch"),ke("observationIndex"),h("poolId"),D($a,xi,"observations"),D(l(),4)]),Ja=O([ke("filterPeriod"),ke("decayPeriod"),ke("reductionFactor"),ye("dynamicFeeControl"),ye("maxVolatilityAccumulator"),Te("tickSpacingIndexReference"),ye("volatilityReference"),ye("volatilityAccumulator"),l("lastUpdateTimestamp"),D(N(),46)]),es=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([J(8),N("bump"),h("configId"),h("creator"),h("mintA"),h("mintB"),h("vaultA"),h("vaultB"),h("observationId"),N("mintDecimalsA"),N("mintDecimalsB"),ke("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),Te("tickCurrent"),ye(),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),l("protocolFeesTokenA"),l("protocolFeesTokenB"),D(z(),4),N("status"),N("feeOn"),J(6),D(es,dn,"rewardInfos"),J(8*16,"tickArrayBitmap"),D(l(),4),l("fundFeesTokenA"),l("fundFeesTokenB"),l("startTime"),l("recentEpoch"),Ja.replicate("dynamicFeeInfo"),D(l(),46)]),ts=O([z("growthInsideLastX64"),l("rewardAmountOwed")]),En=O([J(8),N("bump"),h("nftMint"),h("poolId"),Te("tickLower"),Te("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),l("tokenFeesOwedA"),l("tokenFeesOwedB"),D(ts,dn,"rewardInfos"),l("recentEpoch"),D(l(),7)]),vy=O([J(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)]),ns=O([Te("tick"),ui("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),D(z(),dn,"rewardGrowthsOutsideX64"),l("orderPhase"),l("ordersAmount"),l("partFilledOrdersRemaining"),z("unfilledRatioX64"),D(ye(),3)]),qt=O([J(8),h("poolId"),Te("startTickIndex"),D(ns,We,"ticks"),N("initializedTickCount"),l("recentEpoch"),D(N(),107)]),Oi=O([J(8),N("bump"),D(h(),Ci,"operationOwners"),D(h(),Ri,"whitelistMints")]),xt=O([J(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([J(8),h("poolId"),J(8*8*Wt,"positiveTickArrayBitmap"),J(8*8*Wt,"negativeTickArrayBitmap")]),Vy=O([J(8),ke("index"),ke("filterPeriod"),ke("decayPeriod"),ke("reductionFactor"),ye("dynamicFeeControl"),ye("maxVolatilityAccumulator"),D(l(),8)]),Ni=O([J(8),h("wallet"),N("nonceIndex"),l("orderNonce"),D(l(),4)]),_y=O([l(),N("bump"),h("owner"),h("poolId"),h("positionId"),h("nftAccount"),D(l(),8)]),Mi=O([J(8),N("bump"),h("lockOwner"),h("poolId"),h("positionId"),h("nftAccount"),h("lockNftMint"),l("recentEpoch"),D(l(),8)]);import os from"bn.js";function To(m){let e=Buffer.alloc(2);return e.writeUInt16LE(m),e}function ho(m){let e=Buffer.alloc(2);return e.writeUInt16BE(m),e}function Io(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 os(m.toString())),m.toArrayLike(Buffer,"be",8)}function Vi(m){let e=new ArrayBuffer(1);return new DataView(e).setUint8(0,m),new Uint8Array(e)}var is=Buffer.from("amm_config","utf8"),Bo=Buffer.from("pool","utf8"),_i=Buffer.from("pool_vault","utf8"),rs=Buffer.from("pool_reward_vault","utf8"),Ei=Buffer.from("position","utf8"),as=Buffer.from("tick_array","utf8"),ss=Buffer.from("operation","utf8"),us=Buffer.from("pool_tick_array_bitmap_extension","utf8"),cs=Buffer.from("observation","utf8"),ls=Buffer.from("support_mint","utf8"),ms=Buffer.from("dynamic_fee_config","utf8"),ds=Buffer.from("permission","utf8");function Xy(m,e){return re([is,ho(e)],m)}function Di(m,e,t,n){return re([Bo,e.toBuffer(),t.toBuffer(),n.toBuffer()],m)}function Wi(m,e){return re([ds,e.toBuffer()],m)}function qi(m,e,t,n,o){return re([Bo,e.toBuffer(),t.toBuffer(),n.toBuffer(),To(o)],m)}function ze(m,e,t){return re([_i,e.toBuffer(),t.toBuffer()],m)}function Ui(m,e,t){return re([rs,e.toBuffer(),t.toBuffer()],m)}function oe(m,e,t){return re([as,e.toBuffer(),Fi(t)],m)}function it(m,e,t,n){return re([Ei,e.toBuffer(),Io(t),Io(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([ss],m)}function de(m,e){return re([us,e.toBuffer()],m)}function So(m,e){return re([cs,e.toBuffer()],m)}function Rt(m,e){return re([ls,e.toBuffer()],m)}function Gi(m,e,t,n){return re([e.toBuffer(),t.toBuffer(),vi(n)],m)}function Yy(m,e){return re([ms,ho(e)],m)}function zi(m,e,t){return re([e.toBuffer(),Vi(t)],m)}var Xi=Buffer.from("locked_position","utf8");function Ko(m,e){return re([Xi,e.toBuffer()],m)}function Ut(m,e){return re([Xi,e.toBuffer()],m)}import{sha256 as ys}from"js-sha256";import rt from"bn.js";import xo from"decimal.js";function Co(m){return new rt(1).shln(m).subn(1)}function $y(m,e,t){let n=m.add(e),o=Co(t);if(n.gt(o))throw new Error(`Addition overflow: result exceeds ${t} bits`);return n}function Jy(m,e){if(m.lt(e))throw new Error("Subtraction underflow");return m.sub(e)}function eb(m,e,t){let n=m.mul(e),o=Co(t);if(n.gt(o))throw new Error(`Multiplication overflow: result exceeds ${t} bits`);return n}function tb(m,e){let t=m.mul(e),n=t.and(Co(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 nb(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 ob(m,e){let t=m.add(e);return t.gt(Fn)?Fn:t}function ib(m,e){return m.gt(e)?m.sub(e):new rt(0)}function rb(m,e){let t=m.mul(e);if(t.gt(Fn))throw new Error("U128 multiplication overflow");return t}var ab=new rt(1).shln(256).subn(1);function sb(m,e,t){if(t.isZero())throw new Error("Division by zero");return m.mul(e).div(t)}function ub(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 cb(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 lb(m,e){return m.testn(e)}function mb(m,e){return m.or(new rt(1).shln(e))}function db(m,e){return m.and(new rt(1).shln(e).notn(256))}function pb(m,e){return m.xor(new rt(1).shln(e))}function fb(m){let e=new rt(1).shln(127);return m.and(e).isZero()?m:m.sub(new rt(1).shln(128))}function yb(m){return m.isNeg()?m.add(new rt(1).shln(128)):m}function bb(m){return m.isNeg()?m.neg():m}function Qi(m,e){return new xo(m.toString()).div(xo.pow(2,64)).toDecimalPlaces(e)}function Gt(m){return new rt(m.mul(xo.pow(2,64)).floor().toFixed())}function Me(m,e){return m.add(Ao).sub(e).mod(Ao)}import ps 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=Q.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}},Q=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(Ze/e)*e}static getMaxTick(e){return Math.floor(He/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>=Ze&&e<=He}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${Ze}, ${He}]`)}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(je)&&e.lte($e)))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(Ze,Math.min(He,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 Zi(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 Ve(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 ps(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 Hi from"decimal.js";var Pe=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 Hi(s.toString()).mul(u).toFixed(0)),g=new qn(new Hi(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 _b=({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 ji,TOKEN_PROGRAM_ID as fs}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<Ze?e.tickNext=Ze:e.tickNext>He&&(e.tickNext=He),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>Vn?Vn: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(Vn,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(Ze,Math.min(He,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?Pe.getDeltaAmountAUnsigned(t,e,n,!0):Pe.getDeltaAmountBUnsigned(e,t,n,!0)}catch(r){if(r.message==="MaxTokenOverflow")return null;throw r}else try{return o?Pe.getDeltaAmountBUnsigned(t,e,n,!1):Pe.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=Pe.getDeltaAmountAUnsigned(c.sqrtPriceNextX64,e,n,!0)),u&&!r||(c.amountOut=Pe.getDeltaAmountBUnsigned(c.sqrtPriceNextX64,e,n,!1))):(u&&r||(c.amountIn=Pe.getDeltaAmountBUnsigned(e,c.sqrtPriceNextX64,n,!0)),u&&!r||(c.amountOut=Pe.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 Ro({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(je).addn(1):new Yt($e).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=Q.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],I=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=Q.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,Q.firstinitializedTick({data:L.value,zeroForOne:s}))}else return w=!0,Q.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 B=at.getTargetPriceBasedOnNextTick({data:P,tickNext:k.tick,zeroForOne:s,sqrtPriceLimitX64:a}),S=P.liquidity;do{at.updateVolatilityAccumulator({state:P});let K=at.getTotalFeeRate({data:P}),{isSkipped:L,boundedPrice:U}=at.getSpacingBoundedPrice({data:P,targetPrice:B,zeroForOne:s}),_=!P.sqrtPriceX64.eq(U),v;_?(v=bn.computeSwap(P.sqrtPriceX64,U,P.liquidity,P.amountSpecifiedRemaining,K,c,s,I),at.applySwapAmounts({state:P,amountIn:v.amountIn,amountOut:v.amountOut,feeAmount:v.feeAmount,isBaseInput:c,isFeeOnInput:I,protocolFeeRate:new Yt(o.protocolFeeRate),fundFeeRate:new Yt(o.fundFeeRate)})):v=bn.newSwapComputationResult({sqrtPriceNextX64:U});let V=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:I});if(E.amountIn.gt(W)&&at.applySwapAmounts({state:P,amountIn:E.amountIn,amountOut:E.amountOut,feeAmount:E.ammFeeAmount,isBaseInput:c,isFeeOnInput:I,protocolFeeRate:new Yt(o.protocolFeeRate),fundFeeRate:new Yt(o.fundFeeRate)}),G.hasLiquidity({data:k})&&!G.hasLimitOrders({data:k})){let H=s?k.liquidityNet.neg():k.liquidityNet;S=Pe.addDelta(P.liquidity,H)}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(B)){let E=G.limitOrderUnfilledAmount({tick:k});if(!P.amountSpecifiedRemaining.isZero()&&!E.eq(V)&&!E.isZero())throw Error("!limitOrderUnfilledAmountAfter.isZero()");break}}while(!0);P.liquidity=S}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=Q.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>He&&(t=Q.getTickArrayStartIndex(He,e)+Q.tickCount(e)),n<Ze&&(n=Q.getTickArrayStartIndex(Ze,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:Qi(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 I=d.growthGlobalX64.add(w);r.push(q(F({},d),{growthGlobalX64:I,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=Q.getTickArrayStartIndex(e.accInfo.tickCurrent,e.accInfo.tickSpacing),{allTrade:u,amountCalculated:p,feeAmount:g,sqrtPriceX64:d,accounts:f}=Ro({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=Q.getTickArrayStartIndex(e.accInfo.tickCurrent,e.accInfo.tickSpacing),{allTrade:u,amountCalculated:p,feeAmount:g,sqrtPriceX64:d,accounts:f}=Ro({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?je.add(new Re(1)):$e.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),I=Ge(b,d,i,!1),P=G.sqrtPriceX64ToPrice(A,e.mintA.decimals,e.mintB.decimals),k=p?P:new te(1).div(P),B=b.mul(new Re(Math.floor((1-a)*1e10))).div(new Re(1e10)),S=Ge(B,d,i,!1),K=p?e.currentPrice:new te(1).div(e.currentPrice),L=new te(k).sub(K).abs(),U=K,_=new lt(new te(L).mul(10**15).toFixed(0),new te(U).mul(10**15).toFixed(0));return{allTrade:y,realAmountIn:f,amountOut:I,minAmountOut:S,expirationTime:ln(f.expirationTime,I.expirationTime),currentPrice:e.currentPrice,executionPrice:k,priceImpact:_,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===ji.toBase58()})),new Ce(q(F({},g),{mint:g.address,isToken2022:g.programId===ji.toBase58()}))],{allTrade:y,realAmountIn:b,amountOut:w,minAmountOut:A,expirationTime:T,currentPrice:I,executionPrice:P,priceImpact:k,fee:B,remainingAccounts:S,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)}),_=q(F({},A),{amount:new Se(f,A.amount),fee:A.fee===void 0?void 0:new Se(f,A.fee)}),v=new Qe({baseToken:d,denominator:new Re(10).pow(new Re(20+d.decimals)),quoteToken:f,numerator:I.mul(new te(10**(20+f.decimals))).toFixed(0)}),V=new Qe({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,B);return{allTrade:y,realAmountIn:L,amountOut:U,minAmountOut:_,expirationTime:T,currentPrice:v,executionPrice:V,priceImpact:k,fee:E,remainingAccounts:S,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?$e.sub(new Re(1)):je.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,I=Ge(y,p[T],i,!1),P=G.sqrtPriceX64ToPrice(w,e.mintA.decimals,e.mintB.decimals),k=u?P:new te(1).div(P),B=y.mul(new Re(Math.floor((1+a)*1e10))).div(new Re(1e10)),S=Ge(B,p[T],i,!0),K=u?e.currentPrice:new te(1).div(e.currentPrice),L=new te(k).sub(K).abs(),U=K,_=new lt(new te(L).mul(10**15).toFixed(0),new te(U).mul(10**15).toFixed(0));return{allTrade:f,amountIn:I,maxAmountIn:S,realAmountOut:d,expirationTime:ln(I.expirationTime,d.expirationTime),currentPrice:e.currentPrice,executionPrice:k,priceImpact:_,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}=Pe.getAmountsFromLiquidityWithSlippage(y,b,w,t,!1,!1,0),{amountSlippageA:I,amountSlippageB:P}=Pe.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)),B=new te(I.toString()).div(new te(10).pow(d)).mul(p.value).add(new te(P.toString()).div(new te(10).pow(f)).mul(g.value)),S=new te(1).div(k.add(B)),L=new te(u.volumeFee).mul(365).div(c).mul(S).mul(100).toNumber(),U=3600*24*365,_=e.rewardDefaultInfos.map(v=>{var H,me;let V=v.mint.decimals,E=o[v.mint.address];return s<((H=v.startTime)!=null?H:0)||s>((me=v.endTime)!=null?me:0)||!v.perSecond||!E||V===void 0?0:new te(E.value).mul(new te(v.perSecond).mul(U)).div(new te(10).pow(V)).mul(S).mul(100).toNumber()});return{feeApr:L,rewardsApr:_,apr:L+_.reduce((v,V)=>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?Pe.getLiquidityFromAmountA(p,g,f):new Re(0);else if(u.lte(g)){let T=Pe.getLiquidityFromAmountA(u,g,f),I=Pe.getLiquidityFromAmountB(p,u,f);y=t?T:I}else y=t?new Re(0):Pe.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=a?1+r:1-r,p=Pe.getAmountsForLiquidity(G.priceToSqrtPriceX64(new te(t.price),t.mintA.decimals,t.mintB.decimals),s,c,i,a),[g,d]=[Ge(p.amountA,(b=t.mintA.extensions)==null?void 0:b.feeConfig,e,!0),Ge(p.amountB,(w=t.mintB.extensions)==null?void 0:w.feeConfig,e,!0)],[f,y]=[Ge(p.amountA.muln(u),(A=t.mintA.extensions)==null?void 0:A.feeConfig,e,!0),Ge(p.amountB.muln(u),(T=t.mintB.extensions)==null?void 0:T.feeConfig,e,!0)];return{liquidity:i,amountA:g,amountB:d,amountSlippageA:f,amountSlippageB:y,expirationTime:ln(g.expirationTime,d.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 Ve(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=Q.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=Q.getTickArrayStartIndex(i.tick,i.tickSpacing);return oe(i.programId,i.poolId,r).publicKey});return(await Ve(e,n)).map(i=>i&&qt.decode(i.data))}},Lo={volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[]};function $i(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:fs.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:Lo,week:Lo,month:Lo,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 Qt from"bn.js";var Ji=class{static getfeeGrowthInside(e,t,n){let o=new Qt(0),i=new Qt(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 Qt(0),a=new Qt(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 Qt(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 Qt(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(ys.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 I=Buffer.from([...Oe.createCustomizablePool,...T]);return new ge({keys:A,programId:e,data:I})}static createPermissionedPoolInstruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f,y,b,w,A,T){let I=O([z("sqrtPriceX64"),N("collectFeeOn"),be("enableDynamicFee"),ke("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(S=>({pubkey:S,isSigner:!1,isWritable:!1})),...T?[{pubkey:T,isSigner:!1,isWritable:!1}]:[]],k=Buffer.alloc(I.span);I.encode({sqrtPriceX64:y,collectFeeOn:b,enableDynamicFee:T!==void 0,seedIndex:w},k);let B=Buffer.from([...Oe.createPermissionedPool,...k]);return new ge({keys:P,programId:e,data:B})}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:Ae,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?Ae: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,I,P,k,B,S,K,L,U){let _=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:Oo,isSigner:!1,isWritable:!1},{pubkey:wt,isSigner:!1,isWritable:!1},{pubkey:Ae,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:w,isSigner:!1,isWritable:!1},...U?[{pubkey:U,isSigner:!1,isWritable:!0}]:[]],V=Buffer.alloc(_.span);_.encode({tickLower:A,tickUpper:T,tickArrayLowerStart:I,tickArrayUpperStart:P,liquidity:k,amountMaxA:B,amountMaxB:S,withMetadata:K,optionBaseFlag:L!==null?1:0,baseFlag:L!=null?L:!1},V);let E=Buffer.from([...Oe.openPositionV2,...V]);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 I=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:Ae,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(I.span);I.encode({liquidity:y,amountMaxA:b,amountMaxB:w,optionBaseFlag:A!==null?1:0,baseFlag:A!=null?A:!1},k);let B=Buffer.from([...Oe.increaseLiquidityV2,...k]);return new ge({keys:P,programId:e,data:B})}static decreaseLiquidityV2Instruction(e,t,n,o,i,r,a,s,c,u,p,g,d,f,y,b,w,A,T){let I=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:Ae,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(S=>[{pubkey:S.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.rewardMint,isSigner:!1,isWritable:!1}]).flat()],k=Buffer.alloc(I.span);I.encode({liquidity:b,amountMinA:w,amountMinB:A},k);let B=Buffer.from([...Oe.decreaseLiquidityV2,...k]);return new ge({keys:P,programId:e,data:B})}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:Ae,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}))],I=Buffer.alloc(A.span);A.encode({amount:d,otherAmountThreshold:f,sqrtPriceLimitX64:y,isBaseInput:b},I);let P=Buffer.from([...Oe.swapV2,...I]);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:Ae,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,I,P,k,B,S,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")]),_=[{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:Oo,isSigner:!1,isWritable:!1},{pubkey:Ae,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:I,liquidity:P,amountMaxA:k,amountMaxB:B,withMetadata:S,optionBaseFlag:K!==null?1:0,baseFlag:K!=null?K:!1},v);let V=Buffer.from([...Oe.openPositionWithToken22Nft,...v]);return new ge({keys:_,programId:e,data:V})}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")]),I=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey: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:I,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:Ae,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}=So(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:[$.CreateAccount,$.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}=So(t,y),{publicKey:A}=ze(t,y,p),{publicKey:T}=ze(t,y,g),I=de(t,y).publicKey,P=[this.createPoolInstruction(t,y,n,r,w,p,A,d,g,T,f,I,a,s)];return{signers:[],instructions:P,instructionTypes:[$.CreateAccount,$.ClmmCreatePool],address:{poolId:y,observationId:w,exBitmapAccount:I,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=Q.getTickArrayStartIndex(o,e.config.tickSpacing),A=Q.getTickArrayStartIndex(i,e.config.tickSpacing),{publicKey:T}=oe(f,y,w),{publicKey:I}=oe(f,y,A),{publicKey:P}=g?Z(n.wallet,b,Ae):Z(n.wallet,b,ae),{publicKey:k}=Ct(b),{publicKey:B}=Xe(f,b),{publicKey:S}=it(f,y,o,i),K=g?this.openPositionWithToken22NftInstruction(f,n.feePayer,y,n.wallet,b,P,S,T,I,B,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,S,T,I,B,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:[$.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:T,tickArrayUpper:I,positionNftAccount:P,metadataAccount:k,personalPosition:B,protocolPosition:S}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,base:r,baseAmount:a,otherAmountMax:s,liquidity:c,withMetadata:u,getEphemeralSigners: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=Q.getTickArrayStartIndex(o,e.config.tickSpacing),A=Q.getTickArrayStartIndex(i,e.config.tickSpacing),{publicKey:T}=oe(f,y,w),{publicKey:I}=oe(f,y,A),{publicKey:P}=g?Z(n.wallet,b,Ae):Z(n.wallet,b,ae),{publicKey:k}=Ct(b),{publicKey:B}=Xe(f,b),{publicKey:S}=it(f,y,o,i),K=g?this.openPositionWithToken22NftInstruction(f,n.feePayer,y,n.wallet,b,P,S,T,I,B,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,S,T,I,B,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:I,positionNftAccount:P,metadataAccount:k,personalPosition:B,protocolPosition:S},instructions:[K],signers:d,instructionTypes:[$.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=Q.getTickArrayStartIndex(o,e.config.tickSpacing),A=Q.getTickArrayStartIndex(i,e.config.tickSpacing),{publicKey:T}=oe(y,b,w),{publicKey:I}=oe(y,b,A),{publicKey:P}=g?Z(n.wallet,d,Ae):Z(n.wallet,d,ae),{publicKey:k}=Ct(d),{publicKey:B}=Xe(y,d),{publicKey:S}=it(y,b,o,i),K=g?this.openPositionWithToken22NftInstruction(y,n.wallet,b,n.wallet,d,P,S,T,I,B,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,S,T,I,B,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:I,positionNftAccount:P,metadataAccount:k,personalPosition:B,protocolPosition:S},instructions:[K],signers:f,instructionTypes:[$.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?Z(n.wallet,o.nftMint,Ae).publicKey:Z(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:[$.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=Q.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),g=Q.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:d}=oe(c,u,p),{publicKey:f}=oe(c,u,g),{publicKey:y}=s?Z(o.wallet,n.nftMint,Ae):Z(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:[$.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=Q.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),g=Q.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:d}=oe(c,u,p),{publicKey:f}=oe(c,u,g),{publicKey:y}=s?Z(o.wallet,n.nftMint,Ae):Z(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:[$.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=Q.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),d=Q.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:f}=oe(u,p,g),{publicKey:y}=oe(u,p,d),{publicKey:b}=c?Z(o.wallet,n.nftMint,Ae):Z(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 B=0;B<t.rewardInfos.length;B++)T.set(t.rewardInfos[B].mint.address,o.rewardAccounts[B]);let I=[];for(let B=0;B<t.rewardInfos.length;B++){let S=t.rewardInfos[B].mint.address,K=T.get(S);K&&I.push({poolRewardVault:new M(t.rewardInfos[B].vault),ownerRewardVault:K,rewardMint:new M(S)})}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),I,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:[$.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:[$.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:[$.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:[$.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:[$.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:[$.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?Z(i,r,Ae).publicKey:Z(i,r,ae).publicKey,{publicKey:g}=Xe(n,r),d=Ut(e,u).publicKey,f=Z(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:Z(t,r,a?Ae:ae).publicKey,positionNftProgram:a?Ae:ae});return{address:{positionId:g,lockPositionId:d,lockNftAccount:f,lockNftMint:u,positionNftAccount:p,metadataAccount:y},instructions:[b],signers:c,instructionTypes:[$.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:Oo,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}=Z(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:Ko(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=Q.getTickArrayStartIndex(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),i=Q.getTickArrayStartIndex(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:r}=oe(t,n,o),{publicKey:a}=oe(t,n,i),{publicKey:s}=Z(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:Ko(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:Ae,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:I,exTickArrayBitmap:P}){let k=[...P?[{pubkey:P,isSigner:!1,isWritable:!0}]:[],...I.map(S=>[{pubkey:S.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:S.rewardMint,isSigner:!1,isWritable:!1}]).flat()],B=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey: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:Ae,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:B,programId:e,data:Buffer.from(nr)})}};var bs=O([ye("mintAuthorityOption"),h("mintAuthority"),l("supply"),N("decimals"),N("isInitialized"),ye("freezeAuthorityOption"),h("freezeAuthority")]);import{TOKEN_PROGRAM_ID as lP}from"@solana/spl-token";import{PublicKey as fP}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 gs=new or(25),Ps=new or(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as NP,TOKEN_PROGRAM_ID as MP}from"@solana/spl-token";import{PublicKey as vP,SystemProgram as VP,SYSVAR_RENT_PUBKEY as _P,TransactionInstruction as EP}from"@solana/web3.js";import YP from"bn.js";var As=O([N("instruction"),l("amountIn"),l("minAmountOut")]),ws=O([N("instruction"),l("maxAmountIn"),l("amountOut")]),CP=O([N("instruction"),N("nonce")]),ks=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")]),RP=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")]),Ts=O([N("instruction"),l("baseAmountIn"),l("quoteAmountIn"),l("fixedSide"),l("otherAmountMin")]),hs=O([N("instruction"),l("lpAmount"),l("baseAmountMin"),l("quoteAmountMin")]);var Is=O([l("fee")]);var HP=ee("Raydium_liquidity_instruction");var Bs=5e4,Ss=O([l("x"),l("y"),l("price")]),eA=O([l("accountType"),l("status"),l("multiplier"),l("validDataCount"),D(Ss,Bs,"DataElement")]);import{PublicKey as dA}from"@solana/web3.js";import fA from"decimal.js";import{TOKEN_PROGRAM_ID as bA}from"@solana/spl-token";import{PublicKey as iA}from"@solana/web3.js";var sA=ee("Raydium_liquidity_serum");import Yw from"bn.js";import Zw from"decimal.js";import{TOKEN_PROGRAM_ID as QA}from"@solana/spl-token";import{PublicKey as HA}from"@solana/web3.js";import $A from"bn.js";import{SystemProgram as FA,SYSVAR_RENT_PUBKEY as vA,Transaction as VA,TransactionInstruction as _A}from"@solana/web3.js";import{createInitializeAccountInstruction as DA,TOKEN_PROGRAM_ID as WA}from"@solana/spl-token";function Ks(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 xs=O([J(5),Ks("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"),J(7)]);import{PublicKey as wT}from"@solana/web3.js";import{AccountLayout as TT,NATIVE_MINT as hT,TOKEN_2022_PROGRAM_ID as IT,TOKEN_PROGRAM_ID as BT,createAssociatedTokenAccountIdempotentInstruction as ST}from"@solana/spl-token";import Ak from"bn.js";import Fs from"bn.js";var rk=new Fs(0);import mk from"bn.js";import vs from"bn.js";var et=new vs(1e6);import MT from"bn.js";import vT from"decimal.js";import{PublicKey as Vk,TransactionInstruction as _k,Keypair as Dk,SystemProgram as Wk}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Uk,TOKEN_2022_PROGRAM_ID as Gk,TOKEN_PROGRAM_ID as zk}from"@solana/spl-token";var Ik=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),Bk=Buffer.from("amm_config","utf8"),Sk=Buffer.from("pool","utf8"),Kk=Buffer.from("pool_lp_mint","utf8"),xk=Buffer.from("pool_vault","utf8"),Ck=Buffer.from("observation","utf8"),Rk=Buffer.from("permission","utf8"),Lk=Buffer.from("support_mint","utf8");var Ok=Buffer.from("locked_liquidity","utf8");var $k=ee("Raydium_cpmm"),Jk={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 Es=O([J(8),N("bump"),be("disableCreatePool"),ke("index"),l("tradeFeeRate"),l("protocolFeeRate"),l("fundFeeRate"),l("createPoolFee"),h("protocolOwner"),h("fundOwner"),l("creatorFeeRate"),D(l(),15)]),rr=O([J(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)]),nT=O([J(8),h("configId"),D(l(),30)]);import{PublicKey as KK,SystemProgram as xK}from"@solana/web3.js";import{createTransferInstruction as RK,TOKEN_PROGRAM_ID as LK,TOKEN_2022_PROGRAM_ID as OK,createAssociatedTokenAccountIdempotentInstruction as NK,createSyncNativeInstruction as FK,createTransferCheckedInstruction as vK}from"@solana/spl-token";import nu from"bn.js";import EK from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Xh,TOKEN_2022_PROGRAM_ID as Yh,TOKEN_PROGRAM_ID as Qh}from"@solana/spl-token";import{SystemProgram as $h,TransactionInstruction as Jh}from"@solana/web3.js";import Xs from"bn.js";var qs=O([l(),l("epoch"),N("curveType"),ke("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)]),Kh=O([l(),l("epoch"),h("poolId"),h("beneficiary"),l("claimedAmount"),l("tokenShareAmount"),D(l(),8)]),sr=O([N("migrateType"),N("migrateCpmmFeeOn"),l("supply"),l("totalSellA"),l("totalFundRaisingB"),l("totalLockedAmount"),l("cliffPeriod"),l("unlockPeriod")]),zs=O([l("epoch"),N("index"),h("configId"),sr.replicate("bondingCurveParam"),D(l(),50)]),ur=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"),D(N(),107),ci(zs,"platformCurve")]);var Oh=Buffer.from("vault_auth_seed","utf8"),Nh=Buffer.from("global_config","utf8"),Mh=Buffer.from("pool_vesting","utf8"),Fh=Buffer.from("platform_config","utf8"),vh=Buffer.from("platform_fee_vault_auth_seed","utf8"),Vh=Buffer.from("creator_fee_vault_auth_seed","utf8"),_h=Buffer.from("platform_global_access","utf8"),Eh=Buffer.from("platform_allow_config","utf8");var oI={initialize:Buffer.from([175,175,109,31,13,152,155,237]),initializeV2:Buffer.from([67,153,175,39,218,16,38,32]),buyExactIn:Buffer.from([250,234,13,123,213,156,19,236]),buyExactOut:Buffer.from([24,211,116,40,105,3,153,56]),sellExactIn:Buffer.from([149,39,222,155,211,124,152,26]),sellExactOut:Buffer.from([95,200,71,34,8,9,11,166]),createVestingAccount:Buffer.from([129,178,2,13,217,172,230,218]),claimVestedToken:Buffer.from([49,33,104,30,189,157,79,35]),createPlatformConfig:Buffer.from([176,90,196,175,253,113,220,20]),claimPlatformFee:Buffer.from([156,39,208,135,76,237,61,72]),updatePlaformConfig:Buffer.from([195,60,76,129,146,45,67,143]),initializeWithToken2022:Buffer.from([37,190,126,222,44,154,171,17]),claimPlatformFeeFromVault:Buffer.from([117,241,198,168,248,218,80,29]),claimCreatorFee:Buffer.from([26,97,138,203,132,171,141,252]),updatePlatformCurveParam:Buffer.from([138,144,138,250,220,128,4,57]),removePlatformCurveParam:Buffer.from([27,30,62,169,93,224,24,145]),createPlatformVestingAccount:Buffer.from([146,71,173,69,98,19,15,106]),createPlatformAllowConfig:Buffer.from([69,71,168,7,214,250,107,102]),closePlatformAllowConfig:Buffer.from([82,205,36,216,16,6,240,215])};var iI=new Xs("18446744073709551615");import{TOKEN_2022_PROGRAM_ID as uI,TOKEN_PROGRAM_ID as cI}from"@solana/spl-token";import pI from"bn.js";import yI from"decimal.js";import YI from"bn.js";import ZI from"decimal.js";import kI from"bn.js";import hI from"decimal.js";import NI from"bn.js";import FI from"decimal.js";import mr from"bn.js";import No from"decimal.js";var zn=class{static _multipler(e){return new No(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new No(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 mr(o.mul(this._Q64).toFixed(0))}};zn._Q64=new No(new mr(1).shln(64).toString());import{NATIVE_MINT as oS,TOKEN_2022_PROGRAM_ID as iS,TOKEN_PROGRAM_ID as rS,createAssociatedTokenAccountIdempotentInstruction as sS,createSyncNativeInstruction as uS,getTransferFeeConfig as cS,unpackMint as lS}from"@solana/spl-token";import xe from"bn.js";import{PublicKey as Js,SystemProgram as pS}from"@solana/web3.js";import wS from"decimal.js";var kS={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 Js("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new xe(0),cliffPeriod:new xe(0),unlockPeriod:new xe(0),startTime:new xe(0),totalAllocatedShare:new xe(0)}},TS=new xe(1e4);var eu={[fi.toBase58()]:3};var tu=O([J(5),J(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"),J(7)]);import{PublicKey as zS}from"@solana/web3.js";var HS=ee("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as rK,TOKEN_2022_PROGRAM_ID as aK,TOKEN_PROGRAM_ID as sK}from"@solana/spl-token";import{PublicKey as cK,SystemProgram as lK,TransactionInstruction as mK}from"@solana/web3.js";import pK from"bn.js";var yx=new nu(0);import{PublicKey as ou,Transaction as Mo,TransactionInstruction as iu}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ru}from"@solana/spl-token";import dr from"bn.js";var Fe=class extends _e{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 dr(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 Ve(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(),I=w.endTime.toNumber(),P=A.tokenInfo.map(S=>S.debtAmount.gt(new dr(0))).filter(S=>!S).length!==3,k=i>T&&i<I&&w.status===1,B=P&&k;c.push({programId:t,poolId:d,ammId:w.ammId,ownerAccountId:f,snapshotLpAmount:A.lpAmount,project:Fe.VERSION_PROJECT[p],openTime:T,endTime:I,canClaim:B,canClaimErrorType:P?k?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:w.tokenInfo.map((S,K)=>({mintAddress:S.mintAddress,mintVault:S.mintVault,mintDecimals:S.mintDecimals,perLpLoss:S.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 Mo().add(...c.slice(0,o.AllTxData.instructions.length-1)),signer:s},{transaction:new Mo().add(...c.slice(o.AllTxData.instructions.length-1)),signer:[]},{transaction:new Mo().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:ru,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 iu({keys:i,programId:e,data:a})}},st=Fe;st.CLAIMED_NUM=3,st.POOL_LAYOUT=O([J(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([J(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 ou(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 Ox}from"@solana/web3.js";import{getTransferFeeConfig as Mx,MintLayout as Fx,TOKEN_2022_PROGRAM_ID as vx,TOKEN_PROGRAM_ID as Vx,unpackMint as _x}from"@solana/spl-token";var dR=new Lt(2),pR=new Lt(3),fR=new Lt(5),$n=new Lt(10),yR=new Lt(100),bR=new Lt(1e3),gR=new Lt(1e4);function oo(m){return $n.pow(Be(m))}function Hn(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 Zt}from"@solana/spl-token";import{PublicKey as R}from"@solana/web3.js";import we from"bn.js";import gt from"decimal.js";var Xn=class extends _e{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 we(new R(o.address).toBuffer()).gt(new we(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,B)=>{k&&w.push(A[B])});let I=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(I),g.addCustomComputeBudget(s),g.addTipInstruction(u),g.versionBuild({txVersion:c,extInfo:{address:q(F({},I.address),{observationId:I.address.observationId.toBase58(),exBitmapAccount:I.address.exBitmapAccount.toBase58(),programId:t.toString(),id:I.address.poolId.toString(),mintA:d,mintB:f,openTime:"0",vault:{A:I.address.mintAVault.toString(),B:I.address.mintBVault.toString()},rewardInfos:[],config:{id:r.id.toString(),index:r.index,protocolFeeRate:r.protocolFeeRate,tradeFeeRate:r.tradeFeeRate,tickSpacing:r.tickSpacing,fundFeeRate:r.fundFeeRate,description:r.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:F({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:I.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:[]},_n)}})}async createCustomizablePool(e){var K;let{programId:t,owner:n=((K=this.scope.owner)==null?void 0:K.publicKey)||R.default,mint1:o,mint2:i,initialPrice:r,ammConfig:a,collectFeeOn:s=0,dynamicFeeConfig:c,computeBudgetConfig:u,txVersion:p,txTipConfig:g,feePayer:d,addSupportMintExt:f}=e,y=this.createTxBuilder(d),[b,w,A]=new we(new R(o.address).toBuffer()).gt(new we(new R(i.address).toBuffer()))?[i,o,new gt(1).div(r)]:[o,i,r],T=G.priceToSqrtPriceX64(A,b.decimals,w.decimals),I=[],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((U,_)=>{U&&I.push(P[_])}));let{address:k}=await j.createPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:b,mintB:w,ammConfigId:a.id,initialPriceX64:T,extendMintAccount:I}),B=[];if(c){if(!await this.scope.connection.getAccountInfo(c))throw new Error("Dynamic Fee Config not found. Run 03_admin_create_dynamic_fee_config.ts first.");console.log("Dynamic Fee Config",c.toBase58()),B.push({pubkey:c,isSigner:!1,isWritable:!1})}let S=j.createCustomizablePoolInstruction(t,k.poolId,this.scope.ownerPubKey,a.id,k.mintA,k.mintB,k.mintAVault,k.mintBVault,k.observationId,k.exBitmapAccount,k.mintAProgram,k.mintBProgram,T,s,[...I,...B.map(L=>L.pubkey)],c);return y.addInstruction({instructions:[S]}),y.addCustomComputeBudget(u),y.addTipInstruction(g),y.versionBuild({txVersion: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:s,feeOn:s===0?"Both":s===1?"TokenA":"TokenB",hasDynamicFee:!!c,tips:[],launchMigratePool:!1},_n)}})}async createPermissionedPool(e){var U;let{programId:t,owner:n=((U=this.scope.owner)==null?void 0:U.publicKey)||R.default,mint1:o,mint2:i,initialPrice:r,ammConfig:a,collectFeeOn:s=0,dynamicFeeConfig:c,computeBudgetConfig:u,txVersion:p,txTipConfig:g,feePayer:d,addSupportMintExt:f}=e,y=this.createTxBuilder(d),[b,w,A]=new we(new R(o.address).toBuffer()).gt(new we(new R(i.address).toBuffer()))?[i,o,new gt(1).div(r)]:[o,i,r],T=G.priceToSqrtPriceX64(A,b.decimals,w.decimals),I=[],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&&I.push(P[V])}));let k=d!=null?d:this.scope.ownerPubKey,B=Math.floor(Math.random()*Math.pow(2,16))+1,{address:S}=await j.createPermissionedPoolInstructions({connection:this.scope.connection,programId:t,owner:n,mintA:b,mintB:w,ammConfigId:a.id,initialPriceX64:T,extendMintAccount:I,payer:k,seedIndex:B}),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=j.createPermissionedPoolInstruction(t,k,k,S.permission,a.id,S.poolId,S.mintA,S.mintB,S.mintAVault,S.mintBVault,S.observationId,S.exBitmapAccount,S.mintAProgram,S.mintBProgram,T,s,B,[...I,...K.map(_=>_.pubkey)],c);return y.addInstruction({instructions:[L]}),y.addCustomComputeBudget(u),y.addTipInstruction(g),y.versionBuild({txVersion:p,extInfo:{address:q(F({},S),{observationId:S.observationId.toBase58(),exBitmapAccount:S.exBitmapAccount.toBase58(),programId:t.toString(),id:S.poolId.toString(),mintA:b,mintB:w,openTime:"0",vault:{A:S.mintAVault.toString(),B:S.mintBVault.toString()},rewardInfos:[],config:{id:a.id.toString(),index:a.index,protocolFeeRate:a.protocolFeeRate,tradeFeeRate:a.tradeFeeRate,tickSpacing:a.tickSpacing,fundFeeRate:a.fundFeeRate,description:a.description,defaultRange:0,defaultRangePoint:[]}}),mockPoolInfo:F({type:"Concentrated",rewardDefaultPoolInfos:"Clmm",id:S.poolId.toString(),mintA:b,mintB:w,feeRate:a.tradeFeeRate,openTime:"0",programId:t.toString(),price:A.toNumber(),config:{id:a.id.toString(),index:a.index,protocolFeeRate:a.protocolFeeRate,tradeFeeRate:a.tradeFeeRate,tickSpacing:a.tickSpacing,fundFeeRate:a.fundFeeRate,description:a.description,defaultRange:0,defaultRangePoint:[]},burnPercent:0,collectFeeOn:s,feeOn:s===0?"Both":s===1?"TokenA":"TokenB",hasDynamicFee:!!c,tips:[],launchMigratePool:!1},_n)}})}async openPositionFromBase({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:o,tickUpper:i,base:r=null,baseAmount:a,otherAmountMax:s,liquidity:c=new we(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),I=null,P=null,k=n.useSOLBalance&&e.mintA.address===Y.toString(),B=n.useSOLBalance&&e.mintB.address===Y.toString(),[S,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||S.isZero()?{payer:this.scope.ownerPubKey,amount:S}:void 0,skipCloseAccount:!k,notUseTokenAccount:k,associatedOnly:k?!1:p,checkCreateATAOwner:g});L&&(I=L),T.addInstruction(U||{});let{account:_,instructionParams:v}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:e.mintB.programId,mint:new R(e.mintB.address),owner:this.scope.ownerPubKey,createInfo:B||K.isZero()?{payer:this.scope.ownerPubKey,amount:K}:void 0,skipCloseAccount:!B,notUseTokenAccount:B,associatedOnly:B?!1:p,checkCreateATAOwner:g});_&&(P=_),T.addInstruction(v||{}),(!I||!P)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",{ownerTokenAccountA:I==null?void 0:I.toBase58(),ownerTokenAccountB:P==null?void 0:P.toBase58()});let V=t!=null?t:await this.getClmmPoolKeys(e.id.toString()),E=await j.openPositionFromBaseInstructions({poolInfo:e,poolKeys:V,ownerInfo:q(F({},n),{feePayer:this.scope.ownerPubKey,wallet:this.scope.ownerPubKey,tokenAccountA:I,tokenAccountB:P}),tickLower:o,tickUpper:i,base:r,baseAmount:a,otherAmountMax:s,liquidity:c,withMetadata: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),I=null,P=null,k=n.useSOLBalance&&e.mintA.address===Y.toBase58(),B=n.useSOLBalance&&e.mintB.address===Y.toBase58(),{account:S,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});S&&(I=S),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:B||i.isZero()?{payer:this.scope.ownerPubKey,amount:i}:void 0,skipCloseAccount:!B,notUseTokenAccount:B,associatedOnly:B?!1:u,checkCreateATAOwner:p});L&&(P=L),T.addInstruction(U||{}),(I===void 0||P===void 0)&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let _=t||await this.getClmmPoolKeys(e.id.toString()),v=await j.openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:_,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:I,tokenAccountB:P},tickLower:a,tickUpper:s,liquidity:c,amountMaxA:o,amountMaxB:i,base:r,withMetadata:g,getEphemeralSigners:b,nft2022:w});return T.addInstruction(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:I,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});I&&(b=I),y.addInstruction(P||{});let{account:k,instructionParams:B}=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(B||{}),!b&&!w&&this.logAndCreateError("cannot found target token accounts","tokenAccounts",this.scope.account.tokenAccounts);let S=n!=null?n:await this.getClmmPoolKeys(t.id),K=j.increasePositionFromLiquidityInstructions({poolInfo:t,poolKeys:S,ownerPosition:o,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:b,tokenAccountB:w},liquidity:a,amountMaxA:i,amountMaxB:r,nft2022:(L=await this.scope.connection.getAccountInfo(o.nftMint))==null?void 0:L.owner.equals(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:I}=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(I||{});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 B=await this.getClmmPoolKeys(t.id),S=j.increasePositionFromBaseInstructions({poolInfo:t,poolKeys:B,ownerPosition:n,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:y,tokenAccountB:b},base:o,baseAmount:i,otherAmountMax:r,nft2022:(K=await this.scope.connection.getAccountInfo(n.nftMint))==null?void 0:K.owner.equals(tt)});return f.addInstruction(S),f.addCustomComputeBudget(u),f.addTipInstruction(p),f.versionBuild({txVersion:g,extInfo:{address:S.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:I,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=I,P&&y.addInstruction(P);let{account:k,instructionParams:B}=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,B&&y.addInstruction(B);let S=n!=null?n:await this.getClmmPoolKeys(t.id),K=[];for(let V of S.rewardInfos){let E=i.useSOLBalance&&V.mint.address===Y.toString(),H;if(V.mint.address===t.mintA.address)H=A;else if(V.mint.address===t.mintB.address)H=T;else{let{account:me,instructionParams:ue}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R(V.mint.programId),mint:new R(V.mint.address),notUseTokenAccount:E,owner:this.scope.ownerPubKey,createInfo:{payer:this.scope.ownerPubKey,amount:0},skipCloseAccount:!E,associatedOnly:E?!1:c,checkCreateATAOwner:u});H=me,ue&&y.addInstruction(ue)}K.push(H)}!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:S,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:[$.ClmmDecreasePosition]});let _=F({},U.address);if(i.closePosition){let V=await j.closePositionInstructions({poolInfo:t,poolKeys:S,ownerInfo:{wallet:this.scope.ownerPubKey},ownerPosition:o,nft2022:L});y.addInstruction({endInstructions:V.instructions,endInstructionTypes:V.instructionTypes}),_=F(F({},_),V.address)}return y.addCustomComputeBudget(p),y.addTipInstruction(g),y.versionBuild({txVersion:d,extInfo:{address:_}})}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(),I,P,{account:k,instructionParams:B}=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});I=k,B&&y.addInstruction(B);let{account:S,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=S,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:Fo}=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,Fo&&y.addInstruction(Fo)}L[ve.mint.address]=Ie,U.push(Ie)}let _=Ut(t,r.lockNftMint).publicKey,v=Z(this.scope.ownerPubKey,r.lockNftMint,Zt).publicKey,V=Q.getTickArrayStartIndex(w.tickLower,f.config.tickSpacing),E=Q.getTickArrayStartIndex(w.tickUpper,f.config.tickSpacing),{publicKey:H}=oe(new R(f.programId),r.poolId,V),{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:_,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:H,tickArrayUpper:me,userVaultA:I,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:[$.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 we(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 we(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 we(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 we(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),I=b.equals(Y),P=a.useSOLBalance&&T,k=a.useSOLBalance&&I,B=this.createTxBuilder(),S=P||!s?void 0:Z(this.scope.ownerPubKey,y,w).publicKey;if(S)B.addInstruction({instructions:[bt(this.scope.ownerPubKey,S,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});S=ue,pe&&B.addInstruction(pe)}let K=k||!s?void 0:Z(this.scope.ownerPubKey,b,A).publicKey;if(K)B.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:o},associatedOnly:!k});K=ue,pe&&B.addInstruction(pe)}let L=zi(f,this.scope.ownerPubKey,i).publicKey,U=await this.scope.connection.getAccountInfo(L),_=U?Ni.decode(U.data).orderNonce:new we(0),v=Gi(f,c||this.scope.ownerPubKey,L,_).publicKey,V=Q.getTickArrayStartIndex(n,e.config.tickSpacing),E=oe(f,d,V).publicKey,H=ze(f,d,new R(e[t?"mintA":"mintB"].address)).publicKey,me=ze(f,d,new R(e[t?"mintB":"mintA"].address)).publicKey;return B.addInstruction({instructions:[j.openLimitOrderInstruction(f,c||this.scope.ownerPubKey,d,E,L,v,S,K,H,me,y,b,w,i,t,n,o,r)]}),B.addCustomComputeBudget(u),B.addTipInstruction(p),B.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:Z(this.scope.ownerPubKey,f,y).publicKey;if(T)A.addInstruction({instructions:[bt(this.scope.ownerPubKey,T,this.scope.ownerPubKey,f,y)]});else{let{account:B,instructionParams:S}=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=B,S&&A.addInstruction(S)}let I=ze(p,u,new R(e[d.zeroForOne?"mintA":"mintB"].address)).publicKey,P=Q.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,I,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,I]=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)],[B,S]=[T.equals(Y),I.equals(Y)],[K,L]=[a.useSOLBalance&&B,a.useSOLBalance&&S],U=this.createTxBuilder(),_=K||!s?void 0:Z(this.scope.ownerPubKey,T,P).publicKey,v=L||!s?void 0:Z(this.scope.ownerPubKey,I,k).publicKey;if(_)U.addInstruction({instructions:[bt(this.scope.ownerPubKey,_,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});_=ue,pe&&U.addInstruction(pe)}if(v)U.addInstruction({instructions:[bt(this.scope.ownerPubKey,v,this.scope.ownerPubKey,I,k)]});else{let{account:ue,instructionParams:pe}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:k,mint:I,notUseTokenAccount:L,owner:this.scope.ownerPubKey,skipCloseAccount:!L,createInfo:{payer:a.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:!L});v=ue,pe&&U.addInstruction(pe)}let[V,E]=[ze(y,f,T).publicKey,ze(y,f,I).publicKey],H=Q.getTickArrayStartIndex(b.tick,e.config.tickSpacing),me=oe(y,f,H).publicKey;return U.addInstruction({instructions:[j.decreaseLimitOrderInstruction(y,c||this.scope.ownerPubKey,f,me,t,_,v,V,E,T,I,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 Ve(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 I=ht.getUnFilledAmount({orderInfo:T});!n&&!I.isZero()&&this.logAndCreateError(`${A.toBase58()} order unfulfilled amount should be 0 (${I.toString()} remaining), please withdraw first or set autoWithdraw: true`);let P=f[T.poolId.toBase58()],k=b[A.toBase58()],B=ht.settleFilledOrder({orderInfo:T,tickInfo:k.ticks.find(S=>S.tick===T.tick)});if(I.isZero()){if(!B.isZero()){let S=await this.settleLimitOrder({limitOrder:A,forerunCreate:!0});s.addInstruction(F({},S.builder.AllTxData))}}else{let{builder:S}=await this.decreaseLimitOrder({poolInfo:P,limitOrder:A,limitOrderInfo:T,amount:I,slippage:o,txVersion:0,forerunCreate:!0});s.addInstruction({instructions:S.allInstructions})}s.addInstruction({instructions:[j.closeLimitOrderInstruction(e,i||this.scope.ownerPubKey,this.scope.ownerPubKey,A)]}),w++}return a===0?s.sizeCheckBuildV0({computeBudgetConfig:r}):s.sizeCheckBuild({computeBudgetConfig:r})}async settleLimitOrder({limitOrder:e,feePayer:t,ownerInfo:n={useSOLBalance:!0},associatedOnly:o=!0,computeBudgetConfig:i,txTipConfig:r,txVersion:a,forerunCreate:s}){let c=await this.scope.connection.getAccountInfo(e);c||this.logAndCreateError(`limit order ${e.toBase58()} not exist`);let u=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:Z(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 I=Q.getTickArrayStartIndex(u.tick,p.config.tickSpacing);return b.addInstruction({instructions:[j.settleLimitOrderInstruction(y,t||this.scope.ownerPubKey,u.poolId,oe(y,u.poolId,I).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 Ve(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(B=>B.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?Zt:(await this.scope.token.getTokenInfo(b)).programId),I=g[b.toBase58()],P=A||!o?void 0:Z(this.scope.ownerPubKey,b,T).publicKey;if(I)P=I;else{if(P)p.addInstruction({instructions:[bt(this.scope.ownerPubKey,P,this.scope.ownerPubKey,b,T)]});else{let{account:B,instructionParams:S}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:T,mint:b,notUseTokenAccount:A,owner:this.scope.ownerPubKey,skipCloseAccount:!A,createInfo:{payer:n.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:!A});P=B,S&&p.addInstruction(S)}g[b.toBase58()]=P}let k=Q.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(),I;!r||r.equals(new gt(0))?I=w?je.add(new we(1)):$e.sub(new we(1)):I=G.priceToSqrtPriceX64(r,e.mintA.decimals,e.mintB.decimals);let P;if(!P){let{account:S,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=S,K&&b.addInstruction(K)}let k;if(!k){let{account:S,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=S,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 B=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:B,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(),I;!r||r.equals(new gt(0))?I=w?je.add(new we(1)):$e.sub(new we(1)):I=G.priceToSqrtPriceX64(r,e.mintA.decimals,e.mintB.decimals);let P;if(!P){let{account:S,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=S,K&&b.addInstruction(K)}let k;if(!k){let{account:S,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=S,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 B=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:B,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,I;let f={};for(let P of this.scope.account.tokenAccountRawInfos)i?Z(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,B;w[P.pubkey.toBase58()]=(B=(k=P==null?void 0:P.accountInfo)==null?void 0:k.owner)!=null?B:null});let A=this.createTxBuilder(u);for(let P of Object.values(e)){if(t[P.id]===void 0||!t[P.id].find(V=>!V.liquidity.isZero()||V.rewardInfos.find(E=>!E.rewardAmountOwed.isZero())))continue;let k=P,B=o.useSOLBalance&&k.mintA.address===Y.toString(),S=o.useSOLBalance&&k.mintB.address===Y.toString(),K=f[k.mintA.address];if(!K)if(B){let{account:V,instructionParams:E}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:k.mintA.programId,mint:new R(k.mintA.address),notUseTokenAccount:B,owner:this.scope.ownerPubKey,skipCloseAccount:!B,createInfo:{payer:o.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:B?!1:i,checkCreateATAOwner:r});K=V,E&&A.addInstruction(E)}else{let V=new R(k.mintA.address);K=this.scope.account.getAssociatedTokenAccount(V,new R(k.mintA.programId)),A.addInstruction({instructions:[bt(this.scope.ownerPubKey,K,this.scope.ownerPubKey,V,new R(k.mintA.programId))]})}let L=f[k.mintB.address];if(!L)if(S){let{account:V,instructionParams:E}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:k.mintB.programId,mint:new R(k.mintB.address),notUseTokenAccount:S,owner:this.scope.ownerPubKey,skipCloseAccount:!S,createInfo:{payer:o.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:S?!1:i,checkCreateATAOwner:r});L=V,E&&A.addInstruction(E)}else{let V=new R(k.mintB.address);L=this.scope.account.getAssociatedTokenAccount(V,new R(k.mintB.programId)),A.addInstruction({instructions:[bt(this.scope.ownerPubKey,L,this.scope.ownerPubKey,V,new R(k.mintB.programId))]})}f[k.mintA.address]=K,f[k.mintB.address]=L;let U=[];for(let V of k.rewardDefaultInfos){let E=o.useSOLBalance&&V.mint.address===Y.toString(),H=f[V.mint.address];if(!H){let{account:me,instructionParams:ue}=await this.scope.account.getOrCreateTokenAccount({tokenProgram:new R(V.mint.programId),mint:new R(V.mint.address),notUseTokenAccount:E,owner:this.scope.ownerPubKey,skipCloseAccount:!E,createInfo:{payer:o.feePayer||this.scope.ownerPubKey,amount:0},associatedOnly:E?!1:i});H=me,ue&&A.addInstruction(ue)}f[V.mint.address]=H,U.push(H)}let _=await this.getClmmPoolKeys(k.id),v=[];for(let V=0;V<_.rewardInfos.length;V++)v.push({poolRewardVault:new R(_.rewardInfos[V].vault),ownerRewardVault:U[V],rewardMint:new R(_.rewardInfos[V].mint.address)});for(let V of t[P.id]){let E=(T=n==null?void 0:n[P.id])==null?void 0:T[V.nftMint.toBase58()];if(E){let H=Z(this.scope.ownerPubKey,E.lockNftMint,Zt).publicKey,me=Q.getTickArrayStartIndex(V.tickLower,_.config.tickSpacing),ue=Q.getTickArrayStartIndex(V.tickUpper,_.config.tickSpacing),{publicKey:pe}=oe(new R(_.programId),E.poolId,me),{publicKey:Pt}=oe(new R(_.programId),E.poolId,ue),{publicKey:ve}=it(new R(_.programId),E.poolId,V.tickLower,V.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:H,positionNftAccount:E.nftAccount,positionId:E.positionId,poolId:E.poolId,protocolPosition:ve,vaultA:new R(_.vault.A),vaultB:new R(_.vault.B),tickArrayLower:pe,tickArrayUpper:Pt,userVaultA:K,userVaultB:L,mintA:new R(_.mintA.address),mintB:new R(_.mintB.address),rewardAccounts:v,exTickArrayBitmap:de(d,E.poolId).publicKey});A.addInstruction({instructions:[Ie],instructionTypes:[$.ClmmHarvestLockPosition],lookupTableAddress:_.lookupTableAccount?[_.lookupTableAccount]:[]})}else{let H=j.decreaseLiquidityInstructions({poolInfo:k,poolKeys:_,ownerPosition:V,ownerInfo:{wallet:this.scope.ownerPubKey,tokenAccountA:K,tokenAccountB:L,rewardAccounts:U},liquidity:new we(0),amountMinA:new we(0),amountMinB:new we(0),nft2022:(I=w[V.nftMint.toBase58()])==null?void 0:I.equals(tt)});A.addInstruction(H)}}}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 we(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 we(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()]=ko.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()||Zt.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()||Zt.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 Ht({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=$i(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:Zt.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=ko.decode(i.data),a=new R(n.programId),s=new R(e),c=await Zi(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 Ht({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{is as AMM_CONFIG_SEED,Ii as BIT_PRECISION,Cy as BN_NEGATIVE_ONE,Je as BN_ONE,W as BN_ZERO,Xn as Clmm,ko as ClmmConfigLayout,j as ClmmInstrument,wo as CollectFeeOn,Ly as DYNAMIC_CONFIG_INDEX,ms as DYNAMIC_FEE_CONFIG_SEED,Ki as DYNAMIC_FEE_CONTROL_DENOMINATOR,Vy 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,Pe as LiquidityMathUtil,Mi as LockClPositionLayoutV2,_y as LockPositionLayout,Iy as MAGIC_SQRT_10001,By as MAX_FEE_RATE,Vn as MAX_FEE_RATE_NUMERATOR,$e as MAX_SQRT_PRICE_X64,He as MAX_TICK,Sy as MAX_TICK_SPACING,je as MIN_SQRT_PRICE_X64,Ze as MIN_TICK,xi as OBSERVATION_NUM,xy as OBSERVATION_UPDATE_DURATION_DEFAULT,ss as OPERATION_SEED,Ci as OPERATION_SIZE_USIZE,$a as ObservationItemLayout,Li as ObservationLayout,Oi as OperationLayout,ds as PERMISSION_SEED,Xi as POOL_LOCK_ID_SEED,cs as POOL_OBSERVATION_SEED,rs as POOL_REWARD_VAULT_SEED,Bo as POOL_SEED,us as POOL_TICK_ARRAY_BITMAP_SEED,_i as POOL_VAULT_SEED,Ei as POSITION_SEED,En as PersonalPositionLayout,gn as PoolFee,pn as PoolInfoLayout,Qa as PoolStatusBitFlag,Ya as PoolStatusBitIndex,qe as PoolUtil,Ue as PoolUtils,ts as PositionRewardInfoLayout,Ji as PositionUtils,vy as ProtocolPositionLayout,Ao as Q128,se as Q64,Si as REDUCTION_FACTOR_DENOMINATOR,Dt as RESOLUTION,dn as REWARD_NUM,es as RewardInfoLayout,Za as RewardState,ls as SUPPORT_MINT_SEED,yn as SqrtPriceMath,bn as SwapMathUtil,at as SwapState,vn as TICK_ARRAY_BITMAP_SIZE,as as TICK_ARRAY_SEED,We as TICK_ARRAY_SIZE,Ky as TICK_ARRAY_SIZE_USIZE,Bi as TICK_TO_SQRT_PRICE_FACTORS,Dn as TickArrayBitmapExtensionLayout,ft as TickArrayBitmapUtil,qt as TickArrayLayout,Q as TickArrayUtil,ns as TickLayout,G as TickUtil,Fn as U128_MAX,ab as U256_MAX,Oy as U64_IGNORE_RANGE,dt as U64_MAX,Ha as UpdateAmmConfigParam,ja as UpdateOperationAccountParam,mn as VOLATILITY_ACCUMULATOR_SCALE,Ri as WHITE_MINT_SIZE_USIZE,bb as abs,$y as checkedAdd,eb as checkedMul,Jy as checkedSub,db as clearBit,$i as clmmComputeInfoToApiInfo,Gt as decimalToX64,Wn as divRoundingUp,Zi as fetchTickArrays,yb as fromSignedI128,Ry as getCollectFeeOnDescription,_b as getOrderTick,Xy as getPdaAmmConfigId,Yy as getPdaDynamicFeeConfigAddress,de as getPdaExBitmapAccount,Gi as getPdaLimitOrderAddress,zi as getPdaLimitOrderNonceAddress,Ut as getPdaLockClPositionIdV2,Ko as getPdaLockPositionId,Ct as getPdaMetadataKey,Rt as getPdaMintExAccount,So 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,Io as i32ToBytes,Fi as i32ToBytesBE,lb as isBitSet,cb as leastSignificantBit,Co as mask,_n as mockV3CreatePoolInfo,Yi as mostSignificantBit,le as mulDivCeil,ce as mulDivFloor,nb as mulDivRound,tb as mulFull,mb as setBit,Ro as swapInternal,fb as toSignedI128,pb as toggleBit,rb as u128CheckedMul,ob as u128SaturatingAdd,ib as u128SaturatingSub,To as u16ToBytes,ho as u16ToBytesBE,ub as u256MulDivCeil,sb as u256MulDivFloor,vi as u64ToBytes,Vi as u8ToBytes,Me as wrappingSubU128,Qi as x64ToDecimal};
//# sourceMappingURL=index.mjs.map