mod xcm_config; use core::marker::PhantomData; use pezframe_support::{ construct_runtime, derive_impl, parameter_types, traits::{ConstU128, ContainsPair, Disabled, Everything, Nothing}, weights::{constants::WEIGHT_REF_TIME_PER_SECOND, Weight}, }; use pezframe_system::EnsureRoot; use pezsp_core::ConstU32; use pezsp_runtime::{ traits::{Get, IdentityLookup}, AccountId32, }; use xcm::latest::prelude::*; use xcm_builder::{EnsureXcmOrigin, SignedToAccountId32}; pub use xcm_config::*; use xcm_executor::XcmExecutor; use xcm_simulator::mock_message_queue; pub type AccountId = AccountId32; pub type Balance = u128; parameter_types! { pub const BlockHashCount: u64 = 250; } #[derive_impl(pezframe_system::config_preludes::TestDefaultConfig)] impl frame_system::Config for Runtime { type AccountData = pezpallet_balances::AccountData; type AccountId = AccountId; type Block = Block; type Lookup = IdentityLookup; } #[derive_impl(pezpallet_balances::config_preludes::TestDefaultConfig)] impl pezpallet_balances::Config for Runtime { type AccountStore = System; type Balance = Balance; type ExistentialDeposit = ConstU128<1>; } parameter_types! { pub const ReservedXcmpWeight: Weight = Weight::from_parts(WEIGHT_REF_TIME_PER_SECOND.saturating_div(4), 0); pub const ReservedDmpWeight: Weight = Weight::from_parts(WEIGHT_REF_TIME_PER_SECOND.saturating_div(4), 0); } impl mock_message_queue::Config for Runtime { type RuntimeEvent = RuntimeEvent; type XcmExecutor = XcmExecutor; } pub type LocalOriginToLocation = SignedToAccountId32; pub struct TrustedLockerCase(PhantomData); impl> ContainsPair for TrustedLockerCase { fn contains(origin: &Location, asset: &Asset) -> bool { let (o, a) = T::get(); a.matches(asset) && &o == origin } } parameter_types! { pub RelayTokenForRelay: (Location, AssetFilter) = (Parent.into(), Wild(AllOf { id: AssetId(Parent.into()), fun: WildFungible })); } pub type TrustedLockers = TrustedLockerCase; impl pezpallet_xcm::Config for Runtime { type AdminOrigin = EnsureRoot; type AdvertisedXcmVersion = pezpallet_xcm::CurrentXcmVersion; // Aliasing is disabled: xcm_executor::Config::Aliasers is set to `Nothing`. type AuthorizedAliasConsideration = Disabled; type Currency = Balances; type CurrencyMatcher = (); type ExecuteXcmOrigin = EnsureXcmOrigin; type MaxLockers = ConstU32<8>; type MaxRemoteLockConsumers = ConstU32<0>; type RemoteLockConsumerIdentifier = (); type RuntimeCall = RuntimeCall; type RuntimeEvent = RuntimeEvent; type RuntimeOrigin = RuntimeOrigin; type SendXcmOrigin = EnsureXcmOrigin; type SovereignAccountOf = location_converter::LocationConverter; type TrustedLockers = TrustedLockers; type UniversalLocation = constants::UniversalLocation; type Weigher = weigher::Weigher; type WeightInfo = pezpallet_xcm::TestWeightInfo; type XcmExecuteFilter = Everything; type XcmExecutor = XcmExecutor; type XcmReserveTransferFilter = Everything; type XcmRouter = XcmRouter; type XcmTeleportFilter = Nothing; const VERSION_DISCOVERY_QUEUE_SIZE: u32 = 100; } type Block = pezframe_system::mocking::MockBlock; construct_runtime!( pub struct Runtime { System: pezframe_system, Balances: pezpallet_balances, MsgQueue: mock_message_queue, PezkuwiXcm: pezpallet_xcm, } );