class AuthenticationFailedException implements Exception {
  final String message;
  final Exception? originalError;

  const AuthenticationFailedException(this.message, [this.originalError]);

  @override
  String toString() {
    return 'AuthenticationFailedException: $message${originalError != null ? ' (caused by: $originalError)' : ''}';
  }
}

class CircuitBreakerOpenException implements Exception {
  final String message;

  const CircuitBreakerOpenException(this.message);

  @override
  String toString() {
    return 'CircuitBreakerOpenException: $message';
  }
}