UNPKG

charms-js

Version:

TypeScript SDK for decoding Bitcoin transactions containing Charms data

49 lines (48 loc) 1.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createCharmInstances = createCharmInstances; const utils_1 = require("./utils"); // Converts parsed charm data to CharmInstance array with UTXO details function createCharmInstances(charmInfo, txId) { try { if (!charmInfo || 'error' in charmInfo) { return { error: charmInfo?.error || 'Invalid charm information' }; } const result = []; charmInfo.outs.forEach((output, outputIndex) => { if (!output.charms) return; Object.keys(output.charms).forEach(appId => { const charmData = output.charms[appId]; const charmInstance = { utxo: { tx: txId, index: outputIndex }, address: output.address || 'unknown', appId: appId, app: charmInfo.apps[appId] || null, appType: charmInfo.apps[appId] ? (0, utils_1.getAppType)(charmInfo.apps[appId]) : undefined, verified: charmInfo.verified }; // Process charm data (numeric or object) if (typeof charmData === 'number') { charmInstance.value = charmData; } else if (typeof charmData === 'object' && charmData !== null) { // Copy all fields dynamically using spread Object.assign(charmInstance, charmData); // Set default custom field if not present if (!charmInstance.custom) { charmInstance.custom = {}; } } result.push(charmInstance); }); }); return result; } catch (error) { return { error: `Failed to create charm instances: ${error.message}` }; } }