@raydium-io/raydium-sdk-v2
Version:
An SDK for building applications on top of Raydium.
1 lines • 230 kB
JavaScript
var fa=Object.defineProperty,ya=Object.defineProperties;var ba=Object.getOwnPropertyDescriptors;var En=Object.getOwnPropertySymbols;var vi=Object.prototype.hasOwnProperty,_i=Object.prototype.propertyIsEnumerable;var Fi=(l,e,t)=>e in l?fa(l,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[e]=t,v=(l,e)=>{for(var t in e||(e={}))vi.call(e,t)&&Fi(l,t,e[t]);if(En)for(var t of En(e))_i.call(e,t)&&Fi(l,t,e[t]);return l},D=(l,e)=>ya(l,ba(e));var it=(l,e)=>{var t={};for(var n in l)vi.call(l,n)&&e.indexOf(n)<0&&(t[n]=l[n]);if(l!=null&&En)for(var n of En(l))e.indexOf(n)<0&&_i.call(l,n)&&(t[n]=l[n]);return t};import{PublicKey as X,SystemProgram as la}from"@solana/web3.js";import{createTransferInstruction as ma,TOKEN_PROGRAM_ID as oe,TOKEN_2022_PROGRAM_ID as Rt,createAssociatedTokenAccountIdempotentInstruction as fn,createSyncNativeInstruction as da,createTransferCheckedInstruction as kc}from"@solana/spl-token";import $ from"bn.js";import ce from"decimal.js";import{PublicKey as Di}from"@solana/web3.js";import{get as Vi,set as ga}from"lodash";var Ko=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}},Ei={},Pa={};function te(l){let e=Vi(Ei,l);if(!e){let t=Vi(Pa,l);e=new Ko({name:l,logLevel:t}),ga(Ei,l,e)}return e}import{MINT_SIZE as Aa,TOKEN_PROGRAM_ID as wa,getTransferFeeConfig as ka,unpackMint as Ta}from"@solana/spl-token";var Co=te("Raydium_accountInfo_util");async function rt(l,e,t){let{batchRequest:n,commitment:o="confirmed",chunkCount:i=100}=v({batchRequest:!1},t),r=Ro(e,i),a=new Array(r.length).fill([]);if(n){let c=r.map(p=>{let d=l._buildArgs([p.map(f=>f.toBase58())],o,"base64");return{methodName:"getMultipleAccounts",args:d}}),u=Ro(c,10);a=(await(await Promise.all(u.map(async p=>await l._rpcBatchRequest(p)))).flat()).map(p=>(p.error&&Co.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${p.error.message}`),p.result.value.map(d=>{if(d){let{data:f,executable:g,lamports:y,owner:b,rentEpoch:P}=d;return f.length!==2&&f[1]!=="base64"&&Co.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(f[0],"base64"),executable:g,lamports:y,owner:new Di(b),rentEpoch:P}}return null})))}else try{a=await Promise.all(r.map(c=>l.getMultipleAccountsInfo(c,o)))}catch(c){c instanceof Error&&Co.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${c.message}`)}return a.flat()}async function dt(l,e,t){let n=await rt(l,e.map(o=>o.pubkey),t);return e.map((o,i)=>D(v({},o),{accountInfo:n[i]}))}async function Dn({connection:l,mints:e,config:t}){var i,r,a;if(e.length===0)return{};let n=await dt(l,e.map(c=>({pubkey:nt(c)})),t),o={};for(let c of n){if(!c.accountInfo||c.accountInfo.data.length<Aa){console.log("invalid mint account",c.pubkey.toBase58());continue}let u=Ta(c.pubkey,c.accountInfo,(i=c.accountInfo)==null?void 0:i.owner);o[c.pubkey.toString()]=D(v({},u),{programId:((r=c.accountInfo)==null?void 0:r.owner)||wa,feeConfig:(a=ka(u))!=null?a:void 0})}return o[Di.default.toBase58()]=o[we.toBase58()],o}import Et from"bn.js";import XC from"decimal.js";import Ra from"big.js";import Un from"bn.js";import ha from"toformat";var Ia=ha,bn=Ia;import qn from"big.js";import xa from"bn.js";import Sa from"decimal.js-light";import gn from"bn.js";var Wi=9007199254740991;function Pe(l){let e=te("Raydium_parseBigNumberish");if(l instanceof gn)return l;if(typeof l=="string"){if(l.match(/^-?[0-9]+$/))return new gn(l);e.logWithError(`invalid BigNumberish string: ${l}`)}return typeof l=="number"?(l%1&&e.logWithError(`BigNumberish number underflow: ${l}`),(l>=Wi||l<=-Wi)&&e.logWithError(`BigNumberish number overflow: ${l}`),new gn(String(l))):typeof l=="bigint"?new gn(l.toString()):(e.error(`invalid BigNumberish value: ${l}`),new gn(0))}var Wn=te("module/fraction"),Lo=bn(qn),Pn=bn(Sa),Ka={[0]:Pn.ROUND_DOWN,[1]:Pn.ROUND_HALF_UP,[2]:Pn.ROUND_UP},Ca={[0]:qn.roundDown,[1]:qn.roundHalfUp,[2]:qn.roundUp},le=class{constructor(e,t=new xa(1)){this.numerator=Pe(e),this.denominator=Pe(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new le(this.denominator,this.numerator)}add(e){let t=e instanceof le?e:new le(Pe(e));return this.denominator.eq(t.denominator)?new le(this.numerator.add(t.numerator),this.denominator):new le(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof le?e:new le(Pe(e));return this.denominator.eq(t.denominator)?new le(this.numerator.sub(t.numerator),this.denominator):new le(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof le?e:new le(Pe(e));return new le(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof le?e:new le(Pe(e));return new le(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},n=1){Number.isInteger(e)||Wn.logWithError(`${e} is not an integer.`),e<=0&&Wn.logWithError(`${e} is not positive.`),Pn.set({precision:e+1,rounding:Ka[n]});let o=new Pn(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return o.toFormat(o.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},n=1){return Number.isInteger(e)||Wn.logWithError(`${e} is not an integer.`),e<0&&Wn.logWithError(`${e} is negative.`),Lo.DP=e,Lo.RM=Ca[n]||1,new Lo(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var La=te("Raydium_amount"),qi=bn(Ra);function Oa(l,e){let t="0",n="0";if(l.includes(".")){let o=l.split(".");o.length===2?([t,n]=o,n=n.padEnd(e,"0")):La.logWithError(`invalid number string, num: ${l}`)}else t=l;return[t,n.slice(0,e)||n]}var ye=class extends le{constructor(t,n,o=!0,i){let r=new Un(0),a=Oo.pow(new Un(t.decimals));if(o)r=Pe(n);else{let c=new Un(0),u=new Un(0);if(typeof n=="string"||typeof n=="number"||typeof n=="bigint"){let[s,p]=Oa(n.toString(),t.decimals);c=Pe(s),u=Pe(p)}c=c.mul(a),r=c.add(u)}super(r,a);this.logger=te(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 ye(this.token,this.raw.add(t.raw))}subtract(t){return this.token.equals(t.token)||this.logger.logWithError("sub token not equals"),new ye(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 qi.DP=this.token.decimals,new qi(this.numerator.toString()).div(this.denominator.toString()).toFormat(t)}};import{PublicKey as Na}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ui}from"@solana/spl-token";var Gn={chainId:101,address:Na.default.toBase58(),programId:Ui.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"raydium",extensions:{coingeckoId:"solana"}},pt={chainId:101,address:"So11111111111111111111111111111111111111112",programId:Ui.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 Fo}from"@solana/web3.js";import{PublicKey as Te,SystemProgram as Gi,SYSVAR_RENT_PUBKEY as Ma}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Fa}from"@solana/spl-token";function N({pubkey:l,isSigner:e=!1,isWritable:t=!0}){return{pubkey:l,isWritable:t,isSigner:e}}var va=[N({pubkey:Fa,isWritable:!1}),N({pubkey:Gi.programId,isWritable:!1}),N({pubkey:Ma,isWritable:!1})];function No({publicKey:l,transformSol:e}){let t=Mo(l.toString());if(t instanceof Te)return e&&t.equals(Dt)?we:t;if(e&&t.toString()===Dt.toBase58())return we;if(typeof t=="string"){if(t===Te.default.toBase58())return Te.default;try{return new Te(t)}catch{throw new Error("invalid public key")}}throw new Error("invalid public key")}function Mo(l){try{return new Te(l)}catch{return l}}var Bt=new Te("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),at=new Te("SysvarRent111111111111111111111111111111111"),cl=new Te("SysvarC1ock11111111111111111111111111111111"),Ot=new Te("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),_a=new Te("Sysvar1nstructions1111111111111111111111111"),Va=Gi.programId,ll=new Te("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ml=new Te("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),dl=new Te("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),pl=new Te("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),fl=new Te("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),yl=new Te("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),bl=new Te("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),gl=new Te("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Pl=new Te("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Al=new Te("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),wl=new Te("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),we=new Te("So11111111111111111111111111111111111111112"),Dt=Te.default;function nt(l){return No({publicKey:l,transformSol:!0})}var vo=class{constructor({mint:e,decimals:t,symbol:n,name:o,skipMint:i=!1,isToken2022:r=!1}){if(e===Dt.toBase58()||e instanceof Fo&&Dt.equals(e)){this.decimals=pt.decimals,this.symbol=pt.symbol,this.name=pt.name,this.mint=new Fo(pt.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?Fo.default:No({publicKey:e}),this.isToken2022=r}equals(e){return this===e?!0:this.mint.equals(e.mint)}},Re=vo;Re.WSOL=new vo(D(v({},pt),{mint:pt.address}));var _o=class{constructor({decimals:e,symbol:t="UNKNOWN",name:n="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=n}equals(e){return this===e}},zn=_o;zn.SOL=new _o(Gn);import Ea from"bn.js";var zi=new le(new Ea(100)),ft=class extends le{toSignificant(e=5,t,n){return this.mul(zi).toSignificant(e,t,n)}toFixed(e=2,t,n){return this.mul(zi).toFixed(e,t,n)}};var Da=te("Raydium_price"),Ze=class extends le{constructor(t){let{baseToken:n,quoteToken:o,numerator:i,denominator:r}=t;super(i,r);this.baseToken=n,this.quoteToken=o,this.scalar=new le(Vo(n.decimals),Vo(o.decimals))}get raw(){return new le(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&&Da.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 HS}from"lodash";import Gl from"axios";var Xi={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"},Wa=D(v({},Xi),{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 pm=te("Raydium_Api");import{PublicKey as Mp,SystemProgram as Fp}from"@solana/web3.js";import{AccountLayout as Dp,createAssociatedTokenAccountIdempotentInstruction as Wp,TOKEN_PROGRAM_ID as qp,TOKEN_2022_PROGRAM_ID as Up}from"@solana/spl-token";import{PublicKey as Jt,sendAndConfirmTransaction as Go,SystemProgram as Ya,Transaction as kn,TransactionMessage as Tn,VersionedTransaction as hn}from"@solana/web3.js";import Ha from"axios";import{PublicKey as Eo,AddressLookupTableAccount as jt}from"@solana/web3.js";async function Do({connection:l,address:e,cluster:t="mainnet"}){let n=await rt(l,[...new Set(e.map(i=>i.toString()))].map(i=>new Eo(i))),o={};for(let i=0;i<e.length;i++){let r=n[i],a=e[i];if(!r)continue;let c=new jt({key:a,state:jt.deserialize(r.data)});o[a.toString()]=c,t==="devnet"?Zt[a.toString()]=c:Qt[a.toString()]=c}return o}var Qt={},Wo=async l=>{let e="AcL1Vo8oy1ULiavEcjSUcwfBSForXMudcZvDZy5nzJkU";if(Qt[e])return Qt;let t=new Eo(e),n=await l.getAccountInfo(t);return n&&(Qt[e]=new jt({key:t,state:jt.deserialize(n.data)})),Qt},Zt={},qo=async l=>{let e="EFhMuDw1PKEuckuFRW9PavNfTH4LKP5uKHgyXDmWpFCq";if(Zt[e])return Zt;let t=new Eo(e),n=await l.getAccountInfo(t);return n&&(Zt[e]=new jt({key:t,state:jt.deserialize(n.data)})),Zt};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 Yi,Keypair as Qi,PublicKey as qa,Transaction as Zi,TransactionMessage as Ua,VersionedTransaction as ji}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as Ga}from"@solana/spl-token";var Hi=te("Raydium_txUtil"),$i=1644;function Xn(l){let e=[],t=[];return l.microLamports&&(e.push(Yi.setComputeUnitPrice({microLamports:l.microLamports})),t.push(j.SetComputeUnitPrice)),l.units&&(e.push(Yi.setComputeUnitLimit({units:l.units})),t.push(j.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}async function $t(l,e){var n,o;let t=e!=null?e:"confirmed";return(o=await((n=l.getLatestBlockhash)==null?void 0:n.call(l,{commitment:t})))==null?void 0:o.blockhash}async function Yn(l,e){return l.getSignatureStatuses([e]),new Promise((t,n)=>{let o=setTimeout(n,6e4);l.onSignature(e,i=>{if(clearTimeout(o),!i.err){t("");return}n(Object.assign(i.err,{txId:e}))},"confirmed")})}function Uo(l,e){l.length<1&&Hi.logWithError(`no instructions provided: ${l.toString()}`),e.length<1&&Hi.logWithError(`no signers provided:, ${e.toString()}`);let t=new Zi;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...l);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<$i}catch{return!1}}function ie(l,e){let[t,n]=qa.findProgramAddressSync(l,e);return{publicKey:t,nonce:n}}function An({instructions:l,payer:e,signers:t}){return Uo(l,[e,...t])}function wn({instructions:l,payer:e,lookupTableAddressAccount:t,recentBlockhash:n=Qi.generate().publicKey.toString()}){let i=new Ua({payerKey:e,recentBlockhash:n,instructions:l}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new ji(i).serialize()).toString("base64").length<$i}catch{return!1}}var za=l=>Buffer.isBuffer(l)?l:l instanceof Uint8Array?Buffer.from(l.buffer,l.byteOffset,l.byteLength):Buffer.from(l),Xa=l=>{let e=l.serialize({requireAllSignatures:!1,verifySignatures:!1});l instanceof ji&&(e=za(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch{return e.toString("base64")}};function Wt(l){let e=[];return l.forEach(t=>{t instanceof Zi&&(t.recentBlockhash||(t.recentBlockhash=Ga.toBase58()),t.feePayer||(t.feePayer=Qi.generate().publicKey)),e.push(Xa(t))}),console.log("simulate tx string:",e),e}var Hn=2e3,Qn=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 Ha.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}=Xn(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...n),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(Ya.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new Jt(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!==Jt.default.toString())),this}async versionBuild({txVersion:e,extInfo:t,lookupTableAddress:n}){return e===0?await this.buildV0(D(v({},t||{}),{lookupTableAddress:n})):this.build(t)}build(e){var n;let t=new kn;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 s;let{recentBlockHash:i,skipPreflight:r=!0,sendAndConfirm:a,notSendToRpc:c}=o||{},u=i!=null?i:await $t(this.connection,this.blockhashCommitment);if(t.recentBlockhash=u,this.signers.length&&t.sign(...this.signers),Wt([t]),(s=this.owner)!=null&&s.isKeyPair)return{txId:a?await Go(this.connection,t,this.signers.find(d=>d.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:r}):await this.connection.sendRawTransaction(t.serialize(),{skipPreflight:r}),signedTx:t};if(this.signAllTransactions){let p=await this.signAllTransactions([t]);if(this.signers.length)for(let d of p)try{d.sign(...this.signers)}catch{}return{txId:c?"":await this.connection.sendRawTransaction(p[0].serialize(),{skipPreflight:r}),signedTx:p[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:e||{}}}buildMultiTx(e){var u;let{extraPreBuildData:t=[],extInfo:n}=e,{transaction:o}=this.build(n),i=t.filter(s=>s.transaction.instructions.length>0),r=[o,...i.map(s=>s.transaction)],a=[this.signers,...i.map(s=>s.signers)],c=[...this.instructionTypes,...i.map(s=>s.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(s=>{s.some(p=>p.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:r,signers:a,instructionTypes:c,execute:async s=>{var P;let{sequentially:p,onTxUpdate:d,skipTxCount:f=0,recentBlockHash:g,skipPreflight:y=!0}=s||{},b=g!=null?g:await $t(this.connection,this.blockhashCommitment);if((P=this.owner)!=null&&P.isKeyPair){if(p){let w=[],I=0;for(let B of r){if(++I,I<=f)continue;let A=await Go(this.connection,B,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});w.push(A)}return{txIds:w,signedTxs:r}}return{txIds:await await Promise.all(r.map(async w=>(w.recentBlockhash=b,await this.connection.sendRawTransaction(w.serialize(),{skipPreflight:y})))),signedTxs:r}}if(this.signAllTransactions){let w=r.map((B,A)=>(B.recentBlockhash=b,a[A].length&&B.sign(...a[A]),B));Wt(w);let I=await this.signAllTransactions(w);if(p){let B=0,A=[],k=async()=>{if(!I[B])return;let T=await this.connection.sendRawTransaction(I[B].serialize(),{skipPreflight:y});A.push({txId:T,status:"sent",signedTx:I[B]}),d==null||d([...A]),B++;let K=!1,S=null,x=null,_=O=>{S!==null&&clearInterval(S),x!==null&&this.connection.removeSignatureListener(x);let V=A.findIndex(E=>E.txId===T);if(V>-1){if(A[V].status==="error"||A[V].status==="success")return;A[V].status=O.err?"error":"success"}d==null||d([...A]),O.err||k()};this.loopMultiTxStatus&&(S=setInterval(async()=>{var O;if(K){clearInterval(S);return}try{let V=await this.connection.getTransaction(T,{commitment:"confirmed",maxSupportedTransactionVersion:0});V&&(K=!0,clearInterval(S),_({err:((O=V.meta)==null?void 0:O.err)||null}),console.log("tx status from getTransaction:",T))}catch(V){K=!0,clearInterval(S),console.error("getTransaction timeout:",V,T)}},Hn)),x=this.connection.onSignature(T,O=>{if(K){this.connection.removeSignatureListener(x);return}K=!0,_(O)},"confirmed"),this.connection.getSignatureStatus(T)};return await k(),{txIds:A.map(T=>T.txId),signedTxs:I}}else{let B=[];for(let A=0;A<I.length;A+=1){let k=await this.connection.sendRawTransaction(I[A].serialize(),{skipPreflight:y});B.push(k)}return{txIds:B,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async versionMultiBuild({extraPreBuildData:e,txVersion:t,extInfo:n}){return t===0?await this.buildV0MultiTx({extraPreBuildData:e,buildProps:n||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:n})}async buildV0(e){var y;let g=e||{},{lookupTableCache:t={},lookupTableAddress:n=[],forerunCreate:o,recentBlockhash:i}=g,r=it(g,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),a=v(v({},this.cluster==="devnet"?await qo(this.connection):await Wo(this.connection)),t),c=Array.from(new Set([...n,...this.lookupTableAddress])),u=[];for(let b of c)a[b]===void 0&&u.push(new Jt(b));let s=await Do({connection:this.connection,address:u});for(let[b,P]of Object.entries(s))a[b]=P;let p=o?Jt.default.toBase58():i!=null?i:await $t(this.connection,this.blockhashCommitment),d=new Tn({payerKey:this.feePayer,recentBlockhash:p,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(a));((y=this.owner)==null?void 0:y.signer)&&!this.signers.some(b=>b.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let f=new hn(d);return f.sign(this.signers),{builder:this,transaction:f,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:async b=>{var B;let{skipPreflight:P=!0,sendAndConfirm:w,notSendToRpc:I}=b||{};if(Wt([f]),(B=this.owner)!=null&&B.isKeyPair){let A=await this.connection.sendTransaction(f,{skipPreflight:P});return w&&await Yn(this.connection,A),{txId:A,signedTx:f}}if(this.signAllTransactions){let A=await this.signAllTransactions([f]);if(this.signers.length)for(let k of A)try{k.sign(this.signers)}catch{}return{txId:I?"":await this.connection.sendTransaction(A[0],{skipPreflight:P}),signedTx:A[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:r||{}}}async buildV0MultiTx(e){var u;let{extraPreBuildData:t=[],buildProps:n}=e,{transaction:o}=await this.buildV0(n),i=t.filter(s=>s.builder.instructions.length>0),r=[o,...i.map(s=>s.transaction)],a=[this.signers,...i.map(s=>s.signers)],c=[...this.instructionTypes,...i.map(s=>s.instructionTypes).flat()];return(u=this.owner)!=null&&u.signer&&a.forEach(s=>{s.some(p=>p.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),r.forEach(async(s,p)=>{s.sign(a[p])}),{builder:this,transactions:r,signers:a,instructionTypes:c,buildProps:n,execute:async s=>{var y;let{sequentially:p,onTxUpdate:d,recentBlockHash:f,skipPreflight:g=!0}=s||{};if(f&&r.forEach(b=>b.message.recentBlockhash=f),Wt(r),(y=this.owner)!=null&&y.isKeyPair){if(p){let b=[];for(let P of r){let w=await this.connection.sendTransaction(P,{skipPreflight:g});await Yn(this.connection,w),b.push(w)}return{txIds:b,signedTxs:r}}return{txIds:await Promise.all(r.map(async b=>await this.connection.sendTransaction(b,{skipPreflight:g}))),signedTxs:r}}if(this.signAllTransactions){let b=await this.signAllTransactions(r);if(p){let P=0,w=[],I=async()=>{if(!b[P])return;let B=await this.connection.sendTransaction(b[P],{skipPreflight:g});w.push({txId:B,status:"sent",signedTx:b[P]}),d==null||d([...w]),P++;let A=!1,k=null,T=null,K=S=>{k!==null&&clearInterval(k),T!==null&&this.connection.removeSignatureListener(T);let x=w.findIndex(_=>_.txId===B);if(x>-1){if(w[x].status==="error"||w[x].status==="success")return;w[x].status=S.err?"error":"success"}d==null||d([...w]),S.err||I()};this.loopMultiTxStatus&&(k=setInterval(async()=>{var S;if(A){clearInterval(k);return}try{let x=await this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:0});x&&(A=!0,clearInterval(k),K({err:((S=x.meta)==null?void 0:S.err)||null}),console.log("tx status from getTransaction:",B))}catch(x){A=!0,clearInterval(k),console.error("getTransaction timeout:",x,B)}},Hn)),T=this.connection.onSignature(B,S=>{if(A){this.connection.removeSignatureListener(T);return}A=!0,K(S)},"confirmed"),this.connection.getSignatureStatus(B)};return I(),{txIds:[],signedTxs:b}}else{let P=[];for(let w=0;w<b.length;w+=1){let I=await this.connection.sendTransaction(b[w],{skipPreflight:g});P.push(I)}return{txIds:P,signedTxs:b}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:n||{}}}async sizeCheckBuild(e){var d;let p=e||{},{splitIns:t=[],computeBudgetConfig:n}=p,o=it(p,["splitIns","computeBudgetConfig"]),i=n?Xn(n):{instructions:[],instructionTypes:[]},r=this.signers.reduce((f,g)=>D(v({},f),{[g.publicKey.toBase58()]:g}),{}),a=[],c=[],u=[],s=0;if(this.allInstructions.forEach(f=>{let g=[...u,f],y=n?[...i.instructions,...g]:g,P=[...new Set(g.map(w=>w.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat()).values()].map(w=>new Jt(w));if(f!==t[s]&&u.length<12&&(An({instructions:y,payer:this.feePayer,signers:P})||An({instructions:g,payer:this.feePayer,signers:P})))u.push(f);else{if(u.length===0)throw Error("item ins too big");s+=f===t[s]?1:0,An({instructions:n?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:P})?a.push(new kn().add(...i.instructions,...u)):a.push(new kn().add(...u)),c.push(Array.from(new Set(u.map(w=>w.keys.filter(I=>I.isSigner).map(I=>I.pubkey.toString())).flat())).map(w=>r[w]).filter(w=>w!==void 0)),u=[f]}}),u.length>0){let g=[...new Set(u.map(y=>y.keys.filter(b=>b.isSigner).map(b=>b.pubkey.toString())).flat()).values()].map(y=>r[y]).filter(y=>y!==void 0);An({instructions:n?[...i.instructions,...u]:[...u],payer:this.feePayer,signers:g.map(y=>y.publicKey)})?a.push(new kn().add(...i.instructions,...u)):a.push(new kn().add(...u)),c.push(g)}return a.forEach(f=>f.feePayer=this.feePayer),(d=this.owner)!=null&&d.signer&&c.forEach(f=>{f.some(g=>g.publicKey.equals(this.owner.publicKey))||f.push(this.owner.signer)}),{builder:this,transactions:a,signers:c,instructionTypes:this.instructionTypes,execute:async f=>{var B;let{sequentially:g,onTxUpdate:y,skipTxCount:b=0,recentBlockHash:P,skipPreflight:w=!0}=f||{},I=P!=null?P:await $t(this.connection,this.blockhashCommitment);if(a.forEach(async(A,k)=>{A.recentBlockhash=I,c[k].length&&A.sign(...c[k])}),Wt(a),(B=this.owner)!=null&&B.isKeyPair){if(g){let A=0,k=[];for(let T of a){if(++A,A<=b){k.push("tx skipped");continue}let K=await Go(this.connection,T,this.signers.find(S=>S.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:w});k.push(K)}return{txIds:k,signedTxs:a}}return{txIds:await Promise.all(a.map(async A=>await this.connection.sendRawTransaction(A.serialize(),{skipPreflight:w}))),signedTxs:a}}if(this.signAllTransactions){let A=await this.signAllTransactions(a.slice(b,a.length)),k=[...a.slice(0,b),...A];if(g){let T=0,K=[],S=async()=>{if(!k[T])return;T<b&&(K.push({txId:"",status:"success",signedTx:k[T]}),y==null||y([...K]),T++,S());let x=await this.connection.sendRawTransaction(k[T].serialize(),{skipPreflight:w});K.push({txId:x,status:"sent",signedTx:k[T]}),y==null||y([...K]),T++;let _=!1,O=null,V=null,E=q=>{O!==null&&clearInterval(O),V!==null&&this.connection.removeSignatureListener(V);let U=K.findIndex(z=>z.txId===x);if(U>-1){if(K[U].status==="error"||K[U].status==="success")return;K[U].status=q.err?"error":"success"}y==null||y([...K]),q.err||S()};this.loopMultiTxStatus&&(O=setInterval(async()=>{var q;if(_){clearInterval(O);return}try{let U=await this.connection.getTransaction(x,{commitment:"confirmed",maxSupportedTransactionVersion:0});U&&(_=!0,clearInterval(O),E({err:((q=U.meta)==null?void 0:q.err)||null}),console.log("tx status from getTransaction:",x))}catch(U){_=!0,clearInterval(O),console.error("getTransaction timeout:",U,x)}},Hn)),V=this.connection.onSignature(x,q=>{if(_){this.connection.removeSignatureListener(V);return}_=!0,E(q)},"confirmed"),this.connection.getSignatureStatus(x)};return await S(),{txIds:K.map(x=>x.txId),signedTxs:k}}else{let T=[];for(let K=0;K<k.length;K+=1){let S=await this.connection.sendRawTransaction(k[K].serialize(),{skipPreflight:w});T.push(S)}return{txIds:T,signedTxs:k}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:o||{}}}async sizeCheckBuildV0(e){var B;let I=e||{},{computeBudgetConfig:t,splitIns:n=[],lookupTableCache:o={},lookupTableAddress:i=[],insCountLimit:r=12}=I,a=it(I,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress","insCountLimit"]),c=v(v({},this.cluster==="devnet"?await qo(this.connection):await Wo(this.connection)),o),u=Array.from(new Set([...this.lookupTableAddress,...i])),s=[];for(let A of u)c[A]===void 0&&s.push(new Jt(A));let p=await Do({connection:this.connection,address:s});for(let[A,k]of Object.entries(p))c[A]=k;let d=t?Xn(t):{instructions:[],instructionTypes:[]},f=await $t(this.connection,this.blockhashCommitment),g=this.signers.reduce((A,k)=>D(v({},A),{[k.publicKey.toBase58()]:k}),{}),y=[],b=[],P=[],w=0;if(this.allInstructions.forEach(A=>{let k=[...P,A],T=t?[...d.instructions,...k]:k;if(A!==n[w]&&P.length<r&&(wn({instructions:T,payer:this.feePayer,lookupTableAddressAccount:c})||wn({instructions:k,payer:this.feePayer,lookupTableAddressAccount:c})))P.push(A);else{if(P.length===0)throw Error("item ins too big");w+=A===n[w]?1:0;let K={};for(let S of[...new Set(u)])c[S]!==void 0&&(K[S]=c[S]);if(t&&wn({instructions:[...d.instructions,...P],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:f})){let S=new Tn({payerKey:this.feePayer,recentBlockhash:f,instructions:[...d.instructions,...P]}).compileToV0Message(Object.values(c));y.push(new hn(S))}else{let S=new Tn({payerKey:this.feePayer,recentBlockhash:f,instructions:[...P]}).compileToV0Message(Object.values(c));y.push(new hn(S))}b.push(Array.from(new Set(P.map(S=>S.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat())).map(S=>g[S]).filter(S=>S!==void 0)),P=[A]}}),P.length>0){let k=[...new Set(P.map(T=>T.keys.filter(K=>K.isSigner).map(K=>K.pubkey.toString())).flat()).values()].map(T=>g[T]).filter(T=>T!==void 0);if(t&&wn({instructions:[...d.instructions,...P],payer:this.feePayer,lookupTableAddressAccount:c,recentBlockhash:f})){let T=new Tn({payerKey:this.feePayer,recentBlockhash:f,instructions:[...d.instructions,...P]}).compileToV0Message(Object.values(c));y.push(new hn(T))}else{let T=new Tn({payerKey:this.feePayer,recentBlockhash:f,instructions:[...P]}).compileToV0Message(Object.values(c));y.push(new hn(T))}b.push(k)}return(B=this.owner)!=null&&B.signer&&b.forEach(A=>{A.some(k=>k.publicKey.equals(this.owner.publicKey))||A.push(this.owner.signer)}),y.forEach((A,k)=>{A.sign(b[k])}),{builder:this,transactions:y,buildProps:e,signers:b,instructionTypes:this.instructionTypes,execute:async A=>{var _;let{sequentially:k,onTxUpdate:T,skipTxCount:K=0,recentBlockHash:S,skipPreflight:x=!0}=A||{};if(y.map(async(O,V)=>{b[V].length&&O.sign(b[V]),S&&(O.message.recentBlockhash=S)}),Wt(y),(_=this.owner)!=null&&_.isKeyPair){if(k){let O=0,V=[];for(let E of y){if(++O,O<=K){console.log("skip tx: ",O),V.push("tx skipped");continue}let q=await this.connection.sendTransaction(E,{skipPreflight:x});await Yn(this.connection,q),V.push(q)}return{txIds:V,signedTxs:y}}return{txIds:await Promise.all(y.map(async O=>await this.connection.sendTransaction(O,{skipPreflight:x}))),signedTxs:y}}if(this.signAllTransactions){let O=await this.signAllTransactions(y.slice(K,y.length)),V=[...y.slice(0,K),...O];if(k){let E=0,q=[],U=async()=>{if(!V[E])return;if(E<K){q.push({txId:"",status:"success",signedTx:V[E]}),T==null||T([...q]),E++,U();return}let z=await this.connection.sendTransaction(V[E],{skipPreflight:x});q.push({txId:z,status:"sent",signedTx:V[E]}),T==null||T([...q]),E++;let se=!1,ee=null,be=null,ge=ue=>{ee!==null&&clearInterval(ee),be!==null&&this.connection.removeSignatureListener(be);let de=q.findIndex(Ce=>Ce.txId===z);if(de>-1){if(q[de].status==="error"||q[de].status==="success")return;q[de].status=ue.err?"error":"success"}T==null||T([...q]),ue.err||U()};this.loopMultiTxStatus&&(ee=setInterval(async()=>{var ue;if(se){clearInterval(ee);return}try{let de=await this.connection.getTransaction(z,{commitment:"confirmed",maxSupportedTransactionVersion:0});de&&(se=!0,clearInterval(ee),ge({err:((ue=de.meta)==null?void 0:ue.err)||null}),console.log("tx status from getTransaction:",z))}catch(de){se=!0,clearInterval(ee),console.error("getTransaction timeout:",de,z)}},Hn)),be=this.connection.onSignature(z,ue=>{if(se){this.connection.removeSignatureListener(be);return}se=!0,ge(ue)},"confirmed"),this.connection.getSignatureStatus(z)};return U(),{txIds:[],signedTxs:V}}else{let E=[];for(let q=0;q<V.length;q+=1){let U=await this.connection.sendTransaction(V[q],{skipPreflight:x});E.push(U)}return{txIds:E,signedTxs:V}}}throw new Error("please provide owner in keypair format or signAllTransactions function")},extInfo:a||{}}}};var zo=(...l)=>l.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch{return e}}).join(", "),je=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=te(t)}createTxBuilder(e){return this.scope.checkOwner(),new Qn({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(zo(e))}logInfo(...e){this.logger.info(zo(e))}logAndCreateError(...e){let t=zo(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};import{PublicKey as gs,SystemProgram as Ps}from"@solana/web3.js";import As from"bn.js";import{createCloseAccountInstruction as ws,createInitializeAccountInstruction as ks,createTransferInstruction as Ip,TOKEN_PROGRAM_ID as Bn}from"@solana/spl-token";import{Keypair as ps,PublicKey as fs}from"@solana/web3.js";import cp from"bn.js";import{TOKEN_PROGRAM_ID as ys}from"@solana/spl-token";function Qa(l){return l instanceof Uint8Array||l!=null&&typeof l=="object"&&l.constructor.name==="Uint8Array"}function Xo(l,...e){if(!Qa(l))throw new Error("Uint8Array expected");if(e.length>0&&!e.includes(l.length))throw new Error(`Uint8Array expected of length ${e}, not of length=${l.length}`)}function Yo(l,e=!0){if(l.destroyed)throw new Error("Hash instance has been destroyed");if(e&&l.finished)throw new Error("Hash#digest() has already been called")}function Ji(l,e){Xo(l);let t=e.outputLen;if(l.length<t)throw new Error(`digestInto() expects output buffer of length at least ${t}`)}var jn=l=>new DataView(l.buffer,l.byteOffset,l.byteLength),yt=(l,e)=>l<<32-e|l>>>e;var nd=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Za(l){if(typeof l!="string")throw new Error(`utf8ToBytes expected string, got ${typeof l}`);return new Uint8Array(new TextEncoder().encode(l))}function Ho(l){return typeof l=="string"&&(l=Za(l)),Xo(l),l}var Zn=class{clone(){return this._cloneInto()}},od={}.toString;function er(l){let e=n=>l().update(Ho(n)).digest(),t=l();return e.outputLen=t.outputLen,e.blockLen=t.blockLen,e.create=()=>l(),e}function ja(l,e,t,n){if(typeof l.setBigUint64=="function")return l.setBigUint64(e,t,n);let o=BigInt(32),i=BigInt(4294967295),r=Number(t>>o&i),a=Number(t&i),c=n?4:0,u=n?0:4;l.setUint32(e+c,r,n),l.setUint32(e+u,a,n)}var tr=(l,e,t)=>l&e^~l&t,nr=(l,e,t)=>l&e^l&t^e&t,$n=class extends Zn{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=jn(this.buffer)}update(e){Yo(this);let{view:t,buffer:n,blockLen:o}=this;e=Ho(e);let i=e.length;for(let r=0;r<i;){let a=Math.min(o-this.pos,i-r);if(a===o){let c=jn(e);for(;o<=i-r;r+=o)this.process(c,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){Yo(this),Ji(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 p=r;p<o;p++)t[p]=0;ja(n,o-8,BigInt(this.length*8),i),this.process(n,0);let a=jn(e),c=this.outputLen;if(c%4)throw new Error("_sha2: outputLen should be aligned to 32bit");let u=c/4,s=this.get();if(u>s.length)throw new Error("_sha2: outputLen bigger than state");for(let p=0;p<u;p++)a.setUint32(4*p,s[p],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 $a=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]),Nt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Mt=new Uint32Array(64),Qo=class extends $n{constructor(){super(64,32,8,!1),this.A=Nt[0]|0,this.B=Nt[1]|0,this.C=Nt[2]|0,this.D=Nt[3]|0,this.E=Nt[4]|0,this.F=Nt[5]|0,this.G=Nt[6]|0,this.H=Nt[7]|0}get(){let{A:e,B:t,C:n,D:o,E:i,F:r,G:a,H:c}=this;return[e,t,n,o,i,r,a,c]}set(e,t,n,o,i,r,a,c){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=c|0}process(e,t){for(let p=0;p<16;p++,t+=4)Mt[p]=e.getUint32(t,!1);for(let p=16;p<64;p++){let d=Mt[p-15],f=Mt[p-2],g=yt(d,7)^yt(d,18)^d>>>3,y=yt(f,17)^yt(f,19)^f>>>10;Mt[p]=y+Mt[p-7]+g+Mt[p-16]|0}let{A:n,B:o,C:i,D:r,E:a,F:c,G:u,H:s}=this;for(let p=0;p<64;p++){let d=yt(a,6)^yt(a,11)^yt(a,25),f=s+d+tr(a,c,u)+$a[p]+Mt[p]|0,y=(yt(n,2)^yt(n,13)^yt(n,22))+nr(n,o,i)|0;s=u,u=c,c=a,a=r+f|0,r=i,i=o,o=n,n=f+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,c=c+this.F|0,u=u+this.G|0,s=s+this.H|0,this.set(n,o,i,r,a,c,u,s)}roundClean(){Mt.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};var or=er(()=>new Qo);import{PublicKey as ls}from"@solana/web3.js";import ur,{isBN as cr}from"bn.js";import{bits as Ja,BitStructure as dd,blob as es,Blob as pd,cstr as fd,f32 as yd,f32be as bd,f64 as gd,f64be as Pd,greedy as Ad,Layout as ts,ns64 as wd,ns64be as kd,nu64 as Td,nu64be as hd,offset as ns,s16 as Id,s16be as Bd,s24 as xd,s24be as Sd,s32 as os,s32be as Kd,s40 as Cd,s40be as Rd,s48 as Ld,s48be as Od,s8 as Nd,seq as is,struct as Md,Structure as rs,u16 as as,u16be as Fd,u24 as vd,u24be as _d,u32 as ss,u32be as Vd,u40 as Ed,u40be as Dd,u48 as Wd,u48be as qd,u8 as us,UInt as cs,union as Ud,Union as Gd,unionLayoutDiscriminator as zd,utf8 as Xd}from"@solana/buffer-layout";var Jn=ts,ir=rs;var Zo=cs;var rr=us,Me=as;var eo=ss;var Fe=os;var ar=is;var J=es;var jo=Ja,sr=ns;var Ut=class extends Jn{constructor(t,n,o){super(t,o);this.blob=J(t),this.signed=n}decode(t,n=0){let o=new ur(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 ur(t)),this.signed&&(t=t.toTwos(this.span*8)),this.blob.encode(t.toArrayLike(Buffer,"le",this.span),n,o)}},to=class extends Jn{constructor(t){super(8,t);this._lower=jo(eo(),!1),this._upper=jo(eo(),!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 v(v({},o),i)}encode(t,n,o=0){return this._lower.encode(t,n,o)+this._upper.encode(t,n,o+this._lower.span)}};function M(l){return new Zo(1,l)}function he(l){return new Zo(4,l)}function m(l){return new Ut(8,!1,l)}function Y(l){return new Ut(16,!1,l)}function lr(l){return new Ut(1,!0,l)}function en(l){return new Ut(8,!0,l)}function mr(l){return new Ut(16,!0,l)}var In=class extends Jn{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(l){return new In(J(32),e=>new ls(e),e=>e.toBuffer(),l)}function Ie(l){return new In(rr(),ms,ds,l)}function ms(l){if(l===0)return!1;if(l===1)return!0;throw new Error("Invalid bool: "+l)}function ds(l){return l?1:0}function dr(l,e){let t=eo("length"),n=L([t,W(l,sr(t,-t.span),"values")]);return new In(n,({values:o})=>o,o=>({values:o}),e)}var $o=class extends ir{decode(e,t){return super.decode(e,t)}};function L(l,e,t){return new $o(l,e,t)}function W(l,e,t){let n,o=typeof e=="number"?e:cr(e)?e.toNumber():new Proxy(e,{get(i,r){if(!n){let a=Reflect.get(i,"count");n=cr(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 ar(l,o,t)}var tn=L([h("mint"),h("owner"),m("amount"),he("delegateOption"),h("delegate"),M("state"),he("isNativeOption"),m("isNative"),m("delegatedAmount"),he("closeAuthorityOption"),h("closeAuthority")]);function nn({fromPublicKey:l,programId:e=ys,assignSeed:t}){let n=t?btoa(t).slice(0,32):ps.generate().publicKey.toBase58().slice(0,32);return{publicKey:bs(l,n,e),seed:n}}function bs(l,e,t){let n=Buffer.concat([l.toBuffer(),Buffer.from(e),t.toBuffer()]),o=or(n);return new fs(o)}function pr(l){let{mint:e,tokenAccount:t,owner:n,programId:o=Bn}=l;return ks(t,e,n,o)}function on(l){let{tokenAccount:e,payer:t,multiSigners:n=[],owner:o,programId:i=Bn}=l;return ws(e,t,o,n,i)}async function no(l){let{connection:e,amount:t,commitment:n,payer:o,owner:i,skipCloseAccount:r}=l,a=await e.getMinimumBalanceForRentExemption(tn.span,n),c=Pe(t).add(new As(a)),u=nn({fromPublicKey:o,programId:Bn});return{addresses:{newAccount:u.publicKey},signers:[],instructions:[Ps.createAccountWithSeed({fromPubkey:o,basePubkey:o,seed:u.seed,newAccountPubkey:u.publicKey,lamports:c.toNumber(),space:tn.span,programId:Bn}),pr({mint:new gs(pt.address),tokenAccount:u.publicKey,owner:i,programId:Bn})],instructionTypes:[j.CreateAccount,j.InitAccount],endInstructionTypes:r?[]:[j.CloseAccount],endInstructions:r?[]:[on({tokenAccount:u.publicKey,payer:o,owner:i})]}}import{PublicKey as vA,SystemProgram as _A}from"@solana/web3.js";import{createAssociatedTokenAccountIdempotentInstruction as EA}from"@solana/spl-token";import{PublicKey as Ts}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as hs}from"@solana/spl-token";function me(l,e,t){return ie([l.toBuffer(),(t!=null?t:hs).toBuffer(),e.toBuffer()],new Ts("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"))}import{PublicKey as H}from"@solana/web3.js";var fr=new H("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),yr=new H("CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T"),br=new H("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z"),Jo=new H("FarmqiPv5eAj3j1GMdMCMUGXqPUvmquZtMy86QH6rzhG"),ef=new H("CLaimxFqjHzgTJtAGHU47NPhg6qrc5sCnpC4tBLyABQS"),Is=new H("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),ei=new H("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),ti=new H("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),tf=new H("5quBtoiQqxF9Jv6KYKctB59NT3gtJD2Y65kdnB1Uev3h"),gr=new H("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),ni=new H("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),Bs=new H("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),xs=new H("kN1kEznaF5Xbd8LYuqtEFcxzWSBk5Fv6ygX6SqEGJVy"),oo=new H("CDSr3ssLcRB6XYPJwAfFt18MZvEZp4LjHcvzBVZ45duo"),nf=new H("routeUGWgWzqBWFcrCfv8tritsqukccJPu3q5GPP3xS"),Ss=new H("7YttLkHDoNj9wyDur5pM1ejNaAvT9X4eqaYcHQqtj2G5"),io=new H("CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"),Ks=new H("GpMZbSM2GgvTKHJirzeGfMFoaZ8UR2X7F4v8vHTvxFbL"),of=new H("DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"),Cs=new H("LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"),Rs=new H("3f7GcQFG397GAaEnv51zR6tsTVihYRydnydDD1cXekxH"),Ls=new H("LanMV9sAd7wArD4vJFi2q