defuse/
lib.rs

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    // NEP-141 deposits/withdrawals
44    + FungibleTokenReceiver
45    + FungibleTokenWithdrawer
46    // NEP-171 deposits/withdrawals
47    + NonFungibleTokenReceiver
48    + NonFungibleTokenWithdrawer
49    // NEP-245 deposits/withdrawals
50    + MultiTokenReceiver
51    + MultiTokenWithdrawer
52    + MultiTokenEnumeration
53    // Governance
54    + AccessControllable
55    + MultiTokenForcedCore
56    + FungibleTokenForceWithdrawer
57    + NonFungibleTokenForceWithdrawer
58    + MultiTokenForcedWithdrawer
59    + AccountForceLocker
60    + Pausable
61    + ControllerUpgradable
62    + FullAccessKeys
63{
64}