github.com/status-im/status-go@v1.1.0/services/wallet/router/pathprocessor/errors.go (about)

     1  package pathprocessor
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/status-im/status-go/errors"
     7  )
     8  
     9  // Abbreviartion `WPP` for the error code stands for `Wallet Path Processor`
    10  var (
    11  	ErrFailedToParseBaseFee           = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-001"), Details: "failed to parse base fee"}
    12  	ErrFailedToParsePercentageFee     = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-002"), Details: "failed to parse percentage fee"}
    13  	ErrContractNotFound               = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-003"), Details: "contract not found"}
    14  	ErrNetworkNotFound                = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-004"), Details: "network not found"}
    15  	ErrTokenNotFound                  = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-005"), Details: "token not found"}
    16  	ErrNoEstimationFound              = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-006"), Details: "no estimation found"}
    17  	ErrNotAvailableForContractType    = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-007"), Details: "not available for contract type"}
    18  	ErrNoBonderFeeFound               = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-008"), Details: "no bonder fee found"}
    19  	ErrContractTypeNotSupported       = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-009"), Details: "contract type not supported"}
    20  	ErrFromChainNotSupported          = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-010"), Details: "from chain not supported"}
    21  	ErrToChainNotSupported            = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-011"), Details: "to chain not supported"}
    22  	ErrTxForChainNotSupported         = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-012"), Details: "tx for chain not supported"}
    23  	ErrENSResolverNotFound            = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-013"), Details: "ENS resolver not found"}
    24  	ErrENSRegistrarNotFound           = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-014"), Details: "ENS registrar not found"}
    25  	ErrToAndFromTokensMustBeSet       = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-015"), Details: "to and from tokens must be set"}
    26  	ErrCannotResolveTokens            = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-016"), Details: "cannot resolve tokens"}
    27  	ErrPriceRouteNotFound             = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-017"), Details: "price route not found"}
    28  	ErrConvertingAmountToBigInt       = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-018"), Details: "converting amount to big.Int"}
    29  	ErrNoChainSet                     = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-019"), Details: "no chain set"}
    30  	ErrNoTokenSet                     = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-020"), Details: "no token set"}
    31  	ErrToTokenShouldNotBeSet          = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-021"), Details: "to token should not be set"}
    32  	ErrFromAndToChainsMustBeDifferent = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-022"), Details: "from and to chains must be different"}
    33  	ErrFromAndToChainsMustBeSame      = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-023"), Details: "from and to chains must be same"}
    34  	ErrFromAndToTokensMustBeDifferent = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-024"), Details: "from and to tokens must be different"}
    35  	ErrTransferCustomError            = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-025"), Details: "Transfer custom error"}
    36  	ErrERC721TransferCustomError      = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-026"), Details: "ERC721Transfer custom error"}
    37  	ErrERC1155TransferCustomError     = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-027"), Details: "ERC1155Transfer custom error"}
    38  	ErrBridgeHopCustomError           = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-028"), Details: "Hop custom error"}
    39  	ErrBridgeCellerCustomError        = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-029"), Details: "CBridge custom error"}
    40  	ErrSwapParaswapCustomError        = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-030"), Details: "Paraswap custom error"}
    41  	ErrENSRegisterCustomError         = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-031"), Details: "ENSRegister custom error"}
    42  	ErrENSReleaseCustomError          = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-032"), Details: "ENSRelease custom error"}
    43  	ErrENSPublicKeyCustomError        = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-033"), Details: "ENSPublicKey custom error"}
    44  	ErrStickersBuyCustomError         = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-034"), Details: "StickersBuy custom error"}
    45  	ErrContextCancelled               = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-035"), Details: "context cancelled"}
    46  	ErrContextDeadlineExceeded        = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-036"), Details: "context deadline exceeded"}
    47  	ErrPriceTimeout                   = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-037"), Details: "price timeout"}
    48  	ErrNotEnoughLiquidity             = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-038"), Details: "not enough liquidity"}
    49  	ErrPriceImpactTooHigh             = &errors.ErrorResponse{Code: errors.ErrorCode("WPP-039"), Details: "price impact too high"}
    50  )
    51  
    52  func createErrorResponse(processorName string, err error) error {
    53  	if err == nil {
    54  		return nil
    55  	}
    56  
    57  	genericErrResp := errors.CreateErrorResponseFromError(err).(*errors.ErrorResponse)
    58  
    59  	if genericErrResp.Code != errors.GenericErrorCode {
    60  		return genericErrResp
    61  	}
    62  
    63  	switch genericErrResp.Details {
    64  	case context.Canceled.Error():
    65  		return ErrContextCancelled
    66  	case context.DeadlineExceeded.Error():
    67  		return ErrContextDeadlineExceeded
    68  	}
    69  
    70  	var customErrResp *errors.ErrorResponse
    71  	switch processorName {
    72  	case ProcessorTransferName:
    73  		customErrResp = ErrTransferCustomError
    74  	case ProcessorERC721Name:
    75  		customErrResp = ErrERC721TransferCustomError
    76  	case ProcessorERC1155Name:
    77  		customErrResp = ErrERC1155TransferCustomError
    78  	case ProcessorBridgeHopName:
    79  		customErrResp = ErrBridgeHopCustomError
    80  	case ProcessorBridgeCelerName:
    81  		customErrResp = ErrBridgeCellerCustomError
    82  	case ProcessorSwapParaswapName:
    83  		customErrResp = ErrSwapParaswapCustomError
    84  	case ProcessorENSRegisterName:
    85  		customErrResp = ErrENSRegisterCustomError
    86  	case ProcessorENSReleaseName:
    87  		customErrResp = ErrENSReleaseCustomError
    88  	case ProcessorENSPublicKeyName:
    89  		customErrResp = ErrENSPublicKeyCustomError
    90  	case ProcessorStickersBuyName:
    91  		customErrResp = ErrStickersBuyCustomError
    92  	default:
    93  		return genericErrResp
    94  	}
    95  
    96  	customErrResp.Details = genericErrResp.Details
    97  	return customErrResp
    98  }
    99  
   100  func IsCustomError(err error) bool {
   101  	if err == nil {
   102  		return false
   103  	}
   104  
   105  	errResp, ok := err.(*errors.ErrorResponse)
   106  	if !ok {
   107  		return false
   108  	}
   109  
   110  	switch errResp {
   111  	case ErrTransferCustomError,
   112  		ErrERC721TransferCustomError,
   113  		ErrERC1155TransferCustomError,
   114  		ErrBridgeHopCustomError,
   115  		ErrBridgeCellerCustomError,
   116  		ErrSwapParaswapCustomError,
   117  		ErrENSRegisterCustomError,
   118  		ErrENSReleaseCustomError,
   119  		ErrENSPublicKeyCustomError,
   120  		ErrStickersBuyCustomError:
   121  		return true
   122  	default:
   123  		return false
   124  	}
   125  }