// SPDX-License-Identifier: MIT pragma solidity ^0.8.20; /** * @title CheckpointHubConfig * @notice Granular hub configuration — used at init, applyConfig, and off-chain deploy manifests. */ library CheckpointHubConfig { struct HubConfig { uint64 chainId; uint16 batchSize; uint32 maxBatchWaitSeconds; uint256 minPaymentValueWei; bool requireValidatorSigs; bool allowCalldataOnlySubmit; bool allowCCIPIngress; bool enforcePreviousBatchId; address ccipRouter; uint64 sourceChainSelector; address batchEmitterOnSource; address legacyMirrorV1; address legacyTetherV1; address submitterAttestationSigner; } function mainnetDefaults() internal pure returns (HubConfig memory c) { c.chainId = 138; c.batchSize = 10; c.maxBatchWaitSeconds = 300; c.requireValidatorSigs = true; c.allowCalldataOnlySubmit = true; c.allowCCIPIngress = true; c.enforcePreviousBatchId = true; } function validate(HubConfig memory c) internal pure { require(c.chainId == 138, "chainId"); require(c.batchSize > 0 && c.batchSize <= 256, "batchSize"); require(c.maxBatchWaitSeconds > 0, "maxWait"); } }