UNPKG

wowok

Version:

Wowok Blockchain TypeScript API

1 lines 2.58 kB
import{is}from'valibot';import{normalizeWowAddress}from'../utils/wow-types.js';import{ArgumentSchema}from'./data/internal.js';export function extractMutableReference(a){return typeof a==='object'&&'MutableReference'in a?a['MutableReference']:undefined;}export function extractReference(a){return typeof a==='object'&&'Reference'in a?a['Reference']:undefined;}export function extractStructTag(a){if(typeof a==='object'&&'Struct'in a)return a;const b=extractReference(a),c=extractMutableReference(a);if(typeof b==='object'&&'Struct'in b)return b;if(typeof c==='object'&&'Struct'in c)return c;return undefined;}export function getIdFromCallArg(a){if(typeof a==='string')return normalizeWowAddress(a);if(a['Object']){if(a['Object']['ImmOrOwnedObject'])return normalizeWowAddress(a['Object']['ImmOrOwnedObject']['objectId']);if(a['Object']['Receiving'])return normalizeWowAddress(a['Object']['Receiving']['objectId']);return normalizeWowAddress(a['Object']['SharedObject']['objectId']);}if(a['UnresolvedObject'])return normalizeWowAddress(a['UnresolvedObject']['objectId']);return undefined;}export function isArgument(a){return is(ArgumentSchema,a);}export function remapCommandArguments(a,b,c){const d=e=>{switch(e['$kind']){case'Input':{const f=b['get'](e['Input']);if(f===undefined)throw new Error('Input\x20'+e['Input']+'\x20not\x20found\x20in\x20input\x20mapping');return{...e,'Input':f};}case'Result':{const g=c['get'](e['Result']);if(g!==undefined)return{...e,'Result':g};return e;}case'NestedResult':{const h=c['get'](e['NestedResult'][0x0]);if(h!==undefined)return{...e,'NestedResult':[h,e['NestedResult'][0x1]]};return e;}default:return e;}};switch(a['$kind']){case'MoveCall':a['MoveCall']['arguments']=a['MoveCall']['arguments']['map'](d);break;case'TransferObjects':a['TransferObjects']['objects']=a['TransferObjects']['objects']['map'](d),a['TransferObjects']['address']=d(a['TransferObjects']['address']);break;case'SplitCoins':a['SplitCoins']['coin']=d(a['SplitCoins']['coin']),a['SplitCoins']['amounts']=a['SplitCoins']['amounts']['map'](d);break;case'MergeCoins':a['MergeCoins']['destination']=d(a['MergeCoins']['destination']),a['MergeCoins']['sources']=a['MergeCoins']['sources']['map'](d);break;case'MakeMoveVec':a['MakeMoveVec']['elements']=a['MakeMoveVec']['elements']['map'](d);break;case'Upgrade':a['Upgrade']['ticket']=d(a['Upgrade']['ticket']);break;case'$Intent':{const e=a['$Intent']['inputs'];a['$Intent']['inputs']={};for(const [f,g]of Object['entries'](e)){a['$Intent']['inputs'][f]=Array['isArray'](g)?g['map'](d):d(g);}break;}case'Publish':break;}}