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

import {Script, console} from "forge-std/Script.sol";
import {Chain138MainnetCheckpoint} from "../../contracts/mainnet-checkpoint/Chain138MainnetCheckpoint.sol";

/// @notice Replay aggregator calldata on a mainnet fork to surface revert reason.
contract SimulateSubmitFromCalldata is Script {
    function run() external {
        address hub = vm.envAddress("CHAIN138_MAINNET_CHECKPOINT_PROXY");
        bytes memory data = vm.envBytes("CHECKPOINT_SUBMIT_CALLDATA");
        vm.prank(vm.envAddress("CHECKPOINT_SUBMIT_FROM"));
        (bool ok, bytes memory ret) = hub.call(data);
        if (!ok) {
            if (ret.length > 0) {
                console.logBytes(ret);
            }
            revert("submit simulation failed");
        }
        console.log("ok, latest", Chain138MainnetCheckpoint(hub).getLatestBatchId());
    }
}
