@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
2 lines • 118 kB
JavaScript
var jo=Object.defineProperty,Jo=Object.defineProperties;var ei=Object.getOwnPropertyDescriptors;var xt=Object.getOwnPropertySymbols;var Rn=Object.prototype.hasOwnProperty,Ln=Object.prototype.propertyIsEnumerable;var Cn=(s,e,t)=>e in s?jo(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,_=(s,e)=>{for(var t in e||(e={}))Rn.call(e,t)&&Cn(s,t,e[t]);if(xt)for(var t of xt(e))Ln.call(e,t)&&Cn(s,t,e[t]);return s},D=(s,e)=>Jo(s,ei(e));var Ke=(s,e)=>{var t={};for(var n in s)Rn.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&&Ln.call(s,n)&&(t[n]=s[n]);return t};import{PublicKey as oi}from"@solana/web3.js";import{get as On,set as ti}from"lodash";var Qt=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}},Nn={},ni={};function q(s){let e=On(Nn,s);if(!e){let t=On(ni,s);e=new Qt({name:s,logLevel:t}),ti(Nn,s,e)}return e}import{MINT_SIZE as ls,TOKEN_PROGRAM_ID as ms,getTransferFeeConfig as ds,unpackMint as ps}from"@solana/spl-token";var Zt=q("Raydium_accountInfo_util");async function Ne(s,e,t){let{batchRequest:n,commitment:i="confirmed",chunkCount:a=100}=_({batchRequest:!1},t),u=$t(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=$t(l,10);r=(await(await Promise.all(d.map(async f=>await s._rpcBatchRequest(f)))).flat()).map(f=>(f.error&&Zt.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:k}=P;return p.length!==2&&p[1]!=="base64"&&Zt.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(p[0],"base64"),executable:g,lamports:y,owner:new oi(b),rentEpoch:k}}return null})))}else try{r=await Promise.all(u.map(l=>s.getMultipleAccountsInfo(l,i)))}catch(l){l instanceof Error&&Zt.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${l.message}`)}return r.flat()}import je from"bn.js";import iR from"decimal.js";import mi from"big.js";import Rs from"bn.js";import ii from"toformat";var ri=ii,ft=ri;import Rt from"big.js";import si from"bn.js";import ui from"decimal.js-light";import yt from"bn.js";var Mn=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>=Mn||s<=-Mn)&&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"),jt=ft(Rt),bt=ft(ui),ci={[0]:bt.ROUND_DOWN,[1]:bt.ROUND_HALF_UP,[2]:bt.ROUND_UP},li={[0]:Rt.roundDown,[1]:Rt.roundHalfUp,[2]:Rt.roundUp},Q=class{constructor(e,t=new si(1)){this.numerator=Pe(e),this.denominator=Pe(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new Q(this.denominator,this.numerator)}add(e){let t=e instanceof Q?e:new Q(Pe(e));return this.denominator.eq(t.denominator)?new Q(this.numerator.add(t.numerator),this.denominator):new Q(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof Q?e:new Q(Pe(e));return this.denominator.eq(t.denominator)?new Q(this.numerator.sub(t.numerator),this.denominator):new Q(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof Q?e:new Q(Pe(e));return new Q(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof Q?e:new Q(Pe(e));return new Q(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:ci[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.`),jt.DP=e,jt.RM=li[n]||1,new jt(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Es=q("Raydium_amount"),Ds=ft(mi);import{PublicKey as pi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Fn}from"@solana/spl-token";var Lt={chainId:101,address:pi.default.toBase58(),programId:Fn.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:Fn.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 j,SystemProgram as vn,SYSVAR_RENT_PUBKEY as fi}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as yi}from"@solana/spl-token";function et({pubkey:s,isSigner:e=!1,isWritable:t=!0}){return{pubkey:s,isWritable:t,isSigner:e}}var bi=[et({pubkey:yi,isWritable:!1}),et({pubkey:vn.programId,isWritable:!1}),et({pubkey:fi,isWritable:!1})];function _n({publicKey:s,transformSol:e}){let t=Vn(s.toString());if(t instanceof j)return e&&t.equals(Ue)?Me:t;if(e&&t.toString()===Ue.toBase58())return Me;if(typeof t=="string"){if(t===j.default.toBase58())return j.default;try{return new j(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Vn(s){try{return new j(s)}catch{return s}}var Ve=new j("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Ie=new j("SysvarRent111111111111111111111111111111111"),Hs=new j("SysvarC1ock11111111111111111111111111111111"),Ee=new j("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),gi=new j("Sysvar1nstructions1111111111111111111111111"),Pi=vn.programId,Qs=new j("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Zs=new j("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),$s=new j("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),js=new j("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Js=new j("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),eu=new j("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),tu=new j("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),nu=new j("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),ou=new j("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),iu=new j("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),ru=new j("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Me=new j("So11111111111111111111111111111111111111112"),Ue=j.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:_n({publicKey:e}),this.isToken2022=u}equals(e){return this===e?!0:this.mint.equals(e.mint)}},ye=en;ye.WSOL=new en(D(_({},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 Ai from"bn.js";var gu=new Q(new Ai(100));var hu=q("Raydium_price");import{merge as aC}from"lodash";import Ou from"axios";var En={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"},wi=D(_({},En),{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 tc=q("Raydium_Api");import{PublicKey as wm,SystemProgram as km}from"@solana/web3.js";import{AccountLayout as Sm,createAssociatedTokenAccountIdempotentInstruction as Km,TOKEN_PROGRAM_ID as xm,TOKEN_2022_PROGRAM_ID as Cm}from"@solana/spl-token";import{PublicKey as rt,sendAndConfirmTransaction as un,SystemProgram as Si,Transaction as At,TransactionMessage as wt,VersionedTransaction as kt}from"@solana/web3.js";import Ki 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 W={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 Dn,Keypair as qn,PublicKey as ki,Transaction as Un,TransactionMessage as Ti,VersionedTransaction as Gn}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as hi}from"@solana/spl-token";var Wn=q("Raydium_txUtil"),zn=1644;function Nt(s){let e=[],t=[];return s.microLamports&&(e.push(Dn.setComputeUnitPrice({microLamports:s.microLamports})),t.push(W.SetComputeUnitPrice)),s.units&&(e.push(Dn.setComputeUnitLimit({units:s.units})),t.push(W.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&&Wn.logWithError(`no instructions provided: ${s.toString()}`),e.length<1&&Wn.logWithError(`no signers provided:, ${e.toString()}`);let t=new Un;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...s);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<zn}catch{return!1}}function Z(s,e){let[t,n]=ki.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=qn.generate().publicKey.toString()}){let a=new Ti({payerKey:e,recentBlockhash:n,instructions:s}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Gn(a).serialize()).toString("base64").length<zn}catch{return!1}}var Ii=s=>Buffer.isBuffer(s)?s:s instanceof Uint8Array?Buffer.from(s.buffer,s.byteOffset,s.byteLength):Buffer.from(s),Bi=s=>{let e=s.serialize({requireAllSignatures:!1,verifySignatures:!1});s instanceof Gn&&(e=Ii(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 Un&&(t.recentBlockhash||(t.recentBlockhash=hi.toBase58()),t.feePayer||(t.feePayer=qn.generate().publicKey)),e.push(Bi(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 Ki.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(Si.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new rt(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(W.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(D(_({},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 k;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((k=this.owner)!=null&&k.isKeyPair){if(f){let T=[],x=0;for(let L of u){if(++x,x<=p)continue;let B=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(B)}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,B)=>(L.recentBlockhash=b,r[B].length&&L.sign(...r[B]),L));Ge(T);let x=await this.signAllTransactions(T);if(f){let L=0,B=[],C=async()=>{if(!x[L])return;let K=await this.connection.sendRawTransaction(x[L].serialize(),{skipPreflight:y});B.push({txId:K,status:"sent",signedTx:x[L]}),P==null||P([...B]),L++;let O=!1,N=null,v=null,ue=z=>{N!==null&&clearInterval(N),v!==null&&this.connection.removeSignatureListener(v);let E=B.findIndex(te=>te.txId===K);if(E>-1){if(B[E].status==="error"||B[E].status==="success")return;B[E].status=z.err?"error":"success"}P==null||P([...B]),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:1});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:B.map(K=>K.txId),signedTxs:x}}else{let L=[];for(let B=0;B<x.length;B+=1){let C=await this.connection.sendRawTransaction(x[B].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=_(_({},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,k]of Object.entries(c))r[b]=k;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:k=!0,sendAndConfirm:T,notSendToRpc:x}=b||{};if(Ge([p]),(L=this.owner)!=null&&L.isKeyPair){let B=await this.connection.sendTransaction(p,{skipPreflight:k});return T&&await Mt(this.connection,B),{txId:B,signedTx:p}}if(this.signAllTransactions){let B=await this.signAllTransactions([p]);if(this.signers.length)for(let C of B)try{C.sign(this.signers)}catch{}return{txId:x?"":await this.connection.sendTransaction(B[0],{skipPreflight:k}),signedTx:B[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 k of u){let T=await this.connection.sendTransaction(k,{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 k=0,T=[],x=async()=>{if(!b[k])return;let L=await this.connection.sendTransaction(b[k],{skipPreflight:g});T.push({txId:L,status:"sent",signedTx:b[k]}),P==null||P([...T]),k++;let B=!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(B){clearInterval(C);return}try{let v=await this.connection.getTransaction(L,{commitment:"confirmed",maxSupportedTransactionVersion:1});v&&(B=!0,clearInterval(C),O({err:((N=v.meta)==null?void 0:N.err)||null}),console.log("tx status from getTransaction:",L))}catch(v){B=!0,clearInterval(C),console.error("getTransaction timeout:",v,L)}},Ft)),K=this.connection.onSignature(L,N=>{if(B){this.connection.removeSignatureListener(K);return}B=!0,O(N)},"confirmed"),this.connection.getSignatureStatus(L)};return x(),{txIds:[],signedTxs:b}}else{let k=[];for(let T=0;T<b.length;T+=1){let x=await this.connection.sendTransaction(b[T],{skipPreflight:g});k.push(x)}return{txIds:k,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)=>D(_({},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,k=[...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:k})||gt({instructions:g,payer:this.feePayer,signers:k})))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:k})?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:k,skipPreflight:T=!0}=p||{},x=k!=null?k:await it(this.connection,this.blockhashCommitment);if(r.forEach(async(B,C)=>{B.recentBlockhash=x,l[C].length&&B.sign(...l[C])}),Ge(r),(L=this.owner)!=null&&L.isKeyPair){if(g){let B=0,C=[];for(let K of r){if(++B,B<=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 B=>await this.connection.sendRawTransaction(B.serialize(),{skipPreflight:T}))),signedTxs:r}}if(this.signAllTransactions){let B=await this.signAllTransactions(r.slice(b,r.length)),C=[...r.slice(0,b),...B];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=H=>{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=H.err?"error":"success"}y==null||y([...O]),H.err||N()};this.loopMultiTxStatus&&(z=setInterval(async()=>{var H;if(ue){clearInterval(z);return}try{let ge=await this.connection.getTransaction(v,{commitment:"confirmed",maxSupportedTransactionVersion:1});ge&&(ue=!0,clearInterval(z),te({err:((H=ge.meta)==null?void 0:H.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,H=>{if(ue){this.connection.removeSignatureListener(E);return}ue=!0,te(H)},"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=_(_({},this.cluster==="devnet"?await an(this.connection):await rn(this.connection)),i),d=Array.from(new Set([...this.lookupTableAddress,...a])),c=[];for(let B of d)l[B]===void 0&&c.push(new rt(B));let f=await on({connection:this.connection,address:c});for(let[B,C]of Object.entries(f))l[B]=C;let P=t?Nt(t):{instructions:[],instructionTypes:[]},p=await it(this.connection,this.blockhashCommitment),g=this.signers.reduce((B,C)=>D(_({},B),{[C.publicKey.toBase58()]:C}),{}),y=[],b=[],k=[],T=0;if(this.allInstructions.forEach(B=>{let C=[...k,B],K=t?[...P.instructions,...C]:C;if(B!==n[T]&&k.length<u&&(Pt({instructions:K,payer:this.feePayer,lookupTableAddressAccount:l})||Pt({instructions:C,payer:this.feePayer,lookupTableAddressAccount:l})))k.push(B);else{if(k.length===0)throw Error("item ins too big");T+=B===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,...k],payer:this.feePayer,lookupTableAddressAccount:l,recentBlockhash:p})){let N=new wt({payerKey:this.feePayer,recentBlockhash:p,instructions:[...P.instructions,...k]}).compileToV0Message(Object.values(l));y.push(new kt(N))}else{let N=new wt({payerKey:this.feePayer,recentBlockhash:p,instructions:[...k]}).compileToV0Message(Object.values(l));y.push(new kt(N))}b.push(Array.from(new Set(k.map(N=>N.keys.filter(v=>v.isSigner).map(v=>v.pubkey.toString())).flat())).map(N=>g[N]).filter(N=>N!==void 0)),k=[B]}}),k.length>0){let C=[...new Set(k.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,...k],payer:this.feePayer,lookupTableAddressAccount:l,recentBlockhash:p})){let K=new wt({payerKey:this.feePayer,recentBlockhash:p,instructions:[...P.instructions,...k]}).compileToV0Message(Object.values(l));y.push(new kt(K))}else{let K=new wt({payerKey:this.feePayer,recentBlockhash:p,instructions:[...k]}).compileToV0Message(Object.values(l));y.push(new kt(K))}b.push(C)}return(L=this.owner)!=null&&L.signer&&b.forEach(B=>{B.some(C=>C.publicKey.equals(this.owner.publicKey))||B.push(this.owner.signer)}),y.forEach((B,C)=>{B.sign(b[C])}),{builder:this,transactions:y,buildProps:e,signers:b,instructionTypes:this.instructionTypes,execute:async B=>{var ue;let{sequentially:C,onTxUpdate:K,skipTxCount:O=0,recentBlockHash:N,skipPreflight:v=!0}=B||{};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 H=await this.connection.sendTransaction(te,{skipPreflight:v});await Mt(this.connection,H),E.push(H)}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,H=[],ge=async()=>{if(!E[te])return;if(te<O){H.push({txId:"",status:"success",signedTx:E[te]}),K==null||K([...H]),te++,ge();return}let Le=await this.connection.sendTransaction(E[te],{skipPreflight:v});H.push({txId:Le,status:"sent",signedTx:E[te]}),K==null||K([...H]),te++;let dt=!1,Je=null,Kt=null,xn=qe=>{Je!==null&&clearInterval(Je),Kt!==null&&this.connection.removeSignatureListener(Kt);let Oe=H.findIndex($o=>$o.txId===Le);if(Oe>-1){if(H[Oe].status==="error"||H[Oe].status==="success")return;H[Oe].status=qe.err?"error":"success"}K==null||K([...H]),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:1});Oe&&(dt=!0,clearInterval(Je),xn({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,xn(qe)},"confirmed"),this.connection.getSignatureStatus(Le)};return ge(),{txIds:[],signedTxs:E}}else{let te=[];for(let H=0;H<E.length;H+=1){let ge=await this.connection.sendTransaction(E[H],{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 $l,SystemProgram as Jl}from"@solana/web3.js";import nm from"bn.js";import{createCloseAccountInstruction as am,createInitializeAccountInstruction as sm,createTransferInstruction as um,TOKEN_PROGRAM_ID as cm}from"@solana/spl-token";import{Keypair as Vl,PublicKey as El}from"@solana/web3.js";import ql from"bn.js";import{TOKEN_PROGRAM_ID as zl}from"@solana/spl-token";import{PublicKey as Ei}from"@solana/web3.js";import Zn,{isBN as $n}from"bn.js";import{bits as xi,BitStructure as Uc,blob as Ci,Blob as Gc,cstr as zc,f32 as Xc,f32be as Yc,f64 as Hc,f64be as Qc,greedy as Zc,Layout as Ri,ns64 as $c,ns64be as jc,nu64 as Jc,nu64be as el,offset as Li,s16 as tl,s16be as nl,s24 as ol,s24be as il,s32 as Oi,s32be as rl,s40 as al,s40be as sl,s48 as ul,s48be as cl,s8 as ll,seq as Ni,struct as ml,Structure as Mi,u16 as Fi,u16be as dl,u24 as pl,u24be as fl,u32 as vi,u32be as yl,u40 as bl,u40be as gl,u48 as Pl,u48be as Al,u8 as _i,UInt as Vi,union as wl,Union as kl,unionLayoutDiscriminator as Tl,utf8 as hl}from"@solana/buffer-layout";var _t=Ri,Xn=Mi;var ln=Vi;var Yn=_i,ie=Fi;var Vt=vi;var ae=Oi;var Hn=Ni;var V=Ci;var mn=xi,Qn=Li;var Xe=class extends _t{constructor(t,n,i){super(t,i);this.blob=V(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 _t{constructor(t){super(8,t);this._lower=mn(Vt(),!1),this._upper=mn(Vt(),!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 _(_({},i),a)}encode(t,n,i=0){return this._lower.encode(t,n,i)+this._upper.encode(t,n,i+this._lower.span)}};function I(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 Jn(s){return new Xe(16,!0,s)}var Tt=class extends _t{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(V(32),e=>new Ei(e),e=>e.toBuffer(),s)}function ne(s){return new Tt(Yn(),Di,Wi,s)}function Di(s){if(s===0)return!1;if(s===1)return!0;throw new Error("Invalid bool: "+s)}function Wi(s){return s?1:0}function pn(s,e){let t=Vt("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 Xn{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:$n(e)?e.toNumber():new Proxy(e,{get(a,u){if(!n){let r=Reflect.get(a,"count");n=$n(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 Hn(s,i,t)}var Dt=h([m("mint"),m("owner"),o("amount"),J("delegateOption"),m("delegate"),I("state"),J("isNativeOption"),o("isNative"),o("delegatedAmount"),J("closeAuthorityOption"),m("closeAuthority")]);import{PublicKey as wg,SystemProgram as kg}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as hg}from"@solana/spl-token";import{PublicKey as Ui}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Gi}from"@solana/spl-token";function G(s,e,t){return Z([s.toBuffer(),(t!=null?t:Gi).toBuffer(),e.toBuffer()],new Ui("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as F}from"@solana/web3.js";var to=new F("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),no=new F("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),oo=new F("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),fn=new F("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),Dm=new F("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),zi=new F("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),io=new F("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),ro=new F("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),Wm=new F("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),Xi=new F("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ao=new F("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Yi=new F("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Hi=new F("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),so=new F("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),qm=new F("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Qi=new F("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),yn=new F("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Zi=new F("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),Um=new F("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),$i=new F("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),ji=new F("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Ji=new F("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Gm=new F("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),zm=new F("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Xm=new F("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),Ym=new F("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Hm=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 Ng from"decimal.js";import{createAssociatedTokenAccountIdempotentInstruction as ty,TOKEN_2022_PROGRAM_ID as ny,TOKEN_PROGRAM_ID as oy}from"@solana/spl-token";import{PublicKey as ry}from"@solana/web3.js";import sy from"bn.js";import cy from"decimal.js";import{TOKEN_PROGRAM_ID as ud}from"@solana/spl-token";import{PublicKey as dd}from"@solana/web3.js";var er=h([J("mintAuthorityOption"),m("mintAuthority"),o("supply"),I("decimals"),I("isInitialized"),J("freezeAuthorityOption"),m("freezeAuthority")]);import U from"bn.js";var se=new U(1).shln(64);var tr=new U(1).shln(128),Ye=new U(1).shln(64).subn(1),nr=new U(1).shln(128).subn(1),Fe=-443636,ve=443636,He=new U("4295048016"),Qe=new U("79226673521066979257578248091"),uo=new U("59543866431248"),co=new U("184467440737095516"),lo=new U("15793534762490258745"),mo=16,qt=512,we=60,Id=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),Ze=new U(1),Bd=new U(-1);var Sd=new U("18446744073700000000");var or=h([V(8),I("bump"),ie("index"),m("owner"),J("protocolFeeRate"),J("tradeFeeRate"),ie("tickSpacing"),J("fundFeeRate"),R(J(),1),m("fundOwner"),R(o(),3)]),ir=h([J("blockTimestamp"),at("tickCumulative"),R(o(),4)]),go=h([V(8),ne("initialized"),o("recentEpoch"),ie("observationIndex"),m("poolId"),R(ir,fo,"observations"),R(o(),4)]),rr=h([ie("filterPeriod"),ie("decayPeriod"),ie("reductionFactor"),J("dynamicFeeControl"),J("maxVolatilityAccumulator"),ae("tickSpacingIndexReference"),J("volatilityReference"),J("volatilityAccumulator"),o("lastUpdateTimestamp"),R(I(),46)]),ar=h([I("state"),o("openTime"),o("endTime"),o("lastUpdateTime"),M("emissionsPerSecondX64"),o("totalEmissioned"),o("claimed"),m("mint"),m("vault"),m("creator"),M("growthGlobalX64")]),bn=h([V(8),I("bump"),m("configId"),m("creator"),m("mintA"),m("mintB"),m("vaultA"),m("vaultB"),m("observationId"),I("mintDecimalsA"),I("mintDecimalsB"),ie("tickSpacing"),M("liquidity"),M("sqrtPriceX64"),ae("tickCurrent"),J(),M("feeGrowthGlobalX64A"),M("feeGrowthGlobalX64B"),o("protocolFeesTokenA"),o("protocolFeesTokenB"),R(M(),4),I("status"),I("feeOn"),V(6),R(ar,ht,"rewardInfos"),V(8*16,"tickArrayBitmap"),R(o(),4),o("fundFeesTokenA"),o("fundFeesTokenB"),o("startTime"),o("recentEpoch"),rr.replicate("dynamicFeeInfo"),R(o(),46)]),sr=h([M("growthInsideLastX64"),o("rewardAmountOwed")]),ur=h([V(8),I("bump"),m("nftMint"),m("poolId"),ae("tickLower"),ae("tickUpper"),M("liquidity"),M("feeGrowthInsideLastX64A"),M("feeGrowthInsideLastX64B"),o("tokenFeesOwedA"),o("tokenFeesOwedB"),R(sr,ht,"rewardInfos"),o("recentEpoch"),R(o(),7)]),Rd=h([V(8),I("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)]),cr=h([ae("tick"),Jn("liquidityNet"),M("liquidityGross"),M("feeGrowthOutsideX64A"),M("feeGrowthOutsideX64B"),R(M(),ht,"rewardGrowthsOutsideX64"),o("orderPhase"),o("ordersAmount"),o("partFilledOrdersRemaining"),M("unfilledRatioX64"),R(J(),3)]),Po=h([V(8),m("poolId"),ae("startTickIndex"),R(cr,we,"ticks"),I("initializedTickCount"),o("recentEpoch"),R(I(),107)]),lr=h([V(8),I("bump"),R(m(),yo,"operationOwners"),R(m(),bo,"whitelistMints")]),mr=h([V(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([V(8),m("poolId"),V(8*8*ut,"positiveTickArrayBitmap"),V(8*8*ut,"negativeTickArrayBitmap")]),Ld=h([V(8),ie("index"),ie("filterPeriod"),ie("decayPeriod"),ie("reductionFactor"),J("dynamicFeeControl"),J("maxVolatilityAccumulator"),R(o(),8)]),dr=h([V(8),m("wallet"),I("nonceIndex"),o("orderNonce"),R(o(),4)]),Od=h([o(),I("bump"),m("owner"),m("poolId"),m("positionId"),m("nftAccount"),R(o(),8)]),pr=h([V(8),I("bump"),m("lockOwner"),m("poolId"),m("positionId"),m("nftAccount"),m("lockNftMint"),o("recentEpoch"),R(o(),8)]);import fr 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 _d=new fr(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 lp from"bn.js";import le from"bn.js";import lt from"decimal.js";import Dd from"bn.js";function gn(s){let e=Buffer.alloc(2);return e.writeUInt16LE(s),e}function Pn(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 Qd=Buffer.from("amm_config","utf8"),An=Buffer.from("pool","utf8"),Io=Buffer.from("pool_vault","utf8"),yr=Buffer.from("pool_reward_vault","utf8"),Bo=Buffer.from("position","utf8"),br=Buffer.from("tick_array","utf8"),gr=Buffer.from("operation","utf8"),Pr=Buffer.from("pool_tick_array_bitmap_extension","utf8"),Ar=Buffer.from("observation","utf8"),Zd=Buffer.from("support_mint","utf8"),$d=Buffer.from("dynamic_fee_config","utf8"),wr=Buffer.from("permission","utf8");function So(s,e,t,n){return Z([An,e.toBuffer(),t.toBuffer(),n.toBuffer()],s)}function Ko(s,e){return Z([wr,e.toBuffer()],s)}function xo(s,e,t,n,i){return Z([An,e.toBuffer(),t.toBuffer(),n.toBuffer(),gn(i)],s)}function ct(s,e,t){return Z([Io,e.toBuffer(),t.toBuffer()],s)}function Co(s,e,t){return Z([yr,e.toBuffer(),t.toBuffer()],s)}function ce(s,e,t){return Z([br,e.toBuffer(),ho(t)],s)}function _e(s,e,t,n){return Z([Bo,e.toBuffer(),Pn(t),Pn(n)],s)}function Be(s,e){return Z([Bo,e.toBuffer()],s)}function $e(s){return Z([Buffer.from("metadata","utf8"),Ee.toBuffer(),s.toBuffer()],Ee)}function Ut(s){return Z([gr],s)}function de(s,e){return Z([Pr,e.toBuffer()],s)}function wn(s,e){return Z([Ar,e.toBuffer()],s)}var Ro=Buffer.from("locked_position","utf8");function kn(s,e){return Z([Ro,e.toBuffer()],s)}function Tn(s,e){return Z([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=$.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}},$=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(Ze),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(He)&&e.lte(Qe)))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 k=a.shrn(127).toNumber();a=a.shrn(63+k),k&&(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 yp from"bn.js";import gp from"decimal.js";import{PublicKey as Oo}from"@solana/web3.js";import Br from"bn.js";import{TOKEN_2022_PROGRAM_ID as mf,TOKEN_PROGRAM_ID as df}from"@solana/spl-token";import bf from"decimal.js";import Xp from"bn.js";import Np 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=$.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=$.getTickArrayStartIndex(ve,e)+$.tickCount(e)),n<Fe&&(n=$.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=D(_({},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 Br(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),k=ke(y,p.emissionsPerSecondX64,i),T,x=p.totalEmissioned.add(b);if(x.lte(Ye))T=x;else{let B=Ye.sub(p.totalEmissioned);T=Ye,k=ke(B,se,i)}let L=p.growthGlobalX64.add(k);u.push(D(_({},p),{growthGlobalX64:L,totalEmissioned:T,lastUpdateTime:g}))}return u}};import Kf from"bn.js";import{PublicKey as hn}from"@solana/web3.js";var Lr=h([I("instruction")]),Or=h([I("instruction")]),Nr=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")]),Mr=h([o("state"),o("nonce"),m("lpVault"),m("rewardVault"),m(),m(),o(),o(),o("totalReward"),M("perShareReward"),o("lastSlot"),o("perSlotReward")]),Fr=h([o("state"),o("nonce"),m("lpVault"),m("rewardVaultA"),o("totalRewardA"),M("perShareRewardA"),o("perSlotRewardA"),I("option"),m("rewardVaultB"),V(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(Nr,5,"rewardInfos"),m("creator"),m(),R(o(),32,"padding")]),_r=new Proxy(Mr,{get(s,e,t){return e==="decode"?(...n)=>{let i=s.decode(...n);return D(_({},i),{version:3,rewardInfos:[{rewardVault:i.rewardVault,totalReward:i.totalReward,perSlotReward:i.perSlotReward,perShareReward:i.perShareReward}]})}:Reflect.get(s,e,t)}}),Vr=new Proxy(Fr,{get(s,e,t){return e==="decode"?(...n)=>{let i=s.decode(...n);return D(_({},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 D(_({},i),{version:6,rewardInfos:i.rewardInfos.map(a=>{var u;return D(_({},a),{rewardType:((u=Object.entries(St).find(r=>String(r[1])===a.rewardType.toString()))!=null?u:["Standard SPL"])[0]})})})}:Reflect.get(s,e,t)}}),Er=h([o("isSet"),o("rewardPerSecond"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardType")]),Dr=h([I("instruction"),o("nonce"),R(Er,5,"rewardTimeInfo")]),Wr=h([I("instruction"),o("rewardReopenTime"),o("rewardEndTime"),o("rewardPerSecond")]),qr=h([I("instruction"),o("isSet"),o("rewardPerSecond"),o("rewardOpenTime"),o("rewardEndTime"),o("rewardType")]),Vy=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)]),Ey=h([o("state"),m("id"),m("owner"),o("deposited"),R(o(),2,"rewardDebts")]),Ur=h([o("state"),m("id"),m("owner"),o("deposited"),R(M(),2,"rewardDebts"),R(o(),17)]),Gr=h([o(),o("state"),m("id"),m("owner"),o("deposited"),R(M(),5,"rewardDebts"),R(o(),16)]),zr=h([I("instruction"),o("amount")]),Xr=h([m("mint"),m("grantAuthority"),o("baselineVoteWeightScaledFactor"),o("maxExtraLockupVoteWeightScaledFactor"),o("lockupSaturationSecs"),jn("digitShift"),R(I(),7,"reserved1"),R(o(),7,"reserved2")]),Yr=h([V(8),m("governanceProgramId"),m("realm"),m("realmGoverningTokenMint"),m("realmAuthority"),R(I(),32,"reserved1"),R(Xr,4,"votingMints"),at("timeOffset"),I("bump"),R(I(),7,"reserved2"),R(o(),11,"reserved3")]),Hr=h([at("startTime"),at("endTime"),I("kind"),R(I(),15,"reserved")]),Qr=h([R(Hr,1,"lockup"),o("amountDeposited_native"),o("amountInitiallyLockedNative"),ne("isUsed"),ne("allowClawback"),I("votingMintConfigIdx"),R(I(),29,"reserved")]),Zr=h([V(8),m("voterAuthority"),m("registrar"),R(Qr,32,"deposits"),I("voterBump"),I("voterWweightRecordBump"),R(I(),94,"reserved")]);import{NATIVE_MINT as Hy}from"@solana/spl-token";var Qy=q("Raydium_farm_config"),$r=new hn("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),jr=new hn("FrspKwj8i3pNmKwXreTveC4fu7KL5ZbGeXdZBe2XViu1");var Zy=new hn("3TRTX4dXUpp2eqxi3tvQDFYUV7SdDJjcPE3Y4mbtftaX");var St={"Standard SPL":0,"Option tokens":1},_o={[to.toString()]:3,[no.toString()]:4,[oo.toString()]:5,[fn.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 Fb,SystemProgram as vb,SYSVAR_CLOCK_PUBKEY as _b,SYSVAR_RENT_PUBKEY as Vb,TransactionInstruction as Eb}from"@solana/web3.js";import Wb from"bn.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as Ub,createAssociatedTokenAccountIdempotentInstruction as Gb,TOKEN_PROGRAM_ID as zb}from"@solana/spl-token";import mb from"bn.js";import{PublicKey as nb}from"@solana/web3.js";import ib from"bn.js";var Ib=q("Raydium.farm.util");var ng=q("Raydium_farm_instruction"),og={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 Gg from"bn.js";import{PublicKey as jA}from"@solana/web3.js";import{AccountLayout as tw,MintLayout as nw,NATIVE_MINT as ow,TOKEN_PROGRAM_ID as rw}from"@solana/spl-token";import Yg from"bn.js";import Eo from"bn.js";var aa=new Eo(25),sa=new Eo(1e4);import{ASSOCIATED_TOKEN_PROGRAM_ID as yP,TOKEN_PROGRAM_ID as bP}from"@solana/spl-token";import{PublicKey as PP,SystemProgram as AP,SYSVAR_RENT_PUBKEY as wP,TransactionInstruction as kP}from"@solana/web3.js";import CP from"bn.js";var ua=h([I("instruction"),o("amountIn"),o("minAmountOut")]),ca=h([I("instruction"),o("maxAmountIn"),o("amountOut")]),mP=h([I("instruction"),I("nonce")]),la=h([I("instruction"),I("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")]),dP=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")]),ma=h([I("instruction"),o("baseAmountIn"),o("quoteAmountIn"),o("fixedSide"),o("otherAmountMin")]),da=h([I("instruction"),o("lpAmount"),o("baseAmountMin"),o("quoteAmountMin")]);var pa=h([o("fee")]);var OP=q("Raydium_liquidity_instruction");var fa=5e4,ya=h([o("x"),o("y"),o("price")]),vP=h([o("accountType"),o("status"),o("multiplier"),o("validDataCount"),R(ya,fa,"DataElement")]);import{PublicKey as HP}from"@solana/web3.js";import ZP from"decimal.js";import{TOKEN_PROGRAM_ID as jP}from"@solana/spl-token";import{PublicKey as DP}from"@solana/web3.js";var UP=q("Raydium_liquidity_serum");import Bw from"bn.js";import Kw from"decimal.js";import{TOKEN_PROGRAM_ID as BA}from"@solana/spl-token";import{PublicKey as KA}from"@solana/web3.js";import CA from"bn.js";import{SystemProgram as dA,SYSVAR_RENT_PUBKEY as pA,Transaction as fA,TransactionInstruction as yA}from"@solana/web3.js";import{createInitializeAccountInstruction as gA,TOKEN_PROGRAM_ID as PA}from"@solana/spl-token";function ba(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 ga=h([V(5),ba("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"),V(7)]);import{PublicKey as tT}from"@solana/web3.js";import{AccountLayout as oT,NATIVE_MINT as iT,TOKEN_2022_PROGRAM_ID as rT,TOKEN_PROGRAM_ID as aT,createAssociatedTokenAccountIdempotentInstruction as sT}from"@solana/spl-token";import $w from"bn.js";import Ia from"bn.js";var _w=new Ia(0);import Uw from"bn.js";import Ba from"bn.js";var Ce=new Ba(1e6);import yT from"bn.js";import gT from"decimal.js";import{PublicKey as gk,TransactionInstruction as Pk,Keypair as wk,SystemProgram as kk}from"@solana/web3.js";import{ASSOCIATED_TOKEN_PROGRAM_ID as hk,TOKEN_2022_PROGRAM_ID as Ik,TOKEN_PROGRAM_ID as Bk}from"@solana/spl-token";var nk=Buffer.from("vault_and_lp_mint_auth_seed","utf8"),ok=Buffer.from("amm_config","utf8"),ik=Buffer.from("pool","utf8"),rk=Buffer.from("pool_lp_mint","utf8"),ak=Buffer.from("pool_vault","utf8"),sk=Buffer.from("observation","utf8"),uk=Buffer.from("permission","utf8"),ck=Buffer.from("support_mint","utf8"),lk=Buffer.from("creator_fee_share","utf8");var mk=Buffer.from("locked_liquidity","utf8");var Ok=q("Raydium_cpmm"),Nk={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 xa=h([V(8),I("bump"),ne("disableCreatePool"),ie("index"),o("tradeFeeRate"),o("protocolFeeRate"),o("fundFeeRate"),o("createPoolFee"),m("protocolOwner"),m("fundOwner"),o("creatorFeeRate"),o("creatorFeeShareRate"),R(o(),14)]),Wo=h([V(8),m("configId"),m("poolCreator"),m("vaultA"),m("vaultB"),m("mintLp"),m("mintA"),m("mintB"),m("mintProgramA"),m("mintProgramB"),m("observationId"),I("bump"),I("status"),I("lpDecimals"),I("mintDecimalA"),I("mintDecimalB"),o("lpAmount"),o("protocolFeesMintA"),o("protocolFeesMintB"),o("fundFeesMintA"),o("fundFeesMintB"),o("openTime"),o("epoch"),I("feeOn"),ne("enableCreatorFee"),R(I(),6),o("creatorFeesMintA"),o("creatorFeesMintB"),R(o(),28)]),vk=h([V(8),m("configId"),R(o(),30)]),_k=h([V(8),I("bump"),m("creator"),m("ammConfig"),o("shareRate"),R(o(),8)]);import{PublicKey as CK,SystemProgram as RK}from"@solana/web3.js";import{createTransferInstruction as OK,TOKEN_PROGRAM_ID as NK,TOKEN_2022_PROGRAM_ID as MK,createAssociatedTokenAccountIdempotentInstruction as FK,createSyncNativeInstruction as _K,createTransferCheckedInstruction as VK}from"@solana/spl-token";import Qa from"bn.js";import WK 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 La from"bn.js";var lh=Buffer.from("vault_auth_seed","utf8"),mh=Buffer.from("global_config","utf8"),dh=Buffer.from("pool_vesting","utf8"),ph=Buffer.from("platform_config","utf8"),fh=Buffer.from("platform_fee_vault_auth_seed","utf8"),yh=Buffer.from("creator_fee_vault_auth_seed","utf8"),bh=Buffer.from("platform_global_access","utf8"),gh=Buffer.from("platform_allow_config","utf8"),Ph=Buffer.from("platform_curve_rule","utf8");var Fh={initialize:Buffer.from([175,175,109,31,13,152,155,237]),initializeV2:Buffer.from([67,153,175,39,218,16,38,32]),buyExactIn:Buffer.from([250,234,13,123,213,156,19,236]),buyExactOut:Buffer.from([24,211,116,40,105,3,153,56]),sellExactIn:Buffer.from([149,39,222,155,211,124,152,26]),sellExactOut:Buffer.from([95,200,71,34,8,9,11,166]),createVestingAccount:Buffer.from([129,178,2,13,217,172,230,218]),claimVestedToken:Buffer.from([49,33,104,30,189,157,79,35]),createPlatformConfig:Buffer.from([176,90,196,175,253,113,220,20]),claimPlatformFee:Buffer.from([156,39,208,135,76,237,61,72]),updatePlaformConfig:Buffer.from([195,60,76,129,146,45,67,143]),initializeWithToken2022:Buffer.from([37,190,126,222,44,154,171,17]),claimPlatformFeeFromVault:Buffer.from([117,241,198,168,248,218,80,29]),claimCreatorFee:Buffer.from([26,97,138,203,132,171,141,252]),createPlatformVestingAccount:Buffer.from([146,71,173,69,98,19,15,106]),createPlatformAllowConfig:Buffer.from([69,71,168,7,214,250,107,102]),closePlatformAllowConfig:Buffer.from([82,205,36,216,16,6,240,215]),createPlatformCurveRule:Buffer.from([148,71,180,136,122,144,59,21]),updatePlatformCurveRule:Buffer.from([90,100,206,196,54,117,120,139]),removePlatformCurveRule:Buffer.from([236,77,154,138,32,145,127,219]),closePlatformCurveRule:Buffer.from([194,114,82,45,136,88,169,159])};var vh=new La("18446744073709551615");var Oa=h([o(),o("epoch"),I("curveType"),ie("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"),I("bump"),I("status"),I("mintDecimalsA"),I("mintDecimalsB"),I("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"),I("mintProgramFlag"),I("cpmmCreatorFeeOn"),o("platformVestingShare"),R(I(),54)]),Dh=h([o(),o("epoch"),m("poolId"),m("beneficiary"),o("claimedAmount"),o("tokenShareAmount"),R(o(),8)]),Fa=h([I("migrateType"),I("migrateCpmmFeeOn"),o("supply"),o("totalSellA"),o("totalFundRaisingB"),o("totalLockedAmount"),o("cliffPeriod"),o("unlockPeriod")]),Wh=h([o("epoch"),I("index"),m("configId"),Fa.replicate("bondingCurveParam"),R(o(),50)]),Uo=h([o(),o("epoch"),m("platformClaimFeeWallet"),m("platformLockNftWallet"),o("platformScale"),o("creatorScale"),o("burnScale"),o("feeRate"),R(I(),64,"name"),R(I(),256,"web"),R(I(),256,"img"),m("cpConfigId"),o("creatorFeeRate"),m("transferFeeExtensionAuth"),m("platformVestingWallet"),o("platformVestingScale"),m("platformCpCreator"),I("restrictGlobalConfig"),I("restrictCurveParam"),m("curveRuleManager"),R(I(),78)]),va=h([I("field"),I("op"),M("value")]),_a=h([ie("groupId"),o("epoch"),pn(va,"constraints")]),Va=h([o(),I("bump"),I("version"),m("platformId"),m("configId"),o("epoch"),R(o(),8),pn(_a,"groups")]);import{TOKEN_2022_PROGRAM_ID as Gh,TOKEN_PROGRAM_ID as zh}from"@solana/spl-token";import Ea from"bn.js";var oI=new Ea(1e6);import sI from"bn.js";import cI from"decimal.js";import WI from"bn.js";import UI from"decimal.js";import yI from"bn.js";import gI from"decimal.js";import KI from"bn.js";import CI from"decimal.js";import Xo from"bn.js";import Bn from"decimal.js";var Xt=class{static _multipler(e){return new Bn(10).pow(e)}static getPrice({priceX64:e,decimalA:t,decimalB:n}){return new Bn(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 Xo(i.mul(this._Q64).toFixed(0))}};Xt._Q64=new Bn(new Xo(1).shln(64).toString());import{NATIVE_MINT as iS,TOKEN_2022_PROGRAM_ID as rS,TOKEN_PROGRAM_ID as aS,createAssociatedTokenAccountIdempotentInstruction as uS,createSyncNativeInstruction as cS,getTransferFeeConfig as lS,unpackMint as mS}from"@solana/spl-token";import me from"bn.js";import{PublicKey as Xa,SystemProgram as fS}from"@solana/web3.js";import kS from"decimal.js";var TS={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 Xa("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),vestingSchedule:{totalLockedAmount:new me(0),cliffPeriod:new me(0),unlockPeriod:new me(0),startTime:new me(0),totalAllocatedShare:new me(0)}},hS=new me(1e4);var Ya={[io.toBase58()]:3};var Ha=h([V(5),V(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"),V(7)]);import{PublicKey as YS}from"@solana/web3.js";var jS=q("Serum");import{ASSOCIATED_TOKEN_PROGRAM_ID as sK,TOKEN_2022_PROGRAM_ID as uK,TOKEN_PROGRAM_ID as cK}from"@solana/spl-token";import{PublicKey as mK,SystemProgram as dK,TransactionInstruction as pK}from"@solana/web3.js";import yK from"bn.js";var gx=new Qa(0);import{PublicKey as Za,Transaction as Sn,TransactionInstruction as $a}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as ja}from"@solana/spl-token";import Yo from"bn.js";var be=class extends Ae{static getPdaPoolId(e,t){return Z([be.SEED_CONFIG.pool.id,t.toBuffer()],e)}static getPdaOwnerId(e,t,n,i){return Z([be.SEED_CONFIG.owner.id,t.toBuffer(),n.toBuffer(),Buffer.from(new Yo(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 k=be.POOL_LAYOUT.decode(y.data),T=be.OWNER_LAYOUT.decode(b.data),x=k.openTime.toNumber(),L=k.endTime.toNumber(),B=T.tokenInfo.map(O=>O.debtAmount.gt(new Yo(0))).filter(O=>!O).length!==3,C=a>x&&a<L&&k.status===1,K=B&&C;d.push({programId:t,poolId:p,ammId:k.ammId,ownerAccountId:g,snapshotLpAmount:T.lpAmount,project:be.VERSION_PROJECT[f],openTime:x,endTime:L,canClaim:K,canClaimErrorType:B?C?void 0:"outOfOperationalTime":"alreadyClaimIt",tokenInfo:k.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 Sn().add(...d.slice(0,i.AllTxData.instructions.length-1)),signer:l},{transaction:new Sn().add(...d.slice(i.AllTxData.instructions.length-1)),signer:[]},{transaction:new Sn().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:ja,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 $a({keys:a,programId:e,data:r})}},Se=be;Se.CLAIMED_NUM=3,Se.POOL_LAYOUT=h([V(8),I("bump"),I("status"),o("openTime"),o("endTime"),m("ammId"),R(h([I("mintDecimals"),m("mintAddress"),m("mintVault"),o("perLpLoss"),o("totalClaimedAmount")]),be.CLAIMED_NUM,"tokenInfo"),R(o(),10,"padding")]),Se.OWNER_LAYOUT=h([V(8),I("bump"),I("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 Za(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 vx,MintLayout as _x,TOKEN_2022_PROGRAM_ID as Vx,TOKEN_PROGRAM_ID as Ex,unpackMint as Dx}from"@solana/spl-token";var fR=new je(2),yR=new je(3),bR=new je(5),di=new je(10),gR=new je(100),PR=new je(1e3),AR=new je(1e4);function $t(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 Kn,TOKEN_2022_PROGRAM_ID as re,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 Ht from"bn.js";import{sha256 as Ja}from"js-sha256";function pe(s){let e=`global:${s}`;return Buffer.from(Ja.digest(e)).slice(0,8)}go.span;var Ho=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")},Qo=[188,37,179,131,82,150,84,73],Zo=[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}))],k=Buffer.alloc(y.span);y.encode({sqrtPriceX64:p,startTime:X},k);let T=Buffer.from([...fe.createPool,...k]);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 k=h([M("sqrtPriceX64"),I("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(B=>({pubkey:B,isSigner:!1,isWritable:!1})),...b?[{pubkey:b,isSigner:!1,isWritable:!1}]:[]],x=Buffer.alloc(k.span);k.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,k,T,x){let L=h([M("sqrtPriceX64"),I("collectFeeOn"),ne("enableDynamicFee"),ie("seedIndex")]),B=[{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:k},C);let K=Buffer.from([...fe.createPermissionedPool,...C]);return new oe({keys:B,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([I("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:re,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?re: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,k,T,x,L,B,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"),I("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:Kn,isSigner:!1,isWritable:!1},{pubkey:Ee,isSigner:!1,isWritable:!1},{pubkey:re,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:k,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:B,liquidity:C,amountMaxA:K,amountMaxB:O,withMetadata:N,optionBaseFlag:v!==null?1:0,baseFlag:v!=null?v:!1},te);let H=Buffer.from([...fe.openPositionV2,...te]);return new oe({keys:E,programId:e,data:H})}static increaseLiquidityV2Instruction(e,t,n,i,a,u,r,l,d,c,f,P,p,g,y,b,k,T,x){let L=h([M("liquidity"),o("amountMaxA"),o("amountMaxB"),I("optionBaseFlag"),ne("baseFlag")]),B=[{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:re,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:k,optionBaseFlag:T!==null?1:0,baseFlag:T!=null?T:!1},C);let K=Buffer.from([...fe.increaseLiquidityV2,...C]);return new oe({keys:B,programId:e,data:K})}static decreaseLiquidityV2Instruction(e,t,n,i,a,u,r,l,d,c,f,P,p,g,y,b,k,T,x){let L=h([M("liquidity"),o("amountMinA"),o("amountMinB")]),B=[{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:re,isSigner:!1,isWritable:!1},{pubkey:Ve,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:k,amountMinB:T},C);let K=Buffer.from([...fe.decreaseLiquidityV2,...C]);return new oe({keys:B,programId:e,data:K})}static swapV2Instruction(e,t,n,i,a,u,r,l,d,c,f,P,p,g,y,b,k){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:re,isSigner:!1,isWritable:!1},{pubkey:Ve,isSigner:!1,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},...k?[{pubkey:k,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 B=Buffer.from([...fe.swapV2,...L]);return new oe({keys:x,programId:e,data:B})}static collectRemainingRewardsInstruction(e,t,n,i,a,u,r){let l=h([I("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:re,isSigner:!1,isWritable:!1},{pubkey:Ve,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,k,T,x,L,B,C,K,O,N,v){let ue=h([ae("tickLower"),ae("tickUpper"),ae("tickArrayLowerStart"),ae("tickArrayUpperStart"),M("liquidity"),o("amountMaxA"),o("amountMaxB"),ne("withMetadata"),I("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:Kn,isSigner:!1,isWritable:!1},{pubkey:re,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:k,tickUpper:T,tickArrayLowerStart:x,tickArrayUpperStart:L,liquidity:B,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,k,T){let x=h([I("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}]:[]],B=Buffer.alloc(x.span);x.encode({nonceIndex:g,zeroForOne:y,tickIndex:b,amount:k},B);let C=Buffer.from([...fe.openLimitOrder,...B]);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:re,isSigner:!1,isWritable:!1},...g?[{pubkey:g,isSigner:!1,isWritable:!0}]:[]],k=Buffer.alloc(y.span);y.encode({amount:P,amountMin:p},k);let T=Buffer.from([...fe.decreaseLimitOrder,...k]);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}=wn(t,p),{publicKey:y}=ct(t,p,d),{publicKey:b}=ct(t,p,c),k=de(t,p).publicKey,T=[this.createPoolInstruction(t,p,n,u,g,d,y,f,c,b,P,k,r,l)];return{signers:[],instructions:T,instructionTypes:[W.CreateAccount,W.ClmmCreatePool],address:{poolId:p,observationId:g,exBitmapAccount:k,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:k}=wn(t,y),{publicKey:T}=ct(t,y,f),{publicKey:x}=ct(t,y,P),L=de(t,y).publicKey,B=[this.createPoolInstruction(t,y,n,u,k,f,T,p,P,x,g,L,r,l)];return{signers:[],instructions:B,instructionTypes:[W.CreateAccount,W.ClmmCreatePool],address:{poolId:y,observationId:k,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 k=$.getTickArrayStartIndex(i,e.config.tickSpacing),T=$.getTickArrayStartIndex(a,e.config.tickSpacing),{publicKey:x}=ce(g,y,k),{publicKey:L}=ce(g,y,T),{publicKey:B}=P?G(n.wallet,b,re):G(n.wallet,b,Y),{publicKey:C}=$e(b),{publicKey:K}=Be(g,b),{publicKey:O}=_e(g,y,i,a),N=P?this.openPositionWithToken22NftInstruction(g,n.feePayer,y,n.wallet,b,B,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,k,T,u,r,l,c==="create",d&&d==="MintA",he.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[k,T]})?de(g,y).publicKey:void 0):this.openPositionV2Instruction(g,n.feePayer,y,n.wallet,b,B,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,k,T,u,r,l,c==="create",null,he.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[k,T]})?de(g,y).publicKey:void 0);return{signers:p,instructions:[N],instructionTypes:[W.ClmmOpenPosition],lookupTableAddress:t.lookupTableAccount?[t.lookupTableAccount]:[],address:{nftMint:b,tickArrayLower:x,tickArrayUpper:L,positionNftAccount:B,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 k=$.getTickArrayStartIndex(i,e.config.tickSpacing),T=$.getTickArrayStartIndex(a,e.config.tickSpacing),{publicKey:x}=ce(g,y,k),{publicKey:L}=ce(g,y,T),{publicKey:B}=P?G(n.wallet,b,re):G(n.wallet,b,Y),{publicKey:C}=$e(b),{publicKey:K}=Be(g,b),{publicKey:O}=_e(g,y,i,a),N=P?this.openPositionWithToken22NftInstruction(g,n.feePayer,y,n.wallet,b,B,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,k,T,d,!u||u==="MintA"?r:l,!u||u==="MintA"?l:r,c==="create",u&&u==="MintA",he.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[k,T]})?de(g,y).publicKey:void 0):this.openPositionV2Instruction(g,n.feePayer,y,n.wallet,b,B,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,k,T,X,u==="MintA"?r:l,u==="MintA"?l:r,c==="create",u==="MintA",he.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[k,T]})?de(g,y).publicKey:void 0);return{address:{nftMint:b,tickArrayLower:x,tickArrayUpper:L,positionNftAccount:B,metadataAccount:C,personalPosition:K,protocolPosition:O},instructions:[N],signers:p,instructionTypes:[W.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)],k=$.getTickArrayStartIndex(i,e.config.tickSpacing),T=$.getTickArrayStartIndex(a,e.config.tickSpacing),{publicKey:x}=ce(y,b,k),{publicKey:L}=ce(y,b,T),{publicKey:B}=P?G(n.wallet,p,re):G(n.wallet,p,Y),{publicKey:C}=$e(p),{publicKey:K}=Be(y,p),{publicKey:O}=_e(y,b,i,a),N=P?this.openPositionWithToken22NftInstruction(y,n.wallet,b,n.wallet,p,B,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,k,T,u,r,l,c==="create",d&&d==="MintA",he.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[k,T]})?de(y,b).publicKey:void 0):this.openPositionV2Instruction(y,n.wallet,b,n.wallet,p,B,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,k,T,u,r,l,c==="create",null,he.isOverflowDefaultTickarrayBitmap({tickSpacing:e.config.tickSpacing,tickIndexs:[k,T]})?de(y,b).publicKey:void 0);return{address:{nftMint:p,tickArrayLower:x,tickArrayUpper:L,positionNftAccount:B,metadataAccount:C,personalPosition:K,protocolPosition:O},instructions:[N],signers:g,instructionTypes:[W.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,re).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:[W.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=$.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),P=$.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,re):G(i.wallet,n.nftMint,Y),{publicKey:b}=Be(d,n.nftMint),{publicKey:k}=_e(d,c,n.tickLower,n.tickUpper),T=this.increaseLiquidityV2Instruction(d,i.wallet,y,b,c,k,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:k},signers:[],instructions:[T],instructionTypes:[W.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=$.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),P=$.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,re):G(i.wallet,n.nftMint,Y),{publicKey:b}=Be(d,n.nftMint),{publicKey:k}=_e(d,c,n.tickLower,n.tickUpper);return{address:{tickArrayLower:p,tickArrayUpper:g,positionNftAccount:y,personalPosition:b,protocolPosition:k},instructions:[this.increaseLiquidityV2Instruction(d,i.wallet,y,b,c,k,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:[W.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=$.getTickArrayStartIndex(n.tickLower,e.config.tickSpacing),p=$.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,re):G(i.wallet,n.nftMint,l),{publicKey:k}=Be(c,n.nftMint),{publicKey:T}=_e(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 B=[],C=this.decreaseLiquidityV2Instruction(c,i.wallet,b,k,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 B.push(C),{address:{tickArrayLower:g,tickArrayUpper:y,positionNftAccount:b,personalPosition:k,protocolPosition:T},signers:[],instructions:B,instructionTypes:[W.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(),k=[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:k,instructionTypes:[W.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(),k=[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:k,instructionTypes:[W.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 Ht(i.openTime),new Ht(i.endTime),i.emissionsPerSecondX64)];return{address:{poolRewardVault:r,operationId:l},signers:[],instructions:d,instructionTypes:[W.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)&&Ho.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 Ht(i.openTime),new Ht(i.endTime),i.emissionsPerSecondX64)];return{address:{rewardVault:l,operationId:c},signers:[],instructions:f,instructionTypes:[W.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)&&Ho.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:[W.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 k=Yt.generate();d.push(k),c=k.publicKey}let f=r?G(a,u,re).publicKey:G(a,u,Y).publicKey,{publicKey:P}=Be(n,u),p=Tn(e,c).publicKey,g=G(a,c,Y).publicKey,y=$e(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?re:Y).publicKey,positionNftProgram:r?re:Y});return{address:{positionId:P,lockPositionId:p,lockNftAccount:g,lockNftMint:c,positionNftAccount:f,metadataAccount:y},instructions:[b],signers:d,instructionTypes:[W.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:Kn,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}],k=h([ne("withMetadata")]),T=Buffer.alloc(k.span);k.encode({withMetadata:y},T);let x=Buffer.from([...Qo,...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:kn(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(Qo)})}static harvestLockPositionInstruction(e){let[t,n]=[new S(e.poolKeys.programId),new S(e.poolKeys.id)],i=$.getTickArrayStartIndex(e.ownerPosition.tickLower,e.poolKeys.config.tickSpacing),a=$.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}=_e(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:kn(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:re,isSigner:!1,isWritable:!1},{pubkey:Ve,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(Zo)})}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:k,mintA:T,mintB:x,rewardAccounts:L,exTickArrayBitmap:B}){let C=[...B?[{pubkey:B,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:k,isSigner:!1,isWritable:!0},{pubkey:Y,isSigner:!1,isWritable:!1},{pubkey:re,isSigner:!1,isWritable:!1},{pubkey:Ve,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(Zo)})}};export{We as ClmmInstrument};
//# sourceMappingURL=instrument.mjs.map