squawkbox 0.1.4

DLC contract communication over nostr.
Documentation
use ddk::util::ser::ContractPrefix;
use dlc_messages::Message;
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum SquawkboxNotificationKind {
    SendingMessage,
    ReceivedMessage,
    Error,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SquawkboxNotification {
    pub kind: SquawkboxNotificationKind,
    pub counterparty: String,
    pub contract_id: String,
    pub state: u8,
    pub message: Option<String>,
}

pub fn contract_prefix(msg: &Message) -> u8 {
    match msg {
        Message::Offer(_) => ContractPrefix::Offered.into(),
        Message::Accept(_) => ContractPrefix::Accepted.into(),
        Message::Sign(_) => ContractPrefix::Signed.into(),
        Message::OfferChannel(_) => ContractPrefix::Offered.into(),
        Message::AcceptChannel(_) => ContractPrefix::Accepted.into(),
        Message::SignChannel(_) => ContractPrefix::Signed.into(),
        Message::CollaborativeCloseOffer(_) => ContractPrefix::Closed.into(),
        _ => ContractPrefix::Rejected.into(),
    }
}