pallet_erc20_xcm_bridge/
errors.rs1use sp_runtime::DispatchError;
18use xcm::latest::Error as XcmError;
19
20pub(crate) enum Erc20TransferError {
21 ContractTransferFail,
22 ContractReturnInvalidValue,
23 DispatchError(DispatchError),
24 EvmCallFail,
25}
26
27impl From<DispatchError> for Erc20TransferError {
28 fn from(e: DispatchError) -> Self {
29 Self::DispatchError(e)
30 }
31}
32
33impl From<Erc20TransferError> for XcmError {
34 fn from(error: Erc20TransferError) -> XcmError {
35 match error {
36 Erc20TransferError::ContractTransferFail => {
37 XcmError::FailedToTransactAsset("Erc20 contract transfer fail")
38 }
39 Erc20TransferError::ContractReturnInvalidValue => {
40 XcmError::FailedToTransactAsset("Erc20 contract return invalid value")
41 }
42 Erc20TransferError::DispatchError(err) => {
43 log::debug!("dispatch error: {:?}", err);
44 Self::FailedToTransactAsset("storage layer error")
45 }
46 Erc20TransferError::EvmCallFail => {
47 XcmError::FailedToTransactAsset("Fail to call erc20 contract")
48 }
49 }
50 }
51}