stellar_token_manager/interface.rs
1use stellar_axelar_std::interfaces::{OwnableInterface, UpgradableInterface};
2use stellar_axelar_std::{contractclient, soroban_sdk, Address, Env, Symbol, Val, Vec};
3
4use crate::error::ContractError;
5
6#[contractclient(name = "TokenManagerClient")]
7pub trait TokenManagerInterface: OwnableInterface + UpgradableInterface {
8 /// Executes a function on the given contract.
9 ///
10 /// # Arguments
11 /// * `contract` - The address of the contract to execute the function on.
12 /// * `func` - The symbol of the function to execute.
13 /// * `args` - The arguments to pass to the function.
14 ///
15 /// # Returns
16 /// - `Ok(Val)` - The result of the function execution.
17 ///
18 /// # Authorization
19 /// - [`OwnableInterface::owner`] must have authorized.
20 fn execute(
21 env: &Env,
22 contract: Address,
23 func: Symbol,
24 args: Vec<Val>,
25 ) -> Result<Val, ContractError>;
26}