stellar_token_manager/
contract.rs

1use stellar_axelar_std::{
2    contract, contractimpl, interfaces, only_owner, soroban_sdk, Address, Env, Ownable, Symbol,
3    Upgradable, Val, Vec,
4};
5
6use crate::error::ContractError;
7use crate::interface::TokenManagerInterface;
8
9#[contract]
10#[derive(Ownable, Upgradable)]
11#[migratable]
12pub struct TokenManager;
13
14#[contractimpl]
15impl TokenManager {
16    pub fn __constructor(env: &Env, owner: Address) {
17        interfaces::set_owner(env, &owner);
18    }
19}
20
21#[contractimpl]
22impl TokenManagerInterface for TokenManager {
23    #[only_owner]
24    fn execute(
25        env: &Env,
26        contract: Address,
27        func: Symbol,
28        args: Vec<Val>,
29    ) -> Result<Val, ContractError> {
30        let res: Val = env.invoke_contract(&contract, &func, args);
31
32        Ok(res)
33    }
34}