UNPKG

wowok

Version:

Wowok Blockchain TypeScript API

1 lines 1.76 kB
import{Inputs}from'./Inputs.js';import{bcs}from'../bcs/index.js';import{jsonRpcClientResolveTransactionPlugin}from'../jsonRpc/json-rpc-resolver.js';export function needsTransactionResolution(a,b){if(a['inputs']['some'](c=>{return c['UnresolvedObject']||c['UnresolvedPure'];}))return!![];if(!b['onlyTransactionKind']){if(!a['gasConfig']['price']||!a['gasConfig']['budget']||!a['gasConfig']['payment'])return!![];}return![];}export async function resolveTransactionPlugin(a,b,c){normalizeRawArguments(a);if(!needsTransactionResolution(a,b))return await validate(a),c();const d=getClient(b),e=d['core']?.['resolveTransactionPlugin']()??jsonRpcClientResolveTransactionPlugin(d);return e(a,b,async()=>{await validate(a),await c();});}function validate(a){a['inputs']['forEach']((b,c)=>{if(b['$kind']!=='Object'&&b['$kind']!=='Pure')throw new Error('Input\x20at\x20index\x20'+c+'\x20has\x20not\x20been\x20resolved.\x20\x20Expected\x20a\x20Pure\x20or\x20Object\x20input,\x20but\x20found\x20'+JSON['stringify'](b));});}export function getClient(a){if(!a['client'])throw new Error('No\x20wowok\x20client\x20passed\x20to\x20Transaction#build,\x20but\x20transaction\x20data\x20was\x20not\x20sufficient\x20to\x20build\x20offline.');return a['client'];}function normalizeRawArguments(a){for(const b of a['commands']){switch(b['$kind']){case'SplitCoins':b['SplitCoins']['amounts']['forEach'](c=>{normalizeRawArgument(c,bcs['U64'],a);});break;case'TransferObjects':normalizeRawArgument(b['TransferObjects']['address'],bcs['Address'],a);break;}}}function normalizeRawArgument(a,b,c){if(a['$kind']!=='Input')return;const d=c['inputs'][a['Input']];if(d['$kind']!=='UnresolvedPure')return;c['inputs'][a['Input']]=Inputs['Pure'](b['serialize'](d['UnresolvedPure']['value']));}