use serde::{Serialize, Deserialize};
use uuid::Uuid;
use chrono::{DateTime, Utc};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum ChannelState {
Open,
Closed,
Disputed,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct Channel {
pub id: Uuid,
pub participant_a: String,
pub participant_b: String,
pub balance_a: u64,
pub balance_b: u64,
pub state: ChannelState,
pub created_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct Contract {
pub id: Uuid,
pub creator: String,
pub code: String,
pub created_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum InvoiceStatus {
Issued,
Paid,
Cancelled,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct Invoice {
pub id: Uuid,
pub issuer: String,
pub recipient: String,
pub amount: u64,
pub status: InvoiceStatus,
pub issued_at: DateTime<Utc>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct NFT {
pub id: Uuid,
pub owner: String,
pub metadata: String,
pub created_at: DateTime<Utc>,
}