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

/**
 * @title IChain138BatchEmitter
 * @notice Chain 138 companion: commit batch locally and optionally CCIP to mainnet hub.
 */
interface IChain138BatchEmitter {
    event BatchCommittedOn138(
        uint64 indexed batchId,
        bytes32 indexed paymentsRoot,
        uint256 checkpointBlock,
        uint16 txCount
    );

    event BatchSentToMainnet(uint64 indexed batchId, bytes32 indexed messageId);

    function commitBatch(
        uint64 batchId,
        bytes32 paymentsRoot,
        uint256 checkpointBlock,
        uint256 startBlock,
        uint16 txCount,
        bytes32[] calldata txHashes
    ) external;

    function sendBatchToMainnet(
        uint64 batchId,
        bytes calldata encodedCheckpointPayload,
        uint256 linkFee
    ) external returns (bytes32 messageId);

    function setMainnetCheckpoint(address mainnetCheckpoint) external;
}
