@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
1 lines • 201 kB
JavaScript
var nr=Object.defineProperty,or=Object.defineProperties;var ir=Object.getOwnPropertyDescriptors;var yn=Object.getOwnPropertySymbols;var So=Object.prototype.hasOwnProperty,xo=Object.prototype.propertyIsEnumerable;var Bo=(f,e,t)=>e in f?nr(f,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):f[e]=t,F=(f,e)=>{for(var t in e||(e={}))So.call(e,t)&&Bo(f,t,e[t]);if(yn)for(var t of yn(e))xo.call(e,t)&&Bo(f,t,e[t]);return f},q=(f,e)=>or(f,ir(e));var $e=(f,e)=>{var t={};for(var n in f)So.call(f,n)&&e.indexOf(n)<0&&(t[n]=f[n]);if(f!=null&&yn)for(var n of yn(f))e.indexOf(n)<0&&xo.call(f,n)&&(t[n]=f[n]);return t};import{PublicKey as Ro}from"@solana/web3.js";import{get as Ko,set as rr}from"lodash";var Un=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}},Co={},ar={};function ee(f){let e=Ko(Co,f);if(!e){let t=Ko(ar,f);e=new Un({name:f,logLevel:t}),rr(Co,f,e)}return e}import{MINT_SIZE as sr,TOKEN_PROGRAM_ID as ur,getTransferFeeConfig as cr,unpackMint as lr}from"@solana/spl-token";var Gn=ee("Raydium_accountInfo_util");async function ve(f,e,t){let{batchRequest:n,commitment:o="confirmed",chunkCount:i=100}=F({batchRequest:!1},t),r=zn(e,i),a=new Array(r.length).fill([]);if(n){let s=r.map(d=>{let g=f._buildArgs([d.map(m=>m.toBase58())],o,"base64");return{methodName:"getMultipleAccounts",args:g}}),l=zn(s,10);a=(await(await Promise.all(l.map(async d=>await f._rpcBatchRequest(d)))).flat()).map(d=>(d.error&&Gn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${d.error.message}`),d.result.value.map(g=>{if(g){let{data:m,executable:p,lamports:y,owner:b,rentEpoch:w}=g;return m.length!==2&&m[1]!=="base64"&&Gn.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(m[0],"base64"),executable:p,lamports:y,owner:new Ro(b),rentEpoch:w}}return null})))}else try{a=await Promise.all(r.map(s=>f.getMultipleAccountsInfo(s,o)))}catch(s){s instanceof Error&&Gn.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${s.message}`)}return a.flat()}async function Ee(f,e,t){let n=await ve(f,e.map(o=>o.pubkey),t);return e.map((o,i)=>q(F({},o),{accountInfo:n[i]}))}async function Xt({connection:f,mints:e,config:t}){var i,r,a;if(e.length===0)return{};let n=await Ee(f,e.map(s=>({pubkey:it(s)})),t),o={};for(let s of n){if(!s.accountInfo||s.accountInfo.data.length<sr){console.log("invalid mint account",s.pubkey.toBase58());continue}let l=lr(s.pubkey,s.accountInfo,(i=s.accountInfo)==null?void 0:i.owner);o[s.pubkey.toString()]=q(F({},l),{programId:((r=s.accountInfo)==null?void 0:r.owner)||ur,feeConfig:(a=cr(l))!=null?a:void 0})}return o[Ro.default.toBase58()]=o[Y.toBase58()],o}import Kt from"bn.js";import dC from"decimal.js";import Pr from"big.js";import Pn from"bn.js";import mr from"toformat";var dr=mr,Yt=dr;import gn from"big.js";import fr from"bn.js";import yr from"decimal.js-light";import Qt from"bn.js";var Lo=9007199254740991;function Te(f){let e=ee("Raydium_parseBigNumberish");if(f instanceof Qt)return f;if(typeof f=="string"){if(f.match(/^-?[0-9]+$/))return new Qt(f);e.logWithError(`invalid BigNumberish string: ${f}`)}return typeof f=="number"?(f%1&&e.logWithError(`BigNumberish number underflow: ${f}`),(f>=Lo||f<=-Lo)&&e.logWithError(`BigNumberish number overflow: ${f}`),new Qt(String(f))):typeof f=="bigint"?new Qt(f.toString()):(e.error(`invalid BigNumberish value: ${f}`),new Qt(0))}var bn=ee("module/fraction"),Xn=Yt(gn),Zt=Yt(yr),br={[0]:Zt.ROUND_DOWN,[1]:Zt.ROUND_HALF_UP,[2]:Zt.ROUND_UP},gr={[0]:gn.roundDown,[1]:gn.roundHalfUp,[2]:gn.roundUp},ie=class{constructor(e,t=new fr(1)){this.numerator=Te(e),this.denominator=Te(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new ie(this.denominator,this.numerator)}add(e){let t=e instanceof ie?e:new ie(Te(e));return this.denominator.eq(t.denominator)?new ie(this.numerator.add(t.numerator),this.denominator):new ie(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof ie?e:new ie(Te(e));return this.denominator.eq(t.denominator)?new ie(this.numerator.sub(t.numerator),this.denominator):new ie(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof ie?e:new ie(Te(e));return new ie(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof ie?e:new ie(Te(e));return new ie(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||bn.logWithError(`${e} is not an integer.`),e<=0&&bn.logWithError(`${e} is not positive.`),Zt.set({precision:e+1,rounding:br[n]});let o=new Zt(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return o.toFormat(o.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||bn.logWithError(`${e} is not an integer.`),e<0&&bn.logWithError(`${e} is negative.`),Xn.DP=e,Xn.RM=gr[n]||1,new Xn(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var Ar=ee("Raydium_amount"),Oo=Yt(Pr);function wr(f,e){let t="0",n="0";if(f.includes(".")){let o=f.split(".");o.length===2?([t,n]=o,n=n.padEnd(e,"0")):Ar.logWithError(`invalid number string, num: ${f}`)}else t=f;return[t,n.slice(0,e)||n]}var he=class extends ie{constructor(t,n,o=!0,i){let r=new Pn(0),a=Yn.pow(new Pn(t.decimals));if(o)r=Te(n);else{let s=new Pn(0),l=new Pn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[u,d]=wr(n.toString(),t.decimals);s=Te(u),l=Te(d)}s=s.mul(a),r=s.add(l)}super(r,a);this.logger=ee(i||"TokenAmount"),this.token=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.token.equals(t.token)||this.logger.logWithError("gt token not equals"),this.raw.gt(t.raw)}lt(t){return this.token.equals(t.token)||this.logger.logWithError("lt token not equals"),this.raw.lt(t.raw)}add(t){return this.token.equals(t.token)||this.logger.logWithError("add token not equals"),new he(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new he(this.token,this.raw.sub(t.raw))}toSignificant(t=this.token.decimals,n,o=0){return super.toSignificant(t,n,o)}toFixed(t=this.token.decimals,n,o=0){return t>this.token.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,o)}toExact(t={groupSeparator:""}){return Oo.DP=this.token.decimals,new Oo(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as kr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as No}from"@solana/spl-token";var An={chainId:101,address:kr.default.toBase58(),programId:No.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},rt={chainId:101,address:"So11111111111111111111111111111111111111112",programId:No.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 Zn}from"@solana/web3.js";import{PublicKey as ce,SystemProgram as Mo,SYSVAR_RENT_PUBKEY as Tr}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as hr}from"@solana/spl-token";function Ct({pubkey:f,isSigner:e=!1,isWritable:t=!0}){return{pubkey:f,isWritable:t,isSigner:e}}var Ir=[Ct({pubkey:hr,isWritable:!1}),Ct({pubkey:Mo.programId,isWritable:!1}),Ct({pubkey:Tr,isWritable:!1})];function Qn({publicKey:f,transformSol:e}){let t=Fo(f.toString());if(t instanceof ce)return e&&t.equals(Tt)?Y:t;if(e&&t.toString()===Tt.toBase58())return Y;if(typeof t=="string"){if(t===ce.default.toBase58())return ce.default;try{return new ce(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Fo(f){try{return new ce(f)}catch{return f}}var yt=new ce("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Je=new ce("SysvarRent111111111111111111111111111111111"),Lu=new ce("SysvarC1ock11111111111111111111111111111111"),bt=new ce("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Br=new ce("Sysvar1nstructions1111111111111111111111111"),Sr=Mo.programId,Ou=new ce("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Nu=new ce("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Mu=new ce("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Fu=new ce("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),vu=new ce("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Vu=new ce("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),_u=new ce("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),Eu=new ce("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Du=new ce("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Wu=new ce("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),qu=new ce("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Y=new ce("So11111111111111111111111111111111111111112"),Tt=ce.default;function it(f){return Qn({publicKey:f,transformSol:!0})}var Hn=class{constructor({mint:e,decimals:t,symbol:n,name:o,skipMint:i=!1,isToken2022:r=!1}){if(e===Tt.toBase58()||e instanceof Zn&&Tt.equals(e)){this.decimals=rt.decimals,this.symbol=rt.symbol,this.name=rt.name,this.mint=new Zn(rt.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=n||e.toString().substring(0,6),this.name=o||e.toString().substring(0,6),this.mint=i?Zn.default:Qn({publicKey:e}),this.isToken2022=r}equals(e){return this===e?!0:this.mint.equals(e.mint)}},xe=Hn;xe.WSOL=new Hn(q(F({},rt),{mint:rt.address}));var jn=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},wn=jn;wn.SOL=new jn(An);import xr from"bn.js";var vo=new ie(new xr(100)),at=class extends ie{toSignificant(e=5,t,n){return this.mul(vo).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(vo).toFixed(e,t,n)}};var Kr=ee("Raydium_price"),ze=class extends ie{constructor(t){let{baseToken:n,quoteToken:o,numerator:i,denominator:r}=t;super(i,r);this.baseToken=n,this.quoteToken=o,this.scalar=new ie($n(n.decimals),$n(o.decimals))}get raw(){return new ie(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new ze({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&Kr.logWithError("mul token not equals");let n=super.mul(t);return new ze({baseToken:this.baseToken,quoteToken:t.quoteToken,denominator:n.denominator,numerator:n.numerator})}toSignificant(t=this.quoteToken.decimals,n,o){return this.adjusted.toSignificant(t,n,o)}toFixed(t=this.quoteToken.decimals,n,o){return this.adjusted.toFixed(t,n,o)}};import{merge as fK}from"lodash";import dc from"axios";var Vo={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"},Cr=q(F({},Vo),{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 Fc=ee("Raydium_Api");import{PublicKey as ed,SystemProgram as td}from"@solana/web3.js";import{AccountLayout as ad,createAssociatedTokenAccountIdempotentInstruction as sd,TOKEN_PROGRAM_ID as ud,TOKEN_2022_PROGRAM_ID as cd}from"@solana/spl-token";import{PublicKey as Mt,sendAndConfirmTransaction as io,SystemProgram as Fr,Transaction as $t,TransactionMessage as Jt,VersionedTransaction as en}from"@solana/web3.js";import vr from"axios";import{PublicKey as Jn,AddressLookupTableAccount as Ot}from"@solana/web3.js";async function eo({connection:f,address:e,cluster:t="mainnet"}){let n=await ve(f,[...new Set(e.map(i=>i.toString()))].map(i=>new Jn(i))),o={};for(let i=0;i<e.length;i++){let r=n[i],a=e[i];if(!r)continue;let s=new Ot({key:a,state:Ot.deserialize(r.data)});o[a.toString()]=s,t==="devnet"?Lt[a.toString()]=s:Rt[a.toString()]=s}return o}var Rt={},to=async f=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Rt[e])return Rt;let t=new Jn(e),n=await f.getAccountInfo(t);return n&&(Rt[e]=new Ot({key:t,state:Ot.deserialize(n.data)})),Rt},Lt={},no=async f=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Lt[e])return Lt;let t=new Jn(e),n=await f.getAccountInfo(t);return n&&(Lt[e]=new Ot({key:t,state:Ot.deserialize(n.data)})),Lt};var J={CreateAccount:"CreateAccount",InitAccount:"InitAccount",CreateATA:"CreateATA",CloseAccount:"CloseAccount",TransferAmount:"TransferAmount",InitMint:"InitMint",MintTo:"MintTo",InitMarket:"InitMarket",Util1216OwnerClaim:"Util1216OwnerClaim",SetComputeUnitPrice:"SetComputeUnitPrice",SetComputeUnitLimit:"SetComputeUnitLimit",ClmmCreatePool:"ClmmCreatePool",ClmmOpenPosition:"ClmmOpenPosition",ClmmIncreasePosition:"ClmmIncreasePosition",ClmmDecreasePosition:"ClmmDecreasePosition",ClmmClosePosition:"ClmmClosePosition",ClmmSwapBaseIn:"ClmmSwapBaseIn",ClmmSwapBaseOut:"ClmmSwapBaseOut",ClmmInitReward:"ClmmInitReward",ClmmSetReward:"ClmmSetReward",ClmmCollectReward:"ClmmCollectReward",ClmmLockPosition:"ClmmLockPosition",ClmmHarvestLockPosition:"ClmmHarvestLockPosition",AmmV4Swap:"AmmV4Swap",AmmV4AddLiquidity:"AmmV4AddLiquidity",AmmV4RemoveLiquidity:"AmmV4RemoveLiquidity",AmmV4SimulatePoolInfo:"AmmV4SimulatePoolInfo",AmmV4SwapBaseIn:"AmmV4SwapBaseIn",AmmV4SwapBaseOut:"AmmV4SwapBaseOut",AmmV4CreatePool:"AmmV4CreatePool",AmmV4InitPool:"AmmV4InitPool",AmmV5AddLiquidity:"AmmV5AddLiquidity",AmmV5RemoveLiquidity:"AmmV5RemoveLiquidity",AmmV5SimulatePoolInfo:"AmmV5SimulatePoolInfo",AmmV5SwapBaseIn:"AmmV5SwapBaseIn",AmmV5SwapBaseOut:"AmmV5SwapBaseOut",RouteSwap:"RouteSwap",RouteSwap1:"RouteSwap1",RouteSwap2:"RouteSwap2",FarmV3Deposit:"FarmV3Deposit",FarmV3Withdraw:"FarmV3Withdraw",FarmV3CreateLedger:"FarmV3CreateLedger",FarmV4Withdraw:"FarmV4Withdraw",FarmV5Deposit:"FarmV5Deposit",FarmV5Withdraw:"FarmV5Withdraw",FarmV5CreateLedger:"FarmV5CreateLedger",FarmV6Deposit:"FarmV6Deposit",FarmV6Withdraw:"FarmV6Withdraw",FarmV6Create:"FarmV6Create",FarmV6Restart:"FarmV6Restart",FarmV6CreatorAddReward:"FarmV6CreatorAddReward",FarmV6CreatorWithdraw:"FarmV6CreatorWithdraw",CpmmCreatePool:"CpmmCreatePool",CpmmAddLiquidity:"CpmmAddLiquidity",CpmmWithdrawLiquidity:"CpmmWithdrawLiquidity",CpmmSwapBaseIn:"CpmmSwapBaseIn",CpmmSwapBaseOut:"CpmmSwapBaseOut",CpmmLockLp:"CpmmLockLp",CpmmCollectLockFee:"CpmmCollectLockFee",TransferTip:"TransferTip"};import{ComputeBudgetProgram as _o,Keypair as Do,PublicKey as Rr,Transaction as Wo,TransactionMessage as Lr,VersionedTransaction as qo}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Or}from"@solana/spl-token";var Eo=ee("Raydium_txUtil"),Uo=1644;function kn(f){let e=[],t=[];return f.microLamports&&(e.push(_o.setComputeUnitPrice({microLamports:f.microLamports})),t.push(J.SetComputeUnitPrice)),f.units&&(e.push(_o.setComputeUnitLimit({units:f.units})),t.push(J.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Nt(f,e){var n,o;let t=e!=null?e:"confirmed";return(o=await((n=f.getLatestBlockhash)==null?void 0:n.call(f,{commitment:t})))==null?void 0:o.blockhash}async function Tn(f,e){return f.getSignatureStatuses([e]),new Promise((t,n)=>{let o=setTimeout(n,6e4);f.onSignature(e,i=>{if(clearTimeout(o),!i.err){t("");return}n(Object.assign(i.err,{txId:e}))},"confirmed")})}function oo(f,e){f.length<1&&Eo.logWithError(`no instructions provided: ${f.toString()}`),e.length<1&&Eo.logWithError(`no signers provided:, ${e.toString()}`);let t=new Wo;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...f);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Uo}catch{return!1}}function ae(f,e){let[t,n]=Rr.findProgramAddressSync(f,e);return{publicKey:t,nonce:n}}function Ht({instructions:f,payer:e,signers:t}){return oo(f,[e,...t])}function jt({instructions:f,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Do.generate().publicKey.toString()}){let i=new Lr({payerKey:e,recentBlockhash:n,instructions:f}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new qo(i).serialize()).toString("base64").length<Uo}catch{return!1}}var Nr=f=>Buffer.isBuffer(f)?f:f instanceof Uint8Array?Buffer.from(f.buffer,f.byteOffset,f.byteLength):Buffer.from(f),Mr=f=>{let e=f.serialize({requireAllSignatures:!1,verifySignatures:!1});f instanceof qo&&(e=Nr(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function ht(f){let e=[];return f.forEach(t=>{t instanceof Wo&&(t.recentBlockhash||(t.recentBlockhash=Or.toBase58()),t.feePayer||(t.feePayer=Do.generate().publicKey)),e.push(Mr(t))}),console.log("simulate tx string:",e),e}var hn=2e3,In=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 vr.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}=kn(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(Fr.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new Mt(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(J.TransferTip),!0):!1}async calComputeBudget({config:e,defaultIns:t}){try{let n=e||await this.getComputeBudgetConfig();if(this.addCustomComputeBudget(n))return;t&&this.instructions.unshift(...t)}catch{t&&this.instructions.unshift(...t)}}addInstruction({instructions:e=[],endInstructions:t=[],signers:n=[],instructionTypes:o=[],endInstructionTypes:i=[],lookupTableAddress:r=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...n),this.instructionTypes.push(...o),this.endInstructionTypes.push(...i),this.lookupTableAddress.push(...r.filter(a=>a!==Mt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:n}){return e===0?await this.buildV0(q(F({},t||{}),{lookupTableAddress:n})):this.build(t)}build(e){var n;let t=new $t;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,((n=this.owner)==null?void 0:n.signer)&&!this.signers.some(o=>o.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async o=>{var u;let{recentBlockHash:i,skipPreflight:r=!0,sendAndConfirm:a,notSendToRpc:s}=o||{},l=i!=null?i:await Nt(this.connection,this.blockhashCommitment);if(t.recentBlockhash=l,this.signers.length&&t.sign(...this.signers),ht([t]),(u=this.owner)!=null&&u.isKeyPair)return{txId:a?await io(this.connection,t,this.signers.find(g=>g.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:r}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:r}),signedTx:t};if(this.signAllTransactions){let d=await this.signAllTransactions([t]);if(this.signers.length)for(let g of d)try{g.sign(...this.signers)}catch{}return{txId:s?"":await this.connection.sendRawTransaction(d[0].serialize(),{skipPreflight:r}),signedTx:d[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var l;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:o}=this.build(n),i=t.filter(u=>u.transaction.instructions.length>0),r=[o,...i.map(u=>u.transaction)],a=[this.signers,...i.map(u=>u.signers)],s=[...this.instructionTypes,...i.map(u=>u.instructionTypes).flat()];return(l=this.owner)!=null&&l.signer&&a.forEach(u=>{u.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:r,signers:a,instructionTypes:s,execute:async u=>{var w;let{sequentially:d,onTxUpdate:g,skipTxCount:m=0,recentBlockHash:p,skipPreflight:y=!0}=u||{},b=p!=null?p:await Nt(this.connection,this.blockhashCommitment);if((w=this.owner)!=null&&w.isKeyPair){if(d){let A=[],T=0;for(let I of r){if(++T,T<=m)continue;let P=await io(this.connection,I,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});A.push(P)}return{txIds:A,signedTxs:r}}return{txIds:await await Promise.all(r.map(async A=>(A.recentBlockhash=b,await this.connection.sendRawTransaction(A.serialize(),{skipPreflight:y})))),signedTxs:r}}if(this.signAllTransactions){let A=r.map((I,P)=>(I.recentBlockhash=b,a[P].length&&I.sign(...a[P]),I));ht(A);let T=await this.signAllTransactions(A);if(d){let I=0,P=[],k=async()=>{if(!T[I])return;let B=await this.connection.sendRawTransaction(T[I].serialize(),{skipPreflight:y});P.push({txId:B,status:"sent",signedTx:T[I]}),g==null||g([...P]),I++;let S=!1,x=null,O=null,U=_=>{x!==null&&clearInterval(x),O!==null&&this.connection.removeSignatureListener(O);let v=P.findIndex(V=>V.txId===B);if(v>-1){if(P[v].status==="error"||P[v].status==="success")return;P[v].status=_.err?"error":"success"}g==null||g([...P]),_.err||k()};this.loopMultiTxStatus&&(x=setInterval(async()=>{var _;if(S){clearInterval(x);return}try{let v=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:0});v&&(S=!0,clearInterval(x),U({err:((_=v.meta)==null?void 0:_.err)||null}),console.log("tx status from getTransaction:",B))}catch(v){S=!0,clearInterval(x),console.error("getTransaction timeout:",v,B)}},hn)),O=this.connection.onSignature(B,_=>{if(S){this.connection.removeSignatureListener(O);return}S=!0,U(_)},"confirmed"),this.connection.getSignatureStatus(B)};return await k(),{txIds:P.map(B=>B.txId),signedTxs:T}}else{let I=[];for(let P=0;P<T.length;P+=1){let k=await this.connection.sendRawTransaction(T[P].serialize(),{skipPreflight:y});I.push(k)}return{txIds:I,signedTxs:T}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){var y;let p=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:o,recentBlockhash:i}=p,r=$e(p,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),a=F(F({},this.cluster==="devnet"?await no(this.connection):await to(this.connection)),t),s=Array.from(new Set([...n,...this.lookupTableAddress])),l=[];for(let b of s)a[b]===void 0&&l.push(new Mt(b));let u=await eo({connection:this.connection,address:l});for(let[b,w]of Object.entries(u))a[b]=w;let d=o?Mt.default.toBase58():i!=null?i:await Nt(this.connection,this.blockhashCommitment),g=new Jt({payerKey:this.feePayer,recentBlockhash:d,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(a));((y=this.owner)==null?void 0:y.signer)&&!this.signers.some(b=>b.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let m=new en(g);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async b=>{var I;let{skipPreflight:w=!0,sendAndConfirm:A,notSendToRpc:T}=b||{};if(ht([m]),(I=this.owner)!=null&&I.isKeyPair){let P=await this.connection.sendTransaction(m,{skipPreflight:w});return A&&await Tn(this.connection,P),{txId:P,signedTx:m}}if(this.signAllTransactions){let P=await this.signAllTransactions([m]);if(this.signers.length)for(let k of P)try{k.sign(this.signers)}catch{}return{txId:T?"":await this.connection.sendTransaction(P[0],{skipPreflight:w}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async buildV0MultiTx(e){var l;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:o}=await this.buildV0(n),i=t.filter(u=>u.builder.instructions.length>0),r=[o,...i.map(u=>u.transaction)],a=[this.signers,...i.map(u=>u.signers)],s=[...this.instructionTypes,...i.map(u=>u.instructionTypes).flat()];return(l=this.owner)!=null&&l.signer&&a.forEach(u=>{u.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),r.forEach(async(u,d)=>{u.sign(a[d])}),{builder:this,transactions:r,signers:a,instructionTypes:s,buildProps:n,execute:async u=>{var y;let{sequentially:d,onTxUpdate:g,recentBlockHash:m,skipPreflight:p=!0}=u||{};if(m&&r.forEach(b=>b.message.recentBlockhash=m),ht(r),(y=this.owner)!=null&&y.isKeyPair){if(d){let b=[];for(let w of r){let A=await this.connection.sendTransaction(w,{skipPreflight:p});await Tn(this.connection,A),b.push(A)}return{txIds:b,signedTxs:r}}return{txIds:await Promise.all(r.map(async b=>await this.connection.sendTransaction(b,{skipPreflight:p}))),signedTxs:r}}if(this.signAllTransactions){let b=await this.signAllTransactions(r);if(d){let w=0,A=[],T=async()=>{if(!b[w])return;let I=await this.connection.sendTransaction(b[w],{skipPreflight:p});A.push({txId:I,status:"sent",signedTx:b[w]}),g==null||g([...A]),w++;let P=!1,k=null,B=null,S=x=>{k!==null&&clearInterval(k),B!==null&&this.connection.removeSignatureListener(B);let O=A.findIndex(U=>U.txId===I);if(O>-1){if(A[O].status==="error"||A[O].status==="success")return;A[O].status=x.err?"error":"success"}g==null||g([...A]),x.err||T()};this.loopMultiTxStatus&&(k=setInterval(async()=>{var x;if(P){clearInterval(k);return}try{let O=await this.connection.getTransaction(I,{commitment:"confirmed",maxSupportedTransactionVersion:0});O&&(P=!0,clearInterval(k),S({err:((x=O.meta)==null?void 0:x.err)||null}),console.log("tx status from getTransaction:",I))}catch(O){P=!0,clearInterval(k),console.error("getTransaction timeout:",O,I)}},hn)),B=this.connection.onSignature(I,x=>{if(P){this.connection.removeSignatureListener(B);return}P=!0,S(x)},"confirmed"),this.connection.getSignatureStatus(I)};return T(),{txIds:[],signedTxs:b}}else{let w=[];for(let A=0;A<b.length;A+=1){let T=await this.connection.sendTransaction(b[A],{skipPreflight:p});w.push(T)}return{txIds:w,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var g;let d=e||{},{splitIns:t=[],computeBudgetConfig:n}=d,o=$e(d,["splitIns","computeBudgetConfig"]),i=n?kn(n):{instructions:[],instructionTypes:[]},r=this.signers.reduce((m,p)=>q(F({},m),{[p.publicKey.toBase58()]:p}),{}),a=[],s=[],l=[],u=0;if(this.allInstructions.forEach(m=>{let p=[...l,m],y=n?[...i.instructions,...p]:p,w=[...new Set(p.map(A=>A.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat()).values()].map(A=>new Mt(A));if(m!==t[u]&&l.length<12&&(Ht({instructions:y,payer:this.feePayer,signers:w})||Ht({instructions:p,payer:this.feePayer,signers:w})))l.push(m);else{if(l.length===0)throw Error("item ins too big");u+=m===t[u]?1:0,Ht({instructions:n?[...i.instructions,...l]:[...l],payer:this.feePayer,signers:w})?a.push(new $t().add(...i.instructions,...l)):a.push(new $t().add(...l)),s.push(Array.from(new Set(l.map(A=>A.keys.filter(T=>T.isSigner).map(T=>T.pubkey.toString())).flat())).map(A=>r[A]).filter(A=>A!==void 0)),l=[m]}}),l.length>0){let p=[...new Set(l.map(y=>y.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(y=>r[y]).filter(y=>y!==void 0);Ht({instructions:n?[...i.instructions,...l]:[...l],payer:this.feePayer,signers:p.map(y=>y.publicKey)})?a.push(new $t().add(...i.instructions,...l)):a.push(new $t().add(...l)),s.push(p)}return a.forEach(m=>m.feePayer=this.feePayer),(g=this.owner)!=null&&g.signer&&s.forEach(m=>{m.some(p=>p.publicKey.equals(this.owner.publicKey))||m.push(this.owner.signer)}),{builder:this,transactions:a,signers:s,instructionTypes:this.instructionTypes,execute:async m=>{var I;let{sequentially:p,onTxUpdate:y,skipTxCount:b=0,recentBlockHash:w,skipPreflight:A=!0}=m||{},T=w!=null?w:await Nt(this.connection,this.blockhashCommitment);if(a.forEach(async(P,k)=>{P.recentBlockhash=T,s[k].length&&P.sign(...s[k])}),ht(a),(I=this.owner)!=null&&I.isKeyPair){if(p){let P=0,k=[];for(let B of a){if(++P,P<=b){k.push("tx skipped");continue}let S=await io(this.connection,B,this.signers.find(x=>x.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:A});k.push(S)}return{txIds:k,signedTxs:a}}return{txIds:await Promise.all(a.map(async P=>await this.connection.sendRawTransaction(P.serialize(),{skipPreflight:A}))),signedTxs:a}}if(this.signAllTransactions){let P=await this.signAllTransactions(a.slice(b,a.length)),k=[...a.slice(0,b),...P];if(p){let B=0,S=[],x=async()=>{if(!k[B])return;B<b&&(S.push({txId:"",status:"success",signedTx:k[B]}),y==null||y([...S]),B++,x());let O=await this.connection.sendRawTransaction(k[B].serialize(),{skipPreflight:A});S.push({txId:O,status:"sent",signedTx:k[B]}),y==null||y([...S]),B++;let U=!1,_=null,v=null,V=D=>{_!==null&&clearInterval(_),v!==null&&this.connection.removeSignatureListener(v);let H=S.findIndex(de=>de.txId===O);if(H>-1){if(S[H].status==="error"||S[H].status==="success")return;S[H].status=D.err?"error":"success"}y==null||y([...S]),D.err||x()};this.loopMultiTxStatus&&(_=setInterval(async()=>{var D;if(U){clearInterval(_);return}try{let H=await this.connection.getTransaction(O,{commitment:"confirmed",maxSupportedTransactionVersion:0});H&&(U=!0,clearInterval(_),V({err:((D=H.meta)==null?void 0:D.err)||null}),console.log("tx status from getTransaction:",O))}catch(H){U=!0,clearInterval(_),console.error("getTransaction timeout:",H,O)}},hn)),v=this.connection.onSignature(O,D=>{if(U){this.connection.removeSignatureListener(v);return}U=!0,V(D)},"confirmed"),this.connection.getSignatureStatus(O)};return await x(),{txIds:S.map(O=>O.txId),signedTxs:k}}else{let B=[];for(let S=0;S<k.length;S+=1){let x=await this.connection.sendRawTransaction(k[S].serialize(),{skipPreflight:A});B.push(x)}return{txIds:B,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuildV0(e){var I;let T=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:o={},lookupTableAddress:i=[],insCountLimit:r=12}=T,a=$e(T,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),s=F(F({},this.cluster==="devnet"?await no(this.connection):await to(this.connection)),o),l=Array.from(new Set([...this.lookupTableAddress,...i])),u=[];for(let P of l)s[P]===void 0&&u.push(new Mt(P));let d=await eo({connection:this.connection,address:u});for(let[P,k]of Object.entries(d))s[P]=k;let g=t?kn(t):{instructions:[],instructionTypes:[]},m=await Nt(this.connection,this.blockhashCommitment),p=this.signers.reduce((P,k)=>q(F({},P),{[k.publicKey.toBase58()]:k}),{}),y=[],b=[],w=[],A=0;if(this.allInstructions.forEach(P=>{let k=[...w,P],B=t?[...g.instructions,...k]:k;if(P!==n[A]&&w.length<r&&(jt({instructions:B,payer:this.feePayer,lookupTableAddressAccount:s})||jt({instructions:k,payer:this.feePayer,lookupTableAddressAccount:s})))w.push(P);else{if(w.length===0)throw Error("item ins too big");A+=P===n[A]?1:0;let S={};for(let x of[...new Set(l)])s[x]!==void 0&&(S[x]=s[x]);if(t&&jt({instructions:[...g.instructions,...w],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let x=new Jt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...g.instructions,...w]}).compileToV0Message(Object.values(s));y.push(new en(x))}else{let x=new Jt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...w]}).compileToV0Message(Object.values(s));y.push(new en(x))}b.push(Array.from(new Set(w.map(x=>x.keys.filter(O=>O.isSigner).map(O=>O.pubkey.toString())).flat())).map(x=>p[x]).filter(x=>x!==void 0)),w=[P]}}),w.length>0){let k=[...new Set(w.map(B=>B.keys.filter(S=>S.isSigner).map(S=>S.pubkey.toString())).flat()).values()].map(B=>p[B]).filter(B=>B!==void 0);if(t&&jt({instructions:[...g.instructions,...w],payer:this.feePayer,lookupTableAddressAccount:s,recentBlockhash:m})){let B=new Jt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...g.instructions,...w]}).compileToV0Message(Object.values(s));y.push(new en(B))}else{let B=new Jt({payerKey:this.feePayer,recentBlockhash:m,instructions:[...w]}).compileToV0Message(Object.values(s));y.push(new en(B))}b.push(k)}return(I=this.owner)!=null&&I.signer&&b.forEach(P=>{P.some(k=>k.publicKey.equals(this.owner.publicKey))||P.push(this.owner.signer)}),y.forEach((P,k)=>{P.sign(b[k])}),{builder:this,transactions:y,buildProps:e,signers:b,instructionTypes:this.instructionTypes,execute:async P=>{var U;let{sequentially:k,onTxUpdate:B,skipTxCount:S=0,recentBlockHash:x,skipPreflight:O=!0}=P||{};if(y.map(async(_,v)=>{b[v].length&&_.sign(b[v]),x&&(_.message.recentBlockhash=x)}),ht(y),(U=this.owner)!=null&&U.isKeyPair){if(k){let _=0,v=[];for(let V of y){if(++_,_<=S){console.log("skip tx: ",_),v.push("tx skipped");continue}let D=await this.connection.sendTransaction(V,{skipPreflight:O});await Tn(this.connection,D),v.push(D)}return{txIds:v,signedTxs:y}}return{txIds:await Promise.all(y.map(async _=>await this.connection.sendTransaction(_,{skipPreflight:O}))),signedTxs:y}}if(this.signAllTransactions){let _=await this.signAllTransactions(y.slice(S,y.length)),v=[...y.slice(0,S),..._];if(k){let V=0,D=[],H=async()=>{if(!v[V])return;if(V<S){D.push({txId:"",status:"success",signedTx:v[V]}),B==null||B([...D]),V++,H();return}let de=await this.connection.sendTransaction(v[V],{skipPreflight:O});D.push({txId:de,status:"sent",signedTx:v[V]}),B==null||B([...D]),V++;let pe=!1,Re=null,ft=null,Fe=Ne=>{Re!==null&&clearInterval(Re),ft!==null&&this.connection.removeSignatureListener(ft);let ke=D.findIndex(qn=>qn.txId===de);if(ke>-1){if(D[ke].status==="error"||D[ke].status==="success")return;D[ke].status=Ne.err?"error":"success"}B==null||B([...D]),Ne.err||H()};this.loopMultiTxStatus&&(Re=setInterval(async()=>{var Ne;if(pe){clearInterval(Re);return}try{let ke=await this.connection.getTransaction(de,{commitment:"confirmed",maxSupportedTransactionVersion:0});ke&&(pe=!0,clearInterval(Re),Fe({err:((Ne=ke.meta)==null?void 0:Ne.err)||null}),console.log("tx status from getTransaction:",de))}catch(ke){pe=!0,clearInterval(Re),console.error("getTransaction timeout:",ke,de)}},hn)),ft=this.connection.onSignature(de,Ne=>{if(pe){this.connection.removeSignatureListener(ft);return}pe=!0,Fe(Ne)},"confirmed"),this.connection.getSignatureStatus(de)};return H(),{txIds:[],signedTxs:v}}else{let V=[];for(let D=0;D<v.length;D+=1){let H=await this.connection.sendTransaction(v[D],{skipPreflight:O});V.push(H)}return{txIds:V,signedTxs:v}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}};var ro=(...f)=>f.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),Ve=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ee(t)}createTxBuilder(e){return this.scope.checkOwner(),new In({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(ro(e))}logInfo(...e){this.logger.info(ro(e))}logAndCreateError(...e){let t=ro(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as Lm,SystemProgram as Nm}from"@solana/web3.js";import vm from"bn.js";import{createCloseAccountInstruction as Dm,createInitializeAccountInstruction as Wm,createTransferInstruction as qm,TOKEN_PROGRAM_ID as Um}from"@solana/spl-token";import{Keypair as Pm,PublicKey as Am}from"@solana/web3.js";import Tm from"bn.js";import{TOKEN_PROGRAM_ID as Bm}from"@solana/spl-token";import{PublicKey as Qr}from"@solana/web3.js";import Qo,{isBN as Zo}from"bn.js";import{bits as Vr,BitStructure as hl,blob as _r,Blob as Il,cstr as Bl,f32 as Sl,f32be as xl,f64 as Kl,f64be as Cl,greedy as Rl,Layout as Er,ns64 as Ll,ns64be as Ol,nu64 as Nl,nu64be as Ml,offset as Dr,s16 as Fl,s16be as vl,s24 as Vl,s24be as _l,s32 as Wr,s32be as El,s40 as Dl,s40be as Wl,s48 as ql,s48be as Ul,s8 as Gl,seq as qr,struct as zl,Structure as Ur,u16 as Gr,u16be as Xl,u24 as Yl,u24be as Ql,u32 as zr,u32be as Zl,u40 as Hl,u40be as jl,u48 as $l,u48be as Jl,u8 as Xr,UInt as Yr,union as em,Union as tm,unionLayoutDiscriminator as nm,utf8 as om}from"@solana/buffer-layout";var Bn=Er,Go=Ur;var ao=Yr;var zo=Xr,Ke=Gr;var Sn=zr;var Ae=Wr;var Xo=qr;var j=_r;var so=Vr,Yo=Dr;var Bt=class extends Bn{constructor(t,n,o){super(t,o);this.blob=j(t),this.signed=n}decode(t,n=0){let o=new Qo(this.blob.decode(t,n),10,"le");return this.signed?o.fromTwos(this.span*8).clone():o}encode(t,n,o=0){return typeof t=="number"&&(t=new Qo(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,o)}},xn=class extends Bn{constructor(t){super(8,t);this._lower=so(Sn(),!1),this._upper=so(Sn(),!1)}addBoolean(t){this._lower.fields.length<32?this._lower.addBoolean(t):this._upper.addBoolean(t)}decode(t,n=0){let o=this._lower.decode(t,n),i=this._upper.decode(t,n+this._lower.span);return F(F({},o),i)}encode(t,n,o=0){return this._lower.encode(t,n,o)+this._upper.encode(t,n,o+this._lower.span)}};function N(f){return new ao(1,f)}function le(f){return new ao(4,f)}function c(f){return new Bt(8,!1,f)}function z(f){return new Bt(16,!1,f)}function Ho(f){return new Bt(1,!0,f)}function Ft(f){return new Bt(8,!0,f)}function jo(f){return new Bt(16,!0,f)}var tn=class extends Bn{constructor(t,n,o,i){super(t.span,i);this.layout=t,this.decoder=n,this.encoder=o}decode(t,n){return this.decoder(this.layout.decode(t,n))}encode(t,n,o){return this.layout.encode(this.encoder(t),n,o)}getSpan(t,n){return this.layout.getSpan(t,n)}};function h(f){return new tn(j(32),e=>new Qr(e),e=>e.toBuffer(),f)}function ye(f){return new tn(zo(),Zr,Hr,f)}function Zr(f){if(f===0)return!1;if(f===1)return!0;throw new Error("Invalid bool: "+f)}function Hr(f){return f?1:0}function $o(f,e){let t=Sn("length"),n=L([t,E(f,Yo(t,-t.span),"values")]);return new tn(n,({values:o})=>o,o=>({values:o}),e)}var uo=class extends Go{decode(e,t){return super.decode(e,t)}};function L(f,e,t){return new uo(f,e,t)}function E(f,e,t){let n,o=typeof e=="number"?e:Zo(e)?e.toNumber():new Proxy(e,{get(i,r){if(!n){let a=Reflect.get(i,"count");n=Zo(a)?a.toNumber():a,Reflect.set(i,"count",n)}return Reflect.get(i,r)},set(i,r,a){return r==="count"&&(n=a),Reflect.set(i,r,a)}});return Xo(f,o,t)}var vt=L([h("mint"),h("owner"),c("amount"),le("delegateOption"),h("delegate"),N("state"),le("isNativeOption"),c("isNative"),c("delegatedAmount"),le("closeAuthorityOption"),h("closeAuthority")]);import{PublicKey as $b,SystemProgram as Jb}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as tg}from"@solana/spl-token";import{PublicKey as $r}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Jr}from"@solana/spl-token";function Z(f,e,t){return ae([f.toBuffer(),(t!=null?t:Jr).toBuffer(),e.toBuffer()],new $r("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as X}from"@solana/web3.js";var ei=new X("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),ti=new X("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),ni=new X("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),co=new X("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),wd=new X("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),ea=new X("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),oi=new X("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),ii=new X("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),kd=new X("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),ta=new X("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),gt=new X("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),nn=new X("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Cn=new X("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),ri=new X("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),Td=new X("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),na=new X("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),lo=new X("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),oa=new X("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),hd=new X("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),ia=new X("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),ra=new X("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),aa=new X("LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj"),Id=new X("WLHv2UAZm6z4KyaaELi5pjdbJh6RESMva1Rnn8pJVVh"),Bd=new X("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),Sd=new X("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),xd=new X("4Bu96XjU84XjPDSpveTVf6LYGCkfW5FK7SNkREWcEfV4"),Kd=new X("6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX");var Pt={OPEN_BOOK_PROGRAM:new X("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),SERUM_PROGRAM_ID_V3:new X("Ray1111111111111111111111111111111111111111"),AMM_V4:new X("DRaya7Kj3aMWQSy19kSjvmuwq9docCHofyP9kanQGaav"),AMM_STABLE:new X("DRayDdXc1NZQ9C3hRWmoSf8zK4iapgMnjdNZWrfwsP8m"),CLMM_PROGRAM_ID:new X("DRayAUgENGQBKVaX8owNhgzkEDyoHTGVEGHVJT1E9pfH"),CLMM_LOCK_PROGRAM_ID:new X("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),CLMM_LOCK_AUTH_ID:new X("6Aoh8h2Lw2m5UGxYR8AdAL87jTWYeKoxM52mJRzfYwN"),CREATE_CPMM_POOL_PROGRAM:new X("DRaycpLY18LhpbydsBWbVJtxpNv9oXPgjRSfpF2bWpYb"),CREATE_CPMM_POOL_AUTH:new X("CXniRufdq5xL8t8jZAPxsPZDpuudwuJSPWnbcD5Y5Nxq"),CREATE_CPMM_POOL_FEE_ACC:new X("3oE58BKVt8KuYkGxx8zBojugnymWmBiyafWgMrnb6eYy"),LOCK_CPMM_PROGRAM:new X("DRay25Usp3YJAi7beckgpGUC7mGJ2cR1AVPxhYfwVCUX"),LOCK_CPMM_AUTH:new X("7qWVV8UY2bRJfDLP4s37YzBPKUkVB46DStYJBpYbQzu3"),UTIL1216:X.default,Router:new X("DRaybByLpbUL57LJARs3j8BitTxVfzBg351EaMr5UTCd"),FARM_PROGRAM_ID_V3:new X("DRayWyrLmEW5KEeqs8kdTMMaBabapqagaBC7KWpGtJeZ"),FARM_PROGRAM_ID_V4:new X("Ray1111111111111111111111111111111111111111"),FARM_PROGRAM_ID_V5:new X("DRayiCGSZgku1GTK6rXD6mVDdingXy6APAH1R6R5L2LC"),FARM_PROGRAM_ID_V6:new X("DRayzbYakXs45ELHkzH6vC3fuhQqTAnv5A68gdFuvZyZ"),LAUNCHPAD_PROGRAM:new X("DRay6fNdQ5J82H7xV6uq2aV3mNrUZ1J4PgSKsWgptcm6"),LAUNCHPAD_AUTH:new X("5xqNaZXX5eUi4p5HU4oz9i5QnwRNT2y6oN7yyn4qENeq"),LAUNCHPAD_PLATFORM:new X("2Jx4KTDrVSdWNazuGpcA8n3ZLTRGGBDxAWhuKe2Xcj2a"),LAUNCHPAD_CONFIG:new X("7ZR4zD7PYfY2XxoG1Gxcy2EgEeGYrpxrwzPuwdUBssEt"),FEE_DESTINATION_ID:new X("9y8ENuuZ3b19quffx9hQvRVygG5ky6snHfRvGpuSfeJy"),MODEL_DATA_PUBKEY:new X("Ray1111111111111111111111111111111111111111")};import mg from"decimal.js";import ne from"bn.js";var se=new ne(1).shln(64),Vt=64,sa=new ne(1).shln(128),ct=new ne(1).shln(64).subn(1),ua=new ne(1).shln(128).subn(1),Xe=-443636,Ye=443636,Qe=new ne("4295048016"),Ze=new ne("79226673521066979257578248091"),ai=new ne("59543866431248"),si=new ne("184467440737095516"),ui=new ne("15793534762490258745"),ci=16,Rn=512,De=60,vd=new ne("18446743708227953217"),li=[{bit:0,factor:new ne("fffcb933bd6fb800",16)},{bit:1,factor:new ne("fff97272373d4000",16)},{bit:2,factor:new ne("fff2e50f5f657000",16)},{bit:3,factor:new ne("ffe5caca7e10f000",16)},{bit:4,factor:new ne("ffcb9843d60f7000",16)},{bit:5,factor:new ne("ff973b41fa98e800",16)},{bit:6,factor:new ne("ff2ea16466c9b000",16)},{bit:7,factor:new ne("fe5dee046a9a3800",16)},{bit:8,factor:new ne("fcbe86c7900bb000",16)},{bit:9,factor:new ne("f987a7253ac65800",16)},{bit:10,factor:new ne("f3392b0822bb6000",16)},{bit:11,factor:new ne("e7159475a2caf000",16)},{bit:12,factor:new ne("d097f3bdfd2f2000",16)},{bit:13,factor:new ne("a9f746462d9f8000",16)},{bit:14,factor:new ne("70d869a156f31c00",16)},{bit:15,factor:new ne("31be135f97ed3200",16)},{bit:16,factor:new ne("9aa508b5b85a500",16)},{bit:17,factor:new ne("5d6af8dedc582c",16)},{bit:18,factor:new ne("2216e584f5fa",16)}],lt=1e6;var Ln=1e5,on=1e4,mi=1e4,di=1e5;var rn=3,pi=100;var fi=10,yi=100,_t=14;var W=new ne(0),He=new ne(1),Vd=new ne(-1),mo={tvl:0,volumeQuote:0,mintAmountA:0,mintAmountB:0,rewardDefaultInfos:[],farmUpcomingCount:0,farmOngoingCount:0,farmFinishedCount:0,day:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},week:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},month:{volume:0,volumeQuote:0,volumeFee:0,apr:0,feeApr:0,priceMin:0,priceMax:0,rewardApr:[0]},pooltype:[]};var _d=new ne("18446744073700000000");var po=L([j(8),N("bump"),Ke("index"),h("owner"),le("protocolFeeRate"),le("tradeFeeRate"),Ke("tickSpacing"),le("fundFeeRate"),E(le(),1),h("fundOwner"),E(c(),3)]),ca=L([le("blockTimestamp"),Ft("tickCumulative"),E(c(),4)]),bi=L([j(8),ye("initialized"),c("recentEpoch"),Ke("observationIndex"),h("poolId"),E(ca,pi,"observations"),E(c(),4)]),la=L([Ke("filterPeriod"),Ke("decayPeriod"),Ke("reductionFactor"),le("dynamicFeeControl"),le("maxVolatilityAccumulator"),Ae("tickSpacingIndexReference"),le("volatilityReference"),le("volatilityAccumulator"),c("lastUpdateTimestamp"),E(N(),46)]),ma=L([N("state"),c("openTime"),c("endTime"),c("lastUpdateTime"),z("emissionsPerSecondX64"),c("totalEmissioned"),c("claimed"),h("mint"),h("vault"),h("creator"),z("growthGlobalX64")]),an=L([j(8),N("bump"),h("configId"),h("creator"),h("mintA"),h("mintB"),h("vaultA"),h("vaultB"),h("observationId"),N("mintDecimalsA"),N("mintDecimalsB"),Ke("tickSpacing"),z("liquidity"),z("sqrtPriceX64"),Ae("tickCurrent"),le(),z("feeGrowthGlobalX64A"),z("feeGrowthGlobalX64B"),c("protocolFeesTokenA"),c("protocolFeesTokenB"),E(z(),4),N("status"),N("feeOn"),j(6),E(ma,rn,"rewardInfos"),j(8*16,"tickArrayBitmap"),E(c(),4),c("fundFeesTokenA"),c("fundFeesTokenB"),c("startTime"),c("recentEpoch"),la.replicate("dynamicFeeInfo"),E(c(),46)]),da=L([z("growthInsideLastX64"),c("rewardAmountOwed")]),On=L([j(8),N("bump"),h("nftMint"),h("poolId"),Ae("tickLower"),Ae("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),c("tokenFeesOwedA"),c("tokenFeesOwedB"),E(da,rn,"rewardInfos"),c("recentEpoch"),E(c(),7)]),qd=L([j(8),N("bump"),h("poolId"),Ae("tickLower"),Ae("tickUpper"),z("liquidity"),z("feeGrowthInsideLastX64A"),z("feeGrowthInsideLastX64B"),c("tokenFeesOwedA"),c("tokenFeesOwedB"),E(z(),rn,"rewardGrowthInside"),c("recentEpoch"),E(c(),7)]),pa=L([Ae("tick"),jo("liquidityNet"),z("liquidityGross"),z("feeGrowthOutsideX64A"),z("feeGrowthOutsideX64B"),E(z(),rn,"rewardGrowthsOutsideX64"),c("orderPhase"),c("ordersAmount"),c("partFilledOrdersRemaining"),z("unfilledRatioX64"),E(le(),3)]),Et=L([j(8),h("poolId"),Ae("startTickIndex"),E(pa,De,"ticks"),N("initializedTickCount"),c("recentEpoch"),E(N(),107)]),gi=L([j(8),N("bump"),E(h(),fi,"operationOwners"),E(h(),yi,"whitelistMints")]),St=L([j(8),h("po