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 intents;
8pub mod tokens;
9
10pub use defuse_core as core;
11pub use defuse_nep245 as nep245;
12
13use defuse_admin_utils::full_access_keys::FullAccessKeys;
14use defuse_controller::ControllerUpgradable;
15use defuse_nep245::{
16 MultiTokenCore, enumeration::MultiTokenEnumeration, receiver::MultiTokenReceiver,
17};
18use near_contract_standards::{
19 fungible_token::receiver::FungibleTokenReceiver,
20 non_fungible_token::core::NonFungibleTokenReceiver,
21};
22use near_plugins::{AccessControllable, Pausable};
23use near_sdk::ext_contract;
24
25use crate::{accounts::AccountForceLocker, tokens::nep245::MultiTokenForcedCore};
26
27use self::{
28 accounts::AccountManager,
29 intents::{Intents, RelayerKeys},
30 tokens::{
31 nep141::{FungibleTokenForceWithdrawer, FungibleTokenWithdrawer},
32 nep171::{NonFungibleTokenForceWithdrawer, NonFungibleTokenWithdrawer},
33 nep245::{MultiTokenForcedWithdrawer, MultiTokenWithdrawer},
34 },
35};
36
37#[ext_contract(ext_defuse)]
38pub trait Defuse:
39 Intents
40 + RelayerKeys
41 + AccountManager
42 + MultiTokenCore
43 + FungibleTokenReceiver
45 + FungibleTokenWithdrawer
46 + NonFungibleTokenReceiver
48 + NonFungibleTokenWithdrawer
49 + MultiTokenReceiver
51 + MultiTokenWithdrawer
52 + MultiTokenEnumeration
53 + AccessControllable
55 + MultiTokenForcedCore
56 + FungibleTokenForceWithdrawer
57 + NonFungibleTokenForceWithdrawer
58 + MultiTokenForcedWithdrawer
59 + AccountForceLocker
60 + Pausable
61 + ControllerUpgradable
62 + FullAccessKeys
63{
64}