defuse/
lib.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#![doc = include_str!(concat!("../", env!("CARGO_PKG_README")))]
#[cfg(feature = "contract")]
pub mod contract;

pub mod accounts;
pub mod fees;
pub mod intents;
pub mod tokens;

pub use defuse_core as core;
pub use defuse_nep245 as nep245;

use defuse_admin_utils::full_access_keys::FullAccessKeys;
use defuse_controller::ControllerUpgradable;
use defuse_nep245::{
    MultiTokenCore, enumeration::MultiTokenEnumeration, receiver::MultiTokenReceiver,
};
use near_contract_standards::{
    fungible_token::receiver::FungibleTokenReceiver,
    non_fungible_token::core::NonFungibleTokenReceiver,
};
use near_plugins::{AccessControllable, Pausable};
use near_sdk::ext_contract;

use self::{
    accounts::AccountManager,
    intents::{Intents, RelayerKeys},
    tokens::{
        nep141::{FungibleTokenForceWithdrawer, FungibleTokenWithdrawer},
        nep171::{NonFungibleTokenForceWithdrawer, NonFungibleTokenWithdrawer},
        nep245::{MultiTokenForceWithdrawer, MultiTokenWithdrawer},
    },
};

#[ext_contract(ext_defuse)]
pub trait Defuse:
    Intents
    + RelayerKeys
    + AccountManager
    + MultiTokenCore
    // NEP-141 deposits/withdrawals
    + FungibleTokenReceiver
    + FungibleTokenWithdrawer
    // NEP-171 deposits/withdrawals
    + NonFungibleTokenReceiver
    + NonFungibleTokenWithdrawer
    // NEP-245 deposits/withdrawals
    + MultiTokenReceiver
    + MultiTokenWithdrawer
    + MultiTokenEnumeration
    // Governance
    + AccessControllable
    + FungibleTokenForceWithdrawer
    + NonFungibleTokenForceWithdrawer
    + MultiTokenForceWithdrawer
    + Pausable
    + ControllerUpgradable
    + FullAccessKeys
{
}