import 'package:equatable/equatable.dart'; /// Base failure class abstract class Failure extends Equatable { final String message; const Failure(this.message); @override List get props => [message]; } /// Server failure class ServerFailure extends Failure { const ServerFailure([super.message = 'Server failure occurred']); } /// Cache failure class CacheFailure extends Failure { const CacheFailure([super.message = 'Cache failure occurred']); } /// Network failure class NetworkFailure extends Failure { const NetworkFailure([super.message = 'Network failure occurred']); } /// Validation failure class ValidationFailure extends Failure { const ValidationFailure([super.message = 'Validation failure occurred']); } /// Not found failure class NotFoundFailure extends Failure { const NotFoundFailure([super.message = 'Resource not found']); } /// Unauthorized failure class UnauthorizedFailure extends Failure { const UnauthorizedFailure([super.message = 'Unauthorized access']); } /// Authentication failure class AuthenticationFailure extends Failure { const AuthenticationFailure([super.message = 'Authentication failed']); } /// Invalid credentials failure class InvalidCredentialsFailure extends Failure { const InvalidCredentialsFailure([super.message = 'Invalid email or password']); } /// Token expired failure class TokenExpiredFailure extends Failure { const TokenExpiredFailure([super.message = 'Token has expired']); } /// Conflict failure (e.g., email already exists) class ConflictFailure extends Failure { const ConflictFailure([super.message = 'Resource already exists']); }