enum BuyExceptionType { generic, serializeResponseError, cryptoAmountOutOfRange, } class BuyException implements Exception { String errorMessage; BuyExceptionType type; BuyException(this.errorMessage, this.type); @override String toString() { return errorMessage; } } class BuyResponse { final T? value; final BuyException? exception; BuyResponse({this.value, this.exception}); @override String toString() { return "{error: $exception, value: $value}"; } }