UNPKG

@vechain/sdk-network

Version:

This module serves as the standard interface connecting decentralized applications (dApps) and users to the VeChainThor blockchain

4 lines 104 kB
'use strict';var sdkErrors=require('@vechain/sdk-errors'),sdkCore=require('@vechain/sdk-core'),events=require('events'),ethers=require('ethers'),utils=require('@noble/curves/abstract/utils'),viem=require('viem'),sdkLogging=require('@vechain/sdk-logging');var Fr=Object.defineProperty;var Dr=(n,e)=>{for(var t in e)Fr(n,t,{get:e[t],enumerable:true});};var Or={};Dr(Or,{AccountDetail:()=>z,AccountsModule:()=>Q,BUILT_IN_CONTRACTS:()=>Te,BlocksModule:()=>X,CHAIN_ID:()=>Ee,CHAIN_TAG:()=>_e,Contract:()=>S,ContractFactory:()=>U,ContractsModule:()=>te,DebugModule:()=>ne,DefaultBlockToRevision:()=>h,DelegationHandler:()=>H,ERROR_SELECTOR:()=>we,ForkDetector:()=>q,GasModule:()=>re,HTTPS_REGEX:()=>je,HTTP_REGEX:()=>Pe,HardhatVeChainProvider:()=>dn,HttpMethod:()=>x,JSONRPCEthersProvider:()=>ut,LogsModule:()=>oe,MAINNET_URL:()=>Jr,NODE_HEALTHCHECK_TOLERANCE_IN_SECONDS:()=>We,NodesModule:()=>ie,PANIC_SELECTOR:()=>Ce,POLLING_INTERVAL:()=>dt,Poll:()=>v,ProviderInternalBaseWallet:()=>de,ProviderInternalHDWallet:()=>lt,RPCMethodsMap:()=>ln,RPC_DOCUMENTATION_URL:()=>l,RPC_METHODS:()=>N,SimpleHttpClient:()=>_,TESTNET_URL:()=>jr,THOR_SOLO_URL:()=>Wr,ThorClient:()=>se,TransactionsModule:()=>ae,VeChainAbstractSigner:()=>le,VeChainPrivateKeySigner:()=>ue,VeChainProvider:()=>j,blocksFormatter:()=>T,buildQuery:()=>b,chainTagToChainId:()=>mt,debugFormatter:()=>fe,debugTraceBlockByHash:()=>Pt,debugTraceBlockByNumber:()=>wt,debugTraceCall:()=>Ct,debugTraceTransaction:()=>G,engineGetPayloadBodiesByHashV1:()=>_i,engineGetPayloadBodiesByRangeV1:()=>Oi,ethAccounts:()=>ge,ethBlockNumber:()=>xt,ethCall:()=>vt,ethChainId:()=>g,ethEstimateGas:()=>Rt,ethFeeHistory:()=>kt,ethGasPrice:()=>It,ethGetBalance:()=>Bt,ethGetBlockByHash:()=>P,ethGetBlockByNumber:()=>C,ethGetBlockReceipts:()=>St,ethGetBlockTransactionCountByHash:()=>At,ethGetBlockTransactionCountByNumber:()=>Et,ethGetCode:()=>_t,ethGetFilterChanges:()=>oa,ethGetFilterLogs:()=>aa,ethGetLogs:()=>he,ethGetStorageAt:()=>Nt,ethGetTransactionByBlockHashAndIndex:()=>Ot,ethGetTransactionByBlockNumberAndIndex:()=>Ft,ethGetTransactionByHash:()=>L,ethGetTransactionCount:()=>Dt,ethGetTransactionReceipt:()=>M,ethGetUncleByBlockHashAndIndex:()=>Mt,ethGetUncleByBlockNumberAndIndex:()=>Gt,ethGetUncleCountByBlockHash:()=>Lt,ethGetUncleCountByBlockNumber:()=>Ut,ethMaxPriorityFeePerGas:()=>Vt,ethRequestAccounts:()=>Ht,ethSendRawTransaction:()=>qt,ethSendTransaction:()=>$t,ethSignTransaction:()=>jt,ethSignTypedDataV4:()=>Wt,ethSubscribe:()=>zt,ethSyncing:()=>Yt,ethUnsubscribe:()=>Qt,evmMine:()=>Ue,formatToLogsRPC:()=>ht,formatToRPCStandard:()=>gt,getCachedChainId:()=>bt,getCachedChainTag:()=>di,getCriteriaSetForInput:()=>yt,getNumberOfLogsAheadOfTransactionIntoBlockExpanded:()=>ft,getTransactionIndexIntoBlock:()=>E,isTraceEnabled:()=>be,logError:()=>$e,logRequest:()=>He,logResponse:()=>qe,netListening:()=>Zt,netPeerCount:()=>en,netVersion:()=>tn,sanitizeWebsocketBaseURL:()=>B,signerUtils:()=>Je,subscriptions:()=>eo,thorest:()=>p,toQueryString:()=>I,transactionsFormatter:()=>D,txPoolContent:()=>nn,txPoolContentFrom:()=>rn,txPoolInspect:()=>on,txPoolStatus:()=>an,vnsUtils:()=>R,web3ClientVersion:()=>sn,web3Sha3:()=>cn});var x=(t=>(t.GET="GET",t.POST="POST",t))(x||{});var be=()=>{let n=process?.env?.SDK_TRACE?.toLowerCase();return n==="true"||n==="1"},He=(n,e,t,r)=>{if(!be())return Date.now();let o=Date.now(),i={category:"HTTP Request",method:n,url:e,requestHeaders:t,requestBody:r,timestamp:o};if(console.log(` \u26A1 [TRACE] HTTP Request (${new Date(o).toISOString()})`),console.log(`\u27A1\uFE0F ${JSON.stringify(i,null,2)}`),t!=null&&Object.keys(t).length>0&&(console.log("\u{1F4CB} Headers:"),Object.entries(t).forEach(([a,c])=>{console.log(` ${a}: ${c}`);})),r!==void 0){console.log("\u{1F4E6} Body:");try{console.log(typeof r=="string"?r:JSON.stringify(r,null,2));}catch{console.log("[Complex body object]");}}return o},qe=(n,e,t,r)=>{if(!be())return;let o=Date.now(),i=o-n,a={category:"HTTP Response",url:e,responseHeaders:t,responseBody:r,timestamp:o,duration:i};if(console.log(` \u26A1 [TRACE] HTTP Response (${new Date(o).toISOString()})`),console.log(`\u27A1\uFE0F ${JSON.stringify(a,null,2)}`),console.log(`\u2B05\uFE0F ${e} (${i}ms)`),t!=null&&Object.keys(t).length>0&&(console.log("\u{1F4CB} Headers:"),Object.entries(t).forEach(([c,d])=>{console.log(` ${c}: ${d}`);})),r!==null){console.log("\u{1F4E6} Body:");try{console.log(typeof r=="string"?r:JSON.stringify(r,null,2));}catch{console.log("[Complex response body]");}}},$e=(n,e,t,r)=>{if(!be())return;let o=Date.now(),i=o-n,a={category:"HTTP Error",method:t,url:e,error:r,timestamp:o,duration:i};console.log(` \u26A1 [TRACE] HTTP Error (${new Date(o).toISOString()})`),console.log(`\u27A1\uFE0F ${JSON.stringify(a,null,2)}`),console.log(`\u274C ${t} ${e} (${i}ms)`),console.log("\u26D4 Error:"),r!=null&&r instanceof Error?(console.log(` ${r.name}: ${r.message}`),r.stack!=null&&console.log(` Stack: ${r.stack}`),"cause"in r&&r.cause!=null&&(console.log(" Cause:"),console.log(r.cause))):console.log(r);};var _=class n{static DEFAULT_TIMEOUT=1e4;baseURL;headers;timeout;constructor(e,t=new Headers,r=n.DEFAULT_TIMEOUT){this.baseURL=e,this.timeout=r,this.headers=t;}async get(e,t){return await this.http("GET",e,t)}isValidUrl(e){try{return new URL(e),!0}catch{return false}}async http(e,t,r){let o=new AbortController,i=setTimeout(()=>{o.abort();},this.timeout),a,c=Date.now(),d={};try{t.startsWith("/")&&(t=t.slice(1));let u=this.baseURL;u.endsWith("/")||(u+="/"),/^https?:\/\//.exec(t)?a=new URL(t):a=new URL(t,u),r?.query&&a!==void 0&&Object.entries(r.query).forEach(([k,K])=>{a.searchParams.append(k,String(K));}),r?.query!==void 0&&r?.query!=null&&a!==void 0&&Object.entries(r.query).forEach(([k,K])=>{a.searchParams.append(k,String(K));});let m=new Headers(this.headers);r?.headers!==void 0&&r?.headers!=null&&Object.entries(r.headers).forEach(([k,K])=>{m.append(k,String(K));}),d=Object.fromEntries(m.entries()),c=He(e,a.toString(),d,e!=="GET"?r?.body:void 0);let y=await fetch(a.toString(),{method:e,headers:m,body:e!=="GET"?JSON.stringify(r?.body):void 0,signal:o.signal}),W=Object.fromEntries(y.headers.entries());if(y.ok){r?.validateResponseHeader!=null&&W!=null&&r.validateResponseHeader(W);let k=await y.json();return qe(c,a.toString(),W,k),k}throw new Error(`HTTP ${y.status} ${y.statusText}`,{cause:y})}catch(u){if(a){let m=a.toString();throw $e(c,m,e,u),new sdkErrors.InvalidHTTPRequest("HttpClient.http()",u.message,{method:e,url:m},u)}else {let m=this.isValidUrl(this.baseURL)?new URL(t,this.baseURL).toString():t;throw new sdkErrors.InvalidHTTPParams("HttpClient.http()",u.message,{method:e,url:m},u)}}finally{clearTimeout(i);}}async post(e,t){return await this.http("POST",e,t)}};function pn(n,e){if(n.nonce!==void 0&&(typeof n.nonce=="string"?parseInt(n.nonce,10):n.nonce)<0)throw new Error("Transaction nonce must be a positive number");return {from:e,chainTag:n.chainTag,blockRef:n.blockRef,expiration:n.expiration,clauses:n.clauses,gasPriceCoef:n.gasPriceCoef,gas:n.gas,dependsOn:n.dependsOn??void 0,nonce:n.nonce,reserved:n.reserved,maxPriorityFeePerGas:n.maxPriorityFeePerGas??void 0,maxFeePerGas:n.maxFeePerGas??void 0}}var Je={transactionBodyToTransactionRequestInput:pn};var N=(s=>(s.eth_blockNumber="eth_blockNumber",s.eth_chainId="eth_chainId",s.eth_getBalance="eth_getBalance",s.eth_getCode="eth_getCode",s.eth_getStorageAt="eth_getStorageAt",s.eth_estimateGas="eth_estimateGas",s.eth_call="eth_call",s.eth_sendRawTransaction="eth_sendRawTransaction",s.eth_getLogs="eth_getLogs",s.eth_getBlockByHash="eth_getBlockByHash",s.eth_getBlockByNumber="eth_getBlockByNumber",s.eth_accounts="eth_accounts",s.eth_requestAccounts="eth_requestAccounts",s.eth_gasPrice="eth_gasPrice",s.eth_getTransactionByHash="eth_getTransactionByHash",s.eth_getTransactionCount="eth_getTransactionCount",s.eth_getTransactionReceipt="eth_getTransactionReceipt",s.eth_getTransactionByBlockNumberAndIndex="eth_getTransactionByBlockNumberAndIndex",s.eth_getTransactionByBlockHashAndIndex="eth_getTransactionByBlockHashAndIndex",s.eth_getBlockTransactionCountByHash="eth_getBlockTransactionCountByHash",s.eth_getBlockTransactionCountByNumber="eth_getBlockTransactionCountByNumber",s.eth_sendTransaction="eth_sendTransaction",s.eth_syncing="eth_syncing",s.net_version="net_version",s.web3_clientVersion="web3_clientVersion",s.eth_subscribe="eth_subscribe",s.eth_unsubscribe="eth_unsubscribe",s.debug_traceTransaction="debug_traceTransaction",s.debug_traceCall="debug_traceCall",s.evm_mine="evm_mine",s.evm_increaseTime="evm_increaseTime",s.web3_sha3="web3_sha3",s.net_peerCount="net_peerCount",s.net_listening="net_listening",s.eth_getUncleByBlockNumberAndIndex="eth_getUncleByBlockNumberAndIndex",s.eth_getUncleByBlockHashAndIndex="eth_getUncleByBlockHashAndIndex",s.txpool_inspect="txpool_inspect",s.txpool_contentFrom="txpool_contentFrom",s.txpool_content="txpool_content",s.txpool_status="txpool_status",s.eth_signTransaction="eth_signTransaction",s.debug_traceBlockByHash="debug_traceBlockByHash",s.debug_traceBlockByNumber="debug_traceBlockByNumber",s.eth_getUncleCountByBlockHash="eth_getUncleCountByBlockHash",s.eth_getUncleCountByBlockNumber="eth_getUncleCountByBlockNumber",s.eth_signTypedData_v4="eth_signTypedData_v4",s.eth_getBlockReceipts="eth_getBlockReceipts",s.eth_coinbase="eth_coinbase",s.eth_feeHistory="eth_feeHistory",s.eth_getWork="eth_getWork",s.eth_mining="eth_mining",s.eth_hashrate="eth_hashrate",s.eth_protocolVersion="eth_protocolVersion",s.eth_sign="eth_sign",s.eth_submitWork="eth_submitWork",s.parity_nextNonce="parity_nextNonce",s.eth_newFilter="eth_newFilter",s.eth_newBlockFilter="eth_newBlockFilter",s.eth_newPendingTransactionFilter="eth_newPendingTransactionFilter",s.eth_getFilterLogs="eth_getFilterLogs",s.eth_getFilterChanges="eth_getFilterChanges",s.eth_uninstallFilter="eth_uninstallFilter",s.debug_getBadBlocks="debug_getBadBlocks",s.debug_getRawBlock="debug_getRawBlock",s.debug_getRawHeader="debug_getRawHeader",s.debug_getRawReceipts="debug_getRawReceipts",s.debug_getRawTransaction="debug_getRawTransaction",s.engine_exchangeCapabilities="engine_exchangeCapabilities",s.engine_exchangeTransitionConfigurationV1="engine_exchangeTransitionConfigurationV1",s.engine_forkchoiceUpdatedV1="engine_forkchoiceUpdatedV1",s.engine_forkchoiceUpdatedV2="engine_forkchoiceUpdatedV2",s.engine_forkchoiceUpdatedV3="engine_forkchoiceUpdatedV3",s.engine_getPayloadBodiesByHashV1="engine_getPayloadBodiesByHashV1",s.engine_getPayloadBodiesByRangeV1="engine_getPayloadBodiesByRangeV1",s.engine_getPayloadV1="engine_getPayloadV1",s.engine_getPayloadV2="engine_getPayloadV2",s.engine_getPayloadV3="engine_getPayloadV3",s.engine_newPayloadV1="engine_newPayloadV1",s.engine_newPayloadV2="engine_newPayloadV2",s.engine_newPayloadV3="engine_newPayloadV3",s.eth_createAccessList="eth_createAccessList",s.eth_getProof="eth_getProof",s.eth_maxPriorityFeePerGas="eth_maxPriorityFeePerGas",s))(N||{});var z=class{balance;energy;hasCode;get vet(){return sdkCore.VET.of(sdkCore.Units.formatEther(sdkCore.FixedPointNumber.of(this.balance)))}get vtho(){return sdkCore.VTHO.of(sdkCore.Units.formatEther(sdkCore.FixedPointNumber.of(this.energy)))}constructor(e){this.balance=e.balance,this.energy=e.energy,this.hasCode=e.hasCode;}};var Vr="0x0000000000000000000000000000506172616d73",Hr="0x0000000000000000000000000000456e65726779",qr=[{constant:false,inputs:[{name:"_key",type:"bytes32"},{name:"_value",type:"uint256"}],name:"set",outputs:[],payable:false,stateMutability:"nonpayable",type:"function"},{constant:true,inputs:[{name:"_key",type:"bytes32"}],name:"get",outputs:[{name:"",type:"uint256"}],payable:false,stateMutability:"view",type:"function"},{constant:true,inputs:[],name:"executor",outputs:[{name:"",type:"address"}],payable:false,stateMutability:"view",type:"function"},{anonymous:false,inputs:[{indexed:true,name:"key",type:"bytes32"},{indexed:false,name:"value",type:"uint256"}],name:"Set",type:"event"}],$r=[{constant:true,inputs:[],name:"name",outputs:[{name:"",type:"string"}],payable:false,stateMutability:"pure",type:"function"},{constant:false,inputs:[{name:"_spender",type:"address"},{name:"_value",type:"uint256"}],name:"approve",outputs:[{name:"success",type:"bool"}],payable:false,stateMutability:"nonpayable",type:"function"},{constant:true,inputs:[],name:"totalSupply",outputs:[{name:"",type:"uint256"}],payable:false,stateMutability:"view",type:"function"},{constant:false,inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_amount",type:"uint256"}],name:"transferFrom",outputs:[{name:"success",type:"bool"}],payable:false,stateMutability:"nonpayable",type:"function"},{constant:true,inputs:[],name:"decimals",outputs:[{name:"",type:"uint8"}],payable:false,stateMutability:"pure",type:"function"},{constant:true,inputs:[{name:"_owner",type:"address"}],name:"balanceOf",outputs:[{name:"balance",type:"uint256"}],payable:false,stateMutability:"view",type:"function"},{constant:true,inputs:[],name:"symbol",outputs:[{name:"",type:"string"}],payable:false,stateMutability:"pure",type:"function"},{constant:false,inputs:[{name:"_to",type:"address"},{name:"_amount",type:"uint256"}],name:"transfer",outputs:[{name:"success",type:"bool"}],payable:false,stateMutability:"nonpayable",type:"function"},{constant:false,inputs:[{name:"_from",type:"address"},{name:"_to",type:"address"},{name:"_amount",type:"uint256"}],name:"move",outputs:[{name:"success",type:"bool"}],payable:false,stateMutability:"nonpayable",type:"function"},{constant:true,inputs:[],name:"totalBurned",outputs:[{name:"",type:"uint256"}],payable:false,stateMutability:"view",type:"function"},{constant:true,inputs:[{name:"_owner",type:"address"},{name:"_spender",type:"address"}],name:"allowance",outputs:[{name:"remaining",type:"uint256"}],payable:false,stateMutability:"view",type:"function"},{anonymous:false,inputs:[{indexed:true,name:"_from",type:"address"},{indexed:true,name:"_to",type:"address"},{indexed:false,name:"_value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:false,inputs:[{indexed:true,name:"_owner",type:"address"},{indexed:true,name:"_spender",type:"address"},{indexed:false,name:"_value",type:"uint256"}],name:"Approval",type:"event"}],Te={PARAMS_ABI:qr,PARAMS_ADDRESS:Vr,ENERGY_ABI:$r,ENERGY_ADDRESS:Hr};var Pe=/^http:\/\//,je=/^https:\/\//;var We=30;var we=sdkCore.Keccak256.of(sdkCore.Txt.of("Error(string)").bytes).toString().slice(0,10),Ce=sdkCore.Keccak256.of(sdkCore.Txt.of("Panic(uint256)").bytes).toString().slice(0,10);var Jr="https://mainnet.vechain.org",jr="https://testnet.vechain.org",Wr="http://127.0.0.1:8669";var l="https://ethereum.github.io/execution-apis/api-documentation/";var b=n=>{let e={};for(let t in n)n[t]!==void 0&&(e[t]=n[t]);return e};async function zr(n){await new Promise(e=>setTimeout(e,n));}function yn(n,e){if(e?.requestIntervalInMilliseconds!==void 0&&(e.requestIntervalInMilliseconds<=0||!Number.isInteger(e.requestIntervalInMilliseconds)))throw new sdkErrors.InvalidDataType("SyncPoll()",'Polling failed: Invalid input for field "options?.requestIntervalInMilliseconds" it must be a positive number',{requestIntervalInMilliseconds:e.requestIntervalInMilliseconds});if(e?.maximumIterations!==void 0&&(e.maximumIterations<=0||!Number.isInteger(e.maximumIterations)))throw new sdkErrors.InvalidDataType("SyncPoll()",'Polling failed: Invalid input for field "options?.maximumIterations" it must be a positive number',{maximumIterations:e.maximumIterations});if(e?.maximumWaitingTimeInMilliseconds!==void 0&&(e.maximumWaitingTimeInMilliseconds<=0||!Number.isInteger(e.maximumWaitingTimeInMilliseconds)))throw new sdkErrors.InvalidDataType("SyncPoll()",'Polling failed: Invalid input for field "options?.maximumWaitingTimeInMilliseconds" it must be a positive number',{maximumWaitingTimeInMilliseconds:e.maximumWaitingTimeInMilliseconds});let t=0,r,o=false,i=Date.now();return {waitUntil:async a=>{try{do{r=await n();let c=a(r);if(c)return r;await zr(e?.requestIntervalInMilliseconds??1e3),t=t+1;let d=e?.maximumIterations!==void 0?t>=e.maximumIterations:!1,u=e?.maximumWaitingTimeInMilliseconds!==void 0&&Date.now()-i>=e.maximumWaitingTimeInMilliseconds;o=!(c||d||u);}while(o);return r}catch(c){throw new sdkErrors.PollExecution("SyncPoll.waitUntil()","Polling failed: Function execution error encountered during synchronous polling.",{functionName:n.name},c)}}}}var ze=class extends events.EventEmitter{currentIteration=0;error;hasToStopOnError;intervalId;pollingFunction;requestIntervalInMilliseconds;constructor(e,t,r){if(super(),this.pollingFunction=e,this.hasToStopOnError=r,t!==void 0&&(t<=0||!Number.isInteger(t)))throw new sdkErrors.InvalidDataType("SyncPoll()",'Polling failed: Invalid input for field "options?.maximumWaitingTimeInMilliseconds" it must be a positive number',{requestIntervalInMilliseconds:t});this.requestIntervalInMilliseconds=t;}get getCurrentIteration(){return this.currentIteration}async _intervalLoop(){try{let e=await this.pollingFunction();this.emit("data",{data:e,eventPoll:this});}catch(e){this.error=new sdkErrors.PollExecution("EventPoll - main interval loop function",`Error during the execution of the poll ${e.message}`,{functionName:this.pollingFunction.name}),this.emit("error",{error:this.error}),this.hasToStopOnError&&this.stopListen();}this.currentIteration=this.currentIteration+1;}onData(e){return this.on("data",t=>{e(t.data,t.eventPoll);}),this}onError(e){return this.on("error",t=>{e(t.error);}),this}onStart(e){return this.on("start",t=>{e(t.eventPoll);}),this}onStop(e){return this.on("stop",t=>{e(t.eventPoll);}),this}startListen(){this.emit("start",{eventPoll:this}),this._intervalLoop().then(()=>{this.intervalId=setInterval(()=>{(async()=>{try{await this._intervalLoop();}catch(e){console.error("EventPoll interval error:",e),this.hasToStopOnError&&this.stopListen();}})();},this.requestIntervalInMilliseconds);});}stopListen(){clearInterval(this.intervalId),this.emit("stop",{eventPoll:this});}};function bn(n,e,t=true){return new ze(n,e,t)}var v={SyncPoll:yn,createEventPoll:bn};var I=n=>{let e=Object.entries(n).filter(([,t])=>t!==void 0).map(([t,r])=>`${encodeURIComponent(t)}=${encodeURIComponent(r)}`);return e.length>0?`?${e.join("&")}`:""},B=n=>{n=n.trim();let e=/^(https?:\/\/)([a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*)(:\d+)?\/?$/;if(!e.test(n))throw new sdkErrors.InvalidDataType("sanitizeWebsocketBaseURL()",`Invalid url: ${n}. Must adhere to the regex: ${e}.`,{url:n,urlRegex:e});return n=n.replace(/\/$/,""),n=Pe.exec(n)!==null?n.replace(Pe,"ws://"):n.replace(je,"wss://"),n};var p={accounts:{get:{ACCOUNT_DETAIL:n=>`/accounts/${n}`,ACCOUNT_BYTECODE:n=>`/accounts/${n}/code`,STORAGE_AT:(n,e)=>`/accounts/${n}/storage/${e}`},post:{SIMULATE_TRANSACTION:n=>n!=null?`/accounts/*?revision=${n}`:"/accounts/*"}},blocks:{get:{BLOCK_DETAIL:n=>`/blocks/${n}`}},nodes:{get:{NODES:()=>"/node/network/peers"}},logs:{post:{EVENT_LOGS:()=>"/logs/event",TRANSFER_LOGS:()=>"/logs/transfer"}},transactions:{get:{TRANSACTION:n=>`/transactions/${n}`,TRANSACTION_RECEIPT:n=>`/transactions/${n}/receipt`},post:{TRANSACTION:()=>"/transactions"}},subscriptions:{get:{BLOCK:(n,e)=>{let t=I({pos:e});return `${B(n)}/subscriptions/block${t}`},EVENT:(n,e)=>{let t=I({pos:e?.position,addr:e?.contractAddress,t0:e?.topic0,t1:e?.topic1,t2:e?.topic2,t3:e?.topic3,t4:e?.topic4});return `${B(n)}/subscriptions/event${t}`},VET_TRANSFER:(n,e)=>{let t=I({pos:e?.position,txOrigin:e?.signerAddress,sender:e?.sender,recipient:e?.receiver});return `${B(n)}/subscriptions/transfer${t}`},BEAT_LEGACY:(n,e)=>{let t=I({pos:e});return `${B(n)}/subscriptions/beat${t}`},BEAT:(n,e)=>{let t=I({pos:e});return `${B(n)}/subscriptions/beat2${t}`},NEW_TRANSACTIONS:n=>`${B(n)}/subscriptions/txpool`}},debug:{post:{TRACE_TRANSACTION_CLAUSE:()=>"/debug/tracers",TRACE_CONTRACT_CALL:()=>"/debug/tracers/call",RETRIEVE_STORAGE_RANGE:()=>"/debug/storage-range"}},fees:{get:{FEES_HISTORY:(n,e,t)=>`/fees/history${I({blockCount:n,newestBlock:e,rewardPercentiles:t?.join(",")})}`}}};var Tn=(n,e)=>p.subscriptions.get.BEAT_LEGACY(n,e?.blockID),Pn=(n,e)=>p.subscriptions.get.BEAT(n,e?.blockID);var wn=(n,e)=>p.subscriptions.get.BLOCK(n,e?.blockID);var xn=(n,e,t,r)=>{let i=(typeof e=="string"?new sdkCore.ABIEvent(e):new sdkCore.ABIEvent(e)).encodeFilterTopicsNoNull(t??[]);return p.subscriptions.get.EVENT(n,{position:r?.blockID,contractAddress:r?.address,topic0:i[0],topic1:i[1],topic2:i[2],topic3:i[3],topic4:i[4]})};var vn=n=>p.subscriptions.get.NEW_TRANSACTIONS(n);var Rn=(n,e)=>p.subscriptions.get.VET_TRANSFER(n,{position:e?.blockID,signerAddress:e?.signerAddress,sender:e?.sender,receiver:e?.recipient});var eo={getEventSubscriptionUrl:xn,getBlockSubscriptionUrl:wn,getNewTransactionsSubscriptionUrl:vn,getVETtransfersSubscriptionUrl:Rn,getLegacyBeatSubscriptionUrl:Tn,getBeatSubscriptionUrl:Pn};var Y={[sdkCore.MAINNET_NETWORK.genesisBlock.id]:{registry:"0xa9231da8BF8D10e2df3f6E03Dd5449caD600129b",resolveUtils:"0xA11413086e163e41901bb81fdc5617c975Fa5a1A"},[sdkCore.TESTNET_NETWORK.genesisBlock.id]:{registry:"0xcBFB30c1F267914816668d53AcBA7bA7c9806D13",resolveUtils:"0xc403b8EA53F707d7d4de095f0A20bC491Cf2bc94"},[sdkCore.SOLO_NETWORK.genesisBlock.id]:{registry:"0x1c4a602ed21f3d1dddd1142c81f231ef1a08c921",resolveUtils:"0xb2f08bbfa8a42b1fbe63feec604cb147385203d7"}};var io=async(n,e)=>{let[t]=await R.resolveNames(n.blocks,n.transactions,[e]);return t??null},ao=async(n,e,t)=>{let r=await n.getGenesisBlock();if(r===null||!sdkCore.Address.isValid(Y[r.id]?.resolveUtils))return t.map(()=>null);let o=Y[r.id].resolveUtils,i=await e.executeCall(o,sdkCore.ABIItem.ofSignature(sdkCore.ABIFunction,"function getAddresses(string[] names) returns (address[] addresses)"),[t]),[a]=i.result.array;return a.map(c=>c===sdkCore.ZERO_ADDRESS||!sdkCore.Address.isValid(c)?null:c)},so=async(n,e)=>{let[t]=await R.lookupAddresses(n,[e]);return t??null},co=async(n,e)=>{let t=await n.blocks.getGenesisBlock();if(t===null||!sdkCore.Address.isValid(Y[t.id]?.resolveUtils))return e.map(()=>null);let r=Y[t.id].resolveUtils,o=await n.contracts.executeCall(r,sdkCore.ABIItem.ofSignature(sdkCore.ABIFunction,"function getNames(address[] addresses) returns (string[] names)"),[e]),[i]=o.result.array;return i.map(a=>a===""?null:a)},R={resolveName:io,resolveNames:ao,lookupAddress:so,lookupAddresses:co};var Q=class{constructor(e){this.httpClient=e;}async getAccount(e,t){let r=t?.revision?.toString();return new z(await this.httpClient.get(p.accounts.get.ACCOUNT_DETAIL(e.toString()),{query:b({revision:r})}))}async getBytecode(e,t){let r=t?.revision?.toString(),o=await this.httpClient.get(p.accounts.get.ACCOUNT_BYTECODE(e.toString()),{query:b({revision:r})});return sdkCore.HexUInt.of(o.code)}async getStorageAt(e,t,r){let o=t.toString(),i=r?.revision?.toString(),a=await this.httpClient.get(p.accounts.get.STORAGE_AT(e.toString(),o),{query:b({pos:o,revision:i})});return sdkCore.HexUInt.of(a.value)}};var X=class{constructor(e,t){this.httpClient=e;this.onBlockError=t?.onBlockError,t?.isPollingEnabled===true&&this.setupPolling();}headBlock=null;onBlockError;pollInstance;destroy(){this.pollInstance!=null&&this.pollInstance.stopListen();}setupPolling(){this.pollInstance=v.createEventPoll(async()=>await this.getBestBlockCompressed(),1e4).onData(e=>{this.headBlock=e;}).onError(this.onBlockError??(()=>{})),this.pollInstance.startListen();}async getBlockCompressed(e){if(e!=null&&!sdkCore.Revision.isValid(e))throw new sdkErrors.InvalidDataType("BlocksModule.getBlockCompressed()",'Invalid revision. The revision must be a string representing a block number or block id (also "best" is accepted which represents the best block & "finalized" for the finalized block).',{revision:e});return await this.httpClient.http("GET",p.blocks.get.BLOCK_DETAIL(e))}async getBlockExpanded(e){if(e!=null&&!sdkCore.Revision.isValid(e))throw new sdkErrors.InvalidDataType("BlocksModule.getBlockExpanded()",'Invalid revision. The revision must be a string representing a block number or block id (also "best" is accepted which represents the best block & "finalized" for the finalized block).',{revision:e});return await this.httpClient.http("GET",p.blocks.get.BLOCK_DETAIL(e),{query:b({expanded:true})})}async getBestBlockCompressed(){return await this.getBlockCompressed("best")}async getBestBlockExpanded(){return await this.getBlockExpanded("best")}async getBestBlockBaseFeePerGas(){let e=await this.getBestBlockCompressed();return e===null?null:e.baseFeePerGas??null}async getBestBlockRef(){let e=await this.getBestBlockCompressed();return e===null?null:e.id.slice(0,18)}async getFinalBlockCompressed(){return await this.getBlockCompressed("finalized")}async getFinalBlockExpanded(){return await this.getBlockExpanded("finalized")}async _waitForBlock(e,t,r){if(e!=null&&e<=0)throw new sdkErrors.InvalidDataType("BlocksModule.waitForBlock()","Invalid blockNumber. The blockNumber must be a number representing a block number.",{blockNumber:e});return await v.SyncPoll(async()=>t?await this.getBlockExpanded(e):await this.getBlockCompressed(e),{requestIntervalInMilliseconds:r?.intervalMs,maximumWaitingTimeInMilliseconds:r?.timeoutMs}).waitUntil(o=>o!=null&&o.number==e)}async waitForBlockCompressed(e,t){return await this._waitForBlock(e,false,t)}async waitForBlockExpanded(e,t){return await this._waitForBlock(e,true,t)}getHeadBlock(){return this.headBlock}async getGenesisBlock(){return await this.getBlockCompressed(0)}getAllAddressesIntoABlock(e){let t=new Set;return t.add(e.beneficiary),t.add(e.signer),e.transactions.forEach(r=>{r.clauses.forEach(o=>{typeof o.to=="string"&&t.add(o.to);}),t.add(r.gasPayer),t.add(r.origin),r.outputs.forEach(o=>{typeof o.contractAddress=="string"&&t.add(o.contractAddress),o.events.forEach(i=>{t.add(i.address);}),o.transfers.forEach(i=>{t.add(i.recipient),t.add(i.sender);});});}),Array.from(t)}};var xe=class{contract;criteriaSet;constructor(e,t){this.contract=e,this.criteriaSet=t;}async get(e){let t={range:e?.range??{unit:"block",from:0,to:(await this.contract.contractsModule.transactionsModule.blocksModule.getBestBlockCompressed())?.number},criteriaSet:this.criteriaSet,options:e?.options,order:e?.order??"asc"};return await this.contract.contractsModule.transactionsModule.logsModule.filterEventLogs(t)}};function Z(n){return new Proxy(n.read,{get:(e,t)=>async(...r)=>{let o=Xe(r),i=o.clauseAdditionalOptions?.comment,a=o.clauseAdditionalOptions?.revision,c=n.getFunctionAbi(t),d=await n.contractsModule.executeCall(n.address,c,o.args,{caller:n.getSigner()!==void 0?await n.getSigner()?.getAddress():void 0,...n.getContractReadOptions(),comment:i,revision:a,includeABI:true});if(!d.success)throw new sdkErrors.ContractCallError(c.stringSignature,d.result.errorMessage,{contractAddress:n.address});return d.result.array??[]}})}function ee(n){return new Proxy(n.transact,{get:(e,t)=>async(...r)=>{if(n.getSigner()===void 0)throw new sdkErrors.InvalidTransactionField("getTransactProxy()","Caller signer is required to transact with the contract.",{fieldName:"signer",prop:t});let o=n.getContractTransactOptions(),i=Xe(r),a=i.clauseAdditionalOptions?.value,c=i.clauseAdditionalOptions?.comment;return r=i.args,await n.contractsModule.executeTransaction(n.getSigner(),n.address,n.getFunctionAbi(t),r,{...o,value:o.value??a??"0x0",comment:c,includeABI:true})}})}function An(n){return new Proxy(n.filters,{get:(e,t)=>r=>{let o=Nn(n,t,r);return new xe(n,[o])}})}function En(n){return new Proxy(n.clause,{get:(e,t)=>(...r)=>{let o=n.getContractTransactOptions(),i=Xe(r),a=i.clauseAdditionalOptions?.value,c=i.clauseAdditionalOptions?.comment;return r=i.args,{clause:sdkCore.Clause.callFunction(sdkCore.Address.of(n.address),n.getFunctionAbi(t),r,sdkCore.VET.of(o.value??a??0,sdkCore.Units.wei),{comment:c,includeABI:true}),functionAbi:n.getFunctionAbi(t)}}})}function _n(n){return new Proxy(n.criteria,{get:(e,t)=>r=>Nn(n,t,r)})}function Nn(n,e,t){let r=n.getEventAbi(e),o=new Map(r.encodeFilterTopicsNoNull(t).map((i,a)=>[a,i]));return {criteria:{address:n.address,topic0:o.get(0),topic1:o.has(1)?o.get(1):void 0,topic2:o.has(2)?o.get(2):void 0,topic3:o.has(3)?o.get(3):void 0,topic4:o.has(4)?o.get(4):void 0},eventAbi:r}}function Xe(n){let e=ho(n),t=yo(n),r=bo(n);return (e!==void 0||t!==void 0||r!==void 0)&&(n=n.filter(o=>!(On(o)||Fn(o)||Dn(o)))),{args:n,clauseAdditionalOptions:{value:e?.value,comment:t?.comment,revision:r?.revision}}}function ho(n){let e=n.find(t=>On(t));if(e)return {value:e.value.toString()}}function yo(n){return n.find(e=>Fn(e))}function bo(n){return n.find(e=>Dn(e))}function On(n){return n.value!==void 0}function Fn(n){return n.comment!==void 0}function Dn(n){return n.revision!==void 0}var S=class{contractsModule;address;abi;signer;deployTransactionReceipt;read={};transact={};filters={};clause={};criteria={};contractCallOptions={};contractTransactionOptions={};constructor(e,t,r,o,i){this.abi=t,this.address=e,this.contractsModule=r,this.deployTransactionReceipt=i,this.signer=o,this.read=Z(this),this.transact=ee(this),this.filters=An(this),this.clause=En(this),this.criteria=_n(this);}setContractReadOptions(e){return this.contractCallOptions=e,this.read=Z(this),this.contractCallOptions}getContractReadOptions(){return this.contractCallOptions}clearContractReadOptions(){this.contractCallOptions={},this.read=Z(this);}setContractTransactOptions(e){return this.contractTransactionOptions=e,this.transact=ee(this),this.contractTransactionOptions}getContractTransactOptions(){return this.contractTransactionOptions}clearContractTransactOptions(){this.contractTransactionOptions={},this.transact=ee(this);}setSigner(e){return this.signer=e,this.transact=ee(this),this.read=Z(this),this.signer}getSigner(){return this.signer}getFunctionAbi(e){return sdkCore.ABIContract.ofAbi(this.abi).getFunction(e.toString())}getEventAbi(e){return sdkCore.ABIContract.ofAbi(this.abi).getEvent(e.toString())}};var U=class{abi;bytecode;signer;deployTransaction;contractsModule;constructor(e,t,r,o){this.abi=e,this.bytecode=t,this.signer=r,this.contractsModule=o;}async startDeployment(e,t){let r=sdkCore.Clause.deployContract(sdkCore.HexUInt.of(this.bytecode),e),o=await this.contractsModule.transactionsModule.estimateGas([r],await this.signer.getAddress(),t),i=await this.contractsModule.transactionsModule.buildTransactionBody([r],o.totalGas,t),a=await this.signer.signTransaction(Je.transactionBodyToTransactionRequestInput(i,await this.signer.getAddress()));return this.deployTransaction=await this.contractsModule.transactionsModule.sendTransaction(sdkCore.Transaction.decode(sdkCore.HexUInt.of(a.slice(2)).bytes,true)),this}async waitForDeployment(){if(this.deployTransaction?.id===void 0)throw new sdkErrors.CannotFindTransaction("ContractFactory.waitForDeployment()","Cannot find a contract deployment transaction",{networkUrl:this.contractsModule.transactionsModule.blocksModule.httpClient.baseURL});let e=await this.deployTransaction.wait();if(e?.outputs[0]?.contractAddress===null||e?.outputs[0]?.contractAddress===void 0)throw new sdkErrors.ContractDeploymentFailed("ContractFactory.waitForDeployment()","Contract deployment failed.",{deployTransaction:this.deployTransaction});return new S(e?.outputs[0].contractAddress,this.abi,this.contractsModule,this.signer,e)}getDeployTransaction(){return this.deployTransaction}};var te=class{constructor(e){this.transactionsModule=e;}createContractFactory(e,t,r){return new U(e,t,r,this)}load(e,t,r){return new S(e,t,this,r)}async executeCall(e,t,r,o){return await this.transactionsModule.executeCall(e,t,r,o)}async executeMultipleClausesCall(e,t){return await this.transactionsModule.executeMultipleClausesCall(e,t)}async executeTransaction(e,t,r,o,i){return await this.transactionsModule.executeTransaction(e,t,r,o,i)}async executeMultipleClausesTransaction(e,t,r){return await this.transactionsModule.executeMultipleClausesTransaction(e,t,r)}async getLegacyBaseGasPrice(){return await this.transactionsModule.getLegacyBaseGasPrice()}};var ne=class{constructor(e){this.httpClient=e;}async retrieveStorageRange(e){this.validateTarget(e.target,"retrieveStorageRange");let t=`${e.target.blockId}/${e.target.transaction}/${e.target.clauseIndex}`;return await this.httpClient.post(p.debug.post.RETRIEVE_STORAGE_RANGE(),{query:{},body:{target:t,address:e.options?.address?.toString(),keyStart:e.options?.keyStart?.toString(),maxResult:e.options?.maxResult},headers:{}})}async traceContractCall(e,t){return await this.httpClient.post(p.debug.post.TRACE_CONTRACT_CALL(),{query:{},body:{to:e.target?.to?.toString(),data:e.target?.data?.toString(),value:typeof e.target?.value?.wei=="bigint"?sdkCore.HexUInt.of(e.target.value.wei).toString():void 0,name:t,gas:e.options?.gas,gasPrice:e.options?.gasPrice,caller:e.options?.caller,provedWork:e.options?.provedWork,gasPayer:e.options?.gasPayer,expiration:e.options?.expiration,blockRef:e.options?.blockRef,config:e.config},headers:{}})}async traceTransactionClause(e,t){this.validateTarget(e.target,"traceTransactionClause");let r=`${e.target.blockId}/${e.target.transaction}/${e.target.clauseIndex}`;return await this.httpClient.post(p.debug.post.TRACE_TRANSACTION_CLAUSE(),{query:{},body:{target:r,name:t,config:e.config},headers:{}})}validateTarget(e,t){if(typeof e.transaction=="number"&&e.transaction<0)throw new sdkErrors.InvalidDataType("DebugModule.validateTarget()",`invalid transaction index '${e.transaction}' given as input for ${t}.`,{transaction:e.transaction,functionName:t});if(e.clauseIndex<0)throw new sdkErrors.InvalidDataType("DebugModule.validateTarget()",`invalid clause index '${e.clauseIndex}' given as input for ${t}.`,{clauseIndex:e.clauseIndex,functionName:t})}};var re=class{httpClient;transactionsModule;constructor(e){this.httpClient=e,this.transactionsModule=null;}setTransactionsModule(e){this.transactionsModule=e;}async estimateGas(e,t,r){if(this.transactionsModule==null)throw new sdkErrors.InvalidDataType("estimateGas()","Transactions module not set",{});return await this.transactionsModule.estimateGas(e,t,r)}async getMaxPriorityFeePerGas(){let e=await this.httpClient.get("/fees/priority");if(e==null||typeof e!="object")throw new sdkErrors.InvalidDataType("getMaxPriorityFeePerGas()","Invalid response format from /fees/priority endpoint",{response:e});if(e.maxPriorityFeePerGas===void 0||e.maxPriorityFeePerGas===null||e.maxPriorityFeePerGas===""||typeof e.maxPriorityFeePerGas!="string")throw new sdkErrors.InvalidDataType("getMaxPriorityFeePerGas()","Missing or invalid maxPriorityFeePerGas in response",{response:e});return e.maxPriorityFeePerGas}async getFeeHistory(e){if(e==null||typeof e.blockCount!="number"||!Number.isFinite(e.blockCount)||e.blockCount<=0)throw new sdkErrors.InvalidDataType("getFeeHistory()","Invalid blockCount parameter",{options:e});if(e.newestBlock!==null&&e.newestBlock!==void 0&&!sdkCore.Revision.isValid(e.newestBlock))throw new sdkErrors.InvalidDataType("getFeeHistory()",'Invalid revision. The revision must be a string representing a block number or block id (also "best" is accepted which represents the best block & "finalized" for the finalized block).',{options:e});let t=await this.httpClient.http("GET",p.fees.get.FEES_HISTORY(e.blockCount,e.newestBlock,e.rewardPercentiles));if(t==null||typeof t!="object")throw new sdkErrors.InvalidDataType("getFeeHistory()","Invalid response format from /fees/history endpoint",{response:t});return t}async getNextBlockBaseFeePerGas(){let e={blockCount:1,newestBlock:"next"},t=await this.getFeeHistory(e);return t.baseFeePerGas===null||t.baseFeePerGas===void 0||t.baseFeePerGas.length===0?null:sdkCore.HexUInt.of(t.baseFeePerGas[0]).bi}};var oe=class{blocksModule;constructor(e){this.blocksModule=e;}async filterRawEventLogs(e){return await this.blocksModule.httpClient.http("POST",p.logs.post.EVENT_LOGS(),{query:{},body:e,headers:{}})}async filterEventLogs(e){let t=e.criteriaSet?.map(i=>i.eventAbi),r=await this.getRawEventLogs(e),o=[];if(t!==void 0){let i=this.removeDuplicatedAbis(t);r.forEach(a=>{let c=i.get(a.topics[0]);if(c==null)throw new sdkErrors.InvalidAbiItem("LogsModule.filterEventLogs","Topic not found in the provided ABIs.",{type:"event",value:a.topics[0]});a.decodedData=c.decodeEventLogAsArray({data:sdkCore.Hex.of(a.data),topics:a.topics.map(d=>sdkCore.Hex.of(d))}),o.push(a);});}return o}async filterGroupedEventLogs(e){let t=e.criteriaSet?.map(i=>i.eventAbi),r=await this.getRawEventLogs(e),o=new Map;if(t!==void 0){let i=this.removeDuplicatedAbis(t);i.forEach(a=>o.set(a.signatureHash,[])),r.forEach(a=>{let c=i.get(a.topics[0]);if(c==null)throw new sdkErrors.InvalidAbiItem("LogsModule.filterGroupedEventLogs","Topic not found in the provided ABIs.",{type:"event",value:a.topics[0]});a.decodedData=c.decodeEventLogAsArray({data:sdkCore.Hex.of(a.data),topics:a.topics.map(d=>sdkCore.Hex.of(d))}),o.get(a.topics[0])?.push(a);});}return Array.from(o.values())}async getRawEventLogs(e){let t=e.criteriaSet?.map(o=>o.criteria),r={range:e.range??{unit:"block",from:0,to:(await this.blocksModule.getBestBlockCompressed())?.number},criteriaSet:t,options:e.options,order:e.order??"asc"};return await this.filterRawEventLogs(r)}removeDuplicatedAbis(e){let t=new Map;return e.forEach(r=>{t.has(r.signatureHash)||t.set(r.signatureHash,r);}),t}async filterTransferLogs(e){return await this.blocksModule.httpClient.http("POST",p.logs.post.TRANSFER_LOGS(),{query:{},body:e,headers:{}})}};var ie=class{blocksModule;constructor(e){this.blocksModule=e;}async getNodes(){return await this.blocksModule.httpClient.http("GET",p.nodes.get.NODES())??[]}async isHealthy(){let e=await this.blocksModule.getBestBlockCompressed(),t=this.getTimestampFromBlock(e),r=Math.floor(Date.now()/1e3)-t;return Math.abs(r)<30}getTimestampFromBlock=e=>{if(e==null||typeof e!="object"||!("timestamp"in e)||typeof e.timestamp!="number")throw new sdkErrors.InvalidDataType("NodesModule.getTimestampFromBlock()","Sending failed: Input must be a valid raw transaction in hex format.",{response:e});return e?.timestamp}};var Ze=sdkCore.Keccak256.of(sdkCore.Txt.of("Error(string)").bytes).toString().slice(0,10),et=sdkCore.Keccak256.of(sdkCore.Txt.of("Panic(uint256)").bytes).toString().slice(0,10);function tt(n){if(n.startsWith(Ze))return sdkCore.ABI.ofEncoded("string","0x"+n.slice(Ze.length)).getFirstDecodedValue();if(n.startsWith(et)){let e=sdkCore.ABI.ofEncoded("uint256","0x"+n.slice(et.length)).getFirstDecodedValue();return `Panic(0x${parseInt(e).toString(16).padStart(2,"0")})`}}var ae=class{blocksModule;debugModule;logsModule;gasModule;forkDetector;constructor(e,t,r,o,i){this.blocksModule=e,this.debugModule=t,this.logsModule=r,this.gasModule=o,this.forkDetector=i;}async getTransaction(e,t){if(!sdkCore.ThorId.isValid(e))throw new sdkErrors.InvalidDataType("TransactionsModule.getTransaction()","Invalid transaction ID given as input. Input must be an hex string of length 64.",{id:e});if(t?.head!==void 0&&!sdkCore.ThorId.isValid(t.head))throw new sdkErrors.InvalidDataType("TransactionsModule.getTransaction()","Invalid head given as input. Input must be an hex string of length 64.",{head:t?.head});return await this.blocksModule.httpClient.http("GET",p.transactions.get.TRANSACTION(e),{query:b({raw:false,head:t?.head,pending:t?.pending})})}async getTransactionRaw(e,t){if(!sdkCore.ThorId.isValid(e))throw new sdkErrors.InvalidDataType("TransactionsModule.getTransactionRaw()","Invalid transaction ID given as input. Input must be an hex string of length 64.",{id:e});if(t?.head!==void 0&&!sdkCore.ThorId.isValid(t.head))throw new sdkErrors.InvalidDataType("TransactionsModule.getTransaction()","Invalid head given as input. Input must be an hex string of length 64.",{head:t?.head});return await this.blocksModule.httpClient.http("GET",p.transactions.get.TRANSACTION(e),{query:b({raw:true,head:t?.head,pending:t?.pending})})}async getTransactionReceipt(e,t){if(!sdkCore.ThorId.isValid(e))throw new sdkErrors.InvalidDataType("TransactionsModule.getTransactionReceipt()","Invalid transaction ID given as input. Input must be an hex string of length 64.",{id:e});if(t?.head!==void 0&&!sdkCore.ThorId.isValid(t.head))throw new sdkErrors.InvalidDataType("TransactionsModule.getTransaction()","Invalid head given as input. Input must be an hex string of length 64.",{head:t?.head});return await this.blocksModule.httpClient.http("GET",p.transactions.get.TRANSACTION_RECEIPT(e),{query:b({head:t?.head})})}async sendRawTransaction(e){if(!sdkCore.Hex.isValid0x(e))throw new sdkErrors.InvalidDataType("TransactionsModule.sendRawTransaction()","Sending failed: Input must be a valid raw transaction in hex format.",{raw:e});try{sdkCore.Transaction.decode(sdkCore.HexUInt.of(e.slice(2)).bytes,!0);}catch(r){throw new sdkErrors.InvalidDataType("TransactionsModule.sendRawTransaction()","Sending failed: Input must be a valid raw transaction in hex format. Decoding error encountered.",{raw:e},r)}let t=await this.blocksModule.httpClient.http("POST",p.transactions.post.TRANSACTION(),{body:{raw:e}});return {id:t.id,wait:async()=>await this.waitForTransaction(t.id)}}async sendTransaction(e){if(!e.isSigned)throw new sdkErrors.InvalidDataType("TransactionsModule.sendTransaction()","Invalid transaction given as input. Transaction must be signed.",{signedTx:e});let t=sdkCore.Hex.of(e.encoded).toString();return await this.sendRawTransaction(t)}async waitForTransaction(e,t){if(!sdkCore.ThorId.isValid(e))throw new sdkErrors.InvalidDataType("TransactionsModule.waitForTransaction()","Invalid transaction ID given as input. Input must be an hex string of length 64.",{txID:e});return await v.SyncPoll(async()=>await this.getTransactionReceipt(e),{requestIntervalInMilliseconds:t?.intervalMs,maximumWaitingTimeInMilliseconds:t?.timeoutMs}).waitUntil(r=>r!==null)}async buildTransactionBody(e,t,r){let o=await this.blocksModule.getBlockCompressed(0);if(o===null)throw new sdkErrors.InvalidTransactionField("TransactionsModule.buildTransactionBody()","Error while building transaction body: Cannot get genesis block.",{fieldName:"genesisBlock",genesisBlock:o,clauses:e,options:r});let i=r?.blockRef??await this.blocksModule.getBestBlockRef();if(i===null)throw new sdkErrors.InvalidTransactionField("TransactionsModule.buildTransactionBody()","Error while building transaction body: Cannot get blockRef.",{fieldName:"blockRef",blockRef:i,clauses:e,options:r});let a=r?.chainTag??+`0x${o.id.slice(64)}`,c=await this.fillDefaultBodyOptions(r),d;return Array.isArray(e)?d=e.map(u=>({to:u.to,data:u.data,value:u.value})):d=[{to:e.to,data:e.data,value:e.value}],{blockRef:i,chainTag:a,clauses:await this.resolveNamesInClauses(d),dependsOn:r?.dependsOn??null,expiration:r?.expiration??32,gas:t,gasPriceCoef:c?.gasPriceCoef,maxFeePerGas:c?.maxFeePerGas,maxPriorityFeePerGas:c?.maxPriorityFeePerGas,nonce:r?.nonce??sdkCore.Hex.random(8).toString(),reserved:r?.isDelegated===true?{features:1}:void 0}}async fillTransactionBody(e){let t={maxFeePerGas:e.maxFeePerGas,maxPriorityFeePerGas:e.maxPriorityFeePerGas,gasPriceCoef:e.gasPriceCoef},r=await this.fillDefaultBodyOptions(t);return {...e,...r}}async fillDefaultBodyOptions(e){e??={};let t=e.maxFeePerGas!==void 0,r=e.maxPriorityFeePerGas!==void 0,o=e.gasPriceCoef!==void 0;if(r&&o&&!t)throw new sdkErrors.InvalidDataType("TransactionsModule.fillDefaultBodyOptions()","Invalid parameter combination: maxPriorityFeePerGas and gasPriceCoef cannot be used together without maxFeePerGas.",{options:e});if(t&&o&&!r)throw new sdkErrors.InvalidDataType("TransactionsModule.fillDefaultBodyOptions()","Invalid parameter combination: maxFeePerGas and gasPriceCoef cannot be used together without maxPriorityFeePerGas.",{options:e});if(r&&t&&o)e.gasPriceCoef=void 0;else if(r&&t)e.gasPriceCoef=void 0;else if(o&&!r&&!t)return e.maxFeePerGas=void 0,e.maxPriorityFeePerGas=void 0,e;let i=await this.forkDetector.isGalacticaForked("best");if(!i&&(t||r))throw new sdkErrors.InvalidDataType("TransactionsModule.fillDefaultBodyOptions()","Invalid transaction body options. Dynamic fee tx is not allowed before Galactica fork.",{options:e});if(!i&&!o)return e.gasPriceCoef=0,e;if(i&&t&&r)return e;e.gasPriceCoef=void 0;let a=await this.gasModule.getNextBlockBaseFeePerGas();if(a==null)throw new sdkErrors.InvalidDataType("TransactionsModule.fillDefaultBodyOptions()","Invalid transaction body options. Unable to get next block base fee per gas.",{options:e});if(e.maxPriorityFeePerGas===void 0||e.maxPriorityFeePerGas===null){let c=await this.calculateDefaultMaxPriorityFeePerGas(a);e.maxPriorityFeePerGas=c;}if(e.maxFeePerGas===void 0||e.maxFeePerGas===null){let c=sdkCore.HexUInt.of(e.maxPriorityFeePerGas).bi,d=112n*a/100n+c;e.maxFeePerGas=sdkCore.HexUInt.of(d).toString();}return e}async calculateDefaultMaxPriorityFeePerGas(e){let t=await this.gasModule.getFeeHistory({blockCount:10,newestBlock:"best",rewardPercentiles:[25,50,75]}),r;if(t.reward!==null&&t.reward!==void 0&&t.reward.length>0){let a=t.reward[t.reward.length-1];if(new Set(a).size===3)r=sdkCore.HexUInt.of(a[2]).bi;else {let d=0n,u=0;for(let m of t.reward)m.length!==null&&m.length>2&&m[2]!==null&&m[2]!==void 0&&(d+=sdkCore.HexUInt.of(m[2]).bi,u++);r=u>0?d/BigInt(u):0n;}}else r=sdkCore.HexUInt.of(await this.gasModule.getMaxPriorityFeePerGas()).bi;let o=e*46n/1000n,i=o<r?o:r;return sdkCore.HexUInt.of(i).toString()}async resolveNamesInClauses(e){let t=e.reduce((i,a)=>(typeof a.to=="string"&&!i.has(a.to)&&a.to.includes(".")&&i.set(a.to,a.to),i),new Map),r=[...t.keys()];return t.size===0?e:((await R.resolveNames(this.blocksModule,this,r)).forEach((i,a)=>{i!==null&&t.set(r[a],i);}),e.map(i=>typeof i.to!="string"?i:{to:t.get(i.to)??i.to,data:i.data,value:i.value}))}async simulateTransaction(e,t){let{revision:r,caller:o,gasPrice:i,gasPayer:a,gas:c,blockRef:d,expiration:u,provedWork:m}=t??{};if(r!=null&&!sdkCore.Revision.isValid(r.toString()))throw new sdkErrors.InvalidDataType("TransactionsModule.simulateTransaction()","Invalid revision given as input. Input must be a valid revision (i.e., a block number or block ID).",{revision:r});return await this.blocksModule.httpClient.http("POST",p.accounts.post.SIMULATE_TRANSACTION(r?.toString()),{query:b({revision:r?.toString()}),body:{clauses:await this.resolveNamesInClauses(e.map(y=>({to:y.to,data:y.data,value:BigInt(y.value).toString()}))),gas:c,gasPrice:i,caller:o,provedWork:m,gasPayer:a,expiration:u,blockRef:d}})}decodeRevertReason(e,t){if(e.startsWith(we))return sdkCore.ABI.ofEncoded("string",`0x${e.slice(we.length)}`).getFirstDecodedValue();if(e.startsWith(Ce)){let r=sdkCore.ABI.ofEncoded("uint256",`0x${e.slice(Ce.length)}`).getFirstDecodedValue();return `Panic(0x${parseInt(r).toString(16).padStart(2,"0")})`}else if(t!==void 0)return new ethers.Interface([ethers.ErrorFragment.from(t)]).decodeErrorResult(ethers.ErrorFragment.from(t),e).toArray()[0];return ""}async getRevertReason(e,t){let r=this.blocksModule,o=this.debugModule,i=await this.getTransaction(e),a=i!==null?await r.getBlockExpanded(i.meta.blockID):null;if(a===null||i===null)return null;let c=E(T.formatToRPCStandard(a,""),e);for(let d=0;d<i.clauses.length;d++){let u=await o.traceTransactionClause({target:{blockId:sdkCore.ThorId.of(a.id),transaction:c,clauseIndex:d},config:{OnlyTopCall:true}},"call");if(u.output!==void 0)return this.decodeRevertReason(u.output,t)}return null}async estimateGas(e,t,r){if(e.length<=0)throw new sdkErrors.InvalidDataType("GasModule.estimateGas()","Invalid clauses. Clauses must be an array of clauses with at least one clause.",{clauses:e,caller:t,options:r});if(r?.gasPadding!==void 0&&(r.gasPadding<=0||r.gasPadding>1))throw new sdkErrors.InvalidDataType("GasModule.estimateGas()","Invalid gasPadding. gasPadding must be a number between (0, 1].",{gasPadding:r?.gasPadding});let o=await this.simulateTransaction(e,{caller:t,...r}),i=o.some(u=>u.reverted),a=Number(sdkCore.Transaction.intrinsicGas(e).wei),c=o.reduce((u,m)=>u+m.gasUsed,0),d=Math.ceil((a+(c!==0?c+15e3:0))*(1+(r?.gasPadding??0)));return i?{totalGas:d,reverted:true,revertReasons:o.map(u=>tt(u.data)??""),vmErrors:o.map(u=>u.vmError)}:{totalGas:d,reverted:false,revertReasons:[],vmErrors:[]}}async executeCall(e,t,r,o){let i=await this.simulateTransaction([{to:e,value:"0",data:t.encodeData(r).toString()}],o);return this.getContractCallResult(i[0].data,t,i[0].reverted)}async executeMultipleClausesCall(e,t){return (await this.simulateTransaction(e.map(o=>o.clause),t)).map((o,i)=>this.getContractCallResult(o.data,e[i].functionAbi,o.reverted))}async executeTransaction(e,t,r,o,i){let a=await e.sendTransaction({clauses:[sdkCore.Clause.callFunction(sdkCore.Address.of(t),r,o,sdkCore.VET.of(i?.value??0,sdkCore.Units.wei))],gas:i?.gas,gasLimit:i?.gasLimit,gasPrice:i?.gasPrice,gasPriceCoef:i?.gasPriceCoef,maxFeePerGas:i?.maxFeePerGas,maxPriorityFeePerGas:i?.maxPriorityFeePerGas,nonce:i?.nonce,value:i?.value,dependsOn:i?.dependsOn,expiration:i?.expiration,chainTag:i?.chainTag,blockRef:i?.blockRef,delegationUrl:i?.delegationUrl,comment:i?.comment});return {id:a,wait:async()=>await this.waitForTransaction(a)}}async executeMultipleClausesTransaction(e,t,r){let o=await t.sendTransaction({clauses:e.map(i=>i.clause),gas:r?.gas,gasLimit:r?.gasLimit,gasPrice:r?.gasPrice,gasPriceCoef:r?.gasPriceCoef,maxFeePerGas:r?.maxFeePerGas,maxPriorityFeePerGas:r?.maxPriorityFeePerGas,nonce:r?.nonce,value:r?.value,dependsOn:r?.dependsOn,expiration:r?.expiration,chainTag:r?.chainTag,blockRef:r?.blockRef,delegationUrl:r?.delegationUrl,comment:r?.comment});return {id:o,wait:async()=>await this.waitForTransaction(o)}}async getLegacyBaseGasPrice(){return await this.executeCall(Te.PARAMS_ADDRESS,sdkCore.ABIContract.ofAbi(Te.PARAMS_ABI).getFunction("get"),[sdkCore.dataUtils.encodeBytes32String("base-gas-price","left")])}getContractCallResult(e,t,r){if(r)return {success:false,result:{errorMessage:tt(e)??""}};let o=sdkCore.Hex.of(e),i=t.decodeResult(o),a=t.decodeOutputAsArray(o);return {success:true,result:{plain:i,array:a}}}};var Mo=async(n,e,t,r)=>{let o=sdkCore.Hex.of(n.encoded).toString(),i={origin:t,raw:o}