"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PAYMENT_LEAF_V2 = exports.PAYMENT_LEAF_V1 = void 0; exports.paymentLeafV1Hash = paymentLeafV1Hash; exports.paymentLeafV2Hash = paymentLeafV2Hash; exports.merkleVerifyValueWei = merkleVerifyValueWei; exports.effectiveTokenOrNativeWei = effectiveTokenOrNativeWei; const ethers_1 = require("ethers"); exports.PAYMENT_LEAF_V1 = 0x01; exports.PAYMENT_LEAF_V2 = 0x02; /** Matches CheckpointLeaf.paymentLeafV1 */ function paymentLeafV1Hash(chainId, leaf) { const version = ethers_1.ethers.hexlify(new Uint8Array([exports.PAYMENT_LEAF_V1])); return ethers_1.ethers.keccak256(ethers_1.ethers.AbiCoder.defaultAbiCoder().encode(['bytes1', 'uint64', 'bytes32', 'address', 'address', 'uint256', 'uint256', 'uint64', 'uint256', 'bool'], [ version, BigInt(chainId), leaf.txHash, leaf.from, leaf.to, BigInt(leaf.value ?? 0), BigInt(leaf.blockNumber), BigInt(leaf.blockTimestamp), BigInt(leaf.gasUsed ?? 0), leaf.success, ])); } /** Matches CheckpointLeaf.paymentLeafV2 */ function paymentLeafV2Hash(chainId, leaf) { const version = ethers_1.ethers.hexlify(new Uint8Array([exports.PAYMENT_LEAF_V2])); return ethers_1.ethers.keccak256(ethers_1.ethers.AbiCoder.defaultAbiCoder().encode([ 'bytes1', 'uint64', 'bytes32', 'address', 'address', 'address', 'uint256', 'uint256', 'uint64', 'uint256', 'bool', 'uint32', ], [ version, BigInt(chainId), leaf.txHash, leaf.from, leaf.to, leaf.token, BigInt(leaf.value ?? 0), BigInt(leaf.blockNumber), BigInt(leaf.blockTimestamp), BigInt(leaf.gasUsed ?? 0), leaf.success, Number(leaf.logIndex ?? 0), ])); } /** Historical batches 1–50: verify with native/on-chain wei only. */ function merkleVerifyValueWei(record) { if (record.onChainValueWei != null && String(record.onChainValueWei) !== '') { return BigInt(String(record.onChainValueWei)); } return BigInt(String(record.nativeValueWei ?? record.value ?? '0')); } function effectiveTokenOrNativeWei(record) { const native = BigInt(String(record.value ?? '0')); const tokenVal = record.token != null && record.tokenValue != null ? BigInt(String(record.tokenValue)) : 0n; if (tokenVal > 0n) return tokenVal; return native; }