use {
crate::models,
serde::{Deserialize, Serialize},
};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct SessionDto {
#[serde(rename = "id")]
pub id: String,
#[serde(rename = "userId")]
pub user_id: String,
#[serde(rename = "sessionMetadata")]
pub session_metadata: models::SessionMetadata,
#[serde(rename = "vaultAccountId")]
pub vault_account_id: f64,
#[serde(rename = "feeLevel")]
pub fee_level: FeeLevel,
#[serde(rename = "chainIds")]
pub chain_ids: Vec<String>,
#[serde(rename = "connectionType")]
pub connection_type: ConnectionType,
#[serde(rename = "connectionMethod")]
pub connection_method: ConnectionMethod,
#[serde(rename = "creationDate")]
pub creation_date: String,
}
impl SessionDto {
pub fn new(
id: String,
user_id: String,
session_metadata: models::SessionMetadata,
vault_account_id: f64,
fee_level: FeeLevel,
chain_ids: Vec<String>,
connection_type: ConnectionType,
connection_method: ConnectionMethod,
creation_date: String,
) -> SessionDto {
SessionDto {
id,
user_id,
session_metadata,
vault_account_id,
fee_level,
chain_ids,
connection_type,
connection_method,
creation_date,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum FeeLevel {
#[serde(rename = "MEDIUM")]
Medium,
#[serde(rename = "HIGH")]
High,
}
impl Default for FeeLevel {
fn default() -> FeeLevel {
Self::Medium
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum ConnectionType {
#[serde(rename = "WalletConnect")]
WalletConnect,
}
impl Default for ConnectionType {
fn default() -> ConnectionType {
Self::WalletConnect
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum ConnectionMethod {
#[serde(rename = "DESKTOP")]
Desktop,
#[serde(rename = "MOBILE")]
Mobile,
#[serde(rename = "API")]
Api,
}
impl Default for ConnectionMethod {
fn default() -> ConnectionMethod {
Self::Desktop
}
}