Skip to main content

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)]
11pub struct TokenManager;
12
13#[contractimpl]
14impl TokenManager {
15    pub fn __constructor(env: &Env, owner: Address) {
16        interfaces::set_owner(env, &owner);
17    }
18}
19
20#[contractimpl]
21impl TokenManagerInterface for TokenManager {
22    #[only_owner]
23    fn execute(
24        env: &Env,
25        contract: Address,
26        func: Symbol,
27        args: Vec<Val>,
28    ) -> Result<Val, ContractError> {
29        let res: Val = env.invoke_contract(&contract, &func, args);
30
31        Ok(res)
32    }
33}