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

/**
 * @title IISOCurrencyManager
 * @notice Interface for ISO-4217 Currency Manager
 */
interface IISOCurrencyManager {
    function registerCurrency(string memory currencyCode, address tokenAddress, uint256 xauRate) external returns (bool);
    function convertViaXAU(string memory fromCurrency, string memory toCurrency, uint256 amount) external view returns (uint256 targetAmount);
    function getCurrencyRate(string memory fromCurrency, string memory toCurrency) external view returns (uint256 rate);
    function getAllSupportedCurrencies() external view returns (string[] memory);
    function getCurrencyAddress(string memory currencyCode) external view returns (address);
}

