UNPKG

@smartinvoicexyz/utils

Version:

Unified source for utility functions used across the Smart Invoice protocol.

38 lines (37 loc) 1.29 kB
import { SMART_INVOICE_FACTORY_ABI, SMART_INVOICE_INSTANT_ABI, SMART_INVOICE_SPLIT_ESCROW_ABI, SMART_INVOICE_UPDATABLE_ABI, } from '@smartinvoicexyz/constants'; import _ from 'lodash'; import { decodeEventLog, } from 'viem'; const logParserFactory = (abi) => (log) => { try { return decodeEventLog({ abi, data: log?.data, topics: log?.topics, }); } catch (e) { // eslint-disable-next-line no-console console.error(`error parsing log:`, e); return undefined; } }; export const logParser = { Factory: logParserFactory(SMART_INVOICE_FACTORY_ABI), Instant: logParserFactory(SMART_INVOICE_INSTANT_ABI), Split: logParserFactory(SMART_INVOICE_SPLIT_ESCROW_ABI), Updatable: logParserFactory(SMART_INVOICE_UPDATABLE_ABI), }; export const parseTxLogs = (type, txData, eventName, key) => { const { logs } = txData; if (!logParser[type]) return undefined; // parse logs for ABI const parsedLogs = _.map(logs, log => { const parsedLog = logParser[type]?.(log); return parsedLog; }); // lookup event by name const parsedEvent = _.find(parsedLogs, { eventName }); // find data by provided key return _.get(parsedEvent, `args.${key}`); };