"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.enrichLeafFromBlockscoutApi = enrichLeafFromBlockscoutApi; exports.enrichLeafUsd = enrichLeafUsd; const checkpoint_core_1 = require("@dbis/checkpoint-core"); /** Single Blockscout fetch: all transfers + primary token fields on leaf. */ async function enrichLeafFromBlockscoutApi(leaf, blockscoutApi, useBlockscout) { if (!useBlockscout) return { allErc20: [] }; const allErc20 = await (0, checkpoint_core_1.fetchAllTokenTransfersForTx)(blockscoutApi, leaf.txHash); const primary = (0, checkpoint_core_1.pickPrimaryFromSummaries)(allErc20); if (primary) { leaf.token = primary.token; leaf.tokenSymbol = primary.tokenSymbol; leaf.tokenDecimals = primary.tokenDecimals; leaf.tokenValue = primary.value; leaf.tokenLogIndex = primary.logIndex; } return { allErc20 }; } async function enrichLeafUsd(leaf, cfg, preloaded) { if (cfg.enabled === false) return; let allErc20 = preloaded ?? []; if (!preloaded?.length && cfg.useBlockscout) { allErc20 = await (0, checkpoint_core_1.fetchAllTokenTransfersForTx)(cfg.blockscoutApi, leaf.txHash); } else if (!preloaded?.length && leaf.token && leaf.tokenValue != null && leaf.tokenValue > 0n) { allErc20 = [ { token: leaf.token, tokenSymbol: leaf.tokenSymbol || '', tokenDecimals: leaf.tokenDecimals ?? 18, from: leaf.from, to: leaf.to, value: leaf.tokenValue, logIndex: leaf.tokenLogIndex ?? 0, }, ]; } const record = { txHash: leaf.txHash, from: leaf.from, to: leaf.to, value: leaf.value.toString(), nativeValueWei: leaf.value.toString(), blockNumber: leaf.blockNumber, blockTimestamp: leaf.blockTimestamp, gasUsed: leaf.gasUsed.toString(), success: leaf.success, token: leaf.token, tokenSymbol: leaf.tokenSymbol, tokenDecimals: leaf.tokenDecimals, tokenValue: leaf.tokenValue?.toString(), tokenLogIndex: leaf.tokenLogIndex, }; const enriched = await (0, checkpoint_core_1.enrichLeafUsdFields)(cfg, record, allErc20); if (enriched.valueUsd != null) leaf.valueUsd = String(enriched.valueUsd); if (enriched.nativeValueUsd != null) leaf.nativeValueUsd = String(enriched.nativeValueUsd); if (enriched.tokenValueUsd != null) leaf.tokenValueUsd = String(enriched.tokenValueUsd); if (enriched.nativePriceUsd != null) leaf.nativePriceUsd = Number(enriched.nativePriceUsd); if (enriched.tokenPriceUsd != null) leaf.tokenPriceUsd = Number(enriched.tokenPriceUsd); if (enriched.priceSource != null) leaf.priceSource = String(enriched.priceSource); if (enriched.priceEffectiveTimestamp != null) { leaf.priceEffectiveTimestamp = String(enriched.priceEffectiveTimestamp); } if (enriched.totalTransfersUsd != null) leaf.totalTransfersUsd = String(enriched.totalTransfersUsd); if (Array.isArray(enriched.transfers)) leaf.transfers = enriched.transfers; if (enriched.usdEnrichedAt != null) leaf.usdEnrichedAt = String(enriched.usdEnrichedAt); }