dchain-sdk-proto 0.9.2

Protobuf stuct defintions for Dchain
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
// @generated
// This file is @generated by prost-build.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AssetInvoice {
    #[prost(string, tag = "1")]
    pub owner: ::prost::alloc::string::String,
    /// The status of the asset,
    /// Init: NOTARISED
    #[prost(enumeration = "Status", tag = "2")]
    pub status: i32,
    /// odp hash
    #[prost(string, tag = "3")]
    pub odp_hash: ::prost::alloc::string::String,
    /// issuance ID: this is the record string by the registry
    /// Updatable only by the owner
    #[prost(string, tag = "4")]
    pub issuance_id: ::prost::alloc::string::String,
    /// The nominal value of the asset at notarisation
    #[prost(message, optional, tag = "5")]
    pub currency_value: ::core::option::Option<CurrencyValue>,
    /// Expiration date / aka the final agreed payment due date in unix timestamp
    /// This maps to InvoiceUpdatedPaymentDueDate in the ODP (updated by the
    /// obligor) For a given date, we consider the end of the day in UTC at 18:00
    #[prost(uint64, tag = "6")]
    pub expiration: u64,
    /// Collateralised reference available if asset has been used as collateral
    /// i.e. the tokenfactory denom
    #[prost(string, tag = "7")]
    pub collateral_ref: ::prost::alloc::string::String,
    /// On notarise, the module to call
    /// The asset data will be passed as arguments
    #[prost(string, tag = "8")]
    pub on_notarise_hook: ::prost::alloc::string::String,
    #[prost(string, tag = "9")]
    pub notarise_proxy: ::prost::alloc::string::String,
}
/// The data expected to update an asset invoice in MsgUpdateNotarisedAsset
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AssetInvoiceUpdateData {
    /// Updates owner if not empty and different
    #[prost(string, tag = "1")]
    pub owner: ::prost::alloc::string::String,
    /// Status always updates
    #[prost(enumeration = "Status", tag = "2")]
    pub status: i32,
    /// Issuance ID updates if not empty and different
    #[prost(string, tag = "3")]
    pub issuance_id: ::prost::alloc::string::String,
    /// Collateral Ref updates if not empty and different
    #[prost(string, tag = "4")]
    pub collateral_ref: ::prost::alloc::string::String,
}
/// The fiat value of notarised asset
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CurrencyValue {
    /// The currency: USD / EUR / etc
    #[prost(enumeration = "Currency", tag = "1")]
    pub currency: i32,
    /// This is exacted to the nearest 2 decimal places
    /// This is the value in sdk.DecFromStr format "20.95" will be 20.95currency
    #[prost(string, tag = "2")]
    pub value: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct AssetInvoiceData {
    /// odp hash
    #[prost(string, tag = "1")]
    pub odp_hash: ::prost::alloc::string::String,
    /// The nominal value of the asset at notarisation
    #[prost(message, optional, tag = "2")]
    pub currency_value: ::core::option::Option<CurrencyValue>,
    /// Expiration date / aka payment due date in unix timestamp
    /// For a given date, we consider the end of the day in UTC at 18:00
    #[prost(uint64, tag = "3")]
    pub expiration: u64,
    /// Discount rate
    /// This is the rate in sdk.DecFromStr format "0.95" for 95%
    #[prost(string, tag = "4")]
    pub discount_rate: ::prost::alloc::string::String,
    /// owner
    #[prost(string, tag = "5")]
    pub owner: ::prost::alloc::string::String,
}
/// The lifecycle status of the asset
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum Status {
    /// Unspecified status
    Unspecified = 0,
    /// The underlying asset has been verified and registered onchain
    Notarised = 1,
    /// The notarised asset has been used as a collateral
    Collateralised = 2,
    /// The asset has been cancelled/delisted from the depository
    Matured = 3,
}
impl Status {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::Unspecified => "STATUS_UNSPECIFIED",
            Self::Notarised => "NOTARISED",
            Self::Collateralised => "COLLATERALISED",
            Self::Matured => "MATURED",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "STATUS_UNSPECIFIED" => Some(Self::Unspecified),
            "NOTARISED" => Some(Self::Notarised),
            "COLLATERALISED" => Some(Self::Collateralised),
            "MATURED" => Some(Self::Matured),
            _ => None,
        }
    }
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum Currency {
    /// Unspecified currency
    Unspecified = 0,
    /// Euro
    Eur = 1,
    /// US Dollar
    Usd = 2,
    /// British Pound
    Gbp = 3,
}
impl Currency {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::Unspecified => "CURRENCY_UNSPECIFIED",
            Self::Eur => "EUR",
            Self::Usd => "USD",
            Self::Gbp => "GBP",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "CURRENCY_UNSPECIFIED" => Some(Self::Unspecified),
            "EUR" => Some(Self::Eur),
            "USD" => Some(Self::Usd),
            "GBP" => Some(Self::Gbp),
            _ => None,
        }
    }
}
/// Emitted on Notarise Msg
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EventNotarise {
    /// The id of the notary info
    #[prost(uint64, tag = "1")]
    pub id: u64,
    /// The id of the notarised asset created
    #[prost(string, tag = "2")]
    pub notarised_asset_id: ::prost::alloc::string::String,
    /// The amount of udt burned as notarisation fee
    #[prost(message, optional, tag = "3")]
    pub fee_burnt: ::core::option::Option<super::super::super::cosmos::base::v1beta1::Coin>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EventUpdateNotarisedAsset {
    /// The id of the notarised asset
    #[prost(string, tag = "1")]
    pub notarised_asset_id: ::prost::alloc::string::String,
}
/// Emitted on decentralised application registration of a notary info
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EventRegisterNotaryInfo {
    /// The id of the notary info
    #[prost(uint64, tag = "1")]
    pub id: u64,
    /// The address used to create this object and can be used to update it
    #[prost(string, tag = "2")]
    pub notary_info_admin: ::prost::alloc::string::String,
    /// The asset type id
    #[prost(uint64, tag = "3")]
    pub asset_type_id: u64,
}
/// Emitted on both updates: VerificationMechanism and PostVerificationAction
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EventUpdateNotaryInfo {
    /// The id of the notary info
    #[prost(uint64, tag = "1")]
    pub id: u64,
    /// Caller Tx ExtensionOption VP Route and additional request parameters in
    /// AnteHandler
    #[prost(message, optional, tag = "2")]
    pub caller_route_and_additional_req:
        ::core::option::Option<super::super::vcv::v1::RouteAndAdditionalReq>,
    /// Asset Route and additional request params
    #[prost(message, optional, tag = "3")]
    pub asset_route_and_additional_req:
        ::core::option::Option<super::super::vcv::v1::RouteAndAdditionalReq>,
}
/// Emitted on notary info deletion
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct EventDeleteNotaryInfo {
    /// The id of the notary info
    #[prost(uint64, tag = "1")]
    pub id: u64,
}
/// Emitted on notary info admin update
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EventUpdateNotaryInfoAdmin {
    /// The id of the notary info
    #[prost(uint64, tag = "1")]
    pub id: u64,
    /// The address used to create this object and can be used to update it
    #[prost(string, tag = "2")]
    pub new_notary_info_admin: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GenesisState {
    /// The mapping of the notary info ID to the actual NotaryInfo struct
    /// This is updated by registering NotaryInfo and used for users in notarise
    /// transactions
    #[prost(map = "uint64, message", tag = "1")]
    pub notary_info_map: ::std::collections::HashMap<u64, NotaryInfo>,
    /// The next notarise object ID
    #[prost(uint64, tag = "2")]
    pub next_notary_info_id: u64,
    /// The mapping of the notarised asset ID to the actual NotarisedAsset struct
    #[prost(map = "string, message", tag = "3")]
    pub notarised_asset_map:
        ::std::collections::HashMap<::prost::alloc::string::String, NotarisedAsset>,
    /// The mapping of asset type ID to asset type name
    #[prost(map = "uint64, string", tag = "4")]
    pub asset_type_map: ::std::collections::HashMap<u64, ::prost::alloc::string::String>,
    /// Currency conversion rates to EUR (e.g., "USD" -> "0.85")
    /// Currency is Enum in d.notary.v1.Currency
    #[prost(map = "int32, message", tag = "5")]
    pub currency_conversion_rates: ::std::collections::HashMap<i32, ConversionRate>,
    /// EUR price in udt (e.g., 1 Euro = 250,000,000udt)
    #[prost(string, tag = "6")]
    pub eur_price_in_udt: ::prost::alloc::string::String,
    /// The fee rate for notarisation (e.g., 0.01 for 1%)
    #[prost(string, tag = "7")]
    pub notarisation_fee_rate: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ConversionRate {
    #[prost(string, tag = "1")]
    pub conversiont_rate: ::prost::alloc::string::String,
}
/// The verifier contract type to be stored in the module
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NotaryInfo {
    /// The address used to create this object and can be used to update it
    #[prost(string, tag = "1")]
    pub notary_info_admin: ::prost::alloc::string::String,
    /// Asset Type ID: the key to the type of asset
    #[prost(uint64, tag = "2")]
    pub asset_type_id: u64,
    /// Caller Tx ExtensionOption VP Route and additional request parameters in
    /// AnteHandler
    #[prost(message, optional, tag = "3")]
    pub caller_route_and_additional_req:
        ::core::option::Option<super::super::vcv::v1::RouteAndAdditionalReq>,
    /// Asset Route and additional request params
    #[prost(message, optional, tag = "4")]
    pub asset_route_and_additional_req:
        ::core::option::Option<super::super::vcv::v1::RouteAndAdditionalReq>,
}
/// Notarised Asset wrapper that can contain different asset types
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NotarisedAsset {
    #[prost(oneof = "notarised_asset::Asset", tags = "1")]
    pub asset: ::core::option::Option<notarised_asset::Asset>,
}
/// Nested message and enum types in `NotarisedAsset`.
pub mod notarised_asset {
    #[derive(Clone, PartialEq, ::prost::Oneof)]
    pub enum Asset {
        /// Future asset types can be added here:
        /// AssetBond asset_bond = 2;
        /// AssetEquity asset_equity = 3;
        #[prost(message, tag = "1")]
        AssetInvoice(super::AssetInvoice),
    }
}
// ========= NotaryInfo =========

#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GetNotaryInfoByIdRequest {
    #[prost(uint64, tag = "1")]
    pub id: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetNotaryInfoByIdResponse {
    #[prost(message, optional, tag = "1")]
    pub notary_info: ::core::option::Option<NotaryInfo>,
    /// VP Route Request
    #[prost(message, optional, tag = "2")]
    pub vcv_route_and_additional_req:
        ::core::option::Option<super::super::vcv::v1::RouteAndAdditionalReq>,
}
/// ========= NotaryInfoNextId =========
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GetNotaryInfoNextIdRequest {}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GetNotaryInfoNextIdResponse {
    #[prost(uint64, tag = "1")]
    pub next_id: u64,
}
/// ========= Currency Conversion Rate =========
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetCurrencyConversionRateRequest {
    #[prost(string, tag = "1")]
    pub currency: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetCurrencyConversionRateResponse {
    #[prost(string, tag = "1")]
    pub rate: ::prost::alloc::string::String,
}
/// ========= EUR Price In Udt =========
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GetEurPriceInUdtRequest {}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetEurPriceInUdtResponse {
    #[prost(string, tag = "1")]
    pub price: ::prost::alloc::string::String,
}
/// ========= Notarisation Fee Rate =========
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GetNotarisationFeeRateRequest {}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetNotarisationFeeRateResponse {
    #[prost(string, tag = "1")]
    pub rate: ::prost::alloc::string::String,
}
/// ========= Notarised Asset =========
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetNotarisedAssetRequest {
    #[prost(string, tag = "1")]
    pub asset_id: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetNotarisedAssetResponse {
    #[prost(message, optional, tag = "1")]
    pub notarised_asset: ::core::option::Option<NotarisedAsset>,
}
/// ========= Notarised Assets (Paginated) =========
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetNotarisedAssetsRequest {
    #[prost(message, optional, tag = "1")]
    pub pagination:
        ::core::option::Option<super::super::super::cosmos::base::query::v1beta1::PageRequest>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetNotarisedAssetsResponse {
    #[prost(message, repeated, tag = "1")]
    pub notarised_assets: ::prost::alloc::vec::Vec<NotarisedAssetEntry>,
    #[prost(message, optional, tag = "2")]
    pub pagination:
        ::core::option::Option<super::super::super::cosmos::base::query::v1beta1::PageResponse>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct NotarisedAssetEntry {
    #[prost(string, tag = "1")]
    pub asset_id: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "2")]
    pub notarised_asset: ::core::option::Option<NotarisedAsset>,
}
/// ---------------------------------- GetAuthority
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct QueryGetAuthorityRequest {}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct QueryGetAuthorityResponse {
    #[prost(string, tag = "1")]
    pub authority: ::prost::alloc::string::String,
}
/// ========= Notarise =========
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MsgNotarise {
    #[prost(string, tag = "1")]
    pub sender: ::prost::alloc::string::String,
    /// NotaryInfoId
    #[prost(uint64, tag = "2")]
    pub notary_info_id: u64,
    /// Data to be verified
    #[prost(bytes = "vec", tag = "3")]
    pub verifier_input: ::prost::alloc::vec::Vec<u8>,
    /// Notarised asset input
    #[prost(bytes = "vec", tag = "4")]
    pub asset_data: ::prost::alloc::vec::Vec<u8>,
    /// owner of the notarised asset if not sender
    #[prost(string, tag = "5")]
    pub owner: ::prost::alloc::string::String,
    /// Max notarise fee acceptable by the sender, if not provided, no limit
    #[prost(message, optional, tag = "6")]
    pub max_notarise_fee: ::core::option::Option<super::super::super::cosmos::base::v1beta1::Coin>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MsgNotariseResponse {
    /// Notary Info Id
    #[prost(uint64, tag = "1")]
    pub notary_info_id: u64,
    /// Notarise Asset Type ID
    #[prost(uint64, tag = "2")]
    pub asset_type_id: u64,
    /// Notarise result: the id of the notarised asset created
    #[prost(string, tag = "3")]
    pub notarised_asset_id: ::prost::alloc::string::String,
}
// ========= Update Notarised Asset =========

#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MsgUpdateNotarisedAsset {
    #[prost(string, tag = "1")]
    pub sender: ::prost::alloc::string::String,
    /// Notarised Asset ID
    #[prost(string, tag = "2")]
    pub notarised_asset_id: ::prost::alloc::string::String,
    /// New asset data
    #[prost(bytes = "vec", tag = "3")]
    pub new_asset_data: ::prost::alloc::vec::Vec<u8>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MsgUpdateNotarisedAssetResponse {
    /// The Updated Notarised Asset ID
    #[prost(string, tag = "1")]
    pub updated_notarised_asset_id: ::prost::alloc::string::String,
}
/// ========= Registration =========
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MsgRegisterNotaryInfo {
    #[prost(string, tag = "1")]
    pub sender: ::prost::alloc::string::String,
    /// Notary Info Admin
    #[prost(string, tag = "2")]
    pub notary_info_admin: ::prost::alloc::string::String,
    /// Caller Verifier Route Request
    #[prost(message, optional, tag = "3")]
    pub caller_route_and_additional_req:
        ::core::option::Option<super::super::vcv::v1::RouteAndAdditionalReq>,
    /// Asset Verifier Route Request
    #[prost(message, optional, tag = "4")]
    pub asset_route_and_additional_req:
        ::core::option::Option<super::super::vcv::v1::RouteAndAdditionalReq>,
    /// Notarise Asset Type ID
    #[prost(uint64, tag = "5")]
    pub asset_type_id: u64,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MsgRegisterNotaryInfoResponse {
    #[prost(uint64, tag = "1")]
    pub notary_info_id: u64,
}
/// ========= Update Admin =========
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MsgUpdateAdmin {
    /// message sender (the controller of this info).
    #[prost(string, tag = "1")]
    pub sender: ::prost::alloc::string::String,
    /// NotaryInfoId
    #[prost(uint64, tag = "2")]
    pub notary_info_id: u64,
    /// New admin
    #[prost(string, tag = "3")]
    pub new_admin: ::prost::alloc::string::String,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MsgUpdateAdminResponse {}
// ========= Update notary info =========

#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MsgUpdateVerifierRoutes {
    #[prost(string, tag = "1")]
    pub sender: ::prost::alloc::string::String,
    /// NotaryInfoId
    #[prost(uint64, tag = "2")]
    pub notary_info_id: u64,
    /// Caller VP Route and Requirements
    #[prost(message, optional, tag = "3")]
    pub caller_route_and_additional_req:
        ::core::option::Option<super::super::vcv::v1::RouteAndAdditionalReq>,
    /// Asset VP Route and Requirements
    #[prost(message, optional, tag = "4")]
    pub asset_route_and_additional_req:
        ::core::option::Option<super::super::vcv::v1::RouteAndAdditionalReq>,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MsgUpdateVerifierRoutesResponse {}
/// ========= Remove Notary Info =========
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MsgRemoveNotaryInfo {
    /// message sender (the controller of this info).
    #[prost(string, tag = "1")]
    pub sender: ::prost::alloc::string::String,
    /// NotaryInfoId
    #[prost(uint64, tag = "2")]
    pub notary_info_id: u64,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MsgRemoveNotaryInfoResponse {
    /// id of the removed notary Info
    #[prost(uint64, tag = "1")]
    pub notary_info_id: u64,
}
/// ========= Set Currency Conversion Rate =========
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MsgSetCurrencyConversionRate {
    /// message sender (must be authorized)
    #[prost(string, tag = "1")]
    pub sender: ::prost::alloc::string::String,
    /// Currency code (e.g., "USD", "GBP")
    #[prost(string, tag = "2")]
    pub currency: ::prost::alloc::string::String,
    /// Conversion rate to EUR as a decimal string
    #[prost(string, tag = "3")]
    pub rate: ::prost::alloc::string::String,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MsgSetCurrencyConversionRateResponse {}
/// ========= Set EUR Price In Udt =========
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MsgSetEurPriceInUdt {
    /// message sender (must be authorized)
    #[prost(string, tag = "1")]
    pub sender: ::prost::alloc::string::String,
    /// Price in udt as a decimal string
    #[prost(string, tag = "2")]
    pub price: ::prost::alloc::string::String,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MsgSetEurPriceInUdtResponse {}
/// ========= Set Notarisation Fee Rate =========
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MsgSetNotarisationFeeRate {
    #[prost(string, tag = "1")]
    pub sender: ::prost::alloc::string::String,
    /// Fee rate as a decimal string (e.g., "0.01" for 1%)
    #[prost(string, tag = "2")]
    pub rate: ::prost::alloc::string::String,
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MsgSetNotarisationFeeRateResponse {}
include!("d.notary.v1.tonic.rs");
// @@protoc_insertion_point(module)