UNPKG

wowok

Version:

Wowok Blockchain TypeScript API

1 lines 12.1 kB
import{fromBase58,toBase64,toHex}from'../_deps/bcs/index.js';import{Experimental_BaseClient}from'../experimental/client.js';import{isTransaction}from'../transactions/Transaction.js';import{isValidWowAddress,isValidWowObjectId,isValidTransactionDigest,normalizeWowAddress,normalizeWowObjectId}from'../utils/wow-types.js';import{JsonRpcHTTPTransport}from'./http-transport.js';import{JSONRpcCoreClient}from'./core.js';const WOW_CLIENT_BRAND=Symbol['for']('https://wowok.net@WowClient');export function isWowJsonRpcClient(a){return typeof a==='object'&&a!==null&&a[WOW_CLIENT_BRAND]===!![];}export class WowJsonRpcClient extends Experimental_BaseClient{['core'];['jsonRpc']=this;['transport'];get[WOW_CLIENT_BRAND](){return!![];}constructor(a){super({'network':a['network']??'unknown'}),this['transport']=a['transport']??new JsonRpcHTTPTransport({'url':a['url']}),this['core']=new JSONRpcCoreClient({'jsonRpcClient':this});}async['getRpcApiVersion']({signal:a}={}){const b=await this['transport']['request']({'method':'rpc.discover','params':[],'signal':a});return b['info']['version'];}async['getCoins']({coinType:a,owner:b,cursor:c,limit:d,signal:e}){if(!b||!isValidWowAddress(normalizeWowAddress(b)))throw new Error('Invalid\x20Wow\x20address');return await this['transport']['request']({'method':'wx_getCoins','params':[b,a,c,d],'signal':e});}async['getAllCoins'](a){if(!a['owner']||!isValidWowAddress(normalizeWowAddress(a['owner'])))throw new Error('Invalid\x20Wow\x20address');return await this['transport']['request']({'method':'wx_getAllCoins','params':[a['owner'],a['cursor'],a['limit']],'signal':a['signal']});}async['getBalance']({owner:a,coinType:b,signal:c}){if(!a||!isValidWowAddress(normalizeWowAddress(a)))throw new Error('Invalid\x20Wow\x20address');return await this['transport']['request']({'method':'wx_getBalance','params':[a,b],'signal':c});}async['getAllBalances'](a){if(!a['owner']||!isValidWowAddress(normalizeWowAddress(a['owner'])))throw new Error('Invalid\x20Wow\x20address');return await this['transport']['request']({'method':'wx_getAllBalances','params':[a['owner']],'signal':a['signal']});}async['getCoinMetadata']({coinType:a,signal:b}){return await this['transport']['request']({'method':'wx_getCoinMetadata','params':[a],'signal':b});}async['getTotalSupply']({coinType:a,signal:b}){return await this['transport']['request']({'method':'wx_getTotalSupply','params':[a],'signal':b});}async['call'](a,b,{signal:c}={}){return await this['transport']['request']({'method':a,'params':b,'signal':c});}async['getMoveFunctionArgTypes']({package:a,module:b,function:c,signal:d}){return await this['transport']['request']({'method':'w_getMoveFunctionArgTypes','params':[a,b,c],'signal':d});}async['getNormalizedMoveModulesByPackage']({package:a,signal:b}){return await this['transport']['request']({'method':'w_getNormalizedMoveModulesByPackage','params':[a],'signal':b});}async['getNormalizedMoveModule']({package:a,module:b,signal:c}){return await this['transport']['request']({'method':'w_getNormalizedMoveModule','params':[a,b],'signal':c});}async['getNormalizedMoveFunction']({package:a,module:b,function:c,signal:d}){return await this['transport']['request']({'method':'w_getNormalizedMoveFunction','params':[a,b,c],'signal':d});}async['getNormalizedMoveStruct']({package:a,module:b,struct:c,signal:d}){return await this['transport']['request']({'method':'w_getNormalizedMoveStruct','params':[a,b,c],'signal':d});}async['getOwnedObjects'](a){if(!a['owner']||!isValidWowAddress(normalizeWowAddress(a['owner'])))throw new Error('Invalid\x20Wow\x20address');return await this['transport']['request']({'method':'wx_getOwnedObjects','params':[a['owner'],{'filter':a['filter'],'options':a['options']},a['cursor'],a['limit']],'signal':a['signal']});}async['getObject'](a){if(!a['id']||!isValidWowObjectId(normalizeWowObjectId(a['id'])))throw new Error('Invalid\x20object\x20ID');return await this['transport']['request']({'method':'w_getObject','params':[a['id'],a['options']],'signal':a['signal']});}async['tryGetPastObject'](a){return await this['transport']['request']({'method':'w_tryGetPastObject','params':[a['id'],a['version'],a['options']],'signal':a['signal']});}async['multiGetObjects'](a){a['ids']['forEach'](c=>{if(!c||!isValidWowObjectId(normalizeWowObjectId(c)))throw new Error('Invalid\x20object\x20ID\x20'+c);});const b=a['ids']['length']!==new Set(a['ids'])['size'];if(b)throw new Error('Duplicate\x20object\x20ids\x20in\x20batch\x20call\x20'+a['ids']);return await this['transport']['request']({'method':'w_multiGetObjects','params':[a['ids'],a['options']],'signal':a['signal']});}async['queryTransactionBlocks']({filter:a,options:b,cursor:c,limit:d,order:e,signal:f}){return await this['transport']['request']({'method':'wx_queryTransactionBlocks','params':[{'filter':a,'options':b},c,d,(e||'descending')==='descending'],'signal':f});}async['getTransactionBlock'](a){if(!isValidTransactionDigest(a['digest']))throw new Error('Invalid\x20Transaction\x20digest');return await this['transport']['request']({'method':'w_getTransactionBlock','params':[a['digest'],a['options']],'signal':a['signal']});}async['multiGetTransactionBlocks'](a){a['digests']['forEach'](c=>{if(!isValidTransactionDigest(c))throw new Error('Invalid\x20Transaction\x20digest\x20'+c);});const b=a['digests']['length']!==new Set(a['digests'])['size'];if(b)throw new Error('Duplicate\x20digests\x20in\x20batch\x20call\x20'+a['digests']);return await this['transport']['request']({'method':'w_multiGetTransactionBlocks','params':[a['digests'],a['options']],'signal':a['signal']});}async['executeTransactionBlock']({transactionBlock:a,signature:b,options:c,requestType:d,signal:f}){const g=await this['transport']['request']({'method':'w_executeTransactionBlock','params':[typeof a==='string'?a:toBase64(a),Array['isArray'](b)?b:[b],c],'signal':f});if(d==='WaitForLocalExecution')try{await this['waitForTransaction']({'digest':g['digest'],'signal':f});}catch(h){}return g;}async['signAndExecuteTransaction']({transaction:a,signer:b,...c}){let d;a instanceof Uint8Array?d=a:(a['setSenderIfNotSet'](b['toWAddress']()),d=await a['build']({'client':this}));const {signature:e,bytes:f}=await b['signTransaction'](d);return this['executeTransactionBlock']({'transactionBlock':f,'signature':e,...c});}async['getTotalTransactionBlocks']({signal:a}={}){const b=await this['transport']['request']({'method':'w_getTotalTransactionBlocks','params':[],'signal':a});return BigInt(b);}async['getReferenceGasPrice']({signal:a}={}){const b=await this['transport']['request']({'method':'wx_getReferenceGasPrice','params':[],'signal':a});return BigInt(b);}async['getStakes'](a){if(!a['owner']||!isValidWowAddress(normalizeWowAddress(a['owner'])))throw new Error('Invalid\x20Wow\x20address');return await this['transport']['request']({'method':'wx_getStakes','params':[a['owner']],'signal':a['signal']});}async['getStakesByIds'](a){return a['stakedWowIds']['forEach'](b=>{if(!b||!isValidWowObjectId(normalizeWowObjectId(b)))throw new Error('Invalid\x20Wow\x20Stake\x20id\x20'+b);}),await this['transport']['request']({'method':'wx_getStakesByIds','params':[a['stakedWowIds']],'signal':a['signal']});}async['getLatestWowSystemState']({signal:a}={}){return await this['transport']['request']({'method':'wx_getLatestWowSystemState','params':[],'signal':a});}async['queryEvents']({query:a,cursor:b,limit:c,order:d,signal:e}){return await this['transport']['request']({'method':'wx_queryEvents','params':[a,b,c,(d||'descending')==='descending'],'signal':e});}async['subscribeEvent'](a){return this['transport']['subscribe']({'method':'wx_subscribeEvent','unsubscribe':'wx_unsubscribeEvent','params':[a['filter']],'onMessage':a['onMessage'],'signal':a['signal']});}async['subscribeTransaction'](a){return this['transport']['subscribe']({'method':'wx_subscribeTransaction','unsubscribe':'wx_unsubscribeTransaction','params':[a['filter']],'onMessage':a['onMessage'],'signal':a['signal']});}async['devInspectTransactionBlock'](a){let b;if(isTransaction(a['transactionBlock']))a['transactionBlock']['setSenderIfNotSet'](a['sender']),b=toBase64(await a['transactionBlock']['build']({'client':this,'onlyTransactionKind':!![]}));else{if(typeof a['transactionBlock']==='string')b=a['transactionBlock'];else{if(a['transactionBlock']instanceof Uint8Array)b=toBase64(a['transactionBlock']);else throw new Error('Unknown\x20transaction\x20block\x20format.');}}return a['signal']?.['throwIfAborted'](),await this['transport']['request']({'method':'w_devInspectTransactionBlock','params':[a['sender'],b,a['gasPrice']?.['toString'](),a['epoch']],'signal':a['signal']});}async['dryRunTransactionBlock'](a){return await this['transport']['request']({'method':'w_dryRunTransactionBlock','params':[typeof a['transactionBlock']==='string'?a['transactionBlock']:toBase64(a['transactionBlock'])]});}async['getDynamicFields'](a){if(!a['parentId']||!isValidWowObjectId(normalizeWowObjectId(a['parentId'])))throw new Error('Invalid\x20WOW\x20Object\x20id');return await this['transport']['request']({'method':'wx_getDynamicFields','params':[a['parentId'],a['cursor'],a['limit']],'signal':a['signal']});}async['getDynamicFieldObject'](a){return await this['transport']['request']({'method':'wx_getDynamicFieldObject','params':[a['parentId'],a['name']],'signal':a['signal']});}async['getLatestCheckpointSequenceNumber']({signal:a}={}){const b=await this['transport']['request']({'method':'w_getLatestCheckpointSequenceNumber','params':[],'signal':a});return String(b);}async['getCheckpoint'](a){return await this['transport']['request']({'method':'w_getCheckpoint','params':[a['id']],'signal':a['signal']});}async['getCheckpoints'](a){return await this['transport']['request']({'method':'w_getCheckpoints','params':[a['cursor'],a?.['limit'],a['descendingOrder']],'signal':a['signal']});}async['getCommitteeInfo'](a){return await this['transport']['request']({'method':'wx_getCommitteeInfo','params':[a?.['epoch']],'signal':a?.['signal']});}async['getNetworkMetrics']({signal:a}={}){return await this['transport']['request']({'method':'wx_getNetworkMetrics','params':[],'signal':a});}async['getAddressMetrics']({signal:a}={}){return await this['transport']['request']({'method':'wx_getLatestAddressMetrics','params':[],'signal':a});}async['getEpochMetrics'](a){return await this['transport']['request']({'method':'wx_getEpochMetrics','params':[a?.['cursor'],a?.['limit'],a?.['descendingOrder']],'signal':a?.['signal']});}async['getAllEpochAddressMetrics'](a){return await this['transport']['request']({'method':'wx_getAllEpochAddressMetrics','params':[a?.['descendingOrder']],'signal':a?.['signal']});}async['getEpochs'](a){return await this['transport']['request']({'method':'wx_getEpochs','params':[a?.['cursor'],a?.['limit'],a?.['descendingOrder']],'signal':a?.['signal']});}async['getMoveCallMetrics']({signal:a}={}){return await this['transport']['request']({'method':'wx_getMoveCallMetrics','params':[],'signal':a});}async['getCurrentEpoch']({signal:a}={}){return await this['transport']['request']({'method':'wx_getCurrentEpoch','params':[],'signal':a});}async['getValidatorsApy']({signal:a}={}){return await this['transport']['request']({'method':'wx_getValidatorsApy','params':[],'signal':a});}async['getChainIdentifier']({signal:a}={}){const b=await this['getCheckpoint']({'id':'0','signal':a}),c=fromBase58(b['digest']);return toHex(c['slice'](0x0,0x4));}async['getProtocolConfig'](a){return await this['transport']['request']({'method':'w_getProtocolConfig','params':[a?.['version']],'signal':a?.['signal']});}async['waitForTransaction']({signal:a,timeout:timeout=0x3c*0x3e8,pollInterval:pollInterval=0x2*0x3e8,...b}){const c=AbortSignal['timeout'](timeout),d=new Promise((e,f)=>{c['addEventListener']('abort',()=>f(c['reason']));});d['catch'](()=>{});while(!c['aborted']){a?.['throwIfAborted']();try{return await this['getTransactionBlock'](b);}catch{await Promise['race']([new Promise(e=>setTimeout(e,pollInterval)),d]);}}c['throwIfAborted']();throw new Error('Unexpected\x20error\x20while\x20waiting\x20for\x20transaction\x20block.');}}