Skip to main content

defuse/
lib.rs

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