#[macro_use]
extern crate tracing;
mod config;
mod contracts;
mod engine;
mod p2p;
mod pool;
mod room;
mod rpc;
mod scan;
#[cfg(feature = "request")]
pub mod request;
pub use config::Config;
pub use contracts::{RoomMarket, SimpleGame, Token};
pub use engine::Engine;
pub use scan::chain_channel;
pub use serde_json::{json, Value};
pub use tdn::{
prelude::{GroupId, Peer, PeerId, PeerKey, SendType},
types::rpc::rpc_response,
};
pub use z4_types::*;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize)]
struct P2pMessage<'a> {
pub method: &'a str,
pub params: Vec<u8>,
}
pub enum ChainMessage {
CreateRoom(
RoomId,
GameId,
bool,
Address,
PeerId,
[u8; 32],
[u8; 32],
[u8; 32],
),
JoinRoom(RoomId, Address, PeerId, [u8; 32]),
StartRoom(RoomId, Address),
AcceptRoom(RoomId, PeerId, String, Vec<u8>),
GameOverRoom(RoomId, Vec<u8>, Vec<u8>),
ChainOverRoom(RoomId),
Reprove,
}
pub enum PoolMessage {
AcceptRoom(RoomId, Vec<u8>),
OverRoom(RoomId, Vec<u8>, Vec<u8>),
Submitted(RoomId),
}