defuse/
lib.rs

1#![doc = include_str!(concat!("../", env!("CARGO_PKG_README")))]
2#[cfg(feature = "contract")]
3pub mod contract;
4
5pub mod accounts;
6pub mod fees;
7pub mod garbage_collector;
8pub mod intents;
9pub mod salts;
10pub mod simulation_output;
11pub mod tokens;
12
13pub use defuse_core as core;
14pub use defuse_nep245 as nep245;
15
16use defuse_admin_utils::full_access_keys::FullAccessKeys;
17use defuse_controller::ControllerUpgradable;
18use defuse_nep245::{
19    MultiTokenCore, enumeration::MultiTokenEnumeration, receiver::MultiTokenReceiver,
20};
21use near_contract_standards::{
22    fungible_token::receiver::FungibleTokenReceiver,
23    non_fungible_token::core::NonFungibleTokenReceiver,
24};
25use near_plugins::{AccessControllable, Pausable};
26
27use crate::{accounts::ForceAccountManager, tokens::nep245::MultiTokenForcedCore};
28
29use self::{
30    accounts::AccountManager,
31    intents::{Intents, RelayerKeys},
32    tokens::{
33        nep141::{FungibleTokenForceWithdrawer, FungibleTokenWithdrawer},
34        nep171::{NonFungibleTokenForceWithdrawer, NonFungibleTokenWithdrawer},
35        nep245::{MultiTokenForcedWithdrawer, MultiTokenWithdrawer},
36    },
37};
38
39pub trait Defuse:
40    Intents
41    + RelayerKeys
42    + AccountManager
43    + MultiTokenCore
44    // NEP-141 deposits/withdrawals
45    + FungibleTokenReceiver
46    + FungibleTokenWithdrawer
47    // NEP-171 deposits/withdrawals
48    + NonFungibleTokenReceiver
49    + NonFungibleTokenWithdrawer
50    // NEP-245 deposits/withdrawals
51    + MultiTokenReceiver
52    + MultiTokenWithdrawer
53    + MultiTokenEnumeration
54    // Governance
55    + AccessControllable
56    + MultiTokenForcedCore
57    + FungibleTokenForceWithdrawer
58    + NonFungibleTokenForceWithdrawer
59    + MultiTokenForcedWithdrawer
60    + ForceAccountManager
61    + Pausable
62    + ControllerUpgradable
63    + FullAccessKeys
64{
65}