pub mod asset_transactor;
pub mod barrier;
pub mod constants;
pub mod location_converter;
pub mod origin_converter;
pub mod teleporter;
pub mod weigher;
use crate::relay_chain::{RuntimeCall, XcmPallet};
use frame_support::traits::{Everything, Nothing};
use xcm_builder::{EnsureDecodableXcm, FixedRateOfFungible, FrameTransactionalProcessor};
use xcm_executor::Config;
pub type XcmRouter = EnsureDecodableXcm<crate::RelayChainXcmRouter>;
pub struct XcmConfig;
impl Config for XcmConfig {
type RuntimeCall = RuntimeCall;
type XcmSender = XcmRouter;
type AssetTransactor = asset_transactor::AssetTransactor;
type OriginConverter = origin_converter::OriginConverter;
type IsReserve = ();
type IsTeleporter = teleporter::TrustedTeleporters;
type UniversalLocation = constants::UniversalLocation;
type Barrier = barrier::Barrier;
type Weigher = weigher::Weigher;
type Trader = FixedRateOfFungible<constants::TokensPerSecondPerByte, ()>;
type ResponseHandler = ();
type AssetTrap = ();
type AssetLocker = XcmPallet;
type AssetExchanger = ();
type AssetClaims = ();
type SubscriptionService = ();
type PalletInstancesInfo = ();
type FeeManager = ();
type MaxAssetsIntoHolding = constants::MaxAssetsIntoHolding;
type MessageExporter = ();
type UniversalAliases = Nothing;
type CallDispatcher = RuntimeCall;
type SafeCallFilter = Everything;
type Aliasers = Nothing;
type TransactionalProcessor = FrameTransactionalProcessor;
type HrmpNewChannelOpenRequestHandler = ();
type HrmpChannelAcceptedHandler = ();
type HrmpChannelClosingHandler = ();
type XcmRecorder = XcmPallet;
}