"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.recordActivityBatch = recordActivityBatch; const ethers_1 = require("ethers"); const checkpoint_core_1 = require("@dbis/checkpoint-core"); const leafCodec_1 = require("./leafCodec"); const REGISTRY_ABI = [ 'function recordBatch(uint64 batchId, tuple(bytes32 txHash,address from,address to,uint256 valueWei,uint256 blockNumber138,uint64 blockTimestamp138,uint64 valueUsdE8,uint32 logCount,bytes32 receiptHash)[] records) external', 'function recorded(bytes32) view returns (bool)', ]; function activityRecord(leaf) { const usd = leaf.totalTransfersUsd ?? leaf.valueUsd ?? leaf.nativeValueUsd ?? '0'; return { txHash: leaf.txHash, from: leaf.from, to: leaf.to, valueWei: (0, leafCodec_1.effectiveValue)(leaf), blockNumber138: BigInt(leaf.blockNumber), blockTimestamp138: BigInt(leaf.blockTimestamp), valueUsdE8: (0, checkpoint_core_1.usdStringToE8)(usd), logCount: leaf.logCount ?? 0, receiptHash: leaf.receiptHash ?? ethers_1.ethers.ZeroHash, }; } async function recordActivityBatch(wallet, registryAddress, batchId, leaves) { if (!registryAddress || leaves.length === 0) return null; const registry = new ethers_1.ethers.Contract(registryAddress, REGISTRY_ABI, wallet); const pending = []; for (const leaf of leaves) { if (!leaf.txHash) continue; try { if (await registry.recorded(leaf.txHash)) continue; } catch { /* continue */ } pending.push(leaf); } if (pending.length === 0) return null; const records = pending.map(activityRecord); const tx = await registry.recordBatch(batchId, records, { gasLimit: 2500000n }); await tx.wait(); return tx.hash; }