defuse/
lib.rs

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