// SPDX-License-Identifier: MIT pragma solidity ^0.8.28; import { TokenInfo, NFTInfo } from "../core/Structs.sol"; import { ITacInitializable } from "./ITacInitializable.sol"; /** * @title ITokenUtils * @dev An interface to message and Merkle tree utility functions */ interface ITokenUtils is ITacInitializable { /** * @dev Deploy new ERC20 Cross-Chain Layer token. * @param info TokenInfo struct containing token details. */ function create( TokenInfo calldata info ) external; /** * @dev Deploy new ERC721 Cross-Chain Layer token. * @param info NFTInfo struct containing token details. */ function createERC721( NFTInfo calldata info ) external; /** * @dev Checks if the token exists or not by evm address * @param evmAddress EVM token address. */ function exists(address evmAddress) external view returns (bool); /** * @dev Checks if the token exists or not by tvm address * @param tvmAddress Corresponding TON token address. */ function exists(string memory tvmAddress) external view returns (bool); /** * @dev Get address of Cross-Chain Layer token. * @param tvmAddress Corresponding TON token address. */ function computeAddress( string memory tvmAddress ) external view returns (address); /** * @dev Get address of ERC721 Cross-Chain Layer token. * @param tvmAddress Corresponding TON collection address. */ function computeAddressERC721( string calldata tvmAddress ) external view returns (address); }