use crossterm::event::{KeyEvent, MouseEvent};
use crate::common_config::TransportConfig;
#[derive(Debug, Clone)]
pub struct LogRecord {
pub timestamp: String,
pub level: String,
pub message: String,
}
#[derive(Debug, Clone)]
pub enum BridgeEvent {
TransportUp { name: String, addr: String },
TransportDown { name: String },
ClientConnected { session_id: String },
ClientDisconnected { session_id: String },
PairingCompleted,
PairingUrlReady { url: String, transport: String },
AgentSpawned { command: String },
AgentExited,
TlsFingerprint { fingerprint: String },
PushRegistered,
BridgeStopped,
BridgeError { message: String },
}
#[derive(Debug)]
pub enum AppEvent {
Key(KeyEvent),
Mouse(MouseEvent),
Bridge(BridgeEvent),
Log(LogRecord),
Tick,
Resize(u16, u16),
CloudflareSetupResult(Result<TransportConfig, String>),
TestPushResult(Result<bool, String>),
}
#[derive(Debug, Clone)]
pub enum TuiCommand {
Quit,
Reconnect,
TestPush,
RefreshQr,
}