import 'package:result_monad/result_monad.dart'; class ExecError { final ErrorType type; final String message; ExecError({required this.type, this.message = ''}); @override String toString() { return 'ExecError{type: $type, message: $message}'; } } enum ErrorType { authentication, localError, missingEndpoint, notFound, parsingError, } extension ExecErrorExtension on Result { Result execErrorCast() => mapError((error) => error is ExecError ? error : ExecError(type: ErrorType.localError, message: error.toString())); FutureResult execErrorCastAsync() async => execErrorCast(); }