class PacketException implements Exception { final String message; final String? code; PacketException(this.message, {this.code}); @override String toString() => 'PacketException: $message'; } class NetworkException extends PacketException { NetworkException(super.message, {super.code}); } class HashExistsException extends PacketException { HashExistsException() : super('Hash already exists', code: 'hash_exists'); } class QueueFullException extends PacketException { QueueFullException() : super('Queue is full (max 20)', code: 'queue_full'); } class DatabaseException extends PacketException { DatabaseException(super.message, {super.code}); }