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};
26use near_sdk::ext_contract;
27
28use crate::{accounts::ForceAccountManager, tokens::nep245::MultiTokenForcedCore};
29
30use self::{
31 accounts::AccountManager,
32 intents::{Intents, RelayerKeys},
33 tokens::{
34 nep141::{FungibleTokenForceWithdrawer, FungibleTokenWithdrawer},
35 nep171::{NonFungibleTokenForceWithdrawer, NonFungibleTokenWithdrawer},
36 nep245::{MultiTokenForcedWithdrawer, MultiTokenWithdrawer},
37 },
38};
39
40#[ext_contract(ext_defuse)]
41pub trait Defuse:
42 Intents
43 + RelayerKeys
44 + AccountManager
45 + MultiTokenCore
46 + FungibleTokenReceiver
48 + FungibleTokenWithdrawer
49 + NonFungibleTokenReceiver
51 + NonFungibleTokenWithdrawer
52 + MultiTokenReceiver
54 + MultiTokenWithdrawer
55 + MultiTokenEnumeration
56 + AccessControllable
58 + MultiTokenForcedCore
59 + FungibleTokenForceWithdrawer
60 + NonFungibleTokenForceWithdrawer
61 + MultiTokenForcedWithdrawer
62 + ForceAccountManager
63 + Pausable
64 + ControllerUpgradable
65 + FullAccessKeys
66{
67}