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

import "./ICoupon.sol";

/// @title ICompliance — 合规合约接口
/// @notice 定义 OFAC、KYC、Travel Rule 检查的外部调用接口
interface ICompliance {
    function isBlacklisted(address account) external view returns (bool);
    function isFrozen(address account) external view returns (bool);
    function getKycLevel(address account) external view returns (uint8);
    function requireKycLevel(address account, uint8 requiredLevel) external view;

    function preTradeCheck(
        address buyer,
        address seller,
        uint256 amount,
        ICoupon.CouponType couponType
    ) external view;

    function p2pComplianceCheck(
        address sender,
        address receiver,
        uint256 amount
    ) external view;

    function recordTravelRule(
        address sender,
        address receiver,
        bytes32 senderInfoHash,
        bytes32 receiverInfoHash
    ) external;
}
