1use neutron_std_derive::CosmwasmExt;
2#[allow(clippy::derive_partial_eq_without_eq)]
4#[derive(
5 Clone,
6 PartialEq,
7 Eq,
8 ::prost::Message,
9 ::serde::Serialize,
10 ::serde::Deserialize,
11 ::schemars::JsonSchema,
12 CosmwasmExt,
13)]
14#[proto_message(type_url = "/neutron.revenue.Params")]
15pub struct Params {
16 #[prost(string, tag = "1")]
21 pub reward_asset: ::prost::alloc::string::String,
22 #[prost(message, optional, tag = "2")]
24 pub reward_quote: ::core::option::Option<RewardQuote>,
25 #[prost(message, optional, tag = "3")]
28 pub blocks_performance_requirement: ::core::option::Option<PerformanceRequirement>,
29 #[prost(message, optional, tag = "4")]
32 pub oracle_votes_performance_requirement: ::core::option::Option<PerformanceRequirement>,
33 #[prost(message, optional, tag = "5")]
35 pub payment_schedule_type: ::core::option::Option<PaymentScheduleType>,
36 #[prost(int64, tag = "6")]
38 #[serde(
39 serialize_with = "crate::serde::as_str::serialize",
40 deserialize_with = "crate::serde::as_str::deserialize"
41 )]
42 pub twap_window: i64,
43}
44#[allow(clippy::derive_partial_eq_without_eq)]
46#[derive(
47 Clone,
48 PartialEq,
49 Eq,
50 ::prost::Message,
51 ::serde::Serialize,
52 ::serde::Deserialize,
53 ::schemars::JsonSchema,
54 CosmwasmExt,
55)]
56#[proto_message(type_url = "/neutron.revenue.RewardQuote")]
57pub struct RewardQuote {
58 #[prost(uint64, tag = "1")]
61 #[serde(
62 serialize_with = "crate::serde::as_str::serialize",
63 deserialize_with = "crate::serde::as_str::deserialize"
64 )]
65 pub amount: u64,
66 #[prost(string, tag = "2")]
69 pub asset: ::prost::alloc::string::String,
70}
71#[allow(clippy::derive_partial_eq_without_eq)]
76#[derive(
77 Clone,
78 PartialEq,
79 Eq,
80 ::prost::Message,
81 ::serde::Serialize,
82 ::serde::Deserialize,
83 ::schemars::JsonSchema,
84 CosmwasmExt,
85)]
86#[proto_message(type_url = "/neutron.revenue.PaymentScheduleType")]
87pub struct PaymentScheduleType {
88 #[prost(oneof = "payment_schedule_type::PaymentScheduleType", tags = "4, 5, 6")]
89 pub payment_schedule_type: ::core::option::Option<payment_schedule_type::PaymentScheduleType>,
90}
91pub mod payment_schedule_type {
93 #[allow(clippy::derive_partial_eq_without_eq)]
94 #[derive(
95 Clone,
96 PartialEq,
97 Eq,
98 ::prost::Oneof,
99 ::serde::Serialize,
100 ::serde::Deserialize,
101 ::schemars::JsonSchema,
102 )]
103 pub enum PaymentScheduleType {
104 #[prost(message, tag = "4")]
105 MonthlyPaymentScheduleType(super::MonthlyPaymentScheduleType),
106 #[prost(message, tag = "5")]
107 BlockBasedPaymentScheduleType(super::BlockBasedPaymentScheduleType),
108 #[prost(message, tag = "6")]
109 EmptyPaymentScheduleType(super::EmptyPaymentScheduleType),
110 }
111}
112#[allow(clippy::derive_partial_eq_without_eq)]
114#[derive(
115 Clone,
116 PartialEq,
117 Eq,
118 ::prost::Message,
119 ::serde::Serialize,
120 ::serde::Deserialize,
121 ::schemars::JsonSchema,
122 CosmwasmExt,
123)]
124#[proto_message(type_url = "/neutron.revenue.MonthlyPaymentScheduleType")]
125pub struct MonthlyPaymentScheduleType {}
126#[allow(clippy::derive_partial_eq_without_eq)]
129#[derive(
130 Clone,
131 PartialEq,
132 Eq,
133 ::prost::Message,
134 ::serde::Serialize,
135 ::serde::Deserialize,
136 ::schemars::JsonSchema,
137 CosmwasmExt,
138)]
139#[proto_message(type_url = "/neutron.revenue.BlockBasedPaymentScheduleType")]
140pub struct BlockBasedPaymentScheduleType {
141 #[prost(uint64, tag = "1")]
143 #[serde(
144 serialize_with = "crate::serde::as_str::serialize",
145 deserialize_with = "crate::serde::as_str::deserialize"
146 )]
147 pub blocks_per_period: u64,
148}
149#[allow(clippy::derive_partial_eq_without_eq)]
151#[derive(
152 Clone,
153 PartialEq,
154 Eq,
155 ::prost::Message,
156 ::serde::Serialize,
157 ::serde::Deserialize,
158 ::schemars::JsonSchema,
159 CosmwasmExt,
160)]
161#[proto_message(type_url = "/neutron.revenue.EmptyPaymentScheduleType")]
162pub struct EmptyPaymentScheduleType {}
163#[allow(clippy::derive_partial_eq_without_eq)]
165#[derive(
166 Clone,
167 PartialEq,
168 Eq,
169 ::prost::Message,
170 ::serde::Serialize,
171 ::serde::Deserialize,
172 ::schemars::JsonSchema,
173 CosmwasmExt,
174)]
175#[proto_message(type_url = "/neutron.revenue.PerformanceRequirement")]
176pub struct PerformanceRequirement {
177 #[prost(string, tag = "1")]
180 pub allowed_to_miss: ::prost::alloc::string::String,
181 #[prost(string, tag = "2")]
185 pub required_at_least: ::prost::alloc::string::String,
186}
187#[allow(clippy::derive_partial_eq_without_eq)]
189#[derive(
190 Clone,
191 PartialEq,
192 Eq,
193 ::prost::Message,
194 ::serde::Serialize,
195 ::serde::Deserialize,
196 ::schemars::JsonSchema,
197 CosmwasmExt,
198)]
199#[proto_message(type_url = "/neutron.revenue.GenesisState")]
200pub struct GenesisState {
201 #[prost(message, optional, tag = "1")]
203 pub params: ::core::option::Option<Params>,
204 #[prost(message, optional, tag = "2")]
207 pub payment_schedule: ::core::option::Option<PaymentSchedule>,
208 #[prost(message, repeated, tag = "3")]
210 pub validators: ::prost::alloc::vec::Vec<ValidatorInfo>,
211}
212#[allow(clippy::derive_partial_eq_without_eq)]
219#[derive(
220 Clone,
221 PartialEq,
222 Eq,
223 ::prost::Message,
224 ::serde::Serialize,
225 ::serde::Deserialize,
226 ::schemars::JsonSchema,
227 CosmwasmExt,
228)]
229#[proto_message(type_url = "/neutron.revenue.PaymentSchedule")]
230pub struct PaymentSchedule {
231 #[prost(oneof = "payment_schedule::PaymentSchedule", tags = "1, 2, 3")]
232 pub payment_schedule: ::core::option::Option<payment_schedule::PaymentSchedule>,
233}
234pub mod payment_schedule {
236 #[allow(clippy::derive_partial_eq_without_eq)]
237 #[derive(
238 Clone,
239 PartialEq,
240 Eq,
241 ::prost::Oneof,
242 ::serde::Serialize,
243 ::serde::Deserialize,
244 ::schemars::JsonSchema,
245 )]
246 pub enum PaymentSchedule {
247 #[prost(message, tag = "1")]
248 MonthlyPaymentSchedule(super::MonthlyPaymentSchedule),
249 #[prost(message, tag = "2")]
250 BlockBasedPaymentSchedule(super::BlockBasedPaymentSchedule),
251 #[prost(message, tag = "3")]
252 EmptyPaymentSchedule(super::EmptyPaymentSchedule),
253 }
254}
255#[allow(clippy::derive_partial_eq_without_eq)]
257#[derive(
258 Clone,
259 PartialEq,
260 Eq,
261 ::prost::Message,
262 ::serde::Serialize,
263 ::serde::Deserialize,
264 ::schemars::JsonSchema,
265 CosmwasmExt,
266)]
267#[proto_message(type_url = "/neutron.revenue.ValidatorInfo")]
268pub struct ValidatorInfo {
269 #[prost(string, tag = "1")]
271 pub val_oper_address: ::prost::alloc::string::String,
272 #[prost(uint64, tag = "2")]
274 #[serde(
275 serialize_with = "crate::serde::as_str::serialize",
276 deserialize_with = "crate::serde::as_str::deserialize"
277 )]
278 pub commited_blocks_in_period: u64,
279 #[prost(uint64, tag = "3")]
281 #[serde(
282 serialize_with = "crate::serde::as_str::serialize",
283 deserialize_with = "crate::serde::as_str::deserialize"
284 )]
285 pub commited_oracle_votes_in_period: u64,
286 #[prost(uint64, tag = "4")]
289 #[serde(
290 serialize_with = "crate::serde::as_str::serialize",
291 deserialize_with = "crate::serde::as_str::deserialize"
292 )]
293 pub in_active_valset_for_blocks_in_period: u64,
294}
295#[allow(clippy::derive_partial_eq_without_eq)]
297#[derive(
298 Clone,
299 PartialEq,
300 Eq,
301 ::prost::Message,
302 ::serde::Serialize,
303 ::serde::Deserialize,
304 ::schemars::JsonSchema,
305 CosmwasmExt,
306)]
307#[proto_message(type_url = "/neutron.revenue.MonthlyPaymentSchedule")]
308pub struct MonthlyPaymentSchedule {
309 #[prost(uint64, tag = "1")]
311 #[serde(
312 serialize_with = "crate::serde::as_str::serialize",
313 deserialize_with = "crate::serde::as_str::deserialize"
314 )]
315 pub current_month_start_block: u64,
316 #[prost(uint64, tag = "2")]
318 #[serde(
319 serialize_with = "crate::serde::as_str::serialize",
320 deserialize_with = "crate::serde::as_str::deserialize"
321 )]
322 pub current_month_start_block_ts: u64,
323}
324#[allow(clippy::derive_partial_eq_without_eq)]
327#[derive(
328 Clone,
329 PartialEq,
330 Eq,
331 ::prost::Message,
332 ::serde::Serialize,
333 ::serde::Deserialize,
334 ::schemars::JsonSchema,
335 CosmwasmExt,
336)]
337#[proto_message(type_url = "/neutron.revenue.BlockBasedPaymentSchedule")]
338pub struct BlockBasedPaymentSchedule {
339 #[prost(uint64, tag = "1")]
341 #[serde(
342 serialize_with = "crate::serde::as_str::serialize",
343 deserialize_with = "crate::serde::as_str::deserialize"
344 )]
345 pub blocks_per_period: u64,
346 #[prost(uint64, tag = "2")]
348 #[serde(
349 serialize_with = "crate::serde::as_str::serialize",
350 deserialize_with = "crate::serde::as_str::deserialize"
351 )]
352 pub current_period_start_block: u64,
353}
354#[allow(clippy::derive_partial_eq_without_eq)]
356#[derive(
357 Clone,
358 PartialEq,
359 Eq,
360 ::prost::Message,
361 ::serde::Serialize,
362 ::serde::Deserialize,
363 ::schemars::JsonSchema,
364 CosmwasmExt,
365)]
366#[proto_message(type_url = "/neutron.revenue.EmptyPaymentSchedule")]
367pub struct EmptyPaymentSchedule {}
368#[allow(clippy::derive_partial_eq_without_eq)]
372#[derive(
373 Clone,
374 PartialEq,
375 Eq,
376 ::prost::Message,
377 ::serde::Serialize,
378 ::serde::Deserialize,
379 ::schemars::JsonSchema,
380 CosmwasmExt,
381)]
382#[proto_message(type_url = "/neutron.revenue.RewardAssetPrice")]
383pub struct RewardAssetPrice {
384 #[prost(string, tag = "1")]
387 pub cumulative_price: ::prost::alloc::string::String,
388 #[prost(string, tag = "2")]
390 pub absolute_price: ::prost::alloc::string::String,
391 #[prost(int64, tag = "3")]
393 #[serde(
394 serialize_with = "crate::serde::as_str::serialize",
395 deserialize_with = "crate::serde::as_str::deserialize"
396 )]
397 pub timestamp: i64,
398}
399#[allow(clippy::derive_partial_eq_without_eq)]
401#[derive(
402 Clone,
403 PartialEq,
404 Eq,
405 ::prost::Message,
406 ::serde::Serialize,
407 ::serde::Deserialize,
408 ::schemars::JsonSchema,
409 CosmwasmExt,
410)]
411#[proto_message(type_url = "/neutron.revenue.MsgUpdateParams")]
412pub struct MsgUpdateParams {
413 #[prost(string, tag = "1")]
415 pub authority: ::prost::alloc::string::String,
416 #[prost(message, optional, tag = "2")]
418 pub params: ::core::option::Option<Params>,
419}
420#[allow(clippy::derive_partial_eq_without_eq)]
422#[derive(
423 Clone,
424 PartialEq,
425 Eq,
426 ::prost::Message,
427 ::serde::Serialize,
428 ::serde::Deserialize,
429 ::schemars::JsonSchema,
430 CosmwasmExt,
431)]
432#[proto_message(type_url = "/neutron.revenue.MsgUpdateParamsResponse")]
433pub struct MsgUpdateParamsResponse {}
434#[allow(clippy::derive_partial_eq_without_eq)]
436#[derive(
437 Clone,
438 PartialEq,
439 Eq,
440 ::prost::Message,
441 ::serde::Serialize,
442 ::serde::Deserialize,
443 ::schemars::JsonSchema,
444 CosmwasmExt,
445)]
446#[proto_message(type_url = "/neutron.revenue.MsgFundTreasury")]
447pub struct MsgFundTreasury {
448 #[prost(string, tag = "1")]
450 pub sender: ::prost::alloc::string::String,
451 #[prost(message, repeated, tag = "2")]
453 pub amount: ::prost::alloc::vec::Vec<super::super::cosmos::base::v1beta1::Coin>,
454}
455#[allow(clippy::derive_partial_eq_without_eq)]
457#[derive(
458 Clone,
459 PartialEq,
460 Eq,
461 ::prost::Message,
462 ::serde::Serialize,
463 ::serde::Deserialize,
464 ::schemars::JsonSchema,
465 CosmwasmExt,
466)]
467#[proto_message(type_url = "/neutron.revenue.MsgFundTreasuryResponse")]
468pub struct MsgFundTreasuryResponse {}
469#[allow(clippy::derive_partial_eq_without_eq)]
471#[derive(
472 Clone,
473 PartialEq,
474 Eq,
475 ::prost::Message,
476 ::serde::Serialize,
477 ::serde::Deserialize,
478 ::schemars::JsonSchema,
479 CosmwasmExt,
480)]
481#[proto_message(type_url = "/neutron.revenue.QueryParamsRequest")]
482#[proto_query(
483 path = "/neutron.revenue.Query/Params",
484 response_type = QueryParamsResponse
485)]
486pub struct QueryParamsRequest {}
487#[allow(clippy::derive_partial_eq_without_eq)]
489#[derive(
490 Clone,
491 PartialEq,
492 Eq,
493 ::prost::Message,
494 ::serde::Serialize,
495 ::serde::Deserialize,
496 ::schemars::JsonSchema,
497 CosmwasmExt,
498)]
499#[proto_message(type_url = "/neutron.revenue.QueryParamsResponse")]
500pub struct QueryParamsResponse {
501 #[prost(message, optional, tag = "1")]
503 pub params: ::core::option::Option<Params>,
504}
505#[allow(clippy::derive_partial_eq_without_eq)]
507#[derive(
508 Clone,
509 PartialEq,
510 Eq,
511 ::prost::Message,
512 ::serde::Serialize,
513 ::serde::Deserialize,
514 ::schemars::JsonSchema,
515 CosmwasmExt,
516)]
517#[proto_message(type_url = "/neutron.revenue.QueryPaymentInfoRequest")]
518#[proto_query(
519 path = "/neutron.revenue.Query/PaymentInfo",
520 response_type = QueryPaymentInfoResponse
521)]
522pub struct QueryPaymentInfoRequest {}
523#[allow(clippy::derive_partial_eq_without_eq)]
525#[derive(
526 Clone,
527 PartialEq,
528 Eq,
529 ::prost::Message,
530 ::serde::Serialize,
531 ::serde::Deserialize,
532 ::schemars::JsonSchema,
533 CosmwasmExt,
534)]
535#[proto_message(type_url = "/neutron.revenue.QueryPaymentInfoResponse")]
536pub struct QueryPaymentInfoResponse {
537 #[prost(message, optional, tag = "1")]
539 pub payment_schedule: ::core::option::Option<PaymentSchedule>,
540 #[prost(string, tag = "2")]
542 pub effective_period_progress: ::prost::alloc::string::String,
543 #[prost(string, tag = "3")]
546 pub reward_asset_twap: ::prost::alloc::string::String,
547 #[prost(message, optional, tag = "4")]
551 pub base_revenue_amount: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
552}
553#[allow(clippy::derive_partial_eq_without_eq)]
555#[derive(
556 Clone,
557 PartialEq,
558 Eq,
559 ::prost::Message,
560 ::serde::Serialize,
561 ::serde::Deserialize,
562 ::schemars::JsonSchema,
563 CosmwasmExt,
564)]
565#[proto_message(type_url = "/neutron.revenue.QueryValidatorStatsRequest")]
566#[proto_query(
567 path = "/neutron.revenue.Query/ValidatorStats",
568 response_type = QueryValidatorStatsResponse
569)]
570pub struct QueryValidatorStatsRequest {
571 #[prost(string, tag = "1")]
573 pub val_oper_address: ::prost::alloc::string::String,
574}
575#[allow(clippy::derive_partial_eq_without_eq)]
577#[derive(
578 Clone,
579 PartialEq,
580 Eq,
581 ::prost::Message,
582 ::serde::Serialize,
583 ::serde::Deserialize,
584 ::schemars::JsonSchema,
585 CosmwasmExt,
586)]
587#[proto_message(type_url = "/neutron.revenue.QueryValidatorStatsResponse")]
588pub struct QueryValidatorStatsResponse {
589 #[prost(message, optional, tag = "1")]
591 pub stats: ::core::option::Option<ValidatorStats>,
592}
593#[allow(clippy::derive_partial_eq_without_eq)]
595#[derive(
596 Clone,
597 PartialEq,
598 Eq,
599 ::prost::Message,
600 ::serde::Serialize,
601 ::serde::Deserialize,
602 ::schemars::JsonSchema,
603 CosmwasmExt,
604)]
605#[proto_message(type_url = "/neutron.revenue.QueryValidatorsStatsRequest")]
606#[proto_query(
607 path = "/neutron.revenue.Query/ValidatorsStats",
608 response_type = QueryValidatorsStatsResponse
609)]
610pub struct QueryValidatorsStatsRequest {}
611#[allow(clippy::derive_partial_eq_without_eq)]
613#[derive(
614 Clone,
615 PartialEq,
616 Eq,
617 ::prost::Message,
618 ::serde::Serialize,
619 ::serde::Deserialize,
620 ::schemars::JsonSchema,
621 CosmwasmExt,
622)]
623#[proto_message(type_url = "/neutron.revenue.QueryValidatorsStatsResponse")]
624pub struct QueryValidatorsStatsResponse {
625 #[prost(message, repeated, tag = "1")]
627 pub stats: ::prost::alloc::vec::Vec<ValidatorStats>,
628}
629#[allow(clippy::derive_partial_eq_without_eq)]
631#[derive(
632 Clone,
633 PartialEq,
634 Eq,
635 ::prost::Message,
636 ::serde::Serialize,
637 ::serde::Deserialize,
638 ::schemars::JsonSchema,
639 CosmwasmExt,
640)]
641#[proto_message(type_url = "/neutron.revenue.ValidatorStats")]
642pub struct ValidatorStats {
643 #[prost(message, optional, tag = "1")]
645 pub validator_info: ::core::option::Option<ValidatorInfo>,
646 #[prost(uint64, tag = "2")]
648 #[serde(
649 serialize_with = "crate::serde::as_str::serialize",
650 deserialize_with = "crate::serde::as_str::deserialize"
651 )]
652 pub total_produced_blocks_in_period: u64,
653 #[prost(string, tag = "3")]
655 pub performance_rating: ::prost::alloc::string::String,
656 #[prost(message, optional, tag = "4")]
660 pub expected_revenue: ::core::option::Option<super::super::cosmos::base::v1beta1::Coin>,
661}
662pub struct RevenueQuerier<'a, Q: cosmwasm_std::CustomQuery> {
663 querier: &'a cosmwasm_std::QuerierWrapper<'a, Q>,
664}
665impl<'a, Q: cosmwasm_std::CustomQuery> RevenueQuerier<'a, Q> {
666 pub fn new(querier: &'a cosmwasm_std::QuerierWrapper<'a, Q>) -> Self {
667 Self { querier }
668 }
669 pub fn params(&self) -> Result<QueryParamsResponse, cosmwasm_std::StdError> {
670 QueryParamsRequest {}.query(self.querier)
671 }
672 pub fn payment_info(&self) -> Result<QueryPaymentInfoResponse, cosmwasm_std::StdError> {
673 QueryPaymentInfoRequest {}.query(self.querier)
674 }
675 pub fn validator_stats(
676 &self,
677 val_oper_address: ::prost::alloc::string::String,
678 ) -> Result<QueryValidatorStatsResponse, cosmwasm_std::StdError> {
679 QueryValidatorStatsRequest { val_oper_address }.query(self.querier)
680 }
681 pub fn validators_stats(&self) -> Result<QueryValidatorsStatsResponse, cosmwasm_std::StdError> {
682 QueryValidatorsStatsRequest {}.query(self.querier)
683 }
684}