1234567891011121314151617use frame_support::{18 match_types, parameter_types,19 traits::{Get, Everything},20};21use sp_std::{vec, vec::Vec};22use xcm::latest::{Junction::*, Junctions::*, MultiLocation};23use xcm_builder::{24 AllowKnownQueryResponses, AllowSubscriptionsFrom, TakeWeightCredit,25 AllowTopLevelPaidExecutionFrom,26};2728use crate::{29 Runtime, ParachainInfo, PolkadotXcm,30 runtime_common::{31 config::xcm::{DenyThenTry, DenyTransact, DenyExchangeWithUnknownLocation},32 xcm::OverridableAllowedLocations,33 },34};3536match_types! {37 pub type ParentOrSiblings: impl Contains<MultiLocation> = {38 MultiLocation { parents: 1, interior: Here } |39 MultiLocation { parents: 1, interior: X1(_) }40 };41}4243parameter_types! {44 pub QuartzDefaultAllowedLocations: Vec<MultiLocation> = vec![45 46 MultiLocation {47 parents: 0,48 interior: Here,49 },50 51 MultiLocation {52 parents: 1,53 interior: Here,54 },55 56 MultiLocation {57 parents: 1,58 interior: X1(Parachain(1000)),59 },60 61 MultiLocation {62 parents: 1,63 interior: X1(Parachain(2000)),64 },65 66 MultiLocation {67 parents: 1,68 interior: X1(Parachain(2023)),69 },70 71 MultiLocation {72 parents: 1,73 interior: X1(Parachain(ParachainInfo::get().into())),74 },75 ];76}7778pub type Barrier = DenyThenTry<79 (80 DenyTransact,81 DenyExchangeWithUnknownLocation<82 OverridableAllowedLocations<Runtime, QuartzDefaultAllowedLocations>,83 >,84 ),85 (86 TakeWeightCredit,87 AllowTopLevelPaidExecutionFrom<Everything>,88 89 AllowKnownQueryResponses<PolkadotXcm>,90 91 AllowSubscriptionsFrom<ParentOrSiblings>,92 ),93>;