wowok
Version:
Wowok Blockchain TypeScript API
1 lines • 1.91 kB
JavaScript
import{getFullnodeUrl,WowClient}from'../../client/index.js';import{PackageAddress}from'../common.js';import{W_ERROR,WErrors}from'../exception.js';import{Config}from'../local/config.js';import{GetAccountOrMark_Address}from'../local/index.js';import{extractCoinType}from'../util.js';import{query_objects}from'./object.js';export const query_received=async a=>{const b=await Config['Instance']()['network_get'](a['network']),c=new WowClient({'url':getFullnodeUrl(b)});let d;if(a['all_type']){const e=await GetAccountOrMark_Address(a['name_or_address']);!e&&W_ERROR(WErrors['InvalidParam'],'query_received:\x20Object\x20'+a['name_or_address']+'\x20not\x20found.');const f=await c['getOwnedObjects']({'owner':e,'options':{'showContent':!![],'showType':!![]}});return f['data']['map'](g=>{return{'id':g?.['data']?.['objectId'],'type':g?.['data']?.['type'],'content_raw':g?.['data']?.['content']?.['fields']};});}else{const g=await query_objects({'objects':[a['name_or_address']['name_or_address']],'no_cache':![],'network':a['network']});(!g?.['objects']||g['objects']['length']!==0x1)&&W_ERROR(WErrors['InvalidParam'],'query_received:\x20Object\x20'+a['name_or_address']+'\x20not\x20found.');d=extractCoinType(g['objects'][0x0]['type_raw']);!d&&W_ERROR(WErrors['InvalidParam'],'object\x20'+a['name_or_address']+'\x20not\x20support\x20token\x20type;\x20query\x20\x27all_type\x27\x20instead.');const h=await c['getOwnedObjects']({'owner':g['objects'][0x0]['object'],'filter':{'StructType':PackageAddress+'::payment::CoinWrapper<'+d+'>'},'options':{'showContent':!![],'showType':!![]}});let i=BigInt(0x0);const j=h['data']['map'](k=>{const l=k?.['data']?.['content']?.['fields'];return i+=BigInt(l?.['coin']?.['fields']?.['balance']),{'payment':l?.['payment'],'balance':l?.['coin']?.['fields']?.['balance'],'id':k?.['data']?.['objectId'],'type':l?.['coin']?.['type']};});return{'balance':i,'received':j,'token_type':d};}};