// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; import {CheckpointStorage} from "../storage/CheckpointStorage.sol"; import {CheckpointLeaf} from "../libraries/CheckpointLeaf.sol"; /** * @title IChain138MainnetCheckpoint * @notice Public API for wallets, indexers, and integrators. */ interface IChain138MainnetCheckpoint { event CheckpointSubmitted( uint64 indexed batchId, uint256 indexed checkpointBlock, bytes32 indexed paymentsRoot, uint16 txCount, uint32 flags, bytes32 contentURI ); event ExtensionRegistered(bytes32 indexed extensionId, address module, uint32 hooks); event ExtensionRevoked(bytes32 indexed extensionId); function getLatestCheckpoint() external view returns (CheckpointStorage.CheckpointHeader memory); function getCheckpoint(uint64 batchId) external view returns (CheckpointStorage.CheckpointHeader memory); function getLatestBatchId() external view returns (uint64); function latestCheckpointBlock() external view returns (uint256); function getConfig() external view returns ( uint16 batchSize, uint32 maxBatchWaitSeconds, uint256 minPaymentValueWei, bool requireValidatorSigs, bool allowCalldataOnlySubmit, bool allowCCIPIngress ); function verifyPaymentInBatch( uint64 batchId, CheckpointLeaf.PaymentLeafV1 calldata leaf, bytes32[] calldata proof ) external view returns (bool); function isTxIncluded(bytes32 txHash) external view returns (bool included, uint64 batchId); function submitCheckpoint( CheckpointStorage.CheckpointHeader calldata header, bytes calldata validatorSignatures, bytes32[] calldata txHashes, bytes calldata extensionData ) external; function submitCheckpointCommitment( CheckpointStorage.CheckpointHeader calldata header, bytes calldata validatorSignatures, bytes32 contentURI, bytes calldata extensionData ) external; function registerExtension(bytes32 extensionId, address module, uint32 hooks) external; function setConfig( uint16 batchSize, uint32 maxBatchWaitSeconds, uint256 minPaymentValueWei, bool requireValidatorSigs, bool allowCalldataOnlySubmit, bool allowCCIPIngress ) external; }