use stellar_axelar_gateway::executable::AxelarExecutableInterface;
use stellar_axelar_std::types::Token;
use stellar_axelar_std::{Address, Bytes, BytesN, Env, String};
use crate::contract::AxelarExampleError;
pub trait AxelarExampleInterface: AxelarExecutableInterface {
fn gas_service(env: &Env) -> Address;
fn send(
env: &Env,
caller: Address,
destination_chain: String,
destination_address: String,
message: Bytes,
gas_token: Option<Token>,
);
fn send_token(
env: &Env,
caller: Address,
token_id: BytesN<32>,
destination_chain: String,
destination_app_contract: Bytes,
amount: i128,
recipient: Option<Bytes>,
gas_token: Option<Token>,
) -> Result<(), AxelarExampleError>;
}