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 + FungibleTokenReceiver
46 + FungibleTokenWithdrawer
47 + NonFungibleTokenReceiver
49 + NonFungibleTokenWithdrawer
50 + MultiTokenReceiver
52 + MultiTokenWithdrawer
53 + MultiTokenEnumeration
54 + AccessControllable
56 + MultiTokenForcedCore
57 + FungibleTokenForceWithdrawer
58 + NonFungibleTokenForceWithdrawer
59 + MultiTokenForcedWithdrawer
60 + ForceAccountManager
61 + Pausable
62 + ControllerUpgradable
63 + FullAccessKeys
64{
65}