// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import {Test} from "forge-std/Test.sol";
import {Chain138ParticipantSurface} from "../../contracts/mainnet-checkpoint/Chain138ParticipantSurface.sol";

contract Chain138ParticipantSurfaceTest is Test {
    Chain138ParticipantSurface surface;
    address admin = address(0xA11CE);

    function setUp() public {
        surface = new Chain138ParticipantSurface(admin);
    }

    function testNotifyBatch() public {
        Chain138ParticipantSurface.Notification[] memory items =
            new Chain138ParticipantSurface.Notification[](1);
        items[0] = Chain138ParticipantSurface.Notification({
            participant: address(0xBEEF),
            chain138TxHash: keccak256("tx"),
            instructionId: keccak256("instr"),
            direction: 0,
            batchId: 1,
            valueWei: 1 ether,
            valueUsdE8: 100
        });
        vm.prank(admin);
        surface.notifyBatch(1, items);
        assertTrue(
            surface.notified(surface.notificationKey(address(0xBEEF), keccak256("tx"), 0))
        );
    }
}
