// SPDX-License-Identifier: MIT pragma solidity ^0.8.19; /** * @title IPacketRegistry * @notice Interface for recording packet lifecycle events for non-scheme participants * @dev Tracks packet generation, dispatch, and acknowledgment linked to ChainID 138 triggers */ interface IPacketRegistry { /** * @notice Records that a packet has been generated * @param triggerId The trigger ID from RailTriggerRegistry * @param payloadHash SHA-256 hash of the packet payload * @param mode Transmission mode (e.g., "PDF", "EMAIL", "AS4") */ function recordGenerated(uint256 triggerId, bytes32 payloadHash, bytes32 mode) external; /** * @notice Records that a packet has been dispatched via a channel * @param triggerId The trigger ID from RailTriggerRegistry * @param channel The dispatch channel (e.g., "EMAIL", "AS4", "PORTAL") * @param messageRef The message reference ID from the transport layer */ function recordDispatched(uint256 triggerId, bytes32 channel, bytes32 messageRef) external; /** * @notice Records that a packet has been acknowledged by the recipient * @param triggerId The trigger ID from RailTriggerRegistry * @param receiptRef The receipt reference ID from the recipient * @param status The acknowledgment status (e.g., "RECEIVED", "ACCEPTED", "REJECTED") */ function recordAcknowledged(uint256 triggerId, bytes32 receiptRef, bytes32 status) external; /** * @notice Event emitted when a packet is generated * @param triggerId The trigger ID * @param payloadHash The payload hash * @param mode The transmission mode */ event PacketGenerated(uint256 indexed triggerId, bytes32 payloadHash, bytes32 mode); /** * @notice Event emitted when a packet is dispatched * @param triggerId The trigger ID * @param channel The dispatch channel * @param messageRef The message reference */ event PacketDispatched(uint256 indexed triggerId, bytes32 channel, bytes32 messageRef); /** * @notice Event emitted when a packet is acknowledged * @param triggerId The trigger ID * @param receiptRef The receipt reference * @param status The acknowledgment status */ event PacketAcknowledged(uint256 indexed triggerId, bytes32 receiptRef, bytes32 status); }