pub enum KrakenError {
// Connection
ConnectionFailed { url: String, reason: String },
WebSocket(String),
Timeout,
// Data
InvalidJson { message: String, raw: String },
ChecksumMismatch { symbol: String, expected: u32, computed: u32 },
// Subscription
SubscriptionRejected { channel: String, reason: String },
// Rate Limiting
RateLimited { retry_after: Duration },
// API
ApiError { code: i32, message: String, raw: String, recovery: RecoveryHint },
// Auth
AuthenticationFailed { reason: String },
TokenExpired,
// Trading
OrderRejected { reason: String },
InsufficientFunds,
InvalidSymbol(String),
}