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

/// @notice Minimal account-wallet registry interface for smart-account compile stubs.
interface IAccountWalletRegistry {
    struct WalletLink {
        bytes32 walletRefId;
        uint64 linkedAt;
        bool active;
        bytes32 provider;
    }

    event AccountWalletLinked(
        bytes32 indexed accountRefId,
        bytes32 indexed walletRefId,
        bytes32 provider,
        uint64 linkedAt
    );
    event AccountWalletUnlinked(bytes32 indexed accountRefId, bytes32 indexed walletRefId);

    function linkAccountToWallet(bytes32 accountRefId, bytes32 walletRefId, bytes32 provider) external;

    function unlinkAccountFromWallet(bytes32 accountRefId, bytes32 walletRefId) external;

    function getWallets(bytes32 accountRefId) external view returns (WalletLink[] memory);

    function getAccounts(bytes32 walletRefId) external view returns (bytes32[] memory);

    function isLinked(bytes32 accountRefId, bytes32 walletRefId) external view returns (bool);

    function isActive(bytes32 accountRefId, bytes32 walletRefId) external view returns (bool);
}
