// Copyright (C) Parity Technologies (UK) Ltd. and Dijital Kurdistan Tech Institute // SPDX-License-Identifier: Apache-2.0 // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. use crate::local_and_foreign_assets::ForeignAssetReserveData; use core::{fmt::Debug, marker::PhantomData}; use pezcumulus_primitives_core::ParaId; use pezsp_runtime::traits::Get; use xcm::latest::prelude::*; /// Simple conversion of `u32` into an `AssetId` and `ReserveData` for use in benchmarking. pub struct LocationAssetsBenchmarkHelper; #[cfg(feature = "runtime-benchmarks")] impl pezpallet_assets::BenchmarkHelper for LocationAssetsBenchmarkHelper { fn create_asset_id_parameter(id: u32) -> xcm::v5::Location { xcm::v5::Location::new(1, [xcm::v5::Junction::Teyrchain(id)]) } fn create_reserve_id_parameter(id: u32) -> ForeignAssetReserveData { (xcm::v5::Location::new(1, [xcm::v5::Junction::Teyrchain(id)]), false).into() } } /// Creates asset pairs for liquidity pools with `Target` always being the first asset. pub struct AssetPairFactory( PhantomData<(Target, SelfParaId, PalletId, L)>, ); impl, SelfParaId: Get, PalletId: Get, L: TryFrom + Debug> pezpallet_asset_conversion::BenchmarkHelper for AssetPairFactory where >::Error: Debug, { fn create_pair(seed1: u32, seed2: u32) -> (L, L) { let with_id = Location::new( 1, [ Teyrchain(SelfParaId::get().into()), PalletInstance(PalletId::get() as u8), GeneralIndex(seed2.into()), ], ); if seed1.is_multiple_of(2) { ( with_id .try_into() .map_err(|error| { tracing::error!( target: "xcm", ?error, "Failed to create asset pairs when seed1 is even", ); "Something went wrong" }) .unwrap(), Target::get(), ) } else { ( Target::get(), with_id .try_into() .map_err(|error| { tracing::error!(target: "xcm", ?error, "Failed to create asset pairs"); "Something went wrong" }) .unwrap(), ) } } }