xmtp_proto/gen/
xmtp.xmtpv4.envelopes.rs

1// This file is @generated by prost-build.
2/// A report of the payers and nodes that sent messages in a given range of messages
3#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4pub struct PayerReport {
5    /// The originator this report is referring to
6    #[prost(uint32, tag = "1")]
7    pub originator_node_id: u32,
8    /// The sequence_id that the report starts at \[exclusive\]
9    #[prost(uint64, tag = "2")]
10    pub start_sequence_id: u64,
11    /// The sequence_id that the report ends at \[inclusive\]
12    #[prost(uint64, tag = "3")]
13    pub end_sequence_id: u64,
14    /// The end timestamp of the report
15    #[prost(uint32, tag = "4")]
16    pub end_minute_since_epoch: u32,
17    /// The merkle root of the payer balance diff tree
18    #[prost(bytes = "vec", tag = "5")]
19    pub payers_merkle_root: ::prost::alloc::vec::Vec<u8>,
20    /// The node IDs that are active in the network at the time of the report
21    #[prost(uint32, repeated, tag = "6")]
22    pub active_node_ids: ::prost::alloc::vec::Vec<u32>,
23}
24impl ::prost::Name for PayerReport {
25    const NAME: &'static str = "PayerReport";
26    const PACKAGE: &'static str = "xmtp.xmtpv4.envelopes";
27    fn full_name() -> ::prost::alloc::string::String {
28        "xmtp.xmtpv4.envelopes.PayerReport".into()
29    }
30    fn type_url() -> ::prost::alloc::string::String {
31        "/xmtp.xmtpv4.envelopes.PayerReport".into()
32    }
33}
34#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
35pub struct NodeSignature {
36    #[prost(uint32, tag = "1")]
37    pub node_id: u32,
38    #[prost(message, optional, tag = "2")]
39    pub signature: ::core::option::Option<
40        super::super::identity::associations::RecoverableEcdsaSignature,
41    >,
42}
43impl ::prost::Name for NodeSignature {
44    const NAME: &'static str = "NodeSignature";
45    const PACKAGE: &'static str = "xmtp.xmtpv4.envelopes";
46    fn full_name() -> ::prost::alloc::string::String {
47        "xmtp.xmtpv4.envelopes.NodeSignature".into()
48    }
49    fn type_url() -> ::prost::alloc::string::String {
50        "/xmtp.xmtpv4.envelopes.NodeSignature".into()
51    }
52}
53/// An attestation of a payer report
54#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
55pub struct PayerReportAttestation {
56    /// The ID of the report, determined by hashing the report contents
57    #[prost(bytes = "vec", tag = "1")]
58    pub report_id: ::prost::alloc::vec::Vec<u8>,
59    /// The signature of the attester
60    #[prost(message, optional, tag = "2")]
61    pub signature: ::core::option::Option<NodeSignature>,
62}
63impl ::prost::Name for PayerReportAttestation {
64    const NAME: &'static str = "PayerReportAttestation";
65    const PACKAGE: &'static str = "xmtp.xmtpv4.envelopes";
66    fn full_name() -> ::prost::alloc::string::String {
67        "xmtp.xmtpv4.envelopes.PayerReportAttestation".into()
68    }
69    fn type_url() -> ::prost::alloc::string::String {
70        "/xmtp.xmtpv4.envelopes.PayerReportAttestation".into()
71    }
72}
73/// The last seen entry per originator. Originators that have not been seen are omitted.
74#[derive(Clone, PartialEq, ::prost::Message)]
75pub struct Cursor {
76    #[prost(map = "uint32, uint64", tag = "1")]
77    pub node_id_to_sequence_id: ::std::collections::HashMap<u32, u64>,
78}
79impl ::prost::Name for Cursor {
80    const NAME: &'static str = "Cursor";
81    const PACKAGE: &'static str = "xmtp.xmtpv4.envelopes";
82    fn full_name() -> ::prost::alloc::string::String {
83        "xmtp.xmtpv4.envelopes.Cursor".into()
84    }
85    fn type_url() -> ::prost::alloc::string::String {
86        "/xmtp.xmtpv4.envelopes.Cursor".into()
87    }
88}
89/// Data visible to the server that has been authenticated by the client.
90#[derive(Clone, PartialEq, ::prost::Message)]
91pub struct AuthenticatedData {
92    /// Do NOT reuse tag 1 — previously used by target_originator
93    #[prost(bytes = "vec", tag = "2")]
94    pub target_topic: ::prost::alloc::vec::Vec<u8>,
95    /// Do NOT reuse tag 4 — previously used by is_commit
96    #[prost(message, optional, tag = "3")]
97    pub depends_on: ::core::option::Option<Cursor>,
98}
99impl ::prost::Name for AuthenticatedData {
100    const NAME: &'static str = "AuthenticatedData";
101    const PACKAGE: &'static str = "xmtp.xmtpv4.envelopes";
102    fn full_name() -> ::prost::alloc::string::String {
103        "xmtp.xmtpv4.envelopes.AuthenticatedData".into()
104    }
105    fn type_url() -> ::prost::alloc::string::String {
106        "/xmtp.xmtpv4.envelopes.AuthenticatedData".into()
107    }
108}
109#[derive(Clone, PartialEq, ::prost::Message)]
110pub struct ClientEnvelope {
111    #[prost(message, optional, tag = "1")]
112    pub aad: ::core::option::Option<AuthenticatedData>,
113    #[prost(oneof = "client_envelope::Payload", tags = "2, 3, 4, 5, 6, 7")]
114    pub payload: ::core::option::Option<client_envelope::Payload>,
115}
116/// Nested message and enum types in `ClientEnvelope`.
117pub mod client_envelope {
118    #[derive(Clone, PartialEq, ::prost::Oneof)]
119    pub enum Payload {
120        #[prost(message, tag = "2")]
121        GroupMessage(super::super::super::mls::api::v1::GroupMessageInput),
122        #[prost(message, tag = "3")]
123        WelcomeMessage(super::super::super::mls::api::v1::WelcomeMessageInput),
124        #[prost(message, tag = "4")]
125        UploadKeyPackage(super::super::super::mls::api::v1::UploadKeyPackageRequest),
126        #[prost(message, tag = "5")]
127        IdentityUpdate(super::super::super::identity::associations::IdentityUpdate),
128        #[prost(message, tag = "6")]
129        PayerReport(super::PayerReport),
130        #[prost(message, tag = "7")]
131        PayerReportAttestation(super::PayerReportAttestation),
132    }
133}
134impl ::prost::Name for ClientEnvelope {
135    const NAME: &'static str = "ClientEnvelope";
136    const PACKAGE: &'static str = "xmtp.xmtpv4.envelopes";
137    fn full_name() -> ::prost::alloc::string::String {
138        "xmtp.xmtpv4.envelopes.ClientEnvelope".into()
139    }
140    fn type_url() -> ::prost::alloc::string::String {
141        "/xmtp.xmtpv4.envelopes.ClientEnvelope".into()
142    }
143}
144/// Wraps client envelope with payer signature
145#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
146pub struct PayerEnvelope {
147    /// Protobuf serialized
148    #[prost(bytes = "vec", tag = "1")]
149    pub unsigned_client_envelope: ::prost::alloc::vec::Vec<u8>,
150    #[prost(message, optional, tag = "2")]
151    pub payer_signature: ::core::option::Option<
152        super::super::identity::associations::RecoverableEcdsaSignature,
153    >,
154    #[prost(uint32, tag = "3")]
155    pub target_originator: u32,
156    #[prost(uint32, tag = "4")]
157    pub message_retention_days: u32,
158}
159impl ::prost::Name for PayerEnvelope {
160    const NAME: &'static str = "PayerEnvelope";
161    const PACKAGE: &'static str = "xmtp.xmtpv4.envelopes";
162    fn full_name() -> ::prost::alloc::string::String {
163        "xmtp.xmtpv4.envelopes.PayerEnvelope".into()
164    }
165    fn type_url() -> ::prost::alloc::string::String {
166        "/xmtp.xmtpv4.envelopes.PayerEnvelope".into()
167    }
168}
169/// For blockchain envelopes, these fields are set by the smart contract
170#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
171pub struct UnsignedOriginatorEnvelope {
172    #[prost(uint32, tag = "1")]
173    pub originator_node_id: u32,
174    #[prost(uint64, tag = "2")]
175    pub originator_sequence_id: u64,
176    #[prost(int64, tag = "3")]
177    pub originator_ns: i64,
178    #[prost(bytes = "vec", tag = "4")]
179    pub payer_envelope_bytes: ::prost::alloc::vec::Vec<u8>,
180    /// The base fee for the message in picodollars
181    #[prost(uint64, tag = "5")]
182    pub base_fee_picodollars: u64,
183    /// The congestion fee for the message in picodollars
184    #[prost(uint64, tag = "6")]
185    pub congestion_fee_picodollars: u64,
186    #[prost(uint64, tag = "7")]
187    pub expiry_unixtime: u64,
188}
189impl ::prost::Name for UnsignedOriginatorEnvelope {
190    const NAME: &'static str = "UnsignedOriginatorEnvelope";
191    const PACKAGE: &'static str = "xmtp.xmtpv4.envelopes";
192    fn full_name() -> ::prost::alloc::string::String {
193        "xmtp.xmtpv4.envelopes.UnsignedOriginatorEnvelope".into()
194    }
195    fn type_url() -> ::prost::alloc::string::String {
196        "/xmtp.xmtpv4.envelopes.UnsignedOriginatorEnvelope".into()
197    }
198}
199/// An alternative to a signature for blockchain payloads
200#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
201pub struct BlockchainProof {
202    #[prost(bytes = "vec", tag = "1")]
203    pub transaction_hash: ::prost::alloc::vec::Vec<u8>,
204}
205impl ::prost::Name for BlockchainProof {
206    const NAME: &'static str = "BlockchainProof";
207    const PACKAGE: &'static str = "xmtp.xmtpv4.envelopes";
208    fn full_name() -> ::prost::alloc::string::String {
209        "xmtp.xmtpv4.envelopes.BlockchainProof".into()
210    }
211    fn type_url() -> ::prost::alloc::string::String {
212        "/xmtp.xmtpv4.envelopes.BlockchainProof".into()
213    }
214}
215/// Signed originator envelope
216#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
217pub struct OriginatorEnvelope {
218    /// Protobuf serialized
219    #[prost(bytes = "vec", tag = "1")]
220    pub unsigned_originator_envelope: ::prost::alloc::vec::Vec<u8>,
221    #[prost(oneof = "originator_envelope::Proof", tags = "2, 3")]
222    pub proof: ::core::option::Option<originator_envelope::Proof>,
223}
224/// Nested message and enum types in `OriginatorEnvelope`.
225pub mod originator_envelope {
226    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
227    pub enum Proof {
228        #[prost(message, tag = "2")]
229        OriginatorSignature(
230            super::super::super::identity::associations::RecoverableEcdsaSignature,
231        ),
232        #[prost(message, tag = "3")]
233        BlockchainProof(super::BlockchainProof),
234    }
235}
236impl ::prost::Name for OriginatorEnvelope {
237    const NAME: &'static str = "OriginatorEnvelope";
238    const PACKAGE: &'static str = "xmtp.xmtpv4.envelopes";
239    fn full_name() -> ::prost::alloc::string::String {
240        "xmtp.xmtpv4.envelopes.OriginatorEnvelope".into()
241    }
242    fn type_url() -> ::prost::alloc::string::String {
243        "/xmtp.xmtpv4.envelopes.OriginatorEnvelope".into()
244    }
245}