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}