UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

2 lines 117 kB
var Jo=Object.defineProperty,ei=Object.defineProperties;var ti=Object.getOwnPropertyDescriptors;var xt=Object.getOwnPropertySymbols;var Cn=Object.prototype.hasOwnProperty,Rn=Object.prototype.propertyIsEnumerable;var xn=(s,e,t)=>e in s?Jo(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,V=(s,e)=>{for(var t in e||(e={}))Cn.call(e,t)&&xn(s,t,e[t]);if(xt)for(var t of xt(e))Rn.call(e,t)&&xn(s,t,e[t]);return s},W=(s,e)=>ei(s,ti(e));var Ke=(s,e)=>{var t={};for(var n in s)Cn.call(s,n)&&e.indexOf(n)<0&&(t[n]=s[n]);if(s!=null&&xt)for(var n of xt(s))e.indexOf(n)<0&&Rn.call(s,n)&&(t[n]=s[n]);return t};import{PublicKey as ii}from"@solana/web3.js";import{get as Ln,set as ni}from"lodash";var Zt=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}},On={},oi={};function q(s){let e=Ln(On,s);if(!e){let t=Ln(oi,s);e=new Zt({name:s,logLevel:t}),ni(On,s,e)}return e}import{MINT_SIZE as ss,TOKEN_PROGRAM_ID as us,getTransferFeeConfig as cs,unpackMint as ls}from"@solana/spl-token";var Ht=q("Raydium_accountInfo_util");async function Ne(s,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:a=100}=V({batchRequest:!1},t),u=jt(e,a),r=new Array(u.length).fill([]);if(n){let l=u.map(f=>{let P=s._buildArgs([f.map(p=>p.toBase58())],i,"base64");return{methodName:"getMultipleAccounts",args:P}}),d=jt(l,10);r=(await(await Promise.all(d.map(async f=>await s._rpcBatchRequest(f)))).flat()).map(f=>(f.error&&Ht.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${f.error.message}`),f.result.value.map(P=>{if(P){let{data:p,executable:g,lamports:y,owner:b,rentEpoch:A}=P;return p.length!==2&&p[1]!=="base64"&&Ht.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:g,lamports:y,owner:new ii(b),rentEpoch:A}}return null})))}else try{r=await Promise.all(u.map(l=>s.getMultipleAccountsInfo(l,i)))}catch(l){l instanceof Error&&Ht.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.message}`)}return r.flat()}import $e from"bn.js";import FC from"decimal.js";import di from"big.js";import Ks from"bn.js";import ri from"toformat";var ai=ri,ft=ai;import Rt from"big.js";import ui from"bn.js";import ci from"decimal.js-light";import yt from"bn.js";var Nn=9007199254740991;function Pe(s){let e=q("Raydium_parseBigNumberish");if(s instanceof yt)return s;if(typeof s=="string"){if(s.match(/^-?[0-9]+$/))return new yt(s);e.logWithError(`invalid BigNumberish string: ${s}`)}return typeof s=="number"?(s%1&&e.logWithError(`BigNumberish number underflow: ${s}`),(s>=Nn||s<=-Nn)&&e.logWithError(`BigNumberish number overflow: ${s}`),new yt(String(s))):typeof s=="bigint"?new yt(s.toString()):(e.error(`invalid BigNumberish value: ${s}`),new yt(0))}var Ct=q("module/fraction"),$t=ft(Rt),bt=ft(ci),li={[0]:bt.ROUND_DOWN,[1]:bt.ROUND_HALF_UP,[2]:bt.ROUND_UP},mi={[0]:Rt.roundDown,[1]:Rt.roundHalfUp,[2]:Rt.roundUp},Z=class{constructor(e,t=new ui(1)){this.numerator=Pe(e),this.denominator=Pe(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new Z(this.denominator,this.numerator)}add(e){let t=e instanceof Z?e:new Z(Pe(e));return this.denominator.eq(t.denominator)?new Z(this.numerator.add(t.numerator),this.denominator):new Z(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof Z?e:new Z(Pe(e));return this.denominator.eq(t.denominator)?new Z(this.numerator.sub(t.numerator),this.denominator):new Z(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof Z?e:new Z(Pe(e));return new Z(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof Z?e:new Z(Pe(e));return new Z(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Ct.logWithError(`${e} is not an integer.`),e<=0&&Ct.logWithError(`${e} is not positive.`),bt.set({precision:e+1,rounding:li[n]});let i=new bt(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Ct.logWithError(`${e} is not an integer.`),e<0&&Ct.logWithError(`${e} is negative.`),$t.DP=e,$t.RM=mi[n]||1,new $t(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var vs=q("Raydium_amount"),Vs=ft(di);import{PublicKey as fi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Mn}from"@solana/spl-token";var Lt={chainId:101,address:fi.default.toBase58(),programId:Mn.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},xe={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Mn.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 Jt}from"@solana/web3.js";import{PublicKey as $,SystemProgram as Fn,SYSVAR_RENT_PUBKEY as yi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as bi}from"@solana/spl-token";function et({pubkey:s,isSigner:e=!1,isWritable:t=!0}){return{pubkey:s,isWritable:t,isSigner:e}}var gi=[et({pubkey:bi,isWritable:!1}),et({pubkey:Fn.programId,isWritable:!1}),et({pubkey:yi,isWritable:!1})];function vn({publicKey:s,transformSol:e}){let t=Vn(s.toString());if(t instanceof $)return e&&t.equals(Ue)?Me:t;if(e&&t.toString()===Ue.toBase58())return Me;if(typeof t=="string"){if(t===$.default.toBase58())return $.default;try{return new $(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Vn(s){try{return new $(s)}catch{return s}}var _e=new $("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ie=new $("SysvarRent111111111111111111111111111111111"),zs=new $("SysvarC1ock11111111111111111111111111111111"),Ee=new $("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Pi=new $("Sysvar1nstructions1111111111111111111111111"),Ai=Fn.programId,Xs=new $("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ys=new $("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Qs=new $("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Zs=new $("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Hs=new $("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),js=new $("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),$s=new $("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Js=new $("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),eu=new $("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),tu=new $("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),nu=new $("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Me=new $("So11111111111111111111111111111111111111112"),Ue=$.default;var en=class{constructor({mint:e,decimals:t,symbol:n,name:i,skipMint:a=!1,isToken2022:u=!1}){if(e===Ue.toBase58()||e instanceof Jt&&Ue.equals(e)){this.decimals=xe.decimals,this.symbol=xe.symbol,this.name=xe.name,this.mint=new Jt(xe.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=i||e.toString().substring(0,6),this.mint=a?Jt.default:vn({publicKey:e}),this.isToken2022=u}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ye=en;ye.WSOL=new en(W(V({},xe),{mint:xe.address}));var tn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Ot=tn;Ot.SOL=new tn(Lt);import wi from"bn.js";var fu=new Z(new wi(100));var wu=q("Raydium_price");import{merge as Vx}from"lodash";import Cu from"axios";var _n={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"},ki=W(V({},_n),{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 $u=q("Raydium_Api");import{PublicKey as gm,SystemProgram as Pm}from"@solana/web3.js";import{AccountLayout as hm,createAssociatedTokenAccountIdempotentInstruction as Im,TOKEN_PROGRAM_ID as Bm,TOKEN_2022_PROGRAM_ID as Sm}from"@solana/spl-token";import{PublicKey as rt,sendAndConfirmTransaction as un,SystemProgram as Ki,Transaction as At,TransactionMessage as wt,VersionedTransaction as kt}from"@solana/web3.js";import xi from"axios";import{PublicKey as nn,AddressLookupTableAccount as ot}from"@solana/web3.js";async function on({connection:s,address:e,cluster:t="mainnet"}){let n=await Ne(s,[...new Set(e.map(a=>a.toString()))].map(a=>new nn(a))),i={};for(let a=0;a<e.length;a++){let u=n[a],r=e[a];if(!u)continue;let l=new ot({key:r,state:ot.deserialize(u.data)});i[r.toString()]=l,t==="devnet"?nt[r.toString()]=l:tt[r.toString()]=l}return i}var tt={},rn=async s=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(tt[e])return tt;let t=new nn(e),n=await s.getAccountInfo(t);return n&&(tt[e]=new ot({key:t,state:ot.deserialize(n.data)})),tt},nt={},an=async s=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(nt[e])return nt;let t=new nn(e),n=await s.getAccountInfo(t);return n&&(nt[e]=new ot({key:t,state:ot.deserialize(n.data)})),nt};var D={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 En,Keypair as Wn,PublicKey as Ti,Transaction as qn,TransactionMessage as hi,VersionedTransaction as Un}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ii}from"@solana/spl-token";var Dn=q("Raydium_txUtil"),Gn=1644;function Nt(s){let e=[],t=[];return s.microLamports&&(e.push(En.setComputeUnitPrice({microLamports:s.microLamports})),t.push(D.SetComputeUnitPrice)),s.units&&(e.push(En.setComputeUnitLimit({units:s.units})),t.push(D.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function it(s,e){var n,i;let t=e!=null?e:"confirmed";return(i=await((n=s.getLatestBlockhash)==null?void 0:n.call(s,{commitment:t})))==null?void 0:i.blockhash}async function Mt(s,e){return s.getSignatureStatuses([e]),new Promise((t,n)=>{let i=setTimeout(n,6e4);s.onSignature(e,a=>{if(clearTimeout(i),!a.err){t("");return}n(Object.assign(a.err,{txId:e}))},"confirmed")})}function sn(s,e){s.length<1&&Dn.logWithError(`no instructions provided: ${s.toString()}`),e.length<1&&Dn.logWithError(`no signers provided:, ${e.toString()}`);let t=new qn;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...s);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Gn}catch{return!1}}function H(s,e){let[t,n]=Ti.findProgramAddressSync(s,e);return{publicKey:t,nonce:n}}function gt({instructions:s,payer:e,signers:t}){return sn(s,[e,...t])}function Pt({instructions:s,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Wn.generate().publicKey.toString()}){let a=new hi({payerKey:e,recentBlockhash:n,instructions:s}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Un(a).serialize()).toString("base64").length<Gn}catch{return!1}}var Bi=s=>Buffer.isBuffer(s)?s:s instanceof Uint8Array?Buffer.from(s.buffer,s.byteOffset,s.byteLength):Buffer.from(s),Si=s=>{let e=s.serialize({requireAllSignatures:!1,verifySignatures:!1});s instanceof Un&&(e=Bi(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Ge(s){let e=[];return s.forEach(t=>{t instanceof qn&&(t.recentBlockhash||(t.recentBlockhash=Ii.toBase58()),t.feePayer||(t.feePayer=Wn.generate().publicKey)),e.push(Si(t))}),console.log("simulate tx string:",e),e}var Ft=2e3,vt=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 xi.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}=Nt(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(Ki.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new rt(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(D.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:i=[],endInstructionTypes:a=[],lookupTableAddress:u=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...i),this.endInstructionTypes.push(...a),this.lookupTableAddress.push(...u.filter(r=>r!==rt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:n}){return e===0?await this.buildV0(W(V({},t||{}),{lookupTableAddress:n})):this.build(t)}build(e){var n;let t=new At;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(i=>i.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 i=>{var c;let{recentBlockHash:a,skipPreflight:u=!0,sendAndConfirm:r,notSendToRpc:l}=i||{},d=a!=null?a:await it(this.connection,this.blockhashCommitment);if(t.recentBlockhash=d,this.signers.length&&t.sign(...this.signers),Ge([t]),(c=this.owner)!=null&&c.isKeyPair)return{txId:r?await un(this.connection,t,this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:u}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:u}),signedTx:t};if(this.signAllTransactions){let f=await this.signAllTransactions([t]);if(this.signers.length)for(let P of f)try{P.sign(...this.signers)}catch{}return{txId:l?"":await this.connection.sendRawTransaction(f[0].serialize(),{skipPreflight:u}),signedTx:f[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var d;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:i}=this.build(n),a=t.filter(c=>c.transaction.instructions.length>0),u=[i,...a.map(c=>c.transaction)],r=[this.signers,...a.map(c=>c.signers)],l=[...this.instructionTypes,...a.map(c=>c.instructionTypes).flat()];return(d=this.owner)!=null&&d.signer&&r.forEach(c=>{c.some(f=>f.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:u,signers:r,instructionTypes:l,execute:async c=>{var A;let{sequentially:f,onTxUpdate:P,skipTxCount:p=0,recentBlockHash:g,skipPreflight:y=!0}=c||{},b=g!=null?g:await it(this.connection,this.blockhashCommitment);if((A=this.owner)!=null&&A.isKeyPair){if(f){let T=[],x=0;for(let L of u){if(++x,x<=p)continue;let I=await un(this.connection,L,this.signers.find(C=>C.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});T.push(I)}return{txIds:T,signedTxs:u}}return{txIds:await await Promise.all(u.map(async T=>(T.recentBlockhash=b,await this.connection.sendRawTransaction(T.serialize(),{skipPreflight:y})))),signedTxs:u}}if(this.signAllTransactions){let T=u.map((L,I)=>(L.recentBlockhash=b,r[I].length&&L.sign(...r[I]),L));Ge(T);let x=await this.signAllTransactions(T);if(f){let L=0,I=[],C=async()=>{if(!x[L])return;let K=await this.connection.sendRawTransaction(x[L].serialize(),{skipPreflight:y});I.push({txId:K,status:"sent",signedTx:x[L]}),P==null||P([...I]),L++;let O=!1,N=null,v=null,ue=z=>{N!==null&&clearInterval(N),v!==null&&this.connection.removeSignatureListener(v);let E=I.findIndex(te=>te.txId===K);if(E>-1){if(I[E].status==="error"||I[E].status==="success")return;I[E].status=z.err?"error":"success"}P==null||P([...I]),z.err||C()};this.loopMultiTxStatus&&(N=setInterval(async()=>{var z;if(O){clearInterval(N);return}try{let E=await this.connection.getTransaction(K,{commitment:"confirmed",maxSupportedTransactionVersion:0});E&&(O=!0,clearInterval(N),ue({err:((z=E.meta)==null?void 0:z.err)||null}),console.log("tx status from getTransaction:",K))}catch(E){O=!0,clearInterval(N),console.error("getTransaction timeout:",E,K)}},Ft)),v=this.connection.onSignature(K,z=>{if(O){this.connection.removeSignatureListener(v);return}O=!0,ue(z)},"confirmed"),this.connection.getSignatureStatus(K)};return await C(),{txIds:I.map(K=>K.txId),signedTxs:x}}else{let L=[];for(let I=0;I<x.length;I+=1){let C=await this.connection.sendRawTransaction(x[I].serialize(),{skipPreflight:y});L.push(C)}return{txIds:L,signedTxs:x}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){var y;let g=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:i,recentBlockhash:a}=g,u=Ke(g,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),r=V(V({},this.cluster==="devnet"?await an(this.connection):await rn(this.connection)),t),l=Array.from(new Set([...n,...this.lookupTableAddress])),d=[];for(let b of l)r[b]===void 0&&d.push(new rt(b));let c=await on({connection:this.connection,address:d});for(let[b,A]of Object.entries(c))r[b]=A;let f=i?rt.default.toBase58():a!=null?a:await it(this.connection,this.blockhashCommitment),P=new wt({payerKey:this.feePayer,recentBlockhash:f,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(r));((y=this.owner)==null?void 0:y.signer)&&!this.signers.some(b=>b.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let p=new kt(P);return p.sign(this.signers),{builder:this,transaction:p,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async b=>{var L;let{skipPreflight:A=!0,sendAndConfirm:T,notSendToRpc:x}=b||{};if(Ge([p]),(L=this.owner)!=null&&L.isKeyPair){let I=await this.connection.sendTransaction(p,{skipPreflight:A});return T&&await Mt(this.connection,I),{txId:I,signedTx:p}}if(this.signAllTransactions){let I=await this.signAllTransactions([p]);if(this.signers.length)for(let C of I)try{C.sign(this.signers)}catch{}return{txId:x?"":await this.connection.sendTransaction(I[0],{skipPreflight:A}),signedTx:I[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:u||{}}}async buildV0MultiTx(e){var d;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:i}=await this.buildV0(n),a=t.filter(c=>c.builder.instructions.length>0),u=[i,...a.map(c=>c.transaction)],r=[this.signers,...a.map(c=>c.signers)],l=[...this.instructionTypes,...a.map(c=>c.instructionTypes).flat()];return(d=this.owner)!=null&&d.signer&&r.forEach(c=>{c.some(f=>f.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),u.forEach(async(c,f)=>{c.sign(r[f])}),{builder:this,transactions:u,signers:r,instructionTypes:l,buildProps:n,execute:async c=>{var y;let{sequentially:f,onTxUpdate:P,recentBlockHash:p,skipPreflight:g=!0}=c||{};if(p&&u.forEach(b=>b.message.recentBlockhash=p),Ge(u),(y=this.owner)!=null&&y.isKeyPair){if(f){let b=[];for(let A of u){let T=await this.connection.sendTransaction(A,{skipPreflight:g});await Mt(this.connection,T),b.push(T)}return{txIds:b,signedTxs:u}}return{txIds:await Promise.all(u.map(async b=>await this.connection.sendTransaction(b,{skipPreflight:g}))),signedTxs:u}}if(this.signAllTransactions){let b=await this.signAllTransactions(u);if(f){let A=0,T=[],x=async()=>{if(!b[A])return;let L=await this.connection.sendTransaction(b[A],{skipPreflight:g});T.push({txId:L,status:"sent",signedTx:b[A]}),P==null||P([...T]),A++;let I=!1,C=null,K=null,O=N=>{C!==null&&clearInterval(C),K!==null&&this.connection.removeSignatureListener(K);let v=T.findIndex(ue=>ue.txId===L);if(v>-1){if(T[v].status==="error"||T[v].status==="success")return;T[v].status=N.err?"error":"success"}P==null||P([...T]),N.err||x()};this.loopMultiTxStatus&&(C=setInterval(async()=>{var N;if(I){clearInterval(C);return}try{let v=await this.connection.getTransaction(L,{commitment:"confirmed",maxSupportedTransactionVersion:0});v&&(I=!0,clearInterval(C),O({err:((N=v.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",L))}catch(v){I=!0,clearInterval(C),console.error("getTransaction timeout:",v,L)}},Ft)),K=this.connection.onSignature(L,N=>{if(I){this.connection.removeSignatureListener(K);return}I=!0,O(N)},"confirmed"),this.connection.getSignatureStatus(L)};return x(),{txIds:[],signedTxs:b}}else{let A=[];for(let T=0;T<b.length;T+=1){let x=await this.connection.sendTransaction(b[T],{skipPreflight:g});A.push(x)}return{txIds:A,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var P;let f=e||{},{splitIns:t=[],computeBudgetConfig:n}=f,i=Ke(f,["splitIns","computeBudgetConfig"]),a=n?Nt(n):{instructions:[],instructionTypes:[]},u=this.signers.reduce((p,g)=>W(V({},p),{[g.publicKey.toBase58()]:g}),{}),r=[],l=[],d=[],c=0;if(this.allInstructions.forEach(p=>{let g=[...d,p],y=n?[...a.instructions,...g]:g,A=[...new Set(g.map(T=>T.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat()).values()].map(T=>new rt(T));if(p!==t[c]&&d.length<12&&(gt({instructions:y,payer:this.feePayer,signers:A})||gt({instructions:g,payer:this.feePayer,signers:A})))d.push(p);else{if(d.length===0)throw Error("item ins too big");c+=p===t[c]?1:0,gt({instructions:n?[...a.instructions,...d]:[...d],payer:this.feePayer,signers:A})?r.push(new At().add(...a.instructions,...d)):r.push(new At().add(...d)),l.push(Array.from(new Set(d.map(T=>T.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat())).map(T=>u[T]).filter(T=>T!==void 0)),d=[p]}}),d.length>0){let g=[...new Set(d.map(y=>y.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(y=>u[y]).filter(y=>y!==void 0);gt({instructions:n?[...a.instructions,...d]:[...d],payer:this.feePayer,signers:g.map(y=>y.publicKey)})?r.push(new At().add(...a.instructions,...d)):r.push(new At().add(...d)),l.push(g)}return r.forEach(p=>p.feePayer=this.feePayer),(P=this.owner)!=null&&P.signer&&l.forEach(p=>{p.some(g=>g.publicKey.equals(this.owner.publicKey))||p.push(this.owner.signer)}),{builder:this,transactions:r,signers:l,instructionTypes:this.instructionTypes,execute:async p=>{var L;let{sequentially:g,onTxUpdate:y,skipTxCount:b=0,recentBlockHash:A,skipPreflight:T=!0}=p||{},x=A!=null?A:await it(this.connection,this.blockhashCommitment);if(r.forEach(async(I,C)=>{I.recentBlockhash=x,l[C].length&&I.sign(...l[C])}),Ge(r),(L=this.owner)!=null&&L.isKeyPair){if(g){let I=0,C=[];for(let K of r){if(++I,I<=b){C.push("tx skipped");continue}let O=await un(this.connection,K,this.signers.find(N=>N.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:T});C.push(O)}return{txIds:C,signedTxs:r}}return{txIds:await Promise.all(r.map(async I=>await this.connection.sendRawTransaction(I.serialize(),{skipPreflight:T}))),signedTxs:r}}if(this.signAllTransactions){let I=await this.signAllTransactions(r.slice(b,r.length)),C=[...r.slice(0,b),...I];if(g){let K=0,O=[],N=async()=>{if(!C[K])return;K<b&&(O.push({txId:"",status:"success",signedTx:C[K]}),y==null||y([...O]),K++,N());let v=await this.connection.sendRawTransaction(C[K].serialize(),{skipPreflight:T});O.push({txId:v,status:"sent",signedTx:C[K]}),y==null||y([...O]),K++;let ue=!1,z=null,E=null,te=Q=>{z!==null&&clearInterval(z),E!==null&&this.connection.removeSignatureListener(E);let ge=O.findIndex(Le=>Le.txId===v);if(ge>-1){if(O[ge].status==="error"||O[ge].status==="success")return;O[ge].status=Q.err?"error":"success"}y==null||y([...O]),Q.err||N()};this.loopMultiTxStatus&&(z=setInterval(async()=>{var Q;if(ue){clearInterval(z);return}try{let ge=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:0});ge&&(ue=!0,clearInterval(z),te({err:((Q=ge.meta)==null?void 0:Q.err)||null}),console.log("tx status from getTransaction:",v))}catch(ge){ue=!0,clearInterval(z),console.error("getTransaction timeout:",ge,v)}},Ft)),E=this.connection.onSignature(v,Q=>{if(ue){this.connection.removeSignatureListener(E);return}ue=!0,te(Q)},"confirmed"),this.connection.getSignatureStatus(v)};return await N(),{txIds:O.map(v=>v.txId),signedTxs:C}}else{let K=[];for(let O=0;O<C.length;O+=1){let N=await this.connection.sendRawTransaction(C[O].serialize(),{skipPreflight:T});K.push(N)}return{txIds:K,signedTxs:C}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:i||{}}}async sizeCheckBuildV0(e){var L;let x=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:i={},lookupTableAddress:a=[],insCountLimit:u=12}=x,r=Ke(x,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),l=V(V({},this.cluster==="devnet"?await an(this.connection):await rn(this.connection)),i),d=Array.from(new Set([...this.lookupTableAddress,...a])),c=[];for(let I of d)l[I]===void 0&&c.push(new rt(I));let f=await on({connection:this.connection,address:c});for(let[I,C]of Object.entries(f))l[I]=C;let P=t?Nt(t):{instructions:[],instructionTypes:[]},p=await it(this.connection,this.blockhashCommitment),g=this.signers.reduce((I,C)=>W(V({},I),{[C.publicKey.toBase58()]:C}),{}),y=[],b=[],A=[],T=0;if(this.allInstructions.forEach(I=>{let C=[...A,I],K=t?[...P.instructions,...C]:C;if(I!==n[T]&&A.length<u&&(Pt({instructions:K,payer:this.feePayer,lookupTableAddressAccount:l})||Pt({instructions:C,payer:this.feePayer,lookupTableAddressAccount:l})))A.push(I);else{if(A.length===0)throw Error("item ins too big");T+=I===n[T]?1:0;let O={};for(let N of[...new Set(d)])l[N]!==void 0&&(O[N]=l[N]);if(t&&Pt({instructions:[...P.instructions,...A],payer:this.feePayer,lookupTableAddressAccount:l,recentBlockhash:p})){let N=new wt({payerKey:this.feePayer,recentBlockhash:p,instructions:[...P.instructions,...A]}).compileToV0Message(Object.values(l));y.push(new kt(N))}else{let N=new wt({payerKey:this.feePayer,recentBlockhash:p,instructions:[...A]}).compileToV0Message(Object.values(l));y.push(new kt(N))}b.push(Array.from(new Set(A.map(N=>N.keys.filter(v=>v.isSigner).map(v=>v.pubkey.toString())).flat())).map(N=>g[N]).filter(N=>N!==void 0)),A=[I]}}),A.length>0){let C=[...new Set(A.map(K=>K.keys.filter(O=>O.isSigner).map(O=>O.pubkey.toString())).flat()).values()].map(K=>g[K]).filter(K=>K!==void 0);if(t&&Pt({instructions:[...P.instructions,...A],payer:this.feePayer,lookupTableAddressAccount:l,recentBlockhash:p})){let K=new wt({payerKey:this.feePayer,recentBlockhash:p,instructions:[...P.instructions,...A]}).compileToV0Message(Object.values(l));y.push(new kt(K))}else{let K=new wt({payerKey:this.feePayer,recentBlockhash:p,instructions:[...A]}).compileToV0Message(Object.values(l));y.push(new kt(K))}b.push(C)}return(L=this.owner)!=null&&L.signer&&b.forEach(I=>{I.some(C=>C.publicKey.equals(this.owner.publicKey))||I.push(this.owner.signer)}),y.forEach((I,C)=>{I.sign(b[C])}),{builder:this,transactions:y,buildProps:e,signers:b,instructionTypes:this.instructionTypes,execute:async I=>{var ue;let{sequentially:C,onTxUpdate:K,skipTxCount:O=0,recentBlockHash:N,skipPreflight:v=!0}=I||{};if(y.map(async(z,E)=>{b[E].length&&z.sign(b[E]),N&&(z.message.recentBlockhash=N)}),Ge(y),(ue=this.owner)!=null&&ue.isKeyPair){if(C){let z=0,E=[];for(let te of y){if(++z,z<=O){console.log("skip tx: ",z),E.push("tx skipped");continue}let Q=await this.connection.sendTransaction(te,{skipPreflight:v});await Mt(this.connection,Q),E.push(Q)}return{txIds:E,signedTxs:y}}return{txIds:await Promise.all(y.map(async z=>await this.connection.sendTransaction(z,{skipPreflight:v}))),signedTxs:y}}if(this.signAllTransactions){let z=await this.signAllTransactions(y.slice(O,y.length)),E=[...y.slice(0,O),...z];if(C){let te=0,Q=[],ge=async()=>{if(!E[te])return;if(te<O){Q.push({txId:"",status:"success",signedTx:E[te]}),K==null||K([...Q]),te++,ge();return}let Le=await this.connection.sendTransaction(E[te],{skipPreflight:v});Q.push({txId:Le,status:"sent",signedTx:E[te]}),K==null||K([...Q]),te++;let dt=!1,Je=null,Kt=null,Kn=qe=>{Je!==null&&clearInterval(Je),Kt!==null&&this.connection.removeSignatureListener(Kt);let Oe=Q.findIndex($o=>$o.txId===Le);if(Oe>-1){if(Q[Oe].status==="error"||Q[Oe].status==="success")return;Q[Oe].status=qe.err?"error":"success"}K==null||K([...Q]),qe.err||ge()};this.loopMultiTxStatus&&(Je=setInterval(async()=>{var qe;if(dt){clearInterval(Je);return}try{let Oe=await this.connection.getTransaction(Le,{commitment:"confirmed",maxSupportedTransactionVersion:0});Oe&&(dt=!0,clearInterval(Je),Kn({err:((qe=Oe.meta)==null?void 0:qe.err)||null}),console.log("tx status from getTransaction:",Le))}catch(Oe){dt=!0,clearInterval(Je),console.error("getTransaction timeout:",Oe,Le)}},Ft)),Kt=this.connection.onSignature(Le,qe=>{if(dt){this.connection.removeSignatureListener(Kt);return}dt=!0,Kn(qe)},"confirmed"),this.connection.getSignatureStatus(Le)};return ge(),{txIds:[],signedTxs:E}}else{let te=[];for(let Q=0;Q<E.length;Q+=1){let ge=await this.connection.sendTransaction(E[Q],{skipPreflight:v});te.push(ge)}return{txIds:te,signedTxs:E}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}};var cn=(...s)=>s.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Ae=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=q(t)}createTxBuilder(e){return this.scope.checkOwner(),new vt({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(cn(e))}logInfo(...e){this.logger.info(cn(e))}logAndCreateError(...e){let t=cn(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Ql,SystemProgram as Hl}from"@solana/web3.js";import Jl from"bn.js";import{createCloseAccountInstruction as om,createInitializeAccountInstruction as im,createTransferInstruction as rm,TOKEN_PROGRAM_ID as am}from"@solana/spl-token";import{Keypair as Fl,PublicKey as vl}from"@solana/web3.js";import El from"bn.js";import{TOKEN_PROGRAM_ID as ql}from"@solana/spl-token";import{PublicKey as Di}from"@solana/web3.js";import Zn,{isBN as Hn}from"bn.js";import{bits as Ci,BitStructure as Dc,blob as Ri,Blob as Wc,cstr as qc,f32 as Uc,f32be as Gc,f64 as zc,f64be as Xc,greedy as Yc,Layout as Li,ns64 as Qc,ns64be as Zc,nu64 as Hc,nu64be as jc,offset as Oi,s16 as $c,s16be as Jc,s24 as el,s24be as tl,s32 as Ni,s32be as nl,s40 as ol,s40be as il,s48 as rl,s48be as al,s8 as sl,seq as Mi,struct as ul,Structure as Fi,u16 as vi,u16be as cl,u24 as ll,u24be as ml,u32 as Vi,u32be as dl,u40 as pl,u40be as fl,u48 as yl,u48be as bl,u8 as _i,UInt as Ei,union as gl,Union as Pl,unionLayoutDiscriminator as Al,utf8 as wl}from"@solana/buffer-layout";var Vt=Li,zn=Fi;var ln=Ei;var Xn=_i,re=vi;var _t=Vi;var ae=Ni;var Yn=Mi;var _=Ri;var mn=Ci,Qn=Oi;var Xe=class extends Vt{constructor(t,n,i){super(t,i);this.blob=_(t),this.signed=n}decode(t,n=0){let i=new Zn(this.blob.decode(t,n),10,"le");return this.signed?i.fromTwos(this.span*8).clone():i}encode(t,n,i=0){return typeof t=="number"&&(t=new Zn(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,i)}},Et=class extends Vt{constructor(t){super(8,t);this._lower=mn(_t(),!1),this._upper=mn(_t(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let i=this._lower.decode(t,n),a=this._upper.decode(t,n+this._lower.span);return V(V({},i),a)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function B(s){return new ln(1,s)}function J(s){return new ln(4,s)}function o(s){return new Xe(8,!1,s)}function M(s){return new Xe(16,!1,s)}function jn(s){return new Xe(1,!0,s)}function at(s){return new Xe(8,!0,s)}function $n(s){return new Xe(16,!0,s)}var Tt=class extends Vt{constructor(t,n,i,a){super(t.span,a);this.layout=t,this.decoder=n,this.encoder=i}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,i){return this.layout.encode(this.encoder(t),n,i)}getSpan(t,n){return this.layout.getSpan(t,n)}};function m(s){return new Tt(_(32),e=>new Di(e),e=>e.toBuffer(),s)}function ne(s){return new Tt(Xn(),Wi,qi,s)}function Wi(s){if(s===0)return!1;if(s===1)return!0;throw new Error("Invalid bool: "+s)}function qi(s){return s?1:0}function Jn(s,e){let t=_t("length"),n=h([t,R(s,Qn(t,-t.span),"values")]);return new Tt(n,({values:i})=>i,i=>({values:i}),e)}var dn=class extends zn{decode(e,t){return super.decode(e,t)}};function h(s,e,t){return new dn(s,e,t)}function R(s,e,t){let n,i=typeof e=="number"?e:Hn(e)?e.toNumber():new Proxy(e,{get(a,u){if(!n){let r=Reflect.get(a,"count");n=Hn(r)?r.toNumber():r,Reflect.set(a,"count",n)}return Reflect.get(a,u)},set(a,u,r){return u==="count"&&(n=r),Reflect.set(a,u,r)}});return Yn(s,i,t)}var Dt=h([m("mint"),m("owner"),o("amount"),J("delegateOption"),m("delegate"),B("state"),J("isNativeOption"),o("isNative"),o("delegatedAmount"),J("closeAuthorityOption"),m("closeAuthority")]);import{PublicKey as kg,SystemProgram as Tg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as Ig}from"@solana/spl-token";import{PublicKey as Gi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as zi}from"@solana/spl-token";function G(s,e,t){return H([s.toBuffer(),(t!=null?t:zi).toBuffer(),e.toBuffer()],new Gi("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as F}from"@solana/web3.js";var to=new F("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),no=new F("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),oo=new F("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),pn=new F("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Vm=new F("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Xi=new F("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),io=new F("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),ro=new F("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),_m=new F("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Yi=new F("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ao=new F("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Qi=new F("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Zi=new F("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),so=new F("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Em=new F("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Hi=new F("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),fn=new F("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),ji=new F("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Dm=new F("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),$i=new F("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Ji=new F("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),er=new F("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Wm=new F("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),qm=new F("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Um=new F("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Gm=new F("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),zm=new F("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var De={OPEN_BOOK_PROGRAM:new F("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new F("Ray1111111111111111111111111111111111111111"),AMM_V4:new F("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new F("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new F("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new F("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new F("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new F("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new F("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new F("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new F("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new F("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:F.default,Router:new F("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new F("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new F("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new F("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new F("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new F("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new F("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new F("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new F("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new F("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new F("Ray1111111111111111111111111111111111111111")};import Mg from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as $f,TOKEN_2022_PROGRAM_ID as Jf,TOKEN_PROGRAM_ID as ey}from"@solana/spl-token";import{PublicKey as ny}from"@solana/web3.js";import iy from"bn.js";import ay from"decimal.js";import{TOKEN_PROGRAM_ID as rd}from"@solana/spl-token";import{PublicKey as cd}from"@solana/web3.js";var tr=h([J("mintAuthorityOption"),m("mintAuthority"),o("supply"),B("decimals"),B("isInitialized"),J("freezeAuthorityOption"),m("freezeAuthority")]);import U from"bn.js";var se=new U(1).shln(64);var nr=new U(1).shln(128),Ye=new U(1).shln(64).subn(1),or=new U(1).shln(128).subn(1),Fe=-443636,ve=443636,Qe=new U("4295048016"),Ze=new U("79226673521066979257578248091"),uo=new U("59543866431248"),co=new U("184467440737095516"),lo=new U("15793534762490258745"),mo=16,qt=512,we=60,kd=new U("18446743708227953217"),po=[{bit:0,factor:new U("fffcb933bd6fb800",16)},{bit:1,factor:new U("fff97272373d4000",16)},{bit:2,factor:new U("fff2e50f5f657000",16)},{bit:3,factor:new U("ffe5caca7e10f000",16)},{bit:4,factor:new U("ffcb9843d60f7000",16)},{bit:5,factor:new U("ff973b41fa98e800",16)},{bit:6,factor:new U("ff2ea16466c9b000",16)},{bit:7,factor:new U("fe5dee046a9a3800",16)},{bit:8,factor:new U("fcbe86c7900bb000",16)},{bit:9,factor:new U("f987a7253ac65800",16)},{bit:10,factor:new U("f3392b0822bb6000",16)},{bit:11,factor:new U("e7159475a2caf000",16)},{bit:12,factor:new U("d097f3bdfd2f2000",16)},{bit:13,factor:new U("a9f746462d9f8000",16)},{bit:14,factor:new U("70d869a156f31c00",16)},{bit:15,factor:new U("31be135f97ed3200",16)},{bit:16,factor:new U("9aa508b5b85a500",16)},{bit:17,factor:new U("5d6af8dedc582c",16)},{bit:18,factor:new U("2216e584f5fa",16)}];var ht=3,fo=100;var yo=10,bo=100,ut=14;var X=new U(0),He=new U(1),Td=new U(-1);var hd=new U("18446744073700000000");var ir=h([_(8),B("bump"),re("index"),m("owner"),J("protocolFeeRate"),J("tradeFeeRate"),re("tickSpacing"),J("fundFeeRate"),R(J(),1),m("fundOwner"),R(o(),3)]),rr=h([J("blockTimestamp"),at("tickCumulative"),R(o(),4)]),go=h([_(8),ne("initialized"),o("recentEpoch"),re("observationIndex"),m("poolId"),R(rr,fo,"observations"),R(o(),4)]),ar=h([re("filterPeriod"),re("decayPeriod"),re("reductionFactor"),J("dynamicFeeControl"),J("maxVolatilityAccumulator"),ae("tickSpacingIndexReference"),J("volatilityReference"),J("volatilityAccumulator"),o("lastUpdateTimestamp"),R(B(),46)]),sr=h([B("state"),o("openTime"),o("endTime"),o("lastUpdateTime"),M("emissionsPerSecondX64"),o("totalEmissioned"),o("claimed"),m("mint"),m("vault"),m("creator"),M("growthGlobalX64")]),yn=h([_(8),B("bump"),m("configId"),m("creator"),m("mintA"),m("mintB"),m("vaultA"),m("vaultB"),m("observationId"),B("mintDecimalsA"),B("mintDecimalsB"),re("tickSpacing"),M("liquidity"),M("sqrtPriceX64"),ae("tickCurrent"),J(),M("feeGrowthGlobalX64A"),M("feeGrowthGlobalX64B"),o("protocolFeesTokenA"),o("protocolFeesTokenB"),R(M(),4),B("status"),B("feeOn"),_(6),R(sr,ht,"rewardInfos"),_(8*16,"tickArrayBitmap"),R(o(),4),o("fundFeesTokenA"),o("fundFeesTokenB"),o("startTime"),o("recentEpoch"),ar.replicate("dynamicFeeInfo"),R(o(),46)]),ur=h([M("growthInsideLastX64"),o("rewardAmountOwed")]),cr=h([_(8),B("bump"),m("nftMint"),m("poolId"),ae("tickLower"),ae("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),R(ur,ht,"rewardInfos"),o("recentEpoch"),R(o(),7)]),Kd=h([_(8),B("bump"),m("poolId"),ae("tickLower"),ae("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),R(M(),ht,"rewardGrowthInside"),o("recentEpoch"),R(o(),7)]),lr=h([ae("tick"),$n("liquidityNet"),M("liquidityGross"),M("feeGrowthOutsideX64A"),M("feeGrowthOutsideX64B"),R(M(),ht,"rewardGrowthsOutsideX64"),o("orderPhase"),o("ordersAmount"),o("partFilledOrdersRemaining"),M("unfilledRatioX64"),R(J(),3)]),Po=h([_(8),m("poolId"),ae("startTickIndex"),R(lr,we,"ticks"),B("initializedTickCount"),o("recentEpoch"),R(B(),107)]),mr=h([_(8),B("bump"),R(m(),yo,"operationOwners"),R(m(),bo,"whitelistMints")]),dr=h([_(8),m("poolId"),m("owner"),ae("tick"),ne("zeroForOne"),o("orderPhase"),o("totalAmount"),o("filledAmount"),o("settleBase"),o("settleOutput"),o("openTime"),M("unfilledRatioX64"),R(o(),4)]),Ao=h([_(8),m("poolId"),_(8*8*ut,"positiveTickArrayBitmap"),_(8*8*ut,"negativeTickArrayBitmap")]),xd=h([_(8),re("index"),re("filterPeriod"),re("decayPeriod"),re("reductionFactor"),J("dynamicFeeControl"),J("maxVolatilityAccumulator"),R(o(),8)]),pr=h([_(8),m("wallet"),B("nonceIndex"),o("orderNonce"),R(o(),4)]),Cd=h([o(),B("bump"),m("owner"),m("poolId"),m("positionId"),m("nftAccount"),R(o(),8)]),fr=h([_(8),B("bump"),m("lockOwner"),m("poolId"),m("positionId"),m("nftAccount"),m("lockNftMint"),o("recentEpoch"),R(o(),8)]);import yr from"bn.js";import wo from"decimal.js";function ke(s,e,t){if(t.isZero())throw new Error("Division by zero");return s.mul(e).div(t)}function Te(s,e,t){if(t.isZero())throw new Error("Division by zero");let n=s.mul(e),i=n.div(t);return n.mod(t).isZero()?i:i.addn(1)}var Md=new yr(1).shln(256).subn(1);function ko(s){return s.isZero()?-1:s.bitLength()-1}function To(s,e){return new wo(s.toString()).div(wo.pow(2,64)).toDecimalPlaces(e)}import sp from"bn.js";import le from"bn.js";import lt from"decimal.js";import Vd from"bn.js";function bn(s){let e=Buffer.alloc(2);return e.writeUInt16LE(s),e}function gn(s){let e=Buffer.alloc(4);return e.writeInt32LE(s),e}function ho(s){let e=Buffer.alloc(4);return e.writeInt32BE(s),e}var Xd=Buffer.from("amm_config","utf8"),Pn=Buffer.from("pool","utf8"),Io=Buffer.from("pool_vault","utf8"),br=Buffer.from("pool_reward_vault","utf8"),Bo=Buffer.from("position","utf8"),gr=Buffer.from("tick_array","utf8"),Pr=Buffer.from("operation","utf8"),Ar=Buffer.from("pool_tick_array_bitmap_extension","utf8"),wr=Buffer.from("observation","utf8"),Yd=Buffer.from("support_mint","utf8"),Qd=Buffer.from("dynamic_fee_config","utf8"),kr=Buffer.from("permission","utf8");function So(s,e,t,n){return H([Pn,e.toBuffer(),t.toBuffer(),n.toBuffer()],s)}function Ko(s,e){return H([kr,e.toBuffer()],s)}function xo(s,e,t,n,i){return H([Pn,e.toBuffer(),t.toBuffer(),n.toBuffer(),bn(i)],s)}function ct(s,e,t){return H([Io,e.toBuffer(),t.toBuffer()],s)}function Co(s,e,t){return H([br,e.toBuffer(),t.toBuffer()],s)}function ce(s,e,t){return H([gr,e.toBuffer(),ho(t)],s)}function Ve(s,e,t,n){return H([Bo,e.toBuffer(),gn(t),gn(n)],s)}function Be(s,e){return H([Bo,e.toBuffer()],s)}function je(s){return H([Buffer.from("metadata","utf8"),Ee.toBuffer(),s.toBuffer()],Ee)}function Ut(s){return H([Pr],s)}function de(s,e){return H([Ar,e.toBuffer()],s)}function An(s,e){return H([wr,e.toBuffer()],s)}var Ro=Buffer.from("locked_position","utf8");function wn(s,e){return H([Ro,e.toBuffer()],s)}function kn(s,e){return H([Ro,e.toBuffer()],s)}var It=class{static scanLinearBitmap({bitmap:e,tickSpacing:t,offset:n,checkInfo:i}){let a=[],u=e.length*8,r=0,l=u-1;if(i){let f=i.tick/(t*we)-n;i.valueType==="gte"?r=Math.max(0,Math.ceil(f)):l=Math.min(u-1,Math.floor(f))}if(r>l)return a;let d=Math.floor(r/8),c=Math.floor(l/8);for(let f=d;f<=c;f++){if(!e[f])continue;let P=f===d?r%8:0,p=f===c?l%8:7;for(let g=P;g<=p;g++)e[f]&1<<g&&a.push((f*8+g+n)*t*we)}return a}static findPoolBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let i=Math.floor(n.tick/we/t);if(n.valueType==="lte"&&i<-512)return[];if(n.valueType==="gte"&&i>512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:-qt,checkInfo:n})}static findPositiveTickArrayBitmap({bitmap:e,tickSpacing:t,checkInfo:n}){if(n){let i=Math.floor(n.tick/we/t);if(n.valueType==="lte"&&i<512)return[]}return this.scanLinearBitmap({bitmap:e,tickSpacing:t,offset:qt,checkInfo:n})}static findNegativeTickArrayBitmap({bitmap:e,tickSpacing:t,count:n,checkInfo:i}){let a=[];if(i){let l=Math.floor(i.tick/we/t);if(i.valueType==="gte"&&l>=-512)return a}let u=(i==null?void 0:i.valueType)==="lte"?Math.floor(i.tick/(we*t))+7680:1/0,r=(i==null?void 0:i.valueType)==="gte"?Math.ceil(i.tick/(we*t))+7680:0;e:for(let l=0;l<ut;l++){let d=ut-1-l;for(let c=0;c<512;c++){let f=l*512+c;if(f>u)break e;if(f<r)continue;let P=d*64+Math.floor(c/8);if(!e[P]){c=Math.floor(c/8)*8+7;continue}if(e[P]&1<<c%8){let p=(l*512+c-7680)*we*t;if(a.push(p),n!==void 0&&a.length>=n)break e}}}return a}static findTickArrayStartIndex({tickSpacing:e,poolBitmap:t,tickArrayBitmap:n,findInfo:i}){if(i.type==="all")return[...this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap}),...this.findPoolBitmap({tickSpacing:e,bitmap:t}),...this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap})];let a=j.getTickArrayStartIndex(i.tickArrayCurrent,e),{count:u}=i;if(i.type==="oneForZero"){let r={tick:a,valueType:"gte"},l=[()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap,checkInfo:r}),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:r}),()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap,checkInfo:r})];return this.collectUntil(l,u)}if(i.type==="zeroForOne"){let r={tick:a,valueType:"lte"},l=[()=>this.findPositiveTickArrayBitmap({tickSpacing:e,bitmap:n.positiveTickArrayBitmap,checkInfo:r}).sort((d,c)=>c-d),()=>this.findPoolBitmap({tickSpacing:e,bitmap:t,checkInfo:r}).sort((d,c)=>c-d),()=>this.findNegativeTickArrayBitmap({tickSpacing:e,bitmap:n.negativeTickArrayBitmap,checkInfo:r}).sort((d,c)=>c-d)];return this.collectUntil(l,u)}throw new Error("find info type check error")}static collectUntil(e,t){let n=[];for(let i of e){if(t!==void 0&&n.length>=t)break;n.push(...i())}return n.slice(0,t)}static findTickArrayAddress(e){return this.findTickArrayStartIndex(e).map(t=>ce(e.programId,e.poolId,t).publicKey)}static maxTickInTickarrayBitmap(e){return e*we*qt}},j=class{static firstinitializedTick({data:e,zeroForOne:t}){if(t){for(let n=e.ticks.length-1;n>=0;n--)if(ee.isInitialized({data:e.ticks[n]}))return e.ticks[n]}else for(let n=0;n<e.ticks.length;n++)if(ee.isInitialized({data:e.ticks[n]}))return e.ticks[n]}static nextInitalizedTick({data:e,currentTickIndex:t,tickSpacing:n,zeroForOne:i}){if(this.getTickArrayStartIndex(t,n)!==e.startTickIndex)return;let u=Math.floor((t-e.startTickIndex)/n);if(i){for(let r=u;r>=0;r--)if(ee.isInitialized({data:e.ticks[r]}))return e.ticks[r]}else for(let r=u+1;r<we;r++)if(ee.isInitialized({data:e.ticks[r]}))return e.ticks[r]}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(Fe/e)*e}static getMaxTick(e){return Math.floor(ve/e)*e}},ee=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>=Fe&&e<=ve}static checkTick(e){if(!this.isValidTick(e))throw new Error(`Tick ${e} is out of range [${Fe}, ${ve}]`)}static getSqrtPriceAtTick(e){this.checkTick(e);let t=Math.abs(e),n=se.clone();for(let{bit:i,factor:a}of po)(t&1<<i)!==0&&(n=ke(n,a,se));return e>0&&(n=ke(se,se,n)),n}static getLimitOrderOutput({amountIn:e,tick:t,zeroForOne:n}){if(n){let i=ee.getPriceAtTick(t,!1);return ke(e,i,se)}else{let i=ee.getPriceAtTick(t,!0);return ke(e,se,i)}}static getLimitOrderInput({amountOut:e,tick:t,zeroForOne:n}){if(n){let i=ee.getPriceAtTick(t,!0);return Te(e,i,se)}else{let i=ee.getPriceAtTick(t,!1);return Te(e,se,i)}}static limitOrderUnfilledAmount({tick:e}){return e.ordersAmount.add(e.partFilledOrdersRemaining)}static matchLimitOrder({tick:e,swapAmount:t,swapDirectionZeroForOne:n,isBaseInput:i,feeRate:a,isFeeOnInput:u}){let r={amountIn:X,amountOut:X,ammFeeAmount:X},l=this.limitOrderUnfilledAmount({tick:e});if(t.isZero()||l.isZero())return r;if(i)u?(r.ammFeeAmount=Te(t,new le(a),Ce),r.amountIn=t.sub(r.ammFeeAmount)):r.amountIn=t,r.amountOut=this.getLimitOrderOutput({amountIn:r.amountIn,tick:e.tick,zeroForOne:n}),r.amountOut.gt(l)&&(r.amountOut=l,r.amountIn=this.getLimitOrderInput({amountOut:l,tick:e.tick,zeroForOne:!n}),u&&(r.ammFeeAmount=Te(r.amountIn,new le(a),Ce.sub(new le(a)))));else{let f=le.min(t,l);u?r.amountOut=f:r.amountOut=le.min(Te(f,Ce,Ce.sub(new le(a))),l),r.amountIn=this.getLimitOrderInput({amountOut:r.amountOut,tick:e.tick,zeroForOne:!n}),u&&(r.ammFeeAmount=Te(r.amountIn,new le(a),Ce.sub(new le(a))))}let d=X;e.partFilledOrdersRemaining.gt(X)&&(d=le.min(e.partFilledOrdersRemaining,r.amountOut),d.gt(X)&&(e.unfilledRatioX64=ke(e.unfilledRatioX64,e.partFilledOrdersRemaining.sub(d),e.partFilledOrdersRemaining)),e.partFilledOrdersRemaining=e.partFilledOrdersRemaining.sub(d));let c=r.amountOut.sub(d);if(c.gt(X)){if(!e.partFilledOrdersRemaining.isZero())throw Error("!tick.partFilledOrdersRemaining.isZero()");if(e.ordersAmount.lt(c))throw Error("InvalidLimitOrderAmount");e.orderPhase=e.orderPhase.add(He),e.unfilledRatioX64=ke(se,e.ordersAmount.sub(c),e.ordersAmount),e.partFilledOrdersRemaining=e.ordersAmount.sub(c),e.ordersAmount=X}return u||(r.ammFeeAmount=Te(r.amountOut,new le(a),Ce),r.amountOut=r.amountOut.sub(r.ammFeeAmount)),r}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(Qe)&&e.lte(Ze)))throw Error("SqrtPriceX64");let t=ko(e),n=t-64,i;n>=0?i=new le(n).shln(32):i=new le(-n).shln(32).neg();let a;t>=64?a=e.shrn(t-63):a=e.shln(63-t);let u=new le(0),r=new le(1).shln(63);for(let b=0;b<mo&&!r.isZero();b++){a=a.mul(a);let A=a.shrn(127).toNumber();a=a.shrn(63+A),A&&(u=u.add(r)),r=r.shrn(1)}let l=u.shrn(32),c=i.add(l).mul(uo),f=c.sub(co),P=c.add(lo),p=this.signedShrn64(f),g=this.signedShrn64(P);return p===g?p:ee.getSqrtPriceAtTick(g).lte(e)?g:p}static signedShrn64(e){if(e.isNeg()){let t=new le(1).shln(64),n=e.div(t);return!e.mod(t).isZero()&&e.isNeg()?n.subn(1).toNumber():n.toNumber()}else return e.shrn(64).toNumber()}static sqrtPriceX64ToPrice(e,t,n){let i=e.mul(e),a=t-n,u=20,r=new le(10).pow(new le(u)),l=i.mul(r),d=new le(1).shln(128),f=l.div(d).toString();for(;f.length<=u;)f="0"+f;let P=f.slice(0,-u),p=f.slice(-u),g=P+"."+p;return new lt(g).mul(new lt(10).pow(a))}static tickToPrice(e,t,n){let i=ee.getSqrtPriceAtTick(e);return this.sqrtPriceX64ToPrice(i,t,n)}static priceToTick(e,t,n){let a=e.div(Math.pow(10,t-n)).log().div(new lt(1.0001).log()).floor();return Math.max(Fe,Math.min(ve,a.toNumber()))}static priceToSqrtPriceX64(e,t,n){let u=e.div(Math.pow(10,t-n)).sqrt().mul(new lt(2).pow(64));return new le(u.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:i,tickSpacing:a}){let u=e.clamp(1/10**Math.max(t,n),Number.MAX_SAFE_INTEGER);i||(u=new lt(1).div(u));let r=ee.toTickIndex(ee.priceToTick(u,t,n),a),l=ee.tickToPrice(r,t,n);return{price:i?l:new lt(1).div(l),tick:r}}};import dp from"bn.js";import fp from"decimal.js";import{PublicKey as Oo}from"@solana/web3.js";import Sr from"bn.js";import{TOKEN_2022_PROGRAM_ID as uf,TOKEN_PROGRAM_ID as cf}from"@solana/spl-token";import pf from"decimal.js";import Up from"bn.js";import Rp from"bn.js";var he=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:i}=this.tickArrayStartIndexRange({tickSpacing:e});for(let a of t){let u=j.getTickArrayStartIndex(a,e);if(u>=n||u<i)return!0}return!1}static tickArrayStartIndexRange({tickSpacing:e}){let t=It.maxTickInTickarrayBitmap(e),n=-t;return t>ve&&(t=j.getTickArrayStartIndex(ve,e)+j.tickCount(e)),n<Fe&&(n=j.getTickArrayStartIndex(Fe,e)),{maxTickBoundary:t,minTickBoundary:n}}static async updatePoolRewardInfos({connection:e,apiPoolInfo:t,chainTime:n,poolLiquidity:i,rewardInfos:a}){var r,l,d;let u=[];for(let c=0;c<a.length;c++){let f=a[c],P=(d=(r=t.rewardDefaultInfos[c])==null?void 0:r.mint.programId)!=null?d:(l=await e.getAccountInfo(f.mint))==null?void 0:l.owner;if(P===void 0)throw Error("get new reward mint info error");let p=W(V({},f),{perSecond:To(f.emissionsPerSecondX64),remainingRewards:void 0,tokenProgramId:new Oo(P)});if(p.mint.equals(Oo.default)||p.totalEmissioned.eq(Ye))continue;if(n<=p.openTime.toNumber()||i.eq(X)){u.push(p);continue}let g=new Sr(Math.min(p.endTime.toNumber(),n)),y=g.sub(p.lastUpdateTime);if(y.isZero()){u.push(p);continue}let b=Te(y,p.emissionsPerSecondX64,se),A=ke(y,p.emissionsPerSecondX64,i),T,x=p.totalEmissioned.add(b);if(x.lte(Ye))T=x;else{let I=Ye.sub(p.totalEmissioned);T=Ye,A=ke(I,se,i)}let L=p.growthGlobalX64.add(A);u.push(W(V({},p),{growthGlobalX64:L,totalEmissioned:T,lastUpdateTime:g}))}return u}};import If from"bn.js";import{PublicKey as Tn}from"@solana/web3.js";var Or=h([B("instruction")]),Nr=h([B("instruction")]),Mr=h([o("rewardState"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardLastUpdateTime"),o("totalReward"),o("totalRewardEmissioned"),o("rewardClaimed"),o("rewardPerSecond"),M("accRewardPerShare"),m("rewardVault"),m("rewardMint"),m("rewardSender"),o("rewardType"),R(o(),15,"padding")]),Fr=h([o("state"),o("nonce"),m("lpVault"),m("rewardVault"),m(),m(),o(),o(),o("totalReward"),M("perShareReward"),o("lastSlot"),o("perSlotReward")]),vr=h([o("state"),o("nonce"),m("lpVault"),m("rewardVaultA"),o("totalRewardA"),M("perShareRewardA"),o("perSlotRewardA"),B("option"),m("rewardVaultB"),_(7),o("totalRewardB"),M("perShareRewardB"),o("perSlotRewardB"),o("lastSlot"),m()]),Vr=h([o(),o("state"),o("nonce"),o("validRewardTokenNum"),M("rewardMultiplier"),o("rewardPeriodMax"),o("rewardPeriodMin"),o("rewardPeriodExtend"),m("lpMint"),m("lpVault"),R(Mr,5,"rewardInfos"),m("creator"),m(),R(o(),32,"padding")]),_r=new Proxy(Fr,{get(s,e,t){return e==="decode"?(...n)=>{let i=s.decode(...n);return W(V({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(s,e,t)}}),Er=new Proxy(vr,{get(s,e,t){return e==="decode"?(...n)=>{let i=s.decode(...n);return W(V({},i),{version:5,rewardInfos:[{rewardVault:i.rewardVaultA,totalReward:i.totalRewardA,perSlotReward:i.perSlotRewardA,perShareReward:i.perShareRewardA},{rewardVault:i.rewardVaultB,totalReward:i.totalRewardB,perSlotReward:i.perSlotRewardB,perShareReward:i.perShareRewardB}]})}:Reflect.get(s,e,t)}}),Fo=new Proxy(Vr,{get(s,e,t){return e==="decode"?(...n)=>{let i=s.decode(...n);return W(V({},i),{version:6,rewardInfos:i.rewardInfos.map(a=>{var u;return W(V({},a),{rewardType:((u=Object.entries(St).find(r=>String(r[1])===a.rewardType.toString()))!=null?u:["Standard SPL"])[0]})})})}:Reflect.get(s,e,t)}}),Dr=h([o("isSet"),o("rewardPerSecond"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardType")]),Wr=h([B("instruction"),o("nonce"),R(Dr,5,"rewardTimeInfo")]),qr=h([B("instruction"),o("rewardReopenTime"),o("rewardEndTime"),o("rewardPerSecond")]),Ur=h([B("instruction"),o("isSet"),o("rewardPerSecond"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardType")]),Ey=h([o("state"),m("id"),m("owner"),o("deposited"),R(o(),1,"rewardDebts")]),vo=h([o("state"),m("id"),m("owner"),o("deposited"),R(M(),1,"rewardDebts"),o(""),o("voteLockedBalance"),R(o(),15)]),Dy=h([o("state"),m("id"),m("owner"),o("deposited"),R(o(),2,"rewardDebts")]),Gr=h([o("state"),m("id"),m("owner"),o("deposited"),R(M(),2,"rewardDebts"),R(o(),17)]),zr=h([o(),o("state"),m("id"),m("owner"),o("deposited"),R(M(),5,"rewardDebts"),R(o(),16)]),Xr=h([B("instruction"),o("amount")]),Yr=h([m("mint"),m("grantAuthority"),o("baselineVoteWeightScaledFactor"),o("maxExtraLockupVoteWeightScaledFactor"),o("lockupSaturationSecs"),jn("digitShift"),R(B(),7,"reserved1"),R(o(),7,"reserved2")]),Qr=h([_(8),m("governanceProgramId"),m("realm"),m("realmGoverningTokenMint"),m("realmAuthority"),R(B(),32,"reserved1"),R(Yr,4,"votingMints"),at("timeOffset"),B("bump"),R(B(),7,"reserved2"),R(o(),11,"reserved3")]),Zr=h([at("startTime"),at("endTime"),B("kind"),R(B(),15,"reserved")]),Hr=h([R(Zr,1,"lockup"),o("amountDeposited_native"),o("amountInitiallyLockedNative"),ne("isUsed"),ne("allowClawback"),B("votingMintConfigIdx"),R(B(),29,"reserved")]),jr=h([_(8),m("voterAuthority"),m("registrar"),R(Hr,32,"deposits"),B("voterBump"),B("voterWweightRecordBump"),R(B(),94,"reserved")]);import{NATIVE_MINT as Zy}from"@solana/spl-token";var Hy=q("Raydium_farm_config"),$r=new Tn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Jr=new Tn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var jy=new Tn("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var St={"Standard SPL":0,"Option tokens":1},Vo={[to.toString()]:3,[no.toString()]:4,[oo.toString()]:5,[pn.toString()]:6,[De.FARM_PROGRAM_ID_V3.toString()]:3,[De.FARM_PROGRAM_ID_V4.toString()]:4,[De.FARM_PROGRAM_ID_V5.toString()]:5,[De.FARM_PROGRAM_ID_V6.toString()]:6};import{PublicKey as vb,SystemProgram as Vb,SYSVAR_CLOCK_PUBKEY as _b,SYSVAR_RENT_PUBKEY as Eb,TransactionInstruction as Db}from"@solana/web3.js";import qb from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Gb,createAssociatedTokenAccountIdempotentInstruction as zb,TOKEN_PROGRAM_ID as Xb}from"@solana/spl-token";import db from"bn.js";import{PublicKey as ob}from"@solana/web3.js";import rb from"bn.js";var Bb=q("Raydium.farm.util");var og=q("Raydium_farm_instruction"),ig={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 zg from"bn.js";import{PublicKey as JA}from"@solana/web3.js";import{AccountLayout as nw,MintLayout as ow,NATIVE_MINT as iw,TOKEN_PROGRAM_ID as aw}from"@solana/spl-token";import Qg from"bn.js";import Eo from"bn.js";var sa=new Eo(25),ua=new Eo(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as bP,TOKEN_PROGRAM_ID as gP}from"@solana/spl-token";import{PublicKey as AP,SystemProgram as wP,SYSVAR_RENT_PUBKEY as kP,TransactionInstruction as TP}from"@solana/web3.js";import RP from"bn.js";var ca=h([B("instruction"),o("amountIn"),o("minAmountOut")]),la=h([B("instruction"),o("maxAmountIn"),o("amountOut")]),dP=h([B("instruction"),B("nonce")]),ma=h([B("instruction"),B("nonce"),o("startTime")]),Do=h([o("status"),o("nonce"),o("maxOrder"),o("depth"),o("baseDecimal"),o("quoteDecimal"),o("state"),o("resetFlag"),o("minSize"),o("volMaxCutRatio"),o("amountWaveRatio"),o("baseLotSize"),o("quoteLotSize"),o("minPriceMultiplier"),o("maxPriceMultiplier"),o("systemDecimalValue"),o("minSeparateNumerator"),o("minSeparateDenominator"),o("tradeFeeNumerator"),o("tradeFeeDenominator"),o("pnlNumerator"),o("pnlDenominator"),o("swapFeeNumerator"),o("swapFeeDenominator"),o("baseNeedTakePnl"),o("quoteNeedTakePnl"),o("quoteTotalPnl"),o("baseTotalPnl"),o("poolOpenTime"),o("punishPcAmount"),o("punishCoinAmount"),o("orderbookToInitTime"),M("swapBaseInAmount"),M("swapQuoteOutAmount"),o("swapBase2QuoteFee"),M("swapQuoteInAmount"),M("swapBaseOutAmount"),o("swapQuote2BaseFee"),m("baseVault"),m("quoteVault"),m("baseMint"),m("quoteMint"),m("lpMint"),m("openOrders"),m("marketId"),m("marketProgramId"),m("targetOrders"),m("withdrawQueue"),m("lpVault"),m("owner"),o("lpReserve"),R(o(),3,"padding")]),pP=h([o("accountType"),o("status"),o("nonce"),o("maxOrder"),o("depth"),o("baseDecimal"),o("quoteDecimal"),o("state"),o("resetFlag"),o("minSize"),o("volMaxCutRatio"),o("amountWaveRatio"),o("baseLotSize"),o("quoteLotSize"),o("minPriceMultiplier"),o("maxPriceMultiplier"),o("systemDecimalsValue"),o("abortTradeFactor"),o("priceTickMultiplier"),o("priceTick"),o("minSeparateNumerator"),o("minSeparateDenominator"),o("tradeFeeNumerator"),o("tradeFeeDenominator"),o("pnlNumerator"),o("pnlDenominator"),o("swapFeeNumerator"),o("swapFeeDenominator"),o("baseNeedTakePnl"),o("quoteNeedTakePnl"),o("quoteTotalPnl"),o("baseTotalPnl"),o("poolOpenTime"),o("punishPcAmount"),o("punishCoinAmount"),o("orderbookToInitTime"),M("swapBaseInAmount"),M("swapQuoteOutAmount"),M("swapQuoteInAmount"),M("swapBaseOutAmount"),o("swapQuote2BaseFee"),o("swapBase2QuoteFee"),m("baseVault"),m("quoteVault"),m("baseMint"),m("quoteMint"),m("lpMint"),m("modelDataAccount"),m("openOrders"),m("marketId"),m("marketProgramId"),m("targetOrders"),m("owner"),R(o(),64,"padding")]),da=h([B("instruction"),o("baseAmountIn"),o("quoteAmountIn"),o("fixedSide"),o("otherAmountMin")]),pa=h([B("instruction"),o("lpAmount"),o("baseAmountMin"),o("quoteAmountMin")]);var fa=h([o("fee")]);var NP=q("Raydium_liquidity_instruction");var ya=5e4,ba=h([o("x"),o("y"),o("price")]),VP=h([o("accountType"),o("status"),o("multiplier"),o("validDataCount"),R(ba,ya,"DataElement")]);import{PublicKey as ZP}from"@solana/web3.js";import jP from"decimal.js";import{TOKEN_PROGRAM_ID as JP}from"@solana/spl-token";import{PublicKey as WP}from"@solana/web3.js";var GP=q("Raydium_liquidity_serum");import Sw from"bn.js";import xw from"decimal.js";import{TOKEN_PROGRAM_ID as SA}from"@solana/spl-token";import{PublicKey as xA}from"@solana/web3.js";import RA from"bn.js";import{SystemProgram as pA,SYSVAR_RENT_PUBKEY as fA,Transaction as yA,TransactionInstruction as bA}from"@solana/web3.js";import{createInitializeAccountInstruction as PA,TOKEN_PROGRAM_ID as AA}from"@solana/spl-token";function ga(s="accountFlags"){let e=new Et(s);return e.addBoolean("initialized"),e.addBoolean("market"),e.addBoolean("openOrders"),e.addBoolean("requestQueue"),e.addBoolean("eventQueue"),e.addBoolean("bids"),e.addBoolean("asks"),e}var Pa=h([_(5),ga("accountFlags"),m("ownAddress"),o("vaultSignerNonce"),m("baseMint"),m("quoteMint"),m("baseVault"),o("baseDepositsTotal"),o("baseFeesAccrued"),m("quoteVault"),o("quoteDepositsTotal"),o("quoteFeesAccrued"),o("quoteDustThreshold"),m("requestQueue"),m("eventQueue"),m("bids"),m("asks"),o("baseLotSize"),o("quoteLotSize"),o("feeRateBps"),o("referrerRebatesAccrued"),_(7)]);import{PublicKey as Jk}from"@solana/web3.js";import{AccountLayout as tT,NATIVE_MINT as nT,TOKEN_2022_PROGRAM_ID as oT,TOKEN_PROGRAM_ID as iT,createAssociatedTokenAccountIdempotentInstruction as rT}from"@solana/spl-token";import $w from"bn.js";import Ba from"bn.js";var _w=new Ba(0);import Gw from"bn.js";import Sa from"bn.js";var Ce=new Sa(1e6);import pT from"bn.js";import yT from"decimal.js";import{PublicKey as bk,TransactionInstruction as gk,Keypair as Ak,SystemProgram as wk}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Tk,TOKEN_2022_PROGRAM_ID as hk,TOKEN_PROGRAM_ID as Ik}from"@solana/spl-token";var ok=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),ik=Buffer.from("amm_config","utf8"),rk=Buffer.from("pool","utf8"),ak=Buffer.from("pool_lp_mint","utf8"),sk=Buffer.from("pool_vault","utf8"),uk=Buffer.from("observation","utf8"),ck=Buffer.from("permission","utf8"),lk=Buffer.from("support_mint","utf8");var mk=Buffer.from("locked_liquidity","utf8");var Lk=q("Raydium_cpmm"),Ok={initialize:[175,175,109,31,13,152,155,237],deposit:[242,35,198,137,82,225,242,182],withdraw:[183,18,70,156,148,109,161,34],swapBaseInput:[143,190,90,218,196,30,51,222],swapBaseOutput:[55,217,98,86,163,74,180,173],lockCpLiquidity:[216,157,29,78,38,51,31,26],collectCpFee:[8,30,51,199,209,184,247,133],createPermissionPda:Buffer.from([135,136,2,216,137,169,181,202]),closePermissionPda:Buffer.from([156,84,32,118,69,135,70,123]),initializeWithPermission:Buffer.from([63,55,254,65,49,178,89,121]),collectCreatorFee:Buffer.from([20,22,86,123,198,28,219,132]),collectCreatorFeePermissionless:Buffer.from([202,202,34,83,226,122,145,229])};var Ca=h([_(8),B("bump"),ne("disableCreatePool"),re("index"),o("tradeFeeRate"),o("protocolFeeRate"),o("fundFeeRate"),o("createPoolFee"),m("protocolOwner"),m("fundOwner"),o("creatorFeeRate"),R(o(),15)]),Wo=h([_(8),m("configId"),m("poolCreator"),m("vaultA"),m("vaultB"),m("mintLp"),m("mintA"),m("mintB"),m("mintProgramA"),m("mintProgramB"),m("observationId"),B("bump"),B("status"),B("lpDecimals"),B("mintDecimalA"),B("mintDecimalB"),o("lpAmount"),o("protocolFeesMintA"),o("protocolFeesMintB"),o("fundFeesMintA"),o("fundFeesMintB"),o("openTime"),o("epoch"),B("feeOn"),ne("enableCreatorFee"),R(B(),6),o("creatorFeesMintA"),o("creatorFeesMintB"),R(o(),28)]),Fk=h([_(8),m("configId"),R(o(),30)]);import{PublicKey as aK,SystemProgram as sK}from"@solana/web3.js";import{createTransferInstruction as cK,TOKEN_PROGRAM_ID as lK,TOKEN_2022_PROGRAM_ID as mK,createAssociatedTokenAccountIdempotentInstruction as dK,createSyncNativeInstruction as fK,createTransferCheckedInstruction as yK}from"@solana/spl-token";import Xa from"bn.js";import PK from"decimal.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Bh,TOKEN_2022_PROGRAM_ID as Sh,TOKEN_PROGRAM_ID as Kh}from"@solana/spl-token";import{SystemProgram as Lh,TransactionInstruction as Oh}from"@solana/web3.js";import va from"bn.js";var Oa=h([o(),o("epoch"),B("curveType"),re("index"),o("migrateFee"),o("tradeFeeRate"),o("maxShareFeeRate"),o("minSupplyA"),o("maxLockRate"),o("minSellRateA"),o("minMigrateRateA"),o("minFundRaisingB"),m("mintB"),m("protocolFeeOwner"),m("migrateFeeOwner"),m("migrateToAmmWallet"),m("migrateToCpmmWallet"),R(o(),16)]),Na=h([o("totalLockedAmount"),o("cliffPeriod"),o("unlockPeriod"),o("startTime"),o("totalAllocatedShare")]),Ma=h([o(),o("epoch"),B("bump"),B("status"),B("mintDecimalsA"),B("mintDecimalsB"),B("migrateType"),o("supply"),o("totalSellA"),o("virtualA"),o("virtualB"),o("realA"),o("realB"),o("totalFundRaisingB"),o("protocolFee"),o("platformFee"),o("migrateFee"),Na.replicate("vestingSchedule"),m("configId"),m("platformId"),m("mintA"),m("mintB"),m("vaultA"),m("vaultB"),m("creator"),B("mintProgramFlag"),B("cpmmCreatorFeeOn"),o("platformVestingShare"),R(B(),54)]),ah=h([o(),o("epoch"),m("poolId"),m("beneficiary"),o("claimedAmount"),o("tokenShareAmount"),R(o(),8)]),Uo=h([B("migrateType"),B("migrateCpmmFeeOn"),o("supply"),o("totalSellA"),o("totalFundRaisingB"),o("totalLockedAmount"),o("cliffPeriod"),o("unlockPeriod")]),Fa=h([o("epoch"),B("index"),m("configId"),Uo.replicate("bondingCurveParam"),R(o(),50)]),Go=h([o(),o("epoch"),m("platformClaimFeeWallet"),m("platformLockNftWallet"),o("platformScale"),o("creatorScale"),o("burnScale"),o("feeRate"),R(B(),64,"name"),R(B(),256,"web"),R(B(),256,"img"),m("cpConfigId"),o("creatorFeeRate"),m("transferFeeExtensionAuth"),m("platformVestingWallet"),o("platformVestingScale"),m("platformCpCreator"),B("restrictGlobalConfig"),R(B(),107),Jn(Fa,"platformCurve")]);var mh=Buffer.from("vault_auth_seed","utf8"),dh=Buffer.from("global_config","utf8"),ph=Buffer.from("pool_vesting","utf8"),fh=Buffer.from("platform_config","utf8"),yh=Buffer.from("platform_fee_vault_auth_seed","utf8"),bh=Buffer.from("creator_fee_vault_auth_seed","utf8"),gh=Buffer.from("platform_global_access","utf8"),Ph=Buffer.from("platform_allow_config","utf8");var vh={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 Vh=new va("18446744073709551615");import{TOKEN_2022_PROGRAM_ID as Wh,TOKEN_PROGRAM_ID as qh}from"@solana/spl-token";import Xh from"bn.js";import Qh from"decimal.js";import SI from"bn.js";import xI from"decimal.js";import eI from"bn.js";import nI from"decimal.js";import dI from"bn.js";import fI from"decimal.js";import Yo from"bn.js";import In from"decimal.js";var Xt=class{static _multipler(e){return new In(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new In(e.toString()).div(this._Q64).mul(this._multipler(t)).div(this._multipler(n))}static getPriceX64({price:e,decimalA:t,decimalB:n}){let i=e.mul(this._multipler(n)).div(this._multipler(t));return new Yo(i.mul(this._Q64).toFixed(0))}};Xt._Q64=new In(new Yo(1).shln(64).toString());import{NATIVE_MINT as vB,TOKEN_2022_PROGRAM_ID as VB,TOKEN_PROGRAM_ID as _B,createAssociatedTokenAccountIdempotentInstruction as DB,createSyncNativeInstruction as WB,getTransferFeeConfig as qB,unpackMint as UB}from"@solana/spl-token";import me from"bn.js";import{PublicKey as Ua,SystemProgram as XB}from"@solana/web3.js";import JB from"decimal.js";var eS={initPriceX64:new me("515752397214619"),supply:new me(1e15),totalSellA:new me(7931e11),totalFundRaisingB:new me(85e9),totalFundRaisingBUSD:new me(125e8),totalLockedAmount:new me("0"),cliffPeriod:new me("0"),unlockPeriod:new me("0"),decimals:6,virtualA:new me("1073471847374405"),virtualB:new me("30050573465"),realA:new me(0),realB:new me(0),protocolFee:new me(0),platformId:new Ua("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new me(0),cliffPeriod:new me(0),unlockPeriod:new me(0),startTime:new me(0),totalAllocatedShare:new me(0)}},tS=new me(1e4);var Ga={[io.toBase58()]:3};var za=h([_(5),_(8),m("ownAddress"),o("vaultSignerNonce"),m("baseMint"),m("quoteMint"),m("baseVault"),o("baseDepositsTotal"),o("baseFeesAccrued"),m("quoteVault"),o("quoteDepositsTotal"),o("quoteFeesAccrued"),o("quoteDustThreshold"),m("requestQueue"),m("eventQueue"),m("bids"),m("asks"),o("baseLotSize"),o("quoteLotSize"),o("feeRateBps"),o("referrerRebatesAccrued"),_(7)]);import{PublicKey as IS}from"@solana/web3.js";var CS=q("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as _S,TOKEN_2022_PROGRAM_ID as ES,TOKEN_PROGRAM_ID as DS}from"@solana/spl-token";import{PublicKey as qS,SystemProgram as US,TransactionInstruction as GS}from"@solana/web3.js";import XS from"bn.js";var QK=new Xa(0);import{PublicKey as Ya,Transaction as Bn,TransactionInstruction as Qa}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Za}from"@solana/spl-token";import Qo from"bn.js";var be=class extends Ae{static getPdaPoolId(e,t){return H([be.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return H([be.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Qo(i).toArray())],e)}static async getAllInfo({connection:e,programId:t,poolIds:n,wallet:i,chainTime:a}){if(n.length===0)return[];let u=n.map(c=>be.getPdaPoolId(t,c).publicKey),r=[];for(let c=0;c<be.VERSION_PROJECT.length;c++)r.push(...u.map(f=>be.getPdaOwnerId(t,f,i,c).publicKey));let l=await Ne(e,[...u,...r]),d=[];for(let c=0;c<l.length;c++){let f=Math.floor(c/n.length),P=c%n.length,p=u[P],g=r[c],y=l[P],b=l[n.length+c];if(!(y&&b)||y.data.length!==be.POOL_LAYOUT.span||b.data.length!==be.OWNER_LAYOUT.span)continue;let A=be.POOL_LAYOUT.decode(y.data),T=be.OWNER_LAYOUT.decode(b.data),x=A.openTime.toNumber(),L=A.endTime.toNumber(),I=T.tokenInfo.map(O=>O.debtAmount.gt(new Qo(0))).filter(O=>!O).length!==3,C=a>x&&a<L&&A.status===1,K=I&&C;d.push({programId:t,poolId:p,ammId:A.ammId,ownerAccountId:g,snapshotLpAmount:T.lpAmount,project:be.VERSION_PROJECT[f],openTime:x,endTime:L,canClaim:K,canClaimErrorType:I?C?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:A.tokenInfo.map((O,N)=>({mintAddress:O.mintAddress,mintVault:O.mintVault,mintDecimals:O.mintDecimals,perLpLoss:O.perLpLoss,debtAmount:T.tokenInfo[N].debtAmount.add(T.tokenInfo[N].claimedAmount)}))})}return d}async makeClaimTransaction({poolInfo:e,ownerInfo:t,feePayer:n}){t.wallet||this.scope.checkOwner();let i=this.createTxBuilder(n),a=t.wallet||this.scope.ownerPubKey,u=[];for(let d of e.tokenInfo){let{account:c,instructionParams:f}=await this.scope.account.getOrCreateTokenAccount({mint:d.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:d.mintAddress.equals(ye.WSOL.mint),createInfo:{payer:a,amount:0},skipCloseAccount:!d.mintAddress.equals(ye.WSOL.mint),associatedOnly:d.mintAddress.equals(ye.WSOL.mint)?!1:t.associatedOnly});f&&i.addInstruction(f),u.push(c)}i.addInstruction({instructions:[be.makeClaimInstruction({programId:e.programId,poolInfo:e,ownerInfo:{wallet:a,ownerPda:e.ownerAccountId,claimAddress:u}})]});let{transaction:r,signers:l}=i.build();return[{transaction:r,signer:l}]}async makeClaimAllTransaction({poolInfos:e,ownerInfo:t,feePayer:n}){let i=this.createTxBuilder(n),a=t.wallet||this.scope.ownerPubKey,u={};for(let c of e){let f=[];for(let P of c.tokenInfo){let{account:p,instructionParams:g}=await this.scope.account.getOrCreateTokenAccount({mint:P.mintAddress,owner:this.scope.ownerPubKey,notUseTokenAccount:P.mintAddress.equals(ye.WSOL.mint),createInfo:{payer:a,amount:0},skipCloseAccount:!P.mintAddress.equals(ye.WSOL.mint),associatedOnly:P.mintAddress.equals(ye.WSOL.mint)?!1:t.associatedOnly});g&&i.addInstruction(g),p&&(u[P.mintAddress.toString()]=p,f.push(p))}i.addInstruction({instructions:[be.makeClaimInstruction({programId:c.programId,poolInfo:c,ownerInfo:{wallet:a,ownerPda:c.ownerAccountId,claimAddress:f}})]})}let{transaction:r,signers:l}=i.build(),d=i.allInstructions;return sn(d,[a,...l.map(c=>c.publicKey)])?[{transaction:r,signer:l}]:[{transaction:new Bn().add(...d.slice(0,i.AllTxData.instructions.length-1)),signer:l},{transaction:new Bn().add(...d.slice(i.AllTxData.instructions.length-1)),signer:[]},{transaction:new Bn().add(...i.AllTxData.endInstructions),signer:[]}]}static makeClaimInstruction({programId:e,poolInfo:t,ownerInfo:n}){let i=h([]),a=[{pubkey:n.wallet,isSigner:!0,isWritable:!0},{pubkey:t.poolId,isSigner:!1,isWritable:!0},{pubkey:n.ownerPda,isSigner:!1,isWritable:!0},...n.claimAddress.map(l=>({pubkey:l,isSigner:!1,isWritable:!0})),...t.tokenInfo.map(({mintVault:l})=>({pubkey:l,isSigner:!1,isWritable:!0})),{pubkey:Za,isSigner:!1,isWritable:!1}],u=Buffer.alloc(i.span);i.encode({},u);let r=Buffer.from([10,66,208,184,161,6,191,98,...u]);return new Qa({keys:a,programId:e,data:r})}},Se=be;Se.CLAIMED_NUM=3,Se.POOL_LAYOUT=h([_(8),B("bump"),B("status"),o("openTime"),o("endTime"),m("ammId"),R(h([B("mintDecimals"),m("mintAddress"),m("mintVault"),o("perLpLoss"),o("totalClaimedAmount")]),be.CLAIMED_NUM,"tokenInfo"),R(o(),10,"padding")]),Se.OWNER_LAYOUT=h([_(8),B("bump"),B("version"),m("poolId"),m("owner"),o("lpAmount"),R(h([m("mintAddress"),o("debtAmount"),o("claimedAmount")]),be.CLAIMED_NUM,"tokenInfo"),R(o(),4,"padding")]),Se.DEFAULT_POOL_ID=["58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2","6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg","AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA","DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut","7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX","6a1CsrpeZubDjEJE9s1CMVheB6HWM5d7m1cj2jkhyXhj","EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb","AceAyRTWt4PyB2pHqf2qhDgNZDtKVNaxgL8Ru3V4aN1P","6tmFJbMk5yVHFcFy7X2K8RwHjKLr6KVFLYXpgpBNeAxB"].map(e=>new Ya(e)),Se.SEED_CONFIG={pool:{id:Buffer.from("pool_seed","utf8")},owner:{id:Buffer.from("user_claim_seed","utf8")}},Se.VERSION_PROJECT=[void 0,"Francium","Tulip","Larix"];import{PublicKey as mx}from"@solana/web3.js";import{getTransferFeeConfig as px,MintLayout as fx,TOKEN_2022_PROGRAM_ID as yx,TOKEN_PROGRAM_ID as bx,unpackMint as gx}from"@solana/spl-token";var zC=new $e(2),XC=new $e(3),YC=new $e(5),pi=new $e(10),QC=new $e(100),ZC=new $e(1e3),HC=new $e(1e4);function jt(s,e=1,t=[]){let n=[...s];if(e<=0)return t;for(;n.length;)t.push(n.splice(0,e));return t}import{ASSOCIATED_TOKEN_PROGRAM_ID as Sn,TOKEN_2022_PROGRAM_ID as ie,TOKEN_PROGRAM_ID as Y}from"@solana/spl-token";import{Keypair as Yt,PublicKey as S,SystemProgram as Re,TransactionInstruction as oe}from"@solana/web3.js";import Qt from"bn.js";import{sha256 as Ha}from"js-sha256";function pe(s){let e=`global:${s}`;return Buffer.from(Ha.digest(e)).slice(0,8)}go.span;var Zo=q("Raydium_Clmm"),fe={createPool:pe("create_pool"),createCustomizablePool:pe("create_customizable_pool"),createPermissionedPool:pe("create_permissioned_pool"),openPositionV2:pe("open_position_v2"),openPositionWithToken22Nft:pe("open_position_with_token22_nft"),closePosition:pe("close_position"),increaseLiquidityV2:pe("increase_liquidity_v2"),decreaseLiquidityV2:pe("decrease_liquidity_v2"),initializeReward:pe("initialize_reward"),setRewardParams:pe("set_reward_params"),updateRewardInfos:pe("update_reward_infos"),collectRemainingRewards:pe("collect_remaining_rewards"),swapV2:pe("swap_v2"),openLimitOrder:pe("open_limit_order"),increaseLimitOrder:pe("increase_limit_order"),decreaseLimitOrder:pe("decrease_limit_order"),settleLimitOrder:pe("settle_limit_order"),closeLimitOrder:pe("close_limit_order")},Ho=[188,37,179,131,82,150,84,73],jo=[16,72,250,198,14,162,212,19],We=class{static createPoolInstruction(e,t,n,i,a,u,r,l,d,c,f,P,p,g){let y=h([M("sqrtPriceX64"),o("startTime")]),b=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Re.programId,isSigner:!1,isWritable:!1},{pubkey:Ie,isSigner:!1,isWritable:!1},...(g!=null?g:[]).map(x=>({pubkey:x,isSigner:!1,isWritable:!1}))],A=Buffer.alloc(y.span);y.encode({sqrtPriceX64:p,startTime:X},A);let T=Buffer.from([...fe.createPool,...A]);return new oe({keys:b,programId:e,data:T})}static createCustomizablePoolInstruction(e,t,n,i,a,u,r,l,d,c,f,P,p,g,y,b){let A=h([M("sqrtPriceX64"),B("collectFeeOn"),ne("enableDynamicFee")]),T=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:P,isSigner:!1,isWritable:!1},{pubkey:Re.programId,isSigner:!1,isWritable:!1},{pubkey:Ie,isSigner:!1,isWritable:!1},...y.map(I=>({pubkey:I,isSigner:!1,isWritable:!1})),...b?[{pubkey:b,isSigner:!1,isWritable:!1}]:[]],x=Buffer.alloc(A.span);A.encode({sqrtPriceX64:p,collectFeeOn:g,enableDynamicFee:b!==void 0},x);let L=Buffer.from([...fe.createCustomizablePool,...x]);return new oe({keys:T,programId:e,data:L})}static createPermissionedPoolInstruction(e,t,n,i,a,u,r,l,d,c,f,P,p,g,y,b,A,T,x){let L=h([M("sqrtPriceX64"),B("collectFeeOn"),ne("enableDynamicFee"),re("seedIndex")]),I=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:Re.programId,isSigner:!1,isWritable:!1},{pubkey:Ie,isSigner:!1,isWritable:!1},...T.map(O=>({pubkey:O,isSigner:!1,isWritable:!1})),...x?[{pubkey:x,isSigner:!1,isWritable:!1}]:[]],C=Buffer.alloc(L.span);L.encode({sqrtPriceX64:y,collectFeeOn:b,enableDynamicFee:x!==void 0,seedIndex:A},C);let K=Buffer.from([...fe.createPermissionedPool,...C]);return new oe({keys:I,programId:e,data:K})}static initializeRewardInstruction(e,t,n,i,a,u,r,l,d,c,f,P){let p=h([o("openTime"),o("endTime"),M("emissionsPerSecondX64")]),g=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:Re.programId,isSigner:!1,isWritable:!1},{pubkey:Ie,isSigner:!1,isWritable:!1}],y=Buffer.alloc(p.span);p.encode({openTime:c,endTime:f,emissionsPerSecondX64:P},y);let b=Buffer.from([...fe.initializeReward,...y]);return new oe({keys:g,programId:e,data:b})}static updateRewardInfosInstruction(e,t){let n=[{pubkey:t,isSigner:!1,isWritable:!0}],i=Buffer.from([...fe.updateRewardInfos]);return new oe({keys:n,programId:e,data:i})}static setRewardParamsInstruction(e,t,n,i,a,u,r,l,d,c,f,P){let p=h([B("rewardIndex"),M("emissionsPerSecondX64"),o("openTime"),o("endTime")]),g=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0}],y=Buffer.alloc(p.span);p.encode({rewardIndex:d,emissionsPerSecondX64:P,openTime:c,endTime:f},y);let b=Buffer.from([...fe.setRewardParams,...y]);return new oe({keys:g,programId:e,data:b})}static closePositionInstruction(e,t,n,i,a,u,r){let l=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:Re.programId,isSigner:!1,isWritable:!1},{pubkey:u?ie:Y,isSigner:!1,isWritable:!1}];r&&l.push({pubkey:r,isSigner:!1,isWritable:!0});let d=Buffer.from([...fe.closePosition]);return new oe({keys:l,programId:e,data:d})}static openPositionV2Instruction(e,t,n,i,a,u,r,l,d,c,f,P,p,g,y,b,A,T,x,L,I,C,K,O,N,v,ue){let z=h([ae("tickLower"),ae("tickUpper"),ae("tickArrayLowerStart"),ae("tickArrayUpperStart"),M("liquidity"),o("amountMaxA"),o("amountMaxB"),ne("withMetadata"),B("optionBaseFlag"),ne("baseFlag")]),E=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!0,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:Ie,isSigner:!1,isWritable:!1},{pubkey:Re.programId,isSigner:!1,isWritable:!1},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:Sn,isSigner:!1,isWritable:!1},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:A,isSigner:!1,isWritable:!1},...ue?[{pubkey:ue,isSigner:!1,isWritable:!0}]:[]],te=Buffer.alloc(z.span);z.encode({tickLower:T,tickUpper:x,tickArrayLowerStart:L,tickArrayUpperStart:I,liquidity:C,amountMaxA:K,amountMaxB:O,withMetadata:N,optionBaseFlag:v!==null?1:0,baseFlag:v!=null?v:!1},te);let Q=Buffer.from([...fe.openPositionV2,...te]);return new oe({keys:E,programId:e,data:Q})}static increaseLiquidityV2Instruction(e,t,n,i,a,u,r,l,d,c,f,P,p,g,y,b,A,T,x){let L=h([M("liquidity"),o("amountMaxA"),o("amountMaxB"),B("optionBaseFlag"),ne("baseFlag")]),I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...x?[{pubkey:x,isSigner:!1,isWritable:!0}]:[]],C=Buffer.alloc(L.span);L.encode({liquidity:y,amountMaxA:b,amountMaxB:A,optionBaseFlag:T!==null?1:0,baseFlag:T!=null?T:!1},C);let K=Buffer.from([...fe.increaseLiquidityV2,...C]);return new oe({keys:I,programId:e,data:K})}static decreaseLiquidityV2Instruction(e,t,n,i,a,u,r,l,d,c,f,P,p,g,y,b,A,T,x){let L=h([M("liquidity"),o("amountMinA"),o("amountMinB")]),I=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:_e,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},...x?[{pubkey:x,isSigner:!1,isWritable:!0}]:[],...y.map(O=>[{pubkey:O.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.rewardMint,isSigner:!1,isWritable:!1}]).flat()],C=Buffer.alloc(L.span);L.encode({liquidity:b,amountMinA:A,amountMinB:T},C);let K=Buffer.from([...fe.decreaseLiquidityV2,...C]);return new oe({keys:I,programId:e,data:K})}static swapV2Instruction(e,t,n,i,a,u,r,l,d,c,f,P,p,g,y,b,A){let T=h([o("amount"),o("otherAmountThreshold"),M("sqrtPriceLimitX64"),ne("isBaseInput")]),x=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:_e,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},...A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[],...f.map(C=>({pubkey:C,isSigner:!1,isWritable:!0}))],L=Buffer.alloc(T.span);T.encode({amount:p,otherAmountThreshold:g,sqrtPriceLimitX64:y,isBaseInput:b},L);let I=Buffer.from([...fe.swapV2,...L]);return new oe({keys:x,programId:e,data:I})}static collectRemainingRewardsInstruction(e,t,n,i,a,u,r){let l=h([B("rewardIndex")]),d=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:_e,isSigner:!1,isWritable:!1}],c=Buffer.alloc(l.span);l.encode({rewardIndex:r},c);let f=Buffer.from([...fe.collectRemainingRewards,...c]);return new oe({keys:d,programId:e,data:f})}static openPositionWithToken22NftInstruction(e,t,n,i,a,u,r,l,d,c,f,P,p,g,y,b,A,T,x,L,I,C,K,O,N,v){let ue=h([ae("tickLower"),ae("tickUpper"),ae("tickArrayLowerStart"),ae("tickArrayUpperStart"),M("liquidity"),o("amountMaxA"),o("amountMaxB"),ne("withMetadata"),B("optionBaseFlag"),ne("baseFlag")]),z=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!0,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:Ie,isSigner:!1,isWritable:!1},{pubkey:Re.programId,isSigner:!1,isWritable:!1},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:Sn,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},...v?[{pubkey:v,isSigner:!1,isWritable:!0}]:[]],E=Buffer.alloc(ue.span);ue.encode({tickLower:A,tickUpper:T,tickArrayLowerStart:x,tickArrayUpperStart:L,liquidity:I,amountMaxA:C,amountMaxB:K,withMetadata:O,optionBaseFlag:N!==null?1:0,baseFlag:N!=null?N:!1},E);let te=Buffer.from([...fe.openPositionWithToken22Nft,...E]);return new oe({keys:z,programId:e,data:te})}static openLimitOrderInstruction(e,t,n,i,a,u,r,l,d,c,f,P,p,g,y,b,A,T){let x=h([B("nonceIndex"),ne("zeroForOne"),ae("tickIndex"),o("amount")]),L=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:P,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!1},{pubkey:Re.programId,isSigner:!1,isWritable:!1},...T?[{pubkey:T,isSigner:!1,isWritable:!0}]:[]],I=Buffer.alloc(x.span);x.encode({nonceIndex:g,zeroForOne:y,tickIndex:b,amount:A},I);let C=Buffer.from([...fe.openLimitOrder,...I]);return new oe({keys:L,programId:e,data:C})}static increaseLimitOrderInstruction(e,t,n,i,a,u,r,l,d,c){let f=h([o("amount")]),P=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1}],p=Buffer.alloc(f.span);f.encode({amount:c},p);let g=Buffer.from([...fe.increaseLimitOrder,...p]);return new oe({keys:P,programId:e,data:g})}static decreaseLimitOrderInstruction(e,t,n,i,a,u,r,l,d,c,f,P,p,g){let y=h([o("amount"),o("amountMin")]),b=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[]],A=Buffer.alloc(y.span);y.encode({amount:P,amountMin:p},A);let T=Buffer.from([...fe.decreaseLimitOrder,...A]);return new oe({keys:b,programId:e,data:T})}static settleLimitOrderInstruction(e,t,n,i,a,u,r,l,d){let c=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1}],f=Buffer.from([...fe.settleLimitOrder]);return new oe({keys:c,programId:e,data:f})}static closeLimitOrderInstruction(e,t,n,i){let a=[{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0}],u=Buffer.from([...fe.closeLimitOrder]);return new oe({keys:a,programId:e,data:u})}static createPoolInstructions(e){let{programId:t,owner:n,mintA:i,mintB:a,ammConfigId:u,initialPriceX64:r,extendMintAccount:l}=e,[d,c]=[new S(i.address),new S(a.address)],[f,P]=[new S(i.programId||Y),new S(a.programId||Y)],{publicKey:p}=So(t,u,d,c),{publicKey:g}=An(t,p),{publicKey:y}=ct(t,p,d),{publicKey:b}=ct(t,p,c),A=de(t,p).publicKey,T=[this.createPoolInstruction(t,p,n,u,g,d,y,f,c,b,P,A,r,l)];return{signers:[],instructions:T,instructionTypes:[D.CreateAccount,D.ClmmCreatePool],address:{poolId:p,observationId:g,exBitmapAccount:A,mintA:d,mintB:c,mintAProgram:f,mintBProgram:P,mintAVault:y,mintBVault:b},lookupTableAddress:[]}}static createPermissionedPoolInstructions(e){let{programId:t,owner:n,mintA:i,mintB:a,ammConfigId:u,initialPriceX64:r,extendMintAccount:l,payer:d,seedIndex:c}=e,[f,P]=[new S(i.address),new S(a.address)],[p,g]=[new S(i.programId||Y),new S(a.programId||Y)],{publicKey:y}=xo(t,u,f,P,c),{publicKey:b}=Ko(t,d),{publicKey:A}=An(t,y),{publicKey:T}=ct(t,y,f),{publicKey:x}=ct(t,y,P),L=de(t,y).publicKey,I=[this.createPoolInstruction(t,y,n,u,A,f,T,p,P,x,g,L,r,l)];return{signers:[],instructions:I,instructionTypes:[D.CreateAccount,D.ClmmCreatePool],address:{poolId:y,observationId:A,exBitmapAccount:L,mintA:f,mintB:P,mintAProgram:p,mintBProgram:g,mintAVault:T,mintBVault:x,permission:b},lookupTableAddress:[]}}static async openPositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:a,liquidity:u,amountMaxA:r,amountMaxB:l,base:d,withMetadata:c,getEphemeralSigners:f,nft2022:P}){let p=[],[g,y]=[new S(e.programId),new S(e.id)],b;if(f)b=new S((await f(1))[0]);else{let v=Yt.generate();p.push(v),b=v.publicKey}let A=j.getTickArrayStartIndex(i,e.config.tickSpacing),T=j.getTickArrayStartIndex(a,e.config.tickSpacing),{publicKey:x}=ce(g,y,A),{publicKey:L}=ce(g,y,T),{publicKey:I}=P?G(n.wallet,b,ie):G(n.wallet,b,Y),{publicKey:C}=je(b),{publicKey:K}=Be(g,b),{publicKey:O}=Ve(g,y,i,a),N=P?this.openPositionWithToken22NftInstruction(g,n.feePayer,y,n.wallet,b,I,O,x,L,K,n.tokenAccountA,n.tokenAccountB,new S(t.vault.A),new S(t.vault.B),new S(e.mintA.address),new S(e.mintB.address),i,a,A,T,u,r,l,c==="create",d&&d==="MintA",he.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[A,T]})?de(g,y).publicKey:void 0):this.openPositionV2Instruction(g,n.feePayer,y,n.wallet,b,I,C,O,x,L,K,n.tokenAccountA,n.tokenAccountB,new S(t.vault.A),new S(t.vault.B),new S(e.mintA.address),new S(e.mintB.address),i,a,A,T,u,r,l,c==="create",null,he.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[A,T]})?de(g,y).publicKey:void 0);return{signers:p,instructions:[N],instructionTypes:[D.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:x,tickArrayUpper:L,positionNftAccount:I,metadataAccount:C,personalPosition:K,protocolPosition:O}}}static async openPositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:a,base:u,baseAmount:r,otherAmountMax:l,liquidity:d,withMetadata:c,getEphemeralSigners:f,nft2022:P}){let p=[],[g,y]=[new S(e.programId),new S(e.id)],b;if(f)b=new S((await f(1))[0]);else{let v=Yt.generate();p.push(v),b=v.publicKey}let A=j.getTickArrayStartIndex(i,e.config.tickSpacing),T=j.getTickArrayStartIndex(a,e.config.tickSpacing),{publicKey:x}=ce(g,y,A),{publicKey:L}=ce(g,y,T),{publicKey:I}=P?G(n.wallet,b,ie):G(n.wallet,b,Y),{publicKey:C}=je(b),{publicKey:K}=Be(g,b),{publicKey:O}=Ve(g,y,i,a),N=P?this.openPositionWithToken22NftInstruction(g,n.feePayer,y,n.wallet,b,I,O,x,L,K,n.tokenAccountA,n.tokenAccountB,new S(t.vault.A),new S(t.vault.B),new S(e.mintA.address),new S(e.mintB.address),i,a,A,T,d,!u||u==="MintA"?r:l,!u||u==="MintA"?l:r,c==="create",u&&u==="MintA",he.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[A,T]})?de(g,y).publicKey:void 0):this.openPositionV2Instruction(g,n.feePayer,y,n.wallet,b,I,C,O,x,L,K,n.tokenAccountA,n.tokenAccountB,new S(t.vault.A),new S(t.vault.B),new S(e.mintA.address),new S(e.mintB.address),i,a,A,T,X,u==="MintA"?r:l,u==="MintA"?l:r,c==="create",u==="MintA",he.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[A,T]})?de(g,y).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:x,tickArrayUpper:L,positionNftAccount:I,metadataAccount:C,personalPosition:K,protocolPosition:O},instructions:[N],signers:p,instructionTypes:[D.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async openPositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,tickLower:i,tickUpper:a,liquidity:u,amountMaxA:r,amountMaxB:l,base:d,withMetadata:c,getEphemeralSigners:f,nft2022:P}){let p,g=[];if(f)p=new S((await f(1))[0]);else{let v=Yt.generate();g.push(v),p=v.publicKey}let[y,b]=[new S(e.programId),new S(e.id)],A=j.getTickArrayStartIndex(i,e.config.tickSpacing),T=j.getTickArrayStartIndex(a,e.config.tickSpacing),{publicKey:x}=ce(y,b,A),{publicKey:L}=ce(y,b,T),{publicKey:I}=P?G(n.wallet,p,ie):G(n.wallet,p,Y),{publicKey:C}=je(p),{publicKey:K}=Be(y,p),{publicKey:O}=Ve(y,b,i,a),N=P?this.openPositionWithToken22NftInstruction(y,n.wallet,b,n.wallet,p,I,O,x,L,K,n.tokenAccountA,n.tokenAccountB,new S(t.vault.A),new S(t.vault.B),new S(t.mintA.address),new S(t.mintB.address),i,a,A,T,u,r,l,c==="create",d&&d==="MintA",he.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[A,T]})?de(y,b).publicKey:void 0):this.openPositionV2Instruction(y,n.wallet,b,n.wallet,p,I,C,O,x,L,K,n.tokenAccountA,n.tokenAccountB,new S(t.vault.A),new S(t.vault.B),new S(t.mintA.address),new S(t.mintB.address),i,a,A,T,u,r,l,c==="create",null,he.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[A,T]})?de(y,b).publicKey:void 0);return{address:{nftMint:p,tickArrayLower:x,tickArrayUpper:L,positionNftAccount:I,metadataAccount:C,personalPosition:K,protocolPosition:O},instructions:[N],signers:g,instructionTypes:[D.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static closePositionInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,ownerPosition:i,nft2022:a}){let u=new S(e.programId),r=a?G(n.wallet,i.nftMint,ie).publicKey:G(n.wallet,i.nftMint,Y).publicKey,{publicKey:l}=Be(u,i.nftMint),d=[];return d.push(this.closePositionInstruction(u,n.wallet,i.nftMint,r,l,!!a,new S(e.id))),{address:{positionNftAccount:r,personalPosition:l},signers:[],instructions:d,instructionTypes:[D.ClmmClosePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:a,amountMaxA:u,amountMaxB:r,nft2022:l}){let[d,c]=[new S(e.programId),new S(e.id)],f=j.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),P=j.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:p}=ce(d,c,f),{publicKey:g}=ce(d,c,P),{publicKey:y}=l?G(i.wallet,n.nftMint,ie):G(i.wallet,n.nftMint,Y),{publicKey:b}=Be(d,n.nftMint),{publicKey:A}=Ve(d,c,n.tickLower,n.tickUpper),T=this.increaseLiquidityV2Instruction(d,i.wallet,y,b,c,A,p,g,i.tokenAccountA,i.tokenAccountB,new S(t.vault.A),new S(t.vault.B),new S(e.mintA.address),new S(e.mintB.address),a,u,r,null,he.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[f,P]})?de(d,c).publicKey:void 0);return{address:{tickArrayLower:p,tickArrayUpper:g,positionNftAccount:y,personalPosition:b,protocolPosition:A},signers:[],instructions:[T],instructionTypes:[D.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static increasePositionFromBaseInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,base:a,baseAmount:u,otherAmountMax:r,nft2022:l}){let[d,c]=[new S(e.programId),new S(e.id)],f=j.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),P=j.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:p}=ce(d,c,f),{publicKey:g}=ce(d,c,P),{publicKey:y}=l?G(i.wallet,n.nftMint,ie):G(i.wallet,n.nftMint,Y),{publicKey:b}=Be(d,n.nftMint),{publicKey:A}=Ve(d,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:g,positionNftAccount:y,personalPosition:b,protocolPosition:A},instructions:[this.increaseLiquidityV2Instruction(d,i.wallet,y,b,c,A,p,g,i.tokenAccountA,i.tokenAccountB,new S(t.vault.A),new S(t.vault.B),new S(e.mintA.address),new S(e.mintB.address),X,a==="MintA"?u:r,a==="MintA"?r:u,a==="MintA",he.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[f,P]})?de(d,c).publicKey:void 0)],signers:[],instructionTypes:[D.ClmmIncreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static decreaseLiquidityInstructions({poolInfo:e,poolKeys:t,ownerPosition:n,ownerInfo:i,liquidity:a,amountMinA:u,amountMinB:r,programId:l,nft2022:d}){let[c,f]=[new S(e.programId),new S(e.id)],P=j.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),p=j.getTickArrayStartIndex(n.tickUpper,e.config.tickSpacing),{publicKey:g}=ce(c,f,P),{publicKey:y}=ce(c,f,p),{publicKey:b}=d?G(i.wallet,n.nftMint,ie):G(i.wallet,n.nftMint,l),{publicKey:A}=Be(c,n.nftMint),{publicKey:T}=Ve(c,f,n.tickLower,n.tickUpper),x=new Map;for(let K=0;K<t.rewardInfos.length;K++)x.set(t.rewardInfos[K].mint.address,i.rewardAccounts[K]);let L=[];for(let K=0;K<t.rewardInfos.length;K++){let O=t.rewardInfos[K].mint.address,N=x.get(O);N&&L.push({poolRewardVault:new S(t.rewardInfos[K].vault),ownerRewardVault:N,rewardMint:new S(O)})}let I=[],C=this.decreaseLiquidityV2Instruction(c,i.wallet,b,A,f,T,g,y,i.tokenAccountA,i.tokenAccountB,new S(t.vault.A),new S(t.vault.B),new S(e.mintA.address),new S(e.mintB.address),L,a,u,r,he.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[P,p]})?de(c,f).publicKey:void 0);return I.push(C),{address:{tickArrayLower:g,tickArrayUpper:y,positionNftAccount:b,personalPosition:A,protocolPosition:T},signers:[],instructions:I,instructionTypes:[D.ClmmDecreasePosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static makeSwapBaseInInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,inputMint:a,amountIn:u,amountOutMin:r,sqrtPriceLimitX64:l,remainingAccounts:d}){let[c,f]=[new S(e.programId),new S(e.id)],[P,p]=[new S(t.vault.A),new S(t.vault.B)],[g,y]=[new S(e.mintA.address),new S(e.mintB.address)],b=e.mintA.address.toString()===a.toString(),A=[this.swapV2Instruction(c,i.wallet,f,new S(e.config.id),b?i.tokenAccountA:i.tokenAccountB,b?i.tokenAccountB:i.tokenAccountA,b?P:p,b?p:P,b?g:y,b?y:g,d,n,u,r,l,!0,de(c,f).publicKey)];return{signers:[],instructions:A,instructionTypes:[D.ClmmSwapBaseIn],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static makeSwapBaseOutInstructions({poolInfo:e,poolKeys:t,observationId:n,ownerInfo:i,outputMint:a,amountOut:u,amountInMax:r,sqrtPriceLimitX64:l,remainingAccounts:d}){let[c,f]=[new S(e.programId),new S(e.id)],[P,p]=[new S(t.vault.A),new S(t.vault.B)],[g,y]=[new S(e.mintA.address),new S(e.mintB.address)],b=e.mintB.address.toString()===a.toBase58(),A=[this.swapV2Instruction(c,i.wallet,f,new S(e.config.id),b?i.tokenAccountA:i.tokenAccountB,b?i.tokenAccountB:i.tokenAccountA,b?P:p,b?p:P,b?g:y,b?y:g,d,n,u,r,l,!1,de(c,f).publicKey)];return{signers:[],instructions:A,instructionTypes:[D.ClmmSwapBaseOut],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{}}}static initRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[a,u]=[new S(e.programId),new S(e.id)],r=Co(a,u,i.mint).publicKey,l=Ut(a).publicKey,d=[this.initializeRewardInstruction(a,n.wallet,u,l,new S(e.config.id),n.tokenAccount,i.programId,i.mint,r,new Qt(i.openTime),new Qt(i.endTime),i.emissionsPerSecondX64)];return{address:{poolRewardVault:r,operationId:l},signers:[],instructions:d,instructionTypes:[D.ClmmInitReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static setRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardInfo:i}){let[a,u]=[new S(e.programId),new S(e.id)],r,l,d;for(let P=0;P<e.rewardDefaultInfos.length;P++)e.rewardDefaultInfos[P].mint.address===i.mint.toString()&&(r=P,l=new S(t.rewardInfos[P].vault),d=new S(t.rewardInfos[P].mint.address));(r===void 0||l===void 0)&&Zo.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let c=Ut(a).publicKey,f=[this.setRewardParamsInstruction(a,n.wallet,u,c,new S(e.config.id),n.tokenAccount,l,d,r,new Qt(i.openTime),new Qt(i.endTime),i.emissionsPerSecondX64)];return{address:{rewardVault:l,operationId:c},signers:[],instructions:f,instructionTypes:[D.ClmmSetReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static collectRewardInstructions({poolInfo:e,poolKeys:t,ownerInfo:n,rewardMint:i}){let[a,u]=[new S(e.programId),new S(e.id)],r,l;for(let c=0;c<e.rewardDefaultInfos.length;c++)e.rewardDefaultInfos[c].mint.address===i.toString()&&(r=c,l=new S(t.rewardInfos[c].vault));(r===void 0||l===void 0)&&Zo.logWithError("reward mint check error","no reward mint",e.rewardDefaultInfos);let d=[this.collectRemainingRewardsInstruction(a,n.wallet,u,n.tokenAccount,l,i,r)];return{address:{rewardVault:l},signers:[],instructions:d,instructionTypes:[D.ClmmCollectReward],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[]}}static async makeLockPositions({programId:e,authProgramId:t,poolProgramId:n,payer:i,wallet:a,nftMint:u,nft2022:r,getEphemeralSigners:l}){let d=[],c;if(l)c=new S((await l(1))[0]);else{let A=Yt.generate();d.push(A),c=A.publicKey}let f=r?G(a,u,ie).publicKey:G(a,u,Y).publicKey,{publicKey:P}=Be(n,u),p=kn(e,c).publicKey,g=G(a,c,Y).publicKey,y=je(c).publicKey,b=We.lockPositionInstructionV2({programId:e,auth:t,payer:i,positionOwner:a,lockOwner:a,positionNftAccount:f,positionId:P,lockPositionId:p,lockNftMint:c,lockNftAccount:g,metadataAccount:y,withMetadata:!0,nft2022:r,positionNftMint:u,authPositionNftAccount:G(t,u,r?ie:Y).publicKey,positionNftProgram:r?ie:Y});return{address:{positionId:P,lockPositionId:p,lockNftAccount:g,lockNftMint:c,positionNftAccount:f,metadataAccount:y},instructions:[b],signers:d,instructionTypes:[D.ClmmLockPosition],lookupTableAddress:[]}}static lockPositionInstructionV2({programId:e,auth:t,payer:n,positionOwner:i,lockOwner:a,positionNftAccount:u,positionId:r,positionNftMint:l,authPositionNftAccount:d,positionNftProgram:c,lockPositionId:f,lockNftMint:P,lockNftAccount:p,metadataAccount:g,withMetadata:y}){let b=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!0,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:Sn,isSigner:!1,isWritable:!1},{pubkey:Ie,isSigner:!1,isWritable:!1},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:Re.programId,isSigner:!1,isWritable:!1}],A=h([ne("withMetadata")]),T=Buffer.alloc(A.span);A.encode({withMetadata:y},T);let x=Buffer.from([...Ho,...T]);return new oe({keys:b,programId:e,data:x})}static lockPositionInstruction({programId:e,authProgramId:t,poolProgramId:n,owner:i,positionNft:a}){let{publicKey:u}=G(i,a,Y),{publicKey:r}=Be(n,a),l=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:wn(e,r).publicKey,isSigner:!1,isWritable:!0},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:Re.programId,isSigner:!1,isWritable:!1}];return new oe({keys:l,programId:e,data:Buffer.from(Ho)})}static harvestLockPositionInstruction(e){let[t,n]=[new S(e.poolKeys.programId),new S(e.poolKeys.id)],i=j.getTickArrayStartIndex(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),a=j.getTickArrayStartIndex(e.ownerPosition.tickUpper,e.poolKeys.config.tickSpacing),{publicKey:u}=ce(t,n,i),{publicKey:r}=ce(t,n,a),{publicKey:l}=G(e.owner,e.ownerPosition.nftMint,Y),{publicKey:d}=Be(t,e.ownerPosition.nftMint),{publicKey:c}=Ve(t,n,e.ownerPosition.tickLower,e.ownerPosition.tickUpper),f=[];for(let g=0;g<e.poolKeys.rewardInfos.length;g++)f.push({poolRewardVault:new S(e.poolKeys.rewardInfos[g].vault),ownerRewardVault:e.ownerRewardAccounts[g],rewardMint:new S(e.poolKeys.rewardInfos[g].mint.address)});let P=[...f.map(g=>[{pubkey:g.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:g.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:g.rewardMint,isSigner:!1,isWritable:!1}]).flat()],p=[{pubkey:e.authProgramId,isSigner:!1,isWritable:!1},{pubkey:wn(e.programId,d).publicKey,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:e.owner,isSigner:!0,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:new S(e.poolKeys.vault.A),isSigner:!1,isWritable:!0},{pubkey:new S(e.poolKeys.vault.B),isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:e.userVaultA,isSigner:!1,isWritable:!0},{pubkey:e.userVaultB,isSigner:!1,isWritable:!0},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:_e,isSigner:!1,isWritable:!1},{pubkey:new S(e.poolKeys.mintA.address),isSigner:!1,isWritable:!1},{pubkey:new S(e.poolKeys.mintB.address),isSigner:!1,isWritable:!1},...P];return new oe({keys:p,programId:e.programId,data:Buffer.from(jo)})}static harvestLockPositionInstructionV2({programId:e,auth:t,lockPositionId:n,clmmProgram:i,lockOwner:a,lockNftMint:u,lockNftAccount:r,positionNftAccount:l,positionId:d,poolId:c,protocolPosition:f,vaultA:P,vaultB:p,tickArrayLower:g,tickArrayUpper:y,userVaultA:b,userVaultB:A,mintA:T,mintB:x,rewardAccounts:L,exTickArrayBitmap:I}){let C=[...I?[{pubkey:I,isSigner:!1,isWritable:!0}]:[],...L.map(O=>[{pubkey:O.poolRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.ownerRewardVault,isSigner:!1,isWritable:!0},{pubkey:O.rewardMint,isSigner:!1,isWritable:!1}]).flat()],K=[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!0},{pubkey:P,isSigner:!1,isWritable:!0},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!0},{pubkey:b,isSigner:!1,isWritable:!0},{pubkey:A,isSigner:!1,isWritable:!0},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:ie,isSigner:!1,isWritable:!1},{pubkey:_e,isSigner:!1,isWritable:!1},{pubkey:T,isSigner:!1,isWritable:!1},{pubkey:x,isSigner:!1,isWritable:!1},...C];return new oe({keys:K,programId:e,data:Buffer.from(jo)})}};export{We as ClmmInstrument};
//# sourceMappingURL=instrument.mjs.map