use core::fmt;
use serde::{Deserialize, Serialize};
use serde_with::{hex::Hex, serde_as};
use zksync_object_store::{serialize_using_bincode, Bucket, StoredObject};
use zksync_types::{tee_types::TeeType, L1BatchNumber};
#[serde_as]
#[derive(Clone, PartialEq, Serialize, Deserialize)]
pub struct L1BatchTeeProofForL1 {
#[serde_as(as = "Hex")]
pub signature: Vec<u8>,
#[serde_as(as = "Hex")]
pub pubkey: Vec<u8>,
#[serde_as(as = "Hex")]
pub proof: Vec<u8>,
pub tee_type: TeeType,
}
impl fmt::Debug for L1BatchTeeProofForL1 {
fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
formatter
.debug_struct("L1BatchTeeProofForL1")
.finish_non_exhaustive()
}
}
impl StoredObject for L1BatchTeeProofForL1 {
const BUCKET: Bucket = Bucket::ProofsTee;
type Key<'a> = L1BatchNumber;
fn encode_key(key: Self::Key<'_>) -> String {
format!("l1_batch_tee_proof_{key}.bin")
}
serialize_using_bincode!();
}