import { TransactionError } from '../../types'; export class ErrorParser { /** * Parses an error object to return a TransactionError object */ public parse(error: any): TransactionError { const errorCode = this.parseErrorCode(error); const errorHash = this.parseErrorHash(error); const errorMessage = this.parseErrorMessage(error); return { errorCodeNested: isNaN(errorCode) ? undefined : errorCode, errorCodeTopLevel: error.code, errorMessage, errorHash, error, }; } /** * Parse the error code from the error object. * @param error The error object. * @returns The error code. */ private parseErrorCode(error: any): number { return parseInt( error.error?.data?.code ?? error.error?.code ?? error.data?.code ?? error.code, ); } /** * Parse the error hash from the error object. * @param error The error object. * @returns The error hash. */ private parseErrorHash(error: any): any { return error?.error?.data?.originalError?.data ?? error?.error?.data; } /** * Parse the error message from the error object. * @param error The error object. * @returns The error message. */ private parseErrorMessage(error: any): string { return ( error.error?.data?.message ?? error.error?.message ?? error.reason ?? error.data?.message ?? error.message ); } }