"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.PAYMENT_ATTESTED_TOPIC0 = void 0;
exports.decodePaymentAttestedLogs = decodePaymentAttestedLogs;
const ethers_1 = require("ethers");
const chain138Explorer_1 = require("./chain138Explorer");
/** topic0 = PaymentAttested(bytes32,bytes32,address,address,bytes32,...) — matches cast sig-event */
exports.PAYMENT_ATTESTED_TOPIC0 = '0x827a09f9798dc544d2acc52ecdad1fe0f5fa859be89a74a39dd7cb986b4cb340';
function decodePaymentAttestedLogs(envelope, explorerBase) {
    if (envelope.status !== '1' || !Array.isArray(envelope.result))
        return [];
    const out = [];
    for (const log of envelope.result) {
        const t = log.topics ?? [];
        if (t.length < 4 || !log.transactionHash)
            continue;
        const chain138TxHash = (0, chain138Explorer_1.chain138TxHashFromLogTopic)(t[1]);
        if (!chain138TxHash)
            continue;
        const instructionId = t[2] ?? '';
        const creditor = t[3] ? ethers_1.ethers.getAddress('0x' + t[3].slice(-40)) : '';
        let debtor = '';
        let uetr = '';
        if (log.data && log.data.length >= 130) {
            try {
                const decoded = ethers_1.ethers.AbiCoder.defaultAbiCoder().decode(['address', 'bytes32', 'uint64', 'uint8', 'uint256', 'uint64', 'bytes32', 'bytes32', 'bytes32', 'bytes32', 'bytes32', 'bytes32', 'uint256'], log.data);
                debtor = String(decoded[0]);
                uetr = ethers_1.ethers.hexlify(decoded[1]);
            }
            catch {
                /* non-fatal */
            }
        }
        out.push({
            chain138TxHash,
            chain138ExplorerUrl: (0, chain138Explorer_1.chain138ExplorerTxUrl)(chain138TxHash, explorerBase),
            instructionId,
            uetr,
            creditor,
            debtor,
            mainnetTxHash: log.transactionHash,
            mainnetExplorerUrl: `https://etherscan.io/tx/${log.transactionHash}`,
            blockNumber: String(log.blockNumber ?? ''),
            logIndex: String(log.logIndex ?? ''),
        });
    }
    return out;
}
