use crate::capabilities::Capabilities;
use crate::data_hash::DataHash;
use crate::message::record::AchievementRecord;
use bloop_protocol_derive::{Decode, Encode, Payload};
#[derive(Clone, Debug, Decode, Encode, Eq, Payload, PartialEq)]
#[bloop(opcode = 0x02)]
pub struct ServerHandshake {
pub accepted_version: u8,
pub capabilities: Capabilities,
}
#[derive(Clone, Debug, Decode, Encode, Eq, Payload, PartialEq)]
#[bloop(opcode = 0x04)]
pub struct AuthenticationAccepted;
#[derive(Clone, Debug, Decode, Encode, Eq, Payload, PartialEq)]
#[bloop(opcode = 0x06)]
pub struct Pong;
#[derive(Clone, Debug, Decode, Encode, Eq, Payload, PartialEq)]
#[bloop(opcode = 0x09)]
pub struct BloopAccepted {
#[bloop(count = u8)]
pub achievements: Vec<AchievementRecord>,
}
#[derive(Clone, Debug, Decode, Encode, Eq, Payload, PartialEq)]
#[bloop(opcode = 0x0b)]
pub struct AudioData {
#[bloop(count = u32)]
pub data: Vec<u8>,
}
#[derive(Clone, Debug, Decode, Encode, Eq, Payload, PartialEq)]
#[bloop(opcode = 0x0d)]
pub struct PreloadMatch;
#[derive(Clone, Debug, Decode, Encode, Eq, Payload, PartialEq)]
#[bloop(opcode = 0x0e)]
pub struct PreloadMismatch {
pub audio_manifest_hash: DataHash,
#[bloop(count = u32)]
pub achievements: Vec<AchievementRecord>,
}