agglayer_types/aggchain_data/
mod.rs1use agglayer_interop_types::aggchain_proof::AggchainData;
2
3mod aggchain_proof;
4mod global;
5mod multisig;
6
7pub use crate::aggchain_data::{
10 aggchain_proof::{Context as AggchainProofCtx, Payload as AggchainProofPayload},
11 global::{
12 AggchainDataError, Context as CertificateAggchainDataCtx,
13 Payload as CertificateAggchainData,
14 },
15 multisig::{Ctx as MultisigCtx, Payload as MultisigPayload},
16 PayloadWithCtx as CertificateAggchainDataWithCtx,
17};
18
19#[derive(Clone, Debug)]
21pub struct PayloadWithCtx<Payload, Context>(pub Payload, pub Context);
22
23impl TryFrom<AggchainData> for global::Payload {
27 type Error = AggchainDataError;
28 fn try_from(value: AggchainData) -> Result<Self, Self::Error> {
29 Ok(match value {
30 AggchainData::ECDSA { signature } => global::Payload::LegacyEcdsa { signature },
31 AggchainData::Generic {
32 proof,
33 aggchain_params,
34 signature,
35 public_values,
36 } => global::Payload::MultisigAndAggchainProof {
37 aggchain_proof: aggchain_proof::Payload {
38 proof,
39 aggchain_params,
40 public_values,
41 },
42 multisig: multisig::Payload {
43 signatures: vec![Some(*signature.ok_or(AggchainDataError::MissingSignature)?)],
44 },
45 },
46 AggchainData::MultisigOnly { multisig } => {
47 global::Payload::MultisigOnly(multisig.into())
48 }
49 AggchainData::MultisigAndAggchainProof {
50 multisig,
51 aggchain_proof:
52 agglayer_interop_types::aggchain_proof::AggchainProof {
53 proof,
54 aggchain_params,
55 public_values,
56 },
57 } => global::Payload::MultisigAndAggchainProof {
58 multisig: multisig.into(),
59 aggchain_proof: aggchain_proof::Payload {
60 proof,
61 aggchain_params,
62 public_values,
63 },
64 },
65 })
66 }
67}