UNPKG

@raydium-io/raydium-sdk-v2

Version:

An SDK for building applications on top of Raydium.

1 lines 510 kB
var Gm=Object.defineProperty,zm=Object.defineProperties;var Xm=Object.getOwnPropertyDescriptors;var kr=Object.getOwnPropertySymbols;var oc=Object.prototype.hasOwnProperty,ic=Object.prototype.propertyIsEnumerable;var nc=(s,e,t)=>e in s?Gm(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t,M=(s,e)=>{for(var t in e||(e={}))oc.call(e,t)&&nc(s,t,e[t]);if(kr)for(var t of kr(e))ic.call(e,t)&&nc(s,t,e[t]);return s},D=(s,e)=>zm(s,Xm(e));var Ge=(s,e)=>{var t={};for(var n in s)oc.call(s,n)&&e.indexOf(n)<0&&(t[n]=s[n]);if(s!=null&&kr)for(var n of kr(s))e.indexOf(n)<0&&ic.call(s,n)&&(t[n]=s[n]);return t};import qm from"axios";import{PublicKey as sc}from"@solana/web3.js";import{get as Fa,set as rc}from"lodash";var Ym=(o=>(o[o.Error=0]="Error",o[o.Warning=1]="Warning",o[o.Info=2]="Info",o[o.Debug=3]="Debug",o))(Ym||{}),va=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}},_a={},ac={};function ke(s){let e=Fa(_a,s);if(!e){let t=Fa(ac,s);e=new va({name:s,logLevel:t}),rc(_a,s,e)}return e}function ab(s,e){rc(ac,s,e);let t=Fa(_a,s);t&&(t.level=e)}import{MINT_SIZE as Hm,TOKEN_PROGRAM_ID as Qm,getTransferFeeConfig as Zm,unpackMint as jm}from"@solana/spl-token";var Va=ke("Raydium_accountInfo_util");async function kt(s,e,t){let{batchRequest:n,commitment:o="confirmed",chunkCount:i=100}=M({batchRequest:!1},t),r=Ea(e,i),a=new Array(r.length).fill([]);if(n){let u=r.map(d=>{let p=s._buildArgs([d.map(m=>m.toBase58())],o,"base64");return{methodName:"getMultipleAccounts",args:p}}),c=Ea(u,10);a=(await(await Promise.all(c.map(async d=>await s._rpcBatchRequest(d)))).flat()).map(d=>(d.error&&Va.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${d.error.message}`),d.result.value.map(p=>{if(p){let{data:m,executable:f,lamports:y,owner:b,rentEpoch:g}=p;return m.length!==2&&m[1]!=="base64"&&Va.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(m[0],"base64"),executable:f,lamports:y,owner:new sc(b),rentEpoch:g}}return null})))}else try{a=await Promise.all(r.map(u=>s.getMultipleAccountsInfo(u,o)))}catch(u){u instanceof Error&&Va.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${u.message}`)}return a.flat()}async function Fe(s,e,t){let n=await kt(s,e.map(o=>o.pubkey),t);return e.map((o,i)=>D(M({},o),{accountInfo:n[i]}))}var $m=(n=>(n[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",n))($m||{}),yb=1;async function yo({connection:s,mints:e,config:t}){var i,r,a;if(e.length===0)return{};let n=await Fe(s,e.map(u=>({pubkey:Rt(u)})),t),o={};for(let u of n){if(!u.accountInfo||u.accountInfo.data.length<Hm){console.log("invalid mint account",u.pubkey.toBase58());continue}let c=jm(u.pubkey,u.accountInfo,(i=u.accountInfo)==null?void 0:i.owner);o[u.pubkey.toString()]=D(M({},c),{programId:((r=u.accountInfo)==null?void 0:r.owner)||Qm,feeConfig:(a=Zm(c))!=null?a:void 0})}return o[sc.default.toBase58()]=o[J.toBase58()],o}import ft from"bn.js";import eb from"decimal.js";import rd from"big.js";import Qn from"bn.js";import Jm from"toformat";var ed=Jm,yi=ed;import hr from"big.js";import td from"bn.js";import nd from"decimal.js-light";import bi from"bn.js";var Da=(n=>(n[n.ROUND_DOWN=0]="ROUND_DOWN",n[n.ROUND_HALF_UP=1]="ROUND_HALF_UP",n[n.ROUND_UP=2]="ROUND_UP",n))(Da||{}),uc=9007199254740991;function ue(s){let e=ke("Raydium_parseBigNumberish");if(s instanceof bi)return s;if(typeof s=="string"){if(s.match(/^-?[0-9]+$/))return new bi(s);e.logWithError(`invalid BigNumberish string: ${s}`)}return typeof s=="number"?(s%1&&e.logWithError(`BigNumberish number underflow: ${s}`),(s>=uc||s<=-uc)&&e.logWithError(`BigNumberish number overflow: ${s}`),new bi(String(s))):typeof s=="bigint"?new bi(s.toString()):(e.error(`invalid BigNumberish value: ${s}`),new bi(0))}var Tr=ke("module/fraction"),Wa=yi(hr),gi=yi(nd),od={[0]:gi.ROUND_DOWN,[1]:gi.ROUND_HALF_UP,[2]:gi.ROUND_UP},id={[0]:hr.roundDown,[1]:hr.roundHalfUp,[2]:hr.roundUp},fe=class{constructor(e,t=new td(1)){this.numerator=ue(e),this.denominator=ue(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new fe(this.denominator,this.numerator)}add(e){let t=e instanceof fe?e:new fe(ue(e));return this.denominator.eq(t.denominator)?new fe(this.numerator.add(t.numerator),this.denominator):new fe(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof fe?e:new fe(ue(e));return this.denominator.eq(t.denominator)?new fe(this.numerator.sub(t.numerator),this.denominator):new fe(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof fe?e:new fe(ue(e));return new fe(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof fe?e:new fe(ue(e));return new fe(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Tr.logWithError(`${e} is not an integer.`),e<=0&&Tr.logWithError(`${e} is not positive.`),gi.set({precision:e+1,rounding:od[n]});let o=new gi(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)||Tr.logWithError(`${e} is not an integer.`),e<0&&Tr.logWithError(`${e} is negative.`),Wa.DP=e,Wa.RM=id[n]||1,new Wa(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var ad=ke("Raydium_amount"),Ir=yi(rd);function cc(s,e){let t="0",n="0";if(s.includes(".")){let o=s.split(".");o.length===2?([t,n]=o,n=n.padEnd(e,"0")):ad.logWithError(`invalid number string, num: ${s}`)}else t=s;return[t,n.slice(0,e)||n]}var Te=class extends fe{constructor(t,n,o=!0,i){let r=new Qn(0),a=go.pow(new Qn(t.decimals));if(o)r=ue(n);else{let u=new Qn(0),c=new Qn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,d]=cc(n.toString(),t.decimals);u=ue(l),c=ue(d)}u=u.mul(a),r=u.add(c)}super(r,a);this.logger=ke(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 Te(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new Te(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 Ir.DP=this.token.decimals,new Ir(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}},bo=class extends fe{constructor(t,n,o=!0,i){let r=new Qn(0),a=go.pow(new Qn(t.decimals));if(o)r=ue(n);else{let u=new Qn(0),c=new Qn(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[l,d]=cc(n.toString(),t.decimals);u=ue(l),c=ue(d)}u=u.mul(a),r=u.add(c)}super(r,a);this.logger=ke(i||"TokenAmount"),this.currency=t}get raw(){return this.numerator}isZero(){return this.raw.isZero()}gt(t){return this.currency.equals(t.currency)||this.logger.logWithError("gt currency not equals"),this.raw.gt(t.raw)}lt(t){return this.currency.equals(t.currency)||this.logger.logWithError("lt currency not equals"),this.raw.lt(t.raw)}add(t){return this.currency.equals(t.currency)||this.logger.logWithError("add currency not equals"),new bo(this.currency,this.raw.add(t.raw))}sub(t){return this.currency.equals(t.currency)||this.logger.logWithError("sub currency not equals"),new bo(this.currency,this.raw.sub(t.raw))}toSignificant(t=this.currency.decimals,n,o=0){return super.toSignificant(t,n,o)}toFixed(t=this.currency.decimals,n,o=0){return t>this.currency.decimals&&this.logger.logWithError("decimals overflow"),super.toFixed(t,n,o)}toExact(t={groupSeparator:""}){return Ir.DP=this.currency.decimals,new Ir(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as sd}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as lc}from"@solana/spl-token";var Sn={chainId:101,address:sd.default.toBase58(),programId:lc.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},Tt={chainId:101,address:"So11111111111111111111111111111111111111112",programId:lc.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 za}from"@solana/web3.js";import{PublicKey as Ye,SystemProgram as mc,SYSVAR_RENT_PUBKEY as ud}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as cd}from"@solana/spl-token";function h({pubkey:s,isSigner:e=!1,isWritable:t=!0}){return{pubkey:s,isWritable:t,isSigner:e}}var qa=[h({pubkey:cd,isWritable:!1}),h({pubkey:mc.programId,isWritable:!1}),h({pubkey:ud,isWritable:!1})];function Ua({publicKey:s,transformSol:e}){let t=Ga(s.toString());if(t instanceof Ye)return e&&t.equals(ht)?J:t;if(e&&t.toString()===ht.toBase58())return J;if(typeof t=="string"){if(t===Ye.default.toBase58())return Ye.default;try{return new Ye(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Ga(s){try{return new Ye(s)}catch{return s}}var en=new Ye("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),yt=new Ye("SysvarRent111111111111111111111111111111111"),Yb=new Ye("SysvarC1ock11111111111111111111111111111111"),pn=new Ye("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Br=new Ye("Sysvar1nstructions1111111111111111111111111"),dc=mc.programId,Hb=new Ye("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Qb=new Ye("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Zb=new Ye("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),jb=new Ye("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),$b=new Ye("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),Jb=new Ye("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),eg=new Ye("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),tg=new Ye("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),ng=new Ye("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),og=new Ye("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),ig=new Ye("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),J=new Ye("So11111111111111111111111111111111111111112"),ht=Ye.default;function Rt(s){return Ua({publicKey:s,transformSol:!0})}var Xa=class{constructor({mint:e,decimals:t,symbol:n,name:o,skipMint:i=!1,isToken2022:r=!1}){if(e===ht.toBase58()||e instanceof za&&ht.equals(e)){this.decimals=Tt.decimals,this.symbol=Tt.symbol,this.name=Tt.name,this.mint=new za(Tt.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?za.default:Ua({publicKey:e}),this.isToken2022=r}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Oe=Xa;Oe.WSOL=new Xa(D(M({},Tt),{mint:Tt.address}));var Ya=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},Pi=Ya;Pi.SOL=new Ya(Sn);function pg(s,e){return s instanceof Oe&&e instanceof Oe?s.equals(e):s instanceof Oe||e instanceof Oe?!1:s===e}import ld from"bn.js";var pc=new fe(new ld(100)),$e=class extends fe{toSignificant(e=5,t,n){return this.mul(pc).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(pc).toFixed(e,t,n)}};var md=ke("Raydium_price"),bt=class extends fe{constructor(t){let{baseToken:n,quoteToken:o,numerator:i,denominator:r}=t;super(i,r);this.baseToken=n,this.quoteToken=o,this.scalar=new fe(Ha(n.decimals),Ha(o.decimals))}get raw(){return new fe(this.numerator,this.denominator)}get adjusted(){return super.mul(this.scalar)}invert(){return new bt({baseToken:this.quoteToken,quoteToken:this.baseToken,denominator:this.numerator,numerator:this.denominator})}mul(t){this.quoteToken!==t.baseToken&&md.logWithError("mul token not equals");let n=super.mul(t);return new bt({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 jy}from"lodash";var xr="please provide owner in load() initialization or you can set by calling raydium.setOwner(owner)",fc="please provide connection in load() initialization or set it by raydium.setConnection(connection)";var fn=class{constructor(e){this._owner=e}get publicKey(){return fn.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return fn.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return fn.isKeyPair(this._owner)}get isPublicKey(){return fn.isPublicKey(this._owner)}static isKeyPair(e){return e.secretKey!==void 0}static isPublicKey(e){return!fn.isKeyPair(e)}};import{PublicKey as Er,SystemProgram as Sp}from"@solana/web3.js";import{AccountLayout as Go,createAssociatedTokenAccountIdempotentInstruction as fs,TOKEN_PROGRAM_ID as Jn,TOKEN_2022_PROGRAM_ID as Kp}from"@solana/spl-token";import{PublicKey as Wo,sendAndConfirmTransaction as es,SystemProgram as bd,Transaction as ki,TransactionMessage as Ti,VersionedTransaction as hi}from"@solana/web3.js";import gd from"axios";import{PublicKey as Qa,AddressLookupTableAccount as Eo}from"@solana/web3.js";async function Za({connection:s,address:e,cluster:t="mainnet"}){let n=await kt(s,[...new Set(e.map(i=>i.toString()))].map(i=>new Qa(i))),o={};for(let i=0;i<e.length;i++){let r=n[i],a=e[i];if(!r)continue;let u=new Eo({key:a,state:Eo.deserialize(r.data)});o[a.toString()]=u,t==="devnet"?Vo[a.toString()]=u:_o[a.toString()]=u}return o}var _o={},ja=async s=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(_o[e])return _o;let t=new Qa(e),n=await s.getAccountInfo(t);return n&&(_o[e]=new Eo({key:t,state:Eo.deserialize(n.data)})),_o},Vo={},$a=async s=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Vo[e])return Vo;let t=new Qa(e),n=await s.getAccountInfo(t);return n&&(Vo[e]=new Eo({key:t,state:Eo.deserialize(n.data)})),Vo};var Nn=(t=>(t[t.V0=0]="V0",t[t.LEGACY=1]="LEGACY",t))(Nn||{}),X={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 yc,Keypair as bc,PublicKey as gc,Transaction as Kr,TransactionMessage as dd,VersionedTransaction as Ja}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as pd}from"@solana/spl-token";var Mn=ke("Raydium_txUtil"),Pc=1644;function Cr(s){let e=[],t=[];return s.microLamports&&(e.push(yc.setComputeUnitPrice({microLamports:s.microLamports})),t.push(X.SetComputeUnitPrice)),s.units&&(e.push(yc.setComputeUnitLimit({units:s.units})),t.push(X.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function Do(s,e){var n,o;let t=e!=null?e:"confirmed";return(o=await((n=s.getLatestBlockhash)==null?void 0:n.call(s,{commitment:t})))==null?void 0:o.blockhash}async function Rr(s,e){return s.getSignatureStatuses([e]),new Promise((t,n)=>{let o=setTimeout(n,6e4);s.onSignature(e,i=>{if(clearTimeout(o),!i.err){t("");return}n(Object.assign(i.err,{txId:e}))},"confirmed")})}function Lr(s,e){s.length<1&&Mn.logWithError(`no instructions provided: ${s.toString()}`),e.length<1&&Mn.logWithError(`no signers provided:, ${e.toString()}`);let t=new Kr;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...s);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<Pc}catch{return!1}}async function Eg(s,e,t,n=!0){let o=new gc("RaydiumSimuLateTransaction11111111111111111"),i=[],r=new Kr;r.feePayer=o;for(let c of e)Lr([...r.instructions,c],[o])||(i.push(r),r=new Kr,r.feePayer=o),r.add(c);r.instructions.length>0&&i.push(r);let a=[];try{if(a=await fd(s,i,n),a.find(c=>c.err!==null))throw Error("rpc simulateTransaction error")}catch(c){c instanceof Error&&Mn.logWithError("failed to simulate for instructions","RPC_ERROR",{message:c.message})}let u=[];for(let c of a)if(Mn.debug("simulate result:",c),c.logs){let l=c.logs.filter(d=>d&&d.includes(t));Mn.debug("filteredLog:",u),l.length||Mn.logWithError("simulate log not match keyword","keyword",t),u.push(...l)}return u}function Dg(s,e){let t=s.match(/{["\w:,]+}/g);return!t||t.length!==1?Mn.logWithError(`simulate log fail to match json, keyword: ${e}`):t[0]}function Wg(s,e){let n=new RegExp(`"${e}":(\\d+)`,"g").exec(s);return!n||n.length!==2?Mn.logWithError(`simulate log fail to match key", key: ${e}`):n[1]}function ie(s,e){let[t,n]=gc.findProgramAddressSync(s,e);return{publicKey:t,nonce:n}}async function fd(s,e,t){let n=[];if(t){let o=await s.getLatestBlockhash(),i=[];for(let c of e){c.recentBlockhash=o.blockhash,c.lastValidBlockHeight=o.lastValidBlockHeight;let d=c._compile().serialize(),m=c._serialize(d).toString("base64");i.push(m)}let r=i.map(c=>{let l=s._buildArgs([c],void 0,"base64");return{methodName:"simulateTransaction",args:l}}),a=[],u=20;for(let c=0;c<Math.ceil(r.length/u);c++)a.push(r.slice(c*u,(c+1)*u));n=await(await Promise.all(a.map(async c=>(await s._rpcBatchRequest(c)).map(l=>l.result.value)))).flat()}else try{n=await Promise.all(e.map(async o=>await(await s.simulateTransaction(o)).value))}catch(o){o instanceof Error&&Mn.logWithError("failed to get info for multiple accounts","RPC_ERROR",{message:o.message})}return n}function Ai({instructions:s,payer:e,signers:t}){return Lr(s,[e,...t])}function wi({instructions:s,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=bc.generate().publicKey.toString()}){let i=new dd({payerKey:e,recentBlockhash:n,instructions:s}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Ja(i).serialize()).toString("base64").length<Pc}catch{return!1}}var Sr={time:0,data:void 0};async function qg(s){if(!Sr.data||(Date.now()-Sr.time)/1e3>30){let e=await s.getEpochInfo();return Sr={time:Date.now(),data:e},e}else return Sr.data}var Ac=s=>Buffer.isBuffer(s)?s:s instanceof Uint8Array?Buffer.from(s.buffer,s.byteOffset,s.byteLength):Buffer.from(s),yd=s=>{let e=s.serialize({requireAllSignatures:!1,verifySignatures:!1});s instanceof Ja&&(e=Ac(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Po(s){let e=[];return s.forEach(t=>{t instanceof Kr&&(t.recentBlockhash||(t.recentBlockhash=pd.toBase58()),t.feePayer||(t.feePayer=bc.generate().publicKey)),e.push(yd(t))}),console.log("simulate tx string:",e),e}function Ug(s){let e=s.serialize({requireAllSignatures:!1,verifySignatures:!1});return s instanceof Ja&&(e=Ac(e)),e.toString("base64")}var Or=2e3,Nr=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 gd.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}=Cr(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(bd.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new Wo(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(X.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!==Wo.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:n}){return e===0?await this.buildV0(D(M({},t||{}),{lookupTableAddress:n})):this.build(t)}build(e){var n;let t=new ki;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 l;let{recentBlockHash:i,skipPreflight:r=!0,sendAndConfirm:a,notSendToRpc:u}=o||{},c=i!=null?i:await Do(this.connection,this.blockhashCommitment);if(t.recentBlockhash=c,this.signers.length&&t.sign(...this.signers),Po([t]),(l=this.owner)!=null&&l.isKeyPair)return{txId:a?await es(this.connection,t,this.signers.find(p=>p.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 p of d)try{p.sign(...this.signers)}catch{}return{txId:u?"":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 c;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:o}=this.build(n),i=t.filter(l=>l.transaction.instructions.length>0),r=[o,...i.map(l=>l.transaction)],a=[this.signers,...i.map(l=>l.signers)],u=[...this.instructionTypes,...i.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(l=>{l.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:r,signers:a,instructionTypes:u,execute:async l=>{var g;let{sequentially:d,onTxUpdate:p,skipTxCount:m=0,recentBlockHash:f,skipPreflight:y=!0}=l||{},b=f!=null?f:await Do(this.connection,this.blockhashCommitment);if((g=this.owner)!=null&&g.isKeyPair){if(d){let A=[],k=0;for(let I of r){if(++k,k<=m)continue;let P=await es(this.connection,I,this.signers.find(T=>T.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));Po(A);let k=await this.signAllTransactions(A);if(d){let I=0,P=[],T=async()=>{if(!k[I])return;let B=await this.connection.sendRawTransaction(k[I].serialize(),{skipPreflight:y});P.push({txId:B,status:"sent",signedTx:k[I]}),p==null||p([...P]),I++;let S=!1,K=null,x=null,C=R=>{K!==null&&clearInterval(K),x!==null&&this.connection.removeSignatureListener(x);let N=P.findIndex(L=>L.txId===B);if(N>-1){if(P[N].status==="error"||P[N].status==="success")return;P[N].status=R.err?"error":"success"}p==null||p([...P]),R.err||T()};this.loopMultiTxStatus&&(K=setInterval(async()=>{var R;if(S){clearInterval(K);return}try{let N=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:0});N&&(S=!0,clearInterval(K),C({err:((R=N.meta)==null?void 0:R.err)||null}),console.log("tx status from getTransaction:",B))}catch(N){S=!0,clearInterval(K),console.error("getTransaction timeout:",N,B)}},Or)),x=this.connection.onSignature(B,R=>{if(S){this.connection.removeSignatureListener(x);return}S=!0,C(R)},"confirmed"),this.connection.getSignatureStatus(B)};return await T(),{txIds:P.map(B=>B.txId),signedTxs:k}}else{let I=[];for(let P=0;P<k.length;P+=1){let T=await this.connection.sendRawTransaction(k[P].serialize(),{skipPreflight:y});I.push(T)}return{txIds:I,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){var y;let f=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:o,recentBlockhash:i}=f,r=Ge(f,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),a=M(M({},this.cluster==="devnet"?await $a(this.connection):await ja(this.connection)),t),u=Array.from(new Set([...n,...this.lookupTableAddress])),c=[];for(let b of u)a[b]===void 0&&c.push(new Wo(b));let l=await Za({connection:this.connection,address:c});for(let[b,g]of Object.entries(l))a[b]=g;let d=o?Wo.default.toBase58():i!=null?i:await Do(this.connection,this.blockhashCommitment),p=new Ti({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 hi(p);return m.sign(this.signers),{builder:this,transaction:m,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async b=>{var I;let{skipPreflight:g=!0,sendAndConfirm:A,notSendToRpc:k}=b||{};if(Po([m]),(I=this.owner)!=null&&I.isKeyPair){let P=await this.connection.sendTransaction(m,{skipPreflight:g});return A&&await Rr(this.connection,P),{txId:P,signedTx:m}}if(this.signAllTransactions){let P=await this.signAllTransactions([m]);if(this.signers.length)for(let T of P)try{T.sign(this.signers)}catch{}return{txId:k?"":await this.connection.sendTransaction(P[0],{skipPreflight:g}),signedTx:P[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async buildV0MultiTx(e){var c;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:o}=await this.buildV0(n),i=t.filter(l=>l.builder.instructions.length>0),r=[o,...i.map(l=>l.transaction)],a=[this.signers,...i.map(l=>l.signers)],u=[...this.instructionTypes,...i.map(l=>l.instructionTypes).flat()];return(c=this.owner)!=null&&c.signer&&a.forEach(l=>{l.some(d=>d.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),r.forEach(async(l,d)=>{l.sign(a[d])}),{builder:this,transactions:r,signers:a,instructionTypes:u,buildProps:n,execute:async l=>{var y;let{sequentially:d,onTxUpdate:p,recentBlockHash:m,skipPreflight:f=!0}=l||{};if(m&&r.forEach(b=>b.message.recentBlockhash=m),Po(r),(y=this.owner)!=null&&y.isKeyPair){if(d){let b=[];for(let g of r){let A=await this.connection.sendTransaction(g,{skipPreflight:f});await Rr(this.connection,A),b.push(A)}return{txIds:b,signedTxs:r}}return{txIds:await Promise.all(r.map(async b=>await this.connection.sendTransaction(b,{skipPreflight:f}))),signedTxs:r}}if(this.signAllTransactions){let b=await this.signAllTransactions(r);if(d){let g=0,A=[],k=async()=>{if(!b[g])return;let I=await this.connection.sendTransaction(b[g],{skipPreflight:f});A.push({txId:I,status:"sent",signedTx:b[g]}),p==null||p([...A]),g++;let P=!1,T=null,B=null,S=K=>{T!==null&&clearInterval(T),B!==null&&this.connection.removeSignatureListener(B);let x=A.findIndex(C=>C.txId===I);if(x>-1){if(A[x].status==="error"||A[x].status==="success")return;A[x].status=K.err?"error":"success"}p==null||p([...A]),K.err||k()};this.loopMultiTxStatus&&(T=setInterval(async()=>{var K;if(P){clearInterval(T);return}try{let x=await this.connection.getTransaction(I,{commitment:"confirmed",maxSupportedTransactionVersion:0});x&&(P=!0,clearInterval(T),S({err:((K=x.meta)==null?void 0:K.err)||null}),console.log("tx status from getTransaction:",I))}catch(x){P=!0,clearInterval(T),console.error("getTransaction timeout:",x,I)}},Or)),B=this.connection.onSignature(I,K=>{if(P){this.connection.removeSignatureListener(B);return}P=!0,S(K)},"confirmed"),this.connection.getSignatureStatus(I)};return k(),{txIds:[],signedTxs:b}}else{let g=[];for(let A=0;A<b.length;A+=1){let k=await this.connection.sendTransaction(b[A],{skipPreflight:f});g.push(k)}return{txIds:g,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var p;let d=e||{},{splitIns:t=[],computeBudgetConfig:n}=d,o=Ge(d,["splitIns","computeBudgetConfig"]),i=n?Cr(n):{instructions:[],instructionTypes:[]},r=this.signers.reduce((m,f)=>D(M({},m),{[f.publicKey.toBase58()]:f}),{}),a=[],u=[],c=[],l=0;if(this.allInstructions.forEach(m=>{let f=[...c,m],y=n?[...i.instructions,...f]:f,g=[...new Set(f.map(A=>A.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat()).values()].map(A=>new Wo(A));if(m!==t[l]&&c.length<12&&(Ai({instructions:y,payer:this.feePayer,signers:g})||Ai({instructions:f,payer:this.feePayer,signers:g})))c.push(m);else{if(c.length===0)throw Error("item ins too big");l+=m===t[l]?1:0,Ai({instructions:n?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:g})?a.push(new ki().add(...i.instructions,...c)):a.push(new ki().add(...c)),u.push(Array.from(new Set(c.map(A=>A.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat())).map(A=>r[A]).filter(A=>A!==void 0)),c=[m]}}),c.length>0){let f=[...new Set(c.map(y=>y.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(y=>r[y]).filter(y=>y!==void 0);Ai({instructions:n?[...i.instructions,...c]:[...c],payer:this.feePayer,signers:f.map(y=>y.publicKey)})?a.push(new ki().add(...i.instructions,...c)):a.push(new ki().add(...c)),u.push(f)}return a.forEach(m=>m.feePayer=this.feePayer),(p=this.owner)!=null&&p.signer&&u.forEach(m=>{m.some(f=>f.publicKey.equals(this.owner.publicKey))||m.push(this.owner.signer)}),{builder:this,transactions:a,signers:u,instructionTypes:this.instructionTypes,execute:async m=>{var I;let{sequentially:f,onTxUpdate:y,skipTxCount:b=0,recentBlockHash:g,skipPreflight:A=!0}=m||{},k=g!=null?g:await Do(this.connection,this.blockhashCommitment);if(a.forEach(async(P,T)=>{P.recentBlockhash=k,u[T].length&&P.sign(...u[T])}),Po(a),(I=this.owner)!=null&&I.isKeyPair){if(f){let P=0,T=[];for(let B of a){if(++P,P<=b){T.push("tx skipped");continue}let S=await es(this.connection,B,this.signers.find(K=>K.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:A});T.push(S)}return{txIds:T,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)),T=[...a.slice(0,b),...P];if(f){let B=0,S=[],K=async()=>{if(!T[B])return;B<b&&(S.push({txId:"",status:"success",signedTx:T[B]}),y==null||y([...S]),B++,K());let x=await this.connection.sendRawTransaction(T[B].serialize(),{skipPreflight:A});S.push({txId:x,status:"sent",signedTx:T[B]}),y==null||y([...S]),B++;let C=!1,R=null,N=null,L=O=>{R!==null&&clearInterval(R),N!==null&&this.connection.removeSignatureListener(N);let _=S.findIndex(W=>W.txId===x);if(_>-1){if(S[_].status==="error"||S[_].status==="success")return;S[_].status=O.err?"error":"success"}y==null||y([...S]),O.err||K()};this.loopMultiTxStatus&&(R=setInterval(async()=>{var O;if(C){clearInterval(R);return}try{let _=await this.connection.getTransaction(x,{commitment:"confirmed",maxSupportedTransactionVersion:0});_&&(C=!0,clearInterval(R),L({err:((O=_.meta)==null?void 0:O.err)||null}),console.log("tx status from getTransaction:",x))}catch(_){C=!0,clearInterval(R),console.error("getTransaction timeout:",_,x)}},Or)),N=this.connection.onSignature(x,O=>{if(C){this.connection.removeSignatureListener(N);return}C=!0,L(O)},"confirmed"),this.connection.getSignatureStatus(x)};return await K(),{txIds:S.map(x=>x.txId),signedTxs:T}}else{let B=[];for(let S=0;S<T.length;S+=1){let K=await this.connection.sendRawTransaction(T[S].serialize(),{skipPreflight:A});B.push(K)}return{txIds:B,signedTxs:T}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuildV0(e){var I;let k=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:o={},lookupTableAddress:i=[],insCountLimit:r=12}=k,a=Ge(k,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),u=M(M({},this.cluster==="devnet"?await $a(this.connection):await ja(this.connection)),o),c=Array.from(new Set([...this.lookupTableAddress,...i])),l=[];for(let P of c)u[P]===void 0&&l.push(new Wo(P));let d=await Za({connection:this.connection,address:l});for(let[P,T]of Object.entries(d))u[P]=T;let p=t?Cr(t):{instructions:[],instructionTypes:[]},m=await Do(this.connection,this.blockhashCommitment),f=this.signers.reduce((P,T)=>D(M({},P),{[T.publicKey.toBase58()]:T}),{}),y=[],b=[],g=[],A=0;if(this.allInstructions.forEach(P=>{let T=[...g,P],B=t?[...p.instructions,...T]:T;if(P!==n[A]&&g.length<r&&(wi({instructions:B,payer:this.feePayer,lookupTableAddressAccount:u})||wi({instructions:T,payer:this.feePayer,lookupTableAddressAccount:u})))g.push(P);else{if(g.length===0)throw Error("item ins too big");A+=P===n[A]?1:0;let S={};for(let K of[...new Set(c)])u[K]!==void 0&&(S[K]=u[K]);if(t&&wi({instructions:[...p.instructions,...g],payer:this.feePayer,lookupTableAddressAccount:u,recentBlockhash:m})){let K=new Ti({payerKey:this.feePayer,recentBlockhash:m,instructions:[...p.instructions,...g]}).compileToV0Message(Object.values(u));y.push(new hi(K))}else{let K=new Ti({payerKey:this.feePayer,recentBlockhash:m,instructions:[...g]}).compileToV0Message(Object.values(u));y.push(new hi(K))}b.push(Array.from(new Set(g.map(K=>K.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat())).map(K=>f[K]).filter(K=>K!==void 0)),g=[P]}}),g.length>0){let T=[...new Set(g.map(B=>B.keys.filter(S=>S.isSigner).map(S=>S.pubkey.toString())).flat()).values()].map(B=>f[B]).filter(B=>B!==void 0);if(t&&wi({instructions:[...p.instructions,...g],payer:this.feePayer,lookupTableAddressAccount:u,recentBlockhash:m})){let B=new Ti({payerKey:this.feePayer,recentBlockhash:m,instructions:[...p.instructions,...g]}).compileToV0Message(Object.values(u));y.push(new hi(B))}else{let B=new Ti({payerKey:this.feePayer,recentBlockhash:m,instructions:[...g]}).compileToV0Message(Object.values(u));y.push(new hi(B))}b.push(T)}return(I=this.owner)!=null&&I.signer&&b.forEach(P=>{P.some(T=>T.publicKey.equals(this.owner.publicKey))||P.push(this.owner.signer)}),y.forEach((P,T)=>{P.sign(b[T])}),{builder:this,transactions:y,buildProps:e,signers:b,instructionTypes:this.instructionTypes,execute:async P=>{var C;let{sequentially:T,onTxUpdate:B,skipTxCount:S=0,recentBlockHash:K,skipPreflight:x=!0}=P||{};if(y.map(async(R,N)=>{b[N].length&&R.sign(b[N]),K&&(R.message.recentBlockhash=K)}),Po(y),(C=this.owner)!=null&&C.isKeyPair){if(T){let R=0,N=[];for(let L of y){if(++R,R<=S){console.log("skip tx: ",R),N.push("tx skipped");continue}let O=await this.connection.sendTransaction(L,{skipPreflight:x});await Rr(this.connection,O),N.push(O)}return{txIds:N,signedTxs:y}}return{txIds:await Promise.all(y.map(async R=>await this.connection.sendTransaction(R,{skipPreflight:x}))),signedTxs:y}}if(this.signAllTransactions){let R=await this.signAllTransactions(y.slice(S,y.length)),N=[...y.slice(0,S),...R];if(T){let L=0,O=[],_=async()=>{if(!N[L])return;if(L<S){O.push({txId:"",status:"success",signedTx:N[L]}),B==null||B([...O]),L++,_();return}let W=await this.connection.sendTransaction(N[L],{skipPreflight:x});O.push({txId:W,status:"sent",signedTx:N[L]}),B==null||B([...O]),L++;let Y=!1,Q=null,te=null,re=se=>{Q!==null&&clearInterval(Q),te!==null&&this.connection.removeSignatureListener(te);let ne=O.findIndex(oe=>oe.txId===W);if(ne>-1){if(O[ne].status==="error"||O[ne].status==="success")return;O[ne].status=se.err?"error":"success"}B==null||B([...O]),se.err||_()};this.loopMultiTxStatus&&(Q=setInterval(async()=>{var se;if(Y){clearInterval(Q);return}try{let ne=await this.connection.getTransaction(W,{commitment:"confirmed",maxSupportedTransactionVersion:0});ne&&(Y=!0,clearInterval(Q),re({err:((se=ne.meta)==null?void 0:se.err)||null}),console.log("tx status from getTransaction:",W))}catch(ne){Y=!0,clearInterval(Q),console.error("getTransaction timeout:",ne,W)}},Or)),te=this.connection.onSignature(W,se=>{if(Y){this.connection.removeSignatureListener(te);return}Y=!0,re(se)},"confirmed"),this.connection.getSignatureStatus(W)};return _(),{txIds:[],signedTxs:N}}else{let L=[];for(let O=0;O<N.length;O+=1){let _=await this.connection.sendTransaction(N[O],{skipPreflight:x});L.push(_)}return{txIds:L,signedTxs:N}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}};var ts=(...s)=>s.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),He=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=ke(t)}createTxBuilder(e){return this.scope.checkOwner(),new Nr({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(ts(e))}logInfo(...e){this.logger.info(ts(e))}logAndCreateError(...e){let t=ts(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as kp,SystemProgram as Tp}from"@solana/web3.js";import hp from"bn.js";import{createCloseAccountInstruction as Ip,createInitializeAccountInstruction as Bp,createTransferInstruction as xp,TOKEN_PROGRAM_ID as Uo}from"@solana/spl-token";import{Keypair as gp,PublicKey as Fc}from"@solana/web3.js";import Pp from"bn.js";import{TOKEN_PROGRAM_ID as Ap}from"@solana/spl-token";function Pd(s){return s instanceof Uint8Array||s!=null&&typeof s=="object"&&s.constructor.name==="Uint8Array"}function ns(s,...e){if(!Pd(s))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(s.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${s.length}`)}function os(s,e=!0){if(s.destroyed)throw new Error("Hash instance has been destroyed");if(e&&s.finished)throw new Error("Hash#digest() has already been called")}function wc(s,e){ns(s);let t=e.outputLen;if(s.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var Fr=s=>new DataView(s.buffer,s.byteOffset,s.byteLength),yn=(s,e)=>s<<32-e|s>>>e;var cP=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Ad(s){if(typeof s!="string")throw new Error(`utf8ToBytes expected string, got ${typeof s}`);return new Uint8Array(new TextEncoder().encode(s))}function is(s){return typeof s=="string"&&(s=Ad(s)),ns(s),s}var Mr=class{clone(){return this._cloneInto()}},lP={}.toString;function kc(s){let e=n=>s().update(is(n)).digest(),t=s();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>s(),e}function wd(s,e,t,n){if(typeof s.setBigUint64=="function")return s.setBigUint64(e,t,n);let o=BigInt(32),i=BigInt(4294967295),r=Number(t>>o&i),a=Number(t&i),u=n?4:0,c=n?0:4;s.setUint32(e+u,r,n),s.setUint32(e+c,a,n)}var Tc=(s,e,t)=>s&e^~s&t,hc=(s,e,t)=>s&e^s&t^e&t,vr=class extends Mr{constructor(e,t,n,o){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=o,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Fr(this.buffer)}update(e){os(this);let{view:t,buffer:n,blockLen:o}=this;e=is(e);let i=e.length;for(let r=0;r<i;){let a=Math.min(o-this.pos,i-r);if(a===o){let u=Fr(e);for(;o<=i-r;r+=o)this.process(u,r);continue}n.set(e.subarray(r,r+a),this.pos),this.pos+=a,r+=a,this.pos===o&&(this.process(t,0),this.pos=0)}return this.length+=e.length,this.roundClean(),this}digestInto(e){os(this),wc(e,this),this.finished=!0;let{buffer:t,view:n,blockLen:o,isLE:i}=this,{pos:r}=this;t[r++]=128,this.buffer.subarray(r).fill(0),this.padOffset>o-r&&(this.process(n,0),r=0);for(let d=r;d<o;d++)t[d]=0;wd(n,o-8,BigInt(this.length*8),i),this.process(n,0);let a=Fr(e),u=this.outputLen;if(u%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let c=u/4,l=this.get();if(c>l.length)throw new Error("_sha2: outputLen bigger than state");for(let d=0;d<c;d++)a.setUint32(4*d,l[d],i)}digest(){let{buffer:e,outputLen:t}=this;this.digestInto(e);let n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());let{blockLen:t,buffer:n,length:o,finished:i,destroyed:r,pos:a}=this;return e.length=o,e.pos=a,e.finished=i,e.destroyed=r,o%t&&e.buffer.set(n),e}};var kd=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Zn=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),jn=new Uint32Array(64),rs=class extends vr{constructor(){super(64,32,8,!1),this.A=Zn[0]|0,this.B=Zn[1]|0,this.C=Zn[2]|0,this.D=Zn[3]|0,this.E=Zn[4]|0,this.F=Zn[5]|0,this.G=Zn[6]|0,this.H=Zn[7]|0}get(){let{A:e,B:t,C:n,D:o,E:i,F:r,G:a,H:u}=this;return[e,t,n,o,i,r,a,u]}set(e,t,n,o,i,r,a,u){this.A=e|0,this.B=t|0,this.C=n|0,this.D=o|0,this.E=i|0,this.F=r|0,this.G=a|0,this.H=u|0}process(e,t){for(let d=0;d<16;d++,t+=4)jn[d]=e.getUint32(t,!1);for(let d=16;d<64;d++){let p=jn[d-15],m=jn[d-2],f=yn(p,7)^yn(p,18)^p>>>3,y=yn(m,17)^yn(m,19)^m>>>10;jn[d]=y+jn[d-7]+f+jn[d-16]|0}let{A:n,B:o,C:i,D:r,E:a,F:u,G:c,H:l}=this;for(let d=0;d<64;d++){let p=yn(a,6)^yn(a,11)^yn(a,25),m=l+p+Tc(a,u,c)+kd[d]+jn[d]|0,y=(yn(n,2)^yn(n,13)^yn(n,22))+hc(n,o,i)|0;l=c,c=u,u=a,a=r+m|0,r=i,i=o,o=n,n=m+y|0}n=n+this.A|0,o=o+this.B|0,i=i+this.C|0,r=r+this.D|0,a=a+this.E|0,u=u+this.F|0,c=c+this.G|0,l=l+this.H|0,this.set(n,o,i,r,a,u,c,l)}roundClean(){jn.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var Ic=kc(()=>new rs);import{PublicKey as pp}from"@solana/web3.js";import Rc,{isBN as Lc}from"bn.js";import{bits as Td,BitStructure as hd,blob as Id,Blob as Bd,cstr as xd,f32 as Sd,f32be as Kd,f64 as Cd,f64be as Rd,greedy as Ld,Layout as Od,ns64 as Nd,ns64be as Md,nu64 as Fd,nu64be as vd,offset as _d,s16 as Vd,s16be as Ed,s24 as Dd,s24be as Wd,s32 as qd,s32be as Ud,s40 as Gd,s40be as zd,s48 as Xd,s48be as Yd,s8 as Hd,seq as Qd,struct as AP,Structure as Zd,u16 as jd,u16be as $d,u24 as Jd,u24be as ep,u32 as tp,u32be as np,u40 as op,u40be as ip,u48 as rp,u48be as ap,u8 as sp,UInt as up,union as cp,Union as lp,unionLayoutDiscriminator as mp,utf8 as dp}from"@solana/buffer-layout";var Ii=Od,Bc=Zd,xc=lp,wP=hd,as=up,Sc=Bd,kP=Ld,_r=sp,Je=jd,TP=Jd,Bi=tp,hP=op,IP=rp,BP=Fd,xP=$d,SP=ep,KP=np,CP=ip,RP=ap,LP=vd,OP=Hd,NP=Vd,MP=Dd,ct=qd,FP=Gd,vP=Xd,_P=Nd,VP=Ed,EP=Wd,DP=Ud,WP=zd,qP=Yd,UP=Md,GP=Sd,zP=Kd,XP=Cd,YP=Rd;var Kc=Qd,Cc=cp,HP=mp,Ae=Id,QP=xd,ZP=dp,ss=Td,us=_d;var Ao=class extends Ii{constructor(t,n,o){super(t,o);this.blob=Ae(t),this.signed=n}decode(t,n=0){let o=new Rc(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 Rc(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,o)}},Vr=class extends Ii{constructor(t){super(8,t);this._lower=ss(Bi(),!1),this._upper=ss(Bi(),!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 M(M({},o),i)}encode(t,n,o=0){return this._lower.encode(t,n,o)+this._upper.encode(t,n,o+this._lower.span)}};function V(s){return new as(1,s)}function De(s){return new as(4,s)}function w(s){return new Ao(8,!1,s)}function le(s){return new Ao(16,!1,s)}function Oc(s){return new Ao(1,!0,s)}function qo(s){return new Ao(8,!0,s)}function Nc(s){return new Ao(16,!0,s)}var Fn=class extends Ii{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 F(s){return new Fn(Ae(32),e=>new pp(e),e=>e.toBuffer(),s)}var cs=class extends Ii{constructor(t,n){super(-1,n);this.layout=t,this.discriminator=_r()}encode(t,n,o=0){return t==null?this.discriminator.encode(0,n,o):(this.discriminator.encode(1,n,o),this.layout.encode(t,n,o+1)+1)}decode(t,n=0){let o=this.discriminator.decode(t,n);if(o===0)return null;if(o===1)return this.layout.decode(t,n+1);throw new Error("Invalid option "+this.property)}getSpan(t,n=0){let o=this.discriminator.decode(t,n);if(o===0)return 1;if(o===1)return this.layout.getSpan(t,n+1)+1;throw new Error("Invalid option "+this.property)}};function tA(s,e){return new cs(s,e)}function ze(s){return new Fn(_r(),fp,yp,s)}function fp(s){if(s===0)return!1;if(s===1)return!0;throw new Error("Invalid bool: "+s)}function yp(s){return s?1:0}function Mc(s,e){let t=Bi("length"),n=v([t,j(s,us(t,-t.span),"values")]);return new Fn(n,({values:o})=>o,o=>({values:o}),e)}function nA(s,e,t){let n=v([w("tag"),e.replicate("data")]);function o({tag:i,data:r}){if(!i.eq(s))throw new Error("Invalid tag, expected: "+s.toString("hex")+", got: "+i.toString("hex"));return r}return new Fn(n,o,i=>({tag:s,data:i}),t)}function bp(s){let e=Bi("length"),t=v([e,Ae(us(e,-e.span),"data")]);return new Fn(t,({data:n})=>n,n=>({data:n}),s)}function Lt(s){return new Fn(bp(),e=>e.toString("utf-8"),e=>Buffer.from(e,"utf-8"),s)}function oA(s,e){let t=Cc(_r(),e);return s.forEach((n,o)=>t.addVariant(o,n,n.property)),t}function iA(s,e,t){let n=v([j(s,e,"values")]);return new Fn(n,({values:o})=>o,o=>({values:o}),t)}var ls=class extends Bc{decode(e,t){return super.decode(e,t)}};function v(s,e,t){return new ls(s,e,t)}var ms=class extends xc{encodeInstruction(e)