difftreelog
code refactor & comments
in: master
12 files changed
Cargo.lockdiffbeforeafterboth--- a/Cargo.lock
+++ b/Cargo.lock
@@ -12147,7 +12147,7 @@
[[package]]
name = "uc-rpc"
-version = "0.1.3"
+version = "0.1.4"
dependencies = [
"anyhow",
"app-promotion-rpc",
client/rpc/CHANGELOG.mddiffbeforeafterboth--- a/client/rpc/CHANGELOG.md
+++ b/client/rpc/CHANGELOG.md
@@ -3,15 +3,21 @@
All notable changes to this project will be documented in this file.
<!-- bureaucrate goes here -->
+
+## [v0.1.4] 2022-09-08
+
+### Added
+- Support RPC for `AppPromotion` pallet.
+
## [v0.1.3] 2022-08-16
### Other changes
-- build: Upgrade polkadot to v0.9.27 2c498572636f2b34d53b1c51b7283a761a7dc90a
+- build: Upgrade polkadot to v0.9.27 2c498572636f2b34d53b1c51b7283a761a7dc90a
-- build: Upgrade polkadot to v0.9.26 85515e54c4ca1b82a2630034e55dcc804c643bf8
+- build: Upgrade polkadot to v0.9.26 85515e54c4ca1b82a2630034e55dcc804c643bf8
-- build: Upgrade polkadot to v0.9.25 cdfb9bdc7b205ff1b5134f034ef9973d769e5e6b
+- build: Upgrade polkadot to v0.9.25 cdfb9bdc7b205ff1b5134f034ef9973d769e5e6b
## [0.1.2] - 2022-08-12
client/rpc/Cargo.tomldiffbeforeafterboth--- a/client/rpc/Cargo.toml
+++ b/client/rpc/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "uc-rpc"
-version = "0.1.3"
+version = "0.1.4"
license = "GPLv3"
edition = "2021"
pallets/app-promotion/src/lib.rsdiffbeforeafterboth--- a/pallets/app-promotion/src/lib.rs
+++ b/pallets/app-promotion/src/lib.rs
@@ -22,9 +22,6 @@
//!
//! ### Dispatchable Functions
//!
-//! * `start_inflation` - This method sets the inflation start date. Can be only called once.
-//! Inflation start block can be backdated and will catch up. The method will create Treasury
-//! account if it does not exist and perform the first inflation deposit.
// #![recursion_limit = "1024"]
#![cfg_attr(not(feature = "std"), no_std)]
@@ -48,7 +45,6 @@
use pallet_balances::BalanceLock;
pub use types::*;
-// use up_common::constants::{DAYS, UNIQUE};
use up_data_structs::CollectionId;
use frame_support::{
@@ -87,16 +83,20 @@
#[pallet::config]
pub trait Config: frame_system::Config + pallet_evm::account::Config {
+ /// Type to interact with the native token
type Currency: ExtendedLockableCurrency<Self::AccountId>
+ ReservableCurrency<Self::AccountId>;
+ /// Type for interacting with collections
type CollectionHandler: CollectionHandler<
AccountId = Self::AccountId,
CollectionId = CollectionId,
>;
+ /// Type for interacting with conrtacts
type ContractHandler: ContractHandler<AccountId = Self::CrossAccountId, ContractId = H160>;
+ /// ID for treasury
type TreasuryAccountId: Get<Self::AccountId>;
/// The app's pallet id, used for deriving its sovereign account ID.
@@ -106,15 +106,18 @@
/// In relay blocks.
#[pallet::constant]
type RecalculationInterval: Get<Self::BlockNumber>;
- /// In relay blocks.
+
+ /// In parachain blocks.
#[pallet::constant]
type PendingInterval: Get<Self::BlockNumber>;
+ /// Rate of return for interval in blocks defined in `RecalculationInterval`.
#[pallet::constant]
- type Nominal: Get<BalanceOf<Self>>;
+ type IntervalIncome: Get<Perbill>;
+ /// Decimals for the `Currency`.
#[pallet::constant]
- type IntervalIncome: Get<Perbill>;
+ type Nominal: Get<BalanceOf<Self>>;
/// Weight information for extrinsics in this pallet.
type WeightInfo: WeightInfo;
@@ -133,6 +136,12 @@
#[pallet::event]
#[pallet::generate_deposit(fn deposit_event)]
pub enum Event<T: Config> {
+ /// Staking recalculation was performed
+ ///
+ /// # Arguments
+ /// * AccountId: ID of the staker.
+ /// * Balance : recalculation base
+ /// * Balance : total income
StakingRecalculation(
/// An recalculated staker
T::AccountId,
@@ -141,22 +150,42 @@
/// Amount of accrued interest
BalanceOf<T>,
),
+
+ /// Staking was performed
+ ///
+ /// # Arguments
+ /// * AccountId: ID of the staker
+ /// * Balance : staking amount
Stake(T::AccountId, BalanceOf<T>),
+
+ /// Unstaking was performed
+ ///
+ /// # Arguments
+ /// * AccountId: ID of the staker
+ /// * Balance : unstaking amount
Unstake(T::AccountId, BalanceOf<T>),
+
+ /// The admin was set
+ ///
+ /// # Arguments
+ /// * AccountId: ID of the admin
SetAdmin(T::AccountId),
}
#[pallet::error]
pub enum Error<T> {
- /// Error due to action requiring admin to be set
+ /// Error due to action requiring admin to be set.
AdminNotSet,
- /// No permission to perform an action
+ /// No permission to perform an action.
NoPermission,
- /// Insufficient funds to perform an action
+ /// Insufficient funds to perform an action.
NotSufficientFunds,
+ /// Occurs when a pending unstake cannot be added in this block. PENDING_LIMIT_PER_BLOCK` limits exceeded.
PendingForBlockOverflow,
- /// An error related to the fact that an invalid argument was passed to perform an action
+ /// The error is due to the fact that the collection/contract must already be sponsored in order to perform the action.
SponsorNotSet,
+ /// Errors caused by incorrect actions with a locked balance.
+ IncorrectLockedBalanceOperation,
}
#[pallet::storage]
@@ -189,7 +218,7 @@
ValueQuery,
>;
- /// Stores hash a record for which the last revenue recalculation was performed.
+ /// Stores a key for record for which the next revenue recalculation would be performed.
/// If `None`, then recalculation has not yet been performed or calculations have been completed for all stakers.
#[pallet::storage]
#[pallet::getter(fn get_next_calculated_record)]
@@ -198,6 +227,9 @@
#[pallet::hooks]
impl<T: Config> Hooks<BlockNumberFor<T>> for Pallet<T> {
+ /// Block overflow is impossible due to the fact that the unstake algorithm in on_initialize
+ /// implies the execution of a strictly limited number of relatively lightweight operations.
+ /// A separate benchmark has been implemented to scale the weight depending on the number of pendings.
fn on_initialize(current_block_number: T::BlockNumber) -> Weight
where
<T as frame_system::Config>::BlockNumber: From<u32>,
@@ -242,15 +274,13 @@
);
ensure!(
- amount >= Into::<BalanceOf<T>>::into(100u128) * T::Nominal::get(),
+ amount >= <BalanceOf<T>>::from(100u128) * T::Nominal::get(),
ArithmeticError::Underflow
);
let balance =
<<T as Config>::Currency as Currency<T::AccountId>>::free_balance(&staker_id);
- // ensure!(balance >= amount, ArithmeticError::Underflow);
-
<<T as Config>::Currency as Currency<T::AccountId>>::ensure_can_withdraw(
&staker_id,
amount,
@@ -325,7 +355,7 @@
<PendingUnstake<T>>::insert(block, pendings);
- Self::unlock_balance_unchecked(&staker_id, total_staked);
+ Self::unlock_balance(&staker_id, total_staked)?;
<T::Currency as ReservableCurrency<T::AccountId>>::reserve(&staker_id, total_staked)?;
@@ -400,8 +430,9 @@
);
ensure!(
- T::ContractHandler::sponsor(contract_id)?.ok_or(<Error<T>>::SponsorNotSet)?
- == T::CrossAccountId::from_sub(Self::account_id()),
+ T::ContractHandler::sponsor(contract_id)?
+ .ok_or(<Error<T>>::SponsorNotSet)?
+ .as_sub() == &Self::account_id(),
<Error<T>>::NoPermission
);
T::ContractHandler::remove_contract_sponsor(contract_id)
@@ -469,77 +500,9 @@
// / T::RecalculationInterval::get())
// .into() + 1,
// &mut income_acc,
- // );
- // }
- // }
- // }
-
- // {
- // let mut stakers_number = stakers_number.unwrap_or(20);
- // let last_id = RefCell::new(None);
- // let income_acc = RefCell::new(BalanceOf::<T>::default());
- // let amount_acc = RefCell::new(BalanceOf::<T>::default());
-
- // let flush_stake = || -> DispatchResult {
- // if let Some(last_id) = &*last_id.borrow() {
- // if !income_acc.borrow().is_zero() {
- // <T::Currency as Currency<T::AccountId>>::transfer(
- // &T::TreasuryAccountId::get(),
- // last_id,
- // *income_acc.borrow(),
- // ExistenceRequirement::KeepAlive,
- // )
- // .and_then(|_| {
- // Self::add_lock_balance(last_id, *income_acc.borrow());
- // <TotalStaked<T>>::try_mutate(|staked| {
- // staked
- // .checked_add(&*income_acc.borrow())
- // .ok_or(ArithmeticError::Overflow.into())
- // })
- // })?;
-
- // Self::deposit_event(Event::StakingRecalculation(
- // last_id.clone(),
- // *amount_acc.borrow(),
- // *income_acc.borrow(),
- // ));
- // }
-
- // *income_acc.borrow_mut() = BalanceOf::<T>::default();
- // *amount_acc.borrow_mut() = BalanceOf::<T>::default();
- // }
- // Ok(())
- // };
-
- // while let Some((
- // (current_id, staked_block),
- // (amount, next_recalc_block_for_stake),
- // )) = storage_iterator.next()
- // {
- // if stakers_number == 0 {
- // NextCalculatedRecord::<T>::set(Some((current_id, staked_block)));
- // break;
- // }
- // stakers_number -= 1;
- // if last_id.borrow().as_ref() != Some(¤t_id) {
- // flush_stake()?;
- // };
- // *last_id.borrow_mut() = Some(current_id.clone());
- // if current_recalc_block >= next_recalc_block_for_stake {
- // *amount_acc.borrow_mut() += amount;
- // Self::recalculate_and_insert_stake(
- // ¤t_id,
- // staked_block,
- // next_recalc_block,
- // amount,
- // ((current_recalc_block - next_recalc_block_for_stake)
- // / T::RecalculationInterval::get())
- // .into() + 1,
- // &mut *income_acc.borrow_mut(),
// );
// }
// }
- // flush_stake()?;
// }
{
@@ -620,10 +583,20 @@
T::PalletId::get().into_account_truncating()
}
- fn unlock_balance_unchecked(staker: &T::AccountId, amount: BalanceOf<T>) {
- let mut locked_balance = Self::get_locked_balance(staker).map(|l| l.amount).unwrap();
- locked_balance -= amount;
- Self::set_lock_unchecked(staker, locked_balance);
+ fn unlock_balance(staker: &T::AccountId, amount: BalanceOf<T>) -> DispatchResult {
+ let locked_balance = Self::get_locked_balance(staker)
+ .map(|l| l.amount)
+ .ok_or(<Error<T>>::IncorrectLockedBalanceOperation)?;
+
+ // It is understood that we cannot unlock more funds than were locked by staking.
+ // Therefore, if implemented correctly, this error should not occur.
+ Self::set_lock_unchecked(
+ staker,
+ locked_balance
+ .checked_sub(&amount)
+ .ok_or(ArithmeticError::Underflow)?,
+ );
+ Ok(())
}
fn add_lock_balance(staker: &T::AccountId, amount: BalanceOf<T>) -> DispatchResult {
@@ -745,6 +718,9 @@
where
<<T as Config>::Currency as Currency<T::AccountId>>::Balance: Sum,
{
+ /// Since user funds are not transferred anywhere by staking, overflow protection is provided
+ /// at the level of the associated type `Balance` of `Currency` trait. In order to overflow,
+ /// the staker must have more funds on his account than the maximum set for `Balance` type.
pub fn cross_id_pending_unstake(staker: Option<T::CrossAccountId>) -> BalanceOf<T> {
staker.map_or(
PendingUnstake::<T>::iter_values()
pallets/unique/CHANGELOG.mddiffbeforeafterboth--- a/pallets/unique/CHANGELOG.md
+++ b/pallets/unique/CHANGELOG.md
@@ -8,6 +8,8 @@
### Added
+- Methods `force_set_sponsor` , `force_remove_collection_sponsor` to be able to administer sponsorships with other pallets. Added to implement `AppPromotion` pallet logic.
+
## [v0.1.3] 2022-08-16
### Other changes
tests/src/interfaces/augment-api-consts.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-consts.ts
+++ b/tests/src/interfaces/augment-api-consts.ts
@@ -16,14 +16,20 @@
declare module '@polkadot/api-base/types/consts' {
interface AugmentedConsts<ApiType extends ApiTypes> {
appPromotion: {
+ /**
+ * Rate of return for interval in blocks defined in `RecalculationInterval`.
+ **/
intervalIncome: Perbill & AugmentedConst<ApiType>;
+ /**
+ * Decimals for the `Currency`.
+ **/
nominal: u128 & AugmentedConst<ApiType>;
/**
* The app's pallet id, used for deriving its sovereign account ID.
**/
palletId: FrameSupportPalletId & AugmentedConst<ApiType>;
/**
- * In relay blocks.
+ * In parachain blocks.
**/
pendingInterval: u32 & AugmentedConst<ApiType>;
/**
tests/src/interfaces/augment-api-errors.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-errors.ts
+++ b/tests/src/interfaces/augment-api-errors.ts
@@ -13,23 +13,30 @@
interface AugmentedErrors<ApiType extends ApiTypes> {
appPromotion: {
/**
- * Error due to action requiring admin to be set
+ * Error due to action requiring admin to be set.
**/
AdminNotSet: AugmentedError<ApiType>;
/**
- * An error related to the fact that an invalid argument was passed to perform an action
+ * Errors caused by incorrect actions with a locked balance.
**/
- InvalidArgument: AugmentedError<ApiType>;
+ IncorrectLockedBalanceOperation: AugmentedError<ApiType>;
/**
- * No permission to perform an action
+ * No permission to perform an action.
**/
NoPermission: AugmentedError<ApiType>;
/**
- * Insufficient funds to perform an action
+ * Insufficient funds to perform an action.
**/
NotSufficientFunds: AugmentedError<ApiType>;
+ /**
+ * Occurs when a pending unstake cannot be added in this block. PENDING_LIMIT_PER_BLOCK` limits exceeded.
+ **/
PendingForBlockOverflow: AugmentedError<ApiType>;
/**
+ * The error is due to the fact that the collection/contract must already be sponsored in order to perform the action.
+ **/
+ SponsorNotSet: AugmentedError<ApiType>;
+ /**
* Generic error
**/
[key: string]: AugmentedError<ApiType>;
tests/src/interfaces/augment-api-events.tsdiffbeforeafterboth1// Auto-generated via `yarn polkadot-types-from-chain`, do not edit2/* eslint-disable */34// import type lookup before we augment - in some environments5// this is required to allow for ambient/previous definitions6import '@polkadot/api-base/types/events';78import type { ApiTypes, AugmentedEvent } from '@polkadot/api-base/types';9import type { Bytes, Null, Option, Result, U256, U8aFixed, bool, u128, u32, u64, u8 } from '@polkadot/types-codec';10import type { ITuple } from '@polkadot/types-codec/types';11import type { AccountId32, H160, H256 } from '@polkadot/types/interfaces/runtime';12import type { EthereumLog, EvmCoreErrorExitReason, FrameSupportScheduleLookupError, FrameSupportTokensMiscBalanceStatus, FrameSupportWeightsDispatchInfo, OrmlVestingVestingSchedule, PalletEvmAccountBasicCrossAccountIdRepr, RmrkTraitsNftAccountIdOrCollectionNftTuple, SpRuntimeDispatchError, XcmV1MultiLocation, XcmV2Response, XcmV2TraitsError, XcmV2TraitsOutcome, XcmV2Xcm, XcmVersionedMultiAssets, XcmVersionedMultiLocation } from '@polkadot/types/lookup';1314export type __AugmentedEvent<ApiType extends ApiTypes> = AugmentedEvent<ApiType>;1516declare module '@polkadot/api-base/types/events' {17 interface AugmentedEvents<ApiType extends ApiTypes> {18 appPromotion: {19 SetAdmin: AugmentedEvent<ApiType, [AccountId32]>;20 Stake: AugmentedEvent<ApiType, [AccountId32, u128]>;21 StakingRecalculation: AugmentedEvent<ApiType, [AccountId32, u128, u128]>;22 Unstake: AugmentedEvent<ApiType, [AccountId32, u128]>;23 /**24 * Generic event25 **/26 [key: string]: AugmentedEvent<ApiType>;27 };28 balances: {29 /**30 * A balance was set by root.31 **/32 BalanceSet: AugmentedEvent<ApiType, [who: AccountId32, free: u128, reserved: u128], { who: AccountId32, free: u128, reserved: u128 }>;33 /**34 * Some amount was deposited (e.g. for transaction fees).35 **/36 Deposit: AugmentedEvent<ApiType, [who: AccountId32, amount: u128], { who: AccountId32, amount: u128 }>;37 /**38 * An account was removed whose balance was non-zero but below ExistentialDeposit,39 * resulting in an outright loss.40 **/41 DustLost: AugmentedEvent<ApiType, [account: AccountId32, amount: u128], { account: AccountId32, amount: u128 }>;42 /**43 * An account was created with some free balance.44 **/45 Endowed: AugmentedEvent<ApiType, [account: AccountId32, freeBalance: u128], { account: AccountId32, freeBalance: u128 }>;46 /**47 * Some balance was reserved (moved from free to reserved).48 **/49 Reserved: AugmentedEvent<ApiType, [who: AccountId32, amount: u128], { who: AccountId32, amount: u128 }>;50 /**51 * Some balance was moved from the reserve of the first account to the second account.52 * Final argument indicates the destination balance type.53 **/54 ReserveRepatriated: AugmentedEvent<ApiType, [from: AccountId32, to: AccountId32, amount: u128, destinationStatus: FrameSupportTokensMiscBalanceStatus], { from: AccountId32, to: AccountId32, amount: u128, destinationStatus: FrameSupportTokensMiscBalanceStatus }>;55 /**56 * Some amount was removed from the account (e.g. for misbehavior).57 **/58 Slashed: AugmentedEvent<ApiType, [who: AccountId32, amount: u128], { who: AccountId32, amount: u128 }>;59 /**60 * Transfer succeeded.61 **/62 Transfer: AugmentedEvent<ApiType, [from: AccountId32, to: AccountId32, amount: u128], { from: AccountId32, to: AccountId32, amount: u128 }>;63 /**64 * Some balance was unreserved (moved from reserved to free).65 **/66 Unreserved: AugmentedEvent<ApiType, [who: AccountId32, amount: u128], { who: AccountId32, amount: u128 }>;67 /**68 * Some amount was withdrawn from the account (e.g. for transaction fees).69 **/70 Withdraw: AugmentedEvent<ApiType, [who: AccountId32, amount: u128], { who: AccountId32, amount: u128 }>;71 /**72 * Generic event73 **/74 [key: string]: AugmentedEvent<ApiType>;75 };76 common: {77 /**78 * Amount pieces of token owned by `sender` was approved for `spender`.79 **/80 Approved: AugmentedEvent<ApiType, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;81 /**82 * New collection was created83 **/84 CollectionCreated: AugmentedEvent<ApiType, [u32, u8, AccountId32]>;85 /**86 * New collection was destroyed87 **/88 CollectionDestroyed: AugmentedEvent<ApiType, [u32]>;89 /**90 * The property has been deleted.91 **/92 CollectionPropertyDeleted: AugmentedEvent<ApiType, [u32, Bytes]>;93 /**94 * The colletion property has been added or edited.95 **/96 CollectionPropertySet: AugmentedEvent<ApiType, [u32, Bytes]>;97 /**98 * New item was created.99 **/100 ItemCreated: AugmentedEvent<ApiType, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;101 /**102 * Collection item was burned.103 **/104 ItemDestroyed: AugmentedEvent<ApiType, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;105 /**106 * The token property permission of a collection has been set.107 **/108 PropertyPermissionSet: AugmentedEvent<ApiType, [u32, Bytes]>;109 /**110 * The token property has been deleted.111 **/112 TokenPropertyDeleted: AugmentedEvent<ApiType, [u32, u32, Bytes]>;113 /**114 * The token property has been added or edited.115 **/116 TokenPropertySet: AugmentedEvent<ApiType, [u32, u32, Bytes]>;117 /**118 * Item was transferred119 **/120 Transfer: AugmentedEvent<ApiType, [u32, u32, PalletEvmAccountBasicCrossAccountIdRepr, PalletEvmAccountBasicCrossAccountIdRepr, u128]>;121 /**122 * Generic event123 **/124 [key: string]: AugmentedEvent<ApiType>;125 };126 cumulusXcm: {127 /**128 * Downward message executed with the given outcome.129 * \[ id, outcome \]130 **/131 ExecutedDownward: AugmentedEvent<ApiType, [U8aFixed, XcmV2TraitsOutcome]>;132 /**133 * Downward message is invalid XCM.134 * \[ id \]135 **/136 InvalidFormat: AugmentedEvent<ApiType, [U8aFixed]>;137 /**138 * Downward message is unsupported version of XCM.139 * \[ id \]140 **/141 UnsupportedVersion: AugmentedEvent<ApiType, [U8aFixed]>;142 /**143 * Generic event144 **/145 [key: string]: AugmentedEvent<ApiType>;146 };147 dmpQueue: {148 /**149 * Downward message executed with the given outcome.150 **/151 ExecutedDownward: AugmentedEvent<ApiType, [messageId: U8aFixed, outcome: XcmV2TraitsOutcome], { messageId: U8aFixed, outcome: XcmV2TraitsOutcome }>;152 /**153 * Downward message is invalid XCM.154 **/155 InvalidFormat: AugmentedEvent<ApiType, [messageId: U8aFixed], { messageId: U8aFixed }>;156 /**157 * Downward message is overweight and was placed in the overweight queue.158 **/159 OverweightEnqueued: AugmentedEvent<ApiType, [messageId: U8aFixed, overweightIndex: u64, requiredWeight: u64], { messageId: U8aFixed, overweightIndex: u64, requiredWeight: u64 }>;160 /**161 * Downward message from the overweight queue was executed.162 **/163 OverweightServiced: AugmentedEvent<ApiType, [overweightIndex: u64, weightUsed: u64], { overweightIndex: u64, weightUsed: u64 }>;164 /**165 * Downward message is unsupported version of XCM.166 **/167 UnsupportedVersion: AugmentedEvent<ApiType, [messageId: U8aFixed], { messageId: U8aFixed }>;168 /**169 * The weight limit for handling downward messages was reached.170 **/171 WeightExhausted: AugmentedEvent<ApiType, [messageId: U8aFixed, remainingWeight: u64, requiredWeight: u64], { messageId: U8aFixed, remainingWeight: u64, requiredWeight: u64 }>;172 /**173 * Generic event174 **/175 [key: string]: AugmentedEvent<ApiType>;176 };177 ethereum: {178 /**179 * An ethereum transaction was successfully executed. [from, to/contract_address, transaction_hash, exit_reason]180 **/181 Executed: AugmentedEvent<ApiType, [H160, H160, H256, EvmCoreErrorExitReason]>;182 /**183 * Generic event184 **/185 [key: string]: AugmentedEvent<ApiType>;186 };187 evm: {188 /**189 * A deposit has been made at a given address. \[sender, address, value\]190 **/191 BalanceDeposit: AugmentedEvent<ApiType, [AccountId32, H160, U256]>;192 /**193 * A withdrawal has been made from a given address. \[sender, address, value\]194 **/195 BalanceWithdraw: AugmentedEvent<ApiType, [AccountId32, H160, U256]>;196 /**197 * A contract has been created at given \[address\].198 **/199 Created: AugmentedEvent<ApiType, [H160]>;200 /**201 * A \[contract\] was attempted to be created, but the execution failed.202 **/203 CreatedFailed: AugmentedEvent<ApiType, [H160]>;204 /**205 * A \[contract\] has been executed successfully with states applied.206 **/207 Executed: AugmentedEvent<ApiType, [H160]>;208 /**209 * A \[contract\] has been executed with errors. States are reverted with only gas fees applied.210 **/211 ExecutedFailed: AugmentedEvent<ApiType, [H160]>;212 /**213 * Ethereum events from contracts.214 **/215 Log: AugmentedEvent<ApiType, [EthereumLog]>;216 /**217 * Generic event218 **/219 [key: string]: AugmentedEvent<ApiType>;220 };221 evmContractHelpers: {222 /**223 * Collection sponsor was removed.224 **/225 ContractSponsorRemoved: AugmentedEvent<ApiType, [H160]>;226 /**227 * Contract sponsor was set.228 **/229 ContractSponsorSet: AugmentedEvent<ApiType, [H160, AccountId32]>;230 /**231 * New sponsor was confirm.232 **/233 ContractSponsorshipConfirmed: AugmentedEvent<ApiType, [H160, AccountId32]>;234 /**235 * Generic event236 **/237 [key: string]: AugmentedEvent<ApiType>;238 };239 parachainSystem: {240 /**241 * Downward messages were processed using the given weight.242 **/243 DownwardMessagesProcessed: AugmentedEvent<ApiType, [weightUsed: u64, dmqHead: H256], { weightUsed: u64, dmqHead: H256 }>;244 /**245 * Some downward messages have been received and will be processed.246 **/247 DownwardMessagesReceived: AugmentedEvent<ApiType, [count: u32], { count: u32 }>;248 /**249 * An upgrade has been authorized.250 **/251 UpgradeAuthorized: AugmentedEvent<ApiType, [codeHash: H256], { codeHash: H256 }>;252 /**253 * The validation function was applied as of the contained relay chain block number.254 **/255 ValidationFunctionApplied: AugmentedEvent<ApiType, [relayChainBlockNum: u32], { relayChainBlockNum: u32 }>;256 /**257 * The relay-chain aborted the upgrade process.258 **/259 ValidationFunctionDiscarded: AugmentedEvent<ApiType, []>;260 /**261 * The validation function has been scheduled to apply.262 **/263 ValidationFunctionStored: AugmentedEvent<ApiType, []>;264 /**265 * Generic event266 **/267 [key: string]: AugmentedEvent<ApiType>;268 };269 polkadotXcm: {270 /**271 * Some assets have been placed in an asset trap.272 * 273 * \[ hash, origin, assets \]274 **/275 AssetsTrapped: AugmentedEvent<ApiType, [H256, XcmV1MultiLocation, XcmVersionedMultiAssets]>;276 /**277 * Execution of an XCM message was attempted.278 * 279 * \[ outcome \]280 **/281 Attempted: AugmentedEvent<ApiType, [XcmV2TraitsOutcome]>;282 /**283 * Expected query response has been received but the origin location of the response does284 * not match that expected. The query remains registered for a later, valid, response to285 * be received and acted upon.286 * 287 * \[ origin location, id, expected location \]288 **/289 InvalidResponder: AugmentedEvent<ApiType, [XcmV1MultiLocation, u64, Option<XcmV1MultiLocation>]>;290 /**291 * Expected query response has been received but the expected origin location placed in292 * storage by this runtime previously cannot be decoded. The query remains registered.293 * 294 * This is unexpected (since a location placed in storage in a previously executing295 * runtime should be readable prior to query timeout) and dangerous since the possibly296 * valid response will be dropped. Manual governance intervention is probably going to be297 * needed.298 * 299 * \[ origin location, id \]300 **/301 InvalidResponderVersion: AugmentedEvent<ApiType, [XcmV1MultiLocation, u64]>;302 /**303 * Query response has been received and query is removed. The registered notification has304 * been dispatched and executed successfully.305 * 306 * \[ id, pallet index, call index \]307 **/308 Notified: AugmentedEvent<ApiType, [u64, u8, u8]>;309 /**310 * Query response has been received and query is removed. The dispatch was unable to be311 * decoded into a `Call`; this might be due to dispatch function having a signature which312 * is not `(origin, QueryId, Response)`.313 * 314 * \[ id, pallet index, call index \]315 **/316 NotifyDecodeFailed: AugmentedEvent<ApiType, [u64, u8, u8]>;317 /**318 * Query response has been received and query is removed. There was a general error with319 * dispatching the notification call.320 * 321 * \[ id, pallet index, call index \]322 **/323 NotifyDispatchError: AugmentedEvent<ApiType, [u64, u8, u8]>;324 /**325 * Query response has been received and query is removed. The registered notification could326 * not be dispatched because the dispatch weight is greater than the maximum weight327 * originally budgeted by this runtime for the query result.328 * 329 * \[ id, pallet index, call index, actual weight, max budgeted weight \]330 **/331 NotifyOverweight: AugmentedEvent<ApiType, [u64, u8, u8, u64, u64]>;332 /**333 * A given location which had a version change subscription was dropped owing to an error334 * migrating the location to our new XCM format.335 * 336 * \[ location, query ID \]337 **/338 NotifyTargetMigrationFail: AugmentedEvent<ApiType, [XcmVersionedMultiLocation, u64]>;339 /**340 * A given location which had a version change subscription was dropped owing to an error341 * sending the notification to it.342 * 343 * \[ location, query ID, error \]344 **/345 NotifyTargetSendFail: AugmentedEvent<ApiType, [XcmV1MultiLocation, u64, XcmV2TraitsError]>;346 /**347 * Query response has been received and is ready for taking with `take_response`. There is348 * no registered notification call.349 * 350 * \[ id, response \]351 **/352 ResponseReady: AugmentedEvent<ApiType, [u64, XcmV2Response]>;353 /**354 * Received query response has been read and removed.355 * 356 * \[ id \]357 **/358 ResponseTaken: AugmentedEvent<ApiType, [u64]>;359 /**360 * A XCM message was sent.361 * 362 * \[ origin, destination, message \]363 **/364 Sent: AugmentedEvent<ApiType, [XcmV1MultiLocation, XcmV1MultiLocation, XcmV2Xcm]>;365 /**366 * The supported version of a location has been changed. This might be through an367 * automatic notification or a manual intervention.368 * 369 * \[ location, XCM version \]370 **/371 SupportedVersionChanged: AugmentedEvent<ApiType, [XcmV1MultiLocation, u32]>;372 /**373 * Query response received which does not match a registered query. This may be because a374 * matching query was never registered, it may be because it is a duplicate response, or375 * because the query timed out.376 * 377 * \[ origin location, id \]378 **/379 UnexpectedResponse: AugmentedEvent<ApiType, [XcmV1MultiLocation, u64]>;380 /**381 * An XCM version change notification message has been attempted to be sent.382 * 383 * \[ destination, result \]384 **/385 VersionChangeNotified: AugmentedEvent<ApiType, [XcmV1MultiLocation, u32]>;386 /**387 * Generic event388 **/389 [key: string]: AugmentedEvent<ApiType>;390 };391 rmrkCore: {392 CollectionCreated: AugmentedEvent<ApiType, [issuer: AccountId32, collectionId: u32], { issuer: AccountId32, collectionId: u32 }>;393 CollectionDestroyed: AugmentedEvent<ApiType, [issuer: AccountId32, collectionId: u32], { issuer: AccountId32, collectionId: u32 }>;394 CollectionLocked: AugmentedEvent<ApiType, [issuer: AccountId32, collectionId: u32], { issuer: AccountId32, collectionId: u32 }>;395 IssuerChanged: AugmentedEvent<ApiType, [oldIssuer: AccountId32, newIssuer: AccountId32, collectionId: u32], { oldIssuer: AccountId32, newIssuer: AccountId32, collectionId: u32 }>;396 NFTAccepted: AugmentedEvent<ApiType, [sender: AccountId32, recipient: RmrkTraitsNftAccountIdOrCollectionNftTuple, collectionId: u32, nftId: u32], { sender: AccountId32, recipient: RmrkTraitsNftAccountIdOrCollectionNftTuple, collectionId: u32, nftId: u32 }>;397 NFTBurned: AugmentedEvent<ApiType, [owner: AccountId32, nftId: u32], { owner: AccountId32, nftId: u32 }>;398 NftMinted: AugmentedEvent<ApiType, [owner: AccountId32, collectionId: u32, nftId: u32], { owner: AccountId32, collectionId: u32, nftId: u32 }>;399 NFTRejected: AugmentedEvent<ApiType, [sender: AccountId32, collectionId: u32, nftId: u32], { sender: AccountId32, collectionId: u32, nftId: u32 }>;400 NFTSent: AugmentedEvent<ApiType, [sender: AccountId32, recipient: RmrkTraitsNftAccountIdOrCollectionNftTuple, collectionId: u32, nftId: u32, approvalRequired: bool], { sender: AccountId32, recipient: RmrkTraitsNftAccountIdOrCollectionNftTuple, collectionId: u32, nftId: u32, approvalRequired: bool }>;401 PrioritySet: AugmentedEvent<ApiType, [collectionId: u32, nftId: u32], { collectionId: u32, nftId: u32 }>;402 PropertySet: AugmentedEvent<ApiType, [collectionId: u32, maybeNftId: Option<u32>, key: Bytes, value: Bytes], { collectionId: u32, maybeNftId: Option<u32>, key: Bytes, value: Bytes }>;403 ResourceAccepted: AugmentedEvent<ApiType, [nftId: u32, resourceId: u32], { nftId: u32, resourceId: u32 }>;404 ResourceAdded: AugmentedEvent<ApiType, [nftId: u32, resourceId: u32], { nftId: u32, resourceId: u32 }>;405 ResourceRemoval: AugmentedEvent<ApiType, [nftId: u32, resourceId: u32], { nftId: u32, resourceId: u32 }>;406 ResourceRemovalAccepted: AugmentedEvent<ApiType, [nftId: u32, resourceId: u32], { nftId: u32, resourceId: u32 }>;407 /**408 * Generic event409 **/410 [key: string]: AugmentedEvent<ApiType>;411 };412 rmrkEquip: {413 BaseCreated: AugmentedEvent<ApiType, [issuer: AccountId32, baseId: u32], { issuer: AccountId32, baseId: u32 }>;414 EquippablesUpdated: AugmentedEvent<ApiType, [baseId: u32, slotId: u32], { baseId: u32, slotId: u32 }>;415 /**416 * Generic event417 **/418 [key: string]: AugmentedEvent<ApiType>;419 };420 scheduler: {421 /**422 * The call for the provided hash was not found so the task has been aborted.423 **/424 CallLookupFailed: AugmentedEvent<ApiType, [task: ITuple<[u32, u32]>, id: Option<U8aFixed>, error: FrameSupportScheduleLookupError], { task: ITuple<[u32, u32]>, id: Option<U8aFixed>, error: FrameSupportScheduleLookupError }>;425 /**426 * Canceled some task.427 **/428 Canceled: AugmentedEvent<ApiType, [when: u32, index: u32], { when: u32, index: u32 }>;429 /**430 * Dispatched some task.431 **/432 Dispatched: AugmentedEvent<ApiType, [task: ITuple<[u32, u32]>, id: Option<U8aFixed>, result: Result<Null, SpRuntimeDispatchError>], { task: ITuple<[u32, u32]>, id: Option<U8aFixed>, result: Result<Null, SpRuntimeDispatchError> }>;433 /**434 * Scheduled some task.435 **/436 Scheduled: AugmentedEvent<ApiType, [when: u32, index: u32], { when: u32, index: u32 }>;437 /**438 * Generic event439 **/440 [key: string]: AugmentedEvent<ApiType>;441 };442 structure: {443 /**444 * Executed call on behalf of the token.445 **/446 Executed: AugmentedEvent<ApiType, [Result<Null, SpRuntimeDispatchError>]>;447 /**448 * Generic event449 **/450 [key: string]: AugmentedEvent<ApiType>;451 };452 sudo: {453 /**454 * The \[sudoer\] just switched identity; the old key is supplied if one existed.455 **/456 KeyChanged: AugmentedEvent<ApiType, [oldSudoer: Option<AccountId32>], { oldSudoer: Option<AccountId32> }>;457 /**458 * A sudo just took place. \[result\]459 **/460 Sudid: AugmentedEvent<ApiType, [sudoResult: Result<Null, SpRuntimeDispatchError>], { sudoResult: Result<Null, SpRuntimeDispatchError> }>;461 /**462 * A sudo just took place. \[result\]463 **/464 SudoAsDone: AugmentedEvent<ApiType, [sudoResult: Result<Null, SpRuntimeDispatchError>], { sudoResult: Result<Null, SpRuntimeDispatchError> }>;465 /**466 * Generic event467 **/468 [key: string]: AugmentedEvent<ApiType>;469 };470 system: {471 /**472 * `:code` was updated.473 **/474 CodeUpdated: AugmentedEvent<ApiType, []>;475 /**476 * An extrinsic failed.477 **/478 ExtrinsicFailed: AugmentedEvent<ApiType, [dispatchError: SpRuntimeDispatchError, dispatchInfo: FrameSupportWeightsDispatchInfo], { dispatchError: SpRuntimeDispatchError, dispatchInfo: FrameSupportWeightsDispatchInfo }>;479 /**480 * An extrinsic completed successfully.481 **/482 ExtrinsicSuccess: AugmentedEvent<ApiType, [dispatchInfo: FrameSupportWeightsDispatchInfo], { dispatchInfo: FrameSupportWeightsDispatchInfo }>;483 /**484 * An account was reaped.485 **/486 KilledAccount: AugmentedEvent<ApiType, [account: AccountId32], { account: AccountId32 }>;487 /**488 * A new account was created.489 **/490 NewAccount: AugmentedEvent<ApiType, [account: AccountId32], { account: AccountId32 }>;491 /**492 * On on-chain remark happened.493 **/494 Remarked: AugmentedEvent<ApiType, [sender: AccountId32, hash_: H256], { sender: AccountId32, hash_: H256 }>;495 /**496 * Generic event497 **/498 [key: string]: AugmentedEvent<ApiType>;499 };500 transactionPayment: {501 /**502 * A transaction fee `actual_fee`, of which `tip` was added to the minimum inclusion fee,503 * has been paid by `who`.504 **/505 TransactionFeePaid: AugmentedEvent<ApiType, [who: AccountId32, actualFee: u128, tip: u128], { who: AccountId32, actualFee: u128, tip: u128 }>;506 /**507 * Generic event508 **/509 [key: string]: AugmentedEvent<ApiType>;510 };511 treasury: {512 /**513 * Some funds have been allocated.514 **/515 Awarded: AugmentedEvent<ApiType, [proposalIndex: u32, award: u128, account: AccountId32], { proposalIndex: u32, award: u128, account: AccountId32 }>;516 /**517 * Some of our funds have been burnt.518 **/519 Burnt: AugmentedEvent<ApiType, [burntFunds: u128], { burntFunds: u128 }>;520 /**521 * Some funds have been deposited.522 **/523 Deposit: AugmentedEvent<ApiType, [value: u128], { value: u128 }>;524 /**525 * New proposal.526 **/527 Proposed: AugmentedEvent<ApiType, [proposalIndex: u32], { proposalIndex: u32 }>;528 /**529 * A proposal was rejected; funds were slashed.530 **/531 Rejected: AugmentedEvent<ApiType, [proposalIndex: u32, slashed: u128], { proposalIndex: u32, slashed: u128 }>;532 /**533 * Spending has finished; this is the amount that rolls over until next spend.534 **/535 Rollover: AugmentedEvent<ApiType, [rolloverBalance: u128], { rolloverBalance: u128 }>;536 /**537 * A new spend proposal has been approved.538 **/539 SpendApproved: AugmentedEvent<ApiType, [proposalIndex: u32, amount: u128, beneficiary: AccountId32], { proposalIndex: u32, amount: u128, beneficiary: AccountId32 }>;540 /**541 * We have ended a spend period and will now allocate funds.542 **/543 Spending: AugmentedEvent<ApiType, [budgetRemaining: u128], { budgetRemaining: u128 }>;544 /**545 * Generic event546 **/547 [key: string]: AugmentedEvent<ApiType>;548 };549 unique: {550 /**551 * Address was added to the allow list552 * 553 * # Arguments554 * * collection_id: ID of the affected collection.555 * * user: Address of the added account.556 **/557 AllowListAddressAdded: AugmentedEvent<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;558 /**559 * Address was removed from the allow list560 * 561 * # Arguments562 * * collection_id: ID of the affected collection.563 * * user: Address of the removed account.564 **/565 AllowListAddressRemoved: AugmentedEvent<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;566 /**567 * Collection admin was added568 * 569 * # Arguments570 * * collection_id: ID of the affected collection.571 * * admin: Admin address.572 **/573 CollectionAdminAdded: AugmentedEvent<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;574 /**575 * Collection admin was removed576 * 577 * # Arguments578 * * collection_id: ID of the affected collection.579 * * admin: Removed admin address.580 **/581 CollectionAdminRemoved: AugmentedEvent<ApiType, [u32, PalletEvmAccountBasicCrossAccountIdRepr]>;582 /**583 * Collection limits were set584 * 585 * # Arguments586 * * collection_id: ID of the affected collection.587 **/588 CollectionLimitSet: AugmentedEvent<ApiType, [u32]>;589 /**590 * Collection owned was changed591 * 592 * # Arguments593 * * collection_id: ID of the affected collection.594 * * owner: New owner address.595 **/596 CollectionOwnedChanged: AugmentedEvent<ApiType, [u32, AccountId32]>;597 /**598 * Collection permissions were set599 * 600 * # Arguments601 * * collection_id: ID of the affected collection.602 **/603 CollectionPermissionSet: AugmentedEvent<ApiType, [u32]>;604 /**605 * Collection sponsor was removed606 * 607 * # Arguments608 * * collection_id: ID of the affected collection.609 **/610 CollectionSponsorRemoved: AugmentedEvent<ApiType, [u32]>;611 /**612 * Collection sponsor was set613 * 614 * # Arguments615 * * collection_id: ID of the affected collection.616 * * owner: New sponsor address.617 **/618 CollectionSponsorSet: AugmentedEvent<ApiType, [u32, AccountId32]>;619 /**620 * New sponsor was confirm621 * 622 * # Arguments623 * * collection_id: ID of the affected collection.624 * * sponsor: New sponsor address.625 **/626 SponsorshipConfirmed: AugmentedEvent<ApiType, [u32, AccountId32]>;627 /**628 * Generic event629 **/630 [key: string]: AugmentedEvent<ApiType>;631 };632 vesting: {633 /**634 * Claimed vesting.635 **/636 Claimed: AugmentedEvent<ApiType, [who: AccountId32, amount: u128], { who: AccountId32, amount: u128 }>;637 /**638 * Added new vesting schedule.639 **/640 VestingScheduleAdded: AugmentedEvent<ApiType, [from: AccountId32, to: AccountId32, vestingSchedule: OrmlVestingVestingSchedule], { from: AccountId32, to: AccountId32, vestingSchedule: OrmlVestingVestingSchedule }>;641 /**642 * Updated vesting schedules.643 **/644 VestingSchedulesUpdated: AugmentedEvent<ApiType, [who: AccountId32], { who: AccountId32 }>;645 /**646 * Generic event647 **/648 [key: string]: AugmentedEvent<ApiType>;649 };650 xcmpQueue: {651 /**652 * Bad XCM format used.653 **/654 BadFormat: AugmentedEvent<ApiType, [messageHash: Option<H256>], { messageHash: Option<H256> }>;655 /**656 * Bad XCM version used.657 **/658 BadVersion: AugmentedEvent<ApiType, [messageHash: Option<H256>], { messageHash: Option<H256> }>;659 /**660 * Some XCM failed.661 **/662 Fail: AugmentedEvent<ApiType, [messageHash: Option<H256>, error: XcmV2TraitsError, weight: u64], { messageHash: Option<H256>, error: XcmV2TraitsError, weight: u64 }>;663 /**664 * An XCM exceeded the individual message weight budget.665 **/666 OverweightEnqueued: AugmentedEvent<ApiType, [sender: u32, sentAt: u32, index: u64, required: u64], { sender: u32, sentAt: u32, index: u64, required: u64 }>;667 /**668 * An XCM from the overweight queue was executed with the given actual weight used.669 **/670 OverweightServiced: AugmentedEvent<ApiType, [index: u64, used: u64], { index: u64, used: u64 }>;671 /**672 * Some XCM was executed ok.673 **/674 Success: AugmentedEvent<ApiType, [messageHash: Option<H256>, weight: u64], { messageHash: Option<H256>, weight: u64 }>;675 /**676 * An upward message was sent to the relay chain.677 **/678 UpwardMessageSent: AugmentedEvent<ApiType, [messageHash: Option<H256>], { messageHash: Option<H256> }>;679 /**680 * An HRMP message was sent to a sibling parachain.681 **/682 XcmpMessageSent: AugmentedEvent<ApiType, [messageHash: Option<H256>], { messageHash: Option<H256> }>;683 /**684 * Generic event685 **/686 [key: string]: AugmentedEvent<ApiType>;687 };688 } // AugmentedEvents689} // declare moduletests/src/interfaces/augment-api-query.tsdiffbeforeafterboth--- a/tests/src/interfaces/augment-api-query.ts
+++ b/tests/src/interfaces/augment-api-query.ts
@@ -20,13 +20,10 @@
appPromotion: {
admin: AugmentedQuery<ApiType, () => Observable<Option<AccountId32>>, []> & QueryableStorageEntry<ApiType, []>;
/**
- * Stores hash a record for which the last revenue recalculation was performed.
+ * Stores a key for record for which the next revenue recalculation would be performed.
* If `None`, then recalculation has not yet been performed or calculations have been completed for all stakers.
**/
nextCalculatedRecord: AugmentedQuery<ApiType, () => Observable<Option<ITuple<[AccountId32, u32]>>>, []> & QueryableStorageEntry<ApiType, []>;
- /**
- * Amount of tokens pending unstake per user per block.
- **/
pendingUnstake: AugmentedQuery<ApiType, (arg: u32 | AnyNumber | Uint8Array) => Observable<Vec<ITuple<[AccountId32, u128]>>>, [u32]> & QueryableStorageEntry<ApiType, [u32]>;
/**
* Amount of tokens staked by account in the blocknumber.
tests/src/interfaces/default/types.tsdiffbeforeafterboth--- a/tests/src/interfaces/default/types.ts
+++ b/tests/src/interfaces/default/types.ts
@@ -846,8 +846,9 @@
readonly isNoPermission: boolean;
readonly isNotSufficientFunds: boolean;
readonly isPendingForBlockOverflow: boolean;
- readonly isInvalidArgument: boolean;
- readonly type: 'AdminNotSet' | 'NoPermission' | 'NotSufficientFunds' | 'PendingForBlockOverflow' | 'InvalidArgument';
+ readonly isSponsorNotSet: boolean;
+ readonly isIncorrectLockedBalanceOperation: boolean;
+ readonly type: 'AdminNotSet' | 'NoPermission' | 'NotSufficientFunds' | 'PendingForBlockOverflow' | 'SponsorNotSet' | 'IncorrectLockedBalanceOperation';
}
/** @name PalletAppPromotionEvent */
tests/src/interfaces/lookup.tsdiffbeforeafterboth--- a/tests/src/interfaces/lookup.ts
+++ b/tests/src/interfaces/lookup.ts
@@ -3115,7 +3115,7 @@
* Lookup416: pallet_app_promotion::pallet::Error<T>
**/
PalletAppPromotionError: {
- _enum: ['AdminNotSet', 'NoPermission', 'NotSufficientFunds', 'PendingForBlockOverflow', 'InvalidArgument']
+ _enum: ['AdminNotSet', 'NoPermission', 'NotSufficientFunds', 'PendingForBlockOverflow', 'SponsorNotSet', 'IncorrectLockedBalanceOperation']
},
/**
* Lookup419: pallet_evm::pallet::Error<T>
tests/src/interfaces/types-lookup.tsdiffbeforeafterboth--- a/tests/src/interfaces/types-lookup.ts
+++ b/tests/src/interfaces/types-lookup.ts
@@ -3309,8 +3309,9 @@
readonly isNoPermission: boolean;
readonly isNotSufficientFunds: boolean;
readonly isPendingForBlockOverflow: boolean;
- readonly isInvalidArgument: boolean;
- readonly type: 'AdminNotSet' | 'NoPermission' | 'NotSufficientFunds' | 'PendingForBlockOverflow' | 'InvalidArgument';
+ readonly isSponsorNotSet: boolean;
+ readonly isIncorrectLockedBalanceOperation: boolean;
+ readonly type: 'AdminNotSet' | 'NoPermission' | 'NotSufficientFunds' | 'PendingForBlockOverflow' | 'SponsorNotSet' | 'IncorrectLockedBalanceOperation';
}
/** @name PalletEvmError (419) */