nibiru_std/proto/buf/
nibiru.oracle.v1.rs

1// @generated
2/// Params defines the module parameters for the x/oracle module.
3#[allow(clippy::derive_partial_eq_without_eq)]
4#[derive(Clone, PartialEq, ::prost::Message)]
5pub struct Params {
6    /// VotePeriod defines the number of blocks during which voting takes place.
7    #[prost(uint64, tag="1")]
8    pub vote_period: u64,
9    /// VoteThreshold specifies the minimum proportion of votes that must be
10    /// received for a ballot to pass.
11    #[prost(string, tag="2")]
12    pub vote_threshold: ::prost::alloc::string::String,
13    /// RewardBand defines a maximum divergence that a price vote can have from the
14    /// weighted median in the ballot. If a vote lies within the valid range
15    /// defined by:
16    /// 	μ := weightedMedian,
17    /// 	validRange := μ ± (μ * rewardBand / 2),
18    /// then rewards are added to the validator performance.
19    /// Note that if the reward band is smaller than 1 standard
20    /// deviation, the band is taken to be 1 standard deviation.a price
21    #[prost(string, tag="3")]
22    pub reward_band: ::prost::alloc::string::String,
23    /// The set of whitelisted markets, or asset pairs, for the module.
24    /// Ex. '\["unibi:uusd","ubtc:uusd"\]'
25    #[prost(string, repeated, tag="4")]
26    pub whitelist: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
27    /// SlashFraction returns the proportion of an oracle's stake that gets
28    /// slashed in the event of slashing. `SlashFraction` specifies the exact
29    /// penalty for failing a voting period.
30    #[prost(string, tag="5")]
31    pub slash_fraction: ::prost::alloc::string::String,
32    /// SlashWindow returns the number of voting periods that specify a
33    /// "slash window". After each slash window, all oracles that have missed more
34    /// than the penalty threshold are slashed. Missing the penalty threshold is
35    /// synonymous with submitting fewer valid votes than `MinValidPerWindow`.
36    #[prost(uint64, tag="6")]
37    pub slash_window: u64,
38    #[prost(string, tag="7")]
39    pub min_valid_per_window: ::prost::alloc::string::String,
40    /// Amount of time to look back for TWAP calculations.
41    /// Ex: "900.000000069s" corresponds to 900 seconds and 69 nanoseconds in JSON.
42    #[prost(message, optional, tag="8")]
43    pub twap_lookback_window: ::core::option::Option<::prost_types::Duration>,
44    /// The minimum number of voters (i.e. oracle validators) per pair for it to be
45    /// considered a passing ballot. Recommended at least 4.
46    #[prost(uint64, tag="9")]
47    pub min_voters: u64,
48    /// The validator fee ratio that is given to validators every epoch.
49    #[prost(string, tag="10")]
50    pub validator_fee_ratio: ::prost::alloc::string::String,
51    #[prost(uint64, tag="11")]
52    pub expiration_blocks: u64,
53}
54/// Struct for aggregate prevoting on the ExchangeRateVote.
55/// The purpose of aggregate prevote is to hide vote exchange rates with hash
56/// which is formatted as hex string in
57/// SHA256("{salt}:({pair},{exchange_rate})|...|({pair},{exchange_rate}):{voter}")
58#[allow(clippy::derive_partial_eq_without_eq)]
59#[derive(Clone, PartialEq, ::prost::Message)]
60pub struct AggregateExchangeRatePrevote {
61    #[prost(string, tag="1")]
62    pub hash: ::prost::alloc::string::String,
63    #[prost(string, tag="2")]
64    pub voter: ::prost::alloc::string::String,
65    #[prost(uint64, tag="3")]
66    pub submit_block: u64,
67}
68/// MsgAggregateExchangeRateVote - struct for voting on
69/// the exchange rates different assets.
70#[allow(clippy::derive_partial_eq_without_eq)]
71#[derive(Clone, PartialEq, ::prost::Message)]
72pub struct AggregateExchangeRateVote {
73    #[prost(message, repeated, tag="1")]
74    pub exchange_rate_tuples: ::prost::alloc::vec::Vec<ExchangeRateTuple>,
75    #[prost(string, tag="2")]
76    pub voter: ::prost::alloc::string::String,
77}
78/// ExchangeRateTuple - struct to store interpreted exchange rates data to store
79#[allow(clippy::derive_partial_eq_without_eq)]
80#[derive(Clone, PartialEq, ::prost::Message)]
81pub struct ExchangeRateTuple {
82    #[prost(string, tag="1")]
83    pub pair: ::prost::alloc::string::String,
84    #[prost(string, tag="2")]
85    pub exchange_rate: ::prost::alloc::string::String,
86}
87#[allow(clippy::derive_partial_eq_without_eq)]
88#[derive(Clone, PartialEq, ::prost::Message)]
89pub struct ExchangeRateAtBlock {
90    #[prost(string, tag="1")]
91    pub exchange_rate: ::prost::alloc::string::String,
92    #[prost(uint64, tag="2")]
93    pub created_block: u64,
94    /// Block timestamp for the block where the oracle came to consensus for this
95    /// price. This timestamp is a conventional Unix millisecond time, i.e. the
96    /// number of milliseconds elapsed since January 1, 1970 UTC. 
97    #[prost(int64, tag="3")]
98    pub block_timestamp_ms: i64,
99}
100/// Rewards defines a credit object towards validators
101/// which provide prices faithfully for different pairs.
102#[allow(clippy::derive_partial_eq_without_eq)]
103#[derive(Clone, PartialEq, ::prost::Message)]
104pub struct Rewards {
105    /// id uniquely identifies the rewards instance of the pair
106    #[prost(uint64, tag="1")]
107    pub id: u64,
108    /// vote_periods defines the vote periods left in which rewards will be
109    /// distributed.
110    #[prost(uint64, tag="2")]
111    pub vote_periods: u64,
112    /// Coins defines the amount of coins to distribute in a single vote period.
113    #[prost(message, repeated, tag="3")]
114    pub coins: ::prost::alloc::vec::Vec<crate::proto::cosmos::base::v1beta1::Coin>,
115}
116/// Emitted when a price is posted
117#[allow(clippy::derive_partial_eq_without_eq)]
118#[derive(Clone, PartialEq, ::prost::Message)]
119pub struct EventPriceUpdate {
120    #[prost(string, tag="1")]
121    pub pair: ::prost::alloc::string::String,
122    #[prost(string, tag="2")]
123    pub price: ::prost::alloc::string::String,
124    #[prost(int64, tag="3")]
125    pub timestamp_ms: i64,
126}
127/// Emitted when a valoper delegates oracle voting rights to a feeder address.
128#[allow(clippy::derive_partial_eq_without_eq)]
129#[derive(Clone, PartialEq, ::prost::Message)]
130pub struct EventDelegateFeederConsent {
131    /// Validator is the Bech32 address that is delegating voting rights.
132    #[prost(string, tag="1")]
133    pub validator: ::prost::alloc::string::String,
134    /// Feeder is the delegate or representative that will be able to send
135    /// vote and prevote transaction messages.
136    #[prost(string, tag="2")]
137    pub feeder: ::prost::alloc::string::String,
138}
139/// Emitted by MsgAggregateExchangeVote when an aggregate vote is added to state
140#[allow(clippy::derive_partial_eq_without_eq)]
141#[derive(Clone, PartialEq, ::prost::Message)]
142pub struct EventAggregateVote {
143    /// Validator is the Bech32 address to which the vote will be credited.
144    #[prost(string, tag="1")]
145    pub validator: ::prost::alloc::string::String,
146    /// Feeder is the delegate or representative that will send vote and prevote
147    /// transaction messages on behalf of the voting validator.
148    #[prost(string, tag="2")]
149    pub feeder: ::prost::alloc::string::String,
150    #[prost(message, repeated, tag="3")]
151    pub prices: ::prost::alloc::vec::Vec<ExchangeRateTuple>,
152}
153/// Emitted by MsgAggregateExchangePrevote when an aggregate prevote is added
154/// to state
155#[allow(clippy::derive_partial_eq_without_eq)]
156#[derive(Clone, PartialEq, ::prost::Message)]
157pub struct EventAggregatePrevote {
158    /// Validator is the Bech32 address to which the vote will be credited.
159    #[prost(string, tag="1")]
160    pub validator: ::prost::alloc::string::String,
161    /// Feeder is the delegate or representative that will send vote and prevote
162    /// transaction messages on behalf of the voting validator.
163    #[prost(string, tag="2")]
164    pub feeder: ::prost::alloc::string::String,
165}
166#[allow(clippy::derive_partial_eq_without_eq)]
167#[derive(Clone, PartialEq, ::prost::Message)]
168pub struct EventValidatorPerformance {
169    /// Validator is the Bech32 address to which the vote will be credited.
170    #[prost(string, tag="1")]
171    pub validator: ::prost::alloc::string::String,
172    /// Tendermint consensus voting power
173    #[prost(int64, tag="2")]
174    pub voting_power: i64,
175    /// RewardWeight: Weight of rewards the validator should receive in units of
176    /// consensus power.
177    #[prost(int64, tag="3")]
178    pub reward_weight: i64,
179    /// Number of valid votes for which the validator will be rewarded
180    #[prost(int64, tag="4")]
181    pub win_count: i64,
182    /// Number of abstained votes for which there will be no reward or punishment
183    #[prost(int64, tag="5")]
184    pub abstain_count: i64,
185    /// Number of invalid/punishable votes
186    #[prost(int64, tag="6")]
187    pub miss_count: i64,
188}
189/// GenesisState defines the oracle module's genesis state.
190#[allow(clippy::derive_partial_eq_without_eq)]
191#[derive(Clone, PartialEq, ::prost::Message)]
192pub struct GenesisState {
193    #[prost(message, optional, tag="1")]
194    pub params: ::core::option::Option<Params>,
195    #[prost(message, repeated, tag="2")]
196    pub feeder_delegations: ::prost::alloc::vec::Vec<FeederDelegation>,
197    #[prost(message, repeated, tag="3")]
198    pub exchange_rates: ::prost::alloc::vec::Vec<ExchangeRateTuple>,
199    #[prost(message, repeated, tag="4")]
200    pub miss_counters: ::prost::alloc::vec::Vec<MissCounter>,
201    #[prost(message, repeated, tag="5")]
202    pub aggregate_exchange_rate_prevotes: ::prost::alloc::vec::Vec<AggregateExchangeRatePrevote>,
203    #[prost(message, repeated, tag="6")]
204    pub aggregate_exchange_rate_votes: ::prost::alloc::vec::Vec<AggregateExchangeRateVote>,
205    #[prost(string, repeated, tag="7")]
206    pub pairs: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
207    #[prost(message, repeated, tag="8")]
208    pub rewards: ::prost::alloc::vec::Vec<Rewards>,
209}
210/// FeederDelegation is the address for where oracle feeder authority are
211/// delegated to. By default this struct is only used at genesis to feed in
212/// default feeder addresses.
213#[allow(clippy::derive_partial_eq_without_eq)]
214#[derive(Clone, PartialEq, ::prost::Message)]
215pub struct FeederDelegation {
216    #[prost(string, tag="1")]
217    pub feeder_address: ::prost::alloc::string::String,
218    #[prost(string, tag="2")]
219    pub validator_address: ::prost::alloc::string::String,
220}
221/// MissCounter defines an miss counter and validator address pair used in
222/// oracle module's genesis state
223#[allow(clippy::derive_partial_eq_without_eq)]
224#[derive(Clone, PartialEq, ::prost::Message)]
225pub struct MissCounter {
226    #[prost(string, tag="1")]
227    pub validator_address: ::prost::alloc::string::String,
228    #[prost(uint64, tag="2")]
229    pub miss_counter: u64,
230}
231/// QueryExchangeRateRequest is the request type for the Query/ExchangeRate RPC
232/// method.
233#[allow(clippy::derive_partial_eq_without_eq)]
234#[derive(Clone, PartialEq, ::prost::Message)]
235pub struct QueryExchangeRateRequest {
236    /// pair defines the pair to query for.
237    #[prost(string, tag="1")]
238    pub pair: ::prost::alloc::string::String,
239}
240/// QueryExchangeRateResponse is response type for the
241/// Query/ExchangeRate RPC method.
242#[allow(clippy::derive_partial_eq_without_eq)]
243#[derive(Clone, PartialEq, ::prost::Message)]
244pub struct QueryExchangeRateResponse {
245    /// exchange_rate defines the exchange rate of assets voted by validators
246    #[prost(string, tag="1")]
247    pub exchange_rate: ::prost::alloc::string::String,
248    /// Block timestamp for the block where the oracle came to consensus for this
249    /// price. This timestamp is a conventional Unix millisecond time, i.e. the
250    /// number of milliseconds elapsed since January 1, 1970 UTC. 
251    #[prost(int64, tag="2")]
252    pub block_timestamp_ms: i64,
253    /// Block height when the oracle came to consensus for this price.
254    #[prost(uint64, tag="3")]
255    pub block_height: u64,
256}
257/// QueryExchangeRatesRequest is the request type for the Query/ExchangeRates RPC
258/// method.
259#[allow(clippy::derive_partial_eq_without_eq)]
260#[derive(Clone, PartialEq, ::prost::Message)]
261pub struct QueryExchangeRatesRequest {
262}
263/// QueryExchangeRatesResponse is response type for the
264/// Query/ExchangeRates RPC method.
265#[allow(clippy::derive_partial_eq_without_eq)]
266#[derive(Clone, PartialEq, ::prost::Message)]
267pub struct QueryExchangeRatesResponse {
268    /// exchange_rates defines a list of the exchange rate for all whitelisted
269    /// pairs.
270    #[prost(message, repeated, tag="1")]
271    pub exchange_rates: ::prost::alloc::vec::Vec<ExchangeRateTuple>,
272}
273/// QueryActivesRequest is the request type for the Query/Actives RPC method.
274#[allow(clippy::derive_partial_eq_without_eq)]
275#[derive(Clone, PartialEq, ::prost::Message)]
276pub struct QueryActivesRequest {
277}
278/// QueryActivesResponse is response type for the
279/// Query/Actives RPC method.
280#[allow(clippy::derive_partial_eq_without_eq)]
281#[derive(Clone, PartialEq, ::prost::Message)]
282pub struct QueryActivesResponse {
283    /// actives defines a list of the pair which oracle prices agreed upon.
284    #[prost(string, repeated, tag="1")]
285    pub actives: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
286}
287/// QueryVoteTargetsRequest is the request type for the Query/VoteTargets RPC
288/// method.
289#[allow(clippy::derive_partial_eq_without_eq)]
290#[derive(Clone, PartialEq, ::prost::Message)]
291pub struct QueryVoteTargetsRequest {
292}
293/// QueryVoteTargetsResponse is response type for the
294/// Query/VoteTargets RPC method.
295#[allow(clippy::derive_partial_eq_without_eq)]
296#[derive(Clone, PartialEq, ::prost::Message)]
297pub struct QueryVoteTargetsResponse {
298    /// vote_targets defines a list of the pairs in which everyone
299    /// should vote in the current vote period.
300    #[prost(string, repeated, tag="1")]
301    pub vote_targets: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
302}
303/// QueryFeederDelegationRequest is the request type for the
304/// Query/FeederDelegation RPC method.
305#[allow(clippy::derive_partial_eq_without_eq)]
306#[derive(Clone, PartialEq, ::prost::Message)]
307pub struct QueryFeederDelegationRequest {
308    /// validator defines the validator address to query for.
309    #[prost(string, tag="1")]
310    pub validator_addr: ::prost::alloc::string::String,
311}
312/// QueryFeederDelegationResponse is response type for the
313/// Query/FeederDelegation RPC method.
314#[allow(clippy::derive_partial_eq_without_eq)]
315#[derive(Clone, PartialEq, ::prost::Message)]
316pub struct QueryFeederDelegationResponse {
317    /// feeder_addr defines the feeder delegation of a validator
318    #[prost(string, tag="1")]
319    pub feeder_addr: ::prost::alloc::string::String,
320}
321/// QueryMissCounterRequest is the request type for the Query/MissCounter RPC
322/// method.
323#[allow(clippy::derive_partial_eq_without_eq)]
324#[derive(Clone, PartialEq, ::prost::Message)]
325pub struct QueryMissCounterRequest {
326    /// validator defines the validator address to query for.
327    #[prost(string, tag="1")]
328    pub validator_addr: ::prost::alloc::string::String,
329}
330/// QueryMissCounterResponse is response type for the
331/// Query/MissCounter RPC method.
332#[allow(clippy::derive_partial_eq_without_eq)]
333#[derive(Clone, PartialEq, ::prost::Message)]
334pub struct QueryMissCounterResponse {
335    /// miss_counter defines the oracle miss counter of a validator
336    #[prost(uint64, tag="1")]
337    pub miss_counter: u64,
338}
339/// QueryAggregatePrevoteRequest is the request type for the
340/// Query/AggregatePrevote RPC method.
341#[allow(clippy::derive_partial_eq_without_eq)]
342#[derive(Clone, PartialEq, ::prost::Message)]
343pub struct QueryAggregatePrevoteRequest {
344    /// validator defines the validator address to query for.
345    #[prost(string, tag="1")]
346    pub validator_addr: ::prost::alloc::string::String,
347}
348/// QueryAggregatePrevoteResponse is response type for the
349/// Query/AggregatePrevote RPC method.
350#[allow(clippy::derive_partial_eq_without_eq)]
351#[derive(Clone, PartialEq, ::prost::Message)]
352pub struct QueryAggregatePrevoteResponse {
353    /// aggregate_prevote defines oracle aggregate prevote submitted by a validator
354    /// in the current vote period
355    #[prost(message, optional, tag="1")]
356    pub aggregate_prevote: ::core::option::Option<AggregateExchangeRatePrevote>,
357}
358/// QueryAggregatePrevotesRequest is the request type for the
359/// Query/AggregatePrevotes RPC method.
360#[allow(clippy::derive_partial_eq_without_eq)]
361#[derive(Clone, PartialEq, ::prost::Message)]
362pub struct QueryAggregatePrevotesRequest {
363}
364/// QueryAggregatePrevotesResponse is response type for the
365/// Query/AggregatePrevotes RPC method.
366#[allow(clippy::derive_partial_eq_without_eq)]
367#[derive(Clone, PartialEq, ::prost::Message)]
368pub struct QueryAggregatePrevotesResponse {
369    /// aggregate_prevotes defines all oracle aggregate prevotes submitted in the
370    /// current vote period
371    #[prost(message, repeated, tag="1")]
372    pub aggregate_prevotes: ::prost::alloc::vec::Vec<AggregateExchangeRatePrevote>,
373}
374/// QueryAggregateVoteRequest is the request type for the Query/AggregateVote RPC
375/// method.
376#[allow(clippy::derive_partial_eq_without_eq)]
377#[derive(Clone, PartialEq, ::prost::Message)]
378pub struct QueryAggregateVoteRequest {
379    /// validator defines the validator address to query for.
380    #[prost(string, tag="1")]
381    pub validator_addr: ::prost::alloc::string::String,
382}
383/// QueryAggregateVoteResponse is response type for the
384/// Query/AggregateVote RPC method.
385#[allow(clippy::derive_partial_eq_without_eq)]
386#[derive(Clone, PartialEq, ::prost::Message)]
387pub struct QueryAggregateVoteResponse {
388    /// aggregate_vote defines oracle aggregate vote submitted by a validator in
389    /// the current vote period
390    #[prost(message, optional, tag="1")]
391    pub aggregate_vote: ::core::option::Option<AggregateExchangeRateVote>,
392}
393/// QueryAggregateVotesRequest is the request type for the Query/AggregateVotes
394/// RPC method.
395#[allow(clippy::derive_partial_eq_without_eq)]
396#[derive(Clone, PartialEq, ::prost::Message)]
397pub struct QueryAggregateVotesRequest {
398}
399/// QueryAggregateVotesResponse is response type for the
400/// Query/AggregateVotes RPC method.
401#[allow(clippy::derive_partial_eq_without_eq)]
402#[derive(Clone, PartialEq, ::prost::Message)]
403pub struct QueryAggregateVotesResponse {
404    /// aggregate_votes defines all oracle aggregate votes submitted in the current
405    /// vote period
406    #[prost(message, repeated, tag="1")]
407    pub aggregate_votes: ::prost::alloc::vec::Vec<AggregateExchangeRateVote>,
408}
409/// QueryParamsRequest is the request type for the Query/Params RPC method.
410#[allow(clippy::derive_partial_eq_without_eq)]
411#[derive(Clone, PartialEq, ::prost::Message)]
412pub struct QueryParamsRequest {
413}
414/// QueryParamsResponse is the response type for the Query/Params RPC method.
415#[allow(clippy::derive_partial_eq_without_eq)]
416#[derive(Clone, PartialEq, ::prost::Message)]
417pub struct QueryParamsResponse {
418    /// params defines the parameters of the module.
419    #[prost(message, optional, tag="1")]
420    pub params: ::core::option::Option<Params>,
421}
422/// a snapshot of the prices at a given point in time
423#[allow(clippy::derive_partial_eq_without_eq)]
424#[derive(Clone, PartialEq, ::prost::Message)]
425pub struct PriceSnapshot {
426    #[prost(string, tag="1")]
427    pub pair: ::prost::alloc::string::String,
428    #[prost(string, tag="2")]
429    pub price: ::prost::alloc::string::String,
430    /// milliseconds since unix epoch
431    #[prost(int64, tag="3")]
432    pub timestamp_ms: i64,
433}
434/// MsgAggregateExchangeRatePrevote represents a message to submit
435/// aggregate exchange rate prevote.
436#[allow(clippy::derive_partial_eq_without_eq)]
437#[derive(Clone, PartialEq, ::prost::Message)]
438pub struct MsgAggregateExchangeRatePrevote {
439    #[prost(string, tag="1")]
440    pub hash: ::prost::alloc::string::String,
441    /// Feeder is the Bech32 address of the price feeder. A validator may
442    /// specify multiple price feeders by delegating them consent. The validator
443    /// address is also a valid feeder by default.
444    #[prost(string, tag="2")]
445    pub feeder: ::prost::alloc::string::String,
446    /// Validator is the Bech32 address to which the prevote will be credited.
447    #[prost(string, tag="3")]
448    pub validator: ::prost::alloc::string::String,
449}
450/// MsgAggregateExchangeRatePrevoteResponse defines the
451/// Msg/AggregateExchangeRatePrevote response type.
452#[allow(clippy::derive_partial_eq_without_eq)]
453#[derive(Clone, PartialEq, ::prost::Message)]
454pub struct MsgAggregateExchangeRatePrevoteResponse {
455}
456/// MsgAggregateExchangeRateVote represents a message to submit
457/// aggregate exchange rate vote.
458#[allow(clippy::derive_partial_eq_without_eq)]
459#[derive(Clone, PartialEq, ::prost::Message)]
460pub struct MsgAggregateExchangeRateVote {
461    #[prost(string, tag="1")]
462    pub salt: ::prost::alloc::string::String,
463    #[prost(string, tag="2")]
464    pub exchange_rates: ::prost::alloc::string::String,
465    /// Feeder is the Bech32 address of the price feeder. A validator may
466    /// specify multiple price feeders by delegating them consent. The validator
467    /// address is also a valid feeder by default.
468    #[prost(string, tag="3")]
469    pub feeder: ::prost::alloc::string::String,
470    /// Validator is the Bech32 address to which the vote will be credited.
471    #[prost(string, tag="4")]
472    pub validator: ::prost::alloc::string::String,
473}
474/// MsgAggregateExchangeRateVoteResponse defines the
475/// Msg/AggregateExchangeRateVote response type.
476#[allow(clippy::derive_partial_eq_without_eq)]
477#[derive(Clone, PartialEq, ::prost::Message)]
478pub struct MsgAggregateExchangeRateVoteResponse {
479}
480/// MsgDelegateFeedConsent represents a message to delegate oracle voting rights
481/// to another address.
482#[allow(clippy::derive_partial_eq_without_eq)]
483#[derive(Clone, PartialEq, ::prost::Message)]
484pub struct MsgDelegateFeedConsent {
485    #[prost(string, tag="1")]
486    pub operator: ::prost::alloc::string::String,
487    #[prost(string, tag="2")]
488    pub delegate: ::prost::alloc::string::String,
489}
490/// MsgDelegateFeedConsentResponse defines the Msg/DelegateFeedConsent response
491/// type.
492#[allow(clippy::derive_partial_eq_without_eq)]
493#[derive(Clone, PartialEq, ::prost::Message)]
494pub struct MsgDelegateFeedConsentResponse {
495}
496#[allow(clippy::derive_partial_eq_without_eq)]
497#[derive(Clone, PartialEq, ::prost::Message)]
498pub struct MsgEditOracleParams {
499    #[prost(string, tag="1")]
500    pub sender: ::prost::alloc::string::String,
501    #[prost(message, optional, tag="2")]
502    pub params: ::core::option::Option<OracleParamsMsg>,
503}
504#[allow(clippy::derive_partial_eq_without_eq)]
505#[derive(Clone, PartialEq, ::prost::Message)]
506pub struct MsgEditOracleParamsResponse {
507}
508#[allow(clippy::derive_partial_eq_without_eq)]
509#[derive(Clone, PartialEq, ::prost::Message)]
510pub struct OracleParamsMsg {
511    /// VotePeriod defines the number of blocks during which voting takes place.
512    #[prost(uint64, tag="1")]
513    pub vote_period: u64,
514    /// VoteThreshold specifies the minimum proportion of votes that must be
515    /// received for a ballot to pass.
516    #[prost(string, tag="2")]
517    pub vote_threshold: ::prost::alloc::string::String,
518    /// RewardBand defines a maxium divergence that a price vote can have from the
519    /// weighted median in the ballot. If a vote lies within the valid range
520    /// defined by:
521    /// 	μ := weightedMedian,
522    /// 	validRange := μ ± (μ * rewardBand / 2),
523    /// then rewards are added to the validator performance.
524    /// Note that if the reward band is smaller than 1 standard
525    /// deviation, the band is taken to be 1 standard deviation.a price
526    #[prost(string, tag="3")]
527    pub reward_band: ::prost::alloc::string::String,
528    /// The set of whitelisted markets, or asset pairs, for the module.
529    /// Ex. '\["unibi:uusd","ubtc:uusd"\]'
530    #[prost(string, repeated, tag="4")]
531    pub whitelist: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
532    /// SlashFraction returns the proportion of an oracle's stake that gets
533    /// slashed in the event of slashing. `SlashFraction` specifies the exact
534    /// penalty for failing a voting period.
535    #[prost(string, tag="5")]
536    pub slash_fraction: ::prost::alloc::string::String,
537    /// SlashWindow returns the number of voting periods that specify a
538    /// "slash window". After each slash window, all oracles that have missed more
539    /// than the penalty threshold are slashed. Missing the penalty threshold is
540    /// synonymous with submitting fewer valid votes than `MinValidPerWindow`.
541    #[prost(uint64, tag="6")]
542    pub slash_window: u64,
543    #[prost(string, tag="7")]
544    pub min_valid_per_window: ::prost::alloc::string::String,
545    /// Amount of time to look back for TWAP calculations
546    #[prost(message, optional, tag="8")]
547    pub twap_lookback_window: ::core::option::Option<::prost_types::Duration>,
548    /// The minimum number of voters (i.e. oracle validators) per pair for it to be
549    /// considered a passing ballot. Recommended at least 4.
550    #[prost(uint64, tag="9")]
551    pub min_voters: u64,
552    /// The validator fee ratio that is given to validators every epoch.
553    #[prost(string, tag="10")]
554    pub validator_fee_ratio: ::prost::alloc::string::String,
555    #[prost(uint64, tag="11")]
556    pub expiration_blocks: u64,
557}
558// @@protoc_insertion_point(module)