use alloc::vec::Vec;
use codec::{Decode, Encode};
use frame_support::pallet_prelude::TypeInfo;
use sp_weights::Weight;
use xcm::{Version, VersionedAssetId, VersionedAssets, VersionedLocation, VersionedXcm};
sp_api::decl_runtime_apis! {
#[api_version(2)]
pub trait XcmPaymentApi {
fn query_acceptable_payment_assets(xcm_version: Version) -> Result<Vec<VersionedAssetId>, Error>;
fn query_xcm_weight(message: VersionedXcm<()>) -> Result<Weight, Error>;
fn query_weight_to_asset_fee(weight: Weight, asset: VersionedAssetId) -> Result<u128, Error>;
#[changed_in(2)]
fn query_delivery_fees(destination: VersionedLocation, message: VersionedXcm<()>) -> Result<VersionedAssets, Error>;
fn query_delivery_fees(destination: VersionedLocation, message: VersionedXcm<()>, asset_id: VersionedAssetId) -> Result<VersionedAssets, Error>;
}
}
#[derive(Copy, Clone, Encode, Decode, Eq, PartialEq, Debug, TypeInfo)]
pub enum Error {
#[codec(index = 0)]
Unimplemented,
#[codec(index = 1)]
VersionedConversionFailed,
#[codec(index = 2)]
WeightNotComputable,
#[codec(index = 3)]
UnhandledXcmVersion,
#[codec(index = 4)]
AssetNotFound,
#[codec(index = 5)]
Unroutable,
}