use stellar_axelar_std::interfaces::{OwnableInterface, UpgradableInterface};
use stellar_axelar_std::token::StellarAssetInterface;
use stellar_axelar_std::{contractclient, soroban_sdk, Address, BytesN, Env};
use crate::error::ContractError;
#[contractclient(name = "InterchainTokenClient")]
pub trait InterchainTokenInterface:
StellarAssetInterface + OwnableInterface + UpgradableInterface
{
fn token_id(env: &Env) -> BytesN<32>;
fn is_minter(env: &Env, minter: Address) -> bool;
fn mint_from(
env: &Env,
minter: Address,
to: Address,
amount: i128,
) -> Result<(), ContractError>;
fn add_minter(env: &Env, minter: Address);
fn remove_minter(env: &Env, minter: Address);
}