use anyhow::Result;
use std::fmt::Display;
#[async_trait::async_trait]
pub trait IPeer: Display + Send + Sync {
fn create(token: u64, account_id: i32) -> Self;
fn update(&self);
fn get_account_id(&self) -> i32;
fn get_token(&self) -> u64;
fn get_proxy_id(&self) -> usize;
fn set_proxy_id(&self, proxy_id: usize);
fn set_disconnect(&self, disconnect: bool);
fn is_disconnect(&self) -> bool;
fn comparison_time(&self, timestamp: i64) -> i64;
async fn on_disconnect(&self) -> Result<()>;
async fn on_clean(&self) -> Result<()>;
}
#[derive(Default, Copy, Clone)]
#[repr(u8)]
pub enum BonusState {
#[default]
Normal = 0,
Major = 4,
Grand = 5,
Special = 6,
}