1#[derive(Clone, PartialEq, ::prost::Message)]
3pub struct BalanceCommitment {
4    #[prost(bytes = "vec", tag = "1")]
5    pub inner: ::prost::alloc::vec::Vec<u8>,
6}
7impl ::prost::Name for BalanceCommitment {
8    const NAME: &'static str = "BalanceCommitment";
9    const PACKAGE: &'static str = "penumbra.core.asset.v1";
10    fn full_name() -> ::prost::alloc::string::String {
11        "penumbra.core.asset.v1.BalanceCommitment".into()
12    }
13    fn type_url() -> ::prost::alloc::string::String {
14        "/penumbra.core.asset.v1.BalanceCommitment".into()
15    }
16}
17#[derive(Clone, PartialEq, ::prost::Message)]
19pub struct AssetId {
20    #[prost(bytes = "vec", tag = "1")]
22    pub inner: ::prost::alloc::vec::Vec<u8>,
23    #[prost(string, tag = "2")]
31    pub alt_bech32m: ::prost::alloc::string::String,
32    #[prost(string, tag = "3")]
39    pub alt_base_denom: ::prost::alloc::string::String,
40}
41impl ::prost::Name for AssetId {
42    const NAME: &'static str = "AssetId";
43    const PACKAGE: &'static str = "penumbra.core.asset.v1";
44    fn full_name() -> ::prost::alloc::string::String {
45        "penumbra.core.asset.v1.AssetId".into()
46    }
47    fn type_url() -> ::prost::alloc::string::String {
48        "/penumbra.core.asset.v1.AssetId".into()
49    }
50}
51#[derive(Clone, PartialEq, ::prost::Message)]
52pub struct Denom {
53    #[prost(string, tag = "1")]
54    pub denom: ::prost::alloc::string::String,
55}
56impl ::prost::Name for Denom {
57    const NAME: &'static str = "Denom";
58    const PACKAGE: &'static str = "penumbra.core.asset.v1";
59    fn full_name() -> ::prost::alloc::string::String {
60        "penumbra.core.asset.v1.Denom".into()
61    }
62    fn type_url() -> ::prost::alloc::string::String {
63        "/penumbra.core.asset.v1.Denom".into()
64    }
65}
66#[derive(Clone, PartialEq, ::prost::Message)]
68pub struct Metadata {
69    #[prost(string, tag = "1")]
70    pub description: ::prost::alloc::string::String,
71    #[prost(message, repeated, tag = "2")]
73    pub denom_units: ::prost::alloc::vec::Vec<DenomUnit>,
74    #[prost(string, tag = "3")]
76    pub base: ::prost::alloc::string::String,
77    #[prost(string, tag = "4")]
80    pub display: ::prost::alloc::string::String,
81    #[prost(string, tag = "5")]
83    pub name: ::prost::alloc::string::String,
84    #[prost(string, tag = "6")]
87    pub symbol: ::prost::alloc::string::String,
88    #[prost(message, optional, tag = "1984")]
90    pub penumbra_asset_id: ::core::option::Option<AssetId>,
91    #[prost(message, repeated, tag = "1985")]
92    pub images: ::prost::alloc::vec::Vec<AssetImage>,
93    #[prost(uint64, tag = "1986")]
97    pub priority_score: u64,
98    #[prost(message, repeated, tag = "1987")]
101    pub badges: ::prost::alloc::vec::Vec<AssetImage>,
102    #[prost(string, tag = "1988")]
104    pub coingecko_id: ::prost::alloc::string::String,
105}
106impl ::prost::Name for Metadata {
107    const NAME: &'static str = "Metadata";
108    const PACKAGE: &'static str = "penumbra.core.asset.v1";
109    fn full_name() -> ::prost::alloc::string::String {
110        "penumbra.core.asset.v1.Metadata".into()
111    }
112    fn type_url() -> ::prost::alloc::string::String {
113        "/penumbra.core.asset.v1.Metadata".into()
114    }
115}
116#[derive(Clone, PartialEq, ::prost::Message)]
118pub struct DenomUnit {
119    #[prost(string, tag = "1")]
121    pub denom: ::prost::alloc::string::String,
122    #[prost(uint32, tag = "2")]
128    pub exponent: u32,
129    #[prost(string, repeated, tag = "3")]
131    pub aliases: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
132}
133impl ::prost::Name for DenomUnit {
134    const NAME: &'static str = "DenomUnit";
135    const PACKAGE: &'static str = "penumbra.core.asset.v1";
136    fn full_name() -> ::prost::alloc::string::String {
137        "penumbra.core.asset.v1.DenomUnit".into()
138    }
139    fn type_url() -> ::prost::alloc::string::String {
140        "/penumbra.core.asset.v1.DenomUnit".into()
141    }
142}
143#[derive(Clone, PartialEq, ::prost::Message)]
144pub struct Value {
145    #[prost(message, optional, tag = "1")]
146    pub amount: ::core::option::Option<super::super::num::v1::Amount>,
147    #[prost(message, optional, tag = "2")]
148    pub asset_id: ::core::option::Option<AssetId>,
149}
150impl ::prost::Name for Value {
151    const NAME: &'static str = "Value";
152    const PACKAGE: &'static str = "penumbra.core.asset.v1";
153    fn full_name() -> ::prost::alloc::string::String {
154        "penumbra.core.asset.v1.Value".into()
155    }
156    fn type_url() -> ::prost::alloc::string::String {
157        "/penumbra.core.asset.v1.Value".into()
158    }
159}
160#[derive(Clone, PartialEq, ::prost::Message)]
161pub struct Balance {
162    #[prost(message, repeated, tag = "1")]
164    pub values: ::prost::alloc::vec::Vec<balance::SignedValue>,
165}
166pub mod balance {
168    #[derive(Clone, PartialEq, ::prost::Message)]
169    pub struct SignedValue {
170        #[prost(message, optional, tag = "1")]
171        pub value: ::core::option::Option<super::Value>,
172        #[prost(bool, tag = "2")]
173        pub negated: bool,
174    }
175    impl ::prost::Name for SignedValue {
176        const NAME: &'static str = "SignedValue";
177        const PACKAGE: &'static str = "penumbra.core.asset.v1";
178        fn full_name() -> ::prost::alloc::string::String {
179            "penumbra.core.asset.v1.Balance.SignedValue".into()
180        }
181        fn type_url() -> ::prost::alloc::string::String {
182            "/penumbra.core.asset.v1.Balance.SignedValue".into()
183        }
184    }
185}
186impl ::prost::Name for Balance {
187    const NAME: &'static str = "Balance";
188    const PACKAGE: &'static str = "penumbra.core.asset.v1";
189    fn full_name() -> ::prost::alloc::string::String {
190        "penumbra.core.asset.v1.Balance".into()
191    }
192    fn type_url() -> ::prost::alloc::string::String {
193        "/penumbra.core.asset.v1.Balance".into()
194    }
195}
196#[derive(Clone, PartialEq, ::prost::Message)]
198pub struct ValueView {
199    #[prost(oneof = "value_view::ValueView", tags = "1, 2")]
200    pub value_view: ::core::option::Option<value_view::ValueView>,
201}
202pub mod value_view {
204    #[derive(Clone, PartialEq, ::prost::Message)]
206    pub struct KnownAssetId {
207        #[prost(message, optional, tag = "1")]
209        pub amount: ::core::option::Option<super::super::super::num::v1::Amount>,
210        #[prost(message, optional, tag = "2")]
212        pub metadata: ::core::option::Option<super::Metadata>,
213        #[prost(message, repeated, tag = "3")]
215        pub equivalent_values: ::prost::alloc::vec::Vec<super::EquivalentValue>,
216        #[prost(message, optional, tag = "4")]
226        pub extended_metadata: ::core::option::Option<::pbjson_types::Any>,
227    }
228    impl ::prost::Name for KnownAssetId {
229        const NAME: &'static str = "KnownAssetId";
230        const PACKAGE: &'static str = "penumbra.core.asset.v1";
231        fn full_name() -> ::prost::alloc::string::String {
232            "penumbra.core.asset.v1.ValueView.KnownAssetId".into()
233        }
234        fn type_url() -> ::prost::alloc::string::String {
235            "/penumbra.core.asset.v1.ValueView.KnownAssetId".into()
236        }
237    }
238    #[derive(Clone, PartialEq, ::prost::Message)]
240    pub struct UnknownAssetId {
241        #[prost(message, optional, tag = "1")]
242        pub amount: ::core::option::Option<super::super::super::num::v1::Amount>,
243        #[prost(message, optional, tag = "2")]
244        pub asset_id: ::core::option::Option<super::AssetId>,
245    }
246    impl ::prost::Name for UnknownAssetId {
247        const NAME: &'static str = "UnknownAssetId";
248        const PACKAGE: &'static str = "penumbra.core.asset.v1";
249        fn full_name() -> ::prost::alloc::string::String {
250            "penumbra.core.asset.v1.ValueView.UnknownAssetId".into()
251        }
252        fn type_url() -> ::prost::alloc::string::String {
253            "/penumbra.core.asset.v1.ValueView.UnknownAssetId".into()
254        }
255    }
256    #[derive(Clone, PartialEq, ::prost::Oneof)]
257    pub enum ValueView {
258        #[prost(message, tag = "1")]
259        KnownAssetId(KnownAssetId),
260        #[prost(message, tag = "2")]
261        UnknownAssetId(UnknownAssetId),
262    }
263}
264impl ::prost::Name for ValueView {
265    const NAME: &'static str = "ValueView";
266    const PACKAGE: &'static str = "penumbra.core.asset.v1";
267    fn full_name() -> ::prost::alloc::string::String {
268        "penumbra.core.asset.v1.ValueView".into()
269    }
270    fn type_url() -> ::prost::alloc::string::String {
271        "/penumbra.core.asset.v1.ValueView".into()
272    }
273}
274#[derive(Clone, PartialEq, ::prost::Message)]
276pub struct AssetImage {
277    #[prost(string, tag = "1")]
279    pub png: ::prost::alloc::string::String,
280    #[prost(string, tag = "2")]
282    pub svg: ::prost::alloc::string::String,
283    #[prost(message, optional, tag = "3")]
284    pub theme: ::core::option::Option<asset_image::Theme>,
285}
286pub mod asset_image {
288    #[derive(Clone, PartialEq, ::prost::Message)]
289    pub struct Theme {
290        #[prost(string, tag = "1")]
292        pub primary_color_hex: ::prost::alloc::string::String,
293        #[prost(bool, tag = "2")]
294        pub circle: bool,
295        #[prost(bool, tag = "3")]
296        pub dark_mode: bool,
297    }
298    impl ::prost::Name for Theme {
299        const NAME: &'static str = "Theme";
300        const PACKAGE: &'static str = "penumbra.core.asset.v1";
301        fn full_name() -> ::prost::alloc::string::String {
302            "penumbra.core.asset.v1.AssetImage.Theme".into()
303        }
304        fn type_url() -> ::prost::alloc::string::String {
305            "/penumbra.core.asset.v1.AssetImage.Theme".into()
306        }
307    }
308}
309impl ::prost::Name for AssetImage {
310    const NAME: &'static str = "AssetImage";
311    const PACKAGE: &'static str = "penumbra.core.asset.v1";
312    fn full_name() -> ::prost::alloc::string::String {
313        "penumbra.core.asset.v1.AssetImage".into()
314    }
315    fn type_url() -> ::prost::alloc::string::String {
316        "/penumbra.core.asset.v1.AssetImage".into()
317    }
318}
319#[derive(Clone, PartialEq, ::prost::Message)]
323pub struct EstimatedPrice {
324    #[prost(message, optional, tag = "1")]
325    pub priced_asset: ::core::option::Option<AssetId>,
326    #[prost(message, optional, tag = "2")]
327    pub numeraire: ::core::option::Option<AssetId>,
328    #[prost(double, tag = "3")]
332    pub numeraire_per_unit: f64,
333    #[prost(uint64, tag = "4")]
335    pub as_of_height: u64,
336}
337impl ::prost::Name for EstimatedPrice {
338    const NAME: &'static str = "EstimatedPrice";
339    const PACKAGE: &'static str = "penumbra.core.asset.v1";
340    fn full_name() -> ::prost::alloc::string::String {
341        "penumbra.core.asset.v1.EstimatedPrice".into()
342    }
343    fn type_url() -> ::prost::alloc::string::String {
344        "/penumbra.core.asset.v1.EstimatedPrice".into()
345    }
346}
347#[derive(Clone, PartialEq, ::prost::Message)]
354pub struct EquivalentValue {
355    #[prost(message, optional, tag = "1")]
357    pub equivalent_amount: ::core::option::Option<super::super::num::v1::Amount>,
358    #[prost(message, optional, tag = "2")]
360    pub numeraire: ::core::option::Option<Metadata>,
361    #[prost(uint64, tag = "3")]
363    pub as_of_height: u64,
364}
365impl ::prost::Name for EquivalentValue {
366    const NAME: &'static str = "EquivalentValue";
367    const PACKAGE: &'static str = "penumbra.core.asset.v1";
368    fn full_name() -> ::prost::alloc::string::String {
369        "penumbra.core.asset.v1.EquivalentValue".into()
370    }
371    fn type_url() -> ::prost::alloc::string::String {
372        "/penumbra.core.asset.v1.EquivalentValue".into()
373    }
374}