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 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    // 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}