// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

/// @title IERC8004IdentityRegistry
/// @notice Minimal read interface Vaultfire V3 relies on. This is a Vaultfire-side
///         adapter contract. If a canonical ERC-8004 registry lands, we point the
///         adapter at it; if not, we operate off this shim and label our surface
///         "ERC-8004-compatible adapter" rather than "ERC-8004-compliant."
interface IERC8004IdentityRegistry {
    struct Agent {
        uint256 agentId;
        address agentWallet; // canonical acting address
        address principal; // human/org that owns the agent
        address operator; // authorized operator (may equal agentWallet)
        address beneficiary; // refund/settlement destination
        uint64 registeredAt;
        bool active;
    }

    function getAgent(uint256 agentId) external view returns (Agent memory);
    function isAuthorizedOperator(uint256 agentId, address caller) external view returns (bool);
    function isActive(uint256 agentId) external view returns (bool);
}
