@sega-so/sega-sdk
Version:
An SDK for building applications on top of SEGA.
2 lines • 37.3 kB
JavaScript
var it=Object.defineProperty,ot=Object.defineProperties;var st=Object.getOwnPropertyDescriptors;var le=Object.getOwnPropertySymbols;var _e=Object.prototype.hasOwnProperty,Ve=Object.prototype.propertyIsEnumerable;var Ee=(n,e,t)=>e in n?it(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,F=(n,e)=>{for(var t in e||(e={}))_e.call(e,t)&&Ee(n,t,e[t]);if(le)for(var t of le(e))Ve.call(e,t)&&Ee(n,t,e[t]);return n},_=(n,e)=>ot(n,st(e));var me=(n,e)=>{var t={};for(var r in n)_e.call(n,r)&&e.indexOf(r)<0&&(t[r]=n[r]);if(n!=null&&le)for(var r of le(n))e.indexOf(r)<0&&Ve.call(n,r)&&(t[r]=n[r]);return t};var b=(n,e,t)=>new Promise((r,g)=>{var c=T=>{try{o(t.next(T))}catch(i){g(i)}},m=T=>{try{o(t.throw(T))}catch(i){g(i)}},o=T=>T.done?r(T.value):Promise.resolve(T.value).then(c,m);o((t=t.apply(n,e)).next())});import{PublicKey as _t}from"@solana/web3.js";import{MintLayout as Vt,TOKEN_2022_PROGRAM_ID as Ne,TOKEN_PROGRAM_ID as Fe}from"@solana/spl-token";import{get as Ke,set as at}from"lodash";var we=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(r=>typeof r=="object"?JSON.stringify(r):r).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}},ve={},ct={};function O(n){let e=Ke(ve,n);if(!e){let t=Ke(ct,n);e=new we({name:n,logLevel:t}),at(ve,n,e)}return e}import{PublicKey as Z,sendAndConfirmTransaction as Re,SystemProgram as Ot,Transaction as oe,TransactionMessage as se,VersionedTransaction as ae}from"@solana/web3.js";import Et from"axios";import{PublicKey as Dt,AddressLookupTableAccount as nt}from"@solana/web3.js";import{PublicKey as Ft}from"@solana/web3.js";import q from"bn.js";import Or from"decimal.js";import ht from"big.js";import on from"bn.js";import ut from"toformat";var lt=ut,X=lt;import de from"big.js";import pt from"bn.js";import dt from"decimal.js-light";import $ from"bn.js";var We=9007199254740991;function v(n){let e=O("Sega_parseBigNumberish");if(n instanceof $)return n;if(typeof n=="string"){if(n.match(/^-?[0-9]+$/))return new $(n);e.logWithError(`invalid BigNumberish string: ${n}`)}return typeof n=="number"?(n%1&&e.logWithError(`BigNumberish number underflow: ${n}`),(n>=We||n<=-We)&&e.logWithError(`BigNumberish number overflow: ${n}`),new $(String(n))):typeof n=="bigint"?new $(n.toString()):(e.error(`invalid BigNumberish value: ${n}`),new $(0))}var pe=O("module/fraction"),Pe=X(de),Q=X(dt),ft={0:Q.ROUND_DOWN,1:Q.ROUND_HALF_UP,2:Q.ROUND_UP},gt={0:de.roundDown,1:de.roundHalfUp,2:de.roundUp},W=class n{constructor(e,t=new pt(1)){this.numerator=v(e),this.denominator=v(t)}get quotient(){return this.numerator.div(this.denominator)}invert(){return new n(this.denominator,this.numerator)}add(e){let t=e instanceof n?e:new n(v(e));return this.denominator.eq(t.denominator)?new n(this.numerator.add(t.numerator),this.denominator):new n(this.numerator.mul(t.denominator).add(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}sub(e){let t=e instanceof n?e:new n(v(e));return this.denominator.eq(t.denominator)?new n(this.numerator.sub(t.numerator),this.denominator):new n(this.numerator.mul(t.denominator).sub(t.numerator.mul(this.denominator)),this.denominator.mul(t.denominator))}mul(e){let t=e instanceof n?e:new n(v(e));return new n(this.numerator.mul(t.numerator),this.denominator.mul(t.denominator))}div(e){let t=e instanceof n?e:new n(v(e));return new n(this.numerator.mul(t.denominator),this.denominator.mul(t.numerator))}toSignificant(e,t={groupSeparator:""},r=1){Number.isInteger(e)||pe.logWithError(`${e} is not an integer.`),e<=0&&pe.logWithError(`${e} is not positive.`),Q.set({precision:e+1,rounding:ft[r]});let g=new Q(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return g.toFormat(g.decimalPlaces(),t)}toFixed(e,t={groupSeparator:""},r=1){return Number.isInteger(e)||pe.logWithError(`${e} is not an integer.`),e<0&&pe.logWithError(`${e} is negative.`),Pe.DP=e,Pe.RM=gt[r]||1,new Pe(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)}isZero(){return this.numerator.isZero()}};var fn=O("Sega_amount"),gn=X(ht);import{PublicKey as Tt}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as qe}from"@solana/spl-token";var j={chainId:101,address:Tt.default.toBase58(),programId:qe.toBase58(),decimals:9,symbol:"SOL",name:"solana",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"sega",extensions:{coingeckoId:"solana"}},H={chainId:101,address:"So11111111111111111111111111111111111111112",programId:qe.toBase58(),decimals:9,symbol:"WSOL",name:"Wrapped SOL",logoURI:"https://img-v1.raydium.io/icon/So11111111111111111111111111111111111111112.png",tags:[],priority:2,type:"sega",extensions:{coingeckoId:"solana"}};import{PublicKey as ke}from"@solana/web3.js";import{PublicKey as R,SystemProgram as Ue,SYSVAR_RENT_PUBKEY as yt}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as xt}from"@solana/spl-token";function Se({pubkey:n,isSigner:e=!1,isWritable:t=!0}){return{pubkey:n,isWritable:t,isSigner:e}}var Sn=[Se({pubkey:xt,isWritable:!1}),Se({pubkey:Ue.programId,isWritable:!1}),Se({pubkey:yt,isWritable:!1})];function Ge({publicKey:n,transformSol:e}){let t=je(n.toString());if(t instanceof R)return e&&t.equals(ee)?Ae:t;if(e&&t.toString()===ee.toBase58())return Ae;if(typeof t=="string"){if(t===R.default.toBase58())return R.default;try{return new R(t)}catch(r){throw new Error("invalid public key")}}throw new Error("invalid public key")}function je(n){try{return new R(n)}catch(e){return n}}var An=new R("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),kn=new R("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),Cn=new R("SysvarRent111111111111111111111111111111111"),In=new R("SysvarC1ock11111111111111111111111111111111"),wt=new R("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),Bn=new R("Sysvar1nstructions1111111111111111111111111"),Mn=Ue.programId,Rn=new R("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),Ln=new R("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),Nn=new R("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),Fn=new R("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),Dn=new R("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),On=new R("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),En=new R("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),_n=new R("USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX"),Vn=new R("NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa"),Kn=new R("ANAxByE6G2WjFp7A4NqtWYXb3mgruyzZYg3spfxe6Lbo"),vn=new R("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),Ae=new R("So11111111111111111111111111111111111111112"),ee=R.default;var fe=class fe{constructor({mint:e,decimals:t,symbol:r,name:g,skipMint:c=!1,isToken2022:m=!1}){if(e===ee.toBase58()||e instanceof ke&&ee.equals(e)){this.decimals=H.decimals,this.symbol=H.symbol,this.name=H.name,this.mint=new ke(H.address),this.isToken2022=!1;return}this.decimals=t,this.symbol=r||e.toString().substring(0,6),this.name=g||e.toString().substring(0,6),this.mint=c?ke.default:Ge({publicKey:e}),this.isToken2022=m}equals(e){return this===e?!0:this.mint.equals(e.mint)}};fe.WSOL=new fe(_(F({},H),{mint:H.address}));var te=fe;var ge=class ge{constructor({decimals:e,symbol:t="UNKNOWN",name:r="UNKNOWN"}){this.decimals=e,this.symbol=t,this.name=r}equals(e){return this===e}};ge.SOL=new ge(j);var Ce=ge;import Pt from"bn.js";var Qn=new W(new Pt(100));var or=O("Sega_price");import{PublicKey as Pr}from"@solana/web3.js";import Ar from"bn.js";var St=new q(0),jr=new q(1),Hr=new q(2),zr=new q(3),Yr=new q(5),bt=new q(10),Jr=new q(100),Zr=new q(1e3),Xr=new q(1e4);function Ie(n,e=1,t=[]){let r=[...n];if(e<=0)return t;for(;r.length;)t.push(r.splice(0,e));return t}import{PublicKey as Ti}from"@solana/web3.js";import{TOKEN_PROGRAM_ID as xi}from"@solana/spl-token";import{ComputeBudgetProgram as Je,Keypair as Xe,PublicKey as ci,Transaction as $e,TransactionMessage as At,VersionedTransaction as Qe}from"@solana/web3.js";var ne={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{TOKEN_PROGRAM_ID as kt}from"@solana/spl-token";var Ze=O("Sega_txUtil"),et=1644;function he(n){let e=[],t=[];return n.microLamports&&(e.push(Je.setComputeUnitPrice({microLamports:n.microLamports})),t.push(ne.SetComputeUnitPrice)),n.units&&(e.push(Je.setComputeUnitLimit({units:n.units})),t.push(ne.SetComputeUnitLimit)),{instructions:e,instructionTypes:t}}function J(n,e){return b(this,null,function*(){var r,g;let t=e!=null?e:"confirmed";return(g=yield(r=n.getLatestBlockhash)==null?void 0:r.call(n,{commitment:t}))==null?void 0:g.blockhash})}function be(n,e){return b(this,null,function*(){return n.getSignatureStatuses([e]),new Promise((t,r)=>{let g=setTimeout(r,6e4);n.onSignature(e,c=>{if(clearTimeout(g),!c.err){t("");return}r(Object.assign(c.err,{txId:e}))},"confirmed")})})}function Ct(n,e){n.length<1&&Ze.logWithError(`no instructions provided: ${n.toString()}`),e.length<1&&Ze.logWithError(`no signers provided:, ${e.toString()}`);let t=new $e;t.recentBlockhash="11111111111111111111111111111111",t.feePayer=e[0],t.add(...n);try{return Buffer.from(t.serialize({verifySignatures:!1})).toString("base64").length<et}catch(r){return!1}}function re({instructions:n,payer:e,signers:t}){return Ct(n,[e,...t])}function ie({instructions:n,payer:e,lookupTableAddressAccount:t,recentBlockhash:r=Xe.generate().publicKey.toString()}){let c=new At({payerKey:e,recentBlockhash:r,instructions:n}).compileToV0Message(Object.values(t!=null?t:{}));try{return Buffer.from(new Qe(c).serialize()).toString("base64").length<et}catch(m){return!1}}var It=n=>Buffer.isBuffer(n)?n:n instanceof Uint8Array?Buffer.from(n.buffer,n.byteOffset,n.byteLength):Buffer.from(n),Bt=n=>{let e=n.serialize({requireAllSignatures:!1,verifySignatures:!1});n instanceof Qe&&(e=It(e));try{return e instanceof Buffer?e.toString("base64"):Buffer.from(e).toString("base64")}catch(t){return e.toString("base64")}};function z(n){let e=[];return n.forEach(t=>{t instanceof $e&&(t.recentBlockhash||(t.recentBlockhash=kt.toBase58()),t.feePayer||(t.feePayer=Xe.generate().publicKey)),e.push(Bt(t))}),console.log("simulate tx string:",e),e}import{PublicKey as V}from"@solana/web3.js";var ki=new V("SegazTQwbYWknDZkJ6j2Kgvm5gw3MrHGKtWstZdoNKZ"),Ci=new V("Ajk8d9bERSaFdeoT1d8JUVfaDayrYLnAdgeB47TFMUaG"),Ii=new V("2HbjxVVKJ7Ct72Rcd8WK4VTqmwTXL5aAggkH1CHGFGmh"),Mt=new V("TegaRdjn9Qeh9DfUU28X19aPPpJtj9gs8ntSYrR5H4K "),Rt=new V("GzqQwxPSmUZnTyCfX9YWqi32MJg43ujP786ZoacL559Y"),Lt=new V("GzqQwxPSmUZnTyCfX9YWqi32MJg43ujP786ZoacL559Y"),Bi=new V("SegaXNnoXYTZiqUt9Xn2XqGcL56b25yzXLuJSpadcMu"),Mi=new V("2t1hV2YqnDCPuJZqr7Fy8oAygGwZE5Q9uaQzpLC1QryJ"),Ri=new V("BLxynZeHE123MmQgNJZiV1pwW4VYh46oZYyC66xwmtTY");var Nt={SERUM_MARKET:V.default,UTIL1216:V.default,CREATE_CPMM_POOL_PROGRAM:Mt,CREATE_CPMM_POOL_AUTH:Rt,CREATE_CPMM_POOL_FEE_ACC:Lt};import Fi from"bn.js";import{Connection as Ki}from"@solana/web3.js";import{MINT_SIZE as bo,TOKEN_PROGRAM_ID as To,getTransferFeeConfig as yo,unpackMint as xo}from"@solana/spl-token";var Be=O("Sega_accountInfo_util");function tt(n,e,t){return b(this,null,function*(){let{batchRequest:r,commitment:g="confirmed",chunkCount:c=100}=F({batchRequest:!1},t),m=Ie(e,c),o=new Array(m.length).fill([]);if(r){let T=m.map(P=>({methodName:"getMultipleAccounts",args:n._buildArgs([P.map(w=>w.toBase58())],g,"base64")})),i=Ie(T,10);o=(yield(yield Promise.all(i.map(P=>b(this,null,function*(){return yield n._rpcBatchRequest(P)})))).flat()).map(P=>(P.error&&Be.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${P.error.message}`),P.result.value.map(C=>{if(C){let{data:w,executable:d,lamports:y,owner:s,rentEpoch:S}=C;return w.length!==2&&w[1]!=="base64"&&Be.logWithError("info must be base64 encoded, RPC_ERROR"),{data:Buffer.from(w[0],"base64"),executable:d,lamports:y,owner:new Ft(s),rentEpoch:S}}return null})))}else try{o=yield Promise.all(m.map(T=>n.getMultipleAccountsInfo(T,g)))}catch(T){T instanceof Error&&Be.logWithError(`failed to get info for multiple accounts, RPC_ERROR, ${T.message}`)}return o.flat()})}function Me(t){return b(this,arguments,function*({connection:n,address:e}){let r=yield tt(n,[...new Set(e.map(c=>c.toString()))].map(c=>new Dt(c))),g={};for(let c=0;c<e.length;c++){let m=r[c],o=e[c];if(!m)continue;let T=new nt({key:o,state:nt.deserialize(m.data)});g[o.toString()]=T,Te[o.toString()]=T}return g})}var Te={};var ye=2e3,xe=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]}getComputeBudgetConfig(){return b(this,null,function*(){var r;let e=(yield Et.get("https://solanacompass.com/api/fees?cacheFreshTime=300000")).data,{avg:t}=(r=e==null?void 0:e[15])!=null?r:{};if(t)return{units:6e5,microLamports:Math.min(Math.ceil(t*1e6/6e5),25e3)}})}addCustomComputeBudget(e){if(e){let{instructions:t,instructionTypes:r}=he(e);return this.instructions.unshift(...t),this.instructionTypes.unshift(...r),!0}return!1}addTipInstruction(e){var t;return e?(this.endInstructions.push(Ot.transfer({fromPubkey:(t=e.feePayer)!=null?t:this.feePayer,toPubkey:new Z(e.address),lamports:BigInt(e.amount.toString())})),this.endInstructionTypes.push(ne.TransferTip),!0):!1}calComputeBudget(r){return b(this,arguments,function*({config:e,defaultIns:t}){try{let g=e||(yield this.getComputeBudgetConfig());if(this.addCustomComputeBudget(g))return;t&&this.instructions.unshift(...t)}catch(g){t&&this.instructions.unshift(...t)}})}addInstruction({instructions:e=[],endInstructions:t=[],signers:r=[],instructionTypes:g=[],endInstructionTypes:c=[],lookupTableAddress:m=[]}){return this.instructions.push(...e),this.endInstructions.push(...t),this.signers.push(...r),this.instructionTypes.push(...g),this.endInstructionTypes.push(...c),this.lookupTableAddress.push(...m.filter(o=>o!==Z.default.toString())),this}versionBuild(r){return b(this,arguments,function*({txVersion:e,extInfo:t}){return e===0?yield this.buildV0(F({},t||{})):this.build(t)})}build(e){var r;let t=new oe;return this.allInstructions.length&&t.add(...this.allInstructions),t.feePayer=this.feePayer,(r=this.owner)!=null&&r.signer&&!this.signers.some(g=>g.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer),{builder:this,transaction:t,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:g=>b(this,null,function*(){var i;let{recentBlockHash:c,skipPreflight:m=!0,sendAndConfirm:o}=g||{},T=c!=null?c:yield J(this.connection,this.blockhashCommitment);if(t.recentBlockhash=T,this.signers.length&&t.sign(...this.signers),z([t]),(i=this.owner)!=null&&i.isKeyPair)return{txId:o?yield Re(this.connection,t,this.signers.find(P=>P.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:m}):yield this.connection.sendRawTransaction(t.serialize(),{skipPreflight:m}),signedTx:t};if(this.signAllTransactions){let p=yield this.signAllTransactions([t]);if(this.signers.length)for(let P of p)try{P.sign(...this.signers)}catch(C){}return{txId:yield this.connection.sendRawTransaction(p[0].serialize(),{skipPreflight:m}),signedTx:p[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")}),extInfo:e||{}}}buildMultiTx(e){var i;let{extraPreBuildData:t=[],extInfo:r}=e,{transaction:g}=this.build(r),c=t.filter(p=>p.transaction.instructions.length>0),m=[g,...c.map(p=>p.transaction)],o=[this.signers,...c.map(p=>p.signers)],T=[...this.instructionTypes,...c.map(p=>p.instructionTypes).flat()];return(i=this.owner)!=null&&i.signer&&o.forEach(p=>{p.some(P=>P.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),{builder:this,transactions:m,signers:o,instructionTypes:T,execute:p=>b(this,null,function*(){var S;let{sequentially:P,onTxUpdate:C,skipTxCount:w=0,recentBlockHash:d,skipPreflight:y=!0}=p||{},s=d!=null?d:yield J(this.connection,this.blockhashCommitment);if((S=this.owner)!=null&&S.isKeyPair){if(P){let f=[],A=0;for(let l of m){if(++A,A<=w)continue;let u=yield Re(this.connection,l,this.signers.find(a=>a.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:y});f.push(u)}return{txIds:f,signedTxs:m}}return{txIds:yield yield Promise.all(m.map(f=>b(this,null,function*(){return f.recentBlockhash=s,yield this.connection.sendRawTransaction(f.serialize(),{skipPreflight:y})}))),signedTxs:m}}if(this.signAllTransactions){let f=m.map((l,u)=>(l.recentBlockhash=s,o[u].length&&l.sign(...o[u]),l));z(f);let A=yield this.signAllTransactions(f);if(P){let l=0,u=[],a=()=>b(this,null,function*(){if(!A[l])return;let x=yield this.connection.sendRawTransaction(A[l].serialize(),{skipPreflight:y});u.push({txId:x,status:"sent",signedTx:A[l]}),C==null||C([...u]),l++;let h=!1,k=null,B=null,L=I=>{k!==null&&clearInterval(k),B!==null&&this.connection.removeSignatureListener(B);let M=u.findIndex(N=>N.txId===x);if(M>-1){if(u[M].status==="error"||u[M].status==="success")return;u[M].status=I.err?"error":"success"}C==null||C([...u]),I.err||a()};this.loopMultiTxStatus&&(k=setInterval(()=>b(this,null,function*(){var I;if(h){clearInterval(k);return}try{let M=yield this.connection.getTransaction(x,{commitment:"confirmed",maxSupportedTransactionVersion:0});M&&(h=!0,clearInterval(k),L({err:((I=M.meta)==null?void 0:I.err)||null}),console.log("tx status from getTransaction:",x))}catch(M){h=!0,clearInterval(k),console.error("getTransaction timeout:",M,x)}}),ye)),B=this.connection.onSignature(x,I=>{if(h){this.connection.removeSignatureListener(B);return}h=!0,L(I)},"confirmed"),this.connection.getSignatureStatus(x)});return yield a(),{txIds:u.map(x=>x.txId),signedTxs:A}}else{let l=[];for(let u=0;u<A.length;u+=1){let a=yield this.connection.sendRawTransaction(A[u].serialize(),{skipPreflight:y});l.push(a)}return{txIds:l,signedTxs:A}}}throw new Error("please provide owner in keypair format or signAllTransactions function")}),extInfo:r||{}}}versionMultiBuild(g){return b(this,arguments,function*({extraPreBuildData:e,txVersion:t,extInfo:r}){return t===0?yield this.buildV0MultiTx({extraPreBuildData:e,buildProps:r||{}}):this.buildMultiTx({extraPreBuildData:e,extInfo:r})})}buildV0(e){return b(this,null,function*(){var y;let d=e||{},{lookupTableCache:t={},lookupTableAddress:r=[],forerunCreate:g,recentBlockhash:c}=d,m=me(d,["lookupTableCache","lookupTableAddress","forerunCreate","recentBlockhash"]),o=F(F({},this.cluster==="devnet"?{}:Te),t),T=Array.from(new Set([...r,...this.lookupTableAddress])),i=[];for(let s of T)o[s]===void 0&&i.push(new Z(s));let p=yield Me({connection:this.connection,address:i});for(let[s,S]of Object.entries(p))o[s]=S;let P=g?Z.default.toBase58():c!=null?c:yield J(this.connection,this.blockhashCommitment),C=new se({payerKey:this.feePayer,recentBlockhash:P,instructions:[...this.allInstructions]}).compileToV0Message(Object.values(o));(y=this.owner)!=null&&y.signer&&!this.signers.some(s=>s.publicKey.equals(this.owner.publicKey))&&this.signers.push(this.owner.signer);let w=new ae(C);return w.sign(this.signers),{builder:this,transaction:w,signers:this.signers,instructionTypes:[...this.instructionTypes,...this.endInstructionTypes],execute:s=>b(this,null,function*(){var A;let{skipPreflight:S=!0,sendAndConfirm:f}=s||{};if(z([w]),(A=this.owner)!=null&&A.isKeyPair){let l=yield this.connection.sendTransaction(w,{skipPreflight:S});return f&&(yield be(this.connection,l)),{txId:l,signedTx:w}}if(this.signAllTransactions){let l=yield this.signAllTransactions([w]);if(this.signers.length)for(let u of l)try{u.sign(this.signers)}catch(a){}return{txId:yield this.connection.sendTransaction(l[0],{skipPreflight:S}),signedTx:l[0]}}throw new Error("please provide owner in keypair format or signAllTransactions function")}),extInfo:m||{}}})}buildV0MultiTx(e){return b(this,null,function*(){var i;let{extraPreBuildData:t=[],buildProps:r}=e,{transaction:g}=yield this.buildV0(r),c=t.filter(p=>p.builder.instructions.length>0),m=[g,...c.map(p=>p.transaction)],o=[this.signers,...c.map(p=>p.signers)],T=[...this.instructionTypes,...c.map(p=>p.instructionTypes).flat()];return(i=this.owner)!=null&&i.signer&&o.forEach(p=>{p.some(P=>P.publicKey.equals(this.owner.publicKey))||this.signers.push(this.owner.signer)}),m.forEach((p,P)=>b(this,null,function*(){p.sign(o[P])})),{builder:this,transactions:m,signers:o,instructionTypes:T,buildProps:r,execute:p=>b(this,null,function*(){var y;let{sequentially:P,onTxUpdate:C,recentBlockHash:w,skipPreflight:d=!0}=p||{};if(w&&m.forEach(s=>s.message.recentBlockhash=w),z(m),(y=this.owner)!=null&&y.isKeyPair){if(P){let s=[];for(let S of m){let f=yield this.connection.sendTransaction(S,{skipPreflight:d});yield be(this.connection,f),s.push(f)}return{txIds:s,signedTxs:m}}return{txIds:yield Promise.all(m.map(s=>b(this,null,function*(){return yield this.connection.sendTransaction(s,{skipPreflight:d})}))),signedTxs:m}}if(this.signAllTransactions){let s=yield this.signAllTransactions(m);if(P){let S=0,f=[],A=()=>b(this,null,function*(){if(!s[S])return;let l=yield this.connection.sendTransaction(s[S],{skipPreflight:d});f.push({txId:l,status:"sent",signedTx:s[S]}),C==null||C([...f]),S++;let u=!1,a=null,x=null,h=k=>{a!==null&&clearInterval(a),x!==null&&this.connection.removeSignatureListener(x);let B=f.findIndex(L=>L.txId===l);if(B>-1){if(f[B].status==="error"||f[B].status==="success")return;f[B].status=k.err?"error":"success"}C==null||C([...f]),k.err||A()};this.loopMultiTxStatus&&(a=setInterval(()=>b(this,null,function*(){var k;if(u){clearInterval(a);return}try{let B=yield this.connection.getTransaction(l,{commitment:"confirmed",maxSupportedTransactionVersion:0});B&&(u=!0,clearInterval(a),h({err:((k=B.meta)==null?void 0:k.err)||null}),console.log("tx status from getTransaction:",l))}catch(B){u=!0,clearInterval(a),console.error("getTransaction timeout:",B,l)}}),ye)),x=this.connection.onSignature(l,k=>{if(u){this.connection.removeSignatureListener(x);return}u=!0,h(k)},"confirmed"),this.connection.getSignatureStatus(l)});return A(),{txIds:[],signedTxs:s}}else{let S=[];for(let f=0;f<s.length;f+=1){let A=yield this.connection.sendTransaction(s[f],{skipPreflight:d});S.push(A)}return{txIds:S,signedTxs:s}}}throw new Error("please provide owner in keypair format or signAllTransactions function")}),extInfo:r||{}}})}sizeCheckBuild(e){return b(this,null,function*(){var C;let P=e||{},{splitIns:t=[],computeBudgetConfig:r}=P,g=me(P,["splitIns","computeBudgetConfig"]),c=r?he(r):{instructions:[],instructionTypes:[]},m=this.signers.reduce((w,d)=>_(F({},w),{[d.publicKey.toBase58()]:d}),{}),o=[],T=[],i=[],p=0;if(this.allInstructions.forEach(w=>{let d=[...i,w],y=r?[...c.instructions,...d]:d,S=[...new Set(d.map(f=>f.keys.filter(A=>A.isSigner).map(A=>A.pubkey.toString())).flat()).values()].map(f=>new Z(f));if(w!==t[p]&&i.length<12&&(re({instructions:y,payer:this.feePayer,signers:S})||re({instructions:d,payer:this.feePayer,signers:S})))i.push(w);else{if(i.length===0)throw Error("item ins too big");p+=w===t[p]?1:0,re({instructions:r?[...c.instructions,...i]:[...i],payer:this.feePayer,signers:S})?o.push(new oe().add(...c.instructions,...i)):o.push(new oe().add(...i)),T.push(Array.from(new Set(i.map(f=>f.keys.filter(A=>A.isSigner).map(A=>A.pubkey.toString())).flat())).map(f=>m[f]).filter(f=>f!==void 0)),i=[w]}}),i.length>0){let d=[...new Set(i.map(y=>y.keys.filter(s=>s.isSigner).map(s=>s.pubkey.toString())).flat()).values()].map(y=>m[y]).filter(y=>y!==void 0);re({instructions:r?[...c.instructions,...i]:[...i],payer:this.feePayer,signers:d.map(y=>y.publicKey)})?o.push(new oe().add(...c.instructions,...i)):o.push(new oe().add(...i)),T.push(d)}return o.forEach(w=>w.feePayer=this.feePayer),(C=this.owner)!=null&&C.signer&&T.forEach(w=>{w.some(d=>d.publicKey.equals(this.owner.publicKey))||w.push(this.owner.signer)}),{builder:this,transactions:o,signers:T,instructionTypes:this.instructionTypes,execute:w=>b(this,null,function*(){var l;let{sequentially:d,onTxUpdate:y,skipTxCount:s=0,recentBlockHash:S,skipPreflight:f=!0}=w||{},A=S!=null?S:yield J(this.connection,this.blockhashCommitment);if(o.forEach((u,a)=>b(this,null,function*(){u.recentBlockhash=A,T[a].length&&u.sign(...T[a])})),z(o),(l=this.owner)!=null&&l.isKeyPair){if(d){let u=0,a=[];for(let x of o){if(++u,u<=s){a.push("tx skipped");continue}let h=yield Re(this.connection,x,this.signers.find(k=>k.publicKey.equals(this.owner.publicKey))?this.signers:[...this.signers,this.owner.signer],{skipPreflight:f});a.push(h)}return{txIds:a,signedTxs:o}}return{txIds:yield Promise.all(o.map(u=>b(this,null,function*(){return yield this.connection.sendRawTransaction(u.serialize(),{skipPreflight:f})}))),signedTxs:o}}if(this.signAllTransactions){let u=yield this.signAllTransactions(o.slice(s,o.length)),a=[...o.slice(0,s),...u];if(d){let x=0,h=[],k=()=>b(this,null,function*(){if(!a[x])return;x<s&&(h.push({txId:"",status:"success",signedTx:a[x]}),y==null||y([...h]),x++,k());let B=yield this.connection.sendRawTransaction(a[x].serialize(),{skipPreflight:f});h.push({txId:B,status:"sent",signedTx:a[x]}),y==null||y([...h]),x++;let L=!1,I=null,M=null,N=E=>{I!==null&&clearInterval(I),M!==null&&this.connection.removeSignatureListener(M);let D=h.findIndex(U=>U.txId===B);if(D>-1){if(h[D].status==="error"||h[D].status==="success")return;h[D].status=E.err?"error":"success"}y==null||y([...h]),E.err||k()};this.loopMultiTxStatus&&(I=setInterval(()=>b(this,null,function*(){var E;if(L){clearInterval(I);return}try{let D=yield this.connection.getTransaction(B,{commitment:"confirmed",maxSupportedTransactionVersion:0});D&&(L=!0,clearInterval(I),N({err:((E=D.meta)==null?void 0:E.err)||null}),console.log("tx status from getTransaction:",B))}catch(D){L=!0,clearInterval(I),console.error("getTransaction timeout:",D,B)}}),ye)),M=this.connection.onSignature(B,E=>{if(L){this.connection.removeSignatureListener(M);return}L=!0,N(E)},"confirmed"),this.connection.getSignatureStatus(B)});return yield k(),{txIds:h.map(B=>B.txId),signedTxs:a}}else{let x=[];for(let h=0;h<a.length;h+=1){let k=yield this.connection.sendRawTransaction(a[h].serialize(),{skipPreflight:f});x.push(k)}return{txIds:x,signedTxs:a}}}throw new Error("please provide owner in keypair format or signAllTransactions function")}),extInfo:g||{}}})}sizeCheckBuildV0(e){return b(this,null,function*(){var A;let f=e||{},{computeBudgetConfig:t,splitIns:r=[],lookupTableCache:g={},lookupTableAddress:c=[]}=f,m=me(f,["computeBudgetConfig","splitIns","lookupTableCache","lookupTableAddress"]),o=F(F({},this.cluster==="devnet"?{}:Te),g),T=Array.from(new Set([...this.lookupTableAddress,...c])),i=[];for(let l of T)o[l]===void 0&&i.push(new Z(l));let p=yield Me({connection:this.connection,address:i});for(let[l,u]of Object.entries(p))o[l]=u;let P=t?he(t):{instructions:[],instructionTypes:[]},C=yield J(this.connection,this.blockhashCommitment),w=this.signers.reduce((l,u)=>_(F({},l),{[u.publicKey.toBase58()]:u}),{}),d=[],y=[],s=[],S=0;if(this.allInstructions.forEach(l=>{let u=[...s,l],a=t?[...P.instructions,...u]:u;if(l!==r[S]&&s.length<12&&(ie({instructions:a,payer:this.feePayer,lookupTableAddressAccount:o})||ie({instructions:u,payer:this.feePayer,lookupTableAddressAccount:o})))s.push(l);else{if(s.length===0)throw Error("item ins too big");S+=l===r[S]?1:0;let x={};for(let h of[...new Set(T)])o[h]!==void 0&&(x[h]=o[h]);if(t&&ie({instructions:[...P.instructions,...s],payer:this.feePayer,lookupTableAddressAccount:o,recentBlockhash:C})){let h=new se({payerKey:this.feePayer,recentBlockhash:C,instructions:[...P.instructions,...s]}).compileToV0Message(Object.values(o));d.push(new ae(h))}else{let h=new se({payerKey:this.feePayer,recentBlockhash:C,instructions:[...s]}).compileToV0Message(Object.values(o));d.push(new ae(h))}y.push(Array.from(new Set(s.map(h=>h.keys.filter(k=>k.isSigner).map(k=>k.pubkey.toString())).flat())).map(h=>w[h]).filter(h=>h!==void 0)),s=[l]}}),s.length>0){let u=[...new Set(s.map(a=>a.keys.filter(x=>x.isSigner).map(x=>x.pubkey.toString())).flat()).values()].map(a=>w[a]).filter(a=>a!==void 0);if(t&&ie({instructions:[...P.instructions,...s],payer:this.feePayer,lookupTableAddressAccount:o,recentBlockhash:C})){let a=new se({payerKey:this.feePayer,recentBlockhash:C,instructions:[...P.instructions,...s]}).compileToV0Message(Object.values(o));d.push(new ae(a))}else{let a=new se({payerKey:this.feePayer,recentBlockhash:C,instructions:[...s]}).compileToV0Message(Object.values(o));d.push(new ae(a))}y.push(u)}return(A=this.owner)!=null&&A.signer&&y.forEach(l=>{l.some(u=>u.publicKey.equals(this.owner.publicKey))||l.push(this.owner.signer)}),{builder:this,transactions:d,buildProps:e,signers:y,instructionTypes:this.instructionTypes,execute:l=>b(this,null,function*(){var B;let{sequentially:u,onTxUpdate:a,skipTxCount:x=0,recentBlockHash:h,skipPreflight:k=!0}=l||{};if(d.map((L,I)=>b(this,null,function*(){y[I].length&&L.sign(y[I]),h&&(L.message.recentBlockhash=h)})),z(d),(B=this.owner)!=null&&B.isKeyPair){if(u){let L=0,I=[];for(let M of d){if(++L,L<=x){console.log("skip tx: ",L),I.push("tx skipped");continue}let N=yield this.connection.sendTransaction(M,{skipPreflight:k});yield be(this.connection,N),I.push(N)}return{txIds:I,signedTxs:d}}return{txIds:yield Promise.all(d.map(L=>b(this,null,function*(){return yield this.connection.sendTransaction(L,{skipPreflight:k})}))),signedTxs:d}}if(this.signAllTransactions){let L=yield this.signAllTransactions(d.slice(x,d.length)),I=[...d.slice(0,x),...L];if(u){let M=0,N=[],E=()=>b(this,null,function*(){if(!I[M])return;if(M<x){N.push({txId:"",status:"success",signedTx:I[M]}),a==null||a([...N]),M++,E();return}let D=yield this.connection.sendTransaction(I[M],{skipPreflight:k});N.push({txId:D,status:"sent",signedTx:I[M]}),a==null||a([...N]),M++;let U=!1,Y=null,ue=null,Oe=G=>{Y!==null&&clearInterval(Y),ue!==null&&this.connection.removeSignatureListener(ue);let K=N.findIndex(rt=>rt.txId===D);if(K>-1){if(N[K].status==="error"||N[K].status==="success")return;N[K].status=G.err?"error":"success"}a==null||a([...N]),G.err||E()};this.loopMultiTxStatus&&(Y=setInterval(()=>b(this,null,function*(){var G;if(U){clearInterval(Y);return}try{let K=yield this.connection.getTransaction(D,{commitment:"confirmed",maxSupportedTransactionVersion:0});K&&(U=!0,clearInterval(Y),Oe({err:((G=K.meta)==null?void 0:G.err)||null}),console.log("tx status from getTransaction:",D))}catch(K){U=!0,clearInterval(Y),console.error("getTransaction timeout:",K,D)}}),ye)),ue=this.connection.onSignature(D,G=>{if(U){this.connection.removeSignatureListener(ue);return}U=!0,Oe(G)},"confirmed"),this.connection.getSignatureStatus(D)});return E(),{txIds:[],signedTxs:I}}else{let M=[];for(let N=0;N<I.length;N+=1){let E=yield this.connection.sendTransaction(I[N],{skipPreflight:k});M.push(E)}return{txIds:M,signedTxs:I}}}throw new Error("please provide owner in keypair format or signAllTransactions function")}),extInfo:m||{}}})}};var Le=(...n)=>n.map(e=>{try{return typeof e=="object"?JSON.stringify(e):e}catch(t){return e}}).join(", "),ce=class{constructor({scope:e,moduleName:t}){this.disabled=!1;this.scope=e,this.logger=O(t)}createTxBuilder(e){return this.scope.checkOwner(),new xe({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(Le(e))}logInfo(...e){this.logger.info(Le(e))}logAndCreateError(...e){let t=Le(e);throw new Error(t)}checkDisabled(){(this.disabled||!this.scope)&&this.logAndCreateError("module not working")}};var De=class extends ce{constructor(t){super(t);this._tokenList=[];this._tokenMap=new Map;this._blackTokenMap=new Set;this._mintGroup={official:new Set,jup:new Set,extra:new Set};this._whiteMap=new Set;this._extraTokenList=[]}load(t){return b(this,null,function*(){this.checkDisabled();let{forceUpdate:r=!1,type:g="strict"}=t||{},{mintList:c,blacklist:m,whiteList:o}=yield this.scope.fetchV3TokenList(r),T=yield this.scope.fetchJupTokenList(r);this._tokenList=[],this._tokenMap=new Map,this._blackTokenMap=new Set(m),this._mintGroup={official:new Set,jup:new Set,extra:new Set},this._whiteMap=new Set(o),this._tokenMap.set(j.address,j),this._mintGroup.official.add(j.address),c.forEach(i=>{var p;this._blackTokenMap.has(i.address)||(this._tokenMap.set(i.address,_(F({},i),{type:"sega",priority:2,programId:(p=i.programId)!=null?p:i.tags.includes("token-2022")?Ne.toBase58():Fe.toBase58()})),this._mintGroup.official.add(i.address))}),T.forEach(i=>{var p;this._blackTokenMap.has(i.address)||this._tokenMap.has(i.address)||(this._tokenMap.set(i.address,_(F({},i),{type:"jupiter",priority:1,programId:(p=i.programId)!=null?p:i.tags.includes("token-2022")?Ne.toBase58():Fe.toBase58(),tags:i.freezeAuthority?[...i.tags||[],"hasFreeze"]:i.tags})),this._mintGroup.jup.add(i.address))}),this._extraTokenList.forEach(i=>{this._blackTokenMap.has(i.address)||this._tokenMap.has(i.address)||(this._tokenMap.set(i.address,_(F({},i),{type:"extra",priority:1,programId:i.programId||i.tags.includes("token-2022")?Ne.toBase58():Fe.toBase58()})),this._mintGroup.extra.add(i.address))}),this._tokenList=Array.from(this._tokenMap).map(i=>i[1])})}get tokenList(){return this._tokenList}get tokenMap(){return this._tokenMap}get blackTokenMap(){return this._blackTokenMap}get mintGroup(){return this._mintGroup}get whiteListMap(){return this._whiteMap}getTokenInfo(t){return b(this,null,function*(){if(!t)throw new Error("please input mint");let r=t.toString(),g=this._tokenMap.get(r);if(g)return g;if(r.toLocaleUpperCase()==="SOL")return j;let c=(yield this.scope.api.getTokenInfo([r]))[0];if(c)return this._mintGroup.extra.add(r),this._tokenMap.set(r,_(F({},c),{priority:2})),c;let m=yield this.scope.connection.getAccountInfo(new _t(r));if(!m)throw new Error(`mint address not found: ${r}`);let o=Vt.decode(m.data),T=r.toString().substring(0,6),i={chainId:101,address:r,programId:m.owner.toBase58(),logoURI:"",symbol:T,name:T,decimals:o.decimals,tags:[],extensions:{},priority:0,type:"unknown"};return this._mintGroup.extra.add(r),this._tokenMap.set(r,i),i})}};export{De as default};
//# sourceMappingURL=token.mjs.map